Keith Maton (G6NHU) wrote in and wanted to share his new ready to go APRS RX iGate image for the Raspberry Pi. APRS stands for “Amateur Packet Reporting System”, and is a type of packet radio communications system used by Amateur Radio operators. They often use them to transmit short mail messages, weather sensor updates, track vehicles and for various other purposes. An iGate allows APRS messages to be transmitted over the all world via the internet via a signal chain such as: RF->iGate RX->Internet->iGate TX->RF. To run an iGate you should be a radio amateur with a callsign. A global aggregation of APRS broadcasts received by iGates can be seen at aprs.fi.
An RTL-SDR can be used to receive APRS packets easily and many amateur radio enthusiasts have been setting up APRS RX only iGates using the “direwolf” decoding software. Keith’s image simplifies the process of installing and configuring software significantly by proving a plug and play image that you just burn to an SDcard and plug into your Raspberry Pi. His post also explains how to configure the iGate correctly.
The C.H.I.P is a $9 USD single board computer which is similar to a Raspberry Pi. It is powerful enough to run the RTL-SDR, and in fact the Outernet project use the C.H.I.P together with our V3 dongles in their DIY kit to receive, decode and serve their free L-band satellite data service.
LabView is a popular visual programming environment often used in industry and by engineers for test, automation and control applications. It is somewhat similar to GNU Radio in that programming is done by connecting a series of various blocks together, each of which performs some function. The RTL-SDR is compatible with LabView via a simple RTL-SDR interface.
Recently Albert Lederer wrote in to us and wanted to share his beginners guide to creating an broadcast FM demodulator with an RTL-SDR in LabView. The tutorial focuses only on demodulating the mono part of the broadcast FM signal structure and provides a fully functional LabeView project file. Albert describes the signal chain implemented below:
1. The signal is received from the rtl-sdr device as IQ data. This is converted to a complex signal and the phase is extraced.
2. The phase correction removes phase discontinuities.
3. The key demodulation component in the chain is the phase derivative. The phase derivative takes the phase of the signal and creates a second signal that is composed only of the changes in frequency. This is then the demodulated signal.
4. The low pass filter is used to filter out frequencies above 15kHz, which do not contain the desired information.
5. The rational resample takes the signal, which is still at the sampled rate (in the examples case 286650Hz) and resamples it to something the sound card can handle. In this case, we are using a decimation factor of 13, which results in a 22050Hz audio stream. Actually, I worked this out the other way around. I wanted a 22050Hz audio stream and checked which sample rate would give me an integer decimation while keeping the RF sampling rate as low as possible.
Recently RTL-SDR.com reader ghostop14 wrote in to us and wanted to share his GNU Radio block and tutorial that shows how to get rid of the DC spike in GNU Radio. The DC spike is the annoying spike in the middle of the spectrum that appears no matter where you tune and shows up with almost all SDRs, such as the HackRF used by ghostop14. Software programs like SDRsharp and HDSDR have algorithms in place to filter and remove the DC spike, but until now there was no block that existed for GNU Radio.
It’s your first time with gnuradio and you love your hackrf. You’ve played with receiver software like SDRSharp and audio piping to decode your favorite signal of choice, and now you’re ready to dig deeper and learn more about SDR. Everyone’s talked about gnuradio, so you install it and fire up your first flowgraph. You drop in an osmocom source block and set the device to hackrf, set your sample rate, frequency, and gain then connect it to a frequency sink and hit the button to generate your flowgraph. The ease with which you just built a receiver and the excitement about the possibilities is overwhelming… you can’t wait to hit play.
Then it happens. Right in the middle of your first flowgraph is this huge signal spike that you know is not the signal you want to receive, and as you change the frequency it follows you. What?!? So your first thought is you did something wrong. After all you’re new to gnuradio and you’re sure you’re making a newbie mistake. First you make sure there really isn’t a signal there. You go back to SDRSharp and there’s no spike. Then you swap out your hackrf for your airspy and rtl-sdr dongle, feed that into gnuradio, and there’s still no spike. What’s going on? Why is my favorite SDR that I want to use doing this? What you’ve stumbled on is an artifact of the way SDR radios do IQ sampling. Your first attempts at searching on the problem reveal that it’s called a DC spike and it’s going to appear in the raw IQ data and there’s nothing you can do to stop it. So you go back to your favorite search engine because you can’t be the first person to want to get rid of it and you find that folks say that you have 3 options: 1.) ignore it (yeah not happening. It’s huge and right in the middle of my spectrum!) 2.) Offset tune away from it on your center frequency (which means every flowgraph I make or download I’m going to have to custom change to actually get a clean center frequency signal to make them work. There has to be a better way!), or 3.) filter it out.
(cntd…)
I finally had a few hours to look into the problem further and spent the time to search and understand what was happening, and the math behind fixing it. Then researched how others were doing the same thing in their code. Turns out the solution is simple. Since the data represents an alternating RF signal, over time the signal average in a clean signal should be zero (I know I’m oversimplifying it). When there’s the IQ DC spike, that average isn’t zero. So the solution is to calculate a weighted average over ongoing samples and simply subtract it from each future sample. It doesn’t affect the overall quality of the filtered signal, but as long as the spike is on the center frequency, this approach very efficiently gets rid of it. And that was what I was hoping to accomplish.
The CorrectIQ block which gets rid of the DC spike in GNU Radio.
Back in October/November of last year Lucas Teske showed us how to receive weather satellite images from the GOES line of geostationary satellites with an Airspy SDR (and possibly an RTL-SDR too), dish antenna and the decoding software that he created.
On November 19, 2016 the next generation GOES 16 (aka GOES-R) satellite was launched by NASA. GOES 16 is a little different to the older GOES satellites as it has better sensors and is capable of capturing and transmitting a new image every 15 minutes which is quite fast. Thus a different and higher bandwidth RF transmission protocol called HRIT (High Rate Information Transfer) is used, compared to the LRIT (Low Rate Information Transfer) signal used on the older satellites.
Once the satellite started transmitting in January 2017, Lucas got to work on trying to create a decoder for the new satellite. After noticing some discrepancies between the published HRIT specs and the actual signal, Lucas sent off an email to NOAA and actually received an email back with the full specifications. With this information he was able to update his Open Satellite Project code and start decoding images from GOES 16.
The images being sent right now seem to just be relays of other similar satellites like Himawari-8 and Meteosat, as it seems that they are still testing the satellite. The relayed images received via GOES 16 received by Lucas can be seen on the Open Satellite Project twitter feed and on Lucas’ personal twitter feed.
Full disk image received via GOES 16, relayed from the Himawari-8 satellite.Weather data received via GOES 16.
Watson has uploaded the code to GitHub under the name monster-drift. The code is based on Node.js which is an event-driven JavaScript programming environment. The software allows you use a HackRF to control any radio controlled car that uses a simple On-Off Keying (OOK) protocol and which operates at a frequency of 27 MHz. Most cheap RC cars do use this frequency and protocol, but high-end models may use something a little more sophisticated. Some information about the protocol implementation is given here. We look forward to hopefully seeing interesting projects like remotely controlled autonomous RC cars in the future.
The popular HDSDR software has recently been updated to version 2.76. After a three year hiatus the HDSDR developers are back in action starting with the 2.75 update which was released in early January. The 2.76 stable version released February 02, 2017 is a minor update with several bugfixes and a few new features. The 2.76 changelog is posted below:
Version 2.76 (February 02, 2017)
– switchable display mode: S-units / dBm – switchable mode for S-meter: RMS / Peak – enhanced accuracy of level indicators. New calibration required! – periodic and explicit level logging into .CSV file – switching AGC to off, sets manual gain value – oversteering/clipping audio does now reduce gain value – not volume – fixed OmniRig handling: “MuteOnTX” – deactivate AFC after frequency/mode changes for a small duration – Fast WAV file demodulation & recording – some new keyboard shortcuts – some other small improvements and fixes
Of interested are the new keyboard shortcuts which should improve efficiency with the program.
The Odroid C2 is a $40 USD single board computer with a 1.5 GHz ARM-A53 quad core CPU and 2 GB of RAM. Compared to a Raspberry Pi 3 it is more powerful and costs almost the same. YouTube uploader radio innovation recently wrote into us and wanted to share his video showing SDR-J decoding DAB+ smoothly on his Odroid C2. It seems that SDR-J works perfectly and only uses a small amount of CPU.
DAB stands for Digital Audio Broadcast and is a replacement/alternative to standard broadcast FM stations. SDR-J is a software suite that includes a DAB decoder for the RTL-SDR. It is compatible with Windows, Linux and the Raspberry Pi (and evidently also the Odroid C2). Over on their website they also provide a ready to go Raspberry Pi 2 image, and they write that it should perform well on the Rpi2 platform as well.