SDR, RTL-SDR - jak zacząć? - Podłączamy tuner i...

Spis treści

 

Podłączamy tuner i...

Zacznijmy od komendy (to pogrubiony tekst w listingu), która oprócz innych urządzeń wyświetli informację o tunerze:

~ $ lsusb
...
Bus 003 Device 004: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T
...
~ $

Jeśli po podłączeniu tunera do PC zajrzymy do katalogu /dev znajdziemy tam informację o aktywnych urządzeniach dvb:

~$ ll -R /dev/dvb
dvb:
razem 0
drwxr-xr-x 3 root root 60 sty 27 14:31 ./
drwxr-xr-x 22 root root 4700 sty 27 14:31 ../
drwxr-xr-x 2 root root 120 sty 27 14:31 adapter0/
dvb/adapter0:
razem 0
drwxr-xr-x 2 root root 120 sty 27 14:31 ./
drwxr-xr-x 3 root root 60 sty 27 14:31 ../
crw-rw-rw-+ 1 root video 212, 0 sty 27 14:31 demux0
crw-rw-rw-+ 1 root video 212, 1 sty 27 14:31 dvr0
crw-rw-rw-+ 1 root video 212, 3 sty 27 14:31 frontend0
crw-rw-rw-+ 1 root video 212, 2 sty 27 14:31 net0
/dev $

Warto też sprawdzić katalog /etc/modprobe.d:

~ $ ls /etc/modprobe.d | grep rtl
blacklist-rtl.conf
~ $

Widać, że znajduje się tam (ale bywa, że tam go nie ma - to nie problem, ale uprzedzam) plik blacklist-rtl.conf (teoretycznie!) wyłączający ładowanie w momencie inicjacji modułów obsługujących tuner DVB-T. Warto zajrzeć co on zawiera:

~ $ cat /etc/modprobe.d/blacklist-rtl.conf
# This system has librtlsdr0 installed in order to
# use digital video broadcast receivers as generic
# software defined radios.
# blacklist dvb_usb_rtl28xxu
# blacklist e4000
# blacklist rtl2832
# blacklist fc0013
~ $

Zawartość pliku może być różna. Powyższy listing prezentuje zawartość rzeczywistego pliku. Zwróć uwagę, że (tu) wszystkie linie (zawierające frazę: blacklist) zaczynają się od znaku # (hash). Powoduje to, że nie wyłączają one niczego, gdyż (zaczynając się od #) są jedynie komentarzem! Potwierdza to również efekt komendy (wydanej przy podłączonym do PC tunerze DVB-T):

~ $ lsmod | grep dvb
dvb_usb_rtl28xxu 40960 1
dvb_usb_v2 40960 1 dvb_usb_rtl28xxu
dvb_core 126976 2 dvb_usb_v2,rtl2832
rc_core 36864 5 ir_lirc_codec,lirc_dev,dvb_usb_v2,dvb_usb_rtl28xxu
~ $

Jak widać moduły związane z obsługą tunera DVB-T (ale nie RTL-SDR) są aktywne. Ich obecność nie pozwoli na zainstalowanie sterowników dla SDR'a. Oczywiście możemy spróbować usunąć z systemu (aktywne) moduły związane z obsługą tunera DVB-T:

~ $ sudo rmmod dvb_usb_rtl28xxu rtl2832
rmmod: ERROR: Module dvb_usb_rtl28xxu is in use
rmmod: ERROR: Module rtl2832 is in use
~ $

ale czeka nas przykra niepodzianka.

Jeśli tuner jest włożony do gniazda USB ta prosta komenda skończy się błędem, gdyż moduły wykrywają aktywność urządzenia. Możemy je odłączyć. Ale włożenie tunera do gniazda spowoduje ponowne załadowanie modułów. Gdy podłączymy tuner DVB-T wyposażony w dobrą antenę po wydaniu komendy:

~ $ w_scan
w_scan w_scan version 20170107 (compiled for DVB API 5.10)
guessing country 'PL', use -c to override
using settings for POLAND
DVB aerial
DVB-T Europe
scan type TERRESTRIAL, channellist 4
output format vdr-2.0
output charset 'UTF-8', use -C to override
Info: using DVB adapter auto detection.
/dev/dvb/adapter0/frontend0 -> TERRESTRIAL "Realtek RTL2832 (DVB-T)": good :-)
Using TERRESTRIAL frontend (adapter /dev/dvb/adapter0/frontend0)
-_-_-_-_ Getting frontend capabilities-_-_-_-_
Using DVB API 5.10
frontend 'Realtek RTL2832 (DVB-T)' supports
INVERSION_AUTO
QAM_AUTO
TRANSMISSION_MODE_AUTO
GUARD_INTERVAL_AUTO
HIERARCHY_AUTO
FEC_AUTO
FREQ (174.00MHz ... 862.00MHz)
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
Scanning DVB-T...
Scanning...<tu pojawi się lista dostępnych stacji TV>

--- lub gdy antena kiepska i/lub brak dostępnych stacji:
ERROR: Sorry - i couldn't get any working frequency/transponder
Nothing to scan!! ---
~ $

Jeśli coś wykrył to tuner umożliwia oglądanie wybranych kanałów TV. A przecież nie o to nam chodziło. Musimy zrealizować wspomniany na wstępie scenariusz. Zacznijmy więc od...

Przygotowanie środowiska

a.) zaktualizuj system (posiadaną dystrybucję Linux'a):

~$ sudo apt-get update

b.) zanim przystąpisz do dalszych działań (o ile nie zrobiłeś tego wcześniej) zapoznaj się z artykułem: Automake, build-essential, cmake... na dobry start, gdzie opisałem czynności związane z przygotowaniem samodzielnej kompilacji kodów źródłowych. Należy w oknie terminala wydać polecenie (w artykule opisałem to znacznie szerzej).:

~$ sudo apt-get install git automake cmake build-essential libusb-1.0-0-dev

Jeśli któryś z programów został już wcześniej zainstalowany to pojawi się komunikat wskazujący, że jest on już w najnowszej wersji. Może wydawać się, że nie wszystkie instalowane pakiety są potrzebne.

Tu powiem tylko tyle: potem doinstalujemy ich jeszcze więcej, gdyż kolejnym celem będzie samodzielna kompilacja (budowa ze źródeł) programów: Gqrx oraz CubicSDR. Ale to już materiał na odrębny artykuł.