Problems with Airspy Mini

I’m trying to get an AirSpy Mini working with SatNOGS, however I can’t seem to get the correct syntax in the config.

SoapySDRUtil --probe
######################################################

Soapy SDR – the SDR abstraction library

######################################################

Probe device
[INFO] [UHD] linux; GNU C++ version 8.3.0; Boost_106700; UHD_3.15.0.0-3satnogs1

RtApiAlsa::getDeviceInfo: snd_pcm_open error for device (default), No such file or directory.


– Device identification

driver=Airspy
hardware=Airspy
device_id=0
origin=GitHub - pothosware/SoapyAirspy: Soapy SDR plugin for the Airspy


– Peripheral summary

Channels: 1 Rx, 0 Tx
Timestamps: NO
Other Settings:
* Bias tee - Enable the 4.5v DC Bias tee to power SpyVerter / LNA / etc. via antenna connection.
[key=biastee, default=false, type=bool]
* Bit Pack - Enable packing 4 12-bit samples into 3 16-bit words for 25% less USB trafic.
[key=bitpack, default=false, type=bool]


– RX Channel 0

Full-duplex: YES
Supports AGC: YES
Stream formats: CS16, CF32
Native format: CS16 [full-scale=32767]
Antennas: RX
Full gain range: [0, 45] dB
LNA gain range: [0, 15] dB
MIX gain range: [0, 15] dB
VGA gain range: [0, 15] dB
Full freq range: [24, 1800] MHz
RF freq range: [24, 1800] MHz
Sample rates: 6, 3 MSps

sudo -u satnogs SoapySDRUtil --args=“driver=airspy” --direction=RX --rate=3e6
######################################################

Soapy SDR – the SDR abstraction library

######################################################

[INFO] Using format CS16.
Stream format: CS16
Num channels: 1
Element size: 4 bytes
Begin RX rate test at 3 Msps
Starting stream loop, press Ctrl+C to exit… 2.99166 Msps 11.9666 MBps

However running this doesn’t work

susatnogs_fm.py
Traceback (most recent call last):
File “/usr/bin/satnogs_fm.py”, line 441, in
main()
File “/usr/bin/satnogs_fm.py”, line 424, 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_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_port=options.udp_port, waterfall_file_path=options.waterfall_file_path)
File “/usr/bin/satnogs_fm.py”, line 89, in init
tune_args, settings, samp_rate_rx, “fc32”)
File “/usr/lib/python3/dist-packages/soapy/soapy_swig.py”, line 166, in make
return _soapy_swig.source_make(nchan, device, dev_args, stream_args, tune_args, other_settings, sampling_rate, type)
RuntimeError: SoapySDR::Device::make() no match

Current config (already tried resetting the config)

SatNOGS client configuration
satnogs_antenna: RX
satnogs_api_token: blahblahblah
satnogs_rx_samp_rate: 3e6
satnogs_soapy_rx_device: driver=airspy
satnogs_station_elev: ‘high’
satnogs_station_id: ‘-1’
satnogs_station_lat: ‘over here’
satnogs_station_lon: ‘lolz’

I just tried re-imaging the sd-card, still the same issue. Not sure what I’m missing to get the airspy to work.

I just found a twitter tweet where the rx_samp_rate for the Airspy Mini is shown as “3.072e6”.

73, Norbert

Nice find. unfortunately still no change in behavior. I can throw that sample rate into soapysdrutil and it works just fine though. I feel like I’m missing some basic step in the process, lol.

Have you set the gain as well? Easily missed.

And those aren’t your actual height, lat, long, station I’d but dummy values?

Correct. And gain is set… I tried a lower value like 10, as well as a higher value like 43.

I have a couple of airspy minis running on raspberry pi 4s. Are you not getting any waterfall at all or is the waterfall just empty?

Will post my config shortly. Maybe that will help.

OK here is my config (The network_api_post_interval and post_observation_script you can safely ignore! The biastee=true is to turn on the biastee to power a LNA):

    "satnogs_antenna": "RX",
    "satnogs_api_token": "[redacted]",
    "satnogs_dev_args": "biastee=true",
    "satnogs_gain_mode": "Settings Field",
    "satnogs_network_api_post_interval": "300",
    "satnogs_other_settings": "LNA=12,MIX=8,VGA=11",
    "satnogs_post_observation_script": "/usr/bin/python3 /home/pi/satnogs2gr-satellites/s2grs.py {{ID}} {{TLE}} {{TIMESTAMP}} {{SCRIPT_NAME}}",
    "satnogs_rx_bandwidth": "60000",
    "satnogs_rx_samp_rate": "6e6",
    "satnogs_soapy_rx_device": "driver=airspy",
    "satnogs_station_elev": "50",
    "satnogs_station_id": "1376",
1 Like

The lines with an asterisk * are important to get the airspy to work and show a waterfall and receive signals. I struggled for quite some time to get the airspy to work and now I’m happy with the results while using homemade omni-directional antennas.

satnogs_antenna: RX
satnogs_api_token: redacted

  • satnogs_dev_args: driver=airspy,biastee=true
  • satnogs_gain_mode: Settings Field
  • satnogs_other_settings: LNA=8,MIX=8,VGA=11
    satnogs_rf_gain: 43
    satnogs_rx_bandwidth: 30000
  • satnogs_rx_samp_rate: 6e6
  • satnogs_soapy_rx_device: airspy=0,bias=1
    satnogs_station_elev: 77
    satnogs_station_id: 2090
    satnogs_station_lat: 45
    satnogs_station_lon: -122
1 Like

This table is from the creator of the Airspy, and documents the “overall” gain to the linearity or sensitivity equivalents. I found this very useful in setting the gain on my Airspy mini, taking advantage of the sensitivity settings without having any facility for doing so in the SoapySDR settings directly.

6 Likes