Edit: I’m seeing now in the Wiki that the new software doesn’t support serial device access from within the container. I’ll have to try the workarounds I suppose.
So I’ve run the satnogs client install and satnogs-setup on a Raspberry pi 4 without any issues following the instructions here: Raspberry Pi - SatNOGS Wiki.
dev@raspberrypi:~ $ sudo docker ps -f 'name=^satnogs_' --format "table {{.Names}}\t{{.Status}}"
NAMES STATUS
satnogs_satnogs-client Up 2 hours
satnogs_rigctld Up 17 hours
I can see my site online and I can schedule observations just fine. However, the docker container can’t access any of my devices. It’s not an issue with the host setup:
dev@raspberrypi:~ $ hackrf_info
hackrf_info version: 2022.09.1
libhackrf version: 2022.09.1 (0.7)
Found HackRF
Index: 0
Serial number: 0000000000000000088869dc2940ba1b
Board ID Number: 2 (HackRF One)
Firmware Version: 2021.03.1 (API:1.04)
Part ID Number: 0xa000cb3c 0x006a4757
[ 3092.572214] usb 1-1.4: new full-speed USB device number 6 using xhci_hcd
[ 3092.676419] usb 1-1.4: New USB device found, idVendor=0403, idProduct=6001, bcdDevice= 6.00
[ 3092.676429] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 3092.676434] usb 1-1.4: Product: FT232R USB UART
[ 3092.676437] usb 1-1.4: Manufacturer: FTDI
[ 3092.676441] usb 1-1.4: SerialNumber: AB0KPC11
[ 3092.683051] ftdi_sio 1-1.4:1.0: FTDI USB Serial Device converter detected
[ 3092.683125] usb 1-1.4: Detected FT232R
[ 3092.687198] usb 1-1.4: FTDI USB Serial Device converter now attached to ttyUSB0
dev@raspberrypi:~ $ ls /dev/ttyUSB-rotator
/dev/ttyUSB-rotator
As you can see, my HackRF and rotator interfaces are detected just fine. I can also run rotctld and control it with rotctl or with gpredict from another computer no issue. However, during an observation, no devices:
INFO satnogsclient.scheduler.tasks Received job for observation 11929961, starting at 2025-07-10T17:44:04+00:00
INFO satnogsclient.observer.observer Begin observation 11929961 ...
rot_init called
initrots4_easycomm called
rot_register (201)
rot_register (202)
rot_register (204)
rot_open called
serial_open called
serial_open: Unable to open /dev/ttyUSB-rotator - No such file or directory
rot_get_position called
rot_set_position called az=0.33 el=8.07
rig_init: rig does not have rx_range!!
network_open: hoststr=rigctld, portstr=4532
INFO satnogsclient.observer.observer Start gnuradio thread.
Traceback (most recent call last):
File "/usr/bin/satnogs_fm.py", line 476, in <module>
main()
File "/usr/bin/satnogs_fm.py", line 459, in main
tb = top_block_cls(antenna=options.antenna, bb_freq=options.bb_freq, bw=options.bw, dc_removal=options.dc_removal, decoded_data_file_path=options.decoded_data_file_path, dev_args=options.dev_args, deviation=options.deviation, doppler_correction_per_sec=options.doppler_correction_per_sec, enable_iq_dump=options.enable_iq_dump, file_path=options.file_path, gain=options.gain, gain_mode=options.gain_mode, iq_file_path=options.iq_file_path, lo_offset=options.lo_offset, max_modulation_freq=options.max_modulation_freq, other_settings=options.other_settings, ppm=options.ppm, rigctl_host=options.rigctl_host, rigctl_port=options.rigctl_port, rx_freq=options.rx_freq, samp_rate_rx=options.samp_rate_rx, soapy_rx_device=options.soapy_rx_device, stream_args=options.stream_args, tune_args=options.tune_args, udp_IP=options.udp_IP, udp_dump_host=options.udp_dump_host, udp_dump_port=options.udp_dump_port, udp_port=options.udp_port, waterfall_file_path=options.waterfall_file_path)
File "/usr/bin/satnogs_fm.py", line 92, in __init__
self.soapy_source_0_0 = soapy.source(1, dev, dev_args, stream_args,
File "/usr/lib/python3/dist-packages/soapy/soapy_swig.py", line 131, in make
return _soapy_swig.source_make(nchan, device, dev_args, stream_args, tune_args, other_settings, sampling_rate, type)
RuntimeError: no hackrf device matches
netrigctl_close: done status=Command completed successfully
INFO satnogsclient.observer.observer Observation 11929961 finished.
ERROR satnogsclient.observer.observer No waterfall data file found
Checking from within the container, sure enough there are no devices:
dev@raspberrypi:~ $ sudo docker exec -it satnogs_satnogs-client bash
satnogs-client@0f6edb9f1b24:/$ SoapySDRUtil --find="driver=hackrf"
######################################################
## Soapy SDR -- the SDR abstraction library ##
######################################################
No devices found!
satnogs-client@0f6edb9f1b24:/$ ls /dev/tty*
/dev/tty
I believe my configuration is correct:
------------[ copy here ]------------
{
"versions": {
"satnogs-client": "unknown",
"satnogs-ansible": "unknown",
"satnogs-flowgraphs": "unknown",
"gr-satnogs": "unknown",
"gr-soapy": "unknown",
"gnuradio": "unknown",
"satnogs-config": "1.0"
},
"state": {
"is-applied": false,
"pending-tags": null
},
"system": {
"date": "2025-07-10T19:48:48.183028+00:00",
"platform": {
"system": "Linux",
"node": "satnogs-config",
"release": "6.12.34+rpt-rpi-v8",
"version": "#1 SMP PREEMPT Debian 1:6.12.34-1+rpt1~bookworm (2025-06-26)",
"machine": "aarch64",
"processor": ""
},
"memory": {
"total": 3981369344,
"available": 3430019072,
"percent": 13.8,
"used": 457207808,
"free": 2031718400,
"active": 985976832,
"inactive": 677175296,
"buffers": 223854592,
"cached": 1268588544,
"shared": 22478848,
"slab": 194625536
},
"disk": {
"total": 30890590208,
"used": 10667376640,
"free": 18633166848,
"percent": 36.4
}
},
"configuration": {
"satnogs_antenna": "TX/RX",
"satnogs_api_token": "[redacted]",
"satnogs_log_level": "INFO",
"satnogs_rf_gain": "64",
"satnogs_rot_enabled": true,
"satnogs_rot_model": "ROT_MODEL_EASYCOMM2",
"satnogs_rot_port": "/dev/ttyUSB-rotator",
"satnogs_rx_samp_rate": "8e6",
"satnogs_soapy_rx_device": "driver=hackrf",
"satnogs_station_elev": "1941",
"satnogs_station_id": "3494",
"satnogs_station_lat": "38.901",
"satnogs_station_lon": "-104.851"
}
}
------------[ copy end ]-------------```
I've rerun satnogs-setup and restarted the container many times following troubleshooting guides to no effect. What can I do here?