Advanced Radio Usage¶
This page covers advanced features and workflows for radio integration in Gatenet, including protocol decoding, spectrogram visualization, RF fingerprinting, and hardware compatibility.
Protocol Decoding¶
ADS-B Aircraft Messages
from gatenet.radio import SDRRadio
radio = SDRRadio()
aircraft = radio.decode_adsb()
for plane in aircraft:
print(plane)
Weather Station Signals
from gatenet.radio import SDRRadio
weather = radio.decode_weather()
print(weather)
Spectrogram Visualization¶
Visualize RF activity in real time using matplotlib or OpenGL:
import matplotlib.pyplot as plt
from gatenet.radio import SDRRadio
radio = SDRRadio()
samples = radio.get_samples()
plt.specgram(samples, NFFT=1024, Fs=radio.sample_rate)
plt.show()
RF Fingerprinting & ML¶
Extract unique features from RF signals for device identification:
from gatenet.radio import SDRRadio
import numpy as np
radio = SDRRadio()
samples = radio.get_samples()
fft = np.fft.fft(samples)
# Use ML model to classify/fingerprint
# model.predict(fft)
Collision Detection¶
Detect and handle RF collisions between sources:
from gatenet.radio import SDRRadio
radio = SDRRadio()
collisions = radio.detect_collisions()
print(collisions)
Hardware Compatibility¶
Supported devices: - RTL-SDR USB dongle - LoRa modules (e.g., SX127x) - ESP32/ESP8266 - Weather station receivers
Refer to the Hardware Setup page for installation and driver details.
Auto-Switch Scanning by GPS¶
Change scanning presets based on location:
from gatenet.radio import SDRRadio
radio = SDRRadio()
gps = radio.get_gps()
if gps['lat'] > 40.0:
radio.scan_frequencies(433_000_000, 434_000_000, 10)
else:
radio.scan_frequencies(868_000_000, 869_000_000, 125)
See also: Hardware Setup, CLI Integration Examples, and API Reference for more details.
Log Syncing & Archival¶
Save mesh radio logs (packets, topology, GPS, RF, Wi-Fi) to a file for base node or Mini PC integration:
from gatenet.mesh.radio import MeshRadio
radio = MeshRadio()
# ... collect data ...
radio.sync_logs() # Saves to mesh_radio_logs.json
radio.sync_logs("/mnt/base_node/mesh_radio_logs.json") # Custom path
The log file contains all mesh packets, topology, GPS, RF, and Wi-Fi data for later analysis or backup.