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.
> “It supports a range of software defined radios”
yes, indeed, by using the excellent osmocom gr-osmosdr library. So kudos to team OSMO in general and horizon especially!
I’d like to see a Morse plugin.
Write one?
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…
Sorry, in the above host should be localhost, not 7355
That looks like a useful piece of software – I can say yes to the scared off by the command line hell.
Some prefer it.
Oh, and if you need to identify signals, especially in a wider bandwidth, automatically or semi-automatically, or need to just you know, estimate the properties of an OFDM signal (since, by Hertz’ beard, not everything is BPSK), then gr-inspector might just be your thing:
https://github.com/gnuradio/gr-inspector
https://www.youtube.com/watch?v=9i9FE73B_U0
Thanks m8, going in the notes with the other.
A very cool tool.
Very nice! Now…any way to enable direct sampling mode (specifically on the Q channel) for the RTL-SDR dongles? Because that would be awesome.
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.
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?
Try opening a command window (ie, DOS or cygwin, etc) and typing:
$ python -V
and see what version pops up..
it may be such that you have multiple versions installed and that may be confusing things..
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 !
Nah, lots of people have used the rtl-sdr terrace with gnu radio. Perhaps you should try using an older version of python?
Its indicating you have python 2.x installed and its not compatible with that. So you need to search how to make it find your python 3.x
“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?