CLI Home
Archive
Articles

Fedora Core 6 and the IPW2200 Wireless Driver

Bill Moss
Updated October 27, 2006

kernel-2.6.18-1.2798.fc6, ipw2200-1.2.0, ieee80211-1.2.15, firmware-3.0

The FC6 kernel 2.6.18-1.2798.fc6 includes version 1.1.1 of the ipw2200 driver. Because the firmware is proprietary, you will have to install version 3.0 yourself if you have not already done so.

  Download ipw2200-fw-3.0.tgz from http://ipw2200.sourceforge.net/firmware.php
  unarchive in /lib/firmware
  
  or to install all firmware versions
  
  # rpm -ivh http://rpm.livna.org/livna-release-6.rpm
  # yum install ipw2200-firmware

Make sure you install the correct firmware version. The firmware web site links to the firmware by ipw2200 version. The remainder of this section shows you how to manually install the latest version of the ipw2200 driver and the ieee80211 subsystem.

Install firmware version 3.0 and then follow these steps. We will assume here that all install directories are subdirectories of /root.

Install kernel-devel from FC6 updates.

  # yum --enablerepo=updates install kernel-devel

If you previously installed the ipw2200-1.1.3 kernel module and the ieee80211-1.1.14 modules,

  # cd /root/ipw2200-1.1.3
  # make uninstall
  # cd /root/ieee80211-1.1.14
  # make uninstall

Make sure the header for the latest version of the wireless-tools is used.

  # cd /usr/include/linux
  # rm wireless.h
  # ln -s ../wireless.h .

Download and install the ieee80211 subsystem.

  Download ieee80211-1.2.15.tgz from http://ieee80211.sf.net and unarchive
  Download ieee80211-1.2.15-patch_kernel.patch from http://ieee80211.sf.net
  # cd /root/ieee80211-1.2.15
  # patch < ieee80211-1.2.15-patch_kernel.patch
  Change Modules.symvers to Module.symvers in Makefile (two occurrences)
  # make (yes to removing files, commenting out definitions, and stripping symbols)
  # make install

The ieee80211 modules are installed in

  /lib/modules/2.6.18-1.2798.fc6/net/ieee80211

Note that this is not the same directory that the original kernel modules were installed in.

The ieee80211 headers are installed in

  /lib/modules/2.6.18-1.2798.fc6/include/net

Now install the ipw2200-1.2.0 module for kernel 2.6.18-1.2798.fc6.

  Download ipw2200-1.2.0.tgz from http://ipw2200.sourceforge.net and unarchive
  # cd /root/ipw2200-1.2.0
  # ./remove-old (yes to commenting out definitions)
  Change Modules.symvers to Module.symvers in Makefile (two occurrences)
  # make
  # make install
  # chmod 744 /lib/modules/2.6.18-1.2798.fc6/kernel/drivers/net/wireless/ipw2200.ko

Set module options.

  /etc/modprobe.conf 
  options ipw2200 hwcrypto=1 associate=0

The ipw2200 option hwcrypto=0 turns off hardware encryption. This is now the default. With previous versions of ipw2200, users have reported firmware restarts and slow transfer rates when using hardware encryption. Please test.

The ipw2200 option associate=0 turns off scanning when the driver is not associated. With the default setting associate=1, the driver does about three scans in 1.2 seconds and will automatically associate with open and unencrypted access points. I recommend the option associate=0 for users of NetworkManager for several reasons. NetworkManager gives the user control over the access points the driver associates with. NetworkManager will request a scan when it needs one. When NetworkManager disables wireless, it doesn't make sense to keep scanning.

Reboot and look for errors in dmesg as root:

  # dmesg | grep ipw2200
  
  Output:
  ipw2200: Intel(R) PRO/Wireless 2200/2915 Network Driver, 1.2.0dmq
  ipw2200: Copyright(c) 2003-2006 Intel Corporation
  ipw2200: Detected Intel PRO/Wireless 2200BG Network Connection
  ipw2200: Detected geography ZZM (11 802.11bg channels, 0 802.11a channels)

If you see errors, you forgot to install the firmware or the ieee80211 subsystem.

Configure the wireless interface using the System -> Administration -> Network. Under the hardware tab, make sure that your wireless card is identified as 'Intel Corporation Pro/Wireless'. If something else appears, delete it, Save, and then use the New button to add the correct wireless interface.

Use the Devices tab and the Edit button to set ESSID, Mode, and WEP key. Check to see if the following two files have been created.

  /etc/sysconfig/network-scripts/ifcfg-eth1
  IPV6INIT=no
  ONBOOT=no
  USERCTL=yes
  PEERDNS=yes
  GATEWAY=
  TYPE=Wireless
  DEVICE=eth1
  HWADDR=xx:xx:xx:xx:xx:xx
  BOOTPROTO=dhcp
  NETMASK=
  DHCP_HOSTNAME=
  IPADDR=
  DOMAIN=
  ESSID=XXXXXX
  CHANNEL=1
  MODE=Managed
  RATE=54Mb/s

and

  /etc/sysconfig/network-scripts/keys-eth1
  KEY=xxxxxxxxxxxxxxxxxxxxxxxxxx

Your MAC address, ESSID, and WEP key should appear in these files. Note that my wireless network uses a WEP key with 26 hex characters.

Monitor and Activate the wireless interface using the Network Monitor panel applet or else use NetworkManager.

Check the configuration with iwconfig.

  # iwconfig eth1
  IEEE 802.11b  ESSID:"cuairnet"
  Mode:Managed  Frequency:2.437 GHz  Access Point: 00:0F:90:7B:32:D0
  Bit Rate:11 Mb/s   Tx-Power=20 dBm   Sensitivity=8/0
  Retry limit:7   RTS thr:off   Fragment thr:off
  Encryption key:xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xx   Security mode:open
  Link Quality=83/100  Signal level=-47 dBm  Noise level=-83 dBm
  Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
  Tx excessive retries:0  Invalid misc:0   Missed beacon:0

WEP Keys and Security Mode

There are several implementations of WEP and their different naming conventions do nothing but confuse people who are trying to implement WEP. Currently available wireless hardware uses the following WEP key names.

  WEP Encryption Name       Hexadecimal Characters
  
  64 bit (40 bits)          10
  128 bit (104 bits)        26
  (152 bits)                38
  256 bit (232 bits)        58

While the 64 bit implementation of WEP is part of the official standard, be aware that the 128 bit (and higher) implementations are not officially recognized and vary widely between manufacturers. If your wireless device claims to use a 128 bit WEP key, you may get a 'key too long' error if you try to enter 32 hexadecimal characters. In this case, enter 26 hexadecimal characters. The missing 6 hexadecimal characters (24 bits) are added by the encryption algorithm in the device.

There is also a great deal of confusion about the WEP key security modes: restricted and open. Apparently, the interpretation of security mode is dependent on the manufacturer. Early, versions of the ipw2200 driver used the restricted mode by default but the latest version uses the open mode. My advice is to go with the default open mode and only experiment with the restricted mode if all else fails. The mode can be set using the iwconfig command.

  iwconfig eth1 key restricted