Intel PRO/Wireless 3945ABG devices (ipw3945)
This page describes how to enable support for WiFi devices based on the Intel 3945ABG chipset on Debian systems.
Contents
Update
Note: Since 2.6.24, the new module iwl3945 supersedes ipw3945. This module was merged from the iwlwifi project and does not require a binary regulatory daemon.
ipw3945 is not supported in Debian Lenny and Unstable (see switching to iwlwifi).
Motivation
I'm writing this because existing how-to documents don't seem to work for me, and I want to keep a record of what problems I hit and how I fix them for other Debian users.
In my case, I started with a laptop that had a Broadcom chip, and I installed Debian before I got an Intel-based replacement. I am using kernel 2.6.18-4-686 and have the linux-headers and linux-source packages that correspond to that version.
Device Identification
The page HowToIdentifyADevice/PCI explains how to identify a PCI device. For example:
update-pciids lspci
Your Intel 3945-based device should be listed:
0c:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG Network Connection (rev 02)
See also Supported Devices.
Overview
To use your Intel 3945-based device, you are required to install:
the ipw3945 driver (available as a pre-built module package, or can be compiled)
microcode firmware (firmware-ipw3945)
the binary regulatory daemon (ipw3945d)
You may also be required to update your CPU's microcode (via microcode.ctl), as explained in Intel CPU microcode update.
Installation
Pre-built driver
Add "contrib" and "non-free" components to /etc/apt/sources.list. For example:
# Debian Etch/4.0 deb http://ftp.us.debian.org/debian etch main contrib non-free
Update the list of available packages. Install the firmware-ipw3945, ipw3945d, relevant ipw3945 module and wireless-tools packages:
aptitude update aptitude install firmware-ipw3945 ipw3945d ipw3945-modules-$(uname -r) wireless-tools
Load the ipw3945 module:
modprobe ipw3945
This module will be automatically loaded when your system is restarted.Verify your device has an available interface:
iwconfig
Raise the interface, for example:
ifconfig eth1 up
Configure your wireless interface as appropriate.
Building via module-assistant
Add "contrib" and "non-free" components to /etc/apt/sources.list. For example:
# Debian Etch/4.0 deb http://ftp.us.debian.org/debian etch main contrib non-free
Update the list of available packages. Install the firmware-ipw3945, ipw3945d, module-assistant and wireless-tools packages:
aptitude update aptitude install firmware-ipw3945 ipw3945d module-assistant wireless-tools
Build and install an ipw3945-modules-* package within your system:
m-a prepare m-a a-i ipw3945
Load the ipw3945 module:
modprobe ipw3945
This module will be automatically loaded when your system is restarted.Verify your device has an available interface:
iwconfig
Raise the interface, for example:
ifconfig eth1 up
Configure your wireless interface as appropriate.
Troubleshooting
I once got this error on my Intel CPU laptop:
user@comp:$ sudo ipw3945d ipw3945d - regulatory daemon copyright (C) 2005-2006 Intel Corporation. All rights reserved. version: 1.7.22 2007-04-24 13:39:39: ERROR: Could not find Intel PRO/Wireless 3945ABG Network Connection
It went away after I installed the microcode.ctl package. The wireless light on my laptop blinks just fine.
Another thing to check: If your laptop has a hardware wireless switch, make sure it's turned on! It may be a keyboard key (like Fn+F3). Simple physical-layer problems are mistaken for higher level problems far more often than you think.
Intel CPU microcode update
I had problems until I installed the microcode update, since I'm using an Intel 32-bit CPU. This package improves functionality of Intel 32-bit CPUs with older BIOS versions. You may be able to forego this package if you can update your BIOS instead.
aptitude install microcode.ctl
This post pointed me to microcode_ctl, which has been replaced by microcode.ctl. http://forums.suselinuxsupport.de/index.php?showtopic=35464&pid=161410&st=0&#entry161410
You will need to reboot for the microcode update to take effect. The package works by having the kernel load the update very early in the boot process. It's a soft update, so the kernel needs to load the update on every boot.
If you find that this update makes your wifi work, then check your mainboard vendor for a BIOS update. In my case, Dell had a BIOS update waiting on their site. After upgrading my BIOS, I uninstalled the microcode update and my wifi still works!
Don't let this issue drive you away from Intel CPUs. They are awesome! (Not an official Debian statement!)
Restarting the regulatory daemon
Reproduced from the IRC/DpkgBot factoid database1:
The ipw3945 module and regulatory daemon need to be restarted when you change settings or come back up from suspend. The ipw3945d daemon is stopped when you remove the module and started when it's reinserted: modprobe -r ipw3945; modprobe ipw3945; don't use rmmod as it leaves the regulatory daemon running and the card confused.
Supported Devices
The page HowToIdentifyADevice/PCI explains how to identify a PCI device.
The following list is based on the alias fields of modinfo ipw3945 on Etch.
PCI: 8086:4222 Intel Corporation PRO/Wireless 3945ABG [Golan] Network Connection PCI: 8086:4227 Intel Corporation PRO/Wireless 3945ABG [Golan] Network Connection
Other goodies that make life easier
wpa_cli in terminal, network-manager in gnome, and kwlan in kde. I have had no success with network-manager-kde, but you may have a different experience. I use and love kwlan. These are all in the Debian APT repositories.
Disclaimer
This page is unfinished and will be updated continuously until I have a method that works reliably for me. If it works for you, please let me know. If I missed some detail, feel free to edit this page (It's a wiki, after all).
Links/References
HowToUse Wifi adapter.
ipw3945 reload: http://dpkg.vireo.org/factoid.php?key=ipw3945%20reload (1)
