This document just outlines some traps in converting from the older ipw3945 driver to the new iwlwifi (iwl3945) driver for the Intel® PRO/Wireless 3945ABG wireless LAN chipset. How to install this driver is described elsewhere.


The new iwlwifi driver has quite a few benefits including free-ness and is included in Debian's kernels from 2.6.23 onwards. To install this driver under etch, you can follow instructions elsewhere.

Once you have installed the driver, a few nasty surprises can be in store for you. In particular, you may find that NetworkManager no longer manages your device and that it is called wlan0_rename (with errors in /var/log/syslog about sysfs_create_symlink failed.

wlan0_rename (NetworkManager fails)

If you have a device wlan0_rename or NetworkManager complains that it can't find any wireless devices or that the wireless device can't be managed. then you need to instruct udev to forget about the old ipw3945 module. Fortunately, this is quite easy.

As root, edit the file /etc/udev/rules.d/z25_persistent-net.rules and remove the lines for the wireless device (they will look something like this):

 # PCI device 0x8086:0x4227 (ipw3945)
 SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:1b:77:2d:9f:a4", NAME="eth1"

You can then remove and then insert the iwlwifi module to get udev to create a new line in /etc/udev/rules.d/z25_persistent-net.rules for this driver. Alternatively, you can just wait until you next reboot....

 rmmod iwl3945
 modprobe iwl3945
Following your reinitialisation of udev with the iwlwifi driver, /etc/udev/rules.d/z25_persistent-net.rules should now have a line like :
 # PCI device 0x8086:0x4227 (iwl3945)
 SUBSYSTEM=="net", DRIVERS=="?*", ATTR{address}=="00:1b:77:2d:9f:a4", ATTR{type}=="1", NAME="wlan0"

And your device should work properly and NetworkManager should be happy.

In Debian Lenny, /etc/udev/rules.d/z25_persistent-net.rules has been renamed to /etc/udev/rules.d/70-persistent-net.rules.

ipw3945 keeps grabbing the device

If ipw3945 keeps grabbing the device (rather than iwlwifi) then the easiest solution is to remove the driver packages:

 aptitude purge ipw3945-modules-$(uname -r) ipw3945d firmware-ipw3945

(You may have other ipw3945-modules-* packages on your machine that you could also purge)

Last edited: Tuesday December 2, 2008

Valid XHTML 1.1 Valid CSS 2