Micboard Spectrum

Micboard Spectrum

About a decade ago, I made a little SDR scanning appliance with one of those $20 RTL-SDR dongles and a Raspberry Pi. It was a simple script that ran rtl_power every 5 minutes. We had a Shure ULX-P/PSM 900 based system, my little scanner would run in the background once it got power. A webserver made it easy to pull those scans into WWB when it was time to coordinate.

The RTL dongles were amazing for the price, but were limited to scan at ~2 MHz at a time. I always wanted to revisit that project with some actual hardware, but was always on a RTL-SDR budget. I could never justify purchasing the latest SDR dev boards on CrowdSupply or used spectrum analyzers on Ebay.

Last year I ran across Maia SDR. Its alternate firmware for the Analog Devices ADALM-PLUTO SDR. As soon as I tried out this project and saw the API, I knew I had to revisit my old spectrum scanning project.

ADALM-Pluto

The ADALM-Pluto is an evaluation and educational device for Analog Devices RF hardware. Here are some cool things about the unit:

  • The Xilinx SoC contains an ARMv7 CPU and FPGA.
  • To some extent, its just a linux computer. You can SSH into it, run custom binaries & firmware.
  • It can be powered directly by an iPhone/iPad. It shows up as an Ethernet device and is discoverable via mDNS.
  • You can turn it into a PoE device with a $20 USB-OTG Ethernet adaptor.
  • Expandable Frequency range - The stock unit does 325 MHz to 3.8 GHz. In 9364 mode it will do 70 MHz to 6 GHz.
  • Up to 61.44 MSPS. ~20 MHz instantaneous bandwidth.
  • User programmable FPGA.
  • Similar architecture/SoC family as Sennheiser Spectera.

Maia SDR

Out of the box, the Pluto can be used via libiio. With soapy_power, the Pluto can be used as a basic scanner. The IQ data is streamed via USB. Software on the client computer does a bunch of FFT math to generate a scan.

There is only so much IQ data that can stream through the Pluto’s USB 2.0 connection. During my limited tests, I had the best results when I used soapy_power with 2 MHz scan width. Not much of an improvement from the RTL-SDR dongles from a decade ago.

rtl_power · ~2 MHz capture · 50% overlap
maia-sdr · 24.576 MHz capture · 50% overlap

To take full advantage of the Pluto’s bandwidth, we need to process the IQ data on the Pluto itself. That is exactly what Maia SDR by Daniel Estévez does! Maia SDR gets the IQ data directly from the transceiver, computes the FFT in the FPGA, then hands off spectra to the linux side of things using shared memory.

Maia also provides a set of APIs to manage the transceiver and stream scan data. Using these, we can automate scans and stitch them together.

Spectrum Scanner

With Maia SDR, I created a multiband spectrum scanning tool. This program connects to the Pluto and orchestrates scans across production RF bands.

To do this, it takes ~24 MHz scans across the band, chops the ends off, and stitches these together.

The tool saves a rolling history of previous scans to an sqlite database. A web interface makes it easy to view live and historical scan data. The app is written in go. It can run on just about everything. I’ve even ported it to run directly on a GL.iNet 5G router and Pluto.

I have mostly been testing with the Pluto. There is also support for tinySA and OWON hardware. Support for additional scanners can be added (send me your old gear).

karlcswanson/spectrum-scanner/scanner

Spectrum Server

What about rehearsal studios, large events, and festivals? Thats where the Spectrum Server comes in. The scanner can connect to a central server via MQTT to exchange scan data and management commands. This allows users to see streaming scan data from across a site or across the country in a single web interface.

Scans are also logged in a central database. There are basic Graphite-style retention policies that allow data to “decay” how you want it. Like the local app, a scrubber makes it easy to look at data over time. Peak and average can also be added to the spectrum plot.

This is all deployable via docker. I’ve mostly been testing with an AWS instance, but it also works offline with a computer running the server stack on-site.

I have scanners online in Lititz, PA and Arlington Heights, IL. Check out the live server below!

Live Demospectrum.micboard.io
karlcswanson/spectrum-scanner/server

Micboard Spectrum for iOS

That is a whole lot of infrastructure for general site surveys and troubleshooting. The Micboard Spectrum app provides the same basic multiband scan functionality in your pocket! The app is now available for free in the App Store.

The iOS app has many of the same features:

  • Multiband scanning
  • live trace and waterfall
  • Rolling scan storage
  • CSV export
phone app

The Pluto can be powered by the USB-C port on iPhones and iPads. A short micro-usb to USB-C cable and MagSafe-compatible puck turns the Pluto into a nice little pocket spectrum analyzer tool.

Micboard SpectrumPocket RF Scanner Download on the App Store

Hardware

I made some some simple hardware for the frequency scanning appliances. The Pluto and Raspberry Pi get mounted to a custom aluminum plate, that gets mounted inside a Pelican 1150.

BOM

PartNotesCost
Pelican 1150$60.00
Raspberry Pi 4 Model B, 4 GBWas ~$35 when purchased :/$120.00
Raspberry Pi PoE+ HAT$20.00
ADALM-Pluto$233.14
Shure UA8-470-636 antennaWideband 1/2-wave, UHF$31.99
Panel-mount 50 Ω BNC to SMA$24.79
Panel-mount Ethercon feed-through$13.62
Aluminum mounting platevia SendCutSend$20.00
Misc hardware$7.98
Total$531.52

What’s Next?

I am interested in evaluating a few related things.

  • Protocol level insight into the DECT band.
  • Extend into the 6 GHz band. Cover WiFi at the spectrum & protocol level.
  • The Pluto has a second RF input. I might be able to use that as an antenna switch. That would allow for band specific antennas for UHF and 2.4GHz/5GHz.
  • Improve scan quality - The current scan has DC/LO artifacts from each individual scan. There may be ways to reduce that.
  • Support for additional devices.