Asus U3100 Mini plus USB 2.0 DVB-T tuner

Asus U3100 Mini plus USB 2.0 DVB-T tuner
      25.8.2012 Na radioburze v Holicích jsem zahlédl v záplavě různého PC šrotu mimo jiné i hromádku těchto TV tunerů po 50-koruně, no nekupte to! Tak jsem si jeden kousek vzal. Při troše štěstí by mohl jít použít na projekt Osmocom SDR, což se však po rozebrání a ohledání chipsetu nepotvrdilo, tak alespoň poslouží k notebooku na DVB-T. Instalace pod Windows je přímočará. Stačí nainstalovat ovladač od Asusu a nějakou televizní aplikaci, např. SmartDVB nebo DVB Dream, naladit stanice a jedem. Dokonce není ani potřeba instalovat speciální aplikaci. S menším komfortem postačí i multimediální přehrávač VLC 2.x, kde v menu "Média|Otevřít zachytávací zařízení" vybereme kartu "Zachytávací zařízení" a z nabídky "Režim snímání" vybereme položku "TV (digitální)" a zaklikneme butonek "Systém příjmu" na "DVB-T". Pak už jen stačí do pole "Možnosti|Transponder/multiplex frequency" napsat příslušnou frekvenci multiplexu (VLC neumí automaticky ladit, ale seznam DVB-T vysílačů najdete zde), např. 770000 kHz a kliknout na tlačítko "Přehrát".

Asus U3100 Mini plus PCB top Asus U3100 Mini plus PCB bottom

      Pro mě však byla výzva zkusit rozchodit tuner pod Linuxem - zde zatím nemám s tunery žádné zkušenosti. Na Linux TV jsem našel krátký popis k Asus U3100 Mini plus a odkaz na kernel driver patch - tento tuner zatím není v současné verzi kernelu 3.6 plně podporován. Jak jsem záhy zjistil, patch je použitelný pouze pro starší jádra 2.6.x (v novějším kernelu 3.x je úplně jiná adresářová struktura tunerových driverů a patch nelze aplikovat). Kontaktoval jsem proto Olivera, který mě nasměroval na GIT repozitář beta kernelu 3.7, kam byla nedávno podpora tohoto tuneru přidána. V mém případě bylo ještě potřeba provést malou úpravu zdrojového kódu (zřejmě jen pro některé verze tohoto tuneru). Díky Oliverovi za podporu. Sepsal jsem zde stručný návod, jak tuner rozchodit v Debian Linuxu. Od uživatelů předpokládám základní znalost kompilace a instalace jádra.

1) Stáhni si GIT repozitář beta verze kernelu 3.7 (nenechte se zmást, že se tváří jako verze 3.6) z linuxtv.org: git clone git://linuxtv.org/anttip/media_tree.git Pokud nemáš GIT, nainstaluj ho: apt-get install git

2) Vylistuj všechny větve z repozitáře (v adresáři se staženými soubory): git branch -a

3) Vyber nejnovější větev, v mém případě: git checkout for_v3.7-bugfix-dvb_usb_v2 Přehled verzí je na webu zde.

4) Najdi zdrojový soubor fc2580.c a hledej řetězec "switch (chip_id)" (u mě na řádku 497). Přidej do kódu další řádek "case 0xff:", takže výsledek bude vypadat takto:

switch (chip_id) {
  case 0x56:
  case 0x5a:
  case 0xff: // add this ID
break;

5) Nakopíruj do top adresáře stažených zdrojáků konfigurák od svého předchozího kernelu. Lze ho najít např. v /boot/config-x.y.z nebo zabalený v /proc/config.gz (přejmenuj ho na .config). Spusť konfiguraci kernelu podle svých preferencí, já pouštím konzolový make menuconfig. K tomu je potřeba mít nainstalované gcc, make a libncurses5-dev.

6) V konfiguraci zapni podporu digitální televize: "Device Drivers|Multimedia support|Digital TV support" a vyber potřebné (nebo všechny) moduly pro zařízení "Device Drivers|Multimedia support|Media USB Adapters|Support for various USB DVB devices v2|Afatech AF9035 DVB-T USB 2.0 support"

Linux kernel menuconfig

7) Ulož konfiguraci a spusť kompilaci kernelu. Já po kompilaci vždy vytvářím i .deb balíčky pro snadnou a opakovatelnou instalaci, k tomu je potřeba mít nainstalovaný balík kernel-package.
make -j3 bzImage
make -j3 modules
make-kpkg --bzimage --initrd binary

8) Pokud vše proběhlo OK, nainstaluj výsledné balíčky dpkg -i linux-image-3.6.0_3.6.0-10.00.Custom_i386.deb, dpkg -i linux-headers-3.6.0_3.6.0-10.00.Custom_i386.deb a aktualizuj svůj bootloader, aby se skutečně zavádělo nové jádro. Restartuj počítač.

9) Do adresáře /lib/firmware/ ulož soubor s firmwarem tuneru dvb-usb-af9035-02.fw

10) Nyní zkus připojit tuner do USB, měl by na okamžik modře bliknout (upload firmware) a na konzoli vypsat něco jako:

usb 1-7: new high-speed USB device number 2 using ehci_hcd
input: Afa Technologies Inc. AF9035A USB Device as /devices/pci0000:00/0000:00:1d.7/usb1/1-7/1-7:1.1/input/input5
hid-generic 0003:0B05:1779.0001: input,hidraw0: USB HID v1.01 Keyboard [Afa Technologies Inc. AF9035A USB Device] on usb-0000:00:1d.7-7/input1
usbcore: registered new interface driver dvb_usb_af9035
usb 1-7: dvb_usb_v2: found a 'Asus U3100Mini Plus' in cold state
usb 1-7: dvb_usb_v2: downloading firmware from file 'dvb-usb-af9035-02.fw'
usb 1-7: dvb_usb_af9035: firmware version=12.13.15.0
usb 1-7: dvb_usb_v2: found a 'Asus U3100Mini Plus' in warm state
usb 1-7: dvb_usb_v2: will pass the complete MPEG2 transport stream to the software demuxer
DVB: registering new adapter (Asus U3100Mini Plus)
i2c i2c-2: af9033: firmware version: LINK=12.13.15.0 OFDM=6.20.15.0
usb 1-7: DVB: registering adapter 0 frontend 0 (Afatech AF9033 (DVB-T))...
i2c i2c-2: fc2580: FCI FC2580 successfully identified
usb 1-7: dvb_usb_v2: 'Asus U3100Mini Plus' successfully initialized and connected

11) Pokud proběhla detekce a inicializace v pořádku, pokračuj dál instalací apt-get install dvb-apps , případně dalších TV aplikací/přehrávačů dle osobního výběru (Kaffeine, xine, ...). Já si vystačím s mplayerem.

12) Připoj vhodnou anténu (mě stačil jen kousek oholeného koaxu s SMB konektorem od vadné GPS antény, protože tu mám celkem silný signál) a zkus naladit programy: scan /usr/share/dvb/dvb-t/cz-All >/channels.conf V průběhu ladění se budou vypisovat informace o nalezených multiplexech a programech:

...
WARNING: >>> tuning failed!!!
>>> tune to: 786000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE
0x0000 0x0304: pmt_pid 0x0000 CDG -- Prima LOVE (running)
0x0000 0x0401: pmt_pid 0x0000 CDG -- Ocko (running)
0x0000 0x0601: pmt_pid 0x0000 CDG -- Petka (running)
0x0000 0x4301: pmt_pid 0x0000 CDG -- Proglas (running)
Network Name 'Sit 3-Czech Digital Group'
>>> tune to: 794000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE
WARNING: >>> tuning failed!!!
...
dumping lists (4 services)
Prima LOVE:786000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:513:514:772
Ocko:786000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:1281:1282:1025
Petka:786000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:2049:2050:1537
Proglas:786000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_AUTO:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:0:4097:17153
Done.

13) Nově vytvořený soubor /channels.conf přesuň do adresáře /etc/mplayer/

14) Spusť mplayer dvb:// -vf pp=lb a měl by se po pár vteřinách načítání objevit obraz. Mezi jednotlivými programy lze přepínat stiskem kláves [h] a [k]. Případně lze spustit maplyer s názvem stanice, např. mplayer dvb://Ocko -vf pp=lb (parametr -vf pp=lb slouží pro deinterlacing videa, aby při rychlých pohybech "neproužkovalo").

      23.12.2013 jsem upgradoval jádro na debianí verzi 3.12.6, která už obsahuje driver pro tuner U3100, nicméně stále je třeba ručně upravit soubor fc2580.c dle bodu 4) výše, další postup stejný. V nové verzi jádra je též integrovaný funkční driver pro DVB-T tunery s čipem Realtek RTL2832U (jeden jsem si koupil na experimenty se SDR). Oba tunery mi nyní fungují.



Zpět

Aktualizováno 25.12.2013 v 21:57

Sportovní výživa a posilovací stroje Ronnie.cz