Introduction
I recently (9/20/2002) purchased a Sony VAOI PCG-VX88 laptop. This thing is sleek, sexy looking, and very lightweight, and has all of the CPU power I need, while still having a nice long 5+ hours of battery life. It's almost completely silent. The hard drive is a small whisper, and when the fan kicks in, it's just a soft purr. About the only thing that's not to like about it is that the right-shift key is only the size of a normal letter key (common among slim vaoi notebooks). I had to reteach myself how to type some of the punctuation on the right, notably smileys. I might put a little pice of tape on there to use as a hint. Ah well, nothing's perfect. Being a linux addict, er, advocate, I quickly started trying to get linux installed. This page documents my efforts, because I've only found one other website related to linux on the VX-88.Overall
I've gotten nearly everything to work. The install is not quite straightforward, so I would suggest that you only attempt it if you have a little bit of linux knowledge. It was made easier by the fact that the disk was already split into two partitions, but it was made harder by the fact that the dvd drive wasn't supported by my distrubition's installer. Wireless gave me a bit of trouble too, but it works now. Barring these difficulties, the rest of the installation wasn't too difficult.As this install is more tricky than a standard linux installation anyway, I'll assume you have installed linux at least once before, and therefore, be a little less verbose about standard linux installation issues. You also need to know how to compile a kernel.
Installing
My distribution of choice was Debian. I recently became hooked on it, and decided it'd be the easiest to install on my new laptop.First off, of course, is choosing where to put linux. Quite conveniently, the laptop ships with the 30gb drive split into two roughly equal partitions, with Windows XP (home or office depends on PCG-VX88 vs PCG-VX88P, this appears to be the only difference). So, I made sure nothing important was on the second partition. If you'd like to change the size of the partition, I think there are utilities out there to do this for you (can they resize NTFS partitions, though?). However, the recovery CD conveniently comes with an option to resize your partitions. If you've just opened up the laptop for the first time, it seems that doing this before doing anything else is the easiest way to give your linux partition more or less space.
Booting the Installer
Immediately, I was faced with my first challenge. This system doesn't come with a floppy drive. So, I decided that I'd do a Debian FTP-install (I have DSL). I suggest that you do it this way, for reasons that I'll uncover in a bit. If you don't have broadband, try to borrow from a friend or something. Trust me, CD-based installing will probably be at least a little difficult.I grabbed and burned a Debian Net installation CD image. Since the system doesn't have burning software included (XP handles that), I downloaded an evaluation copy of Nero.
Create a Shared Partition
If you go through the installation, soon you'll see the first big issue. Debian wants to install a very minimal system (namely, the kernel) onto your hard drive before it starts getting packages via ftp. It can't, however, because it can't read the kernels off of the CD. The BIOS supports the DVD drive just long enough to boot the Debian rescue image, but after that, debian's on its own, and it doesn't have support for the DVD drive (yet?), nor, I imagine, does it have support for the network card. The easiest way I found to get around this is to create a partition with filesystem msdos (yes, fat16, it's the best that the installer system can support), and put the necessary files on from XP. So, press CTRL-ALT-F2, and go partition your disk. Make a shared partition, say, 100mb (more or less as you see fit, the install needs only a few mb). Set the type to DOS Fat 16.Now shutdown the system, and go back to XP, and format the drive (E: in my system, I believe). Make sure that you set the file system type to FAT (not FAT32, yet, at least). Copy files from the net installation CD. You will need access to the rescue image (rescue.bin) and drivers.tgz.
Now go back and boot the installer once more, and go back to the second console. Make the rest of your partitions (swap and root, and any others). Make the filesystems on them (you can do all of this in the debian installer, too). Now, mount your root filesystem, and create a /debianinst directory. In it, place drivers.tgz. Make a subdirectory images-1.44/, and put rescue.bin in that. Make sure these files are named lowercased (dosfs may have messed with the file names). Unmount the root filesystem. Now you can go back to the debian installer. When it prompts for the files, give it the paths you created when it asks.
Other Options
You could, of course, create your own custom boot floppy image. You would either get drivers.tgz into there somehow, or put in firewire support as described below. I don't think the former would work, because I believe bootable CD's just have 1.44mb floppy images on them. Anothe roption is to compile in eepro100 support and grab the necessary files from elsewhere, or compile in NTFS support so you don't have that annoying dos partition lying around forever. Let me know of your successes/failures.Installation Notes
Now select FTP install, and go about your merry way. Everything should work fine. One note: the network card is supported by theeepro100.o
module. I saw a note here that this driver may freeze the system, but I never saw that problem, and I downloaded hundreds of megs for my installation.- Use the i810 XFree86 Driver. Display resolution is 1024x768 (smaller resolutions just render in the center of the screen and don't use the outside few inches). Refresh is 60hz (at least that's what I use).
- Sound is supported by the intel8x0 alsa driver, so install alsa (see later notes, though)
- Install acpid, the ACPI daemon. See later notes and warnings!!
- Touchpad is PS/2. Mine occasionally flakes out and won't respond for a few seconds (in windows too, anyone else having this problem?)
- Install PCMCIA, it's required for the wireless card (yes, I know it's MiniPCI, see later notes)
- Install CD-burning programs and DVD-reading programs if you'd like.
- Install sonypid and spicctrl, this helps with making that little wheel-thing useful.
- Install the hotplug daemon so you can configure the wireless card.
- Install pciutils and usbutils if you want usb or memory stick support.
- Install the wireless-tools.
Configuration
Now comes the fun part. Be ready to get your hands dirty. It took me quite a bit of kernel compilation to get this right.X-Windows
All that you should need to get X working is above. I didn't have any problems, it just worked.Configure the kernel
ACPI SUPPORT! IMPORTANT!
WARNING! It's very important that you get ACPI configured and run the ACPI daemon! The bios won't support APM, I tried. As far as I understand, if you don't get acpid running, the fan won't turn on when your CPU gets hot, and it could bake itself to death, so get it running!That said, it's time to recompile the kernel (whee!)
So, go to your favorite kernel mirror and grab the source for the newest 2.4 kernel. I used 2.4.19. I didn't use the debian sources, because I had some problems getting patches to apply. Be sure to grab the debian package kernel-package, too, it's very useful. To see how to use it, go to the Debian Website and read up on how to compiel your own kernel (it's under documentation, try the Debian Reference). Note: various debian docs say that if you compile your own kernel, it requires the cramfs patch to use the debian initrd scripts. They never mention where to get this patch. Therefore, don't use the --initrd option to make-kpkg, and be sure to compile in all of the drivers you need (ide, ext2, etc).
Now, unpack your kernel source, and then go grab the latest stable acpi patch (20020918 worked for me) from the ACPI project page. Apply the patch. Now go to the linux-ieee1394 page and grab the latest subversion snapshot. It'll be a tarball that you can unpack directly into the drivers/ieee1394 directory of your kernel source. Now you're ready to configure.
Here is my kernel .config file. Of note:
- sonypi - lets you adjust screen brightness, check battery status (doesn't work, but ACPI does), and a few other things. More importantly, it lets linux access that little scroll-wheel and button, and, horrah, lets you respond to keypresses of FN+F3 and the like. So far, it doesn't let you switch to vga mode, though :(
- ACPI - enable this. You should say yes to almost every option under it, except the debug stuff, and toshiba stuff.
- IEEE1394 - enable this. You'll have to enable experimental options.
- PIIX - this is your IDE controller. Compile it in so you can boot.
- PCMCIA stuff - you should use the kernel-based card manager, yenta-socket.
- Orinoco card - referred to as "hermes", this is the wireless card.
- USB - If you want the memory stick reader to work in linux, grab memstick.patch and apply it to the kernel. It may need some finessing to get it to apply. Enable USB, and hotplugging support, and see below for configuration.
Compile the kernel
Here's the command I used to make the kernel (runmake-kpkg clean first
), from in the kernel source directory:make-kpkg --revision 2.4.19.custom.1 --append-to-version -686 kernel_image modules_image
Let that go for awhile. Takes about 10 minutes on my system. Then, go up a directory and use dpkg -i to install the package. Tell it to run lilo. Reboot. Good luck. :)ACPI
Check yourdmesg
output, be sure acpi configured everything right. It handles your cpu temperature (did I mention, enable thermal zone, along with everything else, in the kernel config?), your battery status, and also enumerates all of your IRQ's (wireless won't work without this). I wrote a little perl script to read /proc/acpi for battery status. It sits in an xterm and updates every 30 seconds. Here's the source. Note, I already had to rewrite it once going from 2.4.16 to 2.4.19, they changed the proc entries. Use at your own discretion. No support provided. It worked for me.
Wireless
This is easy. If all goes well, somewhere during bootup, the PCMCIA driver (did I mention, edit /etc/default/pcmcia and put in PCIC=yenta_socket) will detect the wireless card, and load the module. Then the hotplug daemon will notice the card and try to configure it with ifup. This will fail; go play with the scripts in /etc/network/interfaces (man interfaces, man ifup, check /usr/share/doc/ifupdown). You should use iwconfig to give it an ESSID and encryption keys (if necessary), then configure your IP address (dhcp, static, whatever). Give it a go. Check the log to make sure you didn't get an error message like "orinoco_cs.o: RequestIRQ: resource in use" (this means that ACPI isn't the newest version, or isn't loaded, or isn't working right).As for the PCMCIA thing... it seems that, though this card is MiniPCI, it includes a little PCMCIA bridge in it. I'm not exactly sure why this is done this way, except perhaps so that the existing driver for the pcmcia card version can be used as is. Go figure. Anyway, I think that I see the pcmcia driver also detecting the real pcmcia socket... but I don't know if it actually works.
As for the wireless on/off switch... when I first saw this in the pictures at sony's site, I was thrilled. I figured, since it's a hardware switch, I'd be able to turn off wireless and save battery, from hardware. Wouldn't it be very convenient, even, if the built in pcmcia card bridge disabled the card and sent a pcmcia card-removed event? Well, it doesn't quite work this way (I don't think so anyway...). As far as I can see, it merely disconnects the antenna. WinXP figures this out and disables the interface (and then takes a correspondingly long time to figure out that you've turned it back on, :P). In linux, all you see is that your signal strength drops to 0 (run iwconfig eth1). Maybe the card is also turned off to conserve battery life, I can't tell. The little LED goes off, though, and I'm sure that saves a few microwatts ;)
Configuring that little wheel thing
JogDial is such a dumb name :) I absolutely hate what it does in windows; it's no help at all, and I want a scroll-wheel. Try installing the sjog package (apt-get install sjog). I love this little program. It interfaces the sonypi module to let you change brightness, and it also lets you run arbitrary commands from an easy-to-use menu. Plus, it can act as a scroll wheel (I've gotten this to work, check the web for scroll wheels and linux). I hacked the source in quite a few ways. One thing I did was to make brightness/volume adjustments more fine-grained, and another was to make the "back" button act as a second mouse button (sonypi only registers a down-click, so you only get a click, not a hold-down. Works beautifully to paste, though). Last, I made it respond to Fn-F4 and Fn-F5 to pull up the appropriate setting window, and Fn-F3 to drop the sound level to 0 (alsa automatically mutes the card). I might get my changes rolled in, but for now, email me and I'll send you the source. Now I love the jogdial... it makes a lot of things much quicker. :D Also, check here for alternative ways to use the jogdial and keys.Sometimes, it doesn't work on startup. I'm not sure, but this seems to be the case any time when I've started the laptop cold (not rebooted into linux from XP or from linux). I have to kill sjog, remove the sonypi module, then put it back in (or let it get autoloaded) and run sjog again. What a pain. I created a boot script linked into /etc/rcS.d that just loads the module and unloads it. It's kind of hacky, but it works like a charm, and now the jogdial always works by the time I've booted.
Sound
If you have alsa installed, deinstall it. Now grab the newest packages off of http://www.alsa-project.org (driver, library, and utils, and you probably want alsaconf). Compile and install, in order: driver, library, then utils. Run alsaconf, select intel-8x0. If the test doesn't work, you may not have the right permissions set, so modify the permissions to the /dev/ entries. I used devfs; I gave up trying to figure out what devs should be there. You can too, but it'll take some work, especially for old-style /dev/mixer (which sjog uses) and sonypi (add alias /dev/sonypi sonypi to your modules.conf). Now sound should work just fine.In retrospect, you could probably use
apt-get source alsa-base
(and a few other packages) to get the debian patches for it, and so you can build a debian package and install that. You have to rebuild, because there isn't an alsa modules package for kernel 2.4.19 in debian (that I know of, try unstable?)DVD/CDRW
This is what made me really happy. It's the icing on the cake. This thing works like a charm. Go to the linux1394 page and go through their "getting started" section. In brief: insmod ohci1394, tail -f your log file, and plug in the drive (hotplugging works fine). The drive shows up as a scsi drive. I don't know where it'll be in a nondevfs system, but in devfs, it just goes into /dev/cdroms/cdrom0 (this is a symlink). Now burn away, this thing uses scsi natively. I just finished burning a cd, it works beautifully. :DNote that if you don't use the newest snapshot of linux1394 (I used snapshot 582), your system will freeze. My system locked up until I pinged it (!). Also, it triggered numlock, confusing me to no end (try hitting numlock, and typing, pretending you didn't expect it!). Use the newest version.
USB
Oh man USB support in linux rocks. There's really not much to put in this section. I installed cups for printing, plugged in my Epson Stylus Color 860 printer via usb, and connected to http://localhost:631/, selected "usb epson printer" from the list, and bam. First try. I think the concept of true Plug and Play has finally reached Linux :)To get the memory stick reader working, just pop in a memory stick and mount /dev/sda1. As far as I can tell, you can partition it how you want, and put any file system you want on there. The memory stick reader communicates internally through a secondary USB host, and works as a generic scsi hard drive. I also found that my roommate's digital camera could be connected directly via usb (rather than transferring the memory stick), and it, too, pretended to be a scsi hard drive.
In conclusion...
Everything that I want works. In fact, I'm pretty sure that this laptop is 100% supported in linux. Check the Linux-Sony page for info about linux on other sony laptops (this may help, especially info about the sonypi driver). Check the only other linux/vx88 page that I found, from which I got the idea to try the newest snapshots of acpi and ieee1394. It's rather terse, so I wrote this page. I remember how happy I was to find a similar page for my HP Pavilion N3310 laptop a few years ago, and how happy I was that I found the abovementioned page which let me get wireless and the dvd/cdrw working finally (it had been over a week, jeez! ;)). Plus, I like to give back to the linux community.So, this ends it. I hope everything worked out for you. Email me at the address listed below, although I'm a college student, and I can't help everyone learn linux. This page is only a reference; you should know linux before you try to use this information. Also, I can't help you with debian. I just learned it myself, from all the fine documents at http://www.debian.org, so you can too.