Linux on the Sony Vaio PCG-U101

Hardware / Linux support table:

Here's what I know about the details of the U101 hardware and how the various bits work with Linux. Most if this is based on my own experience with my machine; some of it has been gathered from around the net. Please let me know if you've got some information I don't.

Component Make / Model Notes Linux Status
CPU: Intel Mobile Celeron 600A Uses same Banias core as the Pentium M, but without SpeedStep. Apparently, it's always locked to the lowest voltage and clock frequency (mine actually runs at about 595Mhz). Also only has 512KB L2 cache. Reports itself as Family 6, Model 9, Stepping 5, just as Pentium M processors do. This is actually cool — Intel hasn't been forthcoming with the info kernel developers need to make the Pentium M's Enhanced SpeedStep work in Linux. So no worries about that here — it's just always in maximum power-saving mode.
Chipset Intel 855PM This is the Pentium M / Centrino chipset, in its no-integrated-graphics flavor. The Intel 82801 DBM I/O Controller Hub is a big part of the 855PM Chipset Platform, in addition to the 855PM Memory Controller Hub which for some reason gets top billing. Kernel support for IDE DMA is brand new; the stock RHL9 kernel doesn't include it, but the one from Raw Hide (the Red Hat experimental branch) does. The simple hdparm -Tt benchmark tells me 16.6 MB/sec or so for buffered disk reads.
BIOS: Phoenix version R0041G0 BIOS setup utility is pretty free of options. You can: set the time and date, turn off LCD screen expansion, toggle network and firewire booting, disable the graphical Vaio boot animation, change the speaker volume, set a BIOS passwords, and change boot device order. And that's it. In general, I'm sure it's pretty much good old PhoenixBIOS. With ACPI, there's less and less work for the BIOS to do anyway. ACPI-related issues are detailed below.
RAM: 172 Pin DDR266 PC2100 SDRAM micro-DIMM. Standard is 256MB; I got the 512MB upgrade. Can't have too much RAM. I'm not sure of anyone else making a 512MB module in this format, but apparently the 512MB upgrade completely replaces an existing 256MB module. (Mine hasn't arrived yet.) RAM is RAM, thank goodness.
HD: Toshiba MK3004GAH 30GB. Larger version of the same model used in the U1 and U3. (And the same drive used in some iPod models.) Other than the IDE chipset issues, no problems here.
Video: ATI Mobility Radeon Radeon M6 LY; 16MB of DDR RAM. Unlike the U1 or U3, uses AGP. I was trying to show someone how 3D support doesn't work, and all the sudden it just started working. And I didn't change anything, honest. Spooky. Investigation in progress….
Display: CG Silicon TFT 1024×768, 7.1" diagonal. This is 33% more surface area than my old Libretto 50CT's screen, so my eyes are pleased. 180 pixels per inch! Bright enough to use in direct sunlight, too. Support for an external monitor requires a special sold-separately dongle, which I don't have. Obviously the display itself isn't an issue. The brightness is controllable through sonypi. I don't see why the external monitor wouldn't work, but I don't have a way of testing. Maybe when the price of wearable displays drops....
Audio: Yamaha AC-XG? Or i810 AC'97 audio? Windows XP shows the Yamaha device. Anaconda detects an i810 audio device — the 82801DB I/O Controller's on-chip audio? There seems to be some general confusion about this in other laptops from what I've found online. Requires ACPI. Works fine with any Linux kernel from the last four years.
Ethernet: Intel PRO/100 VE Integrated into the Intel 82801 DB I/O Controller. Works flawlessly and seamlessly out of the box.
Wireless: LAN-Express 802.11b It's a Mini PCI card with a strange connector wired on to the side. I think this is what they're talking about in this interview (halfway down the page) but the Babel Fish translation is next to incomprehensible. I think basically there's just not enough room for the Mini PCI socket.

It looks like this, plus the weird connector. I'll get some pictures here eventually.
I got this working! The card shows up as "Harris Semiconductor: Unknown device 3872 (rev 01)". Harris Semiconductor is Intersil's old name, and that's who makes the Prism 3 chipset used in this card — ISL3872IK18, specifically. Online rumor indicates that the orinoco_pci driver supports the LAN-Express cards, and a look at the driver code show a table with a PCI ID of 1260:3873 — just off by one.

At the suggestion of my friend Lars, I patched the driver to simply add an additional entry for 1260:3872. And that works! I've sent the patch to the driver maintainer and it's in his codebase, but you can get it here too. Once you've got a kernel with a patched driver running, just do modprobe orinoco_pci, and then configure and activate eth1.
USB: Intel 3 UHCI and 1 EHCI This is part of the 82801 DB I/O Controller. USB modules load when ACPI is enabled, but don't otherwise. I don't have many USB devices to test with — no USB 2.0, for example — but it works with the ones I've got..
PCMCIA / CardBus: Ricoh Co Ltd RL5c475 There's one slot — no room for anything else. Good thing I don't have to fill it with a wireless card. No problems, both with and without ACPI. Uses the Yenta driver. I haven't tested a wide variety of cards, but those that I have checked work.
iLink / IEEE 1394 / FireWire: Ricoh Co Ltd R5C551 It's possible this is actually a combo chip which also includes something which is identifying itself as a RL5c475 CardBus controller. That's speculation based on the Babel Fish translation of the page on Ricoh's site. I don't actually own any FireWire devices but I quickly tried a borrowed Sony DV camera, and the libraw1394 test program seems to talk to it okay. Also, ACPI seems to be a requirement — the kernel module won't load otherwise.
Memory Stick: 1 MagicGate slot "The added value of copyright protection technology." Heh. There's Linux support for these things as a USB storage device. I got a 128MB one on sale, and am currently using it for backups, but I've got aspirations of getting it set up as /var (using JFFS) to reduce disk activity and power consumption.
Pointing Device: Synaptics PS/2 TouchStyk Designed sort of like a game controller — see keyboard picture. The arrow keys around the pointer are the arrow keys. The left-hand buttons make an annoyingly loud click when pressed. Works, except for the press-to-click feature. There are drivers for Synaptic's laptop touchpads; they don't work right off since the protocol is somewhat different, but perhaps they could be adapted. I've e-mailed both the author and the manufacturer of the device; we'll see. Synaptics appears to be quite developer friendly, so I might be able to do something myself if it comes to that. They've got a very detailed document on the TouchPad interface; hopefully they'll make the same information available for the TouchStyk. I'm toying with the idea of making an integrated U101 input driver that would watch both /dev/psaux and /dev/sonypi.
Special keys / buttons: Sony Programmable I/O Control Device Zoom, Screen Rotation, ThumbPhrase, Fn, Suspend, and LCD brightness. The Linux sonypi driver works for many of the keys with ACPI (or without when the fnkeyinit parameter is used). Fn-F1 through Fn-F12 work, as do the various Fn-alphanumerics. (1, 2, B, D, E, F, and S, specifically.) Standby is interpreted as Fn-Esc. Power Save, Zoom/Rotation, and ThumbPhrase generate an unknown event. I'm conversing with the author and it looks very likely that we can get this all working.

Power management support table:

This systems basically requires ACPI to function. APM doesn't provide anything useful at all, and various devices don't work with ACPI. I originally noted bits of this in the table above, but power management is so important in a laptop that it make sense to address it in more detail.

Linux ACPI support is in its infancy. Gerald Teschl has a version of the Raw Hide kernel with the ACPI patch applied; I'm using that basically successfully. I was having intermittent problem with hangs when running hwclock, but adding CLOCKFLAGS="--directisa" to /etc/sysconfig/clock works around that.

Component Notes Linux Status
CPU Speed: Hardware doesn't support any speed vs. power scaling capabilities. Works fine under Linux, insomuch as there is nothing really to do. Well, actually, there's stuff in the ACPI proc tree for throttling CPU speed by putting it into sleep mode; that may work, but I haven't tried it. As I understand it, this is more for high-temperature safety than for extending battery life.
Temperature: CPU thermal monitoring and control Monitoring works — you can get the current temp by reading the appropriate file in /proc/acpi. There's also trip points set by default at 90 and 100 C; theoretically, the system should shut down if the critical point is reached, but I'm not interested in testing with my system.
Battery: The default battery has a capacity of 24.42Wh — half of what's in the PCG-Z1, for whatever that's worth. The extended battery seems to be running about $400 imported to the US; maybe I'll save up and buy one of those next year. AC status and battery level and charge/discharge rate can be read in /proc/acpi. And the Gnome battery monitor applet works perfectly.
Screen: From what I can tell, it appears that full brightness takes almost 2.5W more power than the darkest setting. It's a bit hard to tell, as the consumption rate displayed by ACPI doesn't react instantly. Sometime when I'm bored, I'll do some battery time tests with various settings. The brightness is controllable through sonypi. I'm also not sure about turning it off completely — X can blank the screen, but there's still a glow, and battery use doesn't actually decrease.
Fan: I've heard that on some Vaio models, the fan doesn't ever start when ACPI isn't used. Luckily, the U101's fan is always on in that situation — much preferable to burning up your CPU. With ACPI, the fan seems to change speed depending on CPU temperature, but /proc/acpi/fan is empty — it'd be nice to be able to read the state. Still, basically functions. I don't know of any way of getting state information in WinXP either.
Hard Drive: Toshiba specs say that power consumption is: start 1.2W; seek, read, and write 1.4W; idle 0.6W; standby 0.2W, and sleep 0.08W. The drive appears to support hdparm's -B advanced power management flag, which is good. I need to test its actual performance in different modes. Also, Jens Axboe's Laptop Mode patch is in the Raw Hide kernel, and enabling that should reduce disk activity. The bad news is: the drive won't wake up from deep sleep — if you do hdparm -Y /dev/hda, time for a hard reboot. So don't do that.
Power button and Lid Sensor: These are standard ACPI things and don't require the special Sony Programmable I/O Control Device. Sends ACPI events just fine. With the default acpid scripts, the power button does a clean shutdown. Once RAM-based suspend works in Linux (see below), I'll make closing the lid do that. And I think I'll make the power button do a hibernate (suspend to disk).
Standby: Suspend-to-RAM — ACPI sleep mode S3. With Fedora 8, suspends just fine, and, uh, wakes up from that 20% of the time.
Hibernate: Suspend-to-disk. Some older Vaios used a BIOS-based suspend partition, but this one doesn't — it's all software-based. And that means ACPI — in this case, S4. Still not as slick as the Libretto 50CT's OS-independent suspend-to-disk function, does work out-of-the-box with no real issues.

Corrections and additions:

The goal is for this to be the most comprehensive PCG-U101 hardware page possible. If you have any more information, please e-mail me. Thanks!