Installing Linux on a Vaio Laptop PGC-FX701
A little penguin, courtesy of TuxMobil

Installing Linux Mandrake 9.2 and kernel 2.6.x on a Vaio Laptop PGC-FX701

Romano Giannetti <romano@dea.icai.upco.es>

Disclaimer: this information is available on an "AS-IS" bases. Nor I nor anyone I'm related with (employer, friends, pets, etc) will be responsible if using this information you will burn your laptop off, or generate a mayor earthquake, and so on. Nevertheless, I hope it helps...

For what I know, this same information should be useful for the FX702 model and probably for all the FX models. I just tried it on my 701. If you find this page interesting, useful or simply if you like to read it because my english sounds so funny, please drop me a note, so that I'll feel happy and keep this page up-to-date.

Here you have a nice screenshot... (by the way: have you noticed the small terminal window reporting syslog messages on the upper right side of the screen? This is my little slogger program!)

Another thing you can notice from the screenshoot above is the gkrell monitor, with the gkacpi plugin to show temperature and battery status (look for it on the plugin link of the gkrell page) and the cpufreq plugin horribly hacked by me with this patch which add a "throttling" status report (see below about overheating).

Before continuing, have a look at the very well-done Markus' page: Linux on the sony vaio FX/FXA serie. Surely the reference info for this laptop. Over there you can find a lot of info, so I will not repeat it.

This page is dedicated to run a 2.6 kernel on the Vaio. Basically: it works, and it works well. The first part of the page is dedicated to installation and 2.4 kernel issue, so if you want you can skip it and go to 2.6 kernel section

This page is listed on TuxMobil - Linux on laptops, PDAs and mobile phones. Thanks Werner!

Executive summary on 22 mar 2004:

Hardware:

Subsystem Specifications Status Notes Status 2.6
CPU AMD k7 powernow! OK Load the module! OK
Discs HD20G,floppy,CD/DVD OK OK
Video ATI Rage Mobility M1 14.1" TFT LCD Screen OK Acceleration untested OK
Sound vt82C686 (Apollo Super AC97/audio) OK See description! OK
LAN RTL-8139 OK OK
USB 2 x VT82C586B OK OK
Modem Conexant ? Gave up Gave up
PCMCIA Modem 3Com Megahertz 3CXEM556B ? Works

Software:

Facility Status 2.4 Status 2.6 Notes
Suspend NO YES The vaio just hangs with 2.4 kernels

With 2.6 PMdisk or swsusp option it works, with glitches

Fans FUZZY FUZZY See text
CPUfreq YES YES

If something isn't cited here, I have not (yet) tested it.

NOTE: this page is a very preliminary "work in progress". If it's of anybody interest, please drop me a note, it will help me to continue reporting success/failures here.

Installation

For the first time since a lot of years (but it was the first time I installed a laptop, mind you) it was NOT a "out of the box" experience.

I installed Mandrake 9.2 on the laptop:

Note however that I installed the thing before discovering that a BIOS update was available for the Vaio FX701. I applied it after the installation, so probably is better if you make the upgrade as the first thing. The upgrade is a windows (grrrr) executable named R0121K5.exe; you can find it on the sony vaio page (login required, with the serial no. of your laptop). It will prepare a boot disk, easy to do. Read carefully the instruction.

Power control with standard kernel.

Mandrake's kernel 2.4.22-26 has the swsusp patch (it seems), but it doesn't work. The Vaio freezes, does not shut down, and doen not reboot.

The first time I booted I had to load manually the acpi sub-modules (modprobe ac; modprobe thermal; modprobe fan; modprobe button; modprobe battery), but from then they got loaded auto-really-magically at boot. If someone explain this to me, I will be grateful. I installed acpi from the Mandrake disk and now acpi -V give the expected information.

Next I loaded the cpufreq module (modprobe powernow-k7) and started cpufreqd v1.1. I do not know if I would have to reload the module next boot, hoping in the above magic here. It seems that it works. Select acpi_workaround=1 in the configuration file, and all is well.

A little dissapointing thing is that I have discovered (and I think it's a BIOS problem) is the following. The fan is programmed to go on at 50ºC, but it seems it has no hysteresis cycle: when the CPU reach the threshold temperature, the fan goes on, and if the vaio is idle, it goes off in a handful of seconds. To start again in a short time. And so on. I do not think this is nice to the fan, really. There is no fan control in /proc/acpi/.../fan/, so I do not know how to solve the problem. If anyone knows it, write me. Another problem is that under very high workload (i.e., compiling a kernel, listen to a CD and browsing) the temperature goes very hot. I arrived to 76 °C, which I do not like. There is some kind of emergency action which I do not understand in the file /proc/acpi/thermal_zone/THRM/trip_points:

critical (S5): 84 C

passive: 80 C: tc1=2 tc2=3 tsp=40 devices=0xcfec0be8

...but I would prefere something more under my control. Till now I monitor the temperature with acpi -V and when it seems too high I do a

echo -n 4 > /proc/acpi/processor/CPU0/throttling

which seems to keep temperature under 70 C. I think I will arrange some Python script to do it automatically, although the perfect solution would be to implement temperature control in cpufreqd...

I was not able to make suspend/resume work, at least not with the standard kernel shipped with Mandrake (yes, I upgraded to the last version). And, more important: if you press one of the Display switch keys (Fn+F7 or Fn+F8) the vaio would lock solid --- I had a moment of panic before discovering that you can force a power-off pressing the power button for more than four-five seconds.

Using a 2.6 kernel.

From here on, I will relate how to run a 2.6.x kernel on the vaio. I am running 2.6.4 now, "vanilla" edition (I mean, the Linus' official tree). You can find my current .config file here. I have eliminated a lot of options and modules to shorten compilation time. Well, this is not the place where explain how to compile and install a kernel, so I will be really stringy. Remember to install the package module-init-tools from the standard Mandrake distribution, otherwise your modules will not work!

I have compiled it (make), installed (make modules_install; cp arch/i386/boot/bzImage /boot/bzImage-2.6.1; cp System.map /boot/System.map-2.6.1) and prepared a couple of stanzas in /etc/lilo.conf(here),one with the "resume=/dev/hda5" option, and the other one with "noresume" (in case of problems with the resuming). Change accordingly to your configuration.

Sound.

Don't ask me why, but the Mandrake script /etc/rc.d/init.d/alsa would think that the sound modules are loaded (erroneously) and it will not load them. To not waste a lot of time, I horribly hacked that script (diff here) so that it will try to reload the driver everytime... no harm done if they are loaded.

Temperature control.

Kernel 2.6 does behave exactly like 2.4.x recent (see above) --- not too strange, they share a practically identical ACPI implementation.

I have wrote a little daemon, tempwatchd.py that monitors the temperature and throttles down the CPU if needed. I launch it from /etc/rc.d/rc.local like that:

/usr/local/sbin/tempwatchd.py &

Read the first comments in it to configure the thing. It will report through syslog. Notice that if the throttling is not able to lower the temperature, it will scream on syslog at level critical... I monitor it with the above mentioned slogger.

Suspending and resuming.

I tried all the three available mechanism, and at the moment working ones are the in-kernel swsusp and pmdisk facilities. Notice that it seems that pmdisk will be dropped any time now. Swsusp 2 is not working at the time, but its maintainer is very active and I'm sure it will work any time soon. To go into suspend mode, su to root and then do the following:

echo 4 > /proc/acpi/sleep

You can do it from a command line into X, graphics will be resumed OK. After resuming (boot the kernel with the pmdisk= your swap partition command line). The only problem is that neither the USB mouse nor the audio works after resume... but you can manage to have them back stopping them before suspending and then reloading them. I concocted a simple-and-dirty suspend script that works perfectly.Notice however that things changed in recent kernels; look at the main page

After a bit of playing, I managed the following: install and start acpid and xenity (they come with the distro) and drop a file named, for example, suspend in the directory /etc/acpi/events:

event=button/sleep.*
action=/usr/local/sbin/really_suspend
  
and add the really_suspend script in /usr/local/sbin. Now, if you put into your X11 start script a xhost +localhost command, when you push the suspend key (Fn+F12) a window will pop up asking confirmation for suspend and then suspending the laptop. With a bit of work you should be able to enable suspend when closing lid and/or pushing the power button.

PROBLEM #1: you have to eliminate the sound volume applet from gnome, it keeps the /dev/sound/mixer device opened so that you could not unload the modules.

PROBLEM #2: if you suspend with the charger plugged in, and then resume on batteries, linux will not notice the change; cpufreqd will think AC is on, and so keep the clock at full speed. Plug and unplug the adapter and all is ok again. I forwarded the bug to linux-kernel and acpi-devel list.

PROBLEM #3: never try to suspend with your USB pendrive mounted. USB will fail to unload, resume in bad state, and now to have your pendrive back you can only reboot.

CDROMs, supermount, fam and the likes.

Mandrake uses the supermount filesystem patch to mount automagically cdrom, floppies etc. I think that it is more a source of problems than not. For example using the USB pendrive is a nightmare. You put it in and it gets mounted. An icon appears, all OK. Then you write to it and it is almost impossible to umount. Busy everytime, you do not know when you can extract it safely, etc...

I've done the following:

Internal modem.

In summary, I gave up. Not enough time to spend on it. To resume, I downloaded the free version of the driver from the linuxant page, compiled and installed it. The module compiled and loaded well, although it gives a freightening kernel stack trace dump on unloading (probably it's due to the devfs poor state in 2.6.x, and not to the driver). I can speak to the modem all right with the kppp terminal window, but the connection with the ISP is very flaky (and slow...). I thought about buying the full version*, but then I discovered I can buy a supported PCMCIA modem in eBay for less than the license... without any problem of upgrade/new kernels/compatibility in the future.

PCMCIA modem

I bought a combo modem/ethernet card in eBay, a 3Com Megahertz 3CXEM556B. You may ask why, but the combo card is cheaper then the modem-only one and moreover it comes with a X10 connector, so that no dongle is needed. Worked like a charm; just enable the card manager and... that's all!

Now, you can go back to the main Sony vaio page.


* Notice: I have nothing to say about the closed drivers. IMHO, the author is free to do whatever he or she wants about his or her software.  I recon that the GPL border on the kernel/driver side is quite  fuzzy; but I never contributed a line of source to the kernel, so I think that I have no right to complain.