Debian GNU/Linux on the Dell Latitude X300
by Pedro Diaz
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:
|Intel 855GM videocard / XFree||Yes||Works flawlessly. A recent XFree86 is needed (4.3)|
|ACPI and powersaving features||Yes||Kernels ≤ 184.108.40.206 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|
|Synaptics Touchpad||Yes||Advanced features (like tap-to-click) supported|
|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 LaptopI 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
PartitioningI 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 LinuxThe 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.
ConfiguringIf 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.
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 outputYou 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
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 220.127.116.11 (or lower) kernel, read my old instructions for ≤ 18.104.22.168 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
- 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 #
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
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.
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
# 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 >firstname.lastname@example.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
some people are reporting that no software is needed.
- 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
- 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
- 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 #
ReferencesMy 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.