ADAPTIV FHSS
AI-DRIVEN FREKVENSHANTERING
ADAPTIV FHSS — NYCKELPARAMETRAR
CFAR-tröskel — matematisk härledning
Termiskt brus efter FFT följer exponentialfördelningen. CFAR skattar brusgolvet från N referensceller och deklarerar kanalen störd om den överstiger skattningen med α. För Pfa = 10⁻⁶ och N = 16 referensceller: α = 16·(10⁶^(1/16) − 1) ≈ 21,94 linjärt ≈ 13,41 dB. Operativ tröskel: 15 dB (med 1,6 dB ingenjörsmarginal). Bevis: ADAPTIVE_FHSS_CFAR_THRESHOLD.
Bearbetat exempel 1 — Taktisk smalbandsstörare
40 MHz smalbandsstörare vid 100 W, 2 km från Fischer 26. Stör 400 av Silvus 4 600 kanaler = 8,7 % av bandet. Adaptiv FHSS konvergerar på 4 200 rena kanaler efter en beacon-cykel. Operativ inverkan: noll (f_clean = 91,3 % >> f_critical = 2 %). Bevis: ADAPTIVE_FHSS_NARROWBAND_IMPACT.
Bearbetat exempel 2 — Krasukha-4 barrage
Krasukha-4 (70 kW, 2 GHz bandbredd, 10 km) täcker 2–4 GHz — ingen överlappning med Silvus 140–600 MHz. Sidolobsläckage vid 300 MHz är under termiskt brusgolv efter 10 km vägförlust. Fischer 26 Silvus påverkas inte. Fischer 26E:s 70 MHz – 6 GHz SDR hoppar till de 66 % av spektrum som Krasukha inte täcker (se fischer26e.html). Bevis: FISCHER26E_KRASUKHA_UNAFFECTED_SPECTRUM.
Kodexempel — CFAR-detektor
# adaptive_scan.py — RTL-SDR CFAR jammer detection
from rtlsdr import RtlSdr
import numpy as np
def cfar_detect(psd_db, n_ref=16, n_guard=2, threshold_db=15.0):
"""Cell-Averaging CFAR.
Threshold derived from Pfa=1e-6, N=16: alpha approx 15 dB.
"""
n = len(psd_db)
jammed = np.zeros(n, dtype=bool)
for i in range(n_ref + n_guard, n - n_ref - n_guard):
left = psd_db[i - n_ref - n_guard : i - n_guard]
right = psd_db[i + n_guard + 1 : i + n_guard + 1 + n_ref]
noise_est = np.mean(np.concatenate([left, right]))
if psd_db[i] > noise_est + threshold_db:
jammed[i] = True
return jammed
sdr = RtlSdr()
sdr.sample_rate = 2.4e6
sdr.center_freq = 300e6
samples = sdr.read_samples(256 * 1024)
psd_db = 10 * np.log10(np.abs(np.fft.fft(samples, n=2048))**2 + 1e-10)
jammed = cfar_detect(psd_db)
print(f"Jammed bins: {jammed.sum()} / {len(jammed)}")
sdr.close()
Kodexempel — Blacklist-konvergens
# adaptive_mesh.py — MANET blacklist propagation
import math
def convergence_time_s(n_nodes, beacon_interval_s=5.0):
"""Flooding protocol convergence: ceil(log2(N)) cycles.
4 nodes x 5 s beacon = 10 s worst case."""
return math.ceil(math.log2(max(n_nodes, 2))) * beacon_interval_s
# 4-node squad mesh
print(f"Convergence (4 nodes): {convergence_time_s(4):.0f} s")
# Proof: MESH_CONVERGENCE_TIME_4NODES
Varför detta är operativt viktigt
Skillnaden mellan 460 rena kanaler och 0 rena kanaler är skillnaden mellan "brigadkommunikation fortsätter med marginell latens" och "brigadkommunikation har misslyckats fullständigt". En Fischer 26 på 300 m AGL tillhandahåller MANET-ryggrad för sin sektor; förlorar man den länken förlorar brigaden sin drönarunderrättelse, FPV-koordinering och artillerikorrigering i realtid. Pfa = 10⁻⁶ är den tekniska kompromissen: vid Silvus 4 600 kanaler skannat varje 10 ms förväntas ett falskt larm ungefär var 22:a timme — acceptabelt.
Vid f_clean < 2 % bär länken endast telemetri — ingen video, inga FPV-attacker, inga detaljerade COP-uppdateringar. Då tar tier-2 Fischer 26E:s 70 MHz – 6 GHz fastlock-hoppning över brigad-uppkopplingen (se fischer26e.html). Beslutet automatiseras när f_clean × bandbredd sjunker under länkens minimidatahastighet.
Begränsningar
Adaptiv FHSS besegrar INTE barrage-störning där fienden översvämmar hela bandet samtidigt. Mot en 100 W barrage-störare på 500 m över 460 MHz överstiger varje kanal tröskeln — blacklistan innehåller alla kanaler. Försvar kräver antingen (a) högre TX-effekt (opraktiskt på små drönare), (b) riktningsantenn (CRPA, se crpa-antennas.html) som spatialt utsläcker störaren, eller (c) bandbyte (Fischer 26E:s 70 MHz – 6 GHz täcker band som Krasukha-klass inte kan nå — 66 % av spektrum förblir användbart).
Relaterade kapitel
Källor
Matematiskt verifierade uppskattningar. CFAR-tröskel (Pfa = 10⁻⁶, N = 16 → α ≈ 13,4 dB) validerad i provable_claims.py under ADAPTIVE_FHSS_CFAR_THRESHOLD. 4 600× effektkvot: FHSS_JAM_POWER_RATIO. Detekteringsräckvidd 100 mW: ADAPTIVE_FHSS_DETECTION_RANGE_100MW. Smalbandsstörare-inverkan: ADAPTIVE_FHSS_NARROWBAND_IMPACT. Nätkonvergens: MESH_CONVERGENCE_TIME_4NODES.
Parameterkällor. RTL-SDR Blog V4 frekvensintervall och sampelhastighet — tillverkardokumentation på rtl-sdr.com. Silvus StreamCaster 4 600 kanaler — Silvus publicerade specifikationer. CFAR-tröskelformel α = N·(Pfa^(-1/N) − 1) — Richards Fundamentals of Radar Signal Processing (McGraw-Hill 2005). Krasukha-4-parametrar — RUSI Watling & Reynolds 2023.
Operativa uppskattningar — inte fältvaliderat av FSG-A. 107 ms skanntid beräknad från SDR-sampelhastighet; inte uppmätt på verklig RTL-SDR-hårdvara. 2–3 sekunders nätkonvergens uppskattad från Silvus beacon-intervall; inte uppmätt på verkligt 4-nodersnät. 15 dB-tröskeln inkluderar 1,6 dB ingenjörsmarginal över strikt CFAR-härledning (13,4 dB) som FSG-A inte har kalibrerat mot verkliga störningsmönster.