Gentoo Logo

VDR w Gentoo

Spis treści:

1.  Ogólne informacje o DVB

Czym jest DVB?

DVB jest skrótem od Digital Video Broadcasting. DVB opisuje metody przesyłu danych cyfrowych z telewizji, radia, interaktywnych serwisów takich jak MHP, EPG czy teletekst. Dzięki kompresji danych przy użyciu MPEG-2 lub H.246 do HDTV, możliwa jest transmisja kilku kanałów na jednej częstotliwości. Im większa kompresja danych, tym większa ilość transmitowanych kanałów. Niestety, kosztem utraty jakości.

DVB może być transmitowane na kilka sposobów. Litera po myślniku rozpoznaje znaczenie metody transmisji, na przykład DVB-T dla transmisji naziemnej. Istnieje kilka typów sposobu przekazu:

  • DVB-S dla transmisji satelitarnej
  • DVB-C dla transmisji kablowej
  • DVB-H dla transmisji dla urządzeń mobilnych (naziemna)
  • DVB-IPI dla transmisji poprzez sieci bazujące na IP, na przykład internet
  • DVB-RC(S/C/T) odesłanie kanału dla transmisji serwisów internetowych, na przykład broadband internet

Typy i wymagania kart DVB

Pomiędzy różnymi metodami dostępu do strumieni DVB, karty są sklasyfikowane poprzez typ wyjścia. Istnieją karty z zaimplementowanym dekoderem, oferujące bezpośredni dostęp do strumienia poprzez urządzenie /dev/video. Są to kosztowne karty. Inne karty nie posiadają zaimplementowanego dekodera, wymagają więc programowego dekodowania w komputerze i nazywane są kartami budżetowymi. Implikuje to wyższe wymagania sprzętowe. Konieczne jest posiadanie procesora taktowanego na przynajmniej 600MHz i 256MB RAM-u. Ta lista może być użyteczna, by zidentyfikować swoją kartę.

2.  Przygotowywanie systemu

Konfigurowanie jądra

Na początku należy upewnić się, że posiadane jądro wspiera DVB i posiadane urządzenia DVB. Od wersji jądra 2.6 wymagane sterowniki są zawarte w nim zawarte. Należy sprawdzić konfigurację jądra i upewnić się, że poniższe opcje są wkompilowane w jądro na stałe lub jako moduły.

Listing 2.1: Wymagane opcje jądra

Input Device Support --->
* Event Interface
Device Drivers --->
Multimedia Devices --->
Digital Video Broadcasting Devices --->
    [*] DVB For Linux
     *  DVB Core Support
   M  [Sterownik do posiadanej karty]

Dodatkowo należy wybrać odpowiedni sterownik do posiadanego sprzętu. By znaleźć właściwy moduł dla swojej karty, każdy sterownik należy zaznaczyć jako moduł. W przypadku posiadania karty na złączu PCI należy zainstalować pciutils, oczywiście tylko w przypadku, gdy nie zostało to zrobione wcześniej. W przypadku, gdy użytkownik chce sterowniki wbudowane w jądro, bądź nie posiada karty na złączu PCI, można opuścić lekturę tego kroku i przejść do sprawdzania komunikatów jądra.

Listing 2.2: Instalacja pciutils

# emerge pciutils

Po uruchomieniu nowego jądra należy uruchomić pcimodules, by otrzymać listę wymaganych modułów.

Listing 2.3: Wylistowanie wymaganych modułów

# pcimodules
ohci-hcd
ehci-hcd
sis900
snd-emu10k1
b2c2-flexcop-pci
nvidia
nvidiafb

W powyższym wypadku należy załadować moduł b2c2-flexcop-pci. Można go dodać do /etc/modules.autoload.d/kernel-2.6.

Listing 2.4: Dodawanie modułu

# echo b2c2-flexcop-pci >> /etc/modules.autoload.d/kernel-2.6

Sprawdzanie komunikatów jądra

Zalecane jest, by oznaczyć każdy sterownik jako moduł, dzięki czemu możliwe jest dodawanie wymaganych modułów dynamicznie, szczególnie gdy użytkownik nie zna nazwy danego modułu. Jeśli nazwa modułu jest znana, obsługę sterownika należy wkompilować w jądro na stałe. Następnie trzeba już tylko skompilować jądro, zainstalować moduły i włączyć komputer z nowym jądrem systemu. Korzystając z dmesg można też sprawdzić czy jądro prawidłowo wykryło typ posiadanej karty.

Listing 2.5: Sprawdzanie komunikatów jądra

# dmesg | grep DVB
(W przypadku posiadania karty TerraTec Cinergy T2, komunikat może wyglądać następująco)
DVB: registering new adaptor (TerraTec/qanu USB2.0 Highspeed DVB-T Receiver).
input: TerraTec/qanu USB2.0 Highspeed DVB-T Receiver remote control as
/class/input/input2

3.  Instalacja VDR

By zainstalować VDR należy po prostu użyć emerge.

Listing 3.1: Instalacja VDR

# emerge vdr

Kolejny etap instalacji to instalacja zdalnego sterowania.

4.  Instalacja zdalnego sterowania

Sa przynajmniej dwa sposoby na kontrolowanie VDR poprzez zdalne sterowanie. W przypadku, gdy posiadana karta ma wbudowany odbiornik IR należy skorzystać z vdr-remote. W przeciwnym wypadku większość użytkowników skorzysta z LIRC.

Instalacja vdr-remote

Najpierw należy zainstalować wtyczkę korzystając z portage:

Listing 4.1: Instalacja vdr-remote

# emerge vdr-remote
# eselect vdr-plugin enable remote

W przypadku użycia wtyczki do obsługi portu IR na posiadanej karcie DVB wszystko powinno działać w oparciu o domyślną konfigurację. Wtyczka korzysta wtedy z urządzenia posiadającego w swej nazwie "dvb". Dla bardziej zaawansowanych ustawień należy przyjrzeć się plikowi /etc/conf.d/vdr.remote.

Kolejny etap instalacji to opis metod wyjścia video.

Alternatywnie: instalacja LIRC

Jeśli posiadana karta może być kontrolowana zdalnie, ale użytkownik nie może bądź nie chce korzystać z vdr-remote, można użyć LIRC. LIRC interpretuje przyciskane klawisze i jako wynik zwraca nazwę każdego z nich. Program wspierający LIRC czeka na polecenia i uruchamia akcję opisaną w pliku konfiguracyjnym, najczęściej znajdującym się w katalogu konfiguracyjnym uruchamianego programu (na przykład mplayer ładuje konfigurację z pliku ~/.mplayer/lircrc). Zanim LIRC zostanie zainstalowany, należy dodać lirc do flag USE oraz dodatkowy wpis w /etc/make.conf: LIRC_DEVICES. Można użyć tej listy by znaleźć odpowiednie argumenty dla powyższej opcji.

Listing 4.2: Instalacja LIRC

# nano -w /etc/make.conf
(Należy zamienić "devinput" odpowiednim sterownikiem)
LIRC_DEVICES="devinput"
USE="lirc"
# emerge lirc

Na początku należy zdefiniować każdy kod klawisza za pomocą nazwy. Większość wspieranych pilotów jest już odpowiednio skonfigurowana. Ich listę można znaleźć tutaj. Należy tylko pobrać odpowiedni plik i zapisać go jako /etc/lircd.conf. Następnie trzeba znaleźć dostęp do posiadanego pilota. W tym celu konieczne jest uruchomienie polecenia, które wyświetli wszystkie urządzenia wejścia. Warto upewnić się, że urządzenie zdalnego sterownia jest podłączone i uruchomione.

Listing 4.3: Lista urządzeń wejścia

# cat /proc/bus/input/devices
I: Bus=0000 Vendor=0000 Product=0000 Version=0000
N: Name="TerraTec/qanu USB2.0 Highspeed DVB-T Receiver remote control"
P: Phys=usb-0000:00:1d.7-1/input0
S: Sysfs=/class/input/input2
H: Handlers=kbd event1
B: EV=100003
B: KEY=108fc210 2043 0 0 0 0 8000 2080 1 9e1680 0 0 ffc

W powyższym przypadku podłączone jest urządzenie Terratec Cinergy T2, więc dostęp jest możliwy poprzez /dev/input/event1. Należy zastąpić event1 odpowiadającym urządzeniem wyświetlonym w komunikacie.

lircd musi wiedzieć, z którego urządzenia korzystać. Należy dodać poniższą linię do /etc/conf.d/lirc.conf. Warto zapamiętać, by zamienić devinput nazwą sterownika do posiadanej karty, a event1 aktualnym urządzeniem.

Listing 4.4: Dodawanie opcji do lircd

LIRCD_OPTS="-H devinput -d /dev/input/event1"

Teraz należy uruchomić lircd:

Listing 4.5: Uruchamianie lircd

# /etc/init.d/lircd start

W tym momencie powinna być możliwa obserwacja jak lircd przechwytuje i dekoduje przyciskane klawisze. Wystarczy jedynie uruchomić polecenie irw. Zatrzymać je można kombinacją klawiszy Ctrl+C.

Listing 4.6: Testowanie LIRC

# irw
0000000000001aa2 00 Exit Technisat_TTS35AI.conf
0000000000001a8d 00 Mute Technisat_TTS35AI.conf
0000000000000a97 00 OK Technisat_TTS35AI.conf
0000000000000a97 01 OK Technisat_TTS35AI.conf
0000000000000a92 00 Menu Technisat_TTS35AI.conf

Następnie należy dodać LIRC do domyślnego poziomu uruchomieniowego, by włączał się podczas startu systemu.

Listing 4.7: Dodawanie lircd do domyślnego poziomu uruchomieniowego

# rc-update add lircd default

Aby możliwe było użycie zdalnego sterownia, konieczne jest włączenie w VDR wsparcia dla LIRC. W tym celu należy dopisać poniższą linię do pliku /etc/conf.d/vdr:

Listing 4.8: Włączanie wsparcia dla LIRC

# nano -w /etc/conf.d/vdr
IR_CTRL="lirc"

5.  Metody wyjścia video

Należy zdecydować się na jedno (i tylko jedno!) z wymienionych poniżej urządzeń wyjść video, które pokazują obraz poprzez OSD (On Screen Display).

Dekodowanie sprzętowe: karty DVB z wyższej półki

Użytkownicy tych kosztownych kart nie potrzebują instalować niczego więcej, należy więc kontynuować z konfiguracją listy kanałów.

Dekodowanie sprzętowe: karty DXR3/Hollywood+

Do użycia w VDR karty DXR3 konieczna jest wtyczka vdr-dxr3.

Listing 5.1: Instalacja wtyczki

# emerge vdr-dxr3
# echo em8300 >> /etc/modules.autoload.d/kernel-2.6

Moduł em8300 potrzebuje dodatkowej konfiguracji zależnej od rewizji posiadanej karty.

Kontynuowanie z konfiguracją listy kanałów.

Dekodowanie sprzętowe: karty PVR350

Karty PVR350 wyposażone są w wbudowany dekoder MPEG, więc warto byłoby zrobić z tego użytek. W tym celu konieczne jest zainstalowanie wtyczki vdr-pvr350. Jeśli ivtv-driver nie jest jeszcze zainstalowany, emerge automatycznie go zainstaluje. Aby moduł ivtv był ładowany automatycznie podczas startu systemu należy dopisać go do /etc/modules.autoload.d/kernel-2.6:

Listing 5.2: Instalowanie wtyczki PVR350

# emerge vdr-pvr350
# echo ivtv >> /etc/modules.autoload.d/kernel-2.6

Kontynuowanie z konfiguracją listy kanałów.

Dekodowanie programowe: vdr-softdevice

Aby zainstalować wystarczy proste emerge vdr-softdevice. Należy również pamiętać, by włączyć wtyczkę.

Listing 5.3: Instalowanie wtyczki softdevice

# emerge vdr-softdevice
# eselect vdr-plugin enable softdevice

Aby wybrać odpowiednie wyjścia video i audio, należy edytować plik /etc/conf.d/vdr.softdevice.

Na chwilę obecną opisany zostanie jedynie sposób wykorzystania shm ("pamięci współdzielonej"). Jest ona domyślnie włączona w zainstalowanym pliku konfiguracyjnym (Ustawienie SOFTDEVICE_VIDEO_OUT). Następnie konieczne jest uruchomienie ShmClient w celu uzyskania okna z obrazem.

Uwaga: W przypadku gdy użytkownik nie ma ochoty na osobny układ klawiatury do kontroli VDR, istnieją gotowe pliki konfiguracyjne dostępne na stronie developera Matthiasa Schwarzotta. Można tam znaleźć pliki dla softdevice/shm i xineliboutput (więcej wkrótce). Potrzebny będzie odpowiedni plik /etc/vdr/remote.conf i wykonanie na nim chown vdr:vdr, aby zmusić go do działania.

Kontynuowanie z konfiguracją list kanałów.

Dekodowanie sprzętowe: vdr-xineliboutput

Niektórzy mogą chcieć skorzystać z vdr-xineliboutput, ponieważ on również niesie za sobą możliwość zdalnego sterowania. Poniżej został przedstawiony sposób jak skonfigurować vdr-xineliboutput zarówno na komputerze hosta jak i klienta. Najpierw konfiguracja hosta:

Listing 5.4: Instalowanie vdr-xineliboutput

# emerge vdr-xineliboutput
# eselect vdr-plugin enable xineliboutput

Dodanie opcji wiersza poleceń w tym miejscu decyduje to tym czy xineliboutput będzie działał. Aby zobaczyć więcej opcji, należy wykonać vdr --help.

Listing 5.5: Dodawanie opcji wiersza poleceń do /etc/conf.d/vdr.xineliboutput

_EXTRAOPTS="--local=none --remote=37890"

Kolejnym krokiem jest edycja pliku /etc/vdr/svdrphosts.conf. Opisuje on ilość adresów hosta, które mogą się połączyć z portem SVDRP uruchomionego VDR w systemie hosta.

Listing 5.6: Edytowanie /etc/vdr/svdrphosts.conf

(Prawidłowa składnia: Adres IP-[/Maska])
(stałe akceptowanie lokalnego hosta)
192.168.1.0/24        (dowolny host z sieci lokalnej)
#204.152.189.113      (sprecyzowane host)
#0.0.0.0/0            (dowolny host sieciowy - UŻYWAĆ Z ROZWAGĄ!)

Jeśli użytkownik chce jedynie korzystać z vdr-xineliboutput by wyświetlić obraz na tym samym komputerze, na którym jest zainstalowany i uruchomiony VDR należy przejść do konfigurowania listy kanałów.

W przeciwnym wypadku należy wykonać emerge media-plugins/vdr-xineliboutput w swoim kliencie:

Listing 5.7: Konfiguracja klienta

# emerge vdr-xineliboutput

Następnie (po uruchomieniu VDR) należy wykonać polecenie vdr-sxfe xvdr://hostname aby połączyć się z VDR oraz wyświetlić obraz i OSD.

Kontynuowanie z konfiguracją listy kanałów.

Uwaga: Istnieje również wtyczka symulująca prawdziwe urządzenia wyjściowe (vdr-dummydevice) dla takich zastosowań jak serwery nagrywania, ale jest to znaczenie bardziej zaawansowane niż zwykła konfiguracja VDR.

6.  Tworzenie liisty kanałów

Aby uczynić VDR naprawdę użytecznym konieczne jest stworzenie odpowiedniej listy kanałów. Istnieje przynajmniej jeden sposób, by stworzyć działającą listę kanałów (pomijając pobranie jej z internetu). Lista kanałów instalowana domyślnie odbiera poprzez DVB-S z satelity Astra znajdującej się na 19.2°E.

Użycie dvbscan z linuxtv-dvb-apps

Listing 6.1: Instalacja linuxtv-dvb-apps

# emerge linuxtv-dvb-apps

Należy znaleźć listę odpowiednich częstotliwości dla swojego regionu i typ połączenia. Pliki te umieszczone są w /usr/share/dvb/scan. Dla połączenia DVB-T w Niemczech, region Norymberga należy skorzystać z pliku /usr/share/dvb/scan/dvb-t/de-Nuernberg.

Listing 6.2: Skanowanie przy użyciu dvbscan

$ dvbscan -o vdr /usr/share/dvb/scan/dvb-t/de-Nuernberg > /etc/vdr/channels.conf

Użycie vdr-reelchannelscan

Na początki należy usunąć wszelkie istniejące listy kanałów.

Listing 6.3: Usuwanie starych list kanałów

# rm /etc/vdr/channels.conf

Listing 6.4: Instalowanie i aktywacja vdr-reelchannelscan

# emerge vdr-reelchannelscan
# eselect vdr-plugin enable reelchannelscan

Kanały dla systemów korzystających z vdr-analogtv

W przypadku gdy użytkownik chce skonfigurować kanały dla wyjścia analogowego, projekt VDR dostarcza przykładowych plików, które znajdują się w /usr/share/doc/vdr-analogtv-$version/examples/, zakładając oczywiście, że użytkownik posiada zainstalowany pakiet >=media-plugins/vdr-analogtv-1.0.00-r1.

7.  Uruchamianie VDR

Po zainstalowaniu wszystkich podstawowych składników VDR w systemie konieczne jest skonfigurowanie go wraz z OSD.

W przypadku korzystania ze sprzętowego dekodera dla wyjścia video, konieczne jest przełączenie się na podłączony telewizor. W przypadku korzystania z wyjścia programowego klient musi zostać uruchomiony po starcie VDR.

Na początku warto nauczyć się swoich własnych definicji klawiszy, czyli powiązać klawisze z wbudowanymi poleceniami VDR.

Uwaga: Na wszelki wypadek należy edytować konfigurację klawiatury albo (znacznie lepiej) usunąć ją, by powrócić do nauki klawiszologii. VDR przechowuje definicje klawiszy w /etc/vdr/remote.conf.

Teraz można uruchomić VDR:

Listing 7.1: Uruchamianie VDR

# /etc/init.d/vdr start
* Preparing start of vdr:
*   config files ...                                        [ ok ]
*   Waiting for prerequisites (devices nodes etc.) ...      [ ok ]
* Starting vdr ...                                          [ ok ]
* First start of vdr: No check for running vdr possible
* until control device (remote/keyboard) keys are learnt!

Uwaga: Użytkownicy programowych dekoderów powinni teraz uruchomić program klienta, który otworzy okno z obrazem telewizyjnym i OSD.

Listing 7.2: Aktywowanie programowego dekodera w kliencie

(Dla użytkowników vdr-softdevice)
# ShmClient
(Dla użytkowników of vdr-xineliboutput)
# vdr-sxfe xvdr://hostname

Najbardziej użyteczne klawisze w VDR:

  • Klawisze kursorów (Lewy/Prawy/Góra/Dół)
  • Menu/Wyjście/Ok
  • Kolory (Czerwony/Zielony/Żółty/Niebieski)
  • Klawisze numeryczne (0-9)

Ważne: Jeśli nie posiada się wielu klawiszy należy upewnić się, że przypisano powyższe. (Niektóre piloty posiadają Play/Pause/itp. na tych samych klawiszach, na których są kolory. Należy więc użyć ich do kolorów.

W tym momencie podstawowa instalacja jest zakończone, konieczne jest tylko skonfigurowanie VDR. Należy więc przełączyć się na obraz wyjścia i podążać za wskazówkami na ekranie. VDR poprosi o wciśnięcie różnych przycisków na pilocie, by nauczyć się prawidłowych kodów klawiszy. W przypadku, gdy nie posiada się pilota można użyć klawiatury.

Teraz można dodać skrypt startowy VDR do domyślnego poziomu uruchomieniowego, by uruchamiał się podczas każdego startu komputera.

Listing 7.3: Dodawanie vdr do domyślnego poziomu uruchomieniowego

# rc-update add vdr default

8.  Problemy

Uwaga: W przypadku problemów zawsze można zapytać kogoś na kanale #gentoo-vdr lub rozejrzeć się na forum.



Drukuj

Zaktualizowano 21 marca 2008

Podsumowanie: Opis przygotowania Gentoo dla technologii DVB i VFR.

Norman Golisz
Autor

Dimitry Bradt
Autor

Matthias Schwarzott
Autor

Joshua Saddler
Redaktor

Michał Laszuk
Tłumacz

Donate to support our development efforts.

Support OSL

Support OSL

Gentoo Centric Hosting: vr.org

VR Hosted

Tek Alchemy

Tek Alchemy

SevenL.net

SevenL.net

Global Netoptex Inc.

Global Netoptex Inc.

Linux World Expo

Linux World Expo

Copyright 2001-2008 Gentoo Foundation, Inc. Questions, Comments? Contact us.