This is a mostly hardware-centric look at how I've got Linux running on my Dell D-800. I use Slackware, but most of what's mentioned here is disti-independent (all of them seem to have the same level of support for the D-800 hardware). I would rate the Slackware default setup as useable, but with the laptop's advanced hardware you will probably be tweaking your video and internet support for a while. Consider it a hobby, as many Linux users do, or simply copy the setups of those who have gone before you.
Mike Hardy and Andrew Fritz inspired me with their very helpful pages for the D800 (for Redhat and Gentoo, respectively). I recommend you visit their pages, as I haven't repeated all their information here. You will probably also want to check out the Yahoo! group dedicated to Linux on the Dell D800.
In the words of Slackware creator Patrick Volkerding, "Have fun!" --Ken
| Hardware | Working? | Comments |
| Floppy | ![]() | Tested docked and with USB interface |
| USB | ![]() | Tested with Mouse, Camera, Floppy, Memory key |
| Infrared | ![]() | Tested ppp over IrDA with Sharp Zaurus |
| Hard Drive | ![]() | 23 MB/sec typical |
| Wireless LAN (802.11) | ![]() | No support for stock mini-PCI card (TrueMobile 1400) |
| Wireless LAN (Bluetooth) | ![]() | No hardware on my machine |
| Wired LAN (Ethernet) | ![]() | Broadcom driver works well. Kernel-tree tg3 driver is hit or miss. |
| Wired LAN (Firewire) | ![]() | Untested |
| Graphics | ![]() | Works well in 2D, 3D, dual-head, twin-view, TV out with Nvidia driver. |
| Touchpad/Pointer | ![]() | ALPS Dualpoint works, some xset m tweaks are in order |
| Parallel Port | ![]() | Tested with libieee1284 software |
| Audio | ![]() | OSS and ALSA. Works fine, some periodic low-level noise. |
| CD-RW/DVD | ![]() | Burns CDs with ATAPI interface, no lockups. Plays DVDs |
| Modem | ![]() | Not tested |
| Serial port | ![]() | Not tested |
| Wireless LAN (802.11b) | ![]() | "Aftermarket" card (Dell TrueMobile 1150) works with some minor glitches |
| Smartcard reader | ![]() | No support. |
| PCMCIA slot | ![]() | Tested with 802.11b card. |
| Keyboard | ![]() | Works, not the nicest hardware. |
| Display | ![]() | Amazing resolution (1920x1200). |
Only hitch is that its not available as /dev/fd0, but instead looks like a SCSI drive (this was not the case for the original BIOS). Some software may not be intelligent enough to look for the floppy on /dev/sda. You'll want a /etc/fstab entry or automount script for it. You can hotswap the drive if you power it down using hdparam (with this idectl script, its idectl 1 off/idectl 1 on), but be very careful to make sure the drive has stopped.
The drive can also be used externally with a USB interface (read below).
Tested with mouse, camera, floppy drive and memory key. Worked fine. There are three ports. The fourth port on the right is not standard USB (I'm not sure what it is, but there is a power icon on the case there).
I use a USB optical mouse (Kensington PocketMouse Pro, Model 72116 or Dell/Logitech 04P608). These are three button wheel mice (the wheel depresses as a middle button). The Kensington cord is retractable and stores in the mouse itself for travel--its a bit smaller than standard, but works well. The only annoyance is the thin cable has a "memory" and wants to coil all the time. In my XF86Config, I map the wheel to the Z axis and many applications scroll with the wheel (rxvt, Mozilla and Xemacs to name a few). The Kensington wheel is a bit difficult to click as a middle mouse button, but for occasional clicks its fine. The Dell is larger and more suited to daily work.
X won't recognize the mouse if its not plugged in when XFree86 launches. While in X, the touchpad, pointer and mouse all can operate simultaneously. I don't use GPM so I can't comment on interfacing with the mouse that way, but I have observed the mouse device raw data from the console so I expect it would work fine.
When my serial-interface digital camera died, I picked up a Canon PowerShot A70. Its a great camera and a great price. At first, I didn't think it was supported by Linux, but in fact, it uses a standard PTP interface, so it was an easy hack to get libgphoto2 to recognize the camera. (I've been told the latest version should have the camera recognized, so I won't list my patch here). With gtkam, I can download, preview, and delete the pictures, which is all I need. When I initially set this up without patching my libgphoto2, I modified /etc/hotplug/usb.usermap to allow the camera to be recognized. I'm not sure this is necessary after patching (in fact, I believe after upgrading to Slack 9.1, this map seems to invoke a hotplug script bug?). Note that gtkam and libphoto are not part of the Slackware distribution. You'll have to compile and package them yourself.
The Dell floppy drive not only docks, but can be operated with
the included USB cable (look closely at the side of the drive for
the small port). It's basically plug-and-play. You'll need to mount
it as a SCSI drive (mount /dev/sda /mnt/floppy).
I borrowed a USB memory key once to transfer files off an oscilloscope
(running Windows 98). Well, I tried: it worked plug-and-play with Linux,
but Windows couldn't find a driver for it! On the D-800, the key was
mounted as a partitioned SCSI drive, formatted with a FAT32 (VFAT)
filesystem (mount -t vfat /dev/sda1 /mnt/floppy). If I
owned one of these, I'd probably write a hotplug script to mount it
(see man hotplug -- but with Slackware's BSD style init, the
scripts are in /etc/hotplug/).
I have a Sharp Zaurus PDA and have successfully used ppp to route
IP over IrDA. It wasn't the fastest, but it works. The commands on
the d800-side to do this were: And from there you can do packet forwarding if you
want to provide internet for the PDA (not too useful, as the IrDA
port on the Zaurus is on the left side so it needs to be upside
down to point at the D800).modprobe ircomm-tty
/usr/sbin/irattach /dev/ttyS1 -s
pppd /dev/ircomm0 noauth 192.168.129.1:192.168.129.201 ktune \
ms-dns 204.127.202.19 passive
Once, I disabled the port somehow to save power, but I can't remember how.
I bought the slower, 60MB drive so I'd have plenty of room to dual boot. Turns out, I don't use Windows except to jump in once in a while to update my virus protection for the latest worm. ;) The drive seems to operate pretty quickly without me setting anything explicitly. I do use hdparam to put the drive in power save mode when I'm on battery (not sure if this is successful).
There is no support by Broadcom for this card. At the moment, its just dead-weight. There's an alternative card by Intel available too, also without support. I'm not really happy about this, but since my employer only buys Dell computers, I bought the laptop anyways. You may be interested in a project to use Windows native drivers in Linux, called ndiswrapper. It reportedly works for the 1400 if you don't want WEP.
I don't have any Bluetooth devices. I did once remove the hard drive and noticed that I don't have a Bluetooth radio in my laptop like other D800 owners. If you don't have Bluetooth, you probably won't ever see activity from the wireless light (fourth LED on right under display). Other D800 users reportedly use Bluetooth.
This is a mini-PCI card for the C-series laptops. It uses the old and well-supported Prism2 chipset. Dell sells it for $50 (I've been told they won't sell it to you if you say its for a D-800, but I searched their site and found a direct sales link for it and bought it online without talking to anyone). I use the orinoco_cs driver, with a patch to enable scanning support. I have tried the hostap driver and had initial problems. I know the hostap works like a charm on my Prism2.5 Netgear MA401A, so I'll probably eventually give it another shot. Short story here is this is probably the most supported 802.11b chipset you can get for Linux. It works great too, with little slowdown for 128-bit WEP.
The 1150 mini-PCI card is really a PCMCIA card with a PCMCIA to
PCI bridge. This means a third PCMCIA socket is shown by the cardctl
ident command (Socket 0 being the SmartCard reader, and Socket 1 being
the user socket, Socket 3 being the 1150 bridge). My company is quite
paranoid about having wireless signals enabled, but the radio seems to
disable when the interface is "down". I have tried to the radio
with the cardctl suspend 2 command, but this has led
to problems sometimes getting the card back up!
Now the long story... The mini-PCI card plugs right in, but only the main antenna coax reaches far enough to plug in. The cable marked "Aux" is just a hair short of reaching. This seems like a minor short-sighted decision by Dell not to extend the cable a centimeter and have another part number that works with the laptop. The card ships with a spare auxillary coax cable, but I traced the original back far enough to see that the new cable isn't any longer than the old. Thinking it possible to use the spare as an extension, I searched for the type of connector that was used. It is made by HRS (Hirose)--the H.FL series, I believe ("World's smallest low-profile coax")--and it available in single piece quanitites from the distributor, Digikey. Unfortunately, this is a weak, limited-insertion type connector and there is no inline barrel-type female connector (but something could probably be done with a PC socket). I decided that the radio was low enough power that it would not be damaged if run without a load, and gave it a try. The good news is it works, and seems to have full range. I ended up just insulating the Aux antenna coax and leaving it unconnected (for now).
The second downside is that twice the card has gone into a mode where it refused to retain my ESSID choice. This is on configurations that have worked for weeks, just suddenly one morning it wouldn't connect, and refused to connect even after power-cycling (from Linux or Windows, and regardless of the accesspoint I use). Setting the ESSID was only temporary -- it would appear garbled when read back. The first time it was in this mode, it finally fixed itself spontaneously after half a day. The second time, I set the ESSID to "any" and the card regained its mind. In over a year this has not happened again.
There's a built-in ethernet port on this machine (10/100/1000T). Broadcom offers a driver that works perfectly for me. I have heard grumblings from the linux community on this driver about its poor programming structure and its initial license (it is GPL now). Short story is, it compiles, installs, and works. There is also a linux community driver, tg3, which now supports this hardware. I have used it with mixed success. With one kernel release, I simply could not get on the network at work. Going back to Broadcom fixed it. Another user reports something in the tg3 driver being Nortel IPsec unfriendly. Blacklist tg3 if you aren't using it by adding it to /etc/hotplug/blaclist. Wake-On-LAN does work with AMD's Magic Packet, but you'll need to enable it in the BIOS screen. By default, WOL is off in the driver. You need to pass the module "enable_wol=1" on load, or use "ethtool -s eth1 wol g" to arm it for a one-time sleep/wake cycle.
I have no firewire devices yet, but the kernel messages look like this port is found and supported. I haven't investigated powering down the interface yet.
I have the Nvidia Ti4200 Go with 64MB RAM. I'm currently using the nvidia driver. This seems to work fine, although other users have complained that they can't suspend to disk with this driver (I don't suspend to disk). The only pain I have with this driver is that it is proprietary (your kernel will be, as they say, "tainted"). I have no problem with manufacturers protecting their intellectual property (especially in the expensive and risky field Nvidia competes in). The problem I have is that each time I upgrade my kernel, I have to rebuild the nvidia module.
Not all versions of the nvidia driver have worked well for me. In particular, 4496 has been great (you need patches to use it on 2.6), and 6106/6111 are working great with no patches needed for 2.4 or 2.6 kernels. In particular, 5528 and 5336 did not work well and left my backlight on when the display was forced off by dpms. Please note, pre-6106 will not work wtih 4k stacks (if you compile your own kernel). Also, building RIVA framebuffer support into the kernel will conflict with this driver. If you are having problems, make sure CONFIG_FB_RIVA is not 'y'.
I've heard reports that 3d doesn't work for some people, so I installed my old Unreal Tournament disk and it flew in 1920x1200! Glxgears runs well too, and glxinfo reports that direct rendering is being used even though you have to specifically NOT use "dri" and "GLcore" in your xorg.conf if you are using this driver. The nvidia driver is not only a kernel module, but also a set of libraries. Here's my current package filelist for the driver.
As for 2D, I have a lot of clean-up to do in my Xorg config, but I have messed around with dual-head with my two-input Sun/Sony monitor (two monitors displaying different window manager workspaces), and twin-view for a presentation (my flat-panel in 1920x1200 with the presentation in the upper left 1024x768, being displayed on a LCD projector). Before I purposely setup the two monitor stuff, I just plugged in another monitor and hit Fn-F8 and it worked (but with scrolling). Now, Fn-F8 doesn't work, but Ctrl-Alt-Keypad-+ works... I find XFree86 config syntax a bit tedious.
The laptop has an S-video connector and an adapter to mix composite video out. This works great. You have to take the audio off the headphone port as the connector on the video dongle is digital audio only.
If you want to use the suspend states with this laptop, there may be patches you have to apply to the driver. I do not do this and can't help.
This dual-pointer device is recognized by default as a PS/2 mouse.
In this mode, there are none of the fancy ALPS features enabled.
The default acceleration on the pad is ridiculous for a 1920-wide screen
though. To move the cursor across the screen, it takes two finger lifts.
If you are running a desktop like KDE or Gnome, they have a control
panel that adjusts the acceleration. In general I use adjust my
mouse acceleration in X with xset m 40/10 4.
Not many people use a parallel port anymore, but we do drive a few test setups with them at work. Naturally, I couldn't resist porting the control software to Linux using the libieee1284 library. It works well, and reports the port capabilities as "parport0: 0x378 (ECR at 0x778) RAW NIBBLE BYTE COMPAT ECPSWE".
The audio codec is a SigmaTel STAC9750/51 compatible (Intel 82801DB-ICH4 card). I was using OSS and have had no real problems. I don't listen to a ton of music, but I do play some MP3's sometimes through my electronic drum kit.
The audio mixer keys don't work out of the box. You have to assign them functionality in your window manager. I used xmodmap to identify them to the window manager, and use the command line interface for the lightweight "rexima" to change the volume.
I do try listening at low volumes with headphones sometimes, and there is often an annoying cycling noise. It sounds as if some other hardware is coupling into the audio.
ALSA works great, even with OSS apps. I did recompile my kernel without the sound extras to force the kernel to stop trying to load the OSS modules (you can also blacklist them in your /etc/hotplug/blacklist file). For 2.4 kernels, you need to install the alsa library and modules (driver) separately. For 2.6, the modules are in the kernel tree.
This is a docking combo drive (made by NEC). You can hot-swap it for a second battery using the idectl script, but be very certain the drive has finished operating first.
The CD read function is accessed by mounting /dev/hdc (for the user, via /etc/fstab or an autofs map). You can (and should) symbollically link /dev/hdc to /dev/cdrom and /dev/dvd.
For video software, I use mplayer and gmplayer (the GUI). If you have problems, its likely with device permissions. Slackware by default gives console users group membership in groups audio, cdrom, video and floppy (see /etc/login.defs). You should set the group permissions on your devices to one of these. I don't use udev (yet) and have never used devfs.
Some people have reported problems with burning CDs. With an ATAPI drive, SCSI commands are sent over an IDE interface. There is a kernel module you can load for this (ide-scsi). This module is loaded automatically by the stock Slackware /etc/rc.d/rc.modules script. I've burned several CD-R and CD-RW so far from the command line (using cdrecord), and it worked great.
I think support for this device is a bit ahead of its time right now. Bad news is, it takes up a PCMCIA slot too. But with built-in ethernet and wireless support, you probably won't miss it.
With the built-in ethernet and wireless, Dell has decreased the number of PCMCIA sockets that you can access to one (socket number 1; socket 0 is used by the SmartCard reader). I've tested the socket with a Netgear MA401RA wireless card and it worked fine (I didn't use a hotplug script though).
I do use a hotplug script to mount a compact flash card in the pcmcia slot and it works well. Remember to mount devices synchronously as the flash writes are slow and you are likely to eject the card with the data still in the buffers!
As far as hardware goes, I'm not pleased with the micro-thin and flexible keyboard Dell is using now. Its fully functional, but going back to a C-series keyboard makes me jealous of the full-travel "real" feel. When touch-typing at high speeds, I sometimes actually hook a finger under the "H" key when coming off the "N" key due to the keycaps lack of sides.
The keyboard is a "Windows" keyboard, with the special keys and
scrambled Ctrl/Caps lock positions that we Unix users will never
get used to (its fixable at least in X though). The XFree86 config is really quite simple.
As for the special windows and Fn-keys, you can make use of them
in X by using the xev program to get their scancodes.
Assign these scancodes to high-numbered (unused) keycodes with your .Xmodmap file, and then you can use these
keys in your favorite window manager set-up
to do useful things.
The D-800 comes with an amazing 1920x1600 pixel LCD display (made by Sharp?). I've read many, many complaints online from inept Windows users who find the LCD resolution too small to see their fonts (Dell even ships the PC with Windows DPI distorted to a lower resolution). In Linux you have full control over your font sizes, so the LCD can be appreciated in its native resolution without eye-strain. The only issue I've had with this is when I run dual-head with a 1600x1200 monitor (21 inch?), and the font sizes I picked for my laptop are huge on the external display.
There have been a few problems with the display for some users, including burn-in, edge fading, and off-center installation. These are all faults that I haven't seen yet, but if I do I will swap the display out using my company's replacement plan. I suggest you keep a close eye on the display quality during your warranty period.
Additional patches:
I don't believe any of these patches are absolutely necessary. They may have fixed the DSDT by now in the ACPI code. Cpufreq is probably wanted if you would like to adjust the process speed in 2.4.
After building your kernel, you need to compile the propriety drivers (Broadcom, nVidia). This only has to be done for each kernel revision, though. I haven't found it necessary when just tweaking the config file. I recommend scripting the entire kernel patch, build and package procedure.
Additional patches:
In 2.6, many things like cpufreq and the new NTFS driver are in the kernel. I've found a vanilla 2.6 kernel to work well. The cpufreq hook is a little different in 2.6.
In short, 2.6 now works very well with the D800 and has not broken any apps for me.
Previous to Slackware 10, the /etc/pcmcia/config.opts file probed a memory
address in the 0x810-0x81f range which locked the D800 solid (this was a fault
in code from pcmcia-cs). This unfortunately
means you can't use the excellent Slackware 9.1 Live Disk. In Slackware 10, the
line in config.opts was changed to
include port 0x100-0x3af, port 0x3e0-0x4ff, port 0x800-0x80f, port 0x820-0x8ff, port 0xc00-0xcff
In Slackware 10, a module was included in the default kernel config that is
also annoying for the D800 when it is incorrectly auto-detected and loaded.
You will want to add hw_random to /etc/hotplug/blacklist and
unset CONFIG_HW_RANDOM if you build your own kernel.
Last updated: Sat Jul 17 06:46:34 EDT 2004