diff --git a/utils/sdr/airspy.py b/utils/sdr/airspy.py index 3621ee5..36ae824 100644 --- a/utils/sdr/airspy.py +++ b/utils/sdr/airspy.py @@ -126,7 +126,8 @@ class AirspyCommandBuilder(CommandBuilder): device: SDRDevice, frequency_mhz: float = 433.92, gain: Optional[float] = None, - ppm: Optional[int] = None + ppm: Optional[int] = None, + bias_t: bool = False ) -> list[str]: """ Build rtl_433 command with SoapySDR support for ISM band decoding. @@ -145,6 +146,9 @@ class AirspyCommandBuilder(CommandBuilder): if gain is not None and gain > 0: cmd.extend(['-g', str(int(gain))]) + if bias_t: + cmd.extend(['-T']) + return cmd def get_capabilities(self) -> SDRCapabilities: diff --git a/utils/sdr/base.py b/utils/sdr/base.py index 074cbc2..9941b09 100644 --- a/utils/sdr/base.py +++ b/utils/sdr/base.py @@ -138,7 +138,8 @@ class CommandBuilder(ABC): device: SDRDevice, frequency_mhz: float = 433.92, gain: Optional[float] = None, - ppm: Optional[int] = None + ppm: Optional[int] = None, + bias_t: bool = False ) -> list[str]: """ Build ISM band decoder command (433MHz sensors). @@ -148,6 +149,7 @@ class CommandBuilder(ABC): frequency_mhz: Center frequency in MHz (default 433.92) gain: Gain in dB (None for auto) ppm: PPM frequency correction + bias_t: Enable bias-T power (for active antennas) Returns: Command as list of strings for subprocess diff --git a/utils/sdr/hackrf.py b/utils/sdr/hackrf.py index f133426..acb7c54 100644 --- a/utils/sdr/hackrf.py +++ b/utils/sdr/hackrf.py @@ -123,7 +123,8 @@ class HackRFCommandBuilder(CommandBuilder): device: SDRDevice, frequency_mhz: float = 433.92, gain: Optional[float] = None, - ppm: Optional[int] = None + ppm: Optional[int] = None, + bias_t: bool = False ) -> list[str]: """ Build rtl_433 command with SoapySDR support for ISM band decoding. @@ -142,6 +143,9 @@ class HackRFCommandBuilder(CommandBuilder): if gain is not None and gain > 0: cmd.extend(['-g', str(int(gain))]) + if bias_t: + cmd.extend(['-T']) + return cmd def get_capabilities(self) -> SDRCapabilities: diff --git a/utils/sdr/limesdr.py b/utils/sdr/limesdr.py index adfd264..a8db3bd 100644 --- a/utils/sdr/limesdr.py +++ b/utils/sdr/limesdr.py @@ -104,12 +104,14 @@ class LimeSDRCommandBuilder(CommandBuilder): device: SDRDevice, frequency_mhz: float = 433.92, gain: Optional[float] = None, - ppm: Optional[int] = None + ppm: Optional[int] = None, + bias_t: bool = False ) -> list[str]: """ Build rtl_433 command with SoapySDR support for ISM band decoding. rtl_433 has native SoapySDR support via -d flag. + Note: LimeSDR does not support bias-T, parameter is ignored. """ device_str = self._build_device_string(device) diff --git a/utils/sdr/rtlsdr.py b/utils/sdr/rtlsdr.py index a71167c..ba6ed22 100644 --- a/utils/sdr/rtlsdr.py +++ b/utils/sdr/rtlsdr.py @@ -115,7 +115,8 @@ class RTLSDRCommandBuilder(CommandBuilder): device: SDRDevice, frequency_mhz: float = 433.92, gain: Optional[float] = None, - ppm: Optional[int] = None + ppm: Optional[int] = None, + bias_t: bool = False ) -> list[str]: """ Build rtl_433 command for ISM band sensor decoding. @@ -135,6 +136,9 @@ class RTLSDRCommandBuilder(CommandBuilder): if ppm is not None and ppm != 0: cmd.extend(['-p', str(ppm)]) + if bias_t: + cmd.extend(['-T']) + return cmd def get_capabilities(self) -> SDRCapabilities: