Configuring IBM ThinkPad X31 on-board 802.11b wireless network (2004/11/20)

[Japanese]

This page describes installation procedure of ipw2100 driver (http://ipw2100.sourceforge.net/) on Debian GNU/Linux 3.0 (woody) running Linux 2.4.26.

On my IBM ThinkPad X31, lspci shows the following PCI devices:

  00:00.0 Host bridge: Intel Corp.: Unknown device 3340 (rev 03)
  00:01.0 PCI bridge: Intel Corp.: Unknown device 3341 (rev 03)
  00:1d.0 USB Controller: Intel Corp.: Unknown device 24c2 (rev 01)
  00:1d.1 USB Controller: Intel Corp.: Unknown device 24c4 (rev 01)
  00:1d.2 USB Controller: Intel Corp.: Unknown device 24c7 (rev 01)
  00:1d.7 USB Controller: Intel Corp.: Unknown device 24cd (rev 01)
  00:1e.0 PCI bridge: Intel Corp. 82820 820 (Camino 2) Chipset PCI (-M) (rev 81)
  00:1f.0 ISA bridge: Intel Corp.: Unknown device 24cc (rev 01)
  00:1f.1 IDE interface: Intel Corp.: Unknown device 24ca (rev 01)
  00:1f.3 SMBus: Intel Corp.: Unknown device 24c3 (rev 01)
  00:1f.5 Multimedia audio controller: Intel Corp.: Unknown device 24c5 (rev 01)
  00:1f.6 Modem: Intel Corp.: Unknown device 24c6 (rev 01)
  01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility M6 LY
  02:00.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)
  02:00.1 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)
  02:00.2 FireWire (IEEE 1394): Ricoh Co Ltd: Unknown device 0552 (rev 02)
  02:01.0 Ethernet controller: Intel Corp.: Unknown device 101e (rev 03)
  02:02.0 Network controller: Intel Corp.: Unknown device 1043 (rev 04)

The last line indicates a Centrio-based 802.11b wireless network interfaces (compatible with Intel PRO/Wireless 2100?).

1. Fetch the ipw2100 driver version 0.54 from http://prdownloads.sourceforge.net/ipw2100/ipw2100-0.54.tgz?download. Note that later versions won't work with Linux 2.4.x.
2. Fetch the ipw2100 firmware from http://ipw2100.sourceforge.net/firmware.php, and extract in /usr/local/etc/firmware.
3. Enable the following options in /usr/src/linux/.config.
  #
  # Cryptographic options
  #
  CONFIG_CRYPTO=y
  CONFIG_CRYPTO_ARC4=m
  
  #
  # Library routines
  #
  CONFIG_CRC32=m
4. Compile and install kernel modules.
  # cd /usr/src/linux
  # make oldconfig
  # make dep clean bzlilo modules modules_install
  
5. Compile and install ipw2100 driver.
  # tar xzvf ipw2100-0.54.tar.gz
  # cd ipw2100-0.54
  # make -DCONFIG_IPW2100_LEGACY_FW_LOAD=y install
6. Save the following script as /usr/local/sbin/config-ipw2100.
  #!/bin/sh
  # 
  # Start/stop script for ipw2100 wireless network driver.
  # Copyright (c) 2003, Hiroyuki Ohsaki.
  # All rights reserved.
  # 
  # $Id: index.pod,v 1.1 2005/10/24 13:08:51 oosaki Exp $
  # 
  
  start_iface()
  {
    echo "Starting network interface $iface..."
    modprobe -s $module $module_opts
    if [ -n "$key" ]; then
      iwconfig $iface key "$key"
    fi
    iwconfig $iface essid "$ESSID"
    if pump -i $iface; then
      pump -i $iface --status
    else
      stop_iface
    fi
  }
  
  stop_iface()
  {
    echo "Stopping network interface eth0..."
    ifconfig $iface down
    rmmod -s $module
  }
  
  PATH=/usr/bin:/bin:/usr/sbin:/sbin
  
  # import ESSID/WEP setting from pcmcia-cs package
  ADDRESS='0,0,0,0'
  . /etc/pcmcia/wireless.opts
  
  module=ipw2100
  module_opts='firmware=/usr/local/etc/firmware/ipw2100-1.3.fw'
  iface=eth0
  
  # convert WEP key in XX:XX:XX:XX:XX format
  case "$KEY" in
    s:*)
      key=`echo -n "$KEY" | od -t x1 | head -1 | cut -d ' ' -f 4- | tr ' ' ':'`
      break
      ;;
    [0-9a-fA-F]*)
      key=`echo "$KEY" | sed -e 's/\(..\)/\1:/g' -e 's/:$//'`
      break
      ;;
  esac
  
  # force to kill DHCP client
  killall -9 pump
  
  if ! ifconfig | grep "^$iface" >/dev/null; then
    start_iface
  else
    stop_iface
  fi
    </pre>
  
7. Run /usr/local/sbin/config-ipw2100 for activating/deactivating wireless network.

POD ERRORS

Hey! The above document had some coding errors, which are explained below:

Around line 36:

=over without closing =back


Hiroyuki Ohsaki (ohsaki[atmark]lsnl.jp)