diff --git a/config_webrx.py b/config_webrx.py index 98bcb0a..0613278 100644 --- a/config_webrx.py +++ b/config_webrx.py @@ -99,7 +99,7 @@ Note: if you experience audio underruns while CPU usage is 100%, you can: # Check here: https://github.com/simonyiszk/openwebrx/wiki#guides-for-receiver-hardware-support # ################################################################################################# -# Currently supported types of sdr receivers: "rtl_sdr", "sdrplay", "hackrf" +# Currently supported types of sdr receivers: "rtl_sdr", "sdrplay", "hackrf", "airspy" sdrs = { "rtlsdr": { diff --git a/owrx/feature.py b/owrx/feature.py index 75ef97d..a430c0d 100644 --- a/owrx/feature.py +++ b/owrx/feature.py @@ -16,6 +16,7 @@ class FeatureDetector(object): "rtl_sdr": [ "rtl_sdr" ], "sdrplay": [ "rx_tools" ], "hackrf": [ "hackrf_transfer" ], + "airspy": [ "airspy_rx" ], "digital_voice_digiham": [ "digiham", "sox" ], "digital_voice_dsd": [ "dsd", "sox" ] } @@ -101,4 +102,7 @@ class FeatureDetector(object): return self.command_is_runnable("dsd") def has_sox(self): - return self.command_is_runnable("sox") \ No newline at end of file + return self.command_is_runnable("sox") + + def has_airspy_rx(self): + return self.command_is_runnable("airspy_rx --help 2> /dev/null") diff --git a/owrx/source.py b/owrx/source.py index c390dbf..b02ef28 100644 --- a/owrx/source.py +++ b/owrx/source.py @@ -257,6 +257,16 @@ class SdrplaySource(SdrSource): def sleepOnRestart(self): time.sleep(1) +class AirspySource(SdrSource): + def getCommand(self): + frequency = self.props['center_freq'] / 1e6 + command = "airspy_rx" + command += " -f{0}".format(frequency) + command += " -r /dev/stdout -a{samp_rate} -g {rf_gain}" + return command + def getFormatConversion(self): + return "csdr convert_s16_f" + class SpectrumThread(csdr.output): def __init__(self, sdrSource): self.sdrSource = sdrSource