CubicSDR - kompilacja ze źródeł

CubicSDR 0.2.4Jednym z ciekawszych programów dedykowanych do obsługi urządzeń radiowych SDR jest CubicSDR. Na bazie niedrogiego urządzenia (stick, dongle) DVB-T (wykorzystującego układy: RTL2832U i 820T/820T2 oraz sterowniki RTL-SDR) pozwala odbierać sygnały radiowe (RF) w szerokim zakresie częstotliwości.

Kod źródłowy (udostępniony na zasadach GPL-2.0+) pozwala wygenerować aplikację dla wielu systemów operacyjnych do odbioru emisji: AM, FM (mono, stereo, wąskopasmowa), SSB (LSB,USB, DSB),  w przyszłości również emisje cyfrowe. "Przechwytując" z CubicSDR wyjściowy sygnał audio (np. przy pomocy Jack Audio serwera czy podobnych) możemy poddawać go dalszej obróbce (Digital Signal Processing - DSP).

Program obsługuje również inne (bardziej wyspecjalizowane) urządzenia: SoapyRemote, AirSpy, SDRPlay, HackRF, BladeRF, Red Pitaya, Audio Devices, UHD (tylko OSX /Windows), RFSpace (tylkoOSX), itd. Program w powiązaniu z cechami (zewnętrznych) modułów sterujących urządzenia radiowe (RF, szczególnie zawartych w: Hamlib) pozwalają w pełni docenić możliwości CubicSDR. Pełną dokumentację programu udostępniono tutaj.

 Jednakże CubicSDR może przetworzyć wyłącznie sygnał, który "usłyszy". Dlatego - co krótkofalowców nie zdziwi - o uzyskanych efektach zadecydują: dobra antena, parametry użytkowe urządzenia SDR (te niestety często, choć nie zawsze są pochodną ceny). Dla mnie " wartością dodaną" było to, że dzięki Charlesowi J. Cliffe (i tym którzy Go wspomagają) mogłem przećwiczyć proces kompilacji programu ze źródeł. Ciekawe doświadczenie :) I program.

Potrzebne narzędziaOpis instalacji (i związanych z tym zależności) Autor umieścił w zasobach GitHub projektu. Niniejszy opis dotyczy instalacji (wymaganego środowiska, bibliotek oraz samego programu) pod Debianem i systemami pokrewnymi, jak: Ubuntu, Mint, itp. w trybie znakowym (w oknie terminala).

CubicSDR w moim przypadku będzie działał pod Linuxem, dystrybucja: Mint 19 Cinnamon 3.8.8 (środowisko graficzne), jądro: 4.15.0-29-generic (z późniejszymi zmianami).

Oczywiście można w sieci odszukać właściwe pakiety i zainstalować odpowiednie binaria. Jednak - o czym można dowiedzieć się z niektórych opinii - instalacja "ze źródeł" ma swoje zalety. Nie tylko edukacyjne. Wybrałem drogę może nieco dłuższą, ale ciekawszą.

Tworząc CubicSDR na bazie repozytorium Git koniecznym będzie zainstalowanie dodatkowych narzędzi. Ich instalację opisałem w: Automake, build-essential, Cmake... na dobry start. Początkujący - tak mi się wydaje - winni od niego zacząć.

Dodatkowo - zgodnie ze wskazówkami Autora - w systemie winny zostać zainstalowane:

W strukturze katalogów znajduje się katalog SDR, w którym przechowuję wszystkie zbiory związane z obsługą urządzeń SDR. Pozwala to uniknąć bałaganu i ułatwia odnalezienie oraz aktualizację potrzebnych zasobów.

Przed "pójściem dalej" sugeruję by czynności te wykonywać będąc w tym katalogu. Czyli zanim wykonamy jakąkolwiek czynność związaną ze: ściąganiem źródeł, ich konfiguracją, kompilacją oraz instalacją winniśmy do niego wejść wydając polecenie (tekst wytłuszczony):

~ $ cd ~/SDR

Klonowanie zasobówSklonowanie zasobów repozytorium za pomocą polecenia git (tekst wytłuszczony).

"Automatycznie" tworzona jest odpowiednia struktura katalogów i plików (w tym katalog o nazwie: ~/SDR/CubicSDR):

~/SDR $ git clone https://github.com/cjcliffe/CubicSDR.git

Teraz należy wejść do katalogu CubicSDR:

~/SDR $ cd CubicSDR

Stworzenie i wejście do katalogu build...

Ponieważ na tym etapie zmieniasz strukturę katalogów (dodajesz nowy) to zanim wykonasz podane polecenia sprawdź czy jesteś w katalogu: ~/SDR/CubicSDR/:
Popatrz na rysunek z prawej: odpowiednie polecenia tworzące katalog (mkdir build) oraz wejścia do tego katalogu (cd build) wykonano jako dwa osobne procesy. Każdy z nich inicjowany był (dopiero) po wciśnięciu klawisza Enter.

Można inaczej: napisać w jednej linii oba polecenia rozdzielając je i kończąc linię średnikiem (nie dwukropkiem!!!). Dopiero na końcu linii (po drugim średniku) wciskamy klawisz Enter, co spowoduje, że obie komendy zostaną kolejno wykonane. I znajdziesz się w katalogu: ~/SDR/CubicSDR/build/. To wynik poniższego listingu:

~/SDR/CubicSDR/ $ mkdir build; cd build;

Wykorzystanie cmake...W: Automake, build-essential, Cmake... na dobry start wśród dodatkowych pakietów jakie muszą zostać zainstalowane wymieniony jest cmake.Kompilacja właściwa.... :)

Nie kompiluje on programu samodzielnie, a tworzy pliki z regułami kompilacji Makefile (w systemie GNU/Linux).

Zauważ, że w poniższym poleceniu cmake wykorzystano możliwości parametryzacji jego wywołania:

  • użycie bilbioteki Hamlib (element: -DUSE_HAMLIB=1) oraz
  • lokalizację biblioteki wxWidgets ( element: -DwxWidgets_CONFIG_EXECUTABLE=~/SDR/wxWidgets-staticlib/bin/wx-config).

Możliwość "ręcznego sterowania" procesem kompilacji poprzez utworzenie odpowiednich plików reguł to jest jedna z (licznych) zalet cmake.

~/SDR/CubicSDR/ $ cmake ../ -DCMAKE_BUILD_TYPE=Release -DUSE_HAMLIB=1 -DwxWidgets_CONFIG_EXECUTABLE=~/SDR/wxWidgets-staticlib/bin/wx-config
~/SDR/CubicSDR/ $ make
~/SDR/CubicSDR/ $ sudo make install

Czas rozpocząć zabawę... :)Jeśli proces kompilacji i instalacji zakończył się sukcesem make spowoduje utworzenie (w podkatalogu: ~/SDR/CubicSDR/build/x64 - x64, bo system amd64) pliku wykonalnego CubicSDR. Po poleceniu "sudo make install" kopia pliku wykonalnego (CubicSDR) pojawi się w katalogu: /usr/local/bin i będzie dostępna dla wszystkich użytkowników systemu. Wystarczy wywołać  program.

Poznanie jego wszystkich funkcjonalności i możliwości przekracza ramy tego artykułu.

Jeśli coś poszło coś nie tak, przeanalizuj dokładnie komunikaty jakie pojawiły się na ekranie. Dużą pomoc możesz znaleźć na forum poświęconym różnym przypadkom napotkanym podczas używania CubicSDR.

Podczas opracowania tego dokumentu wykorzystano sugestie Autorów zawarte w dokumentacji projektu oraz własne doświadczenia.