Differences between revisions 61 and 62
Revision 61 as of 2010-06-02 17:25:08
Size: 9213
Editor: GeoffSimmons
Comment: s/source.list/sources.list/
Revision 62 as of 2010-10-10 13:42:47
Size: 8609
Editor: GeoffSimmons
Comment: Remove most Etch references, device usage is in WiFi/HowToUse, amendments and formatting.
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:
This page describes how to use iwl-wifi ([[http://www.intellinuxwireless.org/|Intel Wireless WiFi Link driver]]) with an iwl3945 or iwl4965. ~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: none-~
----
= Intel PRO/Wireless 3945 and WiFi Link 4965 devices (iwlwifi) =
This page describes how to enable support for !WiFi devices based on Intel 3945 and 4965 chipsets on Debian systems.
Line 4: Line 7:
 . <<TableOfContents(2)>> <<TableOfContents(2)>>
Line 6: Line 9:
= Introduction =
The iwl-wifi drivers are open-source drivers support
ed by Intel, replacing the older Intel drivers [[ipw3945]] which needed some userspace daemon (see <<FootNote(ipw3945-vs-iwl3945: The Intel code in ipw3945 implements a number of non-free algorithms which are not realized in iwl3945, including automatic calibration of the radio power based on temperature variations, and dynamic tuning of the radio sensitivity based on received signal strength. These may extend the operating range of the adapter, improve throughput in various environmental conditions, and reduce power consumption, but they are kept secret by Intel.)>>).
iwl3945 and iwl4965 are modules produced by the iwlwifi driver, supporting Intel 3945ABG and 4965AGN wireless LAN devices. This is an open-source driver supported by Intel, replacing the out-of-tree ipw3945 driver which required a userspace daemon.<<FootNote(ipw3945-vs-iwl3945: The Intel code in ipw3945 implements a number of non-free algorithms which are not realized in iwl3945, including automatic calibration of the radio power based on temperature variations, and dynamic tuning of the radio sensitivity based on received signal strength. These may extend the operating range of the adapter, improve throughput in various environmental conditions, and reduce power consumption, but they are kept secret by Intel.)>>  [[#supported|Supported devices]] are listed at the end of this page.
Line 9: Line 11:
Supported hardware :
 * Intel 3945 and 4965 : since Etch 2.6.23 and later kernels (Etch's kernel 2.6.18 had [[ipw3945]]).
 * Intel 5100 and 5300 : see page [[iwlagn]].
Non-free firmware is required, which can be provided by the DebianPkg:firmware-iwlwifi package. Firmware must be installed prior to device operation.
Line 13: Line 13:
= Installation =
 * Install 2.6.24 (or later) kernel, available in :
  * [[EtchAndAHalf]]'s 2.6.24 kernel (not installed by default).
  * [[DebianLenny|Debian Lenny]].
 * Install Firmware. (You will need to add non-free repository to /etc/apt/sources.list)
 {{{
 aptitude install firmware-iwlwifi
{i} For support of the Intel Wireless !WiFi Link 5000, 6000 and 1000 series of devices, see [[iwlagn]].

<<Anchor(installation)>>
== Installation ==

 1. Add a "non-free" component to {{{/etc/apt/sources.list}}}, for example: {{{
# Debian Lenny/5.0
deb http://ftp.us.debian.org/debian lenny main contrib non-free
Line 21: Line 22:
== Loading the iwl3945 / iwl4965 modules ==
 * The module should be loaded automatically by udev when the system starts.
 * Most laptops have a radio kill switch (or a function key combination) to physically disable the radio (when inside an airplane for example). Make sure to enable the radio.
 * If the module isn't loaded automatically, issue this command:
 __ iwl4965 : __
 {{{
modprobe iwl4965
 1. Update the list of available packages. Install the DebianPkg:firmware-iwlwifi and DebianPkg:wireless-tools packages: {{{
# aptitude update
# aptitude install firmware-iwlwifi wireless-tools
Line 29: Line 26:
 __ iwl3945 : __
 {{{
modprobe iwl3945
 1. The necessary kernel module should be [[Modules|automatically loaded]]. If necessary, it can be manually loaded via either: {{{
# modprobe iwl3945
}}} ''or'' {{{
# modprobe iwl4965
Line 33: Line 31:
<<Anchor(using)>>  1. Verify your device has an available interface: {{{
# iwconfig
}}}
 If listed, {{{wmaster0}}} is an internal interface representing the physical device. It should not be used for configuration.
Line 35: Line 36:
== Using iwlWifi ==
 * You can use Gnome DebPkg:network-manager to use the interface.
__ Gnome Network Manager __
 1. Raise the interface to activate the radio, for example: {{{
# ifconfig wlan0 up
}}}
 1. [[WiFi/HowToUse|Configure]] your wireless interface as appropriate.
Line 39: Line 41:
 * Gnome- Double click on Network Connection (If you don't have an icon click on add to panel, then Select "Network Monitor" and click add)
 * Name: Wlan0
 * Click on configure
 * Select Wireless connection
 * Properties
 * Pick a network, add a password, select dhcp and click ok
 * You should be connected.
 * If the user as who you are currently logged in does not belong to group netdev add yourself to it:
{{{
adduser foo-user netdev
}}}
''Alternatively,''
<<Anchor(ipw3945d-to-iwl)>>
== Switching from ipw3945 to iwl3945 ==
Line 52: Line 44:
 * Those who prefer using {{{ifup/ifdown}}} from the command line, I used the following stanza in {{{/etc/network/interfaces/}}}:
 {{{
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)!
This section only applies to users upgrading from Debian [[DebianEtch|Etch]].
Line 60: Line 46:
<<Anchor(wpa)>>

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

 . {{{
3: wmaster0: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc ieee80211 qlen 1000
    link/ieee802.11 00:13:e8:70:69:fb brd ff:ff:ff:ff:ff:ff
4: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:13:e8:70:69:fb brd ff:ff:ff:ff:ff:ff
}}}
<<Anchor(ipw3945d-to-iwl)>>

= Switching from ipw3945 to iwl3945 =
 * Install as explained above.
 * Check for the line generated by udev for ipw3945 in {{{/etc/udev/rules.d/z**_persistent-net.rules}}}. If it is there, remove it (more explanation in "Common problems and errors" below).
 * Optionally, change the configuration in /etc/network/interfaces by replacing eth2 (or whatever the old name for wireless interface is) with wlan0.
 * Reboot into the new kernel.
 * Verify that wireless networking is functional. If you can connect, but you cannot send/receive anything you might want to check your firewall configuration. For example, if you have configured your firewall using shorewall, you have to change all occurrences of eth2 in the files in /etc/shorewall with wlan0.
 * Install device firmware as described above.
 * Check for the line generated by udev for ipw3945 in {{{/etc/udev/rules.d/70-persistent-net.rules}}}. If present, remove it. See [[#troubleshooting|troubleshooting]] below.
 * Optionally, change the configuration in {{{/etc/network/interfaces}}} by replacing eth2 (or whatever the old name for wireless interface is) with wlan0.
 * Verify that wireless networking is functional. If you can connect, but you cannot send/receive anything you might want to check your firewall configuration. For example, if you are using DebianPkg:shorewall, change all occurrences of eth2 in the files in {{{/etc/shorewall}}} to wlan0.
Line 81: Line 52:
= Common problems and errors = <<Anchor(troubleshooting)>>
== Troubleshooting ==
Line 83: Line 55:
Most laptops have a radio kill switch or function key combination to physically disable the radio (e.g. when inside an airplane). Make sure to enable the radio.
Line 84: Line 58:

== Interfaces is named "wlan0_rename" (sysfs_create_symlink failed) ==
Another symptom is that Network-manager don't handle the wireless card.

/var/log/syslog may show :

 . {{{
=== Interface is named "wlan0_rename" (sysfs_create_symlink failed) ===
[[NetworkManager]] may not handle the wireless device.  {{{/var/log/syslog}}} may show output similar to:
 . ~- {{{
Line 101: Line 71:
}}} }}} -~
Line 103: Line 73:
=== Resolution ===
in the file {{{/etc/udev/rules.d/z25_persistent-net.rules}}} (or {{{70-persistent-net.rules}}} ) remove the line like
==== Resolution ====
In the {{{/etc/udev/rules.d/70-persistent-net.rules}}} file, remove the line similar to:
Line 110: Line 80:
then remove the module and re-insert it. ... then remove the module and re-insert it:
Line 113: Line 83:
rmmod iwl3945
modprobe iwl3945
# modprobe -r iwl3945 ; modprobe iwl3945
Line 116: Line 85:
in /etc/udev/rules.d/z25_persistent-net.rules you should now have a line like : You should now have a line similar to the following in {{{/etc/udev/rules.d/70-persistent-net.rules}}}:
Line 122: Line 91:
== Card does not associate to the access point ==
If the card accepts the essid, for example, by doing :

=== Does not associate to access point ===
/* Is any of this still necessary for Linux 2.6.26? */

If a SSID is defined but the device does not associate to the access point, even when no encryption is required, the interface may first need to be raised before defining the SSID:
Line 126: Line 98:
iwconfig wlan0 essid YourESSID # ip link set wlan0 up
#
iwconfig wlan0 essid YourESSID
Line 128: Line 101:
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
If the device still does not associate, even with a SSID and encryption key(s) set, try:
Line 131: Line 105:
ip link set wlan0 up # iwconfig wlan0 ap any
Line 133: Line 107:
then set the essid as before.
Line 135: Line 108:
If the card still does not associate to the access point even with essid and encryption keys set, try You might want to try different values for {{{wpa-scan-ssid}}} and {{{wpa-ap-scan}}} if defined in {{{/etc/network/interfaces}}}. The former accepts either 0 or 1, the latter 0, 1 or 2. Setting {{{wpa-scan-ssid}}} to 0 and {{{wpa-ap-scan}}} to 1 is a good first bet, but make sure to try other configurations if it doesn't work.

You may also find that setting a high retry value helps with WEP-enabled access points that appear to work, or that work with other wireless LAN devices but send repeated disassociations. Try something like the following and insert an arbitrary retry value:
Line 138: Line 113:
iwconfig wlan0 ap any
}}}
If you configured you card in /etc/network/interfaces and you cannot associate to you access point, you might want to try different values for wpa-scan-ssid and wpa-ap-scan. The former accepts either 0 or 1, the latter 0, 1 or 2. Setting wpa-scan-ssid to 0 and wpa-ap-scan to 1 is a good first bet, but make sure to try other configurations if it doesn't work.

You may also find that setting a high retry value helps with WEP enabled access points that appear to work or that work with other cards but send repeated disassociates. Try something like this and insert an arbitrary retry value. It may take a few tries with dhclient to get an IP:

 . {{{
iwconfig wlan0 retry <value>
# iwconfig wlan0 retry <value>
Line 148: Line 116:
== Can't see any network ==
If networkmanager seems to detect the card, but can't "see" any network, it might be because the firmware isn't installed. make sure you have installed the firmware, then unloaded and reloaded the module.
It may take a few tries with dhclient to get an IP address.

=== Cannot see any network ===
If [[NetworkManager]] can use the device but not detect any wireless network, firmware may not be installed:
Line 158: Line 128:
== You are able to associate, but you cannot send nor receive anything on the interface ==
If this happens, your firewall might be blocking your traffic. This will mostly happen if you switch from ipw3945/ipw4945 to iwlwifi because the name of the interface changes from eth2 to wlan0. Check your firewall configuration, e.g. if you are using shorewall check the files in /etc/shorewall/ and change the name of the interface to wlan0.
Install device firmware as described in [[#installation|Installation]] to resolve.
Line 161: Line 130:
= Supported devices = === Association successful, cannot send or receive ===
Your firewall might be blocking traffic. This will mostly happen if you switch from ipw3945 to iwlwifi, as the interface name changes from eth2 to wlan0. Check your firewall configuration. For example, if you are using DebianPkg:shorewall, check the files in /etc/shorewall/ and change the interface name to wlan0.

<<Anchor(supported)>>
== Supported Devices ==
Line 165: Line 138:
The following list is based on the ''alias'' fields of {{{ modinfo iwl3945}}} and {{{ modinfo iwl4965}}} on Lenny. The following list is based on the ''alias'' fields of {{{modinfo iwl3945}}} and {{{modinfo iwl4965}}} in Debian 2.6.26 (2.6.26-25lenny1) kernel images.
Line 175: Line 148:
= See also =
 * [[WiFi/HowToUse]] - HowToUse Wifi adapter.
 * [[http://www.intellinuxwireless.org/]] - iwlwifi driver homepage.
 * [[http://nanonanonano.net/linux/debian/iwlwifi|How to use iwlwifi with etch and an older kernel]]
== See Also ==
 * [[ipw2200]] - Intel PRO/Wireless 2100, 2200 and 2915 devices
 * [[iwlagn]] - Intel Wireless !WiFi Link 4965, 5100, 5300, 5350, 5150, 1000, 6000, 6250 devices
 * [[WiFi/HowToUse|How to use a WiFi interface]]

== External Links ==
 * [[http://www.intellinuxwireless.org/]] - Intel Wireless !WiFi Link drivers for Linux
Line 184: Line 160:
 . CategoryHardware CategoryHardware

Translation(s): none


Intel PRO/Wireless 3945 and WiFi Link 4965 devices (iwlwifi)

This page describes how to enable support for WiFi devices based on Intel 3945 and 4965 chipsets on Debian systems.

iwl3945 and iwl4965 are modules produced by the iwlwifi driver, supporting Intel 3945ABG and 4965AGN wireless LAN devices. This is an open-source driver supported by Intel, replacing the out-of-tree ipw3945 driver which required a userspace daemon.1 Supported devices are listed at the end of this page.

Non-free firmware is required, which can be provided by the firmware-iwlwifi package. Firmware must be installed prior to device operation.

{i} For support of the Intel Wireless WiFi Link 5000, 6000 and 1000 series of devices, see iwlagn.

Installation

  1. Add a "non-free" component to /etc/apt/sources.list, for example:

    # Debian Lenny/5.0
    deb http://ftp.us.debian.org/debian lenny main contrib non-free
  2. Update the list of available packages. Install the firmware-iwlwifi and wireless-tools packages:

    # aptitude update
    # aptitude install firmware-iwlwifi wireless-tools
  3. The necessary kernel module should be automatically loaded. If necessary, it can be manually loaded via either:

    # modprobe iwl3945

    or

    # modprobe iwl4965
  4. Verify your device has an available interface:

    # iwconfig

    If listed, wmaster0 is an internal interface representing the physical device. It should not be used for configuration.

  5. Raise the interface to activate the radio, for example:

    # ifconfig wlan0 up
  6. Configure your wireless interface as appropriate.

Switching from ipw3945 to iwl3945

This section only applies to users upgrading from Debian Etch.

  • Install device firmware as described above.
  • Check for the line generated by udev for ipw3945 in /etc/udev/rules.d/70-persistent-net.rules. If present, remove it. See troubleshooting below.

  • Optionally, change the configuration in /etc/network/interfaces by replacing eth2 (or whatever the old name for wireless interface is) with wlan0.

  • Verify that wireless networking is functional. If you can connect, but you cannot send/receive anything you might want to check your firewall configuration. For example, if you are using shorewall, change all occurrences of eth2 in the files in /etc/shorewall to wlan0.

  • Remove the ipw3945-modules-* and ipw3945d packages.

Troubleshooting

Most laptops have a radio kill switch or function key combination to physically disable the radio (e.g. when inside an airplane). Make sure to enable the radio.

NetworkManager may not handle the wireless device. /var/log/syslog may show output similar to:

  • 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)

  • This may occur if you had used ipw3945 module before.

Resolution

In the /etc/udev/rules.d/70-persistent-net.rules file, remove the line similar to:

  • # 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:

  • # modprobe -r iwl3945 ; modprobe iwl3945

You should now have a line similar to the following in /etc/udev/rules.d/70-persistent-net.rules:

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

Does not associate to access point

If a SSID is defined but the device does not associate to the access point, even when no encryption is required, the interface may first need to be raised before defining the SSID:

  • # ip link set wlan0 up
    # iwconfig wlan0 essid YourESSID

If the device still does not associate, even with a SSID and encryption key(s) set, try:

  • # iwconfig wlan0 ap any

You might want to try different values for wpa-scan-ssid and wpa-ap-scan if defined in /etc/network/interfaces. The former accepts either 0 or 1, the latter 0, 1 or 2. Setting wpa-scan-ssid to 0 and wpa-ap-scan to 1 is a good first bet, but make sure to try other configurations if it doesn't work.

You may also find that setting a high retry value helps with WEP-enabled access points that appear to work, or that work with other wireless LAN devices but send repeated disassociations. Try something like the following and insert an arbitrary retry value:

  • # iwconfig wlan0 retry <value>

It may take a few tries with dhclient to get an IP address.

Cannot see any network

If NetworkManager can use the device but not detect any wireless network, firmware may not be installed:

  • ACPI: PCI Interrupt 0000:03:00.0[A] -> GSI 17 (level, low) -> IRQ 17
    kernel: PM: Writing back config space on device 0000:03:00.0 at offset 1 (was 100102, writing 40100106)
    kernel: firmware: requesting iwlwifi-4965-1.ucode
    kernel: iwl4965: iwlwifi-4965-1.ucode firmware file req failed: Reason -2
    kernel: iwl4965: Could not read microcode: -2

Install device firmware as described in Installation to resolve.

Association successful, cannot send or receive

Your firewall might be blocking traffic. This will mostly happen if you switch from ipw3945 to iwlwifi, as the interface name changes from eth2 to wlan0. Check your firewall configuration. For example, if you are using shorewall, check the files in /etc/shorewall/ and change the interface name to wlan0.

Supported Devices

The page HowToIdentifyADevice/PCI explains how to identify a PCI device.

The following list is based on the alias fields of modinfo iwl3945 and modinfo iwl4965 in Debian 2.6.26 (2.6.26-25lenny1) kernel images.

  • PCI: 8086:4222 Intel Corporation PRO/Wireless 3945ABG [Golan] Network Connection
    PCI: 8086:4227 Intel Corporation PRO/Wireless 3945ABG [Golan] Network Connection
    
    PCI: 8086:4229 Intel Corporation PRO/Wireless 4965 AG or AGN [Kedron] Network Connection
    PCI: 8086:4230 Intel Corporation PRO/Wireless 4965 AG or AGN [Kedron] Network Connection

See Also


CategoryHardware

  1. ipw3945-vs-iwl3945: The Intel code in ipw3945 implements a number of non-free algorithms which are not realized in iwl3945, including automatic calibration of the radio power based on temperature variations, and dynamic tuning of the radio sensitivity based on received signal strength. These may extend the operating range of the adapter, improve throughput in various environmental conditions, and reduce power consumption, but they are kept secret by Intel. (1)