Linux on a Sony Vaio PCG-GR214EP

Introduction (updated 2003-06-24)

I am the happy owner of a Sony Vaio PCG-GR214EP notebook. Even if Sony says it is designed for Microsoft Windows XP, and ships it with Windows XP Professional, it is possible to use Linux on this notebook. I will try to summarize all you need to know to do so on this page. Note that this guide should be useful also to PCG-GR214CP owners, since it is almost the same machine (the only difference being a "combo" CD/DVD/CDR/CDRW drive instead of a simple CD/DVD drive on PCG-GR214EP).

Note that this page is essentially out-of-date and no longer maintained. Running Linux on this notebook should be totally straightforward by now, and any recent Linux distribution should work out of the box. I'm leaving this page in place just in case.

What you will find here is what I did to make the things work enough for my own needs. If it doesn't work for you, then I'm sorry for you. I take no responsability for whatever can happen to you, your notebook, your house or your planet as a result of you doing what I say on this page. If you have suggestions or comments, just tell me.

Initial installation (updated 2003-08-06)

The hard disk comes already partitioned, with a first FAT32 partition of about 8.0 Gb, and a second, empty FAT32 partition of about 6.1 Gb. I simply deleted the second partition and installed a Slackware GNU/Linux 8.0 instead. I would like to insist on the fact that any other Linux distribution may be fine as well, provided it is recent enough. Here is the partitioning scheme I used. Of course, you are free to do whatever you want, this is only a suggestion.

Device Size Filesystem Mount point
/dev/hda1 8.0 Gb Win95 FAT32 (LBA) /mnt/win/c
/dev/hda4 6.1 Gb Linux extended  
/dev/hda5 2.9 Gb Linux native /
/dev/hda6 1.5 Gb Linux native /home
/dev/hda7 1.5 Gb Linux native /tmp
/dev/hda8 188 Mb Linux swap  

If you want more detailed information, see the output of fdisk -l /dev/hda, or the file /etc/fstab.

Just in case you need it: pressing F2 while the laptop says "SONY" at boot time will let you enter the BIOS setup, where a number of parameters can be set.

Kernel (updated 2003-06-23)

I am now using a 2.4.21 kernel, with an additional patch for ACPI support and another one for Speedstep support. Unlike most recent laptops, this one can work without the ACPI patch. I have been starting with a 2.4.17 kernel, and have been upgrading with each new version since. I recommend that you use a 2.4.18 or later kernel, because the Radeon framebuffer driver doesn't work in previous versions. Recent ACPI patches may require that you enable the "Local APIC support on uniprocessors" option (in the "Processor types and features" menu) in order to have ACPI working.

ACPI (updated 2003-06-25)

As mentioned in the kernel section, you need a patch for proper ACPI support.

The AC adapter and battery states are reported accurately. The battery info is partly wrong, partly missing, but this doesn't really hurt. I wrote a useful script to compute and display the remaining time when the notebook is on battery.

The power button and lid switch work well, I am using acpid to convert the event they generate into useful actions (such as turning the notebook off). My configuration files are available in the files and commands output section.

It looks like the fan is hardware regulated, which prevents any damage to the hardware. The system temperature is reported correctly. I have defined an alias temp='cat /proc/acpi/thermal_zone/ATF0/temperature' to look at the temperature anytime I need.

I never tried suspend-to-ram nor suspend-to-disk, so I can't tell if it would work or not. I don't really have a need for these.

I also recently started using a simple acpi client that behaves like the old "apm" command.

CPU (updated 2003-06-23)

As mentioned in the kernel section, I use a patch that adds Speedstep support to the kernel. The patch is called CPUFreq and has first been developed by Dominik Brodowski. It lets you switch the CPU frequency between 866 Mhz and 666 MHz, which is "a nice method to save battery power", Dominik says. I co-wrote a script that lets you change the frequency easily, and I also use acpid to perform an automatic frequency change when the AC adapter state changes (see the configuration files in the files and commands output section). What's more, you can ask the script to choose the frequency by itself, depending on the AC adapter status. I use this at boot time, so I actually almost don't have to care about it all anymore.

Hardware monitoring (updated 2011-04-19)

There is no hardware monitoring chip on this notebook. Thermal management is handled by ACPI (see the ACPI section). Starting with kernel 2.6.26, the kernel exports the ACPI temperature in a libsensors-compliant way, so lm-sensors 3.0.2 and later will pick it.

SMBus (added 2011-04-19)

On the SMBus are up to 3 EEPROMs (one on the board, and one on each memory module). Use the eeprom driver to read information from them.

The EEPROM at I2C address 0x50 is the SPD on one memory module. You can use the the decode-dimms script to see the SPD data in a human-friendly format.

I noticed that only one memory module SPD EEPROM was visible on the SMBus (at I2C address 0x50). While again Sony refused to tell me how to access the second, I finally figured it out 9 years later. There is a GPIO-controlled I2C switch which selects which EEPROM is accessed at address 0x50. These are GPIO16 and GPIO17 of the ICH3-M (Intel 82801CAM) south bridge. Set to 0, access is enabled, set to 1 it is disabled. While this is physically possible, you don't want to enable access to both at once, as you would get mixed up, corrupted data in return. Makes you wonder why Sony went for a switch instead of a simple multiplexer... Support for controlling these GPIOs is not currently included in the Linux kernel, but might become available in the future.

The EEPROM at I2C address 0x57 exists in many post-2001 Vaio notebooks. Sony refused to provide any information about its contents, but with the help of many Vaio owners, I managed to decode most text fields. I wrote and maintain a script (eeprom/decode-vaio in i2c-tools) to display them in a human-friendly way. You can take a look at the current state of my knowledge, and get in touch with me if you have found something I ignore.

Please note that the EEPROM at 0x57 contains the BIOS password in a very lightly coded form.

Video (updated 2003-06-23)

The video chipset is an ATI Mobility Radeon (M6 LY). You will need XFree86 4.2.0 or later. You will have to use XFree86 4.3.0 to have DRI working properly (with 4.2.x, expect a deadlock when switching from X to console and back).

If for any reason you don't want to upgrade to 4.3.0, an alternative solution is to enable bus mastering for the AGP slot upon startup. John Robertson wrote a simple Perl script that does this. All you have to do is make sure it is called before X starts. How to do this depends on your distribution. As far as I am concerned, I call this script from /etc/rc.d/rc.local.

Framebuffer console is supported (see the screen section).

Screen (added 2003-06-23)

The screen is a 1024x768 TFT matrix. As always with this kind of screen, you are invited to use the original resolution. It requires using framebuffer for the console. The Radeon framebuffer driver works since Linux kernel version 2.4.18. For kernel versions prior to this, you still can use the generic VESA framebuffer driver. See my lilo config file for details about the options you need to pass to the kernel to have a correct framebuffer console.

If you enabled the support for "Sony Vaio Programmable I/O Control Device" in the "Character devices" section when configuring your kernel, you can use spicctrl to adjust the screen brightness.

Audio (updated 2003-08-09)

Audio is handled by the on-board Intel i830 chipset. I use the (almost) latest ALSA drivers (0.9.5) and it works well. Previous versions, starting with 0.9.0-rc5, are also known to work. I suppose I could use the kernel drivers as well, but I like ALSA. Due to sampling limitiations of the chipset, you won't be able to use all programs for playback. For exemple, amp won't work. Recent versions of mpg123 and XMMS are know to work however. Any piece of software using the ALSA library (as opposed to OSS emulation) will also work, mplayer for example. One of the more annoying things is that some audio CD players won't work, because the CD-ROM drive isn't linked to the audio chipset, causing regular analog mode to fail. You will need to read the audio CD in digital mode. I now use XMMS 1.2.8 to do the job.

Hard disk drive (updated 2006-11-20)

A regular, 15 GB, IDE drive on /dev/hda, with a 512 kB cache, made by Hitachi (model DK23CA-15). I tend to think that it is too slow and that it must be the bottleneck of the whole system, but it seems to be a common problem among notebooks. I tried to tweak the performances using hdparm, but I doubt it really worked.

In November 2006, almost 5 years after purchasing this laptop, I changed the hard disk drive for a faster and larger one (Seagate Momentus 5400.2, 60 GB with 8 MB cache). The original drive started making odd noises and it also exhibited SMART errors. I am really happy with the new drive, which tops at 39 MB/s when the original drive would do no better than 20 MB/s (values reported by hdparm -t). Performance comparisons on real-life use cases are straightforward, with I/O-intensive operations 2.3 times faster on the new drive. The raw drive performance is probably over 3 times better. I believe I just offered my laptop a second youth!

The output of fdisk -l /dev/hda for this new drive is provided for reference.

CD/DVD drive (updated 2005-05-22)

A regular CD/DVD drive on /dev/hdc, made by QSI (model SDR-081). DVD playback works using mplayer.

Digital audio extraction works, slowly (2.5x) but reliably. I am using cdparanoia. The drive (and CD) heats much during the operation though, so you'll probably want to remove the CD as soon as the extraction is finished.

Touchpad and mouse (updated 2003-06-23)

The touchpad is handled as a PS/2 mouse. I also noticed that if you add a USB mouse, it will work without any additional driver. It seems that there is a kind of emulation to make both the touchpad and the mouse appear as a single PS/2 mouse. The mouse wheel won't work though. Maybe you can make it work using USB drivers, but I haven't tested this yet. I use a special XFree86 driver written by Georg Wittenburg to handle the "Jog Dial" under X.

Ethernet (updated 2003-06-23)

Networking is handled by the main 82801CAM (ICH3-M) chipset, supported by the kernel's eepro100 driver. You can also use the alternate e100 driver, written by Intel themselves.

Modem (updated 2003-06-23)

The modem is integrated in the above mentioned 82801CAM (ICH3-M) chipset, and is based on the Conexant HSF technology. A driver was written by Linuxant and is available here. I did not test the driver heavily, but it worked the few times I tried it.

Miscellaneous (added 2011-04-19)

GPIO25 of the 82801CAM (ICH3-M) is used by the ACPI BIOS to cut power to all USB devices on suspend.

Files and commands output (updated 2003-06-24)

Here are the most important files of the system:

Additionally, here is the output of some common commands:

Useful links (added 2003-06-24)

Finally, here comes a list of sites you may want to visit: