This page describe how to use iwl-wifi ([http://www.intellinuxwireless.org/ Intel Wireless WiFi Link driver]) with an iwl3945 or iwl4965.

Installation

1) Install linux image 2.6.23 or above 2.6.24 The iwl* modules requires the new kernel's IEEE 802.11 subsystem (mac80211). both modules are available in linux-image-2.6.24 (currently in DebianUnstable).

2) Install firmware-iwlwifi

It's assumed you know how to install both!?

Loading the iwl3945 / iwl4965 modules

Using iwlWifi

iface wlan0 inet dhcp
  pre-up ip link set wlan0 up
  wireless_essid MakeTeaNotWar

Note the magic pre-up line, which I needed to make the card associate with the access point. As a bonus, with this stanza the interface works after an S3 resume (i.e. suspend/resume to RAM)!

Interfaces

Once the module is loaded, ip a should show two interfaces (wlan0 is the "main" one).

Switching from ipw3945 to iwl3945

Common problems and errors

Another symptom is that Network-manager don't handle the wireless card.

/var/log/syslog may show :

kernel: iwl3945: Intel(R) PRO/Wireless 3945ABG/BG Network Connection driver for Linux, 0.1.15ks
kernel: iwl3945: Copyright(c) 2003-2007 Intel Corporation
kernel: ACPI: PCI Interrupt 0000:03:00.0[A] -> GSI 17 (level, low) -> IRQ 22
kernel: PCI: Setting latency timer of device 0000:03:00.0 to 64
kernel: iwl3945: Detected Intel PRO/Wireless 3945ABG Network Connection
kernel: iwl3945: Tunable channels: 13 802.11bg, 23 802.11a channels
kernel: wmaster0: Selected rate control algorithm 'iwl-3945-rs'
kernel: net eth2: device_rename: sysfs_create_symlink failed (-17)
kernel: udev: renamed network interface wmaster0 to eth2
kernel: net wlan0_rename: device_rename: sysfs_create_symlink failed (-17)

Resolution

in /etc/udev/rules.d/z25_persistent-net.rules remove the line like

# PCI device 0x8086:0x4227 (ipw3945)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:13:02:4c:12:12", NAME="eth2"

then remove the module and re-insert it.

rmmod iwl3945
modprobe iwl3945

in /etc/udev/rules.d/z25_persistent-net.rules you should now have a line like :

# PCI device 0x8086:0x4227 (iwl3945)
SUBSYSTEM=="net", DRIVERS=="?*", ATTR{address}=="00:13:02:4c:12:12", ATTR{type}=="1", NAME="wlan0"

Card does not associate to the access point

If the card accepts the essid, for example, by doing

iwconfig wlan0 essid YourESSID

but does not associate to the access point even when no encryption is needed: The driver seems to need the interface to be in the up state when it gets the essid. So first do

ip link set wlan0 up

then set the essid as before.

Identify wireless card

Running  lspci -nn  should list one of :

03:00.0 Network controller [0280]: Intel Corporation PRO/Wireless 3945ABG Network Connection [8086:4222] (rev 02)

or

03:00.0 Network controller [0280]: Intel Corporation PRO/Wireless 3945ABG Network Connection [8086:4227]

or

03:00.0 Network controller [0280]: Intel Corporation PRO/Wireless 4965 AG or AGN Network Connection [8086:4229]

or

03:00.0 Network controller [0280]: Intel Corporation PRO/Wireless 4965 AG or AGN Network Connection [8086:4230]

Using the latest kernel version of the driver

kernel 2.6.24 includes the iwlwifi driver in the kernel source, but it is quite an old version of the driver.

The website http://www.linuxwireless.org has the latest kernel driver sources, and instructions for using them with your existing kernel. In other words, you can update 2.6.24 with a much more recent driver version. Visit the download page, download the tar file, and follow the included readme. The 2.6.24 version of the driver is stable, but the latest versions have improvements in power management and suspend/resume behaviour.

See also

[http://nanonanonano.net/linux/debian/iwlwifi How to use iwlwifi with etch and an older kernel]

[http://linuxwireless.org/download/ To use the latest kernel version of the drivers]

CategoryHardware