N.B. no longer maintained
Seems hardly anyone runs Linux on a Toughbook and then fully documents their efforts; the ones that do their pages seemed to have disappeared into the midsts of time. This page hopes to address that problem. Please bear in mind that my brother is the actual owner of this laptop and as a result I do not readily have access to it which means most of the problems I outline below (such as the ACPI power button) I do not have the time to attempt to resolve them.
These instructions are for a Panasonic Toughbook CF-28 ('CF-28S3QGBDM') running BIOS version 'V3.00L12C'.
N.B. bear in mind that the information here assumes you are familiar with installing Linux on a Laptop and are able to go and use a search engine to find out how to do the trival things (such as configure a US keyboard for X and the console). Listed on this page I have detailed only information that I consider specific to the Toughbook CF-28 that would save you using that tedious process of trial'n'error to work out. Complications that affect all Linux installations are not dealt with here, learn how to use a search engine if you run into them.
As usual this is a Debian install, I did a PXE (network book) installation as my Toughbook originally did not come with a CD drive and floppy disks are a right pain in the butt.
You can follow the instructions on the Debian website regarding PXE booting however you need to be aware that if your DHCP server and TFTP server run on different IP's then you will run into a bug in the PXE boot loader on the laptop. If you do run this type of environment then you will need to temporarily set 'server-identifier' in your '/etc/dhcpd.conf' file to the IP address of yout TFTP server. You must revert this once you have booted as this really breaks the DHCP standard horribly.
Nothing special about the install, the regular Debian 2.6.18 kernel that comes with 'etch' supports everything on the laptop.
Well the real reason to move to 2.6.22 is so you get dynticks support so that you can make full use of the extra power saving features that it provides.
You probably have noticed 'powertop' in there, it is worth installing so that you can find out what is causing your machine to wake up. Alas no matter what I try (I custom compiled a newer kernel to 'force' HPET support) there does not seem to be an HPET in the depths of this laptop and so you have to live with a laptop that wakes up around 40 times a second; still it's not too bad.
When you update the kernel you will need to create a '
' file that contains:
# not supported in the Debian stock kernel (2.6.18, comment out) :( options snd_ac97_codec power_save=1 # otherwise mouse will not work properly options psmouse proto=exps
The 'psmouse' bit is important as without you will find that you loose your mouse without it.
Xorg pretty much works out of the box however I would recommend you tweak your '
' file to contain:
Section "InputDevice" Identifier "Touchpad" Driver "mouse" # for kernel 2.6.18 (if I remember correctly) #Option "Device" "/dev/input/by-path/platform-i8042-serio-0-mouse" # for kernel 2.6.22 Option "Device" "/dev/input/by-path/platform-i8042-serio-1-mouse" Option "Protocol" "ExplorerPS/2" Option "Emulate3Buttons" "true" Option "Emulate3Timeout" "100" Option "ZAxisMapping" "4 5" EndSection Section "Device" Identifier "Intel Corporation 82830 CGC [Chipset Graphics Controller]" Driver "i810" BusID "PCI:0:2:0" Option "NoAccel" "false" # power saving (ACPI C3 CPU state) Option "NoDRI" "true" EndSection
I recommend you avoid loading the 'i915' kernel module as DRI support on this laptop is problematic for two reasons. Firstly when enabled I found that restarting X often failed as the video card could not be re-initialised and only a reboot would fix it. Secondary is a world of tickless kernels this prevents you computer dropping into the ACPI Processor C3 state.
Of course I use my usual:
# Start GRUB global section default 0 timeout 5 fallback 1 color light-gray/blue black/light-gray #password --md5 <md5sum> root (hd0,0) # End GRUB global section title linux # line suitable for 2.6.22 kernel /vmlinuz root=/dev/hda1 console=tty6 lapic ro # use the following line if you are using 2.6.18 instead #kernel /vmlinuz root=/dev/hda1 console=tty6 lapic pci=assign-busses ro initrd /initrd.img
If you do opt to keep with kernel 2.6.18 then you will need to add to your kernel boot parameters '
' other your PCMCIA slot will not see PCMCIA cards being inserted or removed from the machine.
Okay straight off the bat, these things do not work:
Power Button:: Damn this is annoying. Although my power button is detected (both CM and FF types) no matter what I do or try they refuse to generate any events. I originally thought this was a case of FF type overriding CM button type however it looks like back in kernel 2.6.13 a patch was applied that resolved this issue. I'm guessing there is something wrong in the DSDT however do not have the time to debug the thing; mainly due to the lack of access to the laptop.
Suspend to RAM:: The laptop is unknown to the s2ram tool so I followed the instructions on what to do when a laptop is not in the whitelist. Tedious work and all for nothing. I even tried a few tests with uswsusp version 0.8 (as Debian 'etch' only comes with version 0.3). :: This is more annoying than the power button, at least you can work around the power button issue by typing in 'halt'.
What does work however is hibernation, cpufreq scaling (with the 'acpi-cpufreq' driver), the hotswap media bay, the lid switch, the Panasonic Hotkeys, battery and AC status.
All you need to do is to eject an IDE device (the IO warning is harmless)
toughbook:~# hotswap unregister-ide I/O warning : failed to load external entity "/etc/hotswaprc" toughbook:~# echo 1 > /sys/devices/platform/bay.0/eject
To register an IDE device
toughbook:~# hotswap rescan-ide
One point worth bearing in mind. No matter what I have tried, if your floppy drive is not plugged in when you boot you will not be able to swap it back in. The kernel 'floppy' module keeps complaining that it cannot find the floppy controller. As I only have a CD-RW/DVD and floppy modules, the whole hotswap thing is a waste of time for me; if you however have a second IDE device you probably will find the above useful. This is strange as according to the notes in the hotswap manpage the floppy controller should always be present.
The brightness, mute and change video output(?) buttons are handled by the BIOS (non-cause ACPI events) however the screen overlay gets upset during the Linux bootup sequence (I have not worked out what does it, however it is not X) and the temporary cursor replacement is corrupted. This means the rather nice icons it uses and of course the battery level meter are effectively non-functional.
All that can be done is you try to add the needed functionality via the acpid daemon and it's event driven scripts.
$ cat /etc/acpid/events/panasonic-hkey event=pcc[ /]HKEY action=/etc/acpi/panasonic-hkey.sh %e $ cat /etc/acpid/panasonic-hkey.sh #!/bin/sh if [ "x$3" == x00000080 ]; then # volume down (Fn-F5) if [ "x$4" == x00000005 ]; then amixer -q set Master 5%- exit 0 fi # volume up (Fn-F6) if [ "x$4" == x00000006 ]; then amixer -q set Master 5%+ exit 0 fi # does not work! # # suspend to mem (Fn-F7) # if [ "x$4" == x00000007 ]; then # /usr/sbin/s2mem # exit 0 # fi # suspend to disk (Fn-F10) if [ "x$4" == x0000000a ]; then /usr/sbin/s2disk exit 0 fi fi exit 0
The modem is a soft-modem, 'Conexant HCF 56k Data/Fax/Voice/Spkp Modem (rev 08)'. Fortunately using the Linuxant HCF (controllerless) driver it fires up into life with no problems. When you go to download the driver make sure you get the Debian DPKG package from the 'Generic packages with source' section of the site. This installs painlessly under both 2.6.18 and 2.6.22. Thumbs up to Linuxant.
The only problem with the driver is that it polls at 250Hz when when idling, so to make use of a tickless kernel you should only load the modem driver when you actually need it. I emailed Linuxant who came back with a same-day reply:
As for CONFIG_NO_HZ, we are aware that the HCF and HSF drivers do a lot of wakeups which are not always necessary. We are also very well aware that these unnecessary wakeups do have a negative impact on battery life as well. We did investigate the problem and it would be difficult to solve considering the fact that these wakeups are generated by the Conexant code that is vital to the whole driver. It doesn't mean that it won't be improved in the future, but there is no plan of doing so in the near future.
Not a show stopper but a shame. The solution is to just add the following to your pppd options file (untested, but you get the idea). To connect:
# /etc/init.d/hcfpci start
N.B. the Debian package for the Linuxant driver automatically configures it's-self to load in runlevel 2. I recommend you delete '`/etc/rc2.d/S09hcfpci`' and load the module on-demand via pppd.