Oglądamy telewizję z użyciem routera
Ostatnia zmiana: 2021-12-15 17:55

Telewizja cyfrowa stała się u nas w kraju faktem. W sklepach pojawiło się dużo odbiorników DVB-T, różniej jakości i typu. Wiele z nich można podłączyć do złącza USB i oglądać telewizję na komputerze. Oczywiście takie urządzenie można podłączyć do routera i odbierany sygnał udostępniać dla innych urządzeń w jakiś sposób - np. po prostu przez stronę www.

W OpenWrt (na chwilę pisania tego poradnika) nie ma obecnie pakietowanych modułów do DVB i trzeba się pomęczyć z instalacją sterowników. Należy albo samodzielnie je skompilować, albo skorzystać z modułów dostępnych w sieci. Jeżeli ktoś wykorzystuje moje obrazy może wykorzystać moduły skompilowane przeze mnie dla wydania Attitude Adjustment (wszystkie pochodzą ze kernela 3.3.8 z OpenWrt - więc mogą nie zawierać niektórych sterowników) - dostępne są one w katalogu http://dl.eko.one.pl/attitude_adjustment/ar71xx/dvb/ . Nie będą one działać na innych wydaniach i innych buildach, w takim przypadku moduły należy skompilować samodzielnie.

W tym poradniku posłużono się odbiornikiem o nic niemówiącej nazwie "DVB-T TVStick" oraz OpenWrt w wersji 12.09rc1 na platformie ar71xx.

Przygotowania

Zakładamy że w systemie zainstalowane są moduły do obsługi usb (zwykle wystarczy pakiet kmod-usb2). Należy także zainstalować dwa pakiety ogólne obsługujące urządzenia wejściowe i IR:


    # opkg update
    # opkg install kmod-input-core kmod-ir-core

Pakiety te są dostępne tylko w moim repozytorium, nie ma ich standardowo w OpenWrt. Zamiast kmod-ir-core można bezpośrednio załadować moduł rc-core.ko jeżeli jest dostępny.

Sterowniki

W sprzedaży można znaleźć wiele różnych odbiorników (najczęściej mają postać podobną do pendrive), obsługiwanych przez różne sterowniki. Trzeba więc znaleźć nazwę modułu przez które jest on wspierany.

Identyfikacja urządzenia

Logujemy się przez telnet/ssh do routera, podłączamy odbiornik DVB-T do złącza usb w routerze i wykonujemy polecenie


    # cat /proc/bus/usb/devices

Wśród wyników powinna pojawić się informacja o podłączonym urządzeniu:


T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 3 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=10b8 ProdID=1e80 Rev= 1.00
S: Manufacturer=DiBcom
S: Product=STK7770P_v1-4
S: SerialNumber=005
C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=500mA
I:* If#= 0 Alt= 0 #EPs= 4 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=125us
E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

Czyli w tym przypadku był to DiBcom STK7770P_v1-4 o identyfikatorze 10b8:1e80. Szybkie googlowanie przynosi informacje, że powinien on być obsługiwany przez moduł dvb_usb_dib0700.
Poniżej poglądowa lista identyfikatorów wraz z nazwami modułów:


0413:6025 dvb-usb-dibusb-mc.ko
0413:6026 dvb-usb-dibusb-mc.ko
0413:6029 dvb-usb-af9015.ko
0413:60F6 dvb-usb-dib0700.ko
0413:6680 dvb-usb-rtl2832u.ko
0413:6A03 dvb-usb-rtl2832u.ko
0413:6A04 dvb-usb-af9015.ko
0413:6F00 dvb-usb-dib0700.ko
0413:6F01 dvb-usb-dib0700.ko
0413:6F11 dvb-usb-rtl2832u.ko
0458:4012 dvb-usb-af9015.ko
0458:701E dvb-usb-dibusb-mb.ko
0458:701F dvb-usb-dibusb-mb.ko
048D:9005 dvb-usb-it913x.ko
048D:9006 dvb-usb-it913x.ko
048D:9135 dvb-usb-it913x.ko
04B4:2101 dvb-usb-dw2102.ko
04B4:2102 dvb-usb-dw2102.ko
04B4:2104 dvb-usb-dw2102.ko
04B4:2830 dvb-usb-opera.ko
04B4:3101 dvb-usb-dw2102.ko
04B4:861F dvb-usb-anysee.ko
04CA:F000 dvb-usb-dibusb-mc.ko
04CA:F001 dvb-usb-dibusb-mc.ko
0547:0201 dvb-usb-digitv.ko
0547:2235 dvb-usb-dibusb-mb.ko
0572:86D6 dvb-usb-cxusb.ko
0572:D811 dvb-usb-cxusb.ko
058F:6610 dvb-usb-au6610.ko
05D8:8105 dvb-usb-dibusb-mb.ko
05D8:8106 dvb-usb-dibusb-mb.ko
05D8:8107 dvb-usb-dibusb-mb.ko
05D8:8108 dvb-usb-dibusb-mb.ko
05D8:8109 dvb-usb-dibusb-mb.ko
05D8:8109 dvb-usb-dibusb-mc.ko
05D8:810A dvb-usb-dibusb-mb.ko
05D8:810A dvb-usb-dibusb-mc.ko
05D8:810B dvb-usb-dibusb-mc.ko
05D8:810C dvb-usb-dibusb-mc.ko
05D8:810F dvb-usb-dib0700.ko
05E3:F170 dvb-usb-gl861.ko
06BE:A232 dvb-usb-dtv5100.ko
06E1:A333 dvb-usb-dibusb-mb.ko
06E1:A334 dvb-usb-dibusb-mb.ko
07CA:8150 dvb-usb-af9015.ko
07CA:815A dvb-usb-af9015.ko
07CA:850A dvb-usb-af9015.ko
07CA:850B dvb-usb-af9015.ko
07CA:A309 dvb-usb-af9015.ko
07CA:A310 dvb-usb-ce6230.ko
07CA:A800 dvb-usb-a800.ko
07CA:A801 dvb-usb-a800.ko
07CA:A805 dvb-usb-af9015.ko
07CA:A807 dvb-usb-dib0700.ko
07CA:A815 dvb-usb-af9015.ko
07CA:A868 dvb-usb-cxusb.ko
07CA:B568 dvb-usb-dib0700.ko
07CA:B808 dvb-usb-dib0700.ko
09C0:0200 dvb-usb-gp8psk.ko
09C0:0201 dvb-usb-gp8psk.ko
09C0:0202 dvb-usb-gp8psk.ko
09C0:0203 dvb-usb-gp8psk.ko
09C0:0206 dvb-usb-gp8psk.ko
0B05:171F dvb-usb-dib0700.ko
0B05:1736 dvb-usb-dib0700.ko
0B05:173F dvb-usb-dib0700.ko
0B48:1003 dvb-ttusb-budget.ko
0B48:1004 dvb-ttusb-budget.ko
0B48:1005 dvb-ttusb-budget.ko
0B48:1006 ttusb_dec.ko
0B48:1008 ttusb_dec.ko
0B48:1009 ttusb_dec.ko
0B48:3006 dvb-usb-ttusb2.ko
0B48:3007 dvb-usb-pctv452e.ko
0B48:300A dvb-usb-pctv452e.ko
0B48:300D dvb-usb-ttusb2.ko
0B89:0007 dvb-as102.ko
0BDA:2810 dvb-usb-rtl2832u.ko
0BDA:2811 dvb-usb-rtl2832u.ko
0BDA:2820 dvb-usb-rtl2832u.ko
0BDA:2821 dvb-usb-rtl2832u.ko
0BDA:2822 dvb-usb-rtl2832u.ko
0BDA:2823 dvb-usb-rtl2832u.ko
0BDA:2824 dvb-usb-rtl2832u.ko
0BDA:2825 dvb-usb-rtl2832u.ko
0BDA:2832 dvb-usb-rtl2832u.ko
0BDA:2834 dvb-usb-rtl2832u.ko
0BDA:2836 dvb-usb-rtl2832u.ko
0BDA:2837 dvb-usb-rtl2832u.ko
0BDA:2838 dvb-usb-rtl2832u.ko
0BDA:2839 dvb-usb-rtl2832u.ko
0BDA:2840 dvb-usb-rtl2832u.ko
0BDA:2841 dvb-usb-rtl2832u.ko
0CCD:0038 dvb-usb-cinergyT2.ko
0CCD:0055 dvb-usb-af9005.ko
0CCD:0058 dvb-usb-dib0700.ko
0CCD:005A dvb-usb-dib0700.ko
0CCD:0060 dvb-usb-dib0700.ko
0CCD:0062 dvb-usb-dib0700.ko
0CCD:0064 dvb-usb-dw2102.ko
0CCD:0069 dvb-usb-af9015.ko
0CCD:0078 dvb-usb-dib0700.ko
0CCD:0081 dvb-usb-dib0700.ko
0CCD:0097 dvb-usb-af9015.ko
0CCD:0099 dvb-usb-af9015.ko
0CCD:00A8 dvb-usb-dw2102.ko
0CCD:00A9 dvb-usb-rtl2832u.ko
0CCD:00AB dvb-usb-dib0700.ko
0CCD:00B3 dvb-usb-rtl2832u.ko
0CCD:00D3 dvb-usb-rtl2832u.ko
0CCD:00D4 dvb-usb-rtl2832u.ko
0CCD:00E0 dvb-usb-rtl2832u.ko
0CCD:10A0 dvb-usb-dib0700.ko
0CCD:10A1 dvb-usb-dib0700.ko
0CCD:10A4 dvb-usb-az6027.ko
0CCD:10AC dvb-usb-az6027.ko
0DB0:5580 dvb-usb-m920x.ko
0DB0:5581 dvb-usb-gl861.ko
0FD9:0011 dvb-usb-dib0700.ko
0FD9:0020 dvb-usb-dib0700.ko
0FD9:0021 dvb-usb-dib0700.ko
0FD9:002A dvb-usb-az6027.ko
0FD9:002C dvb-as102.ko
0FE9:D500 dvb-usb-cxusb.ko
0FE9:D501 dvb-usb-cxusb.ko
0FE9:DB00 dvb-usb-cxusb.ko
0FE9:DB01 dvb-usb-cxusb.ko
0FE9:DB10 dvb-usb-cxusb.ko
0FE9:DB11 dvb-usb-cxusb.ko
0FE9:DB50 dvb-usb-cxusb.ko
0FE9:DB51 dvb-usb-cxusb.ko
0FE9:DB54 dvb-usb-cxusb.ko
0FE9:DB55 dvb-usb-cxusb.ko
0FE9:DB58 dvb-usb-cxusb.ko
0FE9:DB59 dvb-usb-cxusb.ko
0FE9:DB70 dvb-usb-cxusb.ko
0FE9:DB71 dvb-usb-cxusb.ko
0FE9:DB78 dvb-usb-cxusb.ko
0FE9:DB98 dvb-usb-cxusb.ko
1025:005E dvb-usb-dibusb-mb.ko
1025:005F dvb-usb-dibusb-mb.ko
1044:7001 dvb-usb-dib0700.ko
1044:7002 dvb-usb-dib0700.ko
10B8:0BB8 dvb-usb-dibusb-mb.ko
10B8:0BB9 dvb-usb-dibusb-mb.ko
10B8:0BC6 dvb-usb-dibusb-mc.ko
10B8:0BC7 dvb-usb-dibusb-mc.ko
10B8:1BB2 dvb-usb-dib0700.ko
10B8:1BB4 dvb-usb-dib0700.ko
10B8:1BB7 dvb-usb-dib0700.ko
10B8:1E14 dvb-usb-dib0700.ko
10B8:1E6E dvb-usb-dib0700.ko
10B8:1E78 dvb-usb-dib0700.ko
10B8:1E80 dvb-usb-dib0700.ko
10B8:1EBC dvb-usb-dib0700.ko
10B8:1EBE dvb-usb-dib0700.ko
10B8:1EF0 dvb-usb-dib0700.ko
10B8:1F90 dvb-usb-dib0700.ko
10B8:1F98 dvb-usb-dib0700.ko
10B8:1F9C dvb-usb-dib0700.ko
10B8:1FA0 dvb-usb-dib0700.ko
10B8:1FA8 dvb-usb-dib0700.ko
10B8:2383 dvb-usb-dib0700.ko
10B8:2384 dvb-usb-dib0700.ko
10B9:5000 dvb-usb-dibusb-mc.ko
10B9:5001 dvb-usb-dibusb-mc.ko
10B9:6000 dvb-usb-af9005.ko
10B9:8000 dvb-usb-af9015.ko
10FD:0513 dvb-usb-m920x.ko
10FD:0514 dvb-usb-m920x.ko
10FD:1513 dvb-usb-m920x.ko
1164:0871 dvb-usb-dib0700.ko
1164:1E8C dvb-usb-dib0700.ko
1164:1EDC dvb-usb-dib0700.ko
1164:1EFC dvb-usb-dib0700.ko
1164:1F08 dvb-usb-dib0700.ko
1164:2EDC dvb-usb-dib0700.ko
1164:3280 dvb-usb-rtl2832u.ko
1164:3284 dvb-usb-rtl2832u.ko
1164:6601 dvb-usb-rtl2832u.ko
13D3:3201 dvb-usb-dibusb-mb.ko
13D3:3202 dvb-usb-dibusb-mb.ko
13D3:3205 dvb-usb-vp7045.ko
13D3:3206 dvb-usb-vp7045.ko
13D3:3207 dvb-usb-vp702x.ko
13D3:3211 dvb-usb-m920x.ko
13D3:3223 dvb-usb-vp7045.ko
13D3:3224 dvb-usb-vp7045.ko
13D3:3226 dvb-usb-af9015.ko
13D3:3234 dvb-usb-rtl2832u.ko
13D3:3237 dvb-usb-af9015.ko
13D3:3274 dvb-usb-rtl2832u.ko
13D3:3275 dvb-usb-az6027.ko
13D3:3282 dvb-usb-rtl2832u.ko
1415:0003 dvb-usb-dib0700.ko
145F:010C dvb-usb-dibusb-mb.ko
1462:8801 dvb-usb-af9015.ko
1462:8807 dvb-usb-af9015.ko
1498:9206 dvb-usb-m920x.ko
1498:A090 dvb-usb-m920x.ko
14AA:0001 dvb-usb-dibusb-mb.ko
14AA:0002 dvb-usb-dibusb-mb.ko
14AA:0201 dvb-usb-dtt200u.ko
14AA:0220 dvb-usb-dtt200u.ko
14AA:0221 dvb-usb-dtt200u.ko
14AA:0222 dvb-usb-dtt200u.ko
14AA:0225 dvb-usb-dtt200u.ko
14AA:0226 dvb-usb-dtt200u.ko
14AA:022A dvb-usb-dtt200u.ko
14AA:022B dvb-usb-dtt200u.ko
14AA:0301 dvb-usb-dtt200u.ko
14F7:0001 dvb-usb-az6027.ko
14F7:0002 dvb-usb-az6027.ko
14F7:0004 dvb-usb-dib0700.ko
1554:5010 dvb-usb-dib0700.ko
1554:5010 dvb-usb-dib0700.ko
1554:5010 dvb-usb-dib0700.ko
1554:5013 dvb-usb-rtl2832u.ko
1554:5020 dvb-usb-rtl2832u.ko
1554:5026 dvb-usb-rtl2832u.ko
1584:6003 dvb-usb-dib0700.ko
15A4:9015 dvb-usb-af9015.ko
15A4:9016 dvb-usb-af9015.ko
15A4:901B dvb-usb-af9015.ko
15A4:9020 dvb-usb-af9005.ko
15F4:0001 dvb-usb-umt-010.ko
15F4:0015 dvb-usb-umt-010.ko
1660:0932 dvb-usb-cxusb.ko
1660:1921 dvb-usb-dib0700.ko
1680:A332 dvb-usb-rtl2832u.ko
1822:3201 dvb-usb-dibusb-mb.ko
1822:3202 dvb-usb-dibusb-mb.ko
185B:0620 dvb-usb-rtl2832u.ko
185B:0630 dvb-usb-rtl2832u.ko
185B:0640 dvb-usb-rtl2832u.ko
185B:0650 dvb-usb-rtl2832u.ko
185B:0680 dvb-usb-rtl2832u.ko
185B:1E78 dvb-usb-dib0700.ko
185B:1E80 dvb-usb-dib0700.ko
185B:9520 dvb-usb-rtl2832u.ko
185B:9530 dvb-usb-rtl2832u.ko
185B:9540 dvb-usb-rtl2832u.ko
185B:9550 dvb-usb-rtl2832u.ko
185B:9580 dvb-usb-rtl2832u.ko
185B:D000 dvb-usb-dibusb-mb.ko
185B:D001 dvb-usb-dibusb-mb.ko
187F:0010 smsusb.ko
187F:0100 smsusb.ko
187F:0200 smsusb.ko
187F:0201 smsusb.ko
187F:0202 smsusb.ko
187F:0300 smsusb.ko
187F:0301 smsusb.ko
18B4:1001 dvb-usb-ec168.ko
18B4:1002 dvb-usb-ec168.ko
18B4:1689 dvb-usb-ec168.ko
18B4:FFFA dvb-usb-ec168.ko
18B4:FFFB dvb-usb-ec168.ko
18F3:0220 dvb-usb-dtt200u.ko
1AE7:0381 dvb-usb-af9015.ko
1B80:C160 dvb-usb-af9015.ko
1B80:C161 dvb-usb-af9015.ko
1B80:C810 dvb-usb-af9015.ko
1B80:D393 dvb-usb-rtl2832u.ko
1B80:D394 dvb-usb-rtl2832u.ko
1B80:D395 dvb-usb-rtl2832u.ko
1B80:D396 dvb-usb-rtl2832u.ko
1B80:D397 dvb-usb-rtl2832u.ko
1B80:D398 dvb-usb-rtl2832u.ko
1B80:D39A dvb-usb-rtl2832u.ko
1B80:D39B dvb-usb-rtl2832u.ko
1B80:D39C dvb-usb-rtl2832u.ko
1B80:D39E dvb-usb-rtl2832u.ko
1B80:D3A1 dvb-usb-rtl2832u.ko
1B80:D3A4 dvb-usb-rtl2832u.ko
1B80:E383 dvb-usb-af9015.ko
1B80:E395 dvb-usb-af9015.ko
1B80:E396 dvb-usb-af9015.ko
1B80:E397 dvb-usb-af9015.ko
1B80:E399 dvb-usb-af9015.ko
1B80:E39A dvb-usb-af9015.ko
1B80:E39B dvb-usb-af9015.ko
1B80:E39D dvb-usb-af9015.ko
1B80:E400 dvb-usb-af9015.ko
1B80:E401 dvb-usb-af9015.ko
1B80:E402 dvb-usb-af9015.ko
1B80:E409 dvb-usb-it913x.ko
1B80:E411 dvb-usb-it913x.ko
1B80:E41D dvb-usb-rtl2832u.ko
1B80:E77B dvb-usb-rtl2832u.ko
1BA6:0001 dvb-as102.ko
1C73:861F dvb-usb-anysee.ko
1D19:1101 dvb-usb-rtl2832u.ko
1D19:1102 dvb-usb-rtl2832u.ko
1D19:1103 dvb-usb-rtl2832u.ko
1D19:1104 dvb-usb-rtl2832u.ko
1D19:1105 dvb-usb-rtl2832u.ko
1D19:1106 dvb-usb-rtl2832u.ko
1D19:1107 dvb-usb-rtl2832u.ko
1D19:1108 dvb-usb-rtl2832u.ko
1D19:2101 dvb-usb-rtl2832u.ko
1D19:3103 dvb-usb-rtl2832u.ko
1D19:8202 dvb-usb-rtl2832u.ko
1D19:9201 dvb-usb-rtl2832u.ko
1D19:9202 dvb-usb-rtl2832u.ko
1E59:0002 dvb-usb-dib0700.ko
1F4D:0139 dvb-usb-rtl2832u.ko
1F4D:0837 dvb-usb-rtl2832u.ko
1F4D:3000 dvb-usb-dw2102.ko
1F4D:3100 dvb-usb-dw2102.ko
1F4D:9016 dvb-usb-af9015.ko
1F4D:A683 dvb-usb-rtl2832u.ko
1F4D:A803 dvb-usb-rtl2832u.ko
1F4D:B803 dvb-usb-rtl2832u.ko
1F4D:C280 dvb-usb-rtl2832u.ko
1F4D:C803 dvb-usb-rtl2832u.ko
1F4D:D286 dvb-usb-rtl2832u.ko
1F4D:D803 dvb-usb-rtl2832u.ko
2013:0245 dvb-usb-dib0700.ko
2013:0246 dvb-as102.ko
2013:0248 dvb-usb-dib0700.ko
2040:1700 smsusb.ko
2040:1800 smsusb.ko
2040:1801 smsusb.ko
2040:2000 smsusb.ko
2040:2009 smsusb.ko
2040:200A smsusb.ko
2040:2010 smsusb.ko
2040:2011 smsusb.ko
2040:2019 smsusb.ko
2040:5200 dvb-usb-dib0700.ko
2040:5500 smsusb.ko
2040:5510 smsusb.ko
2040:5520 smsusb.ko
2040:5530 smsusb.ko
2040:5580 smsusb.ko
2040:5590 smsusb.ko
2040:7050 dvb-usb-dib0700.ko
2040:7060 dvb-usb-dib0700.ko
2040:7070 dvb-usb-dib0700.ko
2040:7080 dvb-usb-dib0700.ko
2040:8400 dvb-usb-dib0700.ko
2040:9300 dvb-usb-nova-t-usb2.ko
2040:9301 dvb-usb-nova-t-usb2.ko
2040:9580 dvb-usb-dib0700.ko
2040:9941 dvb-usb-dib0700.ko
2040:9950 dvb-usb-dib0700.ko
2040:B200 dvb-usb-dib0700.ko
2040:B210 dvb-usb-dib0700.ko
2040:B700 dvb-usb-mxl111sf.ko
2040:B701 dvb-usb-mxl111sf.ko
2040:B702 dvb-usb-mxl111sf.ko
2040:B703 dvb-usb-mxl111sf.ko
2040:B704 dvb-usb-mxl111sf.ko
2040:B753 dvb-usb-mxl111sf.ko
2040:B757 dvb-usb-mxl111sf.ko
2040:B763 dvb-usb-mxl111sf.ko
2040:B764 dvb-usb-mxl111sf.ko
2040:B767 dvb-usb-mxl111sf.ko
2040:B900 smsusb.ko
2040:B910 smsusb.ko
2040:B980 smsusb.ko
2040:B990 smsusb.ko
2040:C000 smsusb.ko
2040:C010 smsusb.ko
2040:C080 smsusb.ko
2040:C090 smsusb.ko
2040:C0A0 smsusb.ko
2040:C600 dvb-usb-mxl111sf.ko
2040:C601 dvb-usb-mxl111sf.ko
2040:C602 dvb-usb-mxl111sf.ko
2040:C603 dvb-usb-mxl111sf.ko
2040:C604 dvb-usb-mxl111sf.ko
2040:C609 dvb-usb-mxl111sf.ko
2040:C60A dvb-usb-mxl111sf.ko
2040:C60B dvb-usb-mxl111sf.ko
2040:C60C dvb-usb-mxl111sf.ko
2040:C612 dvb-usb-mxl111sf.ko
2040:C613 dvb-usb-mxl111sf.ko
2040:C61A dvb-usb-mxl111sf.ko
2040:C61B dvb-usb-mxl111sf.ko
2040:C653 dvb-usb-mxl111sf.ko
2040:C65B dvb-usb-mxl111sf.ko
2040:D853 dvb-usb-mxl111sf.ko
2040:D854 dvb-usb-mxl111sf.ko
2040:D863 dvb-usb-mxl111sf.ko
2040:D864 dvb-usb-mxl111sf.ko
2040:D8D3 dvb-usb-mxl111sf.ko
2040:D8D4 dvb-usb-mxl111sf.ko
2040:D8E3 dvb-usb-mxl111sf.ko
2040:D8E4 dvb-usb-mxl111sf.ko
2040:D8FF dvb-usb-mxl111sf.ko
2137:0001 dvb-as102.ko
2304:020F dvb-usb-ttusb2.ko
2304:021F dvb-usb-pctv452e.ko
2304:0222 dvb-usb-ttusb2.ko
2304:0228 dvb-usb-dib0700.ko
2304:0229 dvb-usb-dib0700.ko
2304:022B dvb-usb-af9015.ko
2304:022C dvb-usb-dib0700.ko
2304:022E dvb-usb-dib0700.ko
2304:0236 dvb-usb-dib0700.ko
2304:0237 dvb-usb-dib0700.ko
2304:023A dvb-usb-dib0700.ko
2304:023B dvb-usb-dib0700.ko
2304:023D dvb-usb-dib0700.ko
2304:023E dvb-usb-dib0700.ko
2304:0243 dvb-usb-dib0700.ko
2304:0245 dvb-usb-dib0700.ko
2304:0248 dvb-usb-dib0700.ko
3011:B012 dvb-usb-dw2102.ko
3034:7500 dvb-usb-dw2102.ko
3344:1120 dvb-usb-lmedm04.ko
3344:1122 dvb-usb-lmedm04.ko
5032:0BB8 dvb-usb-dibusb-mb.ko
5032:0BB9 dvb-usb-dibusb-mb.ko
5032:0BC6 dvb-usb-dibusb-mc.ko
5032:0BC7 dvb-usb-dibusb-mc.ko
5032:0FA0 dvb-usb-dibusb-mb.ko
5032:0FA1 dvb-usb-dibusb-mb.ko
695C:3829 dvb-usb-opera.ko
7A69:0001 dvb-usb-friio.ko
8086:9500 dvb-usb-ce6230.ko
9022:D481 dvb-usb-dw2102.ko
9022:D482 dvb-usb-dw2102.ko
9022:D630 dvb-usb-dw2102.ko
9022:D650 dvb-usb-dw2102.ko
9022:D660 dvb-usb-dw2102.ko
EB1A:17DE dvb-usb-dibusb-mb.ko
EB1A:17DF dvb-usb-dibusb-mb.ko
EB1A:E360 dvb-usb-dibusb-mc.ko
EB1A:E361 dvb-usb-dibusb-mc.ko
EB2A:17DE dvb-usb-dibusb-mb.ko

Moduły DVB

Moduły do DVB-T należy samodzielnie skompilować i zainstalować dokładnie do wersji kernela która jest w systemie. W tym przykładzie był to kernel w wersji 3.3.8, w przypadku posiadania innej wersji kernela należy dostosować polecenia.
Przed instalacją należy zainstalować ogólne moduły do obsługi dvb: dvb-core i dvb-usb. Powinny one być umieszczone w katalogu /lib/modules/3.3.8. Ponieważ nie były one instalowane z pakietów, należy teraz je ręcznie załadować:


    # insmod dvb-core
    # insmod dvb-usb

Poleceniem lsmod można przekonać się czy zostało to wykonane.

Sterownik i zależności

Podobnie jak przy ogólnych modułach od dvb, sterownik do odbiornika pobieramy i umieszczamy w katalogu /lib/modules/3.3.8 w routerze. W tym przypadku wyglądało to następująco:


    # cd /lib/modules/3.3.8
    # wget http://xxxxx/dvb-usb-dib0700.ko

Niestety załadowanie go (poleceniem insmod) zakończy się porażką, ponieważ zależy on od wielu (bardzo wielu...) innych modułów. Aby sprawdzić zależności najprościej jest napisać polecenie:

 
    # strings /lib/modules/3.3.8/dvb-usb-dib0700.ko | grep depends
    depends=dib7000m,dib7000p,dib9000,dib8000,dibx000_common,dvb-usb,dib0090,dib0070,dib3000mc,usbcore,rc-core

Jeżeli nic nie wypisze - nie ma wymaganych innych modułów. Jeżeli coś się pojawiło tak jak w tym przypadku - należy je ściągnąć, sprawdzić ich zależności i załadować we właściwej kolejności (!) do pamięci.

Dla tego urządzenia ostateczna lista modułów i kolejność ich ładowania wyglądała następująco


    # insmod dibx000_common
    # insmod dib3000mc
    # insmod dvb_usb_dibusb_common
    # insmod dib7000m
    # insmod dib7000p
    # insmod dib8000
    # insmod dib9000
    # insmod dib0070
    # insmod dib0090
    # insmod dvb_usb_dib0700

Te polecenia można dodać do pliku np. /etc/rc.local, dzięki czemu moduły będą się automatycznie ładować po starcie routera.
Po wykonaniu polecenia lsmod widać całe drzewo zależności:


    dvb_usb_dib0700 82720 0
    db0090 20000 1 dvb_usb_dib0700
    dib0070 6496 2 dvb_usb_dib0700
    dib9000 23072 1 dvb_usb_dib0700
    dib8000 32800 1 dvb_usb_dib0700
    dib7000p 21664 2 dvb_usb_dib0700
    dib7000m 11696 1 dvb_usb_dib0700
    dvb_usb_dibusb_common 4560 0
    dib3000mc 8464 2 dvb_usb_dib0700,dvb_usb_dibusb_common
    dibx000_common 5088 6 dvb_usb_dib0700,dib9000,dib8000,dib7000p,dib7000m,dib3000mc
    dvb_usb 13536 2 dvb_usb_dib0700,dvb_usb_dibusb_common
    dvb_core 70240 4 dib9000,dib8000,dib7000p,dvb_usb
    rc_core 9392 2 dvb_usb_dib0700,dvb_usb
    input_core 20016 2 dvb_usb,rc_core


W przypadku innych urządzeń może być konieczne załadowanie modułów z odpowiednimi parametrami, załadowanie modułów tunerów itd. Generalnie należy uważnie czytać wynik polecenia logread.

Firmware

Nie jest to jeszcze koniec prac - jeżeli wykonamy logread w logach może pokazać się informacja takiego typu:


    Feb 2 09:14:03 OpenWrt kern.err kernel: [ 1083.760000] dvb-usb: did not find the firmware file. (dvb-usb-dib0700-1.20.fw) Please see linux/Documentation/dvb/ for more details on firmware-problems. (-2)
    Feb 2 09:14:03 OpenWrt kern.info kernel: [ 1083.770000] usbcore: registered new interface driver dvb_usb_dib0700

Większość modułów do DVB-T wymaga także firmware w postaci oddzielnego pliku który system samodzielnie ładuje. Należy go poszukać w internecie i skopiować pod taką nazwą (w tym przypadku: dvb-usb-dib0700-1.20.fw) do katalogu /lib/firmware (koniecznie!). Posiadacze systemów linux mają sprawę uproszczoną, ponieważ zwykle firmware można znaleźć właśnie gdzieś w katalogu /lib/modules desktopa.

Dużą listę firmware dla DVB-T można znaleźć pod adresem http://www.linuxtv.org/downloads/firmware/ .

Po ponownym załadowaniu modułu:


    # rmmod dvb_usb_dib0700
    # insmod dvb_usb_dib0700

w logach powinna się już znaleźć kompletna odpowiedź systemu:


Feb 2 09:16:22 OpenWrt kern.info kernel: [ 1223.000000] dvb-usb: downloading firmware from file 'dvb-usb-dib0700-1.20.fw'
Feb 2 09:16:22 OpenWrt kern.info kernel: [ 1223.210000] dib0700: firmware started successfully.
Feb 2 09:16:23 OpenWrt kern.info kernel: [ 1223.730000] dvb-usb: found a 'DiBcom STK7770P reference design' in warm state.
Feb 2 09:16:23 OpenWrt kern.info kernel: [ 1223.730000] dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
Feb 2 09:16:23 OpenWrt kern.info kernel: [ 1223.740000] DVB: registering new adapter (DiBcom STK7770P reference design)
Feb 2 09:16:23 OpenWrt kern.warn kernel: [ 1223.980000] DVB: registering adapter 0 frontend 0 (DiBcom 7000PC)...
Feb 2 09:16:23 OpenWrt kern.info kernel: [ 1224.210000] DiB0070: successfully identified
Feb 2 09:16:23 OpenWrt kern.err kernel: [ 1224.220000] Couldn't load IR keymap rc-dib0700-rc5
Feb 2 09:16:23 OpenWrt kern.info kernel: [ 1224.220000] Registered IR keymap rc-empty
Feb 2 09:16:23 OpenWrt kern.info kernel: [ 1224.230000] input: IR-receiver inside an USB DVB receiver as /devices/platform/ehci-platform/usb1/1-2/rc/rc0/input0
Feb 2 09:16:23 OpenWrt kern.info kernel: [ 1224.240000] rc0: IR-receiver inside an USB DVB receiver as /devices/platform/ehci-platform/usb1/1-2/rc/rc0
Feb 2 09:16:23 OpenWrt kern.err kernel: [ 1224.250000] dvb-usb: could not initialize remote control.
Feb 2 09:16:23 OpenWrt kern.info kernel: [ 1224.250000] dvb-usb: DiBcom STK7770P reference design successfully initialized and connected.
Feb 2 09:16:23 OpenWrt kern.info kernel: [ 1224.260000] usbcore: registered new interface driver dvb_usb_dib0700

Sprawdzamy jeszcze czy w katalogu /dev znajduje się katalog dvb/adapter0. Jeżeli tak - gratulacje. Instalacja sterowników zakończona.

tvheadend

Zostaje najważniejsza sprawa - oglądanie kanałów. Instalujemy w tym celu program tvheadend


    # opkg update
    # opkg install tvheadend

A następnie uruchamiamy za pierwszym razem poleceniem:


    # tvheadend -c /etc/tvheadend -C

Program powinien wypisać informację o znalezionym adapterze:


Feb 02 09:32:01 [INFO]:charset: 59 entries loaded
Feb 02 09:32:01 [INFO]:dvb: Found adapter /dev/dvb/adapter0 (DiBcom 7000PC) via USB (480 Mbit/s)
Feb 02 09:32:01 [INFO]:epggrab: module eit created
Feb 02 09:32:01 [INFO]:epggrab: module uk_freesat created
Feb 02 09:32:01 [INFO]:epggrab: module uk_freeview created
Feb 02 09:32:01 [INFO]:epggrab: module opentv-ausat created
Feb 02 09:32:01 [INFO]:epggrab: module opentv-skyuk created
Feb 02 09:32:01 [INFO]:epggrab: module opentv-skyit created
Feb 02 09:32:01 [INFO]:epggrab: module pyepg created
Feb 02 09:32:01 [INFO]:epggrab: module xmltv created
Feb 02 09:32:01 [INFO]:epgdb: loaded v2
Feb 02 09:32:01 [INFO]:epgdb: channels 0
Feb 02 09:32:01 [INFO]:epgdb: brands 0
Feb 02 09:32:01 [INFO]:epgdb: seasons 0
Feb 02 09:32:01 [INFO]:epgdb: episodes 0
Feb 02 09:32:01 [INFO]:epgdb: broadcasts 0
Feb 02 09:32:01 [INFO]:dvr: Creating new configuration ''
Feb 02 09:32:01 [WARNING]:dvr: Output directory for video recording is not yet configured for DVR configuration "". Defaulting to to "/root". This can be changed from the web user interface.
Feb 02 09:32:01 [INFO]:CSA: Using 32bit parallel descrambling
...

Uruchamiamy przeglądarkę, wpisujemy adres routera i port 9981 (http://192.168.1.1:9981). Ukaże się interfejs tvheadend.
Najpierw należy w zakładce Configuration / Access control kliknąć dwa razy na pola username i password, wprowadzić dane (np. admin/admin). Zapisać zmainy. Umożliwi to późniejszy automatyczny start programu.
Następnie wchodzimy w ponownie w Configuration, wybieramy zakładkę TV Adapters, a w niej z listy wybieramy nasz adapter (w tym przypadku była to nazwa DiBcom 7000PC). Zapisać zmiany. Dla przyśpieszenia operacji w sekcji Tools można wybrać Add DVB Network by location i wskazać jedną z lokalizacji (w moim przypadku było to Poland/pl_Warszawa). Należy teraz dać mu chwilę na zeskanowanie tzw. muxów - postępy prac widać w sekcji Information and capabilities, pozycja Services. Liczba większa od zera świadczy o znalezieniu sygnału.
W moim przypadku na częstotliwości 730,000KHz jest Emitel.

Później można już kliknąć zakładkę Electronic Program Guide (EPG, czyli program TV), kliknąć kanał i oglądać...

Samo uruchomienie (/etc/init.d/tvheadend start) można dodać po załadowaniu modułów w /etc/rc.local.

Uzupełnienie - IT9135/IT9137

Bardzo popularne są urządzenia wyposażone w chip IT9135 (v1/v2) lub IT9137. Kolejność instalacji modułów:


    # insmod input-core
    # insmod rc-core
    # insmod dvb-core
    # insmod dvb-usb
    # insmod it913x-fe
    # insmod rc-it913x-v1
    # insmod rc-it913x-v2
    # insmod dvb-usb-it913x

Oczywiście nie należy zapominać o umieszczeniu odpowiedniego pliku z firmware w katalogu /lib/firmware.
Wynikiem może być np.


Apr 4 23:44:48 Gargoyle kern.info kernel: [ 6736.620000] it913x: Chip Version=02 Chip Type=9135
Apr 4 23:44:48 Gargoyle kern.info kernel: [ 6736.630000] it913x: Firmware Version 52887808
Apr 4 23:44:48 Gargoyle kern.info kernel: [ 6736.630000] it913x: Dual mode=0 Tuner Type=38
Apr 4 23:44:48 Gargoyle kern.info kernel: [ 6736.630000] it913x: Unknown tuner ID applying default 0x60
Apr 4 23:44:48 Gargoyle kern.info kernel: [ 6736.640000] dvb-usb: found a 'ITE 9135 Generic' in warm state.
Apr 4 23:44:48 Gargoyle kern.info kernel: [ 6736.640000] dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
Apr 4 23:44:48 Gargoyle kern.info kernel: [ 6736.660000] DVB: registering new adapter (ITE 9135 Generic)
Apr 4 23:44:48 Gargoyle kern.info kernel: [ 6736.670000] it913x-fe: ADF table value :00
Apr 4 23:44:48 Gargoyle kern.info kernel: [ 6736.680000] it913x-fe: Crystal Frequency :12000000 Adc Frequency :20250000 ADC X2: 01
Apr 4 23:44:48 Gargoyle kern.info kernel: [ 6736.720000] it913x-fe: Tuner LNA type :60
Apr 4 23:44:49 Gargoyle kern.warn kernel: [ 6736.860000] DVB: registering adapter 0 frontend 0 (ITE 9135 Generic_1)...
Apr 4 23:44:49 Gargoyle kern.info kernel: [ 6736.860000] Registered IR keymap rc-it913x-v1
Apr 4 23:44:49 Gargoyle kern.info kernel: [ 6736.870000] input: IR-receiver inside an USB DVB receiver as /devices/platform/ehci-platform/usb1/1-1/rc/rc1/input1
Apr 4 23:44:49 Gargoyle kern.info kernel: [ 6736.880000] rc1: IR-receiver inside an USB DVB receiver as /devices/platform/ehci-platform/usb1/1-1/rc/rc1
Apr 4 23:44:49 Gargoyle kern.info kernel: [ 6736.890000] dvb-usb: schedule remote query interval to 250 msecs.
Apr 4 23:44:49 Gargoyle kern.info kernel: [ 6736.890000] dvb-usb: ITE 9135 Generic successfully initialized and connected.
Apr 4 23:44:49 Gargoyle kern.info kernel: [ 6736.900000] it913x: DEV registering device driver
Apr 4 23:44:49 Gargoyle kern.info kernel: [ 6736.910000] usbcore: registered new interface driver it913x

Uzupełnienie - RTL2832U (SDR)

Z tunerem Rafael Micro r820t


    # opkg install kmod-input-core kmod-video-core kmod-i2c-mux
    # insmod rc-core
    # insmod dvb-core
    # insmod dvb_usb_v2
    # insmod rtl2830
    # insmod rtl2832
    # insmod r820t
    # insmod dvb-usb-rtl28xxu



Mon Sep 21 20:32:07 2015 kern.info kernel: [ 356.400000] usb 1-1: dvb_usb_v2: found a 'Realtek RTL2832U reference design' in warm state
Mon Sep 21 20:32:07 2015 kern.info kernel: [ 356.470000] usb 1-1: dvb_usb_v2: will pass the complete MPEG2 transport stream to the software demuxer
Mon Sep 21 20:32:07 2015 kern.info kernel: [ 356.480000] DVB: registering new adapter (Realtek RTL2832U reference design)
Mon Sep 21 20:32:07 2015 kern.info kernel: [ 356.490000] i2c i2c-0: Added multiplexed i2c bus 1
Mon Sep 21 20:32:07 2015 kern.info kernel: [ 356.500000] i2c i2c-0: Added multiplexed i2c bus 2
Mon Sep 21 20:32:07 2015 kern.info kernel: [ 356.500000] usb 1-1: DVB: registering adapter 0 frontend 0 (Realtek RTL2832 (DVB-T))...
Mon Sep 21 20:32:07 2015 kern.info kernel: [ 356.510000] r820t 0-001a: creating new instance
Mon Sep 21 20:32:07 2015 kern.info kernel: [ 356.530000] r820t 0-001a: Rafael Micro r820t successfully identified
Mon Sep 21 20:32:07 2015 kern.info kernel: [ 356.540000] Registered IR keymap rc-empty
Mon Sep 21 20:32:07 2015 kern.info kernel: [ 356.550000] input: Realtek RTL2832U reference design as /devices/platform/ehci-platform/usb1/1-1/rc/rc0/input0
Mon Sep 21 20:32:07 2015 kern.info kernel: [ 356.560000] rc0: Realtek RTL2832U reference design as /devices/platform/ehci-platform/usb1/1-1/rc/rc0
Mon Sep 21 20:32:07 2015 kern.info kernel: [ 356.580000] usb 1-1: dvb_usb_v2: schedule remote query interval to 400 msecs
Mon Sep 21 20:32:07 2015 kern.info kernel: [ 356.600000] usb 1-1: dvb_usb_v2: 'Realtek RTL2832U reference design' successfully initialized and connected
Mon Sep 21 20:32:07 2015 kern.info kernel: [ 356.610000] usbcore: registered new interface driver dvb_usb_rtl28xxu