Commit Graph

181 Commits

Author SHA1 Message Date
Device 91f714a4c4 Merge branch 'smittix:main' into main 2026-02-06 16:05:05 +01:00
Marc cae5640e88 Adding more available bands for europe as testing fase 2026-02-06 08:39:26 -06:00
Marc a7956af6b9 endpoints return empty results gracefully instead of 400 errors 2026-02-06 08:33:42 -06:00
Marc 7890892fad fixing bands and how the gsm scanner loops with tshark 2026-02-06 08:27:25 -06:00
Smittix 1bdbe80d97 Fix APRS rtl_fm startup failure and SDR device conflicts (#122)
Add SDR device reservation to prevent conflicts with other modes, and
capture rtl_fm stderr so actual error messages are reported to the user
instead of a generic exit code.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 13:50:09 +00:00
Marc e3313ac3e7 Added ARFCN to Frequency Conversion 2026-02-06 07:45:32 -06:00
Marc 07a4e9a6bb Fixing the process routes and child processes part 2 2026-02-06 07:39:04 -06:00
Marc 03d6007e79 Fixing the process routes and child processes 2026-02-06 07:32:47 -06:00
Marc 36dddd8b9e Adding device detection for SDR 2026-02-06 07:28:47 -06:00
Marc ac3928d8f3 First GSM SPY addition 2026-02-06 07:15:33 -06:00
Smittix 9e0cbdae1b Update listening post handling 2026-02-06 09:50:49 +00:00
Smittix 9b1b5f422a Use WiFi scanner singleton for TSCM device availability check
Replace fragile platform-specific WiFi detection with the same
scanner._detect_interfaces() used by the actual scanning code,
eliminating false "No wireless interfaces found" warnings.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 17:12:44 +00:00
Smittix 3fa1813ed5 Fix TSCM WiFi detection, SDR capabilities, layout, and correlation/cluster emission
- Use networksetup instead of deprecated airport utility for macOS WiFi detection
- Fix SDRDevice attribute access (use getattr instead of dict .get())
- Move Detected Threats panel next to RF Signals in 2-column grid
- Always run correlation/identity analysis at sweep end, even if stopped by user

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 16:41:10 +00:00
Smittix f001e4f4df Fix TSCM sweep scan resilience and add per-device error isolation
The sweep loop's WiFi/BT/RF scan processing had unprotected
timeline_manager.add_observation() calls that could crash an entire
scan iteration, silently preventing all device events from reaching
the frontend. Additionally, scan interval timestamps were only updated
at the end of processing, causing tight retry loops on persistent errors.

- Wrap timeline observation calls in try/except for all three protocols
- Move last_*_scan timestamp updates immediately after scan completes
- Add per-device try/except so one bad device doesn't block others
- Emit sweep_progress after WiFi scan for real-time status visibility
- Log warning when WiFi scan returns 0 networks for easier diagnosis
- Add known_device and score_modifier fields to correlation engine
- Add TSCM scheduling, cases, known devices, and advanced WiFi indicators

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 16:07:34 +00:00
Smittix a7d7e4e2e2 Swap ISS position API priority to avoid timeout delays
Open Notify API (api.open-notify.org) is frequently unreliable,
causing 5-second timeout delays on every ISS position request.
Promote wheretheiss.at as the primary API in both satellite.py
and sstv.py, demoting Open Notify to fallback.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 12:50:07 +00:00
Smittix cd4acc18c4 Filter WiFi connected clients by selected access point
The /wifi/v2/clients endpoint was returning all clients regardless
of query parameters, because a duplicate route in wifi.py took
precedence over the filtered one in wifi_v2.py. Added bssid,
associated, and min_rssi filtering to the active route.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 23:31:54 +00:00
Smittix 0ac7b09034 Fix USB device contention when starting audio pipeline
Add retry mechanism (3 attempts) for usb_claim_interface errors when
the SDR device hasn't been fully released by a previous process. Also
kill rtl_power alongside rtl_fm during cleanup and increase the USB
release delay.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 23:13:22 +00:00
Smittix 23e6c1dc52 Add SNR column to signal hits table
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 23:01:20 +00:00
Smittix 8d44e5e738 Set cyan-tinted map tiles as default 2026-02-04 22:31:02 +00:00
Smittix cf8b992a7e Sync scanner range from backend updates 2026-02-04 13:25:14 +00:00
Smittix 026c3bc02c Stabilize scanner progress tracking 2026-02-04 12:42:30 +00:00
Smittix 9898930084 Stabilize sweep display and lower SNR default 2026-02-04 12:30:13 +00:00
Smittix 55533060a4 Stabilize sweep progress updates 2026-02-04 12:20:38 +00:00
Smittix 0573fcecd5 Order sweep updates to avoid progress jitter 2026-02-04 12:14:46 +00:00
Smittix feb7c8547f Emit sweep progress and clear scanner queue 2026-02-04 12:11:50 +00:00
Smittix 8b47a02bee Ensure scanner releases SDR before listening 2026-02-04 12:07:30 +00:00
Smittix c63cfa5e35 Stop rtl_power when starting listen 2026-02-04 12:04:50 +00:00
Smittix d601929130 Improve rtl_power line parsing 2026-02-04 12:03:01 +00:00
Smittix 97b123a016 Default squelch to zero and track SDR usage 2026-02-04 11:59:06 +00:00
Smittix e6e47f2202 Add SNR threshold control for power scan 2026-02-04 11:54:56 +00:00
Smittix d2e68a12e9 Switch scanner to rtl_power sweep 2026-02-04 11:52:39 +00:00
Smittix d70455b48e Advance scanner after dwell on signal 2026-02-04 11:44:19 +00:00
Smittix b1f48db816 Tighten listening signal detection thresholds 2026-02-04 11:41:30 +00:00
Smittix d64b351aef Restart audio pipeline for fresh stream header 2026-02-04 11:04:43 +00:00
Smittix d59ebfb270 Add listening audio probe diagnostics 2026-02-04 11:02:00 +00:00
Smittix b68ce6ec3b Stream listening audio as WAV 2026-02-04 10:56:57 +00:00
Smittix 908d159ca9 Timeout audio stream if no first chunk 2026-02-04 10:53:03 +00:00
Smittix 74155ce07c Flush ffmpeg audio stream packets 2026-02-04 10:06:45 +00:00
Smittix 40f1e3296f Add listening audio debug endpoint 2026-02-04 10:03:47 +00:00
Smittix 7d937abe93 Fix multiple UI bugs and improve error handling
Issues fixed:
- #113: Display RTL-SDR serial numbers in device selector
- #112: Kill all processes now stops Bluetooth scans
- #111: BLE device list no longer overflows container bounds
- #109: WiFi scanner panels maintain minimum width (no more "imploding")
- #108: Radar device hover no longer causes violent shaking
- #106: "Use GPS" button now uses gpsd for USB GPS devices
- #105: Meter trend text no longer overlaps adjacent columns
- #104: dump1090 errors now provide specific troubleshooting guidance

Changes:
- app.py: Add Bluetooth cleanup to /killall endpoint
- routes/adsb.py: Parse dump1090 stderr for specific error messages
- templates/index.html: Show SDR serial numbers in device dropdown
- static/css/index.css: Fix WiFi/BT panel layouts with proper min-width
- static/css/components/signal-cards.css: Fix meter grid overflow
- static/css/components/proximity-viz.css: Fix radar hover transform
- static/css/settings.css: Add GPS detection spinner
- static/js/components/proximity-radar.js: Add invisible hit areas
- static/js/core/settings-manager.js: Use gpsd before browser geolocation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 21:45:40 +00:00
Smittix 2caccac0bc Add application restart endpoint for post-update restarts
Adds POST /updater/restart endpoint that gracefully restarts the
application using os.execv. Cleans up all decoder processes and
global state before replacing the process with a fresh instance.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 22:28:32 +00:00
Smittix 9f0149706a Release v2.12.1
Bug fixes and improvements.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 22:16:12 +00:00
Smittix ea4722b6ac Add SDR device registry to prevent decoder conflicts
Implements centralized tracking of SDR device allocation to prevent
multiple decoders from trying to use the same device simultaneously.

- Add sdr_device_registry with claim/release/status functions in app.py
- Update all SDR-based routes to claim devices on start and release on stop
- Return HTTP 409 with DEVICE_BUSY error when device is already in use
- Clear registry on /killall
- Skip device claims for remote connections (rtl_tcp, remote SBS)

Fixes #100
Fixes #101

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 21:05:21 +00:00
cemaxecuter 5b621b95d4 Auto-refresh agent capabilities after monitor mode toggle
When monitor mode is toggled on a remote agent, the controller now
automatically refreshes the agent's capabilities and updates the
database. This keeps the UI interface list in sync without requiring
a manual refresh.
2026-01-31 08:48:32 -05:00
cemaxecuter 660948b9a3 Fix agent mode issues and WiFi deep scan polling
Agent fixes:
- Fix Ctrl+C hang by running cleanup in background thread
- Add force-exit on double Ctrl+C
- Improve exception handling in output reader threads to prevent
  bad file descriptor errors on shutdown
- Reduce cleanup timeouts for faster shutdown

Controller/UI fixes:
- Add URL validation for agent registration (check port, protocol)
- Show helpful message when agent is unreachable during registration
- Clarify API key field label (reserved for future use)
- Add client-side URL validation with user-friendly error messages

WiFi agent mode fixes:
- Add polling fallback for deep scan when push mode is disabled
- Polls /controller/agents/{id}/wifi/data every 2 seconds
- Detect running scans when switching to an agent
- Fix scan_mode detection (agent uses params.scan_type)
2026-01-31 08:10:32 -05:00
Smittix 627de0d581 feat: Add TCP connection support for Meshtastic
Allow connecting to WiFi-enabled Meshtastic devices via TCP/IP in
addition to USB/Serial connections. This enables remote monitoring
of mesh nodes that have WiFi capability (T-Beam, Heltec WiFi LoRa, etc).

- Add connection_type parameter ('serial' or 'tcp') to /meshtastic/start
- Add hostname parameter for TCP connections
- Update UI with connection type dropdown and hostname input field
- Show connection type in status responses

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 23:01:46 +00:00
Smittix ead53d2e1c Merge branch 'upstream-shared-observer-location' 2026-01-30 22:52:17 +00:00
Smittix f844a10624 feat: Add real-time Doppler tracking for ISS SSTV reception
- Add DopplerTracker class using skyfield for satellite tracking
- Calculate and apply Doppler shift correction (up to ±3.5 kHz at 145.800 MHz)
- Background thread monitors shift and retunes rtl_fm when >500 Hz drift
- New /sstv/doppler endpoint for real-time Doppler info
- Start endpoint accepts latitude/longitude for automatic tracking

Also:
- Add slowrx installation to setup.sh (source build for macOS, apt for Debian)
- Sync observer location to dashboard-specific localStorage keys

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 22:40:27 +00:00
James Ward 7e59d2b184 fix: make ADS-B auto-start opt-in 2026-01-30 10:51:35 -08:00
James Ward 877a810ff4 feat: add shared observer location with opt-out 2026-01-30 10:49:53 -08:00