Portál AbcLinuxu, 26. dubna 2024 11:27

LifeView FlyTV Express X1 MST-T2A2

Podpora: částečná
Ovladač: dodává někdo jiný

Technické parametry

Philips SAA7162E/G
2x TDA10046A

2x DVB-T/Analog tuner
2x koaxiální vstup, S-Video & kompozitní vstup

Identifikace pod Linuxem

03:00.0 Multimedia controller: Philips Semiconductors SAA7162
nebo také Pinnacle PCTV 3010iX
	Subsystem: Animation Technologies Inc. Device 0820
	Flags: bus master, fast devsel, latency 0, IRQ 16
	Memory at dbf00000 (64-bit, non-prefetchable) [size=1M]
	Capabilities: [40] MSI: Enable- Count=1/32 Maskable- 64bit+
	Capabilities: [50] Express Endpoint, MSI 00
	Capabilities: [74] Power Management version 2
	Capabilities: [80] Vendor Specific Information: Len=50 <?>
	Capabilities: [100] Vendor Specific Information: ID=0000 Rev=0 Len=088 <?>

Postup zprovoznění pod Linuxem

Varovani: Tento navod prozatim nefunguje, resp. i pres uspesnou kompilaci ovladacu nebudete schopni prijimat televizni signal.

Poznámka: Tento návod není zrovna jednoduchý. Čtěte pozorně. Návod vyžaduje kompilaci ovladačů. Minimum je sada nástrojů pro kompilaci jádra.
  1. Stáhněte si zdrojový kód ovladače a někam jej rozbalte. Vytvoří se složka saa716x-šílenost.
  2. Nainstalujte Mercurial (nejlépe ze zdrojů distribuce) a v terminálu proveďte checkout repozitáře v4l-dvb:
    $ hg clone http://linuxtv.org/hg/v4l-dvb
    Vaše kopie repozitáře se nachází ve složce v4l-dvb.
  3. Ze zdrojového kódu ovladače zkopírujte složku linux/drivers/media/common/saa716x/ do v4l-dvb/linux/drivers/media/common/ (do vaší kopie repozitáře v4l-dvb)
    $ cp -r saa716x-*/linux/drivers/media/common/saa716x v4l-dvb/linux/drivers/media/common/
  4. Upravte soubor Kconfig ve složce v4l-dvb/linux/drivers/media/:
      #
      # DVB adapters
      #
      
      source "drivers/media/dvb/Kconfig"
    + source "drivers/media/common/saa716x/Kconfig"
    
      config DAB
  5. Upravte soubor Makefile ve složce v4l-dvb/linux/drivers/media/common/:
      obj-y += tuners/
      obj-$(CONFIG_VIDEO_SAA7146) += saa7146.o
      obj-$(CONFIG_VIDEO_SAA7146_VV) += saa7146_vv.o
    + obj-$(CONFIG_SAA716X_CORE) += saa716x/
  6. Spusťte příkaz /sbin/lspci -nnv a najděte položku s TV kartou:
    03:00.0 Multimedia controller [0480]: Philips Semiconductors SAA7162 [1131:7162]
    	Subsystem: Animation Technologies Inc. Device [id1:id2]
    
    Zapište si někam hodnoty id1 a id2.
  7. Upravte soubor v4l-dvb/linux/drivers/media/common/saa716x/saa716x_hybrid.c:
      static struct pci_device_id saa716x_hybrid_pci_table[] = {
      
    	MAKE_ENTRY(TWINHAN_TECHNOLOGIES, TWINHAN_VP_6090, SAA7162, &saa716x_vp6090_config),
    	MAKE_ENTRY(NXP_REFERENCE_BOARD, PCI_ANY_ID, SAA7162, &saa716x_atlantis_config),
    +	MAKE_ENTRY(0xid1, 0xid2, SAA7162, &saa716x_atlantis_config),
    	MAKE_ENTRY(NXP_REFERENCE_BOARD, PCI_ANY_ID, SAA7160, &saa716x_nemo_config),
    	MAKE_ENTRY(AVERMEDIA, AVERMEDIA_HC82, SAA7160, &saa716x_averhc82_config),
    	MAKE_ENTRY(AVERMEDIA, AVERMEDIA_H788, SAA7160, &saa716x_averh788_config),
    	{ }
    };
    Za id1 a id2 dosaďte hodnoty z příkazu lspci. Případně můžete v hlavičkovém souboru (stejné jméno, přípona .h) nadefinovat konstanty a ve zdrojovém kódu nahradit 0xČíslo jejich jmény.
  8. Přejděte do adresáře v4l-dvb a spusťte make menuconfig:
    $ cd v4l-dvb
    $ make menuconfig
    Nastavte tučně vyznačené volby takto (ostatní nechte tak jak jsou):
    <M> Multimedia support  --->
        [*]   Support for SAA716x family from NXP/Philips  --->
            --- Support for SAA716x family from NXP/Philips
            <M>   SAA7160/1/2 PCI Express bridge based devices  
            <M>     SAA7160/1/2 based Budget PCIe cards (DVB only)
            <M>     SAA7160/1/2 based Hybrid PCIe cards (DVB + Analog)
            < >     SAA7160/1/2 based Full Fledged PCIe cards
    "Vyexitujte" a uložte nastavení.
  9. Zkontrolujte, zda máte nainstalované zdrojáky kernelu nebo alespoň hlavičkové soubory. Zkompilujte a jako root nainstalujte moduly do jádra:
    $ make
    
    $ sudo make install
    případně
    $ su
    $ make install
    
  10. Okamžik pravdy :-) Zaveďte modul saa716x_hybrid do jádra (jako root) a nechte si vypsat chybové hlášky z dmesg:
    $ sudo modprobe -v saa716x_hybrid
    $ dmesg | tail
    
    Výstup z dmesg bude, pokud máte štěstí, vypadat asi takto:
    SAA716x Hybrid 0000:03:00.0: PCI INT A disabled
    SAA716x Hybrid 0000:03:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
    SAA716x Hybrid 0000:03:00.0: setting latency timer to 64
    DVB: registering new adapter (SAA716x dvb adapter)
    DVB: registering adapter 0 frontend 0 (Philips TDA10046H DVB-T)...
    DVB: registering new adapter (SAA716x dvb adapter)
    
    Zde mohou nastat (a zřejmě nastanou) chyby: buď se nevypíše nic-špatné nastavení místo DVB: registering adapter 0... můžete dostat chybu typu
    tda1004x: Invalid tda1004x ID = 0xčíslo. Can't proceed
    
    Musíme znovu upravit zdrojový kód. Zapište si ID z výpisu a upravte soubor v4l-dvb/linux/drivers/media/dvb/frontends/tda1004x.c:
    Přejděte na řádek 1360. Kolem tohoto řádku najdete:
            if (id != 0x46) {
                    printk(KERN_ERR "Invalid tda1004x ID = 0x%02x. Can't proceed\n", id);
                    kfree(state);
                    return NULL;
            }
    
    Řádek if (id != 0x46) { upravte na:
    if (id != 0x46 && id != 0xČíslo) {
    Za Číslo dosaďte zapsanou hodnotu.
  11. Uložte, přejděte do složky v4l-dvb a znovu zkompilujte. Nainstalujte moduly a restartujte PC, případně odeberte moduly saa716x_hybrid, saa716x_core a tda1004x (poslední půjde pouze násilím).
  12. Po restartu zkuste znovu zavést modul:
    sudo modprobe saa716x_hybrid
    
    Je možné, že byl zaveden samovolně: zkontrolujeme dmesg na chybu:
    $ dmesg | grep -i saa
    $ dmesg | grep -i tda1004x
    
  13. Nyní už chybí jen firmware tda14006. To je věc, kterou momentálně nějak nezvládám a zároveň poslední věc, která mi chybí vyřešit, než karta půjde. Frontend už existuje, ale při skenu bez (a vlastně i s) firmwarem říká, že přijímač se na frekvenci nezafixoval. Dmesg výpis:
    tda1004x: timeout waiting for DSP ready
    tda1004x: found firmware revision 0 -- invalid
    tda1004x: trying to boot from eeprom
    tda1004x: timeout waiting for DSP ready
    tda1004x: found firmware revision 0 -- invalid
    tda1004x: waiting for firmware upload...
    SAA716x Hybrid 0000:03:00.0: firmware: requesting dvb-fe-tda10046.fw
    tda1004x: timeout waiting for DSP ready
    tda1004x: found firmware revision 0 -- invalid
    tda1004x: firmware upload failed
    
    Zkusím kontaktovat autora a případně jiné experty, jestli by náhodou neměli řešení této šlamastiky. Kdybyste na něco přišli, klidně návod upravte.

Poznámka

Driver by měl být funkční, funkčnost ovšem závisí na tda1004x frontendu. Uvedený postup by měl fungovat pro všechna zařízení s hybridním tunerem s čipsetem SAA7162. Případné chyby nejsou povětšinou v návodu zmíněny.

Dokument vytvořil: PaulosV, 2.7.2010 17:18 | Poslední úprava: PaulosV, 27.2.2011 15:09 | Historie změn | Zobrazeno: 1592×

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.