Any questions or comments on these notes may be directed to .

This page documents my trials and tribulations experienced while setting up a new Dell Inspiron 9400. I had researched this machine prior to purchase, specifically w.r.t installing linux on it, and while it seemed that there would be some issues involved in setting it up, it also appeared as though most of the major problems had already been resolved. In retrospect, further research was in fact warranted. Read on..

HW

Overall

Setting this baby up was no easy matter, involving a lot of trips to the web for info and software, and many iterations of compile-reboot-test. Overall it's a nice machine, I just wish the hardware weren't *quite* so bleeding edge. Would have had many more problems if not for SystemRescueCD's live CD and if not for all the folks who've gone before me, suffered the same or similar issues, and had the fortitude to work through them. Also thanks to all those open source software creators, testers, and other people involved in ensuring hardware support on Linux continues to be viable. You guys rock!

Issues remaining

Supporting Files

Prep

Boot params: Nothing magic

Resized ~120Gb Windows partition to ~20Gb using gparted LiveCD.

Partition table

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1           6       48163+  de  Dell Utility
/dev/sda2   *           7        2556    20482875    7  HPFS/NTFS
/dev/sda3            2557        2982     3421845   db  CP/M / CTOS / ...
/dev/sda4            2983       14410    91795410    5  Extended
/dev/sda5   *        2983        3016      273073+  83  Linux
/dev/sda6            3017        3624     4883728+  83  Linux
/dev/sda7            3625        3989     2931831   83  Linux
/dev/sda8            3990        4327     2714953+  82  Linux swap / Solaris
/dev/sda9            4328        4376      393561   83  Linux
/dev/sda10           4377       14410    80598073+  83  Linux
/etc/fstab:
#                
proc            /proc           proc    defaults        0       0
/dev/sda5       /               ext3    defaults,errors=remount-ro 0       1
/dev/sda10      /home           ext3    defaults        0       2
/dev/sda9       /tmp            ext3    defaults        0       2
/dev/sda6       /usr            ext3    defaults        0       2
/dev/sda7       /var            ext3    defaults        0       2
/dev/sda8       none            swap    sw              0       0
/dev/hdc        /media/cdrom0   iso9660 ro,user,noauto  0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0

Installation

On-board ethernet detected at install.

Install base - Debian 3.1r1

Grub installs to MBR

Selected no particular usage model.

Once installation is complete, add 'testing' sources to /etc/apt/sources.list

aptitude update
aptitude dist-upgrade

Kernel

aptitude install kernel-image-2.6.8-3-686-smp (to take advantage of duo core). reboot.

Update

Installed kernel-image-2.6.16-2-686-smp, including source and headers. This solved a lot of problems with compiling of certain modules, but was only available after manually installing 0.68 (I think) of initramfs-tools (0.73c was indexed, but not actually available).

On-board WiFi

Here's where things got ... interesting.

Grabbed these packages:

ieee80211-1.1.14.tar.gz
ipw3945-1.1.0.tar.gz

Installed ieee80211 via standard make/ make install, although had to

ln -sf gcc-3.3 /usr/bin/gcc
since 80211 won't compile with gcc-4 on this kernel.

Now making the ipw3945 driver:

cd /blah/ipw3945-linux-1.1.0/ipw3945-1.1.0
make

 Using ieee80211 subsystem version '1.1.14' (API v2) from:

 	Base: /lib/modules/2.6.8-3-686-smp/
 	Path: /lib/modules/2.6.8-3-686-smp/include/

 EXTRA_CFLAGS = -I/lib/modules/2.6.8-3-686-smp/include/ -DIEEE80211_API_VERSION=2 -g -Wa,-adhlms=check_inc.lst

make -C /lib/modules/2.6.8-3-686-smp/build M=/root/wifi/ipw3945-linux-1.1.0/ipw3945-1.1.0  modules
make[1]: Entering directory `/usr/src/kernel-headers-2.6.8-3-686-smp'
  CC [M]  /root/wifi/ipw3945-linux-1.1.0/ipw3945-1.1.0/ipw3945.o
In file included from /root/wifi/ipw3945-linux-1.1.0/ipw3945-1.1.0/ipw3945.c:68:
/root/wifi/ipw3945-linux-1.1.0/ipw3945-1.1.0/ipw3945.h:2102: error: field `wireless_data' has incomplete type
/root/wifi/ipw3945-linux-1.1.0/ipw3945-1.1.0/ipw3945.c:1011: warning: `warn_unused_result' attribute directive ignored
/root/wifi/ipw3945-linux-1.1.0/ipw3945-1.1.0/ipw3945.c: In function `ipw_send_cmd':
/root/wifi/ipw3945-linux-1.1.0/ipw3945-1.1.0/ipw3945.c:1128: error: `ECANCELED' undeclared (first use in this function)
/root/wifi/ipw3945-linux-1.1.0/ipw3945-1.1.0/ipw3945.c:1128: error: (Each undeclared identifier is reported only once
/root/wifi/ipw3945-linux-1.1.0/ipw3945-1.1.0/ipw3945.c:1128: error: for each function it appears in.)
/root/wifi/ipw3945-linux-1.1.0/ipw3945-1.1.0/ipw3945.c: At top level:
/root/wifi/ipw3945-linux-1.1.0/ipw3945-1.1.0/ipw3945.c:1154: warning: `warn_unused_result' attribute directive ignored
/root/wifi/ipw3945-linux-1.1.0/ipw3945-1.1.0/ipw3945.c:1167: warning: `warn_unused_result' attribute directive ignored
/root/wifi/ipw3945-linux-1.1.0/ipw3945-1.1.0/ipw3945.c: In function `ipw_wx_set_scan':
/root/wifi/ipw3945-linux-1.1.0/ipw3945-1.1.0/ipw3945.c:12564: warning: unused variable `req'
make[2]: *** [/root/wifi/ipw3945-linux-1.1.0/ipw3945-1.1.0/ipw3945.o] Error 1
make[1]: *** [_module_/root/wifi/ipw3945-linux-1.1.0/ipw3945-1.1.0] Error 2
make[1]: Leaving directory `/usr/src/kernel-headers-2.6.8-3-686-smp'
make: *** [modules] Error 2

eep!

Solution:

Install linux-2.6.15-2-686-smp via aptitude. Adjust entries in /boot/grub/menu.lst from hda* to sda*, and likewise in /etc/fstab. This will invalidate booting an earlier kernel, but who cares, right? :)

Rebuilt ieee80211 etc according to http://ipw3945.sourceforge.net/INSTALL

All should work, as far as wireless goes. Now to configure wpasupplicant :)

Could not get wpasupplicant working, it refuses to establish the correct WEP parameters. I have therefore (for the time being) hard-coded the WEP params in /etc/network/interfaces.

Also the ipw3945 module loads at boot, but does not initialise the ipw3945d registration daemon. Therefore it (the driver) has to be removed and re-installed, *before* the network interface using it (eth2 in this case) can be brought up:

% rmmod ipw3945
% modprobe ipw3945

Update:

The driver will, after a while, start spitting out errors and such (details to follow). While these errors are being spit out, the driver hangs, even to the extent of temporarily disabling the keyboard, which results in an unusable system.

I therefore invested in a D-Link WUA-1340 USB wireless doohickey. This was fun in itself to get working. A lot of googling and wading through bogus instructions, but this one was useful.

Essentially I had to add the vendor & product ID to rtmp_def.h:


  {USB_DEVICE(0x07d1,0x3c04)}, /* D-Link */
(note: these values can be gleaned from the output of lsusb) then compile. What did I compile? The rt73 driver and firmware. Follow the general instructions in the README file in the driver tarball.

Add this to /etc/network/interfaces, to ensure the interface comes up at boot:

auto rausb0
iface rausb0 inet dhcp
	pre-up ifconfig rausb0 up
	wireless-essid ...

On-board Bluetooth

Have seen it working, which means it worked OOtB, with bluez-utils, and bluetooth module.

SD Reader

Didn't work OOtB, but haven't really tried to get it working yet. Have heard rumours of a linux driver for it.

Update: Upgraded to 2.6.17, and applied a patch for the Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (I forget the origin of this patch). Works like a champ!

Video

Follow these instructions, paying particular attention to building the kernel module for the running kernel (section 4.0, 4.1a), and the X config section (section 5).

Audio

Latest alsa drivers did the trick (1.0.12rc2), including the fix for the headphone jack bug reported elsewhere on the www.

DVD/CD Burner

Some useful info here.

If, following this, the system refuses to boot with initrd errors, specifically about devfs/ dev/console,pivot_root, etc, make sure /boot/grub/menu.lst has entries for /dev/sda.. instead of /dev/hda..

Linux On Laptops