Turn your SDR device into a network peripheral
3.6K
Maintained by: Harald Baier
Where to get help: Soapy Home, Pothosware GitHub repositories, or Stack Overflow
Supported architectures: (more info)
amd64, arm/v7, arm64, ppc64le, s390x
SoapySDR module support within the image:
airspy,
audio,
bladerf,
hackrf,
lime,
miri,
osmosdr,
redpitaya,
remote,
rtlsdr,
uhd
Dockerfile linksSoapySDR is an open-source, vendor neutral and platform independent runtime library for SDR devices. In additon, SoapySDR supports device modules with its plugin architecture. Furthermore it sustains the ability to access your hardware via network.
The physical location of SDR equipment is usually fixed at a certain place because of antenna placement and cabling. Therefore, the SoapySDRServer (as part of SoapyRemote) can be used to access software-defined radio receivers remotely via network connection. The extraction of raw IQ data does not require much processing power, which is why this Docker image can be used on single-board computers, such as Raspberry Pi 2/3/4.
SoapySDRServer is supported by many SDR client applications, such as Gqrx, CubicSDR and GNU Radio (through the gr-osmosdr blocks). They are usually configured by using a device string that provides configuration parameters to use a remote driver and to locate the SoapySDRServer. See the SoapyRemote Wiki for full documentation of all configuration parameters.
When running from Docker Hub repository, Docker will automatically select an image variant which matches your OS and architecture. Currently amd64, arm/v7, arm64, ppc64le and s390x are supported.
Start the server in the background:
$ docker run -d --rm \
--name soapysdr \
-e SOAPY_REMOTE_IP_ADDRESS=[::] \
-e SOAPY_REMOTE_PORT=55132 \
--net=host \
--device=/dev/bus/usb/001/004 \
--device=/dev/bus/usb/001/005 \
--device=/dev/bus/usb/001/006 \
--device=/dev/bus/usb/001/007 \
hbaier/soapysdr
Example Compose file:
version: "3"
services:
soapysdr:
image: hbaier/soapysdr
container_name: soapysdr
environment:
SOAPY_REMOTE_IP_ADDRESS: [::]
SOAPY_REMOTE_PORT: 55132
network_mode: host
devices:
- /dev/bus/usb/001/004:/dev/bus/usb/001/004
- /dev/bus/usb/001/005:/dev/bus/usb/001/005
- /dev/bus/usb/001/006:/dev/bus/usb/001/006
- /dev/bus/usb/001/007:/dev/bus/usb/001/007
restart: unless-stopped
Print SoapySDR module information:
$ docker run -it --rm --entrypoint /usr/bin/SoapySDRUtil hbaier/soapysdr --info
When you start the soapysdr image, you can adjust the configuration of the SoapySDRServer instance by passing one or more environment variables on the docker run command line.
SOAPY_REMOTE_IP_ADDRESSThis variable allows you to specify a custom bind IP address. The default value is [::]. For more information please visit the SoapyRemote Wiki.
SOAPY_REMOTE_PORTThis variable allows you to specify a custom bind port. The default value is 55132. For more information please visit the SoapyRemote Wiki.
The block below shows the modules and their versions for the current Docker image with the latest tag:
######################################################
## Soapy SDR -- the SDR abstraction library ##
######################################################
Lib Version: v0.7.2-1
API Version: v0.7.1
ABI Version: v0.7
Install root: /usr
Search path: /usr/lib/<plattform>/SoapySDR/modules0.7
Search path: /usr/local/lib/<plattform>/SoapySDR/modules0.7 (missing)
Search path: /usr/local/lib/SoapySDR/modules0.7 (missing)
Module found: /usr/lib/<plattform>/SoapySDR/modules0.7/libHackRFSupport.so (0.3.3)
Module found: /usr/lib/<plattform>/SoapySDR/modules0.7/libLMS7Support.so (20.01.0)
Module found: /usr/lib/<plattform>/SoapySDR/modules0.7/libRedPitaya.so (0.1.1)
Module found: /usr/lib/<plattform>/SoapySDR/modules0.7/libairspySupport.so (0.1.2)
Module found: /usr/lib/<plattform>/SoapySDR/modules0.7/libaudioSupport.so (0.1.1)
Module found: /usr/lib/<plattform>/SoapySDR/modules0.7/libbladeRFSupport.so (0.4.1)
Module found: /usr/lib/<plattform>/SoapySDR/modules0.7/libmiriSupport.so (0.2.5)
Module found: /usr/lib/<plattform>/SoapySDR/modules0.7/libosmosdrSupport.so (0.2.5)
Module found: /usr/lib/<plattform>/SoapySDR/modules0.7/libremoteSupport.so (0.5.1)
Module found: /usr/lib/<plattform>/SoapySDR/modules0.7/librtlsdrSupport.so (0.3.0)
Module found: /usr/lib/<plattform>/SoapySDR/modules0.7/libuhdSupport.so (0.3.6)
Available factories... airspy, audio, bladerf, hackrf, lime, miri, osmosdr, redpitaya, remote, rtlsdr, uhd
Available converters...
- CF32 -> [CF32, CS16, CS8, CU16, CU8]
- CS16 -> [CF32, CS16, CS8, CU16, CU8]
- CS32 -> [CS32]
- CS8 -> [CF32, CS16, CS8, CU16, CU8]
- CU16 -> [CF32, CS16, CS8]
- CU8 -> [CF32, CS16, CS8]
- F32 -> [F32, S16, S8, U16, U8]
- S16 -> [F32, S16, S8, U16, U8]
- S32 -> [S32]
- S8 -> [F32, S16, S8, U16, U8]
- U16 -> [F32, S16, S8]
- U8 -> [F32, S16, S8]
This work is based on the ubuntu:focal Docker image (Ubuntu 20.04 LTS, codenamed Focal Fossa). It will be the next long term support release and is expected on 23 April 2020. Currently it is only a development version.
The Ubuntu package soapyremote-server is compiled with avahi support (used for SDR device discovery). Therefore it is necessary to run the container in the Docker host network mode (--net=host) and alongside a dbus daemon.
Because an avahi daemon is running inside the container, no other avahi deamon can be used inside the same Docker host network or on the Docker host itself.
Content type
Image
Digest
Size
70.1 MB
Last updated
almost 6 years ago
docker pull hbaier/soapysdr