The Toshiba dynabook SS SX (mostly the same as the Toshiba Portégé R200) makes a great ultra-portable Linux laptop. It weighs only 1.29kg (2.84lb) with battery and has the latest, as of Spring 2005, hardware including the Intel 915GMS Express chipset and a 1.2GHZ Pentium-M processor. I get about 3 hours of battery life with CPU frequency scaling and 802.11g wireless on, or about 3.5 with wireless off.
This guide was last updated on 2006-07-11 and supports Linux 2.6.17.4.
Linux supports the majority of the hardware on this laptop as-is, but some features require patches to the kernel or to userland programs. Here is my complete kernel configuration. All mentions of Linux aside from the kernel refer to my local installation of Debian unstable.
| Hardware | Supported? |
|---|---|
| Pentium-M 753 CPU | yes |
| Intel 915GMS Express Chipset | yes |
| Intel GMA 900 Graphics | yes |
| AC97 Audio | yes |
| ALPS Touchpad | yes |
| Marvell Yukon Gigabit Ethernet | yes |
| Atheros 802.11B/G Wireless | yes |
| Toshiba Bluetooth | yes |
| ACPI Hotkeys and Suspend | yes |
| Infineon TPM | yes |
| AuthenTec Fingerprint Scanner | no |
| Toshiba SD Card Slot | yes |
The Pentium-M 753 (1.2GHZ) is fully supported by Linux, including CPU frequency scaling and No-Execute protection.
I use the kernel "conservative" governor rather than one of the
available daemons like cpufreqd or powernowd, and this requires
adding the conservative governor to the kernel configuration and
then writing "conservative" to
/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor at
runtime. I added the following line of code in the start case of
/etc/init.d/laptop-mode:
echo -n "conservative" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
The Pentium-M 753 supports the NX bit for marking pages of memory as not executable, thus preventing certain types of buffer overflow attacks. To use this functionality it must be enabled in the BIOS and the kernel must also be configured with 64GB High Memory support. When enabled the following kernel message will be displayed:
NX (Execute Disable) protection: active
Not much to say about the 915GMS Express chipset, it works and the integrated audio and video are covered elsewhere.
The GMA 900 graphics chipset supports both a VGA framebuffer console as well as the various X Windows acceleration features.
To get the VGA console working the following "Graphics support" kernel features must be selected:
The bootloader must also be told to pass the correct option to
the kernel. I added the following vga=0x318 option
to the kopt entry of /boot/grub/menu.lst:
# kopt=root=/dev/hda1 ro vga=0x318
XFree86 4.3.0 does not support the GMA 900 graphics chipset, but
XOrg 6.8.2 does. The xorg.conf must also contain a
Driver directive for the i810 driver.
Here is my xorg.conf which also includes
the touchpad settings.
The following kernel module is also needed:
To get DRI working you will need the following character devices:
The AC97 audio chipset works well with ALSA. However after ALSA
is configured via alsaconf, "Line Jack Sense" and
"Headphone Jack Sense" must be turned off or the internal speaker will
not work. This can be accomplished via alsamixer.
The following Sound related kernel modules are needed for audio support:
The ALPS touchpad does not require any patches with Linux 2.6.14+. When using the xorg-driver-synaptics package, the touchpad supports taps, scrolling, etc.
The Atheros 802.11B/G wireless card is supported by a driver from the madwifi project. The following kernel option is also needed:
Originally the madwifi driver would also cause a complete system lockup when bringing the interface up and down, or some time after waking from sleep. This has been resolved since the BSD->HEAD merge.
Unfortunately the new "madwifi-ng" branch suffers from a loss of connectivity after resuming from suspend. I use the old pre-ng source from CVS, dated 2005-06-23.
The Marvell Yukon Gigabit Ethernet NIC is not supported by the version of the sk98lin driver in Linux 2.6.14. Fortunately an updated version is available from SysKonnect and can either generate a patch for the kernel or be compiled as a module.
The Toshiba Bluetooth adapter is supported by Linux which includes BlueZ, however it is a USB device which must be turned on by a Toshiba ACPI call. Doing so requires this patch which I derived from an older patch, as well as the following kernel module:
I also added the following functions
to /etc/init.d/bluez-util and call them on start
and stop.
enable_toshiba_adapter()
{
echo -n " [toshiba BT = on]"
echo "power: 1" > /proc/acpi/toshiba/bluetooth
echo "attach: 1" > /proc/acpi/toshiba/bluetooth
}
disable_toshiba_adapter()
{
echo -n " [toshiba BT = off]"
echo "attach: 0" > /proc/acpi/toshiba/bluetooth
echo "power: 0" > /proc/acpi/toshiba/bluetooth
}
ACPI sleep (state S3) works by writing to
mem to /sys/power/state. I haven't
tried software suspend since ACPI sleep is
faster.
This patch is my updated
version of the
original patch
to make acpid recognize hotkey events generated by modifying
F1-F12 with the FN key. Doing so allows you to use FN-ESC for
mute, FN-F3 for suspend, etc, just as the keys are labeled.
Acpid must also be configured properly, so I created
/etc/acpi/events/toshiba with the following
content:
event=button/toshiba
action=/etc/acpi/actions/toshiba.sh %e
and /etc/acpi/action/toshiba.sh with:
#! /bin/bash
case "$2" in
0x0101) amixer set Master toggle;;
0x013d) echo mem > /sys/power/state;;
esac
0x0101 is the hotkey code for FN-ESC and 0x013d is the code for FN-F3. You can run acpid in debug mode to see which codes the various keys generate.
The Trusted Platform Module is supported by Linux, which allows you to encrypt and sign files with keys that are protected inside the module's hardware. The following character devices are required:
The SD card slot is supported by Linux as of 2.6.17. The following devices are required:
I believe that is everything!
