Universal Radio Hacker

If you are fascinated by stories you read on sites like Hackaday in which people reverse engineer wireless protocols, you may have been tempted to hook up your RTL-SDR stick and have a go for yourself. Unfortunately then you may have encountered the rather steep learning curve that comes with these activities, and been repelled by a world with far more of the 1337 about it than you possess. You give up after an evening spent in command-line dependency hell, and move on to the next thing that catches your eye.

You could then be interested by [Jopohl]’s Universal Radio Hacker. It’s a handy piece of software for investigating unknown wireless protocols. It supports a range of software defined radios including the dirt-cheap RTL-SDR sticks, quickly demodulates any signals you identify, and provides a whole suite of tools to help you extract the data they contain. And for those of you scarred by dependency hell, installation is simple, at least for this Hackaday scribe. If you own an SDR transceiver, it can even send a reply.

To prove how straightforward the package is, we put an RTL stick into a spare USB port and ran the software. A little investigation of the menus found the spectrum analyser, with which we were able to identify the 433 MHz packets coming periodically from a wireless thermometer. Running the record function allowed us to capture several packets, after which we could use the interpretation and analysis screens to look at the binary stream for each one. All in the first ten minutes after installation, which in our view makes it an easy to use piece of software. It didn’t deliver blinding insight into the content of the packets, that still needs brain power, but at least if we were reverse engineering them we wouldn’t have wasted time fighting the software.

We’ve had so many reverse engineering wireless protocol stories over the years, to pick only a couple seems to miss the bulk of the story. However both this temperature sensor and this weather station show how fiddly it can be without a handy software package to make it easy.

Via Hacker News.

18 thoughts on “Universal Radio Hacker

      1. So from gqrx click the three dots (lower right hand corner) and click on network and set UDP host to 7355 and udp port to something like 7355, then write a little app in bash that looks like :
        nc -l -u 7355 | sox -t raw -r 48000 -b 16 -c 1 -e signed-integer /dev/stdin -r 22050 -t raw -b 16 -c 1 – | multimon-ng -t raw -a MORSE_CW -t raw /dev/stdin

        … you will need to change the permissions of the script to executable, and you will need to install multimon-ng. Then when you hear morse, just click click on UDP and run the script. I don’t know morse code, but I’ve listened to tapping converstaions over the air by reading. There are likely many other ways to do it.

        One possible other way is (if you have something like a ham-it-up)
        1. set the ham-it-up to receive 125 MHz below what is shown (on mine the difference is 125 MHz)
        2. rtl_fm -f (HF frequency + 125 MHz) -M am -g -r 4k | play -r 4k -t raw -e s -b 16 -c 1 -V1 – | multimon-ng -t raw -a MORSE_CW -t raw /dev/stdin

        …there are likely many more…

  1. Will give it a drive about and sounds good, but didn’t think you could get easier than picking up a cheap dongle, plugging it into a usb->micro usb otg adapter and shoving that into a android tablet and running sdr radio off the play store. Yeah its closed and android is a general peeve of mine being a linux head but it does just work out the box.
    What it also reveals quickly is my cheapo sdr dongle has a really really terrible antenna even when on a decent ground plane. And now I’m not sure if to put a exterior mounted discone on it because I think the front end on the dongle will be equally as poo and get swamped.

  2. Sounds great and I tried it but couldn’t set up my device. I get a message saying ‘gnu radio not installed or incompatible with Python 2’ I’m running on Win 10 and tried both the 32bit and 64bit versions of Python 3.x but I get the same message. I followed the instructions exactly on the readme. Anybody got any ideas?

      1. Thanks for the suggestion. I only have Python 3.5 installed (32 bit). I missed one last word on the message which is exactly as follows:

        ‘gnuradio not installed or incompatible with Python 2 interpreter’

        I’m using the RTL-SDR dongle. Maybe the problem is because it is only a receiving device – puzzled !

  3. “we put an RTL stick into a spare USB port and ran the software. A little investigation of the menus found the spectrum analyser”

    This does not work for me. I went to “Spectrum Analyzer” and there were only three devices available: HarkRF, Rad1r, and RTL-TCP. I have a NESDR SMArt, which I believe is an RTL clone, but it is USB, and the RTL flavour wanted an IP address.

    So, how exactly do you plug in a USB RTL stick and get it to work?

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.