Linux and Lucent wireless cards

General observations

After a very long delay I've had a chance to play with these cards, and I'm happy to say that they appear to work well. However, there are a number of different drivers floating around for these cards which can be kind of confusing. The setup I have working with a Orinoco Gold + Silver card uses the kernel 2.4.21 PCMCIA drivers (orinoco-0.13b) patched using the monitor mode patch from the Shmoo Orinoco Monitor Mode Page. There's many ways to skin this cat, this is just how it worked for me under RedHat 9.

Software

Here's what I used:
Link Description
kernel-2.4.21 Enabled the following kernel options:
  • CONFIG_NET_RADIO=y
  • CONFIG_HERMES=y
  • CONFIG_PCMCIA_HERMES=y
orinoco-0.13b-patched.diff The Orinoco Monitor Mode patch from the good people at shmoo, applies cleanly against the driver (orinoco-0.13b) shipped with the 2.4.21 kernel.

When I insert my Orinoco Gold card, and then run /sbin/pump -i eth1, I see the following in /var/log/messages after successfully getting an IP address:

Jun 29 20:50:42 badmonkey cardmgr[3264]: socket 1: Lucent Technologies WaveLAN/IEEE Adapter
Jun 29 20:50:43 badmonkey cardmgr[3264]: executing: 'modprobe orinoco_cs'
Jun 29 20:50:43 badmonkey cardmgr[3264]: executing: './network start eth1'
Jun 29 20:50:43 badmonkey /etc/hotplug/net.agent: register event not handled
Jun 29 20:51:36 badmonkey pumpd[5389]: starting at (uptime 0 days, 2:11:21) Sun Jun 29 20:51:36 2003  
Jun 29 20:51:36 badmonkey kernel: eth1: New link status: Connected (0001)

And these are the kernel modules loaded, as shown by /sbin/lsmod:

Module                  Size  Used by    Tainted: PF 
orinoco_cs              5876   1 
orinoco                44172   0  [orinoco_cs]
hermes                  8004   0  [orinoco_cs orinoco]

I use the wireless tools package which came with RedHat 9 to configure the card, specifically /sbin/iwconfig:

/sbin/iwconfig eth1 mode managed
/sbin/iwconfig eth1 essid SOMESSID
/sbin/iwconfig eth1 enc off

Firmware issues

Haven't changed my firmware, and actually I don't even know what version I'm running. However, monitor mode seems to work. I'd love to hear from anybody who can tell me how I can find out the firmware level from within linux.

Promiscuous mode support

Enabling monitor mode is easy with this driver, similar to the Prism2 cards, you can only enable monitor mode on one channel at a time. However the I'd recommend use of the kismet_hopper program from the excellent Kismet sniffer program to enable channel hopping.

To check if your driver supports monitor mode (Necessary to run airsnort, kismet, and any other wireless program which needs to sniff) do the following:

[root@badmonkey]:/home/anindya>iwpriv eth1
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      

Basically if you don't see monitor in this list, you'll need to patch your driver or get another one. To enable monitor mode manually (I looked at the kismet_monitor program to get this):

/sbin/iwpriv $DEVICE monitor 1 $CHANNEL
/sbin/ifconfig $DEVICE promisc up

I should also note, I'm using the default wireless-tools RPM that came with RedHat 9.0 - RPM name: wireless-tools-25-8

NOTE: The default tcpdump which comes with RedHat 9 apparently doesn't support wireless interfaces? This is what happens when I run tcpdump on an orinoco interface I've just put into monitor mode using iwpriv:

[root@badmonkey]:/home/anindya>ifconfig eth1
eth1      Link encap:UNSPEC  HWaddr 00-02-2D-38-6D-B4-00-00-00-00-00-00-00-00-00-00
	  UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:203 errors:0 dropped:203 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:41274 (40.3 Kb)  TX bytes:0 (0.0 b)
          Interrupt:3 Base address:0x100

[root@badmonkey]:/home/anindya>tcpdump -n -i eth1
tcpdump: WARNING: eth1: no IPv4 address assigned
tcpdump: unknown data link type 119

If you obtain the latest tcpdump/libpcap from http://www.tcpdump.org, everything should work fine. Ethereal-0.9.13 seems to work great.

WEP (encryption)

Haven't tried yet.

Access Point (AP) mode

Haven't tried yet.

Links