Debian GNU/Linux on the Dell Latitude X300
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:
Feature | Supported? | Notes |
---|---|---|
Intel 855GM videocard / XFree | Yes | Works flawlessly. A recent XFree86 is needed (4.3) |
ACPI and powersaving features | Yes | Kernels ≤ 2.6.8.1 need some patching |
Integrated network controller (Broadcom NetXtreme BCM5705M) | Yes | Works flawlessly |
Sound card (Intel 82801DB/DBL/DBM) | Yes | Works flawlessly. (update 2005-10-31 mediabase audio) |
USB 1/2 & Firewire | Yes | Work flawlessly |
Wireless Networking (Intel Pro 2200) | Yes | Works flawlessly. Might need to recompile the wireless-tools |
External (MediaBay and MediaBase) DVD/CD burner | Yes | Works flawlessly |
MediaBase docking | Yes | Haven't researched yet how to undock when the laptop is on |
Volume keys | Yes | |
Synaptics Touchpad | Yes | Advanced features (like tap-to-click) supported |
Bluetooth | Yes | Works flawlessly |
SD card reader | Not likely | Haven't tried yet, but from what I read looks like there isn't Linux support for it |
Modem | Yes | Haven'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:- Pentium M (Dohan generation), 1.4 Ghz
- 60 GB HD
- 640 MB RAM
- Intel Pro 2200 miniPCI wireless card
- Dell TrueMobile 300 Bluetooth card
- MediaBase docking station
- 57 MB partition at the beginning of the disk, type DELL UTILITY
- WinXP on another partition (type NTFS), using the rest of the disk space
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:- Booting with the lid closed. Granted, you can not reach the laptop's power button when the lid is closed, but you can do this using the mediabase dock external power button. If you do not have a mediabase you can boot linux with the lid open, issue a reboot command and then immediately close the lid
- Before starting linux (i.e.: in the POST boot or in the boot manager menu) switch to external VGA by pressing Fn-F8
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:- Reboot and enter the BIOS. Look for the BIOS version (it's written on one of the corners of the screen). Boot Linux again.
- Download the appropiate DSDT (remember your BIOS version!) from here
- 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 - 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
- Compile the DSDT sources:
/path/to/iasl -tc Dell-Latitude_X300-AXX-custom.aslThis will create the file Dell-Latitude_X300-AXX-custom.hex, being XX your BIOS version.
- Copy the compiled DSDT to the kernel tree:
# cp Dell-Latitude_X300-AXX-custom.hex /usr/src/linux-2.6.9/my-dsdt.hex
- 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
- Compile the kernel, modify your Grub/Lilo config files and reboot!
... 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) ...
# acpi -V Battery 1: charged, 100% Thermal 1: ok, 49.0 degrees C AC Adapter 1: on-line #
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!
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:- 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)
- Install hotplug (under debian: apt-get install hotplug)
- 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
- 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)
- 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) * #
<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:- Install the package hotkeys
- Download this keyboard definition file (mirror) and copy it to /usr/share/hotkeys/x300.def
- Under X, start hotkeys: hotkeys -t x300
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:- 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!
- Install the XFree86 development libraries and includes. On Debian/sarge this means installing the following packages: x-dev libx11-dev libxext-dev
- Download the Synaptics driver for XFree86 from its homepage
- Compile & install the driver. This should be easy; just read the INSTALL file
- Edit the your XFree86 config file and add the sections mentioned on the INSTALL file of the driver
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:- Download and install the BlueZ utils. Under Debian Sarge there is a package available (apt-get install bluez-utils).
- 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...).
- 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 - 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:- Linux For Laptops
- Linux on Centrino(TM) Laptops and Notebooks. Lots good information about Linux support on Centrino hardware
- Synaptics touchpad driver for XFree86/X.org
- Intel Pro Wireless 2200 driver
- Intel Pro Wireless 2100 driver
- Wireless tools homepage
- BlueZ homepage. Linux Bluetooth support
- Software suspend info. I haven't tried this yet but some people have.