How do I make my Orinoco (Agere) Wireless PCMCIA card work under Linux 2.4.x ?

Notice : I wrote down these instructions because it was not so easy to setup this damn card to work with Kismet or Airsnort.
Be aware that recompiling your kernel can hurt your machine and event prevent it from booting (especially if you "modularize" the IDE driver !!)
Do not attempt to follow this guideline if you do not understand the underlying concepts !!

Guideline

First, install the wireless tools.

Now let's check we don't use the patched drivers :

[root@X src]# iwconfig
lo no wireless extensions.

eth0 no wireless extensions.

eth1 IEEE 802.11-DS ESSID:"ABCD" Nickname:"X"
Mode:Managed Frequency:2.427GHz Access Point: 44:44:44:44:44:44
Bit Rate:11Mb/s Tx-Power=15 dBm Sensitivity:1/3
Retry limit:4 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
Link Quality:0/92 Signal level:134/153 Noise level:134/153
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0

[root@X src]# iwpriv
lo no private ioctls.

eth0 no private ioctls.

eth1 Available private ioctl :
force_reset (8BE0) : set 0 & get 0
card_reset (8BE1) : set 0 & get 0
set_port3 (8BE2) : set 1 int & get 0
get_port3 (8BE3) : set 0 & get 1 int
set_preamble (8BE4) : set 1 int & get 0
get_preamble (8BE5) : set 0 & get 1 int
set_ibssport (8BE6) : set 1 int & get 0
get_ibssport (8BE7) : set 0 & get 1 int

The Wifi card is recognized but since we do not get a line with "monitor" we have to patch the orinoco driver.

Get the latest stable kernel source package :
wget http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.20.tar.bz2

Get and apply the latest kernel patch :
wget http://www.kernel.org/diff/.../testing/patch-2.4.21-pre6.bz2
patch -p0 --dry --run < patch-2.4.21-pre6

If no error : patch -p1 < patch-2.4.21-pre6

Rebuild the kernel :
make menuconfig, save the config file to an alternate file
make mrproper, will delete the config file and clean everything
make menuconfig
, load the alternate file
make menuconfig
, make the below choices :

CONFIG_ISA=y
CONFIG_PCMCIA=M
CONFIG_CARDBUS=y
CONFIG_HOTPLUG_PCI=m
CONFIG_NET_PCMCIA=y
CONFIG_AIRO=m
CONFIG_HERMES=m
CONFIG_PLX_HERMES=m
CONFIG_PCI_HERMES=m
CONFIG_PCMCIA_HERMES=m
CONFIG_AIRO_CS=m
CONFIG_NET_WIRELESS=y

make dep
make bzImage
make modules
make modules_install
cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.x

Modify /etc/lilo.conf accordingly , run lilo and reboot.

You should have the latest Orinoco driver (0.13b). Check by looking at dmesg :

[root@laptop linux-2.4.21-pre6]# dmesg | grep orinoco
orinoco.c 0.13b (David Gibson <hermes@gibson.dropbear.id.au> and others)
orinoco_cs.c 0.13b (David Gibson <hermes@gibson.dropbear.id.au> and others)

If not, get it
Get the patch on the Airsnort Web site

Patch the source code of the drivers

make ; make install

The patched drivers should be placed in /lib/modules/2.4.21-pre6/kernel/drivers/net/wireless

Now, reboot :

[root@laptop linux-2.4.21-pre6]# iwpriv
lo no private ioctls.

eth0 no private ioctls.

eth1 Available private ioctl :
force_reset (8BE0) : set 0 & get 0
card_reset (8BE1) : set 0 & get 0
set_port3 (8BE2) : set 1 int & get 0
get_port3 (8BE3) : set 0 & get 1 int
set_preamble (8BE4) : set 1 int & get 0
get_preamble (8BE5) : set 0 & get 1 int
set_ibssport (8BE6) : set 1 int & get 0
get_ibssport (8BE7) : set 0 & get 1 int
monitor (8BE8) : set 2 int & get 0
dump_recs (8BFF) : set 0 & get 0

Success !!

For information here is a dump of lsmod :

root@laptop linux-2.4.21-pre6]# lsmod
Module Size Used by Not tainted
soundcore 3780 0 (unused)
nfsd 72784 0 (autoclean)
lockd 51024 0 (autoclean) [nfsd]
sunrpc 67004 0 (autoclean) [nfsd lockd]
orinoco_cs 4788 1
orinoco 38188 0 [orinoco_cs]

hermes 6308 0 [orinoco_cs orinoco]
ds 7016 1 [orinoco_cs]
yenta_socket 10624 1

pcmcia_core 44192 0 [orinoco_cs ds yenta_socket]
floppy 50812 0
via-rhine 13744 1 (autoclean)
mii 2560 0 (autoclean) [via-rhine]
keybdev 2144 0 (unused)
mousedev 4404 1
hid 19460 0 (unused)
input 3520 0 [keybdev mousedev hid]
usb-uhci 23500 0 (unused)
usbcore 70368 1 [hid usb-uhci]
rtc 6844 0 (autoclean)

Stephane REYTAN - E-mail me reytans(at)wanadoo.fr   
Home page