Debian GNU/Linux on the Dell Latitude X300

X300 image
by Pedro Diaz

Warning: The information on this page is becoming quite outdated. Last update was in October 2005, and a lot of kernel and distro versions have passed since. I am maintaining this page due to the number of hits it gets. Since May 2008 I swicthed to a Macbook pro and no longer use the X300 (it was a good laptop though).

The Dell X300 is an Ultra-lightweight laptop. It is a great laptop, but installing and configuring Linux on it could be a little tricky. I hope this page helps you installing Linux on it.

Here is a small summary of what features you should expect to get working with Linux:

FeatureSupported?Notes
Intel 855GM videocard / XFree YesWorks flawlessly. A recent XFree86 is needed (4.3)
ACPI and powersaving features YesKernels ≤ 2.6.8.1 need some patching
Integrated network controller (Broadcom NetXtreme BCM5705M)YesWorks flawlessly
Sound card (Intel 82801DB/DBL/DBM)YesWorks flawlessly. (update 2005-10-31 mediabase audio)
USB 1/2 & Firewire YesWork flawlessly
Wireless Networking (Intel Pro 2200)Yes Works flawlessly. Might need to recompile the wireless-tools
External (MediaBay and MediaBase) DVD/CD burner YesWorks flawlessly
MediaBase dockingYes Haven't researched yet how to undock when the laptop is on
Volume keysYes
Synaptics TouchpadYesAdvanced features (like tap-to-click) supported
BluetoothYes Works flawlessly
SD card readerNot likelyHaven't tried yet, but from what I read looks like there isn't Linux support for it
ModemYesHaven't tried yet, but others have done it

The Laptop

I ordered my X300 the last week of August, 2004. The laptop came a few weeks later. Here are the more relevant specs: The laptop came with Windows XP (home edition) installed. The hard disk was partitioned the following way:

Partitioning

I wanted to keep a usable Windows XP installation just in case I needed to run some windows-only software. I wasn't sure about the purpose on this life of the Dell utility partition, but anyways I left it untouched. Of course, I also wanted to install Linux, which would use most of the disk space. I tried several resizing and rescue distribution without any luck. The main problem is that the laptop lacks an IDE CDROM drive (the one at the media base shows as an USB-storage drive). All the distros I tried needed to uncompress the root filesystem from the CD and because none of them detected the USB storage drive they were unusable for me. After several failed attempts I realized I had a copy of Partition Magic around, and used it. Usage is straightforward, and the repartitioning went without problems. There are some opensource alternatives that have been reported to work (very well) for resizing an NTFS partition. Take a look at NTFSresize. If you had good luck using any open source software for repartitioning on this laptop please contact me After repartitioning my hard disk looks like this:
Disk /dev/hda: 60.0 GB, 60011642880 bytes
255 heads, 63 sectors/track, 7296 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
   /dev/hda1               1           7       56196   de  Dell Utility
   /dev/hda2   *           8        1154     9213277+   7  HPFS/NTFS
   /dev/hda3            1155        2978    14651280   83  Linux
   /dev/hda4            2979        7296    34684335    f  W95 Ext'd (LBA)
   /dev/hda5            2979        7233    34178256   83  Linux
   /dev/hda6            7234        7296      506016   82  Linux swap

Installing Linux

The distribution I like the most is Debian. I installed debian/testing (sarge) from a burned CD. I didn't need to do any fancy things, the instalation just worked. It detected the USB-storage drive without any problems as well as the integrated network card (Broadcom), so I had everything needed to install the base system and some initial packages. I downloaded the ISO image of the first Sarge CD using Jigdo and the packages available at debian mirrors. Take a look here for more information. Unless your Internet connection is lightning fast, you'll probably only want to download the first CD.

Configuring

If you reached this point then you should have at least a bootable Linux system on the laptop. Here are some tips for configuring some aspects of the laptop.

XFree

X is one of the easiest things to configure on this laptop. You can start with doing X -configure as root. This will (hopefuly) generate a config file almost ready to use. You might need to edit it in order to customize things like mouse type. Copy it to the appropiate directory (varies on each distro, but it is usually /etc/X11) and you are ready to go!. For reference, here is my XF86Config-4 file, without the Synaptics touchpad features. Here is another one, with Synaptics touchpad support. The first one will enable a barebones touchpad (just moving the cursor and nothing else), the second one enables some extra features of the touchpad (like tap-to-click) and requires some extra software (see below, on the hardware section).

About the external VGA output

You may have noticed that the function key for enabling the external VGA output (Fn-F8) doesn't work in Linux. The program i855crt can be used to switch the external VGA on or off (although I still haven't tried it myself). Another option is to force an external VGA output (and switch off the laptop's LCD) with one of the following methods:

Configuring ACPI on ≥ 2.6.9 kernels

I recommend you to run a 2.6.x kernel on this laptop. You'll get better support for most of the hardware and some of the patches you'll need to apply are 2.6.x only. So grab your copy from one of the mirrors of Kernel.org!. Starting from kernel 2.6.9, support for custom ACPI DSDTs has been added. Don't worry, you don't need to know exactly what this means; it will suffice to know that that this makes the process of configuring ACPI on this laptop easier. If, for some reason, you are still running a 2.6.8.1 (or lower) kernel, read my old instructions for ≤ 2.6.8.1 kernels Here is my .config file for the 2.6.9 kernel and here is the one for a 2.6.10 kernel. It should be a good starting point for configuring your kernel. Chances are that ACPI won't work on your X300 at the first try. This is because the laptop's DSDT (Differentiated System Description Table) is buggy and broken. Anyways you should try to run a vainilla kernel and see if it works before continuing reading. If it does, contact me please!. The good news are that you can make ACPI to work on this laptop. It is good news because the X300 doesn't support APM . The proccess is somewhat long but not difficult, just follow these steps:
  1. Reboot and enter the BIOS. Look for the BIOS version (it's written on one of the corners of the screen). Boot Linux again.
  2. Download the appropiate DSDT (remember your BIOS version!) from here
  3. Get the IASL compiler from Intel. Download the "Unix build environment". Building is straightforward (just type make in the compiler directory. You will need flex and bison, both available on almost all distributions.
    If you are using Debian testing (sarge) remove the flex package and install flex-old instead. You might need to issue a make clean in order to generate new .c files. For other distributions: flex 2.5.31-27 doesn't seem to work. flex 2.5.4a-6 works for compiling IASL

    Update:Some people are having trouble compiling the IASL compiler. You can download the a precompiled binary from here
  4. The DSDT you have downloaded is customized for 640MB of RAM. If you have a distinct ammount of RAM you should edit it. Look for the string SystemMemory. Unfortunately I have no experience on doing this, but Alvaro del Castillo has sent me an email with some instructions: read it here. Alvaro has more information about the DSDT mess (only in spanish) on his blog
  5. Compile the DSDT sources:
    /path/to/iasl -tc Dell-Latitude_X300-AXX-custom.asl
    This will create the file Dell-Latitude_X300-AXX-custom.hex, being XX your BIOS version.
  6. Copy the compiled DSDT to the kernel tree:
    # cp Dell-Latitude_X300-AXX-custom.hex /usr/src/linux-2.6.9/my-dsdt.hex
  7. When configuring your kernel, enable the custom DSDT option (under Power management options, ACPI). Specify the path of the previously compiled file (/usr/src/linux-2.6.9/my-dsdt.hex) as the path to the custom DSDT
    If you have trouble finding this option in the kernel configuration (do you use debian and apt-getted the kernel sources?) menu read this email from Silas Barnes. You can download also his kernel configuration file (2.6.9) and his compiled DSDT
  8. Compile the kernel, modify your Grub/Lilo config files and reboot!
If everything went OK you should see something like this:
...
ACPI: Subsystem revision 20040326
ACPI-0291: *** Info: Table [DSDT] replaced by host OS
ACPI: IRQ9 SCI: Edge set to Level Trigger.
ACPI: Interpreter enabled
ACPI: Using PIC for interrupt routing
ACPI: PCI Root Bridge [PCI0] (00:00)
...
...
ACPI: Battery Slot [BAT1] (battery present)
ACPI: Battery Slot [BAT2] (battery absent)
ACPI: AC Adapter [ADP1] (on-line)
ACPI: Power Button (FF) [PWRF]
ACPI: Lid Switch [LID0]
ACPI: Sleep Button (CM) [SLPB]
ACPI: Fan [FAN0] (on)
ACPI: Thermal Zone [THRM] (32 C)
...
Install, if you haven't done yet, the ACPI utillities (packages acpi and acpid on Debian). If ACPI support is present, you should be able to query the general status:
# acpi -V
     Battery 1: charged, 100%
     Thermal 1: ok, 49.0 degrees C
  AC Adapter 1: on-line
#
You can also play with the throtling and frequency changing capabilities of the Centrino. Take a look at the files at /proc/acpi/processor/CPU0/. The ACPI project at Sourceforge has more information
For some reason, echo 5 > /proc/acpi/processor/CPU0/performance (for example) only works when I do it twice. If you know why this happens drop me an email

Hardware support

Integrated NIC

My X300 has a Broadcom Corporation NetXtreme BCM5705M Gigabit Ethernet integrated NIC. It works flawlessly under Linux (kernel 2.6.x). All you have to do is enable the driver in the kernel configuration:
<*> Broadcom Tigon3 support
under Device Drivers, Networking support, Ethernet (1000 Mbit)

Sound

The X300 comes with an Intel 82801DB/DBL/DBM sound chipset, which is supported in the kernel. To use the OSS driver select:
<*> Intel ICH (i8xx) audio support
under Device Drivers, Sound, Sound Card support, Open Sound System I haven't tried the ALSA driver yet (OSS works for me), but maybe you might want to since OSS is being deprecated. Reports on using the ALSA driver will be appreciated. Update:Seems that ALSA also works fine. Francois Mescam (Francois [_AT_] mescam [_D.O.T_] org) sent me the following report about it (mbox format, email addresses deleted). Thanks Francois!

UPDATE (2005-10-31): MEDIABASE SOUND


Apparently it is possible to use the sound output of the x300 mediabase. Read this email from Heinz Deinhart for more information. I haven't tried it yet
Thanks Heinz!

I'm still interesting in hearing from other's experiencies with the mediabase sound output. Drop me an email! if you manage to get it working.

The OSS sound driver provides three mixer channels for controlling the volume: "Volume", "PCM1" and "PCM2". The "Volume" setting only affects the internal speakers of the laptop. "PCM2" only controls the headphones volume. "PCM1" affects both the internal speakers and the headphones volume.

USB & Firewire

USB and Firewire ports are supported perfectly under Linux. Configure in your kernel with UHCI HCD (CONFIG_USB_UHCI_HCD) for USB 1.x, EHCI HCD (CONFIG_USB_EHCI_HCD) for USB 2.0 and OHCI-1394 (CONFIG_IEEE1394_OHCI1394) for Firewire.

Intel Pro Wireless 2200

When I ordered my X300 there were several options regarding the wireless subsystem. I choosed the Intel Pro 2200 one, because of the 802.11g and good Linux support. The driver for this card has a pretty good homepage at http://ipw2200.sourceforge.net/ (if you have an Intel Pro 2100 check out http://ipw2100.sourceforge.net/ instead). In order to use the wireless card you have to:
  1. Config & recompile the kernel with:
    • CONFIG_NET_RADIO (under Device Drivers, Networking support, Wireless LAN (non-hamradio)).
    • CONFIG_CRYPTO,CONFIG_CRYPTO_ARC4 (under Cryptographic options)
    • CONFIG_CRC32 (under Library routines)
  2. Install hotplug (under debian: apt-get install hotplug)
  3. Get the latest driver release (0.19 at the time of this writing) from http://ipw2200.sourceforge.net/. Untar it, chdir to the created directory and type make install
  4. Get the firmware from http://ipw2200.sourceforge.net/, untar it and place the files under /usr/lib/hotplug/firmware/ (this directory may be diferent on other distributions)
  5. Start the hotplug manager. If everything went right (it should) you'll get a new ethernet interface
Under kernels ≥ 2.6.8.1 my wireless-tools package (Debian Sarge) didn't work (relocation_error). I had to recompile them from source. You can download them from here. I used version 26, which works great
It seems that you must configure the wireless control in the BIOS to set it to "Application". The wireless card doesn't seem to work if the "Fn-F2" option is selected. This is documented in the README file of the ipw2200 driver

DVD/CD burner

Just configure your kernel for support to USB storage and SCSI CDROM drives. cdrecord -scanbus should detect the burner:
# cdrecord -scanbus
Cdrecord-Clone 2.01a34 (i686-pc-linux-gnu) Copyright (C) 1995-2004 Jörg Schilling
NOTE: this version of cdrecord is an inofficial (modified) release of cdrecord
      and thus may have bugs that are not present in the original version.
      Please send bug reports and support requests to >cdrtools@packages.debian.org<.
      The original author should not be bothered with problems of this version.

Linux sg driver version: 3.5.31
Using libscg version 'schily-0.8'.
scsibus0:
        0,0,0     0) 'QSI     ' 'CDRW/DVD SBW242U' 'UD25' Removable CD-ROM
        0,1,0     1) *
        0,2,0     2) *
        0,3,0     3) *
        0,4,0     4) *
        0,5,0     5) *
        0,6,0     6) *
        0,7,0     7) *
#
This is my SCSI configuration on the kernel:
<M> SCSI device support                                           
[*]   legacy /proc/scsi/ support                                  
---   SCSI support type (disk, tape, CD-ROM)                      
<M>   SCSI disk support                                           
<M>   SCSI tape support                                           
<M>   SCSI OnStream SC-x0 tape support                            
<M>   SCSI CDROM support                                          
[ ]     Enable vendor-specific extensions (for SCSI CDROM)        
<M>   SCSI generic support                                        
---   Some SCSI devices (e.g. CD jukebox) support multiple LUNs   
[*]   Probe all LUNs on each SCSI device                          
[*]   Verbose SCSI error reporting (kernel size +=12K)            
[*]   SCSI logging facility

MediaBase

The MediaBase works driverless. I still haven't researched how to undock the laptop while it is on, but some people are reporting that no software is needed.

Function keys

The more/less brightness keys should work without any special software support. To enable volume up/down keys:
  1. Install the package hotkeys
  2. Download this keyboard definition file (mirror) and copy it to /usr/share/hotkeys/x300.def
  3. Under X, start hotkeys: hotkeys -t x300
The volume function keys should work now. I still haven't researched how to enable other function keys.

Synaptics touchpad

Without any further configuration the touchpad on the laptops works, although some advanced features such as tap-to-click and scrolling with the touchpad are not available. Luckily there exists a quality open-source Synaptics driver which works pretty good (Synaptics is the name of the company that makes the touchpad of the X300). Here are the steps for configuring the Synaptics touchpad on the X300:
  1. You'll need CONFIG_MOUSE_PS2 and CONFIG_INPUT_EVDEV on your kernel. Reconfigure & recompile if needed. If you compile them as modules, remember to load them before the X server!
  2. Install the XFree86 development libraries and includes. On Debian/sarge this means installing the following packages: x-dev libx11-dev libxext-dev
  3. Download the Synaptics driver for XFree86 from its homepage
  4. Compile & install the driver. This should be easy; just read the INSTALL file
  5. Edit the your XFree86 config file and add the sections mentioned on the INSTALL file of the driver
That's it!. Restart the X server and you should be able to use the extended features of the driver. Here is my XFree86 config file, with the synaptics driver enabled. Note that I also added another (external) mouse to the config.

Dell Truemobile 300 Bluetooth card

My X300 has a Dell TrueMobile 300 Bluetooth card. This card is built inside the laptop and is connected via USB (that's why it doesn't appear in lspci -v). Here is what I had to do to enable BlueTooth support:
  1. Download and install the BlueZ utils. Under Debian Sarge there is a package available (apt-get install bluez-utils).
  2. Configure your kernel. The Bluetooth support is in Device Drivers, Networking support, Bluetooth subsystem support. Under Bluetooth device drivers select HCI USB driver (CONFIG_BT_HCIUSB). This only gives support in the kernel for the Bluetooth device, you might want to add some protocol support (CONFIG_BT_L2CAP, CONFIG_BT_RFCOMM, etc...).
  3. Compile & reboot. You should see something like this on your dmesg:
    Bluetooth: Core ver 2.6
    NET: Registered protocol family 31
    Bluetooth: HCI device and connection manager initialized
    Bluetooth: HCI socket layer initialized
    Bluetooth: HCI USB driver ver 2.7
  4. The Bluetooth device should be ready to use:
    # hciconfig
    hci0:   Type: USB
            BD Address: 00:10:C6:4D:34:49 ACL MTU: 192:8  SCO MTU: 64:8
            UP RUNNING PSCAN ISCAN
            RX bytes:119 acl:0 sco:0 events:17 errors:0
            TX bytes:316 acl:0 sco:0 commands:15 errors:0
    #
    

Misc stuff


References

My main reference is this pof Headquarters article. This is were I got most of information you can see on this page. Here are some other interesting links:

Contact

Was this page helpful? Do you have any comments, questions or suggestions? contact me!.

Tuxmobil logo