SDR Software¶
Програмне забезпечення для роботи з SDR.
GUI програми¶
SDR# (Windows)¶
Завантаження: https://airspy.com/download/
Особливості:
- Простий інтерфейс
- Багато плагінів
- Підтримка багатьох SDR
- Безкоштовний
Налаштування:
1. Вибрати Source (RTL-SDR, Airspy, etc.)
2. Налаштувати частоту
3. Вибрати модуляцію (WFM, NFM, AM, SSB)
4. Play
GQRX (Linux/macOS)¶
# Встановлення
sudo apt install gqrx-sdr
# Запуск
gqrx
Особливості:
- Відкритий код
- GNU Radio backend
- Простий інтерфейс
- UDP audio output
CubicSDR (Cross-platform)¶
sudo apt install cubicsdr
Особливості:
- Кросплатформенний
- Waterfall з масштабуванням
- Закладки
- Запис аудіо
SDRangel (Cross-platform)¶
# Збірка
git clone https://github.com/f4exb/sdrangel.git
cd sdrangel
mkdir build && cd build
cmake ..
make
Особливості:
- Багато демодуляторів
- TX підтримка
- Plugins
- Сигнальний аналізатор
Командна строка¶
rtl_sdr / rtl_fm¶
# Запис сырих даних
rtl_sdr -f 100M -s 2.4M -g 40 recording.bin
# FM радіо
rtl_fm -f 100.1M -M wbfm -s 200k - | aplay -r 32k -f S16_LE
# NFM
rtl_fm -f 145.5M -M fm -s 22050 - | aplay -r 22050 -f S16_LE
# AM
rtl_fm -f 1000k -M am -s 12k - | aplay -r 12k -f S16_LE
rtl_power¶
# Сканування спектру
rtl_power -f 88M:108M:50k -g 40 -i 1s fm_band.csv
# Широкий скан
rtl_power -f 24M:1700M:1M -g 40 -i 60s full_scan.csv
hackrf_transfer¶
# Прийом
hackrf_transfer -r rx.bin -f 433920000 -s 8000000 -g 40 -l 32
# Передача
hackrf_transfer -t tx.bin -f 433920000 -s 8000000 -x 40 -a 1
GNU Radio¶
Встановлення¶
# Ubuntu
sudo apt install gnuradio
# Arch
sudo pacman -S gnuradio
# macOS
brew install gnuradio
GNU Radio Companion¶
gnuradio-companion
Візуальний редактор flowgraph для створення SDR обробки.
Приклад FM приймача¶
#!/usr/bin/env python3
from gnuradio import gr, blocks, analog, audio, filter
import osmosdr
class fm_receiver(gr.top_block):
def __init__(self, freq=100e6):
gr.top_block.__init__(self)
# SDR джерело
self.src = osmosdr.source(args="numchan=1")
self.src.set_sample_rate(2e6)
self.src.set_center_freq(freq)
self.src.set_gain(40)
# Фільтр
self.lpf = filter.fir_filter_ccf(
10,
filter.firdes.low_pass(1, 2e6, 100e3, 10e3)
)
# FM демодулятор
self.demod = analog.wfm_rcv(
quad_rate=200e3,
audio_decimation=4
)
# Аудіо вихід
self.audio = audio.sink(50000)
self.connect(self.src, self.lpf, self.demod, self.audio)
if __name__ == "__main__":
tb = fm_receiver(100.7e6)
tb.run()
Декодери¶
Multimon-ng¶
# Встановлення
sudo apt install multimon-ng
# POCSAG пейджери
rtl_fm -f 153350000 -s 22050 - | multimon-ng -t raw -a POCSAG512 -a POCSAG1200 -
# FLEX пейджери
rtl_fm -f 929000000 -s 22050 - | multimon-ng -t raw -a FLEX -
# DTMF
multimon-ng -t wav -a DTMF audio.wav
dump1090 (ADS-B)¶
# Встановлення
git clone https://github.com/antirez/dump1090.git
cd dump1090 && make
# Запуск
./dump1090 --interactive --net
# Веб-інтерфейс
./dump1090 --net --net-http-port 8080
# http://localhost:8080
rtl_433 (ISM)¶
# Встановлення
sudo apt install rtl-433
# Запуск
rtl_433 -f 433920000
# JSON вивід
rtl_433 -F json
# Конкретний протокол
rtl_433 -R 12
Direwolf (APRS)¶
# Встановлення
sudo apt install direwolf
# З RTL-SDR
rtl_fm -f 144.8M -s 22050 - | direwolf -c sdr.conf -r 22050 -
# Конфігурація sdr.conf
ADEVICE stdin null
CHANNEL 0
MODEM 1200
Спектральний аналіз¶
Inspectrum¶
# Встановлення
sudo apt install inspectrum
# Запуск
inspectrum recording.bin
# Аналіз:
# - Курсори для вимірювання
# - Пошук символів
# - Export символів
Baudline¶
# Запуск
baudline -stdin < recording.bin
# Аналіз:
# - FFT
# - Autocorrelation
# - Histogram
SigDigger¶
# Збірка з джерел
git clone https://github.com/BatchDrake/SigDigger.git
# ... dependencies and build
# Особливості:
# - Символьний аналіз
# - Вбудовані декодери
# - Suscan backend
Спеціалізоване ПЗ¶
SDRTrunk (P25/DMR)¶
# Завантажити JAR
java -jar sdrtrunk.jar
# Функції:
# - P25 Phase 1/2
# - DMR Tier II/III
# - Trunk tracking
DSD+ (Digital Speech)¶
Підтримка:
- P25 Phase 1
- DMR
- NXDN
- dPMR
- D-STAR
Windows only, freeware
OP25 (P25)¶
# Встановлення
git clone https://github.com/osmocom/op25.git
cd op25/op25/gr-op25_repeater
./install.sh
# Запуск
./rx.py --args "rtl" -f 851.0125e6
GNU AIS¶
# Встановлення
sudo apt install gnuais
# Запуск
rtl_fm -f 161.975M -s 48000 - | gnuais
Автоматизація¶
Python + pyrtlsdr¶
from rtlsdr import RtlSdr
import numpy as np
sdr = RtlSdr()
sdr.sample_rate = 2.4e6
sdr.center_freq = 100e6
sdr.gain = 40
samples = sdr.read_samples(256*1024)
sdr.close()
# Обробка
power = 10 * np.log10(np.mean(np.abs(samples)**2))
print(f"Power: {power:.1f} dB")
SoapySDR¶
import SoapySDR
import numpy as np
# Пошук пристроїв
devices = SoapySDR.Device.enumerate()
# Підключення
sdr = SoapySDR.Device(dict(driver="rtlsdr"))
# Налаштування
sdr.setSampleRate(SoapySDR.SOAPY_SDR_RX, 0, 2.4e6)
sdr.setFrequency(SoapySDR.SOAPY_SDR_RX, 0, 100e6)
sdr.setGain(SoapySDR.SOAPY_SDR_RX, 0, 40)
# Прийом
rxStream = sdr.setupStream(SoapySDR.SOAPY_SDR_RX, SoapySDR.SOAPY_SDR_CF32)
sdr.activateStream(rxStream)
buff = np.array([0]*1024, np.complex64)
sr = sdr.readStream(rxStream, [buff], len(buff))
Веб-інтерфейси¶
OpenWebRX¶
# Встановлення
sudo add-apt-repository -y ppa:jketterl/openwebrx
sudo apt install openwebrx
# Конфігурація
sudo openwebrx admin adduser admin
# http://localhost:8073
WebSDR (клієнт)¶
Публічні WebSDR:
- http://websdr.org
- http://sdr.hu
Доступ до віддалених SDR через браузер
Ресурси¶
Документація¶
GNU Radio: https://wiki.gnuradio.org
RTL-SDR: https://www.rtl-sdr.com
Signal ID: https://www.sigidwiki.com
Бази даних¶
RadioReference: https://www.radioreference.com
SigID Wiki: https://www.sigidwiki.com
ARRL Band Plan: http://www.arrl.org/band-plan
Шлях: sdr/software.md