The new laptop odyssey

2009.02.19 17:34 by Leo Antunes - 0 Comment

Posting because I need to document this somewhere for future reference and – who knows – I might even help someone out there.

Being the cheap bastard that I am, I found a nice bargain some weeks ago for a Toshiba Satellite L300 21C and decided to take it instead of going for the slightly more expensive, slightly less equipped and overall just geek-friendlier Thinkpad*.

The L300 21C (“lshal | grep system.hardware.version” reports ‘PSLB8E-0H301VGR’) packs 4G of ram (2x 2G), a 250G SATA disk, an Intel 4500MHD card (which I specifically sought for the supposed good Linux support) and an Atheros AR242x wireless card.
It’s nothing special, but it performs decently enough.

I obviously wanted to install Debian on it before even turning it on and seeing the face of the operating system that came preinstalled, but at the time I bought it Lenny hadn’t been released yet, so I grabbed the RC2 images. Since the differences between RC2 and Lenny are probably negligible, this post should apply to Lenny as well.

The first thing that got my attention was that the wireless doesn’t work with the ath5k module from 2.6.26 – shipped with Lenny, so I could either upgrade my kernel to 2.6.28 or install the MadWifi modules.
The next problem helped decide the solution for the first one: suspend wasn’t working and it turns out it was a combination of the EXA AccelMethod not playing well with the intel driver and the Hal quirks database having an entry for the Satellite L30 which matches too broadly and introduces the wrong quirks for the L300’s suspend.

For the EXA part, upgrading to and the intel driver to 2.6.1 (currently in experimental) and changing the AccelMethod to UXA was the only option. This in turn meant upgrading the kernel to 2.6.28 because of the GEM support needed by UXA, thus also solving the first problem with the wireless card.

The Hal part was solved by adding the following quirks to Hal’s FDI database (/etc/hal/fdi/information/, in Debian’s case):

< ?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
    <match key="system.hardware.vendor" string="TOSHIBA">
      </match><match key="system.hardware.product" string="Satellite L300">
        <merge key="power_management.quirk.s3_bios" type="bool">false</merge> <!-- wrongly added by L30 rule -->
        <merge key="power_management.quirk.s3_mode" type="bool">false</merge> <!-- wrongly added by L30 rule -->
        <merge key="power_management.quirk.vbestate_restore" type="bool">true</merge>

After that, suspend to memory worked like a charm.

I haven’t really tested suspend to disk, since I’m using home+swap inside encrypted LVM, but I may check it out a bit later. For now suspend to memory is all I needed.

The laptop still has the following unsolved problems:

The screen sucks, even for a laptop. It looks blueish, blows the white areas’ brightness – regardless of gamma setting – and has a terrible contrast ratio which I still couldn’t go around. I tried xcalib and changing’s gamma settings, to no avail. Next desperate step will be fiddling with compiz’s color filter, since the intel driver AFAIK doesn’t have a color correction interface.
I’m still not sure if this is a driver issue or a monitor issue, since the proprietary operating system that came preinstalled also showed most of these issues (I installed it again just to make this test).

Making the screen problems a bit worse, UXA still has some problematic interactions with compiz that mess with some opacity operations. I expect this should be fixed in a future release of, perhaps when the UXA work gets merged back into EXA.

But the biggest problem I’ve encountered so far is with the fan. Apparently the fan’s thermal control is borked and after reaching a certain temperature the fan kicks to full power and doesn’t slow down until either shutting the laptop down or suspending it. This could be an ACPI bug, but I suspect otherwise because disabling ACPI on boot-time (acpi=ht) doesn’t have any effect. I’ve even tried following the advices on the ACPI site to debug this problem and I’m running 2.6.29-RC5 to make sure this hasn’t been solved already, but still haven’t gotten anything useful out of it. (I also ran into this problem with 2.6.26 and 2.6.28)
My best (but still not very good) guess would be that the BIOS in the laptop (Insyde H2) has some proprietary non-ACPI way of fine-tuning the fan speed, probably off-loading the task to a driver, which nobody has implemented for Linux yet. Might be a nice little project, if I had the slightest idea where to start, but unfortunately I have zero experience reverse engineering BIOS code…

In summary I’d suggest that anyone wanting to buy this laptop don’t be an idiot like I was and just research a little bit more. It’s not a bad machine, for the price, but it still has these nagging problems that spoil the feeling of running a nicely configured system and specially this last fan problem is potentially a show stopper.

* So geek friendly, in fact, that I felt completely out of place at FOSDEM. Like the only kid with the wrong toy.

UPDATE: pseudo-solution found here.