For a while I was unable to use my Dell 8600’s built-in Centrino WiFi chipset. Ndiswrapper, the popular choice, proved quirky to me and it was just so much easier to drop my D-Link DWL-650 into the PCMCIA slot (see my Linux notes on this card). Only problem is that PCMCIA cards drink battery juice like marathoners drink water. Luckily, earlier this year Intel started supporting a native drivers project for the Centrino WiFi chipsets. I dug in and got them working on my laptop fairly smoothly.

You need the driver source (I used version 0.54) and firmware image files for hotplugging (neat way wrestle hardware into Linux friendliness when needed). I followed the link labeled “Versions between v0.50 and 0.54: v0.50-0.54 firmware”. Downloading the firmware meant accepting an Intel license. IANAL, but it seemed mostly about restricting use to Intel hardware, prohibiting reverse engineering, and limitation of liability. Fairly innocuous, and restrictions which anyway apply to the firmware images alone, not the actual kernel drivers (which do not “taint” the kernel).

I set up the formware, first making sure the kernel supports firmware load (true by default in FC2).

grep CONFIG_FW_LOADER /lib/modules/`uname -r`/build/include/linux/autoconf.h
#define CONFIG_FW_LOADER 1

So I set up the hotplug directories and placed the downloaded/unpacked firmware images there:

mkdir -p /usr/lib/hotplug/firmware
cd /usr/lib/hotplug/firmware
tar zxvf $DL/ipw2100-fw-1.2.tgz

Then I unpacked and built the actual kernel drivers. Make sure you have Kernel source (see my Broadcomm B44 article for more on that).

tar zxvf $DL/ipw2100-0.54.tgz
cd ipw2100-0.54/
make
make install #copy to /lib/modules for kernel and set up deps

At this point I could load the driver just fine:

modprobe ipw2100

By running “dmesg”, I saw the initialization log messages:

# dmesg
ipw2100: Intel(R) PRO/Wireless 2100 Network Driver, 0.54
ipw2100: Copyright(c) 2003-2004 Intel Corporation
ipw2100: 0000:02:03.0: Detected at mem: 0xFAFFC000-0xFAFFCFFF -> 82aac000,
irq: 7
divert: allocating divert_blk for eth1
eth1: Using hotplug firmware load.
eth1: Bound to 0000:02:03.0

I could then use the Network settings tool (Red Hat menu -> System Settings -> Network) to set up the connection details (New -> Wireless connection -> “PRO/Wireless LAN 2100 3B PCI Adapter (eth1)”). I thought I was home free, but after the next boot, kudzu helpfully set things up for boot and it promptly went bust. The driver would fail to load properly with the following messages in dmesg:

ipw2100: Intel(R) PRO/Wireless 2100 Network Driver, 0.54
ipw2100: Copyright(c) 2003-2004 Intel Corporation
ipw2100: 0000:02:03.0: Detected at mem: 0xFAFFC000-0xFAFFCFFF -> 8299c000,
irq: 7
divert: allocating divert_blk for eth1
eth1: Using hotplug firmware load.
eth1: Firmware 'ipw2100-1.2.fw' not available or load failed.
eth1: ipw2100_get_firmware failed: -2
eth1: Failed to power on the adapter.
eth1: Failed to start the firmware.

Since I could modprobe it by hand, I figured there was a problem with boot order and just undid kudzu’s work (uncimmenting ipw2100-related lines in /etc/modprobe.conf) and added the module load command to /etc/rc.local:

# cp /etc/rc.local /etc/rc.local.dist
# echo "modprobe ipw2100" >> /etc/rc.local

That did the trick. I’m a happy Linux Centrino WiFi user now.