Debian on a Thinkpad X61

August 6th, 2008

Yesterday a friend of mine was selling a barely used Thinkpad X61:

Core 2 Duo 2.4 Ghz, 3 GB RAM, SATA 160 GB, 12.1″ 1024×768 screen, Intel GM965 graphics, iwl4965 wireless, fingerprint reader, SD/MMC reader, 3 USB 2.0, Firewire, Bluetooth 2.0, gigabit ethernet, PCMCIA, modem. Weight 1.4 kg


Since the price was at least 30% lower than in a shop and the comp was barely used ( bag still unpacked ) , I swallowed the hook 🙂

Of course, the first thing I did was install Debian testing. The little laptop has no CD/DVD, so I used Unetbootin . After a standard installation ( with one twist: why doesn’t the installer ask whether or not to set system clock to UTC anymore? ) and before doing any hacks, I checked the system for hardware / features working out of the box:

– SMP kernel saw both processors
– all 3GB RAM seen
– no problems with SATA disk
– Intel GM965 was running with correct resolution, but without 3D acceleration
– wireless was not working
– fingerprint reader was not working
– sound was working
– SD/MMC reader was working
– suspend-to-ram was working
– suspend-to-disk was working
– USB ports were working
– Firewire – I didn’t test, but looks like the kernel recognizes it correctly. Should be working.
– Bluetooth (including audio) was working
– ethernet connection was working
– PCMCIA was working
– modem – didn’t check
– extra keyboard buttons that were working: volume up, volume down, ThinkVantage, lock, battery info, suspend-to-ram, switch bluetooth on/off, switch wireless on/off, suspend-to-disk, up/down backlight, switch thinklight on/off
– extra keyboard buttons that were not working: mute
– buttons untested: dock station, external display

1) to correct the issue with no 3D acceleration, I went to /var/log/xorg.log and saw errors trying to open some DRI file. Installed libgl1-mesa-dri ( why wasn’t that package installed automatically? ) and that made 3D work.

2) to make wireless work, I had to download 4965 microcode. Then rmmoding the iwl4965 module and modprobing it back made wireless work ( including WPA2! ) The only glitch is that the LED does not light up when wireless is being used. Patch for this has already been commited to kernel’s git tree, though.

3) to make fingerprint reader work, I had to download thinkfinger from experimental. Followed its documentation and after 10 minutes I had it working.

4) to make the ‘mute’ button work, it turns out one has to boot kernel with parameter ‘acpi_osi=Linux’

5) I also installed compiz, flashplugin and java plugin.

6) Then I got bitten by bug 469396 : on Intel 965 when using compiz one cannot play videos to XV output. I saw it was fixed in unstable so I just decided to upgrade.

Voilla! Except for the little problem with wireless LED (which, I hope, will be solved in the next Debian kernel ) I have a perfectly working laptop.

It was relatively painless, especially compared to my experience (year 2000) with Debian Potato on a Toshiba Satellite 4940 CDS , where it took me 3 months to make sound work.

PS. On www.thinkpads.com people seem to be saying that their X61 draw as low as 7 W of power.

I find that hard to believe – with everything on, mine is drawing about 16.5 W, and with display dimmed, wireless & bluetooth off, PCMCIA & firewire rmmoded, all partitions mounted noatime & nodiratime, compiz switched off – the lowest I have ever seen in Powertop is 10.5 W

6 Responses to “Debian on a Thinkpad X61”

  1. leszek Says:

    Another problem: system time was wrong (8 hours into the future).

    I thought that was because the system thought that hardware clock is set to GMT ( the installer doesn’t ask about that anymore!) . I know how to correct this problem ( set variable ‘UTC’ to ‘no’ in /etc/default/rcS ) But it turns out that UTC was set to ‘no’, and the real problem was a borked ‘rtc’ driver:

    utumno:/home/leszek# hwclock –show
    select() to /dev/rtc to wait for clock tick timed out

    Fortunately it turns out one can make hwclock issue direct ISA commands, and that works:

    utumno:/home/leszek# hwclock –show –directisa
    Thu 03 Apr 2008 01:41:52 AM CST -0.104984 seconds

    Solution: edit /etc/init.d/hwclockfirst.sh and /etc/init.d/hwclock.sh and set ‘HWCLOCKPARS’ to ‘–directisa’

  2. leszek Says:

    I have tested the Fn-F7 button ( switch to external display )

    Status: does not work out of the box, but following the sample Fn-F7 script howto made it work perfectly.

    I can now switch between external display 1400×1050, internal 1024×768, mirrored setup and Xinerama-like setup where laptop’s display is below the external one.

  3. leszek Says:

    Facts:

    1) The laptop draws (with everything turned on and normal usage) about 16W of power. Powertop registers about 230 wakeups a second.

    2) taking extreme measures ( switching wireless & bluetooth off, dimming the screen to the max, switching off compiz, rmmoding PCMCIA & firewire, disabling fan , mounting all partitions with noatime & nodiratime, increasing writeback time on my root partition to 15 seconds, following all other suggestions given by Powertop ) makes this go down to about 11 W ( the lowest momentarily draw I have ever seen was 10.5 W ) Powertop says there are about 65 wakeups per second. ( switching compiz off makes this go down from 230 to 130 but actually does NOT make a big difference in terms of power draw, rmmoding PCMCIA modules makes this go down from 130 to about 70 – isn’t yenta misbehaving? )

    3) booting single-user ( no wireless & bluetooth, screen dimmed, no X ) actually draws about 13 W. Powertop reports only about 10 wakeups per second.

    4) the very same laptop under Windows XP draws about 9.5 -10 W, and with everything set to ‘conserve energy’ mode, screen dimmed etc etc, I’ve seen even 8.11 W

    Conclusion: it’s either Debian ( some Ubuntu users claim they achieve under 10 W ) or Linux power management plainly sucks.

  4. leszek Says:

    The above was with 2.6.24.4. Kernel 2.6.25.3 is a bit better in terms of power management. Seems to draw about 0.5 W less, and wakeups are down to ~50/sec without compiz and ~130/sec with compiz.

  5. leszek Says:

    kernel 2.6.26-8 ( from Debian repositories ) is again a bit better:
    typical usage ( wireless on, Compiz on, bluetooth off, screen brightness to the max ) : 13.5-14 W, about 150 interrupts
    extreme measures ( everything which can be switched off is off ) : 10.5-11 W, about 50 interrupts.

    Actually I don’t see much correlation between number of interrupts per second and power consumption…

  6. Kai Hendry Says:

    10.5W is actually bloody good!

    Btw I recommend not using compwiz and shooting for dwm as your WM instead.

Leave a Reply