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
Type | Details | Notes |
---|---|---|
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 | 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:
- The toshiba-acpi kernel module creates a subdirectory in /proc which allows
to set the LCD backlight intensity, the video output (LCD or external), function keys
and some other stuff simply by echoing values into certain files.
There is a tool named fnfxd (you get it with apt-get) describing itself as "ACPI and hotkey daemon for Toshiba laptops" - it does the echoing for you if you press a Fn-Key combo. - The tosh tools. This seems to be the old way to deal with things. tosh complains about ACPI been active and recommends to use APM. I haven't played with it as much as I did with toshiba-acpi ...
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: 1If 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:0000You 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 statsI 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. # #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.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
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
- Connect the external Display before powering on
- Change the following in /etc/X11/XF86Config-4
HorizSync 28-70 VertRefresh 43-85
andModes "1280x768" "1280x1024" "800x600" "640x480"
This works for me with an LCDisplay an a colordepth of 16 bit.
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 supportedI 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.rulesand reboot. udev complains loudly if you just try to /etc/init.d/udev restart.
Experiences:
- Seeing what your camera is watching at: dvgrab - | mplayer - - there is a latency of roughly one second. kino is a bit better in that.
- I tried to stream the frames of the camera with dvgrab and ffmpeg2theora, but my setup is to cpu-intensive, it cannot encode as fast as the camera is sending frames. But this is not the end, there is a mmx-version which I haven't tried so far.
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 sdhciin 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 mmcblk0p1This says, that you have a MMC/SD card with one partition (mmcblk0p1) - mount this with the usual
# mount /dev/mmcblk0p1 /mntor any other place of your choice. Enjoy.
Author
Malte Meiboom (mm (at) netropol (dot) de)Legal mumbo jumbo
I mean it.
Thought: The stuff works for me ... so it's remotely possible that it works for you too.