Hi, this is my first post to the list :) The 1st patch adds support for the LifeView FlyDVB-T and its remote control. However this card does not fully work, surely some parameters should be tweaked. Until I realized that tda10046 ignores the boot flag when a firmware EEPROM exists, I tried to force a firmware upload, using the one found in Lifeview recent driver (version 29 vs eeprom version 23), so the 2nd patch modifies get_dvb_firmware in order to get this tda10046 firmware (version 29) from lifeview's site. I'm not 100% sure it is for tda10046, it should be since its size almost matches the one got from technotrend, anyway here it is. The big advantage is that you need to get less than 300K against the 12MB bundle from Techntrend! One thing I would ask to Hartmut. You said in a post that EEPROM firmware upgrade is possibile... could you tell me/us how to do it? Ciao, Gianci - dmesg output: gianci:~$ dmesg ... Linux video capture interface: v1.00 saa7130/34: v4l2 driver version 0.2.14 loaded ACPI: PCI Interrupt 0000:00:0e.0[A] -> GSI 17 (level, low) -> IRQ 17 saa7134[0]: found at 0000:00:0e.0, rev: 1, irq: 17, latency: 32, mmio: 0xec000000 saa7134[0]: subsystem: 5168:0301, board: LifeView FlyDVB-T [card=85,autodetected] saa7134[0]: board init: gpio is 810004 input: saa7134 IR (LifeView FlyDVB-T) as /class/input/input3 saa7134[0]: i2c eeprom 00: 68 51 01 03 54 20 1c 00 43 43 a9 1c 55 d2 b2 92 saa7134[0]: i2c eeprom 10: 00 ff 86 0f ff 20 ff ff ff ff ff ff ff ff ff ff saa7134[0]: i2c eeprom 20: 01 40 01 02 03 ff 01 03 08 ff 01 08 ff ff ff ff saa7134[0]: i2c eeprom 30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff saa7134[0]: i2c eeprom 40: ff 1b 00 c0 ff 10 ff ff ff ff ff ff ff ff ff ff saa7134[0]: i2c eeprom 50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff saa7134[0]: i2c eeprom 60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff saa7134[0]: i2c eeprom 70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff saa7134[0]: registered device video0 [v4l2] saa7134[0]: registered device vbi0 DVB: registering new adapter (saa7134[0]). DVB: registering frontend 2 (Philips TDA10046H DVB-T)... - dvbtune output: gianci:~$ dvbtune -c 2 -f 474000 -gi 32 -qam 64 -cr AUTO -bw 8 -tm 8 tda1004x: setting up plls for 48MHz sampling clock tda1004x: found firmware revision 23 -- ok Using DVB card "Philips TDA10046H DVB-T" tuning DVB-T (in United Kingdom) to 474000000 Hz polling.... Getting frontend event FE_STATUS: polling.... Getting frontend event FE_STATUS: FE_HAS_SIGNAL FE_HAS_LOCK FE_HAS_CARRIER FE_HAS_VITERBI FE_HAS_SYNC Bit error rate: 131070 Signal strength: 50372 SNR: 0 FE_STATUS: FE_HAS_SIGNAL FE_HAS_LOCK FE_HAS_CARRIER FE_HAS_VITERBI FE_HAS_SYNC gianci:~$ dvbtune -c 2 -f 474000 -gi 32 -qam 64 -cr AUTO -bw 8 -tm 8 Using DVB card "Philips TDA10046H DVB-T" tuning DVB-T (in United Kingdom) to 474000000 Hz polling.... Getting frontend event FE_STATUS: polling.... Getting frontend event FE_STATUS: FE_HAS_SIGNAL FE_HAS_LOCK FE_HAS_CARRIER FE_HAS_VITERBI FE_HAS_SYNC Bit error rate: 46 Signal strength: 50372 SNR: 65535 FE_STATUS: FE_HAS_SIGNAL FE_HAS_LOCK FE_HAS_CARRIER FE_HAS_VITERBI FE_HAS_SYNC To get a positive SNR one must try to tune several times, but the signal is almost suddenly lost: - scan output gianci:~$ scan -a 2 -c using '/dev/dvb/adapter2/frontend0' and '/dev/dvb/adapter2/demux0' 0x0000 0x0001: pmt_pid 0x0100 MBone -- LA7 (running) 0x0000 0x0002: pmt_pid 0x0200 MBone -- MTV ITALIA (running) 0x0000 0x0003: pmt_pid 0x010a MBone -- MUSIC BOX ITALIA (running) 0x0000 0x0004: pmt_pid 0x08d0 MBone -- LA7 SPORT (running) 0x0000 0x0006: pmt_pid 0x0121 MBone -- LA7 Cartapiu' A (running) 0x0000 0x0007: pmt_pid 0x0124 MBone -- LA7 Cartapiu' B (running) 0x0000 0x0008: pmt_pid 0x0127 MBone -- LA7 Cartapiu' C (running) 0x0000 0x0009: pmt_pid 0x012a MBone -- LA7 Cartapiu' D (running) 0x0000 0x000a: pmt_pid 0x012d MBone -- LA7 Cartapiu' E (running) 0x0000 0x000b: pmt_pid 0x0130 MBone -- LA7 Cartapiu' attivazione (running, scrambled) 0x0000 0x000c: pmt_pid 0x011b MBone -- TELEMARKET (running) 0x0000 0x000f: pmt_pid 0x011e MBone -- LA7 Cartapiu' F (running) 0x0000 0x0015: pmt_pid 0x0020 MBone -- PRIMOCANALE (running) dumping lists (13 services) LA7 Cartapiu' B (0x0007) 01: PCR == V V 0x0145 A 0x0146 (ita) LA7 Cartapiu' C (0x0008) 01: PCR == V V 0x0145 A 0x0146 (ita) LA7 Cartapiu' D (0x0009) 01: PCR == V V 0x0145 A 0x0146 (ita) LA7 Cartapiu' E (0x000a) 01: PCR == V V 0x0145 A 0x0146 (ita) LA7 Cartapiu' A (0x0006) 01: PCR == V V 0x0145 A 0x0146 (ita) LA7 Cartapiu' attivazion (0x000b) 01: PCR 0x1fff V 0x0131 LA7 Cartapiu' F (0x000f) 01: PCR == V V 0x0145 A 0x0146 (ita) LA7 (0x0001) 01: PCR == V V 0x0101 A 0x0102 TT 0x0104 MTV ITALIA (0x0002) 01: PCR == V V 0x0201 A 0x0202 (ita) TT 0x0203 MUSIC BOX ITALIA (0x0003) 01: PCR == V V 0x010b A 0x010c TELEMARKET (0x000c) 01: PCR == V V 0x011c A 0x011d LA7 SPORT (0x0004) 01: PCR == V V 0x08d1 A 0x08d2 TT 0x08d4 PRIMOCANALE (0x0015) 01: PCR == V V 0x0115 A 0x0116 Done. gianci:~$ scan -a 2 -c using '/dev/dvb/adapter2/frontend0' and '/dev/dvb/adapter2/demux0' WARNING: filter timeout pid 0x0011 WARNING: filter timeout pid 0x0000 dumping lists (0 services) - lspci -vv output: 0000:00:0e.0 Multimedia controller: Philips Semiconductors SAA7134 (rev 01) Subsystem: Animation Technologies Inc.: Unknown device 0301 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- Latency: 32 (21000ns min, 8000ns max) Interrupt: pin A routed to IRQ 17 Region 0: Memory at ec000000 (32-bit, non-prefetchable) [size=1K] Capabilities: [40] Power Management version 1 Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-) Status: D0 PME-Enable- DSel=0 DScale=1 PME- -------------- next part -------------- Index: saa7134-cards.c =================================================================== RCS file: /cvs/video4linux/v4l-dvb/linux/drivers/media/video/saa7134/saa7134-cards.c,v retrieving revision 1.122 diff -u -b -B -w -p -u -r1.122 saa7134-cards.c --- saa7134-cards.c 10 Jan 2006 19:57:26 -0000 1.122 +++ saa7134-cards.c 14 Jan 2006 12:47:19 -0000 @@ -2624,6 +2624,27 @@ struct saa7134_board saa7134_boards[] = .gpio = 0x000000, /* GPIO21=Low for FM radio antenna */ }, }, + [SAA7134_BOARD_FLYDVBT] = { + /* LifeView FlyDVB-T */ + /* Giampiero Giancipoli <gianci@xxxxxxxxx> */ + .name = "LifeView FlyDVB-T", + .audio_clock = 0x00200000, + .tuner_type = TUNER_ABSENT, + .radio_type = UNSET, + .tuner_addr = ADDR_UNSET, + .radio_addr = ADDR_UNSET, + .mpeg = SAA7134_MPEG_DVB, + .inputs = {{ + .name = name_comp1, /* Composite input */ + .vmux = 3, + .amux = LINE1, + },{ + .name = name_svideo, /* S-Video signal on S-Video input */ + .vmux = 8, + .amux = LINE1, + }}, + }, + }; const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards); @@ -2943,6 +2964,12 @@ struct pci_device_id saa7134_pci_tbl[] = .driver_data = SAA7134_BOARD_FLYDVBTDUO, },{ .vendor = PCI_VENDOR_ID_PHILIPS, + .device = PCI_DEVICE_ID_PHILIPS_SAA7134, + .subvendor = 0x5168, + .subdevice = 0x0301, + .driver_data = SAA7134_BOARD_FLYDVBT, + },{ + .vendor = PCI_VENDOR_ID_PHILIPS, .device = PCI_DEVICE_ID_PHILIPS_SAA7133, .subvendor = 0x1461, /* Avermedia Technologies Inc */ .subdevice = 0xf31f, @@ -3199,6 +3226,7 @@ int saa7134_board_init1(struct saa7134_d break; case SAA7134_BOARD_FLYTVPLATINUM_MINI2: case SAA7134_BOARD_FLYTVPLATINUM_FM: + case SAA7134_BOARD_FLYDVBT: case SAA7134_BOARD_CINERGY400: case SAA7134_BOARD_CINERGY600: case SAA7134_BOARD_CINERGY600_MK3: Index: saa7134-dvb.c =================================================================== RCS file: /cvs/video4linux/v4l-dvb/linux/drivers/media/video/saa7134/saa7134-dvb.c,v retrieving revision 1.37 diff -u -b -B -w -p -u -r1.37 saa7134-dvb.c --- saa7134-dvb.c 1 Jan 2006 17:17:39 -0000 1.37 +++ saa7134-dvb.c 14 Jan 2006 12:47:23 -0000 @@ -859,6 +859,11 @@ static int dvb_init(struct saa7134_dev * dev->dvb.frontend = tda10046_attach(&philips_tu1216_60_config, &dev->i2c_adap); break; + + case SAA7134_BOARD_FLYDVBT: + dev->dvb.frontend = tda10046_attach(&tda827x_flydvbt_config, + &dev->i2c_adap); + break; case SAA7134_BOARD_FLYDVBTDUO: dev->dvb.frontend = tda10046_attach(&tda827x_lifeview_config, &dev->i2c_adap); Index: saa7134-input.c =================================================================== RCS file: /cvs/video4linux/v4l-dvb/linux/drivers/media/video/saa7134/saa7134-input.c,v retrieving revision 1.49 diff -u -b -B -w -p -u -r1.49 saa7134-input.c --- saa7134-input.c 9 Jan 2006 18:39:50 -0000 1.49 +++ saa7134-input.c 14 Jan 2006 12:47:26 -0000 @@ -74,7 +74,6 @@ static IR_KEYTAB_TYPE flyvideo_codes[IR_ [ 16 ] = KEY_ENTER, // Enter }; -#if 0 static IR_KEYTAB_TYPE flydvb_codes[IR_KEYTAB_SIZE] = { [ 1 ] = KEY_ZOOM, // Full Screen [ 0 ] = KEY_POWER, // Power @@ -113,7 +112,6 @@ static IR_KEYTAB_TYPE flydvb_codes[IR_KE [ 17 ] = KEY_STOP, // Stop [ 14 ] = KEY_NEXT, // End >>| }; -#endif static IR_KEYTAB_TYPE cinergy_codes[IR_KEYTAB_SIZE] = { [ 0 ] = KEY_KP0, @@ -683,6 +681,11 @@ int saa7134_input_init1(struct saa7134_d mask_keycode = 0xEC00000; mask_keydown = 0x0040000; break; + case SAA7134_BOARD_FLYDVBT: + ir_codes = flydvb_codes; + mask_keycode = 0x0001F00; + mask_keydown = 0x0040000; + break; case SAA7134_BOARD_CINERGY400: case SAA7134_BOARD_CINERGY600: case SAA7134_BOARD_CINERGY600_MK3: Index: saa7134.h =================================================================== RCS file: /cvs/video4linux/v4l-dvb/linux/drivers/media/video/saa7134/saa7134.h,v retrieving revision 1.88 diff -u -b -B -w -p -u -r1.88 saa7134.h --- saa7134.h 4 Jan 2006 13:30:55 -0000 1.88 +++ saa7134.h 14 Jan 2006 12:47:29 -0000 @@ -218,6 +218,7 @@ struct saa7134_format { #define SAA7134_BOARD_MSI_TVATANYWHERE_PLUS 82 #define SAA7134_BOARD_CINERGY250PCI 83 #define SAA7134_BOARD_FLYDVB_TRIO 84 +#define SAA7134_BOARD_FLYDVBT 85 #define SAA7134_MAXBOARDS 8 #define SAA7134_INPUT_MAX 8 -------------- next part -------------- --- /home/gianci/cvs/v4l-dvb/linux/Documentation/dvb/get_dvb_firmware 2006-01-09 22:44:19.000000000 +0100 +++ get_dvb_firmware 2006-01-14 13:31:38.000000000 +0100 @@ -109,9 +109,9 @@ } sub tda10046 { - my $sourcefile = "tt_budget_217g.zip"; - my $url = "http://www.technotrend.de/new/217g/$sourcefile"; - my $hash = "6a7e1e2f2644b162ff0502367553c72d"; + my $sourcefile = "Drv_2.11.02.zip"; + my $url = "http://www.lifeview.com.tw/drivers/pci_card/FlyDVB-T/$sourcefile"; + my $hash = "1ea24dee4eea8fe971686981f34fd2e0"; my $outfile = "dvb-fe-tda10046.fw"; my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); @@ -119,7 +119,7 @@ wgetfile($sourcefile, $url); unzip($sourcefile, $tmpdir); - extract("$tmpdir/software/OEM/PCI/App/ttlcdacc.dll", 0x3f731, 24478, "$tmpdir/fwtmp"); + extract("$tmpdir/LVHybrid.sys", 0x8b088, 24602, "$tmpdir/fwtmp"); verify("$tmpdir/fwtmp", $hash); copy("$tmpdir/fwtmp", $outfile);