Traverse Ten64

An eight-core ARM64 networking platform with mainline Linux support

Nov 12, 2020

Streaming FM to the Internet with LimeSDR

by Mathew M

Screenshot of the LimeSDR FM demo in browser - showing the frequency display and waterfall. Three separate radio stations are visible on the display

There has been quite a bit of interest in using Ten64 for software-defined radio (SDR) applications, so we have put together a simple demo using a LimeSDR to tune into an FM radio station and stream it to the internet.

Channel Surfing

This one-minute video shows the demo in action - from listening to the stream in a web browser, to changing the radio station and viewing the container backend in Portainer.

The Technical Details

A lot of the entry-level tooling around software-defined radio is designed for client/workstation use, such as Gqrx, PothosWare, and the GNU Radio Companion. Finding something web-based and/or "headless" proved to be a bit of a challenge, so we built a demo which, while showing a useful use case, could also be used as a starting point for your "edge" software-defined radio applications.

Software stack

This demo is deployed as a container stack using docker-compose as follows:

The above container stack can be deployed both directly on the hardware, or under a VM (with at least two CPU cores) using USB passthrough.

This architecture could be extended in various ways, for example, with multiple tuner instances feeding a single Icecast instance, or by moving the frontend components into the cloud. If you don’t need visualizations, you can export a GUI-free, completely headless tuner application from the GNURadio Companion.

You can find the source code for the demo in our GitLab repo.

Tips on Using a LimeSDR with Ten64

One advantage of the LS1088 over other ARM SoCs seen in many multimedia-focused boards is that it has multiple high-speed buses: two USB 3 controllers and three PCI Express 3.0 controllers. This means bandwidth-intensive hardware such as software-defined radios can have a direct connection which is not shared with other system peripherals. This has benefits for latency and jitter as each of these high-speed controllers have their own interrupt lines to the CPU.

Ten64's direct USB port

LimeSDR with AC case

After installing my LimeSDR in a Lime AC Case, the FM radio streaming server was able to operate for more than 96 hours without issues.


Questions?

Ask Crowd Supply about an order
Ask Traverse Technologies a technical question
Subscribe to the Crowd Supply newsletter, highlighting the latest creators and projects