Tagged: FM radio

A Multi-Feature Raspberry Pi Radio with RTL-SDR, Internet Radio, Google Assistant and Alexa

Recently JJ wrote in and wanted to share his multi-feature living room radio that he's created with a Raspberry Pi, RTL-SDR, and various software packages installed on the Pi. Previously we posted about his cute LegoPi radio, and this living room radio is an iteration on that.

The radio is able to tune into live broadcast FM via an RTL-SDR and the NGSoftFM software, and also can be remotely access with SpyServer. It can also tune into internet radio, or play MP3 files. He's also installed Google Assistant and Alexa onto the Pi, so it can work as a digital assistant too. The features and software he uses are noted below:

FM / DAB+ / Internet radio with random mode / MP3 player / Google assistant / Amazon Alexa / SPYserver (SDRsharp), all controlled with a USB keypad or a Bluetooth remote control.

OS
I used RASPBIAN STRETCH LITE (https://www.raspberrypi.org/downloads/raspbian/)
Small, efficient and very stable (NO GUI). Radio boots in 15 seconds (Raspberry Pi 3 Model B).

FM
NGSoftFM (https://github.com/f4exb/ngsoftfm)
Works well but needs a clean / strong signal.

DAB+
dab-cmdline (https://github.com/JvanKatwijk/dab-cmdline)
Works well but needs a clean / strong signal. I used example-2.

Internet radio
VLC (https://www.videolan.org/vlc/index.html)
The random internet radio part is a lot of fun to use. You can do random by genre or just random everything. Reminds me when turning the MW dial at night when I was a kid and not knowing what was coming next!
It is just a python script that fetch the icecast directory then populate a small SQL database on the pi. I used this (https://github.com/ksc91u/icecast_play) as a starting point.

MP3 player
VLC. I used a 16GB SD card on the pi (good compromise between speed of boot versus capacity). The whole system takes a little bit less than 5GB, which means I have 10GB+ for MP3 files.

Google assistant
Fun and addictive, I used an old webcam that was gathering dust as a USB microphone. Pick-up range is pretty good, 4-5 meters in a quiet room. I followed these instructions:
https://developers.google.com/assistant/sdk/guides/library/python/

Amazon Alexa
My favorite! Fun and addictive, I followed these instructions:
https://developer.amazon.com/docs/alexa-voice-service/set-up-raspberry-pi.html

SPYserver
More a gadget than a serious tool because I'm using a wire for antenna (on the last radio) but has proven to be usefull to help position the wire for optimum FM / DAB+ reception by looking at the spectrum and play with the dongle gain in SDRsharp (https://airspy.com/spy-servers/).

Bluetooth remote control
I used a PlayStation 3 (PS3) bluetooth remote since the pi 3 has bluetooth built-in.
Easily available in used video game stores and very cheap, the remote works very well but it took me a while to get it going. This page helped:
https://www.mythtv.org/wiki/Sony_PS3_BD_Remote

Last but not least, the radio is a complete Linux environment so I can connect to it from my Win10 box via SSH (https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html) and play with all the RTL-SDR goodies, even GNU Radio :-) providing you install a desktop environment (for ex. PIXEL) on top of Raspbian Stretch Lite.

JJ has also uploaded a video here.

JJ's Radio is Packaged in a Plastic Toolbox
JJ's Radio is Packaged in a Plastic Toolbox
All the pieces
All the pieces

The Lego Pi RTL-SDR FM Radio

Thank you to RTL-SDR.com reader 'JJ' for writing in with a submission for his Lego Pi Radio. JJ's Lego Pi Radio consists of a Raspberry Pi and RTL-SDR and is designed to be an FM Radio, MP3 and internet radio player all in one, with a cute enclosure made out of Lego bricks. The radio is controlled by an external numpad which allows for a number of presets to be chosen from.

The internet radio and MP3 players are handled in software by VLC player and a script written by JJ is used to map the numpad to RTL-SDR FM presets, or MP3 and internet radio functions. The whole unit is run headless and if anything needs to be updated such as internet radio links, JJ simply accesses the unit via an SSH shell. JJ also writes how he had to try 3 different brands of speakers before he found one that could be driven directly from the Pi with adequate sound quality. In the future he hopes to add a bluetooth remote.

One problem that JJ found was that the standard rtl_fm did not produce high quality audio. Fortunately he found the NGSoftFM software which is capable of outputting high quality FM stereo sound and is compatible with RTL-SDR dongles.

In the past we've seen a similar project that was implemented on a BeagleBone Black. The idea in that project was to switch between FM and internet radio depending on the reception quality.

Tutorial: Creating an FM Receiver in GNURADIO using an RTL-SDR source

Over on instructables.com, user v3l0c1r4pt0r has created an instructable that shows step by step instructions on how to create an FM receiver in GNU Radio using an RTL-SDR and GNU Radio Companion. His instructable explains a bit about the theory of what is required to decode an FM signal, and shows which GNU Radio blocks are required, and how to connect them up.

GNU Radio Tutorial
GNU Radio FM Receiver

Wavesink Plus: Android RTL-SDR App with FM+RDS/DAB+/DRM+ Decoding

Wavesink Plus, the paid version of the trial version of Wavesink has been released on Google Play. Wavesink Plus is an Android app which has FM+RDS, DAB+ and DRM+ receiving and decoding capabilities when connected to an RTL-SDR dongle via a USB OTG cable.

We gave Wavesink Plus a test today on a HTC One X Android phone and were pleased to discover that it works perfectly. The user interface has been tidied up from previous versions, and DAB+ has been added. There is now also auto tuning functionality, which will automatically find a station.

In further testing we found that the latest version of Wavesink was fast and snappy and was able to load DAB+ stations quickly, and decode them with clear audio. FM radio also sounded clear and RDS information loaded quickly as well.

Download the trial version here and buy the full version from this link.

Wavesink Plus Decoding DAB+
Wavesink Plus Decoding DAB+

Decoding RDS in GNU Radio with the RTL-SDR

DangerousPrototypes.com have brought to attention a GNU Radio RDS decoding project from the website at Anotherurl. Check out the original post here. Anotherurl uses a GNU Radio Companion flowgraph and a .NET program to decode FM RDS messages. RDS is an acronym for Radio Data System, which is used in FM radio transmissions to embed information such as radio station and programme/song information. Some conventional FM radios display this information on an LCD screen. The popular SDRSharp SDR receiver also has RDS decoding built into it’s FM receiver already, but a GNU Radio implementation is very useful for learning how RDS works.

GNU Radio RDS Decoder

via dangerousprototypes.com