Gentoo Linux on a Dell Latitude X300

Submitted by Hannes Schmidt on Thu, 01/20/2005 - 14:42.

I'm currently struggling to get Gentoo to install from a Live CD on a new Dell Lattitude X300. It boots the kernel just fine but the init script can't mount the live CD because it doesn't find the cdrom drive. The X300 comes with a docking station which holds the CD drive which is connected internally via USB.

I haven't figured out why exactly this happens but I'm quite sure it's a timing issue, i.e. a race condition. Using the shell, I checked /dev and surely the drive shows up as /dev/sr0. Obviously it doesn't come up fast enough before some timeout occurs. Anyway, I found a work around which I would like to share with you: at the boot prompt type

gentoo dopcmcia

or, if you don't like the framebuffer graphics mode

gentoo-nofb dopcmcia

Hope this helps.

Screen Flicker

After I rebooted into my freshly compiled kernel, the console video mode was badly chosen by vesafb-tng to the result that the screen flickered like crazy. To fix it I had to reconfigure the VESA driver driver to vesafb instead of vesafb-tng: Device Drivers - Graphics Support - VESA VGA graphics support - vesafb.

Fn-Function Keys for Enable/Disable Radio, Brightness and CRT/LCD

Using 2.6.9 vanilla kernel sources, the Fn-function key combinations did't work. Supposedly this Dell's fault because the ACPI BIOS contains a buggy DSDT. The Fn-keys can be fixed in two ways: a) fixing the buggy DSDT or b) upgrading to kernel sources linux-2.6.10-gentoo-r6. I did the latter but the buggy DSDT caused another problem - an erroneous battery charge status of 0%. So you need to fix the DSDT anyway and if you do that you might not need to switch the kernel. Confused? Just do both!

Battery is reported to be drained (0% charge)

Symptom: The KDE KLaptop utility shows battery present but discharged. The kernel repeatedly complains "ACPI: acpi_ec_space_handler: bit_width should be 8". The fix for that involves

  1. a kernel patch that lets you override the builtin DSDT with a user supplied DSTD,
  2. the source code for the fixed DSDT for the X300 and
  3. a DSDT compiler that translates the DSDT sources into the binary form suitable to the kernel patch.
There are two versions of this patch, one with the DSTD statically compiled into the kernel and another one that loads the DSDT from initrd. I chose the latter as it seemed to be the cleaner solution. In general, you should follow the instructions at this Gentoo ACPI Howto. The DSDT patch can be downloaded from gaugusch.at.

The fixed X300 DSDT can be downloaded from ACPI4Linux but you can also use the alternative method of fixing the DSDT yourself. If your BIOS is newer than A08, this might be the better solution as you might be the first one to fix the DSDT for your BIOS version. The Gentoo Howto tells you how to manually fix the DSDT.

My BIOS revision is A08 and the DSDT only had one flaw. The fix is

3324c3324
< Field (ECR, DWordAcc, Lock, Preserve)
---
> Field (ECR, ByteAcc, Lock, Preserve)

USB Mouse together with builtin Synaptics touchpad

Firstly, to get the touchpad working refer to this great Gentoo Wiki article: HARDWARE Synaptics Touchpad - Gentoo-Portage Wiki

Secondly, to get the USB mouse working follow the well-written HOWTO Second Mouse - Gentoo-Portage Wiki article. One note though: the article mentions that X11_USBMICE_HACK=true only works with 2.4.X kernel. This is not true, it works with 2.6.10 too. X11_USBMICE_HACK makes it possible to plug in the USB mouse while X is running (hotplug, hotplugging). Without the hack you would have to restart X.

For your convenience, I'll reveal the relevant sections of my xorg.conf

Section "ServerLayout"
        ... snip ...
        InputDevice    "Mouse0" "CorePointer"
        InputDevice    "Keyboard0" "CoreKeyboard"
        InputDevice    "Mouse1" "SendCoreEvents"
EndSection

... snip ...

Section "InputDevice"
        Identifier  "Mouse0"
        Driver      "synaptics"
        Option      "Protocol" "auto-dev"
        Option      "Device" "/dev/psaux"
        Option      "LeftEdge"      "1700"
        Option      "RightEdge"     "5300"
        Option      "TopEdge"       "1700"
        Option      "BottomEdge"    "4200"
        Option      "FingerLow"     "25"
        Option      "FingerHigh"    "30"
        Option      "MaxTapTime"    "180"
        Option      "MaxTapMove"    "220"
        Option      "VertScrollDelta" "100"
        Option      "MinSpeed"      "0.06"
        Option      "MaxSpeed"      "0.12"
        Option      "AccelFactor" "0.0010"
        Option      "SHMConfig"     "on"
EndSection

Section "InputDevice"
        Identifier  "Mouse1"
        Driver      "mouse"
        Option      "Protocol" "auto"
        Option      "Device"   "/dev/input/mice"
        Option      "Buttons" "5"
        Option      "ZAxisMapping" "4 5"
EndSection

Wireless LAN (WLAN) Broadcom BCM4309 Dell Truemobile 1450

This is is Dell's optional 54g wireless LAN (WLAN) card. I chose it instead of the default Intel whatever card, because I wanted 802.11g support. Unfortunately, the Dell TrueMobile 1450 uses a Broadcom chip (BCM4309) which is not natively supported by Linux. Furthermore, Linux wireless support in general is extremely confusing. There are many different driver packages, patches, utils and protocol stacks floating around. I'm about to get crazy. I got the card working using ndiswrapper just fine (see below) but things like kismet, airsnort etc. are out of the picture because these need a native driver. The Wireless LAN resources for Linux FAQ should give you an idea of the Linux wireless mess.

What did I do to get the Dell TrueMobile 1450 working? I used ndiswrapper, a very cool kernel module and tools package that lets you use Windows WLAN drivers under Linux. Installation is quite straight forward: First, emerge ndiswrapper. Then download the r90501.exe (if link is broken, try to Google the filename) driver package and extract it (try renaming it to .ZIP instead of .EXE). Follow the instruction from the NdisWrapper wiki (skip the Compile and Install section, emerge took care of that) using the bcmwl5a.inf file from the AR directory of the extracted r90501.exe.

( categories: Unix | Administrator )