Traverse Ten64

by Traverse Technologies

An eight-core ARM64 networking platform with mainline Linux support

View all updates 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 "tuner" container which houses the GNURadio based demodulator. The audio from the demodulator is piped through the JACK Audio Server to DarkIce, which encodes the uncompressed audio into MP3. The visualizations (using GNURadio's QT widgets) are displayed using an X11 VNC server. It's not the most web friendly way but it's less resource intensive (server and client) than other methods I tried. (By default, VNC access is limited to view only; a password is required to get full access to the UI with the radio frequency control.)
  • An Icecast audio server to handle audio streaming to clients, both in a web browser and via a compatible Icecast/Shoutcast client (such as VLC or MPlayer).
  • A "frontend" container running nginx which acts as a frontend proxy for Icecast and a WebSocket proxy for the VNC server in the tuner.

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

  • Ten64 provides a USB 3 port directly from the LS1088 SoC on the rear panel. This lower USB 3 port has its own controller instance on the LS1088 and is not shared with the other USB 3 ports, meaning the full 5 Gbit/s USB 3.0 bandwidth is available to the LimeSDR. If you need even more bandwidth for higher sampling rates, a passive adaptor could theoretically be used to connect the LimeSDR PCIe edition (or similar hardware, such as XTRX with the PCIe x2 adapter) to the M.2 Key M slot ("SSD slot") with its two PCI Express lanes - up to 10 Gbits bandwidth with PCIe 2.0, 20 Gbits with PCIe 3.0.
  • For the best stability, make sure your LimeSDR has adequate cooling. Even at low sampling rates (under 2 Msps), I found my bare LimeSDR board got hot enough to cause disconnects after 30 to 60 minutes.

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.

About the Author

Mathew M

mcbridematt  ·   Melbourne, Australia

$100,762 raised

of $60,000 goal

167% Funded! Order Below

Product Choices


Traverse Ten64 Mainboard

A fully assembled and tested Ten64 mainboard installed in a custom metal enclosure with a fan, 60 W power supply, a recovery microSD card, a SIM eject tool, and a hex key, as you'd expect with any good piece of hardware. RAM with ECC not included. Regional power cord and USB-C console cable sold separately.


EU-C13 AC Power Cord

From the Crowd Supply Basics project.

A 1.8 m (6 ft) long AC cable with an EU plug and a C13 plug to fit a C14 port.


US-C13 AC Power Cord

From the Crowd Supply Basics project.

A 1.8 m (6 ft) long AC cable with a US plug and a C13 plug to fit a C14 port.


AU-C13 AC Power Cord

From the Crowd Supply Basics project.

A 1.8 m (6 ft) long AC cable with an AU plug and a C13 plug to fit a C14 port.


UK-C13 AC Power Cord

From the Crowd Supply Basics project.

A 2.5 m (8.2 ft) long AC cable with a UK plug and a C13 plug to fit a C14 port.



From the Crowd Supply Basics project.

This SanDisk solid-state drive (SSD) fits inside the standard Ten64 enclosure and interfaces to the mainboard via NVMe. The 128 GB drive (P/N SDAPMUW-128G-1022) is compatible with both the M.2 Key M and M.2 Key B slots on Ten64's mainboard, whereas the 256 GB drive (P/N SDBPNPZ-256G) and 512 GB drive (P/N SDBPNPZ-512G) are only compatible with the M.2 Key M slot. These drives are only available when purchased with a Ten64. User installation required.


NAS-grade SATA 2.5" SSD

From the Crowd Supply Basics project.

These NAS-grade solid state drives (SSDs) are rated to last much longer than consumer models, so are perfect for NAS bulk storage. Choose from 256 GB (AP256GPPSS25-R), 512 GB (AP512GPPSS25-R), and 1 TB (AP1TPPSS25-R) capacities. These drives are only available when purchased with a Ten64. User installation required.


Flexible SATA Cable

From the Crowd Supply Basics project.

A flexible cable (3M part number 5602-44-0142A-300) for connecting a SATA drive to a SATA controller board.


USB Cable: Type C to Type A

From the Crowd Supply Basics project.

Use this cable with your Ten64 Mainboard

A 3 ft (~.9 m) 2 A, 5 V cable with a USB Type C and a USB Type A connector.


Traverse Technologies

Traverse is a design house focusing on broadband and machine-to-machine applications. Our key areas of expertise are in wireline (xDSL), wireless (LTE), and embedded Linux with an aim to leverage open source technologies such as Linux and OpenWrt as much as possible.

Guy Ellis

SI and DFM Engineer

Mathew McBride

Product Architect

Brett Hahnel

PCB Layout and CAD

Sean Yang

SW Developer

Dennis Monks

SW Dev Leader

Vaughn Coetzee

Firmware Developer



Contract Manufacturer

See Also

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