The problem is with the ipw3945 driver. The following is the extract from the driver's Makefile:
# If you are not interested in using monitor mode, simply comment out:
# NOTE: If you have problems compiling due to IW_MODE_MONITOR not being
# defined then you need to update the wireless extension version
# installed in your kernel, or comment this line out.
# If you are interested in using radiotap headers in monitor mode,
# simply uncomment:
# NOTE: To use RADIOTAP you must also enable MONITOR above.
# The above monitor mode provides standard monitor mode. The following
# will create a new interface (named raw%d) which will be sent all
# 802.11 frames received on the interface
# NOTE: To use PROMISCUOUS you must also enable MONITOR above.
As you will easily see in the bold lines above, the monitor, radiotap and the promiscuous modes are disabled by default by the driver.
Anyway, let me tell you what I have tried so far in vain but learnt:
The release of the driver is 1.2.1 and it is not compatible with the latest 802.11 stack. I have learnt that in forums and the people that got their card working used 1.1.11 driver. Seems to me that the latest driver is not the greatest.
In my opensuse notebook, I couldn't remove the 802.11 stack completely. I ran make with allow duplicate option, there the YaST found two network cards, got none of them to work. Now in my system I'm not able to see eth1. Previously, YaST recognized the card perfectly, eth1 worked, but monitor mode was off. I was not able to audit my home wireless network.
Bottomline, to go and try your chance:
- Get the drivers from ipw3945 on sourceforge, untar it.
- cd into the directory where you untarred it, open Makefile with your favorite text editor and remove the hash signs [#] that I have shown you in bold above.
- Get ipw3945-ucode, untar it, cd to the directory you untarred it. [you can get it from http://bughost.org]
- cp ipw3945-ucode-x.xx/ipw3945.ucode to your system's firmware directory. In openSuSE 10.2 it is /lib/firmware
- Get ipw3945d, untar it, cd to the directory you untarred it.[you can get it too from http://bughost.org]
- cd to x86 or x86_64, depending on your system's architecture.
- copy the file in the x86 [or x86_64] directory to /sbin.
- ./load debug=0
Hopefully you should be seeing your card with iwconfig. iwconfig eth1 mode monitor should return no errors. I am still trying to get mine working.