diff --git a/instance/intercept.db b/instance/intercept.db index 5e92d24..123a5ae 100644 Binary files a/instance/intercept.db and b/instance/intercept.db differ diff --git a/routes/adsb.py b/routes/adsb.py index fe0aa45..ee2c7ec 100644 --- a/routes/adsb.py +++ b/routes/adsb.py @@ -336,7 +336,10 @@ def start_adsb(): time.sleep(DUMP1090_START_WAIT) if app_module.adsb_process.poll() is not None: - return jsonify({'status': 'error', 'message': 'dump1090 failed to start. Check RTL-SDR device permissions or if another process is using it.'}) + if sdr_type == SDRType.RTL_SDR: + return jsonify({'status': 'error', 'message': 'dump1090 failed to start. Check RTL-SDR device permissions or if another process is using it.'}) + else: + return jsonify({'status': 'error', 'message': f'ADS-B decoder failed to start for {sdr_type.value}. Ensure readsb is installed with SoapySDR support and the device is connected.'}) adsb_using_service = True thread = threading.Thread(target=parse_sbs_stream, args=(f'localhost:{ADSB_SBS_PORT}',), daemon=True) diff --git a/utils/sdr/detection.py b/utils/sdr/detection.py index 0dcfcb5..95fba91 100644 --- a/utils/sdr/detection.py +++ b/utils/sdr/detection.py @@ -144,6 +144,15 @@ def detect_rtlsdr_devices() -> list[SDRDevice]: return devices +def _find_soapy_util() -> str | None: + """Find SoapySDR utility command (name varies by distribution).""" + # Try different command names used across distributions + for cmd in ['SoapySDRUtil', 'soapy_sdr_util', 'soapysdr-util']: + if _check_tool(cmd): + return cmd + return None + + def detect_soapy_devices(skip_types: Optional[set[SDRType]] = None) -> list[SDRDevice]: """ Detect SDR devices via SoapySDR. @@ -156,13 +165,14 @@ def detect_soapy_devices(skip_types: Optional[set[SDRType]] = None) -> list[SDRD devices: list[SDRDevice] = [] skip_types = skip_types or set() - if not _check_tool('SoapySDRUtil'): - logger.debug("SoapySDRUtil not found, skipping SoapySDR detection") + soapy_cmd = _find_soapy_util() + if not soapy_cmd: + logger.debug("SoapySDR utility not found, skipping SoapySDR detection") return devices try: result = subprocess.run( - ['SoapySDRUtil', '--find'], + [soapy_cmd, '--find'], capture_output=True, text=True, timeout=10