Linux on a Toshiba Libretto U100

This page is about installing and using Debian/GNU Linux sarge on a Toshiba(R) U100 subnotebook. It is work in progress, as I will continue to use it i will update this page with the latest findings.

27.10.2006: After a longer period of silence here some new stuff.
10.3.2006: More about BIOS and booting.
2.3.2006: Some news about MMC/SD and ieee1394.
6.1.2006: Some news about video.

Hardware

Info taken from lspci,hdparm and /proc/cpuinfo
TypeDetailsNotes
CPU Intel(R) Pentium(R) M processor 1.20GHz. From model and stepping it's fair to guess that it's a Pentium-M Sonoma (3rd generation). Well it works - obviously.
Speedstepping works also, althought it might need a bit of tuning. The U100 features "Enhanced Intel SpeedStep(R)" - use the speedstep-centrino module.
Video Intel(R) Corp. 82852/855GM (rev 02), bringing 1280x768 pixels on the internal LCD to glow. To use this, you need a special mode-line for your XF86Config/xorg.conf - see below. The U100 features a plug to connect an external Monitor/LCD via a custom cable. This currently does not work very well, I only get 800x600, it's a problem with the modelines. Did not put to much effort into this either ... (6.1.2006: Update - see below)

The videomemory is taken from the main memory. I don't know yet if there is any hardware acceleration with a X11/xorg driver.
Sound Intel(R) Corp.82801BD/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 03) Works great, both playback and recording. I am using the ALSA modules - snd_intel8x0 does the trick.
Harddisk 60GB TOSHIBA(R) MK6006GAH The kernel which comes with Debian/sarge (2.6.8) addresses the harddisk with udma5 per default. Note that there is a hidden partition of some 256MB, which I could not access yet. There is also an issue with the MBR/bootloading - see below.

Note: The U100 has this funny hdd protection thingy (actually some kind of motion sensor).
PCMCIA Some Texas Instrument(R) Chip My kernel (2.6.8+the Debian patches) says 'Unknown device 8031'. The TI-Chip works with the yenta modules without any problems.
Firewire Some Texas Instrument(R) Chip Again the kernel says 'Unknown device' but this time it's 8032. The driver ohci1394 loads without complaining, but I haven't tested it yet. Update (3.2.2006): I did test it - works great see below.
WLAN Atheros Communications, Inc. AR5212 802.11abg NIC (rev 01) It works with a kernel patch. ath_pci is needed here. I haven't used it much - the module sometimes segfaults while loading, I haven't made out a pattern yet. If it's loaded however it's stable.

Note: There is no socket to plug an external antenna.
USB Intel(R) Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller and Intel(R) Corp. 82801DB/DBL/DBM (ICH4/ICH4-M) USB2.0 EHCI Controller USB1.1 and USB2.0 both work out of the box. Note that the U100 has 2 USB ports - useful for mouse and keyboard (and no hub needed).
Fingerprint scanner Some AuthenTec(R) device It's connected internally via USB. Haven't played with it yet.
Modem Intel(R) Corp.82801BD/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller Some soft-modem device. I haven't used it yet
SD-Card-Reader Some TI-Chip Does not work with Linux, will not work with Linux - until Texas Instruments releases the firmware unencrypted. The chip needs the firmware uploaded while starting, the driver decrypts the firmware file before uploading. Spreading the unencrypted firmware or some decryption code will most likely put the TI-Lawyers on your doormat.

Update (3.2.2006): Obviously some people at mmc.drzeus.cx did some reengineering. See below. Thanks to Scott Gilliland for giving the hint.

BlueTooth The hardware seems to work, but needs some patching to get it running. I'm currently trying to get the userspace stuff working. See BlueTooth section.
Ethernet Intel(R) Corp. 82801BD PRO/100VE Works out of the box
Serial There is no serial device Thats a pity, it's very useful for an additional console
Infrared There is no infrared device

BIOS/ACPI

The U100 comes with a "special" BIOS which gives you no configuration interface. All you can do is select the device you want to boot from (holding F12 while powering on). This means than there is no OS independent way to configure your hardware at a basic level. The first thing I did with my U100 was to put in the Debian install CD ...

Update: Hold ESCAPE while powering on and you will be requested to press F1. This brings you to the BIOS config-page. Thanks to Tony Oresteen for this hint - it looks like an undocumented feature.

There are however ways to configure the hardware with Linux: I installed acpid. In it's default config it recognizes the power-button and calls shutdown -h. Other (not configured) events are the lid-button and low-battery warning.

BlueTooth

The BlueTooth hardware is connected to the USBus and is off when the machine boots. The toshiba_acpi module (2.6.14.2) gives no possibility to switch it on. You need to apply a patch from http://www.sfires.net/toshiba/. Sadly it's for 2.6.11.7 and doesn't apply cleanly to a 2.6.14.2 kernel - so I patched it by hand. You can find the patched file here, note: It's the patched file not a diff. To use it just copy it over toshiba_acpi.c found in .../drivers/acpi/ and recompile and install your kernel or your modules. (Update: This procedure works also with kernel 2.6.19)

To activate your BlueTooth hardware:
# echo "power: 1" > /proc/acpi/toshiba/bluetooth
# cat /proc/acpi/toshiba/bluetooth
present:                  1
power:                    1
attach:                   0
wireless:                 1
If power is still on 0 you forgot to switch on the wireless switch found at the side of the u100. It's for both, WLAN and BlueTooth. Then attach the device to the USBus:
# echo "attach: 1" > /proc/acpi/toshiba/bluetooth
# lsusb
Bus 004 Device 001: ID 0000:0000
Bus 003 Device 004: ID 0930:0508 Toshiba Corp.
Bus 003 Device 003: ID 046d:c03d Logitech, Inc.
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 003: ID 08ff:2580 AuthenTec, Inc.
Bus 001 Device 001: ID 0000:0000
You can see the BlueTooth device at Bus 003 Device 004. The other stuff is a USB-mouse and the fingerprint scanner.

Note: The CD/DVD burner from the docking station is also connected via USB but has a different ID:
Bus 004 Device 003: ID 0930:1200 Toshiba Corp.
This is the burner.

Powersaving

Well, this is a wide field.

Speedstep: Load the modules speedstep-centrino, you also need a 'governor'. If you don't want to use the 'userspace' governor you have to load the needed modules as well. speedstep-centrino needs /sys which Debian activates by default. In /sys you find all the neccessary things:
malte@kiste:~$ ls -l /sys/devices/system/cpu/cpu0/cpufreq/
total 0
-r--r--r--  1 root root 4096 2005-11-25 18:15 affected_cpus
-r--------  1 root root 4096 2005-11-25 18:15 cpuinfo_cur_freq
-r--r--r--  1 root root 4096 2005-11-25 18:15 cpuinfo_max_freq
-r--r--r--  1 root root 4096 2005-11-25 18:15 cpuinfo_min_freq
-r--r--r--  1 root root 4096 2005-11-25 18:15 scaling_available_frequencies
-r--r--r--  1 root root 4096 2005-11-25 18:15 scaling_available_governors
-r--r--r--  1 root root 4096 2005-11-25 18:15 scaling_cur_freq
-r--r--r--  1 root root 4096 2005-11-25 18:15 scaling_driver
-rw-r--r--  1 root root    0 2005-11-25 18:15 scaling_governor
-rw-r--r--  1 root root    0 2005-11-25 18:15 scaling_max_freq
-rw-r--r--  1 root root    0 2005-11-25 18:15 scaling_min_freq
drwxr-xr-x  2 root root    0 2005-11-25 18:15 stats
I installed cpufreqd and gnome-cpufreq-applet, but this needs some finetuning: The applet refuses to reduce the freqency below 1Ghz when on AC. You can go as low as 600Mhz - with the advantage, that the fan will not be necessary ... an almost completly silent PC.

Harddisk: I installed noflushd to reduce access to the harddisk. Another trick is to set noatime for your mount options. Without noatime every read access to your harddisk will also create a write access to note the access time. This however can have side effects if you use software which depends on the access time. Here my fstab:
# /etc/fstab: static file system information.
#
#                
proc            /proc           proc    defaults        0       0
/dev/hda1       /               ext3    defaults,errors=remount-ro,noatime 0       1
/dev/hda3       /usr            ext3    defaults,noatime        0       2
/dev/hda4       /var            ext3    defaults,noatime        0       2
#/dev/hda2       none            swap    sw              0       0
/dev/scd0       /media/cdrom0   iso9660 ro,user,noauto  0       0
tmpfs           /tmp            tmpfs   defaults,noatime 0      2
Note: I disabled the swap partition, because I use a selfmade crypto-swap and need the space for it. I also use tmpfs for /tmp to reduce access to the harddisk.

Backlight: Reducing the intensity of the LCD-backlight will also save energy.

MBR/Bootloader/HDD

There is a 'host protected area' at the harddrive. I dont know what this is for - it's smaller than the physical RAM, so it's probably not for a 'suspend to disk' type of thing. I cannot access this space - the kernel sees it, but fdisk not, so it's probably no hidden partition. If it contains some kind of rescue system, there is no hint on how to activate it. This is what dmesg says about it:
hda: Host Protected Area detected.
        current capacity is 116680095 sectors (59740 MB)
	native  capacity is 117210240 sectors (60011 MB)
hda: 116680095 sectors (59740 MB), CHS=16383/255/63, UDMA(100)
This might also caused the problem I ran into when installing Debian: The GRUB bootloader does not work, you have to use LILO instead. This however means, that you have to choose expert26 at the boot prompt of the install CD (otherwise you will stick to GRUB and an unbootable system). The symptom is a kernel boot which doesn't find it's root device ..

Video

Due to it's unusual screen resolution of 1280x768 the preconfigured modelines will not be optimal. X will start but will use some 800x600 on the screen (the hardware then interpolates this so that it fits on the screen).

Configuring XFree86 4.3.0, add the following line to the Section "Monitor":
Modeline "1280x768" 80.14 1280 1344 1480 1680 768 769 772 795
Then in Section "Screen" add the Mode to your SubSection "Display"
Modes "1280x768" "800x600" "640x480"
Configuring the framebuffer, configure LILO to use
vga=865
06.01.2006: Update Somehow the echoing into /proc/acpi/toshiba/video does not work anymore - maybe I broke it with my bluetooth-patch. However, the external video works in 1280x1024 if you Here my complete XF86Config-4 - use at own risk...

Kernel

I compiled kernel 2.6.14.2, it works without flaws. 2.6.14 has a lot improvements in the wireless section but does still not have the driver for the Atheros chip. My new kernel complains about the 'host protected area' on the harddisk, but with no consequences.
hda: Host Protected Area detected.
        current capacity is 116680095 sectors (59740 MB)
        native  capacity is 117210240 sectors (60011 MB)
hda: task_no_data_intr: status=0x51 { DriveReady SeekComplete Error }
hda: task_no_data_intr: error=0x04 { DriveStatusError }
ide: failed opcode was: 0x37
hda: 116680095 sectors (59740 MB), CHS=16383/255/63, UDMA(100)
hda: cache flushes supported
I found a Mail from Jens Axboe in the Linux-Kernel-mailinglist which explains this as an attempt to read out and calculate the size of the useable part of the disk, using the wrong methods. It seems that this is just a cosmetic problem.

Wireless LAN

For the Atheros chip you need to install the madwifi-drivers, available at madwifi.org. A simple make, make install worked with me. I did not look too close into it, but possibly you need to have /usr/src/linux point to the source of your current kernel. Yes, you need the source of your kernel and it has to be configured (building is not needed).

IEEE1394 (FireWire)

I tested firewire with a CD-Burner and a DV-Cam. The hotplug mechanism loaded all the relevant kernel-modules, so there was not much to do. udev however did not create the nesseccary nodes in /dev - so create a file ieee1394.rules in /etc/udev with the following lines:
KERNEL="raw1394", NAME="%k", GROUP="video"
KERNEL="dv1394*", NAME="dv1394/%n", GROUP="video"
KERNEL="video1394*", NAME="video1394/%n", GROUP="video"
then create a symbolic link
# cd /etc/udev/rules.d
# ln -s ../ieee1394.rules 010_ieee1394.rules
and reboot. udev complains loudly if you just try to /etc/init.d/udev restart.

Experiences:

MMC/SD

I downloaded the patches from http://mmc.drzeus.cx/wiki/Linux/Drivers/sdhci. They apply cleanly to the 2.6.14.2 kernel. Select the following in make menuconfig (or whatever your favorite way of configuring your kernel is):
Device Drivers -> MMC/SD Card support -> MMC support (M)
Device Drivers -> MMC/SD Card support -> \
	MMC block device driver (M)
Device Drivers -> MMC/SD Card support -> \
	Secure Digital Host Controller Interface support (M)

# I am unsure if you need the following - the U100 has a Texas Instruments chip

Device Drivers -> MMC/SD Card support -> \
	Winbond W83L51xD SD/MMC Card Interface support (M)
I also added the following to /etc/modules (I found a mail in the mailing list of sdhci mentioning that):
mmc_block
sdhci
in that order. Please note that the corresponding nodes in /dev are only created, if you insert a MMC/SD card.
# ls -l /dev | grep mmc
brw-rw----  1 root disk    253,   0 Mar  2 23:41 mmcblk0
brw-rw----  1 root disk    253,   1 Mar  2 23:42 mmcblk0p1
This says, that you have a MMC/SD card with one partition (mmcblk0p1) - mount this with the usual
# mount /dev/mmcblk0p1 /mnt
or any other place of your choice. Enjoy.

Author

Malte Meiboom (mm (at) netropol (dot) de)

Legal mumbo jumbo

  • I might have made mistakes while writing this page. Use your head before trying anything! I am not responsible for any damage to your hardware, software or mental health.

    I mean it.

    Thought: The stuff works for me ... so it's remotely possible that it works for you too.
  • All the trademarks belong to their owners

  • back