Spectrum analysis on the cheap.

01 September 2009

If you’ve ever hacked around with wireless communications, in particular data networking chances are you’ve come across the oh-so-nifty USB spectrum analyzers that operate in the gigahertz range (which 802.11a, b, and g networks, among other wireless applications, operate within). The idea is simple: you plug the analyzer into a USB port on your laptop, fire up the software, and you can see the whole spectrum broken down into channels with relative signal strengths representing activity on the screen just like in the movies. While granted this can be a useful tool for anyone doing serious RF debugging, the price alone is enough to make you consider changing your hobbies. The current model (which covers 2.4GHz to 2.4835 GHz) goes for about $300us on Think Geek; an earlier version of the same device retails for about $100us nowadays. Tim over at Outguessing the Machine sat down and did a little bit of research and figured out that you can build your own spectrum analyzer for about $50us if you’re familiar with solid state transmitters, like the XBee, which you can purchase for the cost of all the coffee you’re likely to buy at Starbucks in a month.

It breaks down like this: solid state transceivers that operate in the 2.4GHz range are cheap as dirt: if you buy a cordless mouse, joystick, or remote control out of the clearance bin at Best Buy or Micro Center chances are it’s got one of these little badboys in it. A register called RSSI (Received Signal Strength Indication) on the chip holds a value that represents the amount of activity on a particular frequency at the moment the microcontroller it’s hooked up to (which acts as a USB bridge) peeks at it. That value then gets thrown down the USB bus where software running in userspace does something nifty with it, like drawing a graph or a 3D representation of the signal space. That’s it. If you salvage a 2.4 GHz transceiver from a cordless mouse you’re probably good to go so long as you can find documentation that’ll tell you how to hook it up. If not, you can buy one of these modules on the open market for the price of… well, a good cordless mouse, actually. The firmware is childishly simple: hop to a channel, read the RSSI register, sleep for a split second, rinse, repeat.

You know, you could probably rig something up with either the aforelinked XBee or a salvaged transceiver and a microcontroller of some kind, like a Stickduino and write some code in Python to display the data points it picks up… I might have to try this after I get some wires soldered to some variable resistors later this week.