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.
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.
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.
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.
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.