Add SoapySDDC support

This commit is contained in:
SteamedFish 2025-04-30 20:20:10 +08:00
parent 640c5b0b3e
commit 2c72db7e32
No known key found for this signature in database
GPG key ID: 7BD83D6E2E868CC8
2 changed files with 67 additions and 0 deletions

View file

@ -71,6 +71,7 @@ class FeatureDetector(object):
"fcdpp": ["soapy_connector", "soapy_fcdpp"],
"bladerf": ["soapy_connector", "soapy_bladerf"],
"sddc": ["sddc_connector"],
"sddc_soapy": ["soapy_connector", "soapy_sddc"],
"hpsdr": ["hpsdr_connector"],
"runds": ["runds_connector"],
# optional features and their requirements
@ -569,6 +570,18 @@ class FeatureDetector(object):
"""
return self._check_connector("sddc_connector", LooseVersion("0.1"))
def has_soapy_sddc(self):
"""
The [SoapySDR module for SDDC](https://github.com/ik1xpv/ExtIO_sddc)
devices can be used as an alternative to the `sddc_connector`, enabling
connectivity with SDR devices such as the RX666, RX888, HF103, etc.
Unlike the `sddc_connector`, the SoapySDR module relies solely on the CPU
and does not require an NVIDIA GPU.
You will need to compile SoapySDDC from source. Detailed installation
instructions are available on the [OpenWebRX Wiki](https://github.com/jketterl/openwebrx/wiki/SDDC-device-notes).
"""
return self._has_soapy_driver("SDDC")
def has_hpsdr_connector(self):
"""
The [HPSDR Connector](https://github.com/jancona/hpsdrconnector) is required to interface OpenWebRX with

54
owrx/source/sddc_soapy.py Normal file
View file

@ -0,0 +1,54 @@
from owrx.source.soapy import SoapyConnectorSource, SoapyConnectorDeviceDescription
from owrx.form.input import Input, CheckboxInput
from owrx.form.input.validator import Range
from typing import List
class SddcSoapySource(SoapyConnectorSource):
def getSoapySettingsMappings(self):
mappings = super().getSoapySettingsMappings()
mappings.update(
{
"bias_tee_hf": "UpdBiasT_HF",
"bias_tee_vhf": "UpdBiasT_VHF"
}
)
return mappings
def getDriver(self):
return "SDDC"
class SddcSoapyDeviceDescription(SoapyConnectorDeviceDescription):
def getName(self):
return "BBRF103 / RX666 / RX888 (SDDC) device (via SoapySDR)"
def getInputs(self) -> List[Input]:
return super().getInputs() + [
CheckboxInput(
"bias_tee_hf",
"Enable BIAS-T for HF antenna port"
),
CheckboxInput(
"bias_tee_vhf",
"Enable BIAS-T for VHF antenna port"
),
]
def getDeviceOptionalKeys(self):
return super().getDeviceOptionalKeys() + [
"bias_tee_hf", "bias_tee_vhf"
]
def getGainStages(self):
return ["RF", "IF"]
def hasAgc(self):
return False
def getSampleRateRanges(self) -> List[Range]:
return [
Range(2000000),
Range(4000000),
Range(8000000),
Range(16000000),
Range(32000000),
]