Aplikacja do skanowania pasm radiowych (FM, AM, AIR, CB i więcej) wykorzystująca RTL-SDR v4 na Raspberry Pi. Ghost Box Pi umożliwia automatyczne przełączanie między stacjami radiowymi z regulowaną prędkością, głośnością i zaawansowaną kontrolą
- Raspberry Pi 5 (zalecane) lub Raspberry Pi 4
- RTL-SDR v4 (dongle USB) - TYLKO ORYGINAŁ!
⚠️ - Oficjalny zasilacz Raspberry Pi 5 (5V/5A USB-C)
- Głośnik/słuchawki (HDMI, Jack 3.5mm lub Bluetooth)
- Port USB 3.0 (niebieski) - zalecany dla RTL-SDR
BARDZO WAŻNE: Na rynku jest wiele podróbek RTL-SDR, które mogą nie działać!
Oficjalne sklepy:
- 🔗 Lista autoryzowanych sprzedawców: https://www.rtl-sdr.com/buy-rtl-sdr-dvb-t-dongles/
Jak rozpoznać oryginał RTL-SDR Blog v4:
- ✅ Metalowa obudowa (niebieska lub srebrna)
- ✅ Logo “RTL-SDR Blog” na obudowie
- ✅ Złącze SMA (antena przykręcana)
- ✅ Cena około $35-45 USD (ok. 140-180 PLN)
Oznaki podróbki:
- ❌ Brak logo “RTL-SDR Blog”
- ❌ Plastikowa obudowa
- ❌ Cena poniżej $25 USD
- ❌ Sprzedawca nieznany na oficjalnej stronie
- System operacyjny: Raspberry Pi OS (64-bit) - najnowsza wersja
- Python: 3.7 lub nowszy
- Biblioteki systemowe:
- RTL-SDR sterowniki v4
- PortAudio
- USB libraries
Otwórz terminal i wykonaj następujące komendy:
sudo apt update
sudo apt upgrade -yRTL-SDR v4 wymaga specjalnych sterowników kompilowanych ze źródeł.
Usuń stare sterowniki:
sudo apt purge -y ^librtlsdr* ^rtl-sdr*Usuń pozostałości ręcznie (skopiuj całą linię dokładnie!):
sudo rm -rvf /usr/lib/librtlsdr* /usr/include/rtl-sdr* /usr/local/lib/librtlsdr* /usr/local/include/rtl-sdr* /usr/local/include/rtl_* /usr/local/bin/rtl_*Zainstaluj narzędzia kompilacji:
sudo apt-get install libusb-1.0-0-dev git cmake pkg-config build-essentialPobierz kod źródłowy:
git clone https://github.com/rtlsdrblog/rtl-sdr-blog
cd rtl-sdr-blog/Przygotuj i skompiluj:
mkdir build
cd build
cmake ../ -DINSTALL_UDEV_RULES=ON
makeZainstaluj sterowniki:
sudo make install
sudo cp ../rtl-sdr.rules /etc/udev/rules.d/
sudo ldconfigZablokuj domyślny sterownik DVB:
echo 'blacklist dvb_usb_rtl28xxu' | sudo tee /etc/modprobe.d/blacklist-rtl-sdr.confRestart systemu:
sudo rebootPo restarcie podłącz RTL-SDR v4 do portu USB i wykonaj test:
rtl_test -tOczekiwany wynik: Powinieneś zobaczyć informacje o urządzeniu (np. “RTL-SDR Blog V4”) i test zakończony pomyślnie.
sudo apt install -y python3-pipsudo apt install -y libportaudio2 portaudio19-devWybierz zestaw bibliotek w zależności od wersji, którą chcesz uruchomić.
pip install pyrtlsdr sounddevice numpy scipy --break-system-packagesTa komenda instaluje wszystko, czego potrzebujesz: customtkinter dla UI i soundfile do nagrywania.
pip install pyrtlsdr sounddevice numpy scipy customtkinter soundfile --break-system-packagesInstalowane biblioteki:
pyrtlsdr- komunikacja z RTL-SDRsounddevice- odtwarzanie audionumpy- operacje numerycznescipy- przetwarzanie sygnałówcustomtkinter- (TYLKO DLA V4) nowoczesny interfejs graficznysoundfile- (TYLKO DLA V4) zapisywanie plików audio .wav
# Wróć do katalogu domowego
cd ~
# Sklonuj repozytorium
git clone https://github.com/gazda12345kamil-dotcom/ghost-box-pi.git
cd ghost-box-piLub pobierz kod ręcznie i zapisz jako ghostbox_fm.py (podstawowa), ghostbox_fm_V2.py (zaawansowana) lub ghostbox_pi_PRO_v4.py (PRO) na pulpicie.
python3 ghostbox_fm.pypython3 ghostbox_fm_V2.pypython3 ghostbox_pi_PRO_v4.pyRozwiązanie:
- Sprawdź połączenie USB - użyj portu USB 3.0 (niebieskiego)
- Weryfikuj w systemie:
lsusb- szukaj ID0bda:2838 - Sprawdź zasilanie - używaj oficjalnego zasilacza 5V/5A
- Sprawdź czy masz oryginał: https://www.rtl-sdr.com/buy-rtl-sdr-dvb-t-dongles/
- Odłącz i podłącz ponownie dongla
- Sprawdź blacklist:
cat /etc/modprobe.d/blacklist-rtl-sdr.conf
Rozwiązanie:
- Wybierz wyjście audio:
- Kliknij prawym przyciskiem ikonę głośnika na pasku zadań
- Wybierz odpowiednie urządzenie (HDMI, Headphones, Bluetooth)
- Sprawdź głośność systemową:
- Kliknij lewym przyciskiem ikonę głośnika
- Upewnij się, że głośność nie jest wyciszona
-
Test sounddevice:
python3 >>> import sounddevice as sd >>> import numpy as np >>> fs = 48000 >>> t = np.arange(fs * 3) >>> audio = 0.5 * np.sin(2 * np.pi * 440 * t / fs) >>> sd.play(audio.astype(np.float32), fs) >>> sd.wait() >>> exit()
Rozwiązanie:
-
Upewnij się, że zainstalowano wszystkie zależności systemowe (Krok 2 i 5)
-
Sprawdź połączenie internetowe
-
Zaktualizuj pip:
pip install --upgrade pip --break-system-packages
-
Ponów instalację bibliotek (Krok 6)
Rozwiązanie:
- Zamknij wszystkie programy SDR (SDR++, GQRX, CubicSDR)
- Odłącz i podłącz ponownie dongla
- W ostateczności:
sudo reboot
Rozwiązanie:
- Sprawdź suwak Tłumika (Squelch) - jeśli jest ustawiony wysoko, może wyciszać wszystkie sygnały
- Ustaw Tłumik na 0 (całkowicie w lewo), aby wyłączyć funkcję
- Stopniowo zwiększaj wartość, aż przestaniesz słyszeć szumy między stacjami
Rozwiązanie:
Nie zainstalowałeś biblioteki interfejsu. Wykonaj polecenie:
pip install customtkinter --break-system-packagesRozwiązanie:
Nie zainstalowałeś biblioteki do nagrywania audio. Wykonaj polecenie:
pip install soundfile --break-system-packages- ✅ Skanowanie pełnego pasma FM (87.5-108 MHz)
- ✅ Regulowana prędkość skanowania (50-500 ms)
- ✅ Kontrola głośności w czasie rzeczywistym
- ✅ Demodulacja FM z automatyczną normalizacją audio
- ✅ Interfejs graficzny (Tkinter)
- ✅ System logowania zdarzeń
- ✅ Tłumik (Squelch) - wyciszanie szumów na FM
- ✅ Tryb Mix (Losowy) - skanowanie FM w losowej kolejności
- ✅ Lepsza kontrola nad jakością dźwięku
- ✅ Nowoczesny Interfejs (CustomTkinter)
- ✅ Skanowanie Wielu Pasm (WBFM, AM, NBFM)
- ✅ Pełne Miksowanie Pasm (wybór checkboxami)
- ✅ Zaawansowane Filtrowanie DSP dla każdego trybu
- ✅ Precyzyjny Tłumik (Squelch) oparty na mocy sygnału
- ✅ Nagrywanie sesji audio (REC) - zapis do plików .wav
- ✅ Wskaźnik siły sygnału (S-Meter) - wizualizacja mocy sygnału
- ✅ Zapisywanie i wczytywanie ustawień - automatyczne zapamiętywanie konfiguracji
Parametry można dostosować bezpośrednio w plikach .py.
# Zakres częstotliwości FM
FM_START_FREQ = 87.5e6
FM_END_FREQ = 108.0e6
FM_STEP = 0.1e6 # Krok skanowania
# Parametry SDR
SDR_SAMPLE_RATE = 1.024e6
SDR_GAIN = 'auto'
AUDIO_SAMPLE_RATE = 48000# Definicje Pasm (WBFM, AM, NBFM)
BANDS_CONFIG = {
"FM": {'name': "FM", 'start': 87.5e6, 'end': 108.0e6, 'step': 0.1e6, 'mode': "WBFM"},
"AIR": {'name': "AIR", 'start': 108.1e6, 'end': 137.0e6, 'step': 0.025e6, 'mode': "AM"},
"CB": {'name': "CB", 'start': 26.965e6,'end': 27.405e6,'step': 0.01e6, 'mode': "AM"},
"AM": {'name': "AM", 'start': 531e3, 'end': 1701e3, 'step': 9e3, 'mode': "AM"},
"WX": {'name': "WX", 'start': 162.400e6,'end': 162.550e6,'step': 0.025e6,'mode': "NBFM"},
"2M-HAM": {'name': "2M-HAM",'start': 144.0e6, 'end': 146.0e6, 'step': 0.025e6,'mode': "NBFM"}
}
# Parametry SDR
SDR_SAMPLE_RATE = 1.024e6
SDR_GAIN = 'auto'
AUDIO_SAMPLE_RATE = 48000Wersja PRO (v4) automatycznie tworzy plik ghostbox_config.json w tym samym folderze. Przechowuje on:
- Ostatnie pozycje suwaków (głośność, prędkość, squelch)
- Stan pól wyboru pasm
- Tryb losowy (Mix)
Aby zresetować ustawienia do wartości domyślnych, wystarczy usunąć plik ghostbox_config.json.
tkinter- (dla v1, v2) interfejs graficzny (wbudowany w Pythona)pyrtlsdr- interfejs RTL-SDRsounddevice- odtwarzanie audionumpy- obliczenia numerycznescipy- przetwarzanie sygnałówcustomtkinter- (dla v4) nowoczesny interfejs graficznysoundfile- (dla v4) zapisywanie plików audio .wav
librtlsdr- sterowniki RTL-SDR v4libportaudio2- biblioteka audiolibusb-1.0-0- komunikacja USB
Open Source - Ten projekt jest wolnym oprogramowaniem. Każdy może go używać, modyfikować i dystrybuować bez ograniczeń. Kod jest udostępniony publicznie w celach edukacyjnych i społecznościowych.
Zgłoszenia błędów, sugestie i pull requesty są mile widziane! Projekt jest otwarty dla wszystkich, którzy chcą pomóc w jego rozwoju.
- Aplikacja jest przeznaczona do celów edukacyjnych i eksperymentalnych
- Przestrzegaj lokalnych przepisów dotyczących używania urządzeń radiowych
- Nie słuchaj nielegalnie transmisji radiowych
- Autor nie ponosi odpowiedzialności za niewłaściwe użycie aplikacji
W razie pytań lub problemów otwórz Issue na GitHubie.
🔗 Więcej informacji o RTL-SDR: https://www.rtl-sdr.com
Zbudowano z ❤️ dla społeczności Raspberry Pi i SDR