Linux on the Panasonic CF-Y5

Setup August 1, 2006; last updated June 2008

The Panasonic CF-Y5 (the laptops in the CF-R/T/W/Y series are sometimes called a "Let's Note" or "Toughbook") is currently produced only for the Japanese market, but can be bought from companies that specialize in providing just such products for the US, European, and other markets. (Such companies include Dynamism, GeekStuff4u, Kemplar, etc.) I bought mine from GeekStuff4u, in part because it was the only supplier I could find that would sell it to me "naked" -- without an installed copy of Windows. (Of course, that choice means that I cannot test components under Windows.)

Note added June 2006: the machine is now sold in Europe and the US through a few "regular" retailers and in these versions actually appears to include Bluetooth 2.0, which is noticeably (and surprisingly and annoyingly) absent from the Japanese-market versions.

The CF-Y5 provides a super tough (said to withstand a 3ft drop and a 100lb pressure test -- I obviously did not test those claims!), super light (3.3lbs with battery), 14.1" laptop with built-in DVD R/W and very long battery life (I am seeing 5 hours on constant wireless, 6-7 hours without wireless, but with a lot of disk activity, and nearly 8 hours with wireless off and the DVD de-powered through the BIOS). The Y5 is the 2006 iteration (available since June 2007 is the Y7, with a Core 2 Duo L7700 and, more importantly, a SATA disk for up to 250GB at 7200rpm) and comes with an ultra-low voltage Core Duo processor (mine is a L2300), a spill-proof keyboard (another feature I did not test!), faster memory, etc.; it also has a convenient hardware switch (a slider on the front edge) to turn off and on the wireless device. Here are the main components in mine:

Because the machine is for the Japanese market, the standard keyboard for export is the Japanese International keyboard, which has more keys on it than the standard US keyboard and puts a number of punctuation marks and other non-alphanumeric characters in different places. I touch type, so I just ignore what's written on the punctuation keys ;-) The extra keys mean that the space bar is noticeably smaller than what I am accustomed to on US-market laptops -- it took me a couple of hours to get accustomed to it.

Below are tips on how to get things working under Debian. Since it took me some effort to set it up (not a lot more than for my several past Dells, NECs, and Sharps, all of which were also bleeding-edge in their time ;-), I thought I would share the experience. If you prefer to use a full distribution that still provides you with most of the advantages of Debian, use the Ubuntu distro -- it is unequalled among Linux distros, especially when it comes to bleeding-edge hardware; and if you want to do that, consult Dave's report on his recent install.


Here is the status in a nutshell. Green means working out of the box, purple means easily done, but with some downloaded software not packaged under Debian, orange means working with some issues, and red means not supported. (Note that, when I write "Out of the box", I do not mean that the stock kernel in the distro will do it, just that it only takes compiling a new kernel to have it working.) It is quite a tribute to the Linux community that pretty much everything works: the one orange denotes an issue related to the peculiarities of the Intel integrated graphics subsystem -- and this subsystem has proved difficult under Linux on many laptops.

Item Status
Dual-Core Support out of the box
Sleeping to Disk works using the tuxonice (suspend2) package (easy to use, but requires kernel patch)
Sleeping to Memory out of the box (both from X and from console) with kernel 2.6.23 and later, but not all that robust
ACPI Events out of the box
Frequency Management/Power Management out of the box
Video out of the box, but through X, not through BIOS
Hotkeys works, but requires installing PCC-ACPI driver
Ethernet out of the box
DVD R/W out of the box
Touchpad out of the box
Sound out of the box with kernel 2.6.20 and later, but speakers may not work under every kernel/ALSA combo
Wireless works, but requires installing the IPW3945 or iwlwifi driver
PCMCIA out of the box
SD Card out of the box with kernel 2.6.20 and later
Modem works with sl-modem package

I currently (June 2008) run kernel 2.6.25.7; here is the .config file for it. I had to download and install the following packages so far:

All proved easy to install and run.

Dual-Core Support

The distribution kernel may or may not support it, but any of the recent 2.6 kernels will support it with the appropriate configuration. Starting with 2.6.20 kernels, there is an option for "Core 2" chips, which is not the correct choice for this machine (but is the correct choice for the Y7) -- the processor, although dual-core, is effectively a Pentium M.

Sleeping to Disk

Note that I tested only tuxonice, which is not part of the kernel (the kernel does have the original suspend, which, for all I know, may work fine). I prefer tuxonice because it can use the swap partition to store the necessary data. In order to get sleeping to disk, you must enable it in the kernel, which requires you to get the patch for tuxonice from www.tuxonice.net), to patch the kernel, and to recompile it -- the site has very detailed and helpful instructions. You also need to install the hibernate package (from the Debian distribution or from that same site) to get helpful scripts. Use "hibernate" rather than echo to /sys/power/state to get the hibernation started. Going into hibernation takes 15-20s, even with X running; waking up from it is a shortened boot, followed by reinitialization of the X configuration, and takes about 25s.

Hibernation via tuxonice works fine, but you need the xf86-video-intel driver from Xorg (Debian package version ≥ 2.,.0), standard in the Xorg 7.3 release, rather than the 1.7.2 that comes with the regular Xorg 7.2. If you are using the iwlwifi driver (see above), it will not reconnect on its own as the machine comes back up.

There is a cute icon on F10 (a very small "z" and a multiple disk platter ;-) for sleeping to disk; you can use it through the hotkeys mapping.

Sleeping to Memory

In order to get sleeping to memory working, you must enable "Hotplug CPU" in compiling your kernel (CONFIG_HOTPLUG_CPU=y). (Big thanks to David Shaohua, an Intel ACPI maintainer, for pointing this out: the ACPI subsystem needs to be able to "unplug" one of the CPUs in order to initiate the sleep sequence.)

Now, /sys/power/state will show two possible states, disk and mem -- it does not identify a state standby.

The usual command
echo -n "mem" > /sys/power/state
will put your machine in sleep-to-memory mode; sliding the power button will wake up the machine; both are very fast (3-4s in each direction). It works with no precautions at all (even not using any script to shut down and restart various applications and daemons), but I do have audio and pcmcia (and of course, wireless and modem, but for those it's not a choice) compiled as kernel modules rather than built-in. On resume, the consoles do not work as well as might be desired; and so far I have not been able to go through more than a few sleep/resume cycles before the machine fails to come up at resume.

There is a cute icon on F7 (a very small "z" and a memory chip ;-) for sleeping to memory; you can use it through the hotkeys mapping. (I use it to put my machine to sleep and the ACPI lid opening event to wake it up. ACPI and sleep/hibernation scripts are part of the Debian packages for acpi and for suspending.)

ACPI Events

Supported without problem in a new kernel. Since standby is not available I set up the lid event to turn off the screen (and nothing else), and the button event to shut down the machine. The ACPI system provides all necessary information for the battery state -- I normally use gkrell to give me a battery monitor.

Frequency Management/Power Management

No problem with a compiled kernel, but I was a bit disappointed to see only two possible frequencies (1GHz and 1.5GHz). No fear, though: on the consumption side, the processor is ULV and uses very little power, so there is not an overwhelming need to slow it down a lot; and on the speed side, memory (and, for response time, a very aggressive policy for idling the disk) is the limiting factor. I normally use the "conservative" governor -- it does not find it necessary to run at 1.5GHz even while compiling a new kernel under AC power.

For monitoring power consumption and for many great tips for power savings (and patches, if you feel so inclined), you should definitely consult the powertop page. For power savings with the wireless, see that section.

Video

There are three issues to deal with here. One is resolution: the Video BIOS needs to be set up properly for each resolution and, by default, the 1400x1050 full screen resolution is not supported (!). Fortunately, the xf86-video-intel driver (with Xorg 7.3 and later) handles the video bios directly and so can set up the proper resolution for you. If you are running an older Xorg with the i915 driver, then you need to install the 915resolution package, which has has excellent instructions with it. I highly recommend using the Xorg 7.3, with the intel, rather than i915, driver, however, as this solves other issues as well. (This all works fine if you install XFree86 7.0 instead of Xorg, although Debian is Xorg-based, so you will have dependency problems and trouble with fonts if you stick with XFree86.)

Still on the issue of the X software suite, you will need to check that your setup supports direct rendering (assuming you need it: 3D direct rendering will cause extra power consumption). For that, you may need to download and compile the latest drm and mesa libraries, although that was not needed with 2.6.22 kernels and the Debian "unstable" packages.

The second issue is brightness control, through the hotkeys. For that, see the hotkeys section below: it can be done easily.

The last issue is switching between laptop screen and external monitor or projector. The hotkeys package will enable you to get the key with the switching icon (F3) detected, and the i810switch package should, theoretically, be able to support the switch, but so far I have not been able to get this type of switching working. On the other hand, as long as you use Xorg 7.3, all you need to do is to connect the external display/projector and restart X; X detects the external display, queries it, and chooses an appropriate resolution. This works easily and with every modern projector or display I have used; a minor problem is that, with most projectors topping at XGA, you will have a bad resolution on your laptop screen unless you set up a full X environment at XGA or SVGA resolution.

Hotkeys

In order for these to work, you will need the excellent PCC-ACPI package. Get it from
www.da-cha.org/letsnote
along with the handler and utilities. (Use the driver package in preference to the kernel patches: the patches are a few versions behind and do not seem to work very well, unlike the driver.) You compile the driver into a kernel module and edit your /etc/modules file to load the module automatically. Note that earlier versions of this package would not compile against a 2.6.18 or later kernel, so be sure to get the 0.9 or later release. (Note added in August: the pcc-acpi package 0.9 does not compile against 2.6.23-rc3 and later kernels, although it works fine with 2.6.22.x; get instead the latest version from here, annoyingly still called 0.8.4, which compiles and works fine.) The keys are now enabled and you just need scripts to handle brightness and sound. For sound, I use lineak (available as a Debian package from the Debian servers) driving the amixer command. For brightness, you need to alter the handler script, which was written for another laptop (a single increment in that script immediately switches the CF-Y5 from totally dark to maximum brightness). I modified a script found on the web to alter brightness by the minimum increment as follows:
#!/bin/sh

SPAN=1

grep -q off-line /proc/acpi/ac_adapter/*/state
if [ $? = 0 ]
   then
   INTERFACE="dc_brightness"
else
   INTERFACE="ac_brightness"
fi

BRIGHTNESS=$(( `cat /proc/acpi/pcc/$INTERFACE` + 0 ))
MAXBRIGHT=$(( `cat /proc/acpi/pcc/"$INTERFACE"_max` - $SPAN))
MINBRIGHT=$(( `cat /proc/acpi/pcc/"$INTERFACE"_min` + $SPAN))

if [ "x$1" = "xdown" ]; then
   if [ $BRIGHTNESS -gt $MINBRIGHT ]; then
      BRIGHTNESS=$(( $BRIGHTNESS - $SPAN ))
   else
      BRIGHTNESS=$(( $MINBRIGHT - $SPAN ))
   fi
   echo $BRIGHTNESS > /proc/acpi/pcc/$INTERFACE
elif [ "x$1" = "xup" ]; then
   if [ $BRIGHTNESS -lt $MAXBRIGHT ]; then
      BRIGHTNESS=$(( $BRIGHTNESS + $SPAN ))
   else
      BRIGHTNESS=$(( $MAXBRIGHT + $SPAN ))
   fi
   echo $BRIGHTNESS > /proc/acpi/pcc/$INTERFACE
else
   echo >&2 Unknown argument $1
fi

Ethernet

The generic kernel on your installation CD has the driver (8139too). Compile it into your new kernel.

DVD R/W

Nothing to do here, other than make sure that your new kernel has support for SCSI and USB. The drive is region-locked and, as of this writing, there was no region-free firmware flash available for it.

Touchpad

Make sure your new kernel has support for input events and that your X configuration file includes the synaptics module. Works fine; if you use circular scrolling (recommended), remember that you will be scrolling (even after lifting your finger) anywhere close to the edge of the pad.

Sound

The sound driver is "Intel High Definition" (HDA); the actual chip is a Sigmatel 9200. I am using ALSA, naturally, for the sound system. The HDA driver (starting with ALSA 1.0.13) works without trouble for the headphones speakers and interacts fine with the usual mixers, but does not work for the speakers in every version (curiously, ALSA 1.0.11 and 1.0.12rc2 had the reverse behavior: speakers worked fine, but headphones required a small patch). Sound worked out of the box for both speakers and headphones under kernel 2.6.20-rc5, but 2.6.20 through 2.6.23 only gave me headphones -- yet it works fine under Ubuntu.

Note that getting the speakers working is nearly pointless: they are tinny little things you do not really want to hear anyway -- if you want decent sound from this laptop, use headphones!

There is a report for the related CF-R5 that the HDA driver should be set up as a module so it can be unloaded in order to get the machine to sleep and wake up properly; I have not verified the necessity, but my ALSA/HDA subsystem is compiled as modules.

Wireless

Go to the IPW 3945 project page at SourceForge and follow the instructions: it works just fine. Or use the iwlwifi driver. (The Debian unstable distribution now includes all three ipw3945 pieces---daemon, binary, and driver source; and it includes the iwl3945 firmware, while the iwl driver is part of the newer kernels.) In the current setup, the 3945 driver is automatically loaded as a module. However, these drivers do not automatically associate the wireless device with a signal source: if you want an automatic association iwth the ipw3945, you need to add "associate=1" to the module loading request (in /etc/modules).

However (see notes above) ipw3945 is no longer supported and, starting with the later 2.6.24.x kernels, will not compile, so you need to switch to the iwlwifi package, with module iwl3945. This works fine, but see notes above for some of the issues.

By default, the wireless will run all the time and it is a significant power drain. To save power, you need to enable powersaving mode for the 3945 through the iwpriv command:

iwpriv (device name) set_power x
where device is something like eth2 and where x should be between 1 and 5 (from lowest to highest power savings, with corresponding worsening of response times); to turn it off, use a value of 0; to check the setting, use
iwpriv (device name) get_power

PCMCIA

Works out of the box (use the Yenta driver for your new kernel).

There is a report for the related CF-R5 that the PCMCIA driver should be set up as a module so it can be unloaded in order to get the machine to sleep and wake up properly; I have not verified the necessity, but my PCMCIA subsystem is compiled as modules.

SD Card

The latest kernels have a driver for SD cards that works on many platforms. Enable it -- seems to work fine here with an SD card from my camera, but it's not something I anticipate using much, so I did not test it beyond this one proof of concept. In order to use it as much as possible, you need kernelet 2.6.24 or later, which include an explicit configuration to fix a problem with mmc driver for this particular Ricoh chip.

Note that I was unable to get the Toshiba/Palm Bluetooth SDIO card to work. The system notes that a card has been inserted and correctly identifies it, but that's it -- a driver for Linux does not seem to exist.

Modem

Did this just for completeness -- have not used one of those in over 4 years... The sl-modem suite (linmodems.technion.ac.il/packages/smartlink/) works fine; it detects the HDA driver and sets up a device for the modem, loading the slamr module. There is a Debian package for sl-modem, but you should download the source from the URL above, as it is more up-to-date and handles HDA properly.

Final Notes

I have now had this machine since late July 2006 -- two years -- and have used it several hours every day, not to mention travelled about 150'000 miles with it. What that all implies, is several drops from waist level onto the floor, spills of various types on the keyboard, being squeezed in grossly overstuffed carry-ons, etc. Except for a minor dent on the lid (really overstuffed luggage!), it's in perfect shape. It is BY FAR THE BEST combination of portability, durability, screen resolution, and performance I have found so far -- and I've had everything over the last 15 years from 2lbs subnotebooks to 10lbs 17" luggable (not really portable) workstations (the formidable Dell Precision M90, for instance).

I'd advise changing the disk, though: 4200rpm is definitely substandard these days (over 7ms latency); if you have the Y5, you need an ATA drive, so you get a choice of 160GB (max) at 5400 rpm (Seagate, Samsung, Western Digital, latency around 5ms) or 100GB (max) at 7200rpm (Seagate, Hitachi, latency down to 4ms). These disks all draw the same amount of power as the Toshiba delivered with the machine, which is listed at 4.5W start, 2W active, 0.5W idle. (If you have a Y7, you should still change the disk: the Japanese-market SATA disk is also curiously slow; with SATA, however, you have many more choices for replacement, including higher capacities and speeds, than with ATA -- you can get up to a 250GB 7200rpm disk.) I changed to a Western Digital Scorpio 160GB at 5400rpm. Everything works fine, I cannot tell any difference in temperature or battery usage, but disk-intensive operations are now faster (it is variable, of course, but I've seen speedups up to 1/3 faster -- more than the ratio of latency times would suggest, perhaps due to better buffers). Not to mention that I almost doubled my storage space...

In a perfect world, the screen would be 16:9 rather than 4:3 -- i.e., 1680x1050 instead of 1400x1050 -- and the machine would have an NVIDIA graphics subsystem rather than the problematic Intel integrated graphics; I would also prefer a glossy "TrueLife" display to the non-reflective matte display -- glossy displays have much better contrast, even outdoors. A SATA disk would be better (faster and using no more power) than the ATA disk (it is now standard on the new CF-Y7). And it is surprising and somewhat disappointing that the Japanese versions do not have built-in Bluetooth (but note that the US and European versions now available, although usually a couple of generations behind, do have it).

But these are minor quibbles: in today's market, the overall package simply cannot be beat. The only two machines that are vaguely comparable are the Sony Vaio SZ95 (has "real" video card, but slightly heavier, with screen a bit smaller at 13.3" and 1280x800 resolution, and significantly more power drain) and the new Lenovo X300 (slightly lighter, but disk is limited to 64GB solid state and screen is also smaller at 13.3", although with widescreen aspect at 1440x900); but neither one appears to have the robustness of the Panasonic.