This started with my desire to build a Woktenna.
Of course you can't very well put a PCMCIA wireless card at the focal point of a cooking wok!
So the alternative is using a USB WiFi adapter that can hang on the end of a USB extension cable and
introduce minimal analog signal loss and USB is digital!
Despite the fact is says "Linux compatible" on the box, it wasn't immediately possible to do what I wanted to do,
which is: monitor mode!
With monitor mode, I'd be able to point the woktenna around and pick up the beacon frames of distant APs.
I found two drivers available for this device:
one over at BerliOS,
and the other at SourceForge.
I tried both out with little success - neither support monitor mode (impossible due to the device's firmware).
The SourceForge driver (better at first glance) caused the kernel to dump its syscall stack (meaning this is not an option).
The BerliOS driver worked, but didn't support International Roaming
(required to connect to an AP on channels 1-9 as the adapter thinks its in France,
where the regulations dictate only channels 10-12 are available for public use).
So, as with everything else, if you want to do something you've gotta do it yourself!
I started hacking away at the BerliOS drivers and added:
International Roaming support and
Quasi-monitor mode*.
* Quasi meaning it's not really true monitor mode - it will not capture all packets,
only management/beacon frames that are forwarded by the firmware.
It now conforms to the interface required to use sniffing apps such as Kismet and Ethereal
(so they work nicely with minimum fuss).
However this is more than enough for detecting the presence of the majority of APs!
If you happen to have an Atmel-based adapter and wish to use it under Linux, head to the:
BerliOS Driver Homepage.
The source code is easily readable here too.
Hopefully soon Linus will include it in the big one...
Here is GPSDrive in action (admittedly using the PCMCIA card):