ipw2100 mini-HOWTO

May 31, 2004

1. Introduction

This is a short guide to install the Intel PRO/Wireless 2100 Driver for Linux. The ipw2100 project, created by Intel, provides support for the PRO/Wireless 2100 mini PCI adapter found in many Centrino based systems. Parts of this mini-HOWTO are specific to a fresh installation of Fedora Core 2 on a standard i386 system but these steps should translate to other distributions quite easily. I have also appended a section at the end which is specific to Debian systems.

Note: At the time of the first draft of this HOWTO, ipw2100 was at version 0.45 and still required hostap but more recent versions have dropped this dependency. Most of the steps below were written as of version 0.45 but the Debian section is current as of version 0.60 which does not require hostap.

Notation: A % prompt indicates a command executed as a normal user while a # prompt indicates a command executed as root.

2. Preliminary Checks

There are a few dependencies to check before installing the driver. According to the ipw2100 documentation:

In order to use the ipw2100 driver you will need the following:

1. hostap-driver-0.1.3 (for WEP {en,de}cryption)
2. Linux (of course) with a 2.4.23+ or 2.6.1+ kernel
3. Wireless Extensions (v16) and Tools (v27)
4. The ipw2100 driver.
5. The ipw2100 binary firmware image.

Fedora Core 2 ships with the 2.6.5 kernel which includes the wireless extensions, and the wireless-tools package should be installed by default. If you want to make sure you have everything you need, confirm that you have wireless-tools, hotplug, and pcmcia-cs installed:

% rpm -q hotplug pcmcia-cs wireless-tools
hotplug-2004_04_01-1
pcmcia-cs-3.2.7-1.5
wireless-tools-26-4

If you issue the above command and all three packages are listed, you should have everything you need to begin.

3. Install hostap-driver

  1. Download the hostap-driver source code at http://hostap.epitest.fi As of this writing, the latest version was 0.1.3.

  2. Extract the source code:

     % tar xzvf hostap-driver-0.1.3.tar.gz
     % cd hostap-driver-0.1.3
    
  3. Follow the instructions for “Systems using kernel tree PCMCIA modules” in the README file.

  4. Edit the Makefile to point to the kernel module build directory. For a normal Fedora Core 2 install, change the line

     KERNEL_PATH=/usr/src/linux
    

    to

     KERNEL_PATH=/lib/modules/2.6.5-1.358/build/
    
  5. Compile and install the modules:

     % make
     # make install
    

4. Install ipw2100

Download the source code at http://ipw2100.sf.net and uncompress it into a temporary directory:

% tar zxvf ipw2100-0.45.tgz
% cd ipw2100-0.45

Follow the “BUILDING EXTERNAL” section in the ipw2100 INSTALL file:

% make HOSTAP=/path/to/hostap-driver-0.1.3

In my case this was /home/jrblevin/src/hostap-driver-0.1.3.

Then install the modules:

# make HOSTAP=/home/jrblevin/src/hostap-driver-0.1.3 install

5. Install the firmware

Download the firmware corresponding to your version of ipw2100 and uncompress it to a temporary directory.

% unzip 96377_96377.zip 
Archive:  96377_96377.zip
  inflating: LICENSE                 
  inflating: ipw2100-1.1-p.fw        
  inflating: ipw2100-1.1-i.fw        
  inflating: ipw2100-1.1.fw

The firmware must be placed in /usr/lib/hotplug/firmware:

# mkdir -p /usr/lib/hotplug/firmware/
# cp ipw2100-1.1-p.fw ipw2100-1.1-i.fw ipw2100-1.1.fw /usr/lib/hotplug/firmware/

Note [2005.05.28]: In Fedora Core 4 Test 2 (and presumably all versions thereafter) the firmware should be placed in /etc/firmware instead. Thanks to Robert Williams for pointing this out on Bugzilla.

6. Loading the module

Load the module with

# modprobe ipw2100

Then check the output of dmesg to see if it was successful. If so you should see something like the following:

# dmesg | tail
ipw2100: Intel(R) PRO/Wireless 2100 Network Driver, 0.45
ipw2100: Copyright(c) 2003-2004 Intel Corporation
divert: allocating divert_blk for eth1
Detected ipw2100 PCI device at 0000:02:0b.0, dev: eth1, mem: 0xD0201000-0xD0201FFF -> 229c4000, irq: 9
eth1: Using hotplug firmware load.
ipw2100: Associated with '22cshepherd' at 11Mbps, channel 6

This shows that the wireless card is on eth1, the firmware was loaded, and a wireless access point was found. You can now configure the device for your distribution. This is described in the INSTALL file in the section titled “LOADING THE DRIVER.” On Fedora Core 2, you can use system-config-network.

7. Debian GNU/Linux

On a Debian system, begin with the steps in this section. There are (at least) two ways to build and install the module: module-assistant or make-kpkg. The first is probably the best choice if you only want to build the ipw2100 module. However, if you also want to build a custom kernel while you are at it, the second option is better.

First off, make sure you are running a 2.6.x kernel. No matter which method you use to build the module, make sure the ipw2100-source package is installed. It is available in the Debian testing branch:

# apt-get install ipw2100-source

module-assistant

Make sure the module-assistant package is installed.

# m-a update ; m-a a-i ipw2100

Example:

# m-a update ; m-a a-i ipw2100

Updated infos about 57 packages
Extracting the package tarball, /usr/src/ipw2100-source.tar.gz
Done with /usr/src/ipw2100-modules-2.6.8-v505dx_0.60-1+20041223_i386.deb .
(Reading database ... 165610 files and directories currently installed.)
Preparing to replace ipw2100-modules-2.6.8-v505dx 0.60-1+20041223
  (using .../ipw2100-modules-2.6.8-v505dx_0.60-1+20041223_i386.deb) ...
Unpacking replacement ipw2100-modules-2.6.8-v505dx ...
Setting up ipw2100-modules-2.6.8-v505dx (0.60-1+20041223) ...

m-a is an abbreviated command for module-assistant,m-a update updates the internal information about the available modules, and a-i is an abbreviation for “auto-install” which automatically builds and installs the module.

make-kpkg

This is the method I use since each time you build a custom kernel, you also have to rebuild the ipw2100 module. Assuming all the required packages are installed (kernel-source, etc.) and you have uncompressed and configured the kernel sources, everything can be done in one step. For example, I use the following command when building a kernel for my laptop:

# cd /usr/src/kernel-source-2.6.8
# fakeroot make-kpkg --append-to-version "-v505dx" --revision "20041223"
    --added_modules ipw2100 kernel_image modules_image

For more information on building kernels on Debian, see Chapter 7 of the Debian Reference.

Installation

The package will be placed in /usr/src after it is built. Simply install it like this:

# cd /usr/src
# dpkg -i ipw2100-modules-2.6.8-v505dx_0.60-1+20041223_i386.deb

Configuration

First, download the firmware corresponding to your version of ipw2100 and place it in /usr/lib/hotplug/firmware/.

You might also want to add some options in /etc/modprobe.d/aliases. I prefer to keep the wireless card on wlan0 so my aliases file looks like this:

alias wlan0 ipw2100
options ipw2100 ifname=wlan0

Next, you must configure the interface in /etc/network/interfaces. Something like this should do:

iface wlan0 inet dhcp
        pre-up modprobe ipw2100 ifname=wlan0
        post-down rmmod ipw2100

Then, to bring the interface up or down, use

# ifup wlan0
# ifdown wlan0