Uživatelské nástroje

Nástroje pro tento web


DVB na Turrisu

Od verze Turris OS 2.5 je možné do jádra systému Turris OS doinstalovat moduly, které přidávají podporu pro některé USB DVB tunery. Díky tomu lze prostřednictvím routeru Turris sdílet v síti stream televizního nebo rádiového vysílání šířeného prostřednictvím DVB-T (terestriální vysílání), DVB-S (satelitní vysílání) nebo DVB-C (kabelová televize).

Standardní jádro systému Linux obsahuje podporu pro široké množství televizních tunerů. Velká část z nich však je poměrně exotická a proto Turris OS obsahuje podporu pouze pro několik nejběžnějších čipsetů a tunerů, které je možné na trhu sehnat. V případě, že pro Váš tuner podpora není, můžete požádat vývojáře o vytvoření balíčků pro potřebné kernelové moduly podle postupu uvedeného níže.

Instalace modulů

Řekněme, že jste si koupili nebo našli v šuplíku zařízení, o jehož „vnitřnostech“ nemáte ponětí a nevíte, co bude k běhu potřebovat. Nejsnažší to bude v případě, kdy už někdo toto zařízení používá, v tom případě pouze nainstalujte moduly pro toto zařízení, případně ještě nahrajte firmware pro zařízení do složky /lib/firmware/ na routeru a můžete hned pokračovat instalací softwaru Tvheadend.

Seznam ověřených zařízení a diskuze o případných nástrahách při jejich instalaci je k nalezení v příšlušném tématu na diskuzním fóru.

Horší to bude v případě, kdy postup instalace pro Vámi vlastněné zařízení ještě nikdo nezveřejnil. V tom případě jsou dvě možnosti – buď se pokusíte určit moduly požadované zařízením z identifikátoru zařízení USB VID a PID, které získáte z výstupu příkazu lsusb a vyhledáváním na internetu určíte, o jaké zařízení se jedná, nebo – snadněji – zkusíte připojit zařízení k desktopovému PC s OS Linux a zjistíte, jaké moduly se zavedou (většina moderních systémů se chová tak, že si moduly načtou, pokud jsou potřeba). Zajímat nás bude, co se změní ve výstupu příkazu lsmod před prvním připojením zařízení po restartu systému a po něm, a výstup příkazu dmesg. Pro příklad uvádíme výstup u tuneru bez zjevné vnější identifikace zakoupeného přes internet od čínského prodejce.

Výstup dmesg:

[29452.509137] usb 3-1: new high-speed USB device number 2 using xhci_hcd
[29452.538286] usb 3-1: New USB device found, idVendor=0bda, idProduct=2838
[29452.538291] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[29452.538293] usb 3-1: Product: RTL2838UHIDIR
[29452.538296] usb 3-1: Manufacturer: Realtek
[29452.538298] usb 3-1: SerialNumber: 00000001
[29452.563808] usb 3-1: dvb_usb_v2: found a 'Realtek RTL2832U reference design' in warm state
[29452.625545] usb 3-1: dvb_usb_v2: will pass the complete MPEG2 transport stream to the software demuxer
[29452.625558] DVB: registering new adapter (Realtek RTL2832U reference design)
[29452.634692] usb 3-1: DVB: registering adapter 0 frontend 0 (Realtek RTL2832 (DVB-T))...
[29452.638824] r820t 6-001a: creating new instance
[29452.650264] r820t 6-001a: Rafael Micro r820t successfully identified
[29452.656745] Registered IR keymap rc-empty
[29452.656827] input: Realtek RTL2832U reference design as /devices/pci0000:00/0000:00:14.0/usb3/3-1/rc/rc0/input19
[29452.656955] rc0: Realtek RTL2832U reference design as /devices/pci0000:00/0000:00:14.0/usb3/3-1/rc/rc0
[29452.660179] IR NEC protocol handler initialized
[29452.660257] IR RC5(x) protocol handler initialized
[29452.662419] IR MCE Keyboard/mouse protocol handler initialized
[29452.663260] input: MCE IR Keyboard/Mouse (dvb_usb_rtl28xxu) as /devices/virtual/input/input20
[29452.663395] usb 3-1: dvb_usb_v2: schedule remote query interval to 400 msecs
[29452.665567] IR Sony protocol handler initialized
[29452.666416] IR SANYO protocol handler initialized
[29452.666664] lirc_dev: IR Remote Control driver registered, major 250 
[29452.667004] IR RC6 protocol handler initialized
[29452.667973] rc rc0: lirc_dev: driver ir-lirc-codec (dvb_usb_rtl28xxu) registered at minor = 0
[29452.667976] IR LIRC bridge handler initialized
[29452.668091] IR JVC protocol handler initialized
[29452.675599] usb 3-1: dvb_usb_v2: 'Realtek RTL2832U reference design' successfully initialized and connected
[29452.675659] usbcore: registered new interface driver dvb_usb_rtl28xxu

Výstup lsmod:

ir_jvc_decoder         12751  0 
ir_lirc_codec          13021  0 
ir_rc6_decoder         12874  0 
lirc_dev               19980  1 ir_lirc_codec
ir_sanyo_decoder       12839  0 
ir_sony_decoder        12713  0 
ir_mce_kbd_decoder     13214  0 
ir_rc5_decoder         12710  0 
ir_nec_decoder         12915  0 
r820t                  26664  1 
rtl2832                19240  1 
dvb_usb_rtl28xxu       30077  0 
rtl2830                18804  1 dvb_usb_rtl28xxu
dvb_usb_v2             36018  1 dvb_usb_rtl28xxu
dvb_core              121659  3 rtl2830,rtl2832,dvb_usb_v2
rc_core                28124  12 lirc_dev,ir_lirc_codec,dvb_usb_rtl28xxu,ir_rc5_decoder,ir_nec_decoder,ir_sony_decoder,ir_mce_kbd_decoder,ir_jvc_decoder,dvb_usb_v2,ir_rc6_decoder,ir_sanyo_decoder

Vidíme, že se zavádí větší množství modulů začínajících ir_ a modul lirc_dev. Ty však pro Turris OS kompilovány nejsou (jedná se o podporu dálkového ovládání, které nemá na routeru využití). Z výstupu dmesg je však patrné, že klíčové jsou zde ovladače pro čipset RTL2832 a tuner R820T. Do routeru si tedy doinstalujte balíčky, které zprostředkovávají moduly rtl2832, dvb_usb_rtl28xxu a r820t:

opkg install kmod-dvb-rtl2832 kmod-dvb-usb-rtl28xxu kmod-media-tuner-r820t

Zbylé moduly budou staženy jako závislosti těchto balíčků. Nyní by již měl router být schopen zařízení detekovat a pracovat s ním – to ověříte zapojením tuneru do USB portu routeru, načež by se ve výstupu příkazu dmesg na routeru měl objevit podobný výstup jako na počítači v ukázce výše a zároveň by se mělo vytvořit zařízení v adresáři /dev/dvb/. V případě, že k tomu tak nedojde, je potřeba z výstupu dmesg identifikovat chybu a doinstalovat potřebné moduly. Některé tunery také potřebují firmware ve složce /lib/firmware/ – pak je nutné ho odněkud získat (buď z PC, na kterém tuner funguje, nebo stažením z internetu) – po odpojení a připojení tuneru se firmware zavede a tuner by tak měl být již funkční.

Instalace softwaru Tvheadend

Pokud se Vám povedlo nainstalovat všechny ovladače a v systému máte dostupné DVB zařízení, zbývá nainstalovat software pro jeho ovládání. Pro Linux existuje několik řešení, my jsme jako podporovanou metodu vybrali aplikaci Tvheadend, která na jednu stranu umožňuje nastavit i komplexní konfiguraci, ale přesto je uživatelsky přívětivá a lze spravovat prostřednictvím intuitivního webového rozhraní. Pomocí protokolu HTSP je také možné získat ze serveru seznam kanálů a zobrazovat ho například v aplikaci VLC. Aplikace Tvheadend lze nainstalovat prostřednictvím rozhraní Foris – na záložce Updater vyberte ze seznamu položku Televizní tuner – krátce po uložení se aplikace nainstaluje a je možné ji používat.

Po instalaci je možné upravit několik parametrů v konfiguračním skriptu /etc/config/tvheadend. Aplikaci je ale možné spustit i ve výchozí konfigurací – spuštění provedete zadáním /etc/init.d/tvheadend start. Pokud chcete, aby se aplikace Tvheadend spouštěla i po startu systému, docílíte toho spuštěním /etc/init.d/tvheadend enable. Obojí je pak možné provést i prostřednictvím rozhraní LuCI na záložce Systém → Po spuštění. Po spuštění by mělo být ve výchozím nastavení na portu 9981 a IP adrese routeru (např. tedy http://192.168.1.1:9981/) dostupné webové rozhraní.

Ve výchozím stavu je administrace aplikace dostupná s libovolným jménem a heslem. Proto zamiřte nejprve na záložku Configuration → Access Entries a nastavte přístupová práva, která odpovídají Vašim požadavkům. Lze vytvořit například uživatele s právy měnit konfiguraci, který se bude přihlašovat heslem, a uživatele, u kterého heslo nebude vyžadováno (zadáním znaku * namísto hesla, případně i uživatelského jména) a bude mít pouze práva pro streamování a zobrazení EPG.

V dalším kroku je potřeba přidat síť, kterou bude tuner používat. To provedete na záložce Configuration → DVB Inputs → Networks kliknutím na tlačítko Add. Pro DVB-T je situace nejsnažší – stačí v prvním okně vybrat tento typ sítě a v dalším jen zadat jméno (například „CZ DVB-T“) a u položky Pre-defined Muxes vybrat seznam českých multiplexů „Czech Republic: cz-All“ a potvrdit stiskem Create. V případě jiných sítí (např. DVB-C) je možné, že bude následně nutné na záložce Muxes ještě zadat seznam multiplexů, které se mají ladit.

V předposledním kroku na záložce TV adapters vyberete náš adaptér, zatrhnete u něj volbu Enabled a v seznamu Networks vyberete síť, kterou jsme vytvořili v minulém kroku. Po uložení se vráťte na záložku Networks a kliknutím na síť a tlačítko Force Scan naplánujte vyhledávání kanálů.

Poté, co dojde k nalezení dostupných kanálů (to může trvat několik minut – průběh lze sledovat na záložce Status nebo u seznamu multiplexů), zbývá přiřadit nalezené služby k dostupným kanálům – k tomu slouží tlačítko Map All (případně Map Selected, pokud vyberete jen některé kanály) na záložce Services. Následně je již možné tyto kanály přehrávat, krátce po jejich přiřazení by také mělo dojít ke stažení seznamu programů a na záložce Electronic Program Guide by se měl začít zobrazovat seznam vysílaných pořadů.

Hlášení nepodporovaných zařízení

Pokud jste ovladače pro Vaše zařízení nenašli, nic není ztraceno. Stačí nahlásit vývojářům týmu Turris prostřednictvím fóra nebo na adrese tech.support@turris.cz, o jaké zařízení se jedná a bude-li to možné, vytvoří Vám balíčky pro potřebné kernelové moduly.

Pro úspěšné přidání podpory pro Vaše zařízení je potřeba uvést co nejpřešnější informace o hardwaru, který je v zařízení přítomen. Lze zde aplikovat stejný postup jako při hledání modulů pomocí desktopové distribuce. Stejně tak může napovědět výstup příkazu lsusb na routeru. Poslední možností je domluvit se na zapůjčení zařízení členům týmu Turris.