Installing Intel IPW2200BG under Linux

by on Apr.04, 2007, under Linux, System Administration

I’ve been using wifi on my Dell Inspiron 1150 laptop courtesy of a D-Link AirPlus DWL-G650+ Wireless Cardbus Adaptor. It’s been a great little card, but there’s no decent native Linux drivers supporting WPA encryption (or, at least, there weren’t when I first installed it). Now I’ve finally decided to move on, and purchased an Intel 2200BG mini-PCI wireless adaptor.

The lack of Linux drivers for the G650+ card meant I had to use ndiswrapper to get the card to work by loading Windows drivers for it. Now ndiswrapper is a clever bit of software, and its ability to load Windows drivers allows many people to make use of wireless cards which they wouldn’t otherwise be able to use with Linux, but having to load Windows drivers has always seemed a very kludgy way to do things.

Intel provide Linux drivers for the IPW 2200BG via and offer stable versions on their Laptop Products page.

Installing the card was a fairly simple matter of removing the cover from the mini PCI bay on the bottom of the laptop, sliding the card into place, connecting the antenna leads to the (very small and fiddly) connectors on the card, and replacing the cover. Here’s a couple of photos of the new card in place (click to enlarge):

Booting the system back up showed that the ipw2200 driver was already part of my kernel, so I didn’t have to install the driver from the Intel site… dmesg showed me the following:

ieee80211_crypt: registered algorithm 'NULL'
ieee80211: 802.11 data/management/control stack, git-1.1.13
ieee80211: Copyright (C) 2004-2005 Intel Corporation
ipw2200: Intel(R) PRO/Wireless 2200/2915 Network Driver, 1.2.0kmprq
ipw2200: Copyright(c) 2003-2006 Intel Corporation
ACPI: PCI Interrupt 0000:02:02.0[A] -> Link [LNKC] -> GSI 11 (level, low) -> IRQ 11
ipw2200: Detected Intel PRO/Wireless 2200BG Network Connection
ipw2200: ipw2200-bss.fw request_firmware failed: Reason -2
ipw2200: Unable to load firmware: -2
ipw2200: failed to register network device
ACPI: PCI interrupt for device 0000:02:02.0 disabled
ipw2200: probe of 0000:02:02.0 failed with error -5

I still had to download the driver to get the firmware for the card (as the output above shows, it needed the firmware to load).

I grabbed the driver from this IntelĀ® PRO/Wireless 2200BG product page – extacting the tarball shows the firmware inside another tarball (ipw2200_linux_1.2.0.tgz).

I extracted the firmware tarball, and copied the files from it to /lib/firmware/ (don’t copy them into a subdir like I tried at first, the files should be just in /lib/firmware/).

(Oh, and Intel’s download page is annoying: it happily sits there proclaiming:

Your file download has initiated. Should your download be interrupted or not initiate, please select restart to try again.

Er, well, it would have, if Javascript was enabled for this domain).

Now, a modprobe ipw2200 gives more promising results:

ipw2200: Intel(R) PRO/Wireless 2200/2915 Network Driver, 1.2.0kmprq
ipw2200: Copyright(c) 2003-2006 Intel Corporation
ACPI: PCI Interrupt 0000:02:02.0[A] -> Link [LNKC] -> GSI 11 (level, low) -> IRQ 11
ipw2200: Detected Intel PRO/Wireless 2200BG Network Connection
ipw2200: Radio Frequency Kill Switch is On:
Kill switch must be turned off for wireless networking to work.
ipw2200: Detected geography ZZR (14 802.11bg channels, 0 802.11a channels)

OK, looking better, but that Kill switch messge is a bit special.

We’ll come back to that in a second, let’s just see if a new interface has appeared:

[root@columbia davidp]# iwconfig
lo no wireless extensions.
eth0 no wireless extensions.
eth1 radio off ESSID:off/any
Mode:Managed Channel:0 Access Point: Not-Associated
Bit Rate:0 kb/s Tx-Power=off Sensitivity=8/0
Retry limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
Link Quality:0 Signal level:0 Noise level:0
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0

Ah, look at that, we have a new interface, eth1. (Personally, I’d rather it was called wlan0, but I don’t much care to be honest). The “radio off” shows that we’re not going anywhere until we can turn that “Kill Switch” off.

A quick Google took me to, and a quick look round that site tells me that it’s Fn+F2 to enable the wireless card for most Dell lappy’s… sure enough, I hit Fn+F2, and now the “radio off” in the iwconfig output changes to “unassociated”. (That’s the blue “Fn” function key between Ctrl + Alt on the keyboard).

A quick iwlist eth1 scan shows the 4 access points in my area (one of which is mine, obviously).

I had to play around a bit to get wpa_supplicant to work properly. First I removed ndiswrapper, and removed the custom version of wpa_supplicant I’d installed for ndiswrapper support, and replaced it with a vanilla wpa_supplicant (installed with Arch Linux‘s lovely pacman package manager – simplicity itself).

I got an error from wpa_supplicant of:

wpa_supplicant: undefined symbol: SSL_CTX_set_info_callback

Installing openssl (with pacman -S openssl) fixed that one.

I then had to update the config file for my network profile, changing the
WPAOPTS setting to WPAOPTS="-D wext -i eth1“.

Now, all is well, and I’m happily writing this post while connected with my new wireless connection.

Hope these details are of use to someone – if they help you, let me know in the comments! :)

1 Comment for this entry

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!