diff --git a/config_webrx.py b/config_webrx.py index a95de0d..0bb707f 100644 --- a/config_webrx.py +++ b/config_webrx.py @@ -99,7 +99,7 @@ digital_voice_unvoiced_quality = 1 digital_voice_dmr_id_lookup = True """ -Note: if you experience audio underruns while CPU usage is 100%, you can: +Note: if you experience audio underruns while CPU usage is 100%, you can: - decrease `samp_rate`, - set `fft_voverlap_factor` to 0, - decrease `fft_fps` and `fft_size`, @@ -116,21 +116,11 @@ Note: if you experience audio underruns while CPU usage is 100%, you can: # Currently supported types of sdr receivers: # "rtl_sdr", "rtl_sdr_soapy", "sdrplay", "hackrf", "airspy", "airspyhf", "fifi_sdr", -# "perseussdr", "lime_sdr", "pluto_sdr", "soapy_remote" -# -# In order to use rtl_sdr, you will need to install librtlsdr-dev and the connector. -# In order to use sdrplay, airspy or airspyhf, you will need to install soapysdr, the corresponding driver, and the -# connector. -# -# https://github.com/jketterl/owrx_connector -# -# In order to use Perseus HF you need to install the libperseus-sdr -# -# https://github.com/Microtelecom/libperseus-sdr -# -# and do the proper changes to the sdrs object below -# (see also Wiki in https://github.com/jketterl/openwebrx/wiki/Sample-configuration-for-Perseus-HF-receiver). -# +# "perseussdr", "lime_sdr", "pluto_sdr", "soapy_remote", "hpsdr", "red_pitaya", "uhd", +# "radioberry", "fcdpp", "rtl_tcp" + +# For more details on specific types, please checkout the wiki: +# https://github.com/jketterl/openwebrx/wiki/Supported-Hardware#sdr-devices sdrs = { "rtlsdr": { diff --git a/owrx/feature.py b/owrx/feature.py index 88cf6fb..867f510 100644 --- a/owrx/feature.py +++ b/owrx/feature.py @@ -69,6 +69,7 @@ class FeatureDetector(object): "radioberry": ["soapy_connector", "soapy_radioberry"], "fcdpp": ["soapy_connector", "soapy_fcdpp"], "rf103": ["rf103_sdr"], + "hpsdr": ["hpsdr_connector"], # optional features and their requirements "digital_voice_digiham": ["digiham", "sox"], "digital_voice_dsd": ["dsd", "sox", "digiham"], @@ -496,3 +497,10 @@ class FeatureDetector(object): def has_rf103_sdr(self): return self.command_is_runnable("rf103_sdr") + + def has_hpsdr_connector(self): + """ + In order to use the HPSDR connector, you will need to install [hpsdrconnector] + (https://github.com/jancona/hpsdrconnector). + """ + return self.command_is_runnable("hpsdrconnector -h") diff --git a/owrx/source/hpsdr.py b/owrx/source/hpsdr.py new file mode 100644 index 0000000..50cac77 --- /dev/null +++ b/owrx/source/hpsdr.py @@ -0,0 +1,33 @@ +from .connector import ConnectorSource +from owrx.command import Flag, Option + +# In order to use an HPSDR radio, you must install hpsdrconnector from https://github.com/jancona/hpsdrconnector +# These are the command line options available: +# --frequency uint +# Tune to specified frequency in Hz (default 7100000) +# --gain uint +# LNA gain between 0 (-12dB) and 60 (48dB) (default 20) +# --radio string +# IP address of radio (default use first radio discovered) +# --samplerate uint +# Use the specified samplerate: one of 48000, 96000, 192000, 384000 (default 96000) +# --debug +# Emit debug log messages on stdout +# +# If you omit `remote` from config_webrx.py, hpsdrconnector will use the HPSDR discovery protocol +# to find radios on your local network and will connect to the first radio it discovered. + +class HpsdrSource(ConnectorSource): + def getCommandMapper(self): + return ( + super() + .getCommandMapper() + .setBase("hpsdrconnector") + .setMappings( + { + "tuner_freq": Option("--frequency"), + "samp_rate": Option("--samplerate"), + "remote": Option("--radio"), + "rf_gain": Option("--gain"), + }) + )