Sign inSign up

hbaier/soapysdr

By hbaier

Updated almost 6 years ago

Turn your SDR device into a network peripheral

Image
1

3.6K

hbaier/soapysdr repository overview

Quick reference

What is SoapySDR?

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

Why this image?

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.

Architectures other than amd64?

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.

Usage

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

Environment variables

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_ADDRESS

This variable allows you to specify a custom bind IP address. The default value is [::]. For more information please visit the SoapyRemote Wiki.

SOAPY_REMOTE_PORT

This variable allows you to specify a custom bind port. The default value is 55132. For more information please visit the SoapyRemote Wiki.

Module information

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]

Known issues

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

Tag summary

Content type

Image

Digest

Size

70.1 MB

Last updated

almost 6 years ago

docker pull hbaier/soapysdr