diff --git a/CHANGELOG.md b/CHANGELOG.md index 0e3cb47..ede1359 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to iNTERCEPT will be documented in this file. +## [2.26.9] - 2026-03-14 + +### Fixed +- **ADS-B bias-t support for RTL-SDR Blog V4** — When dump1090 lacks native `--enable-biast` support, the system now falls back to `rtl_biast` (from RTL-SDR Blog drivers) to enable bias-t power before starting dump1090. The Blog V4's built-in LNA requires bias-t to receive ADS-B signals. (#195) + +--- + ## [2.26.8] - 2026-03-14 ### Fixed diff --git a/config.py b/config.py index b5dfe4d..c748bac 100644 --- a/config.py +++ b/config.py @@ -7,10 +7,17 @@ import os import sys # Application version -VERSION = "2.26.8" +VERSION = "2.26.9" # Changelog - latest release notes (shown on welcome screen) CHANGELOG = [ + { + "version": "2.26.9", + "date": "March 2026", + "highlights": [ + "ADS-B bias-t fallback via rtl_biast for Blog V4 when dump1090 lacks native support", + ] + }, { "version": "2.26.8", "date": "March 2026", diff --git a/pyproject.toml b/pyproject.toml index 2da36d2..1ff2bd1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "intercept" -version = "2.26.8" +version = "2.26.9" description = "Signal Intelligence Platform - Pager/433MHz/ADS-B/Satellite/WiFi/Bluetooth" readme = "README.md" requires-python = ">=3.9" diff --git a/utils/sdr/rtlsdr.py b/utils/sdr/rtlsdr.py index fd59de0..80b50e5 100644 --- a/utils/sdr/rtlsdr.py +++ b/utils/sdr/rtlsdr.py @@ -46,6 +46,35 @@ def _rtl_tool_supports_bias_t(tool_path: str) -> bool: return False +def enable_bias_t_via_rtl_biast(device_index: int = 0) -> bool: + """Enable bias-t power using rtl_biast (RTL-SDR Blog drivers). + + Runs rtl_biast to set the bias-t register on the device, then exits. + The setting persists across device opens until the device is reset. + + Returns True if bias-t was enabled successfully. + """ + rtl_biast_path = get_tool_path('rtl_biast') or 'rtl_biast' + try: + result = subprocess.run( + [rtl_biast_path, '-b', '1', '-d', str(device_index)], + capture_output=True, + text=True, + timeout=5 + ) + if result.returncode == 0: + logger.info(f"Bias-t enabled via rtl_biast on device {device_index}") + return True + logger.warning(f"rtl_biast failed (exit {result.returncode}): {result.stderr.strip()}") + return False + except FileNotFoundError: + logger.warning("rtl_biast not found — install RTL-SDR Blog drivers for bias-t support") + return False + except Exception as e: + logger.warning(f"Failed to enable bias-t via rtl_biast: {e}") + return False + + def _get_dump1090_bias_t_flag(dump1090_path: str) -> str | None: """Detect the correct bias-t flag for the installed dump1090 variant. @@ -197,10 +226,13 @@ class RTLSDRCommandBuilder(CommandBuilder): if bias_t_flag: cmd.append(bias_t_flag) else: - logger.warning( - f"Bias-t requested but {dump1090_path} does not support it. " - "Consider using dump1090-fa or readsb for bias-t support." - ) + # Fallback: use rtl_biast to set bias-t before starting dump1090 + if not enable_bias_t_via_rtl_biast(device.index): + logger.warning( + f"Bias-t requested but {dump1090_path} does not support it " + "and rtl_biast is not available. Install RTL-SDR Blog drivers " + "or use dump1090-fa/readsb for bias-t support." + ) return cmd