|
RedHat-7.2 i386 + pcmcia-cs + shmoo orinoco monitor patch mini-howto
Introduction
This is a quick howto on how to get RedHat 7.2 to work with orinoco gold card
in monitor mode, which is useful for sniffing 802.11b packets.
The following instructions worked for me on a Dell Inspiron 7000 with a
Compaq WL110 pcmcia wireless card. But they should be generic enough to apply
to other versions and distributions (with minor corrections).
Assumption was that the reader is a linux novice.
In many cases you can directly use provided config, binary, and object files.
There is no guarantee that these instructions will work for you.
All comments, corrections, and suggestions are gladly accepted via e-mail
at the bottom of the document.
Prerequisites
Linux kernel source tree (i used 2.4.18);
Linux pcmcia-cs (i used pcmcia-cs-3.1.34);
Shmoo orinoco patch;
Graduate standing in Rocket Science major (optional).
Installation
Uninstall all previous versions of pcmcia-cs (rpm or whatever).
To check if you have rpm installed run:
$ rpm -qa | grep pcmcia
if it does not return anything you are ok, if it does return something
similar to pcmcia-cs-3.1.27.i386.rpm, then remove it:
$ rpm -e pcmcia-cs
if you had a previous version of pcmcia-cs installed you will need to
move the /etc/pcmcia directory to avoid conflicts:
$ mv /etc/pcmcia /etc/pcmcia.orig
create a file /etc/sysconfig/pcmcia with the following contents:
PCMCIA=yes
PCIC=i82365
PCIC_OPTS=
CORE_OPTS=
CARDMGR_OPTS=
configure your kernel without pcmcia support and run at least a "make dep".
in short, you need to place linux-2.4.18.tar.bz2 to /usr/src:
# mkdir /usr/src/linux-2.4.18
# rm -f /usr/src/linux
# ln -s /usr/src/linux-2.4.18 /usr/src/linux
# cd /usr/src
# tar -jxvf linux-2.4.18.tar.bz2
# cd /usr/src/linux
# make menuconfig
select what you need and save your new kernel configuration.
note again: do _not_ select "CMCIA/CardBus support" under "General setup",
otherwise compilation of pcmcia-cs package will complain.
# make dep
if you'd like to build your own kernel, then
# make modules
if you had an old /lib/modules/2.4.18 directory, rename it:
# mv /lib/modules/2.4.18 /lib/modules/2.4.18.orig
otherwise just continue with module installation:
# make modules_install
# make bzImage
# cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.4.18-mon
assuming you use grub as your boot manager modify /boot/grub/menu.lst
by appending these lines:
title Red Hat Linux with monitor support (2.4.18-mon)
root (hd0,1)
kernel /boot/vmlinuz-2.4.18-mon ro root=/dev/hda2
Of course your root device may be different. To find out what it is:
# df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hda2 3564280 3083600 299620 92% /
none 95824 0 95824 0% /dev/shm
As you can see in my case the root filesystem ( / ) is mounted on /dev/hda2
therefore i have "root (hd0,1)" (they start counting from 0,
meaning disk 1 partition 2) and "root=/dev/hda2".
I use a console frame buffer so my kernel line looks like this:
kernel /boot/vmlinuz-2.4.18-mon ro root=/dev/hda2 vga=791
This gives me a 1024x768 color console -- very handy.
if you feel adventureous you can use my .config file (place it in /usr/src/linux,
run "make menuconfig", choose "exit" and say yes to "save your new kernel configuration",
then run "make dep") or even the compiled kernel -- just place it in /boot and modify
the /boot/grub/menu.lst.
Reboot with the new kernel (choose it from the grub boot menu).
Then if you still did not download pcmcia-cs-3.1.34 package do it now:
[root@laptop root]# cd /usr/src
[root@laptop src]# wget http://pcmcia-cs.sourceforge.net/ftp/pcmcia-cs-3.1.34.tar.gz
[root@laptop src]# wget http://airsnort.shmoo.com/pcmcia-cs-3.1.34-orinoco-patch.diff
[root@laptop src]# ls -F
linux@ pcmcia-cs-3.1.34.tar.gz
linux-2.4.18/ pcmcia-cs-3.1.34-orinoco-patch.diff
Untar it:
[root@laptop src]# tar -zxvf pcmcia-cs-3.1.34.tar.gz
[root@laptop src]# cd pcmcia-cs-3.1.34
Patch it:
[root@laptop pcmcia-cs-3.1.34]# patch -p1 < ../pcmcia-cs-3.1.34-orinoco-patch.diff
Configure it. Here is my transcript:
>
[root@laptop pcmcia-cs-3.1.34]# make config
-------- Linux PCMCIA Configuration Script --------
The default responses for each question are correct for most users.
Consult the PCMCIA-HOWTO for additional info about each option.
Linux kernel source directory [/usr/src/linux]:
The kernel source tree is version 2.4.18.
The current kernel build date is Mon Jul 8 21:19:36 2002.
Build 'trusting' versions of card utilities (y/n) [n]:
Include 32-bit (CardBus) card support (y/n) [y]:
Include PnP BIOS resource checking (y/n) [n]: y
Module install directory [/lib/modules/2.4.18]:
Kernel configuration options:
Kernel-tree PCMCIA support is disabled.
Symmetric multiprocessing support is disabled.
PCI BIOS support is enabled.
Power management (APM) support is enabled.
SCSI support is disabled.
IEEE 1394 (FireWire) support is disabled.
Networking support is enabled.
Radio network interface support is enabled.
Token Ring device support is disabled.
Fast switching is disabled.
Frame Diverter is disabled.
Module version checking is enabled.
Kernel debugging support is enabled.
Memory leak detection support is disabled.
Spinlock debugging is disabled.
Preemptive kernel patch is disabled.
/proc filesystem support is enabled.
It doesn't look like you are using 'lilo'.
It looks like you have a System V init file setup.
X Window System include files found.
Forms library not installed.
If you wish to build the 'cardinfo' control panel, you need the Forms
library and the X Window System include files. See the HOWTO for details.
Configuration successful.
Again, for those who want a shortcut, here is my config.mk.
Just replace your pcmcia-cs-3.1.24/config.mk file with it and continue.
Before you "make all", i recommend that you comment out two lines in the
pcmcia-3.1.34/wireless/orinoco.c file on line 1372. You can open that file
in vi and then type :1372 and press enter -- should take you to that line.
Add /* and */ like below:
/* printk(KERN_WARNING "%s: Undersized frame received (%d bytes)\n",
dev->name, length); */
The reason behind it is that this line produces and enormous amount of
warning messages in /var/log/messages and in some cases on the console.
After that compile the package, run
[root@laptop pcmcia-cs-3.1.34]# make all
when it completes, install binaries and modules:
[root@laptop pcmcia-cs-3.1.34]# make install
maybe it was me or my system but the files from pcmcia-cs-3.1.34/etc and
pcmcia-3.1.34/wireless directories did not make it to their destinations.
so i copied them by hand:
[root@laptop pcmcia-cs-3.1.34]# cd /usr/src/pcmcia-cs-3.1.34/etc
[root@laptop etc]# mkdir -p /etc/pcmcia
[root@laptop etc]# cp -r * /etc/pcmcia
[root@laptop etc]# cd /usr/src/pcmcia-cs-3.1.34/wireless
[root@laptop wireless]# cp hermes.o orinoco.o orinoco_cs.o /lib/modules/2.4.18/pcmcia
just in case you (or maybe me) have a wierd setup, create these synlinks:
# ln -s /lib/modules/2.4.18/pcmcia/hermes.o /lib/modules/2.4.18/kernel/drivers/net/wireless/hermes.o
# ln -s /lib/modules/2.4.18/pcmcia/orinoco.o /lib/modules/2.4.18/kernel/drivers/net/wireless/orinoco.o
# ln -s /lib/modules/2.4.18/pcmcia/orinoco.o /lib/modules/2.4.18/kernel/drivers/net/wireless/orinoco_cs.o
also, copy pcmcia-cs-3.1.34/etc/rc.pcmcia to /etc/rc.d/init.d/pcmcia
# cp /usr/src/pcmcia-cs-3.1.34/etc/rc.pcmcia /etc/rc.d/init.d/pcmcia
you can get my /etc/pcmcia files here.
now start the pcmcia services:
# service pcmcia start
if this gives you a wierd error message, then try running:
# /etc/rc.d/init.d/pcmcia start
you should be in business. If this is the only network card it is assigned
a name of eth0, otherwise eth1. Assuming it is eth1:
# iwconfig eth1
eth1 IEEE 802.11-DS ESSID:"" Nickname:"HERMES I"
Mode:Managed Frequency:2.457GHz Access Point: 44:44:44:44:44:44
Bit Rate:2Mb/s Tx-Power=15 dBm Sensitivity:1/3
Retry limit:4 RTS thrff Fragment thrff
Encryption keyff
Power Managementff
Link Quality:0/92 Signal level:134/153 Noise level:134/153
Rx invalid nwid:0 invalid crypt:0 invalid misc:0
I still do not know why the Bit Rate is 2Mb/s, and not 11 (older 802.11 not 802.11b?)
# ifconfig eth1
eth1 Link encap:Ethernet HWaddr 00:02:A5:2D:70:AD
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:10 Base address:0x100
Check if your card can go into the monitor mode:
# iwpriv eth1 monitor 2 1
The above command should not give you error messages.
Check that you got a long MAC address:
# ifconfig eth1
eth1 Link encap:UNSPEC HWaddr 00-02-A5-2D-70-AD-00-00-00-00-00-00-00-00-00-00
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:10 Base address:0x100
For Kismet users
Assuming latest development kismet installed with the usual /usr/local prefix.
run:
# ifconfig eth1 up
# kismet_hopper -t orinoco &
# kismet
Troubleshooting
If it does not go as smoothly as i described, here are few things to check.
First, check if your modules loaded correctly. You should at least see these:
# lsmod
Module Size Used by
orinoco_cs 4752 2
orinoco 30640 0 [orinoco_cs]
hermes 5888 0 [orinoco_cs orinoco]
ds 6576 2 [orinoco_cs 3c589_cs]
i82365 21904 2
pcmcia_core 46816 0 [orinoco_cs 3c589_cs ds i82365]
If not, a good place to look for a reason is in /var/log/messages.
In my case a "good" cardmgr startup and module insertion looks like this:
Jul 10 14:51:56 laptop cardmgr[1192]: socket 1: Orinoco or Intersil Prism 2 Wireless
Jul 10 14:51:57 laptop cardmgr[1192]: executing: 'modprobe hermes'
Jul 10 14:51:57 laptop cardmgr[1192]: executing: 'modprobe orinoco'
Jul 10 14:51:57 laptop cardmgr[1192]: executing: 'modprobe orinoco_cs'
Jul 10 14:51:57 laptop cardmgr[1192]: executing: './network start eth1'
Problematic startup may have a similar output in /var/log/messages:
Jul 6 15:48:13 laptop cardmgr[2243]: socket 1: Orinoco or Intersil Prism 2 Wireless
Jul 6 15:48:13 laptop cardmgr[2243]: + /lib/modules/2.4.18/pcmcia/orinoco.o: unresolved symbol BUG_ON
Jul 6 15:48:13 laptop cardmgr[2243]: insmod exited with status 1
Usually messages are informative enough to pinpoint the problem.
Files
All mentioned files can be found here.
Conclusions
none.
if you can draw any, let me know.
Thanks
thanks to pcmcia-cs development crew for the pcmcia-cs package;
thanks to shmoo guys for the orinoco monitor patch and valuable input (snax);
thanks to wireless [at] kismetwireless [dot] net list for kismet (mike k.);
thanks to southwest texas state university for hosting this site;
thanks to swt cs dept dr. tom mccabe for providing ipaqs and wl110 wireless cards; |
|