Wymagania wstępne
- Windows 11 z WSL2 i Ubuntu (sprawdź:
wsl --versionw PowerShell) - Podłączony RTL-SDR V4 lub Airspy Mini przez USB
- Na Windows: zainstalowane sterowniki (RTL-SDR przez Zadig/WinUSB, Airspy automatycznie)
WSLg (Windows Subsystem for Linux GUI) jest wbudowane w Windows 11 i pozwala uruchamiać aplikacje graficzne Linuxa bezpośrednio na pulpicie Windows — bez konfiguracji X11. Wymaga WSL 2.0+.
Przekazanie urządzenia USB do WSL
WSL2 domyślnie nie widzi urządzeń USB. Wymagany jest usbipd-win — narzędzie przekazujące urządzenia USB z Windows do WSL.
W PowerShell jako administrator zainstaluj usbipd-win:
winget install usbipd
Podłącz odbiornik SDR i wylistuj urządzenia, a następnie przekaż urządzenie do WSL (podaj właściwy BUSID):
usbipd list
# Connected:
# BUSID VID:PID DEVICE STATE
# 1-7 0bda:2838 Bulk-In, Interface Not shared
# 1-8 1d50:60a1 AIRSPY Not shared
# 1-13 26ce:01a2 USB Input Device Not shared
# 7-4 2357:0604 TP-Link Bluetooth 5.4 USB Adapter Not shared
# 8-1 046d:c534 USB Input Device Not shared
# 8-4 046d:c52b Logitech USB Input Device, USB Input Device Not shared
usbipd bind --busid 1-7
usbipd attach --wsl --busid 1-7 --auto-attach
usbipd bind --busid 1-8
usbipd attach --wsl --busid 1-8 --auto-attach
Flaga --auto-attach sprawia że usbipd automatycznie ponownie przekazuje urządzenie do WSL przy każdym podłączeniu kabla — nie trzeba nic robić ręcznie po odłączeniu i ponownym podłączeniu odbiornika.
Okno PowerShell z uruchomionym --auto-attach musi pozostać otwarte — proces działa w tle tego terminala. Jeśli chcesz uruchomić go bez widocznego okna, użyj polecenia poniżej. Proces będzie działał w tle aż do restartu Windows
Start-Process usbipd -ArgumentList "attach --wsl --busid 1-7 --auto-attach" -WindowStyle Hidden
Sprawdź w Ubuntu czy urządzenie jest widoczne:
lsusb
# Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
# Bus 001 Device 003: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T
# Bus 001 Device 002: ID 1d50:60a1 OpenMoko, Inc. Airspy
# Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Konfiguracja RTL-SDR w Ubuntu
sudo apt update && sudo apt upgrade -y
sudo apt install -y rtl-sdr librtlsdr-dev
# Blacklist sterownika DVB-T — bez tego jądro zajmuje urządzenie przed biblioteką SDR
echo 'blacklist dvb_usb_rtl28xxu blacklist rtl2832 blacklist rtl2830' | sudo tee /etc/modprobe.d/blacklist-rtlsdr.conf
sudo modprobe -r dvb_usb_rtl28xxu rtl2832 rtl2830 2>/dev/null
# Uprawnienia udev, żeby nie uruchamiać z sudo
echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="2838", MODE="0666"' | sudo tee /etc/udev/rules.d/20-rtlsdr.rules
sudo udevadm control --reload-rules && sudo udevadm trigger
# Odłącz i podłącz ponownie RTL-SDR.
rtl_test -t
# Found 1 device(s):
# 0: RTLSDRBlog, Blog V4, SN: 00000001
#
# Using device 0: Generic RTL2832U OEM
# Found Rafael Micro R828D tuner
# Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6
# [R82XX] PLL not locked!
# Sampling at 2048000 S/s.
# No E4000 tuner found, aborting.
Komunikat No E4000 tuner found jest normalny — RTL-SDR V4 używa tunera R828D, nie E4000. Ważne że urządzenie zostało wykryte.
Konfiguracja Airspy Mini w Ubuntu
sudo apt install -y airspy libairspy-dev
# Uprawnienia udev
echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="1d50", ATTRS{idProduct}=="60a1", MODE="0666"' | sudo tee /etc/udev/rules.d/52-airspy.rules
sudo udevadm control --reload-rules && sudo udevadm trigger
# Odłącz i podłącz ponownie Airspy Mini.
airspy_info
# airspy_lib_version: 1.0.11
#
# Found AirSpy board 1
# Board ID Number: 0 (AIRSPY)
# Firmware Version: AirSpy MINI v1.0.0-rc10-0-g946184a 2016-09-19
# Part ID Number: 0x6906002B 0x00000030
# Serial Number: 0x260868C82A4D8F9B
# Supported sample rates:
# 6.000000 MSPS
# 3.000000 MSPS
# Close board 1
Instalacja SoapySDR
SoapySDR to warstwa abstrakcji — GNU Radio i Gqrx komunikują się przez nią z każdym urządzeniem jednakowo, bez konieczności pisania osobnego kodu dla RTL-SDR i Airspy.
sudo apt install -y soapysdr-tools soapysdr-module-rtlsdr soapysdr-module-airspy
SoapySDRUtil --find
# Found device 0
# driver = airspy
# label = AirSpy One [260868c82a4d8f9b]
# serial = 260868c82a4d8f9b
#
# Found device 1
# default_input = True
# default_output = False
# device_id = 0
# driver = audio
# label = RDP Source
Instalacja GNU Radio
sudo apt install -y gnuradio gr-osmosdr
gnuradio-companion
Okno GNU Radio Companion pojawi się na pulpicie Windows przez WSLg.
Fix błędu NumPy — pakiet systemowy GNU Radio jest skompilowany pod NumPy 1.x. Jeśli Ubuntu ma zainstalowane NumPy 2.x pojawi się błąd _ARRAY_API not found:
pip3 install "numpy<2" --break-system-packages
Skalowanie UI na 4K — GTK domyślnie nie skaluje interfejsu na wysokich rozdzielczościach. Dodaj do ~/.bashrc:
GDK_DPI_SCALE=1.6 gnuradio-companion
# lub
echo 'export GDK_DPI_SCALE=1.6' >> ~/.bashrc
source ~/.bashrc
Instalacja Gqrx
Gqrx to pełnofunkcyjny odbiornik SDR z GUI i waterfallem, oparty na GNU Radio. Prostszy w obsłudze niż budowanie flowgraphów — uruchamiasz, wybierasz urządzenie i słuchasz.
sudo apt install -y gqrx-sdr
echo 'export GDK_SCALE=2' >> ~/.bashrc
source ~/.bashrc
gqrx