Linux on a Sony Vaio PCG-FX220
Like many other notebooks, Sony uses a ton of proprietary hardware that is hard to use under Linux. I spent a lot of time trying to get everything to function, and hopefully I can help you avoid a lot of the research I've had to do.
The Laptop
The Vaio FX220 is a 750Mhz PIII laptop. It comes with Windows ME installed, and Sony also provides drivers for Windows 2000 and XP. It is also very similar to the other notebooks in the FX line, especially to the other notebooks in the FX2xx series.
Distribution
I picked Linux Mandrake 9.0, mostly because I know that Mandrake is a very good desktop distribution. Mandrake 9.0 is better than 8.2 (which I used before 9.0 was released), although still not perfect.
What Works and What Doesn't
Actually almost everything does work, but here is a list from the specs. This is designed to be used by someone running Mandrake 9.0, but the ideas can be implemented into any distribution.
- CPU - Intel Pentium III 750 Mhz
- Status: Perfectly
The Intel Pentium III 750 works perfectly under linux and supports SpeedStep (although I'm not 100% sure that the voltage is being dropped when going to a lower speed, the performance does drop when it drops to 600 MHz). In order for SpeedStep to work, you must apply the CpuFreq patch. Instructions on patching the kernel and changing the speed are on the web site. I did have this working on 8.2, but haven't gotten it to compile on 9.0 yet. However, I don't believe you need this unless you want to override the BIOS settings (so normally, the system will run at 750 on AC power and at 600 on Battery power).
- LCD - 15" XGA (1024x768) TFT Screen
- Status: Perfectly
The screen works without a problem. LCD brightness can also be controlled using my sonyfxd. There is also a program called
spicctrl
(parts of which my program uses) that is a command line utility.
- Graphics - Intel I815EM Chipset
- Status: Perfectly
This works perfectly at 1024x768x24 with XWindows 4.2.1 (under Mandrake 9.0). The Mandrake setup was able to pick everything up without a problem.
- Audio - Intel I815EM Chipset
- Status: Perfectly
You can use either the OSS modules or the ALSA modules. Technically, the OSS modules are supposed to work, however, the ALSA modules are generally thought of as better and it is probably a good idea to switch. They are already compiled as modules, all that has to be done is to enable them. This can be done by commenting out the i810_audio
line in /etc/modules.conf and adding the following lines to /etc/modules.conf:
alias snd-card-0 snd-card-intel8x0
options snd-card-intel8x0 snd_index=0
Mandrake includes an ALSA startup script which should run by default. Reboot, and make sure that you see "Starting ALSA version 0.9.0rc2: (intel8x0)." or something like that during bootup. After this has happened, run aumix to change the mixer settings. Vol is the main volume, and will be adjusted by all volume controls. Also, boost Pcm (I have it at a level of 100), as this must be high in order for you to hear anything. All of the mixer settings will be saved when you shut down, and set to the previous settings on startup (for Mandrake users).
- DVD/CD - 8x DVD Drive
- Status: Perfectly
The CD-ROM works perfectly in Linux. More importantly, DVD playback now functions well as well. There are two players that are available - Ogle and Xine. Xine ships with Mandrake 9.0, however, you need to download more files from http://plf.zarb.org in order to view most DVDs. Before, I reccomended using Ogle since it allowed you to use menus, however it appears that Xine also now supports menus using the d5d plugin. Seeing as it has the better user interface, I believe that it should work as well or better than Ogle.
- Ethernet - EtherExpress 10/100
- Status: Perfectly
There are two modules available that work with the ethernet controller - the open source one (eepro100) and the Intel one (e100). The Intel module is supposed to work under any conditions, while the "open source" module has problems with 10 Mbps operation due to a sleep mode. There is a way to disable the sleep mode, and I haven't noticed any problems after performing the proecedure. More information as well as download links can be found on Jan Slupski's Page.
- Modem - V.90 AC'97 Modem
- Status: Perfectly
Although the modem is a software modem, it now works perfectly under linux. The drivers are available at Conexant's Web Page. PPP worked without a problem for me.
- PC Card - 2 Slots
- Status: Perfectly
Works without a problem with my Sony 802.11b Wireless LAN Card, as well as PCMCIA->CF adapters and PCMCIA->Memory Stick adapters.
- Firewire
- Status: Perfectly
I have not tested hard drives or other such peripherals, but a Sony
VX-2000 Mini DV camera works perfectly.
Kino will allow you to
capture and edit video. I was also able to play back video in Kino without
a problem. Mandrake 9.0 now detects the firewire controller and loads the
appropriate modules automatically.
- Power Management
- Status: Partially
Finally a problem :(. The FX220 does not support the older, but better supported APM standard. So the only way to get any good power management is to install ACPI, the newer, but poorly supported standard. Mandrake does not include ACPI in the kernel distributed with 9.0, so you will have to recompile it, selecting the proper ACPI options in the kernel configuration.
Unfortunately, it's not that easy. For me, only the latest ACPI release worked, which meant having to patch the kernel with a relatively big patch. You can get the ACPI patch from SourceForge. However, the supplied kernel source already contains a large number of patches, a few of which conflict with the ACPI patch. Thus, you'll have to start with vanilla source from kernel.org and then apply all the patches. I've been able to do this with the Mandrake's kernel SRPMs, and I might provide an RPM here when I get time to make a good version.
So what works and what doesn't work? ACPI allows you to read AC Adapter status, battery status, temperature status, and some other stuff. Suspend does not work yet. The VAIO only supports what is known as S3 sleep, and the ACPI patches do not support this yet. Hibernation support may be available as part of the swsusp patch, but I have not tried this yet. It also appears that the ACPI patches against kernel 2.5.x may support S3 sleep, however, I have not confirmed this either. ACPI also lets you control SpeedStep on some laptops, however, this does not work on the FX220 - see the note on CpuFreq above for an alternative.
I also obtained the acpid daemon and configured it to shut the computer down when I pressed the power button and to change the CPU speed when the power was disconnected/connected. Also just one note with Mandrake 9.0. When using the Mandrake's auto-login feature, KDE will only allows you to log out when you use the log out button. If you disable this and enable KDE's auto-login feature (look in the KDE Control Center), KDE will let you log off, turn the computer off, or reboot the computer after clicking the log out button.
- USB - UHCI
- Status: Perfectly
USB finally works without any problems. The ACPI patches
can correctly assign the IRQ to USB. Just make sure you do not use the "pci=noacpi"
option in LILO. My laptop could not boot with "pci=noacpi" in the LILO
append string, but worked without a problem without it.
- Sony Keys
- Status: Perfectly
Sony includes three Programmable Power Keys between the keyboard and the screen, as well as a Function (Fn) key that allows you to change volume, screen brightness, etc... Unfortunately, these are all implemented in software, rather than in hardware, so Linux has to provide both the drivers for these bottons and the software.
The kernel includes the sonypi module, which allows the computer to detect the three PPK buttons, as well as the Fn key. Kernel 2.4.19 has a newer version of sonypi which supports all three PPK buttons, and this is the version include in Mandrake 9.0. For those without a 2.4.19 kernel, download the patch and recompile the kernel. When you initialize the module, pass "fnkeyinit=1 nojogdial=1" as options to the module (for Mandrake 9.0, just put sonypi fnkeyinit=1 nojogdial=1 into /etc/rc.d/rc.modules). This will enable the function keys and the other two PPK buttons.
In terms of software, please visit the sonyfx project that
I am working on. Hopefully, we will eventually emulate all of Sony's software
on Linux.
Frequently Asked Questions
Please make sure you read these prior to e-mailing me:
- How do I get the TV-Out to work under Linux
-
I've been asked this question many times, but unfortunately, there's no answer. The FX220 uses the Intel chipset for video, and there are no known
Linux drivers/programs that enable switching from the LCD to the TV or to an external VGA monitor while in Linux. I have heard that it may be
possible to plug the TV/Monitor in before the system boots, and it may work in that case, but this is hardly a good solution. So, if you need to
be able to switch between the LCD and an external monitor or TV, you will have to use Windows.
- I don't know how to patch a kernel. Can you provide precompiled kernels?
-
This is something I intent to do eventually. However, there are a couple of problems. First, there are many distributions that people want to run.
I tend to stick with Mandrake, so any packages I produce would only work with the latest version of Mandrake. Since my laptop is really the only
Linux computer I can mess around with, I can't really install and maintain several different distributions. So what I can post on here will be very
limited. Second, ACPI may interfere with building alpha/ppc/whatever kernels, and I really am not sure how well the various Mandrake kernels (secure,
smp, etc...) would build after the ACPI and other packages are applied. I personally only target a normal i686 kernel which works flawlessly for me, but
could cause problems on other computers. Third, I'm really not that great at complicated RPM stuff, and I've only barely been able to hack together
a solution that compiles an ACPI enabled kernel on my laptop. I would rather not distribute that, since its not a great solution, plus some of my changes
mess up installation. Fourth, my recompiled kernel is not well tested. It works for me, but I deal with problems as they come up. I think that anybody
who knows how to deal with a possibly problematic kernel also won't have a problem compiling an ACPI kernel. And finally, I just don't have enough
time to keep up with kernel security updates and helping people install it (let alone building it in the first place).
That being said, if anyone wants to provide a package for RedHat, Mandrake or any other distribution, please contact me and I'll gladly post it on this
site. I may at some point in the future actually post packages, but don't count on it. In the mean time, if you don't know how to compile a kernel, you
can learn about how to do it by reading the Linux Kernel HOW_TO. Also note that most distributions
will not give you a vanilla kernel, but rather one that has been significantly altered by many patches. Unfortunately, the ACPI patch is rather large
and affects a large number of files. This results in interference with the patches in the Mandrake kernel, and I had to remove some of these to get the
kernel to compile. So its not exactly an easy process.
Return to the Home Page
David Levitan <david@dlevitan.com>
Last Modified: 11/08/2002