The iwlwifi driver is merged into the mainline linux kernel for 2.6.24 and will be in Debian kernels from 2.6.23.


The iwlwifi driver has been developed by Intel for their Intel® Wireless WiFi Link 4965AGN and Intel® PRO/Wireless 3945ABG wireless networking chipsets that are widely used in laptops. This driver replaces the older ipw3945 driver that also required a binary-only regulatory daemon, as described elsewhere.

This guide is a Debian-specific guide based on the instructions provided by the developers of the module.


To double check that you have the right hardware, you may need to update your PCI IDs. (And while you're at it, you may as well update the USB IDs.)


This guide assumes that you are running a kernel version of 2.6.22 or later. If you are running Debian etch, then the 2.6.22 kernel is available from the etch-backports repository. A sample line for your /etc/apt/sources.list is as follows and at the time of writing, the package name is linux-image-2.6.22-2-686 (or -amd64).

 deb etch-backports main contrib non-free

If you have edited your /etc/apt/sources.list you will need to run aptitude update. If you have installed a new kernel, you may as well reboot into that kernel before proceeding as the use of uname below assumes that you are running the kernel for which you want to compile the module.


This guide assumes that you have set the variable $KVER to contain the current version of your kernel (e.g. 2.6.22). This can be done as follows:

 KVER=$(uname -r | sed 's,-.*,,g')

Now, obtain the kernel source and headers (both appear to be necessary at this stage) along with the firmware and make sure you have the necessary compilation tools installed:

 aptitude install linux-headers-$(uname -r) linux-source-$KVER \
       firmware-iwlwifi build-essential wireless-tools 

Note that the firmware-iwlwifi package is only available in lenny/sid and that you need to either add them to your /etc/apt/sources.list too, or manually download that .deb and install it using dpkg -i.

The kernel source needs to be unpacked and a symlink put in place so that the module compiles correctly:

 cd /usr/src
 tar jxf linux-source-$KVER.tar.bz2
 ln -s /usr/src/linux-source-$KVER /lib/modules/$(uname -r)/source 

Now, obtain the latest module source code. At the time of writing, it was version 1.1.18 which is known to work with 2.6.22. You can check on the iwlwifi pages for the current module status.

 tar zxf iwlwifi-1.1.18.tgz 

You may now compile the driver. Note that you may be required to run make twice; follow the instructions that it prints out for you.

 cd iwlwifi-1.1.18
 make install 

To make the module visible to your running kernel, you may like to run depmod -a.


To load the module into the kernel:

 modprobe iwl4965

You should see in dmesg a message that the module was successfully loaded. You will probably need to turn off the radio kill switch before anything happens. This is either a keystroke (like Fn+F2) or a physical switch that you need to toggle to turn the radio on. When the kill switch is on, the radio is off and your network card won't work.

Once the module is loaded and the kill switch is off, you will see two new devices in the output of ifconfig -a that will most likely be called wlan0 and wmaster0. For the remainder of this guide, we'll assume that your wireless device is called wlan0.

Configuration of the device for your network is beyond the scope of this HOWTO and there are plenty of other good resources available. A very general overview follows which will give you the ideas required to search for more information.

To configure the wireless, use the usual tools: iwlist wlan0 scan (to list the networks the device can see), iwconfig wlan0 essid your_essid (to associate with a given network), iwconfig wlan0 key your_key (to provide the key for that network), etc. Once associated, you can run dhclient wlan0 to get an IP address if your network provides a DHCP server.

Once all this works from the command line, you can then put these settings into /etc/network/interfaces (see man 5 interfaces and man 7 wireless for the syntax) using wpa_supplicant (Debian package wpasupplicant) if needed.

Alternatively, the iwlwifi drivers work well with NetworkManager thus providing you with a convenient user-configuration interface. To use NetworkManager:

 aptitude install network-manager network-manager-kde

or use network-manager-gnome if you are a GNOME user. You should also make sure you are in the netdev group (type groups in a terminal to check and, as root, give the command adduser your_username netdev to add your user to the group if needed; you will need to log out and log in again for that change to take effect). As your user, run the program knetworkmanager (or nm-applet) to start the interface from where you can configure the wireless device and associate with your wireless network.

See Also

troubleshooting guide for the conversion from ipw3945 to iwl3945

TuxMobil - Linux on Laptops, Notebooks, PDAs and Mobile Phones        Linux On Laptops

Last edited: Monday March 31, 2008

Valid XHTML 1.1 Valid CSS 2