Tagged: streaming

New Audio Streaming TCP Server Plugin for SDR#

Over on his site rtl-sdr.ru, Vasilli has been back at work creating new plugins for SDR#. The latest plugin is a TCP server that takes the demodulated mono audio stream from SDR# and sends it over TCP (note that the site is in Russian but the Google translate button on the right can be used). This can be used to easily stream audio over the internet or a network, or even locally on the same PC to another program. If enough programs support TCP audio streams, then the plugin could potentially replace the need for software like Virtual Audio Cable or VBCable by allowing another method for piping the audio from SDR# into a decoding program.

Installing the plugin is the same as usual. Just extract the SDRSharp.TcpServer.dll file to the SDRSharp folder, open plugins.xml with a text editor and paste in the 'magic line' specified in MagicLine.txt.

To test the server you can connect to it with VLC media player. Some special commands need to be specified to VLC in order for it to understand the audio format. To enter them go to Media->Open Network Stream and make sure 'Show more options' is checked. Enter the network URL as 'TCP://' (without quotes), and enter the Edit Options field as ':demux=rawaud :rawaud-channels=1 :rawaud-samplerate=48000 :rawaud-fourcc=s16l' (without quotes). Ensure the first colon in the line is copied over properly. Then enable the TCP server in the SDR# plugin, and click Play in VLC. Ensure the SDR# is muted, and the volume in VLC turned up. Audio should now begin streaming through TCP.

Hopefully in the future we can see some audio compression algorithms and more decoding software supporting TCP audio connections.

Vasilli has also updated many of his other plugins too, including creating a DSD_TCP plugin which allows you to transmit the digital audio directly to DSD+ via a TCP connection.

The plugin streaming via TCP to VLC
The plugin streaming via TCP to VLC

Creating a RTL-SDR NOAA Weather Radio Audio Streamer in Linux

On his blog leander has added a post which shows how he has set up a icecast streaming solution together with an RTL-SDR dongle which is receiving live NOAA weather radio. The idea is to give a computer with no soundcard the ability to stream compressed NOAA weather audio over a network. To do this he uses ezstream, icecast2 and lame. Streaming like this is great if you only want to listen to a single radio channel, and want a low bandwidth solution. Something like rtl_tcp streams the entire raw IQ data across the network which can use huge amounts of bandwidth. Streaming only MP3 audio is significantly more efficient.

First the RTL-SDR is set up to receive NOAA weather audio with rtl_fm. The audio is output to stdin, which is then sent to lame for encoding and MP3 compression. Next ezstream is set up to stream the encoded MP3 data via icecast. Now any PC on the network can use VLC or a similar program to connect to the stream and listen in.

Receiving the stream with VLC
Receiving the stream with VLC

Cloud-SDR: A Tool for Remotely Accessing SDR’s like the RTL-SDR and Airspy

Cloud-SDR is a new tool currently in beta testing which enables remote streaming access of SDR receivers, such as the RTL-SDR and Airspy. In a way it is similar to rtl_tcp in that it allows IQ samples to be streamed over the network, however Cloud-SDR appears to be a much more developed solution that can support more SDR’s and has many more features, as well as better performance. Cloud-SDR is not free, and during these beta stages of release the pricing does not appear to be public. However they have licences for personal/hobbyist use, which we assume will be reasonably priced. 

In this interesting post they describe various solutions for remote SDR access, and show why their Cloud-SDR solution is useful.

They describe their software in the following blurb:

Cloud-SDR can collect real-time IQ complex samples from an SDR hardware device connected on one machine, stream the samples to a second machine for demodulation or analysis, then send the resulting stream to third machine for storage.

In standalone mode, Cloud-SDR can execute signal processing tasks described with embedded JavaScript DSP engine.

Because network bandwidth is limited compared to SDR receiving bandwidth, the core concept of Cloud-SDR is to move the processing along the cloud to where it is required or possible : the DSP chain is divided in sub-tasks that are spread between computers interconnected through Internet.

For example a “signal scanner” application can be programmed with a script and stored on the SDR server for execution. Only found signals will threshold stream transmission through the TCP/IP network. Remote Client will only receive the IQ stream if a signal is detected by the DSP task. In “cloud mode”, the same script can be broadcasted to several SDR nodes located at different places, enabling parrallel signal search.

Server software SDRNode receives IQ streams from the different SDR hardwares, extracts the different bands, processes them and transmits the RF data using compression algorithms to limit TCP/IP network bandwidth.


Currently the hardware supported includes:

  • RTL SDR dongles
  • Perseus SDR
  • BladeRF x40 or x120
  • HackRF
  • AirSpy
  • SDRPlay (under work)
  • USRP UHD (Pro version only)
  • LimeSDR (Pro version only)

On their site they have some tutorials uploaded already. One tutorial shows how to remotely listen to airport radio with a remote Airspy, and one shows how to set up a dual-RTLSDR remote access system. This allows two RTL-SDR’s to be used together, with one streaming directly from the antenna, and the second streaming via an upconverter.

Sharing Two RTL-SDR's with CloudSDR.
Sharing Two RTL-SDR’s with CloudSDR.

There are also several examples of the Cloud-SDR in action over on the authors YouTube channel.

New Web Based RTL-SDR Remote Control Software: YouSDR

Recently Kristian, a reader of our blog wrote in to let us know about a new software project he found that allows you to use your RTL-SDR remotely through a web interface. The web interface runs on Linux and uses mysql and the Apache server to work. Currently it can be used to access options for rtl_fm, rtl_tcp, dump1090 and can also be used to create an icecast audio stream.

The software can be downloaded from its Git at https://github.com/sixuniform/yousdr. The instructions on the GitHub page show how to set it up on a Raspberry Pi running Raspbian, but the instructions should also be valid for other Linux distributions. As the software is new the authors are welcoming any improvements and feedback.

Some similar web based RTL-SDR remote control software that you may be interested in includes WebRadio and rtl_fm_python.

The YouSDR web interface.
The YouSDR web interface.

rtl_udp: Fork of rtl_fm with UDP controls

Over on our forums, user sysrun has posted about his fork of the rtl_fm command line tool. His fork allows retuning of the rtl_fm program via UDP without the need to restart the program. In the future he hopes to support UDP PCM streaming. He writes

rtl_udp is a copy of rtl_fm with a special feature: It opens a udp control port (currently fixed to 6020) which takes commands like changing the frequency or mode. No need to restart :)

Credits, Idea & original Code by olgierd (http://qi.reddit.com/user/olgierd)

python script udpclient.py for easy operation included.

possible commands:

  • freq (./udpclient.py freq 101900000)
  • mode (./udpclient.py mode 0 (for fm))
    0 = FM
    1 = AM
    2 = USB
    3 = LSB
  • squelch (./udpclient.py squelch 0)
    0 = OFF
    n = Value
  • gain (./udpclient.py agc auto)
    auto = Automatic
    n = Gainvalue; 195 = 19.5db
  • agc (./udpclient.py agc 1)
    0 = OFF
    1 = ON