Skip to content

libfobos

Host library and command-line tools for the RigExpert Fobos SDR receiver

What it does

The host side of the RigExpert Fobos SDR, a USB software defined radio receiver: a shared library (libfobos) that opens the board, tunes it and streams samples, and three command-line programs. fobos_devinfo lists the boards and prints their hardware revision, firmware version and serial, fobos_recorder records samples to a WAV file, and fobos_fwloader writes firmware to the board. The library's API is receive-only: it sets a frequency, gain and sample rate and reads samples, and has no transmit call.

Why you would want it

It is the layer the SoapySDR module (soapysdr-module-fobos), and through it SDR++, GQRX and GNU Radio, reach the board through, and fobos_devinfo is the first check that the board and its permissions are right before an application is involved. RigExpert sells the Fobos as an HF-to-microwave wideband receiver; this project has not measured its coverage or sensitivity (D-027) and quotes none.

Before it will work

A Fobos SDR, which the maintainer does not own, and the udev rule and plugdev membership from the fobos-sdr hardware entry (hammunition hardware apply). Upstream's versions.txt, at v.2.3.2, says "please update the firmware to v.2.1.1" and "HW rev 3.0.0 or higher only"; fobos_fwloader writes firmware. The sibling library libfobos-sdr-agile says it supports revision 4 natively and revisions 2 and 3 only with special firmware.

How it installs

  • git (cmake) — https://github.com/rigexpert/libfobos at 1e0fab3d361ee553faa88f67d2ef0ae502483151
  • build dependencies: build-essential, cmake, pkg-config, libusb-1.0-0-dev
  • Built on 2026-10-02 in rootless containers the way this block runs it -- cmake configure, cmake --build --parallel 2, cmake --install into /usr/local: debian:13 (cmake 3.31, gcc 14), ubuntu:24.04, ubuntu:26.04 and kali-rolling (gcc 16) all exit 0 in about a second with no compiler warnings. It leaves libfobos.so (version 2.4.1, soname 0), fobos.h, libfobos.pc and three tools in the prefix, and the udev rule in the inert directory named above; /etc/udev/rules.d was not created. Run without a device: fobos_devinfo prints "API Info lib: 2.4.1 ... found devices: 0", exit 0, and without any ldconfig. Built on x86_64 only; arm64 is unmeasured. Not measured: a board.

Binaries this produces:

  • fobos_devinfo
  • fobos_recorder
  • fobos_fwloader

Files its install rule leaves under the prefix, checked after the run and never copied or removed by the engine:

  • lib/libfobos.so
  • lib/libfobos.so.0
  • lib/pkgconfig/libfobos.pc
  • include/fobos.h

Known problems

The board presents the same USB identifier (16d0:132e) under two firmware families, the original and the "agile" one, and tells them apart only by the device descriptor's bcdDevice: this library opens bcdDevice 0x0000 and its sibling libfobos-sdr-agile opens 0x0101. Loading the wrong firmware makes the board invisible to the library you have, not broken. Builds install into /usr/local and the library is found through an embedded run path, so a program of your own that links it needs -L/usr/local/lib -Wl,-rpath,/usr/local/lib or ldconfig. This is an untagged pin: the unit is built from a commit, not a release. Not measured: everything that needs a board, including firmware writes.

Keeping it current

  • probe: none
  • strategy: rebuild
  • 50 commits since the v2.4.0 tag, 28 of them in June 2026 (a contributor's Debian packaging among them). Read the default branch's head (D-032) at each review; a v2.4.1 tag would replace this commit pin with a tag, and versions.txt in the tree already lists "v.2.4.1(beta)".

Where to get help with the software itself

Issues on the repository above and rigexpert.com, who make the hardware. Licence: LGPL-2.1.

Source: catalog/packages/libfobos.yaml