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.

Sign up to receive future updates for Traverse Ten64.

Subscribe to the Crowd Supply newsletter, highlighting the latest creators and projects