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
      
    =item 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
  5. 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>
      
    =item 7. Run F</usr/local/sbin/config-ipw2100> for activating/deactivating wireless network.

Hiroyuki Ohsaki (oosaki[atmark]ist.osaka-u.ac.jp)