Obsługa tunerów DVB-T pod Linuksem
Pojawienie się telewizji DVB-T w Polsce to lepsza jakość, więcej kanałów i różne możliwości odbioru sygnału. Jest to często powtarzane. Na rynku pojawiły się tunery DVB-T, czy nawet tablety z wbudowanym tunerem. Nie zabrakło także tunerów na USB z prostą antenką i oprogramowaniem ArcSoftu do nagrywania i oglądania telewizji z tunera. W przypadku Linuksa, przynajmniej na początku sprawa nie wyglądała najlepiej. Sterowniki dopiero powstawały, albo nie były kompatybilne z daną wersją chipsetu, czy nowym firmware urządzenia.
Od pewnego już czasu sterowniki dla tunerów DVB-T są pod opieką projektu LinuxTV, a najnowsze kernele (2.8, 2.9 i nowsze) w dopracowanych dystrybucjach pozwalają na użycie tunerów praktycznie od razu po połączeniu. Stare kernele mogą nie mieć sterowników, a te dostarczane przez LinuxTV zazwyczaj nie są w pełni zgodne ze znacznie starszymi wersjami kernela.
Oprócz obsługi tunera pod Linuksem trzeba zadbać o sygnał. Tunery USB wyposażone w proste antenki będą miały duże problemy z odbiorem sygnału jeżeli nie będą w pobliżu nadajnika. Anteny aktywne domowe wewnętrzne, a najlepiej zewnętrzne (na dachu, balkonie) zapewnią znacznie lepszą jakość odbioru.
W tym artykule zaprezentuję dwa tunery DVB-T na USB: Not Only TV LV5TDELUXE, Evolve Mars oraz oprogramowanie do obsługi telewizji DVB pod Linuksem.
![Evolve Mars i Not Only TV LV5TDELUXE](https://rk.edu.pl/site_media/resources/linux.rk.edu.pl/images/thumb_tunery_dvb_t.jpg)
Evolve Mars i Not Only TV LV5TDELUXE
Instalacja sterowników
Należy unikać stosowania starych tutoriali, gdyż zapewne są już nieaktualne (szczególnie tam, gdzie sugerują modyfikację kodu sterownika). W nowszych kernelach mamy nowe sterowniki i jedyne czego mogą wymagać to firmware. Po podłączeniu tunera do portu USB możemy podejrzeć logi systemowe za pomocą dmesg - na końcu będą wpisy dotyczące tunera. Jeżeli potrzebuje firmware to powinien pojawić się tam odpowiedni wpis. Jeżeli sterownik i firmware są dostępne to tuner zostanie zainicjalizowany i zobaczymy wpis typu (cośtam) successfully initialized and connected.
Pliki firmware można znaleźć na liście obsługiwanych tunerów. Pobieramy plik i umieszczamy go w /lib/firmware/ po czym ponownie podłączamy tuner.
Żeby odnaleźć firmware, czy nawet informacje o potrzebnym sterowniku trzeba określić chipset jaki jest obecny w naszym tunerze. Po podłączeniu w logach dmesg znajdziemy informacje o nim, np:
it913x: Unknown tuner ID applying default 0x60<6>[27901.631294] usb 2-1.1: dvb_usb_v2: found a 'ITE 9135(9006) Generic' in cold state
[28232.180198] usbcore: registered new interface driver dvb_usb_rtl28xxu
[28232.257883] usb 2-1.1: DVB: registering adapter 0 frontend 0 (Realtek RTL2832 (DVB-T))...
Jeżeli system nie znajduje sterownika, albo nie chce on działać trzeba zainstalować paczkę najnowszych sterowników projektu LinuxTV. Przy okazji zyskujemy chyba także część plików firmware.
Instalacja sterowników z LinuxTV
Instalacja najnowszych sterowników polega na skompilowaniu ich dla posiadanego w systemie kernela. Potrzebne są więc pakiety kompilatora, oraz nagłówki kernela. W przypadku Ubuntu i jego pochodnych będzie to build-essential i linux-headers. Dodatkowo musimy zainstalować GITa by móc pobrać kod sterowników z repozytorium.
Proces pobierania i kompilacji wygląda następująco (wykonujemy w konsoli jako zwykły użytkownik):
git clone git://linuxtv.org/media_build.git
cd media_build
./build
Tunery DVB-T pod Linuksem
Decydując się na zakup tunera DVB-T na USB trzeba uwzględnić kilka parametrów. Pierwszy - musi mieć normalne wyjście antenowe (lub adapter w zestawie). Tunery z wbudowaną antenką zapewne nie odbiorą nic jeżeli nie będą blisko nadajnika (bardzo blisko!). Tunery ze złączem antenowym pozwalają na podłączenie dowolnej anteny DVB-T w zależności od potrzeb i sygnału. Muszą także obsługiwać MPEG4 jeżeli chcemy oglądać telewizję w Polsce (ważne gdy kupujemy tuner za granicą). Jeżeli planujemy często korzystać z tunera - nagrywać i oglądać warto zaopatrzyć się w podwójny (dwukanałowy) tuner. Warto też sprawdzić chipset - da się to określić np. po sterownikach do MS Windows, gdzie nazwa producenta, chipsetu będzie gdzieś w paczce lub w nazwach pliku.
Zaprezentowane poniżej tunery udało mi się uruchomić bez większych problemów pod Linuksem. Są to jedne z tańszych tunerów ze złączem antenowym. Oparte są o dwa popularne i często stosowane chipsety.
Evolve Mars
Tuner na chipsecie ITE 9135 i wymaga firmware dvb-usb-it9135-02.fw (o czym poinformuje w dmesg jeżeli go brakuje). Firmware można pobrać na kilka sposobów opisanych na wiki LinuxTV. Jednym z nich jest pobranie paczki z ite.com.tw i wydobycie potrzebnego firmware:
dd if=dvb-usb-it9135.fw ibs=1 skip=12866 count=5817 of=dvb-usb-it9135-02.fw
Przykładowy log w dmesg z poprawnego uruchomienia tunera wygląda następująco:
[27901.402855] usb 2-1.1: new high-speed USB device number 5 using ehci-pci
[27901.499446] usb 2-1.1: New USB device found, idVendor=048d, idProduct=9006
[27901.499458] usb 2-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[27901.499464] usb 2-1.1: Product: USB Deivce
[27901.499470] usb 2-1.1: Manufacturer: ITE Technologies, Inc.
[27901.502835] input: ITE Technologies, Inc. USB Deivce as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.1/input/input16
[27901.503140] hid-generic 0003:048D:9006.0005: input,hidraw4: USB HID v1.01 Keyboard [ITE Technologies, Inc. USB Deivce] on usb-0000:00:1d.0-1.1/input1
[27901.627430] usbcore: registered new interface driver dvb_usb_it913x
[27901.627777] it913x: Chip Version=02 Chip Type=9135
[27901.629282] it913x: Remote HID mode NOT SUPPORTEDit913x: Dual mode=0 Tuner Type=0
[27901.629778] it913x: Unknown tuner ID applying default 0x60<6>[27901.631294] usb 2-1.1: dvb_usb_v2: found a 'ITE 9135(9006) Generic' in cold state
[27901.640365] usb 2-1.1: dvb_usb_v2: downloading firmware from file 'dvb-usb-it9135-02.fw'
[27901.640774] it913x: FRM Starting Firmware Download
[27901.875037] it913x: FRM Firmware Download Completed - Resetting Deviceit913x: Chip Version=02 Chip Type=9135
[27901.912308] it913x: Firmware Version 52887808<6>[27901.982871] usb 2-1.1: dvb_usb_v2: found a 'ITE 9135(9006) Generic' in warm state
[27901.983002] usb 2-1.1: dvb_usb_v2: will pass the complete MPEG2 transport stream to the software demuxer
[27901.983243] DVB: registering new adapter (ITE 9135(9006) Generic)
[27902.025447] it913x-fe: ADF table value :00
[27902.029463] it913x-fe: Crystal Frequency :12000000 Adc Frequency :20250000 ADC X2: 01
[27902.065304] it913x-fe: Tuner LNA type :60
[27902.310248] usb 2-1.1: DVB: registering adapter 0 frontend 0 (ITE 9135(9006) Generic_1)...
[27902.310437] usb 2-1.1: dvb_usb_v2: 'ITE 9135(9006) Generic' successfully initialized and connected
Bus 002 Device 005: ID 048d:9006 Integrated Technology Express, Inc.
Not Only TV LV5TDELUXE
Tuner ten oparty jest o chipset Realtek RTL2832 i wymaga firmware dvb-usb-af9015.fw, które pobieramy i umieszczamy w /lib/firmware/.Przykładowy log w dmesg z poprawnego uruchomienia tunera wygląda następująco:
[28231.985189] usb 2-1.1: new high-speed USB device number 6 using ehci-pci
[28232.089492] usb 2-1.1: New USB device found, idVendor=1f4d, idProduct=c803
[28232.089504] usb 2-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[28232.089510] usb 2-1.1: Product: RTL2840U
[28232.089515] usb 2-1.1: Manufacturer: Realtek
[28232.089520] usb 2-1.1: SerialNumber: 00000001
[28232.180139] usb 2-1.1: dvb_usb_v2: found a 'Trekstor DVB-T Stick Terres 2.0' in warm state
[28232.180198] usbcore: registered new interface driver dvb_usb_rtl28xxu
[28232.221290] usb 2-1.1: dvb_usb_v2: will pass the complete MPEG2 transport stream to the software demuxer
[28232.221324] DVB: registering new adapter (Trekstor DVB-T Stick Terres 2.0)
[28232.257883] usb 2-1.1: DVB: registering adapter 0 frontend 0 (Realtek RTL2832 (DVB-T))...
[28232.278923] fc0013: Fitipower FC0013 successfully attached.
[28232.285495] Registered IR keymap rc-empty
[28232.285622] input: Trekstor DVB-T Stick Terres 2.0 as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/rc/rc0/input17
[28232.285676] rc0: Trekstor DVB-T Stick Terres 2.0 as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/rc/rc0
[28232.285681] usb 2-1.1: dvb_usb_v2: schedule remote query interval to 400 msecs
[28232.297998] usb 2-1.1: dvb_usb_v2: 'Trekstor DVB-T Stick Terres 2.0' successfully initialized and connected
Bus 002 Device 006: ID 1f4d:c803 G-Tek Electronics Group
Oprogramowanie
Za pomocą tunera możemy oglądać telewizję na żywo, albo zlecić nagranie wybranych programów. Tunery dwukanałowe (podwójne - dwa tunery w jednym) pozwalają nagrywać i oglądać na raz. Tunery jednokanałowe (jak te powyżej) pozwalają tylko na jedną czynność na raz.
Szybko z tunera skorzystamy w aplikacji Kaffeine. Zlecanie i obsługę nagrywania programów obsługuje gnome-dvb-control (pakiet typu gnome-dvb-client). W sieci można wyszukać jeszcze inne mniej znane aplikacji specjalizujące się wyłącznie w DVB. Tych jak na razie nie testowałem.
Kaffeine
Po uruchomieniu wybieramy opcję Telewizja Cyfrowa:![Kaffeine po uruchomieniu](https://rk.edu.pl/site_media/resources/linux.rk.edu.pl/images/thumb_dvb_kaffeine1.png)
![Panel telewizji cyfrowej w Kaffeine](https://rk.edu.pl/site_media/resources/linux.rk.edu.pl/images/thumb_dvb_kaffeine1b.png)
![Konfiguracja tunera DVB T w Kaffeine](https://rk.edu.pl/site_media/resources/linux.rk.edu.pl/images/thumb_dvb_kaffeine2.png)
![Wyszukiwanie kanałów telewizji DVB T](https://rk.edu.pl/site_media/resources/linux.rk.edu.pl/images/thumb_dvb_kaffeine3.png)
![Wyszukane kanały z nadajnika w Raszynie albo z Pałacu Kultury](https://rk.edu.pl/site_media/resources/linux.rk.edu.pl/images/thumb_dvb_kaffeine4.png)
![Szybko i bez większych problemów możemy oglądać telewizję na swoim komputerze](https://rk.edu.pl/site_media/resources/linux.rk.edu.pl/images/thumb_dvb_t_polsat.png)
Szybko i bez większych problemów możemy oglądać telewizję na swoim komputerze
![Przy słabym sygnale pojawią się artefakty lub nie zobaczymy nic](https://rk.edu.pl/site_media/resources/linux.rk.edu.pl/images/thumb_dvb_t_polsat_artefakty.png)
Przy słabym sygnale pojawią się artefakty lub nie zobaczymy nic
Evolve Mars szybciej przeprowadzał skanowanie, jak i pozwalał Kaffeine na wyświetlanie informacji o syngale i SNR. Tuner Not Only TV także działał, ale wyszukiwanie kanałów zajmowało mu więcej czasu.
Anteny DVB-T
![Zestawowa mini antena](https://rk.edu.pl/site_media/resources/linux.rk.edu.pl/images/thumb_dvb_t_zestawowa_antena.jpg)
Zestawowa mini antena
Specjalistą od anten nie jestem, ale bazując na moich próbach z tunerami i komentarzach znajomych wynika że do dobrego odbioru telewizji DVB-T potrzeba porządnej anteny - zewnętrznej (jak możemy to kierunkowej w stronę nadajnika), lub ew. wewnętrznej - domowej aktywnej (zasilanej, ze wzmocnieniem odbieranego sygnału).
W różnych sklepach sprzedających tunery na USB znajdziemy wiele komentarzy narzekających na zestawowe małe pasywne antenki - one raczej nie pozwolą na odbiór sygnału o użytecznej jakości. W tych samych sklepach, szczególnie tych lepszych znajdziemy również różne anteny DVB-T - czy to domowe, czy zewnętrzne. W uproszczeniu efektywność anteny wyrażana jest w oferowanym przez nią wzmocnieniu. Aktywna "domowa" antena to jakieś 20 dB. Zewnętrzne większe pasywne anteny mogą oferować nawet i np. 40 dB. Wszystko zależy od danego modelu. Warto dokładnie przeczytać opis i ew. skonsultować się z ekspertem.
Testując opisywane tunery byłem w stanie na zestawowej małej antence złapać dość słaby sygnał tylko na balkonie. Wewnątrz domu całkowity brak sygnału. Nawet na balkonie sygnał był za słaby by pozwolić na bezproblemowe oglądanie telewizji. Prosta aktywna domowa antena DPM DTV-T1 dała lepszy sygnał, ale też nie zawsze był on stabilny.
DPM DTV-T1
![Antena DPM DTV T1](https://rk.edu.pl/site_media/resources/linux.rk.edu.pl/images/thumb_dvb_t_antena_dpm.jpg)
Comment article