22 Febbraio, 2012, 19:34:22 *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
Notizia: Eletto il nuovo Consiglio della Comunità italiana di Ubuntu. Per maggiori informazioni, consultare l'annuncio.
 
   Indice   FAQ Aiuto Regolamento Ricerca Accedi Registrati  

Guide
Hardware   •   Stampa, fax, scanner
Wiki
Hardware   •   Video   •   Dispositivi Partizioni   •   Modem   •   Senza Fili   •   Stampanti, Scanner
Pagine: [1]   Vai giù
  Stampa  
Autore Discussione: [Risolto] dvbt usb su lucid lynks  (Letto 2094 volte)
0 Utenti e 1 Utente non registrato stanno visualizzando questa discussione.
redtag
Novello Novizio

Non Connesso Non Connesso

Sesso: Maschio
Messaggi: 178

Media messaggi


Mostra profilo
« inserita: 03 Giugno, 2010, 23:32:46 »

Ho un dvbt usb che ho già installato su ubuntu 9.10 e funzionava bene.

(Bus 001 Device 002: ID 15a4:9016 Afatech Technologies, Inc. AF9015 DVB-T USB2.0)

Seguendo la stessa procedura, suggerita da Xgaz, con lucid lynks non sono riuscito farla funzionare.
Fra l'altro non riesco più a cancellare i driver vecchi per ripetere l'installazione.
Questo è il risultato quando tento di eliminarli.
grazie a tutti


mimmo@mimmo-desktop:~$ cd af9015
mimmo@mimmo-desktop:~/af9015$ sudo make clean
[sudo] password for mimmo:
make -C /home/mimmo/af9015/v4l clean
make[1]: ingresso nella directory «/home/mimmo/af9015/v4l»
No version yet, using 2.6.32-22-generic
make[1]: uscita dalla directory «/home/mimmo/af9015/v4l»
make[1]: ingresso nella directory «/home/mimmo/af9015/v4l»
rm -f *~ *.o *.ko .*.o.cmd .*.ko.cmd *.mod.c av7110_firm.h fdump \
      config-compat.h Module.symvers Module.markers modules.order
make -C firmware clean
make[2]: Entering directory `/home/mimmo/af9015/v4l/firmware'
rm -f ihex2fw
rm -f vicam/firmware.fw dabusb/firmware.fw dabusb/bitstream.bin ttusb-budget/dspbootcode.bin cpia2/stv0672_vp4.bin av7110/bootcode.bin
make[2]: Leaving directory `/home/mimmo/af9015/v4l/firmware'
make -C ../media-specs clean
make[2]: Entering directory `/home/mimmo/af9015/media-specs'
rm -f *.stamp
rm -f videodev2.h.xml
rm -f capture.c.xml
rm -f v4l2grab.c.xml
rm -f keytable.c.xml
rm -f media.aux media.log media.out
rm -f capture
rm -f media-indices.tmpl media-entities.tmpl
rm -rf media media-single media.pdf
rm -rf media.xml v4l dvb
make[2]: Leaving directory `/home/mimmo/af9015/media-specs'
make[1]: uscita dalla directory «/home/mimmo/af9015/v4l»
mimmo@mimmo-desktop:~/af9015$ sudo make distclean
make -C /home/mimmo/af9015/v4l distclean
make[1]: ingresso nella directory «/home/mimmo/af9015/v4l»
rm -f *~ *.o *.ko .*.o.cmd .*.ko.cmd *.mod.c av7110_firm.h fdump \
      config-compat.h Module.symvers Module.markers modules.order
make -C firmware clean
make[2]: Entering directory `/home/mimmo/af9015/v4l/firmware'
rm -f ihex2fw
rm -f vicam/firmware.fw dabusb/firmware.fw dabusb/bitstream.bin ttusb-budget/dspbootcode.bin cpia2/stv0672_vp4.bin av7110/bootcode.bin
make[2]: Leaving directory `/home/mimmo/af9015/v4l/firmware'
make -C ../media-specs clean
make[2]: Entering directory `/home/mimmo/af9015/media-specs'
rm -f *.stamp
rm -f videodev2.h.xml
rm -f capture.c.xml
rm -f v4l2grab.c.xml
rm -f keytable.c.xml
rm -f media.aux media.log media.out
rm -f capture
rm -f media-indices.tmpl media-entities.tmpl
rm -rf media media-single media.pdf
rm -rf media.xml v4l dvb
make[2]: Leaving directory `/home/mimmo/af9015/media-specs'
rm -f .version .*.o.flags .*.o.d Makefile.media \
      Kconfig Kconfig.kern .config .config.cmd .myconfig \
      .kconfig.dep
rm -rf .tmp_versions .tmp*.ver .tmp*.o
rm -f scripts/lxdialog scripts/kconfig oss
make -C firmware distclean
make[2]: Entering directory `/home/mimmo/af9015/v4l/firmware'
rm -f ihex2fw
rm -f vicam/firmware.fw dabusb/firmware.fw dabusb/bitstream.bin ttusb-budget/dspbootcode.bin cpia2/stv0672_vp4.bin av7110/bootcode.bin
for i in av7110/ cpia2/ dabusb/ ttusb-budget/ vicam/; do if [ -d $i ]; then rm -rf $i; fi; done
make[2]: Leaving directory `/home/mimmo/af9015/v4l/firmware'
make -C ../media-specs distclean
make[2]: Entering directory `/home/mimmo/af9015/media-specs'
rm -f *.stamp
rm -f videodev2.h.xml
rm -f capture.c.xml
rm -f v4l2grab.c.xml
rm -f keytable.c.xml
rm -f media.aux media.log media.out
rm -f capture
rm -f media-indices.tmpl media-entities.tmpl
rm -rf media media-single media.pdf
rm -rf media.xml v4l dvb
make[2]: Leaving directory `/home/mimmo/af9015/media-specs'
make[1]: uscita dalla directory «/home/mimmo/af9015/v4l»
mimmo@mimmo-desktop:~/af9015$ cd ~/ && rm -R af9015
rm: entrare nella directory protetta dalla scrittura `af9015'? y
rm: rimuovere il file regolare protetto dalla scrittura `af9015/README.patches'? y
rm: impossibile rimuovere `af9015/README.patches': Permesso negato
rm: rimuovere il file regolare protetto dalla scrittura `af9015/COPYING'? y
rm: impossibile rimuovere `af9015/COPYING': Permesso negato
rm: rimuovere il file regolare protetto dalla scrittura `af9015/.hgtags'? y
rm: impossibile rimuovere `af9015/.hgtags': Permesso negato
rm: rimuovere il file regolare protetto dalla scrittura `af9015/mailimport'? y
rm: impossibile rimuovere `af9015/mailimport': Permesso negato
rm: rimuovere il file regolare protetto dalla scrittura `af9015/hgimport'? y
rm: impossibile rimuovere `af9015/hgimport': Permesso negato
rm: entrare nella directory protetta dalla scrittura `af9015/v4l'? y
rm: rimuovere il file regolare protetto dalla scrittura `af9015/v4l/compat.h'? y
rm: impossibile rimuovere `af9015/v4l/compat.h': Permesso negato
rm: rimuovere il file regolare protetto dalla scrittura `af9015/v4l/Makefile.sound'? y
rm: impossibile rimuovere `af9015/v4l/Makefile.sound': Permesso negato
rm: entrare nella directory protetta dalla scrittura `af9015/v4l/scripts'? y

« Ultima modifica: 06 Giugno, 2010, 23:48:08 da redtag » Registrato
giorgio130
Novello Novizio

Non Connesso Non Connesso

Sesso: Maschio
Messaggi: 292

Media messaggi



Mostra profilo
« Risposta #1 inserita: 04 Giugno, 2010, 11:40:44 »

mimmo@mimmo-desktop:~/af9015$ cd ~/ && rm -R af9015

cambialo con:

cd ~/ && sudo rm -R af9015
Registrato

Chuck Norris te lo dice: guarda i miei video su youtube!
http://www.youtube.com/giorgio130
blog neonato: http://pensieriacoriandoli.blogspot.com/ commentate!!
Xgaz
Entusiasta Emergente
**
Non Connesso Non Connesso

Sesso: Maschio
Messaggi: 2.318

Media messaggi


Ubuntu User # 30141


Mostra profilo WWW
« Risposta #2 inserita: 04 Giugno, 2010, 16:40:16 »

Meglio ancora (per non rischiare errori di copiatura):
Codice:
cd
Codice:
sudo rm -R af9015

Poi, quando ripeti l'operazione di compilazione, se il make ti da errori, posta le righe che ti danno errore.

Se proprio non va proviamo la patch di valerio993 : http://forum.ubuntu-it.org/index.php/topic,366156.msg3004642.html#msg3004642

Registrato
redtag
Novello Novizio

Non Connesso Non Connesso

Sesso: Maschio
Messaggi: 178

Media messaggi


Mostra profilo
« Risposta #3 inserita: 04 Giugno, 2010, 21:25:13 »

Niente da fare.....questo è quanto

mimmo@mimmo-desktop:~$ tar xjvf af9015-37ff78330942.tar.bz2
tar: af9015-37ff78330942.tar.bz2: funzione "open" non riuscita: Nessun file o directory
tar: Errore irrimediabile: uscita immediata
tar: Child returned status 2
tar: Uscita con stato di fallimento in base agli errori precedenti
mimmo@mimmo-desktop:~$

Ho scaricato la patch e ho visto che si tratta di una cartella.
Cosa devo farne?
Forte la modifica alla chiavetta per la dispersione del calore di valerio993.
Registrato
Xgaz
Entusiasta Emergente
**
Non Connesso Non Connesso

Sesso: Maschio
Messaggi: 2318

Media messaggi


Ubuntu User # 30141


Mostra profilo WWW
« Risposta #4 inserita: 05 Giugno, 2010, 00:40:02 »

Niente da fare.....questo è quanto

mimmo@mimmo-desktop:~$ tar xjvf af9015-37ff78330942.tar.bz2
tar: af9015-37ff78330942.tar.bz2: funzione "open" non riuscita: Nessun file o directory
tar: Errore irrimediabile: uscita immediata
tar: Child returned status 2
tar: Uscita con stato di fallimento in base agli errori precedenti
mimmo@mimmo-desktop:~$

Forse hai fatto un po di confusione  Roll Eyes probabilmente hai scaricato il driver evidenziato da valerio993 ma cerchi di decomprimere quello che avevo indicato io nella procedura  Grin

Facciamo così...rifacciamo tutto con la patch di valerio:

1) Scarica drivers:
Codice:
sudo wget http://linuxtv.org/hg/~anttip/af9015/archive/57e489f6538f.tar.gz

2) Decomprimili:
Codice:
tar -zxvf 57e489f6538f.tar.gz

3) Crea la patch:
Codice:
gedit ~/af901x-NXP-TDA18218.patch
e dentro copiaci tutto questo (fai copia/incolla):
Codice:
diff -r 0f41fd7df85d linux/drivers/media/common/tuners/Kconfig
--- a/linux/drivers/media/common/tuners/Kconfig Thu Feb 11 02:33:12 2010 +0200
+++ b/linux/drivers/media/common/tuners/Kconfig Thu Feb 25 17:21:11 2010 +0100
@@ -179,4 +179,11 @@ config MEDIA_TUNER_MAX2165
  help
    A driver for the silicon tuner MAX2165 from Maxim.
 
+config MEDIA_TUNER_TDA18218
+ tristate "NXP TDA18218 silicon tuner"
+ depends on VIDEO_MEDIA && I2C
+ default m if MEDIA_TUNER_CUSTOMISE
+ help
+   A driver for the silicon tuner TDA18218 from NXP.
+
 endif # MEDIA_TUNER_CUSTOMISE
diff -r 0f41fd7df85d linux/drivers/media/common/tuners/Makefile
--- a/linux/drivers/media/common/tuners/Makefile Thu Feb 11 02:33:12 2010 +0200
+++ b/linux/drivers/media/common/tuners/Makefile Thu Feb 25 17:21:11 2010 +0100
@@ -24,6 +24,7 @@ obj-$(CONFIG_MEDIA_TUNER_MXL5005S) += mxl5005s.o
 obj-$(CONFIG_MEDIA_TUNER_MXL5007T) += mxl5007t.o
 obj-$(CONFIG_MEDIA_TUNER_MC44S803) += mc44s803.o
 obj-$(CONFIG_MEDIA_TUNER_MAX2165) += max2165.o
+obj-$(CONFIG_MEDIA_TUNER_TDA18218) += tda18218.o
 
 EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core
 EXTRA_CFLAGS += -Idrivers/media/dvb/frontends
diff -r 0f41fd7df85d linux/drivers/media/common/tuners/tda18218.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/linux/drivers/media/common/tuners/tda18218.c Thu Feb 25 17:21:11 2010 +0100
@@ -0,0 +1,432 @@
+/*
+ *  Driver for NXP TDA18218 silicon tuner
+ *
+ *  Copyright (C) 2010 Lauris Ding <lding@gmx.de>
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#include "tda18218.h"
+#include "tda18218_priv.h"
+
+static int tda18218_write_reg(struct dvb_frontend *fe, u8 reg, u8 val)
+{
+ struct tda18218_priv *priv = fe->tuner_priv;
+ u8 buf[2] = { reg, val };
+ struct i2c_msg msg = { .addr = priv->cfg->i2c_address, .flags = 0,
+        .buf = buf, .len = 2 };
+ int ret;
+
+ if (fe->ops.i2c_gate_ctrl)
+ fe->ops.i2c_gate_ctrl(fe, 1);
+ /* write register */
+ ret = i2c_transfer(priv->i2c, &msg, 1);
+ if (fe->ops.i2c_gate_ctrl)
+ fe->ops.i2c_gate_ctrl(fe, 0);
+
+ if (ret != 1)
+ printk(KERN_WARNING "I2C write failed ret: %d reg: %02x\n", ret, reg);
+
+ return (ret == 1 ? 0 : ret);
+}
+
+static int tda18218_write_regs(struct dvb_frontend *fe, u8 reg,
+ u8 *val, u8 len)
+{
+ struct tda18218_priv *priv = fe->tuner_priv;
+ u8 buf[1+len];
+ struct i2c_msg msg = {
+ .addr = priv->cfg->i2c_address,
+ .flags = 0,
+ .len = sizeof(buf),
+ .buf = buf };
+
+ int ret;
+
+ buf[0] = reg;
+ memcpy(&buf[1], val, len);
+
+ if (fe->ops.i2c_gate_ctrl)
+ fe->ops.i2c_gate_ctrl(fe, 1);
+ ret = i2c_transfer(priv->i2c, &msg, 1);
+ if (fe->ops.i2c_gate_ctrl)
+ fe->ops.i2c_gate_ctrl(fe, 1);
+
+ if (ret != 1)
+ printk(KERN_WARNING "I2C write failed ret: %d reg: %02x len: %d\n", ret, reg, len);
+
+ return (ret == 1 ? 0 : ret);
+}
+
+static int tda18218_read_regs(struct dvb_frontend *fe)
+{
+ struct tda18218_priv *priv = fe->tuner_priv;
+ u8 *regs = priv->tda18218_regs;
+ u8 buf = 0x00;
+ int ret;
+ struct i2c_msg msg[] = {
+ { .addr = 0xc0, .flags = 0,
+   .buf = &buf, .len = 1 },
+ { .addr = 0xc0, .flags = I2C_M_RD,
+   .buf = regs, .len = 59 }
+ };
+
+ if (fe->ops.i2c_gate_ctrl)
+ fe->ops.i2c_gate_ctrl(fe, 1);
+
+ /* read all registers */
+ ret = i2c_transfer(priv->i2c, msg, 2);
+
+ if (fe->ops.i2c_gate_ctrl)
+ fe->ops.i2c_gate_ctrl(fe, 0);
+
+ if (ret != 2)
+ printk(KERN_WARNING "I2C read failed ret: %d\n", ret);
+
+ return (ret == 2 ? 0 : ret);
+}
+
+static int tda18218_set_params(struct dvb_frontend *fe, struct dvb_frontend_parameters *params)
+{
+ struct tda18218_priv *priv = fe->tuner_priv;
+ u8 *regs = priv->tda18218_regs;
+ u8 Fc, BP;
+ int i, ret;
+ u16 if1, bw;
+ u32 freq;
+
+ u8 paramsbuf[4][6] = {
+ { 0x03, 0x1a },
+ { 0x04, 0x0a },
+ { 0x01, 0x0f },
+ { 0x01, 0x0f },
+ };
+
+ u8 agcbuf[][2] = {
+ { 0x1a, 0x0e },
+ { 0x20, 0x60 },
+ { 0x23, 0x02 },
+ { 0x20, 0xa0 },
+ { 0x23, 0x09 },
+ { 0x20, 0xe0 },
+ { 0x23, 0x0c },
+ { 0x20, 0x40 },
+ { 0x23, 0x01 },
+ { 0x20, 0x80 },
+ { 0x23, 0x08 },
+ { 0x20, 0xc0 },
+ { 0x23, 0x0b },
+ { 0x24, 0x1c },
+ { 0x24, 0x0c },
+ };
+
+ switch (params->u.ofdm.bandwidth) {
+ case BANDWIDTH_6_MHZ:
+ bw = 6000;
+ Fc = 0;
+ break;
+ case BANDWIDTH_7_MHZ:
+ bw = 7000;
+ Fc = 1;
+ break;
+ case BANDWIDTH_8_MHZ:
+ bw = 8000;
+ Fc = 2;
+ break;
+ default:
+ printk(KERN_WARNING "Invalid bandwidth");
+ return -EINVAL;
+ }
+
+ if1 = bw / 2;
+
+ if((params->frequency >= 174000000) && (params->frequency < 188000000)) {
+ BP = 3;
+ }
+ else if((params->frequency >= 188000000) && (params->frequency < 253000000)) {
+ BP = 4;
+ }
+ else if((params->frequency >= 253000000) && (params->frequency < 343000000)) {
+ BP = 5;
+ }
+ else if((params->frequency >= 343000000) && (params->frequency <= 870000000)) {
+ BP = 6;
+ }
+ else {
+ printk(KERN_WARNING "Frequency out of range");
+ return -EINVAL;
+ }
+
+ freq = params->frequency;
+ freq /= 1000;
+ freq +=if1;
+ freq *= 16;
+
+ tda18218_read_regs(fe);
+
+ paramsbuf[0][2] = regs[0x1a] | BP;
+ paramsbuf[0][3] = regs[0x1b] & ~3;
+ paramsbuf[0][3] = regs[0x1b] | Fc;
+ paramsbuf[0][4] = regs[0x1c] | 0x0a;
+
+ paramsbuf[1][2] = freq >> 16;
+ paramsbuf[1][3] = freq >> 8;
+ paramsbuf[1][4] = (freq & 0xf0) | (regs[0x0c] & 0x0f);
+ paramsbuf[1][5] = 0xff;
+ paramsbuf[2][2] = regs[0x0f] | 0x40;
+ paramsbuf[3][2] = 0x09;
+
+ tda18218_write_reg(fe, 0x04, 0x03);
+
+ for(i = 0; i < ARRAY_SIZE(paramsbuf); i++) {
+
+ /* write registers */
+ ret = tda18218_write_regs(fe, paramsbuf[i][1], &paramsbuf[i][2], paramsbuf[i][0]);
+
+ if (ret)
+ goto error;
+ }
+ for(i = 0; i < ARRAY_SIZE(agcbuf); i++) {
+ tda18218_write_reg(fe, agcbuf[i][0], agcbuf[i][1]);
+ }
+
+ msleep(60);
+ i = 0;
+ while(i < 10) {
+ tda18218_read_regs(fe);
+ if((regs[0x01] & 0x60) == 0x60)
+ printk(KERN_INFO "We've got a lock!"); break;
+ msleep(20);
+ i++;
+ }
+
+ priv->bandwidth = params->u.ofdm.bandwidth;
+ priv->frequency = params->frequency;
+ return 0;
+error:
+ return ret;
+}
+
+static int tda18218_get_frequency(struct dvb_frontend *fe, u32 *frequency)
+{
+ struct tda18218_priv *priv = fe->tuner_priv;
+ *frequency = priv->frequency;
+ return 0;
+}
+
+static int tda18218_get_bandwidth(struct dvb_frontend *fe, u32 *bandwidth)
+{
+ struct tda18218_priv *priv = fe->tuner_priv;
+ *bandwidth = priv->bandwidth;
+ return 0;
+}
+
+static int tda18218_init(struct dvb_frontend *fe)
+{
+ int i;
+ int ret;
+
+ u8 initbuf[][18] = {
+ { 0x10, 0x05, 0x00, 0x00, 0xd0, 0x00, 0x40, 0x00, 0x00, 0x07, 0xff, 0x84, 0x09, 0x00, 0x13, 0x00, 0x00, 0x01 },
+ { 0x0b, 0x15, 0x84, 0x09, 0xf0, 0x19, 0x0a, 0x0e, 0x29, 0x98, 0x00, 0x00, 0x58 },
+ { 0x10, 0x24, 0x0c, 0x48, 0x85, 0xc9, 0xa7, 0x00, 0x00, 0x00, 0x30, 0x81, 0x80, 0x00, 0x39, 0x00, 0x8a, 0x00 },
+ { 0x07, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xf6 },
+ };
+
+ u8 initbuf2[4];
+
+ for(i = 0; i < ARRAY_SIZE(initbuf); i++) {
+ /* write registers */
+ ret = tda18218_write_regs(fe, initbuf[i][1], &initbuf[i][2], initbuf[i][0]);
+
+ if (ret != 0) {
+ printk(KERN_ERR "init: ERROR: i2c_transfer returned: %d\n", ret);
+ return -EREMOTEIO;
+ }
+ if(i == 1) {
+ tda18218_write_reg(fe, 0x22, 0x8c);
+ }
+ }
+
+ tda18218_write_reg(fe, 0x05, 0x80);
+ tda18218_write_reg(fe, 0x05, 0x00);
+ tda18218_write_reg(fe, 0x05, 0x20);
+ tda18218_write_reg(fe, 0x05, 0x00);
+ tda18218_write_reg(fe, 0x27, 0xde);
+ tda18218_write_reg(fe, 0x17, 0xf8);
+ tda18218_write_reg(fe, 0x18, 0x0f);
+ tda18218_write_reg(fe, 0x1c, 0x8b);
+ tda18218_write_reg(fe, 0x29, 0x02);
+ tda18218_write_reg(fe, 0x19, 0x1a);
+ tda18218_write_reg(fe, 0x11, 0x13);
+
+ initbuf2[0] = 0x0a;
+ initbuf2[1] = 0x5c;
+ initbuf2[2] = 0xc6;
+ initbuf2[3] = 0x07;
+ tda18218_write_regs(fe, initbuf2[0], &initbuf2[1], 3);
+ tda18218_write_reg(fe, 0x0f, 0x49);
+ tda18218_write_reg(fe, 0x05, 0x40);
+ tda18218_write_reg(fe, 0x05, 0x00);
+ tda18218_write_reg(fe, 0x05, 0x20);
+ tda18218_write_reg(fe, 0x11, 0xed);
+ tda18218_write_reg(fe, 0x0f, 0x49);
+ tda18218_write_reg(fe, 0x19, 0x2a);
+ tda18218_write_reg(fe, 0x05, 0x58);
+ tda18218_write_reg(fe, 0x05, 0x18);
+ tda18218_write_reg(fe, 0x05, 0x38);
+ tda18218_write_reg(fe, 0x29, 0x03);
+ tda18218_write_reg(fe, 0x19, 0x1a);
+ tda18218_write_reg(fe, 0x11, 0x13);
+ initbuf2[0] = 0x0a;
+ initbuf2[1] = 0xbe;
+ initbuf2[2] = 0x6e;
+ initbuf2[3] = 0x07;
+ tda18218_write_regs(fe, initbuf2[0], &initbuf2[1], 3);
+ tda18218_write_reg(fe, 0x0f, 0x49);
+ tda18218_write_reg(fe, 0x05, 0x58);
+ tda18218_write_reg(fe, 0x05, 0x18);
+ tda18218_write_reg(fe, 0x05, 0x38);
+ tda18218_write_reg(fe, 0x11, 0xed);
+ tda18218_write_reg(fe, 0x0f, 0x49);
+ tda18218_write_reg(fe, 0x19, 0x2a);
+ tda18218_write_reg(fe, 0x05, 0x58);
+ tda18218_write_reg(fe, 0x05, 0x18);
+ tda18218_write_reg(fe, 0x05, 0x38);
+ tda18218_write_reg(fe, 0x19, 0x0a);
+ tda18218_write_reg(fe, 0x27, 0xc9);
+ tda18218_write_reg(fe, 0x11, 0x13);
+ initbuf2[0] = 0x17;
+ initbuf2[1] = 0xf0;
+ initbuf2[2] = 0x19;
+ initbuf2[3] = 0x00;
+ tda18218_write_regs(fe, initbuf2[0], &initbuf2[1], 2);
+ tda18218_write_reg(fe, 0x1c, 0x98);
+ tda18218_write_reg(fe, 0x29, 0x03);
+ tda18218_write_reg(fe, 0x2a, 0x00);
+ tda18218_write_reg(fe, 0x2a, 0x01);
+ tda18218_write_reg(fe, 0x2a, 0x02);
+ tda18218_write_reg(fe, 0x2a, 0x03);
+ tda18218_write_reg(fe, 0x1c, 0x98);
+ tda18218_write_reg(fe, 0x18, 0x19);
+ tda18218_write_reg(fe, 0x22, 0x9c);
+ tda18218_write_reg(fe, 0x1f, 0x58);
+ tda18218_write_reg(fe, 0x24, 0x0c);
+ tda18218_write_reg(fe, 0x1c, 0x88);
+ tda18218_write_reg(fe, 0x20, 0x10);
+ tda18218_write_reg(fe, 0x21, 0x4c);
+ tda18218_write_reg(fe, 0x20, 0x00);
+ tda18218_write_reg(fe, 0x21, 0x48);
+ tda18218_write_reg(fe, 0x1f, 0x5b);
+ tda18218_write_reg(fe, 0x20, 0x00);
+ tda18218_write_reg(fe, 0x1f, 0x59);
+ tda18218_write_reg(fe, 0x20, 0x00);
+ tda18218_write_reg(fe, 0x1f, 0x5a);
+ tda18218_write_reg(fe, 0x20, 0x00);
+ tda18218_write_reg(fe, 0x1f, 0x5f);
+ tda18218_write_reg(fe, 0x20, 0x00);
+ tda18218_write_reg(fe, 0x1f, 0x5d);
+ tda18218_write_reg(fe, 0x20, 0x00);
+ tda18218_write_reg(fe, 0x1f, 0x5e);
+ tda18218_write_reg(fe, 0x20, 0x00);
+ tda18218_write_reg(fe, 0x20, 0x60);
+ tda18218_write_reg(fe, 0x23, 0x02);
+ tda18218_write_reg(fe, 0x20, 0xa0);
+ tda18218_write_reg(fe, 0x23, 0x09);
+ tda18218_write_reg(fe, 0x20, 0xe0);
+ tda18218_write_reg(fe, 0x23, 0x0c);
+ tda18218_write_reg(fe, 0x20, 0x40);
+ tda18218_write_reg(fe, 0x23, 0x01);
+ tda18218_write_reg(fe, 0x20, 0x80);
+ tda18218_write_reg(fe, 0x23, 0x08);
+ tda18218_write_reg(fe, 0x20, 0xc0);
+ tda18218_write_reg(fe, 0x23, 0x0b);
+ tda18218_write_reg(fe, 0x1c, 0x98);
+ tda18218_write_reg(fe, 0x22, 0x8c);
+ initbuf2[0] = 0x17;
+ initbuf2[1] = 0xb0;
+ initbuf2[2] = 0x59;
+ initbuf2[3] = 0x00;
+ initbuf2[0] = 0x1a;
+ initbuf2[1] = 0x0e;
+ initbuf2[2] = 0x2a;
+ initbuf2[3] = 0x98;
+ tda18218_write_regs(fe, initbuf2[0], &initbuf2[1], 3);
+ initbuf2[0] = 0x17;
+ initbuf2[1] = 0xb0;
+ initbuf2[2] = 0x59;
+ initbuf2[3] = 0x00;
+ tda18218_write_regs(fe, initbuf2[0], &initbuf2[1], 2);
+ tda18218_write_reg(fe, 0x2d, 0x81);
+ tda18218_write_reg(fe, 0x29, 0x02);
+
+ return 0;
+}
+
+static int tda18218_release(struct dvb_frontend *fe)
+{
+ kfree(fe->tuner_priv);
+ fe->tuner_priv = NULL;
+ return 0;
+}
+
+static const struct dvb_tuner_ops tda18218_tuner_ops = {
+ .info = {
+ .name           = "NXP TDA18218",
+ .frequency_min  = TDA18218_MIN_FREQ,
+ .frequency_max  = TDA18218_MAX_FREQ,
+ .frequency_step = TDA18218_STEP,
+ },
+
+ .release       = tda18218_release,
+ .init          = tda18218_init,
+
+ .set_params = tda18218_set_params,
+ .get_frequency = tda18218_get_frequency,
+ .get_bandwidth = tda18218_get_bandwidth,
+};
+
+struct dvb_frontend * tda18218_attach(struct dvb_frontend *fe,
+     struct i2c_adapter *i2c,
+     struct tda18218_config *cfg)
+{
+ struct tda18218_priv *priv = NULL;
+
+ priv = kzalloc(sizeof(struct tda18218_priv), GFP_KERNEL);
+ if (priv == NULL)
+ return NULL;
+
+ priv->cfg = cfg;
+ priv->i2c = i2c;
+
+ fe->tuner_priv = priv;
+
+ tda18218_read_regs(fe);
+ if (priv->tda18218_regs[0x00] != 0xc0) {
+ printk(KERN_WARNING "Device is not a TDA18218!\n");
+ kfree(priv);
+ return NULL;
+ }
+
+ printk(KERN_INFO "NXP TDA18218 successfully identified.\n");
+ memcpy(&fe->ops.tuner_ops, &tda18218_tuner_ops,
+        sizeof(struct dvb_tuner_ops));
+
+ return fe;
+}
+EXPORT_SYMBOL(tda18218_attach);
+
+MODULE_DESCRIPTION("NXP TDA18218 silicon tuner driver");
+MODULE_AUTHOR("Lauris Ding <lding@gmx.de>");
+MODULE_VERSION("0.1");
+MODULE_LICENSE("GPL");
diff -r 0f41fd7df85d linux/drivers/media/common/tuners/tda18218.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/linux/drivers/media/common/tuners/tda18218.h Thu Feb 25 17:21:11 2010 +0100
@@ -0,0 +1,44 @@
+/*
+ *  Driver for  NXP TDA18218 silicon tuner
+ *
+ *  Copyright (C) 2010 Lauris Ding <lding@gmx.de>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef TDA18218_H
+#define TDA18218_H
+
+#include "dvb_frontend.h"
+
+struct tda18218_config {
+ u8 i2c_address;
+};
+
+#if defined(CONFIG_MEDIA_TUNER_TDA18218) || (defined(CONFIG_MEDIA_TUNER_TDA18218_MODULE) && defined(MODULE))
+extern struct dvb_frontend *tda18218_attach(struct dvb_frontend *fe,
+   struct i2c_adapter *i2c,
+   struct tda18218_config *cfg);
+#else
+static inline struct dvb_frontend *tda18218_attach(struct dvb_frontend *fe,
+ struct i2c_adapter *i2c,
+ struct tda18218_config *cfg)
+{
+ printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
+ return NULL;
+}
+#endif // CONFIG_MEDIA_TUNER_TDA18218
+
+#endif
\ No newline at end of file
diff -r 0f41fd7df85d linux/drivers/media/common/tuners/tda18218_priv.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/linux/drivers/media/common/tuners/tda18218_priv.h Thu Feb 25 17:21:11 2010 +0100
@@ -0,0 +1,36 @@
+/*
+ *  Driver for NXP TDA18218 silicon tuner
+ *
+ *  Copyright (C) 2010 Lauris Ding <lding@gmx.de>
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef TDA18218_PRIV_H
+#define TDA18218_PRIV_H
+
+#define TDA18218_STEP         1000 /* 1 kHz */
+#define TDA18218_MIN_FREQ   174000000 /*   174 MHz */
+#define TDA18218_MAX_FREQ  864000000 /*  864 MHz */
+
+struct tda18218_priv {
+ u8 tda18218_regs[0x3b];
+ struct tda18218_config *cfg;
+ struct i2c_adapter *i2c;
+
+ u32 frequency;
+ u32 bandwidth;
+};
+
+#endif
diff -r 0f41fd7df85d linux/drivers/media/dvb/dvb-usb/af9015.c
--- a/linux/drivers/media/dvb/dvb-usb/af9015.c Thu Feb 11 02:33:12 2010 +0200
+++ b/linux/drivers/media/dvb/dvb-usb/af9015.c Thu Feb 25 17:21:11 2010 +0100
@@ -30,6 +30,7 @@
 #include "tda18271.h"
 #include "mxl5005s.h"
 #include "mc44s803.h"
+#include "tda18218.h"
 
 static int dvb_usb_af9015_debug;
 module_param_named(debug, dvb_usb_af9015_debug, int, 0644);
@@ -991,6 +992,7 @@ static int af9015_read_config(struct usb_device *udev)
  case AF9013_TUNER_MT2060_2:
  case AF9013_TUNER_TDA18271:
  case AF9013_TUNER_QT1010A:
+ case AF9013_TUNER_TDA18218:
  af9015_af9013_config[i].rf_spec_inv = 1;
  break;
  case AF9013_TUNER_MXL5003D:
@@ -1002,9 +1004,6 @@ static int af9015_read_config(struct usb_device *udev)
  af9015_af9013_config[i].gpio[1] = AF9013_GPIO_LO;
  af9015_af9013_config[i].rf_spec_inv = 1;
  break;
- case AF9013_TUNER_TDA18218:
- warn("tuner NXP TDA18218 not supported yet");
- return -ENODEV;
  default:
  warn("tuner id:%d not supported, please report!", val);
  return -ENODEV;
@@ -1207,6 +1206,10 @@ static struct mc44s803_config af9015_mc44s803_config = {
  .dig_out = 1,
 };
 
+static struct tda18218_config af9015_tda18218_config = {
+        .i2c_address = 0xc0,
+};
+
 static int af9015_tuner_attach(struct dvb_usb_adapter *adap)
 {
  struct af9015_state *state = adap->dev->priv;
@@ -1237,6 +1240,10 @@ static int af9015_tuner_attach(struct dvb_usb_adapter *adap)
  ret = dvb_attach(tda18271_attach, adap->fe, 0xc0, i2c_adap,
  &af9015_tda18271_config) == NULL ? -ENODEV : 0;
  break;
+ case AF9013_TUNER_TDA18218:
+ ret = dvb_attach(tda18218_attach, adap->fe, i2c_adap,
+ &af9015_tda18218_config) == NULL ? -ENODEV : 0;
+ break;
  case AF9013_TUNER_MXL5003D:
  ret = dvb_attach(mxl5005s_attach, adap->fe, i2c_adap,
  &af9015_mxl5003_config) == NULL ? -ENODEV : 0;
diff -r 0f41fd7df85d linux/drivers/media/dvb/frontends/af9013.c
--- a/linux/drivers/media/dvb/frontends/af9013.c Thu Feb 11 02:33:12 2010 +0200
+++ b/linux/drivers/media/dvb/frontends/af9013.c Thu Feb 25 17:21:11 2010 +0100
@@ -487,6 +487,20 @@ static int af9013_set_freq_ctrl(struct af9013_state *state, fe_bandwidth_t bw)
  break;
  }
  }
+ else if(state->config.tuner == AF9013_TUNER_TDA18218) {
+ switch (bw) {
+ case BANDWIDTH_6_MHZ:
+ if_sample_freq = 3000000; /* 3 MHz */
+ break;
+ case BANDWIDTH_7_MHZ:
+ if_sample_freq = 3500000; /* 3.5 MHz */
+ break;
+ case BANDWIDTH_8_MHZ:
+ default:
+ if_sample_freq = 4000000; /* 4 MHz */
+ break;
+ }
+ }
 
  while (if_sample_freq > (adc_freq / 2))
  if_sample_freq = if_sample_freq - adc_freq;
@@ -1389,6 +1403,7 @@ static int af9013_init(struct dvb_frontend *fe)
  init = tuner_init_mt2060_2;
  break;
  case AF9013_TUNER_TDA18271:
+ case AF9013_TUNER_TDA18218:
  len = ARRAY_SIZE(tuner_init_tda18271);
  init = tuner_init_tda18271;
  break;
diff -r 0f41fd7df85d linux/drivers/media/dvb/frontends/af9013_priv.h
--- a/linux/drivers/media/dvb/frontends/af9013_priv.h Thu Feb 11 02:33:12 2010 +0200
+++ b/linux/drivers/media/dvb/frontends/af9013_priv.h Thu Feb 25 17:21:11 2010 +0100
@@ -789,8 +789,9 @@ static struct regdesc tuner_init_unknown[] = {
  { 0x9bd9, 0, 8, 0x08 },
 };
 
-/* NXP TDA18271 tuner init
-   AF9013_TUNER_TDA18271   = 156 */
+/* NXP TDA18271 & TDA18218 tuner init
+   AF9013_TUNER_TDA18271   = 156
+   AF9013_TUNER_TDA18218   = 179 */
 static struct regdesc tuner_init_tda18271[] = {
  { 0x9bd5, 0, 8, 0x01 },
  { 0x9bd6, 0, 8, 0x04 },
Salva...

4) Portati nella cartella dei drivers:
Codice:
cd af9015-57e489f6538f

5) Applica la patch:
Codice:
sudo patch -p1 < ~/af901x-NXP-TDA18218.patch

Adesso la procedura è uguale a prima...

6) lancia:
Codice:
sudo make

...dopo 10 secondi circa, stoppa tutto con CTRL+C ed edita il config:
Codice:
sudo gedit ~/af9015-57e489f6538f/v4l/.config
cerca la riga: CONFIG_DVB_FIREDTV=m e cambiala con CONFIG_DVB_FIREDTV=n
Salva e chiudi gedit.

7) Lancia di nuovo:
Codice:
sudo make
e, dopo un po di tempo (dipende dalla potenza del tuo processore), quando ha terminato e se non hai avuto errori:
Codice:
sudo make install

8 ) Installa il firmware:
Codice:
cd /lib/firmware
Codice:
sudo wget http://palosaari.fi/linux/v4l-dvb/firmware/af9015/5.1.0.0/dvb-usb-af9015.fw

9) Riavvia:
Codice:
sudo reboot

Prova con Kaffeine...

Registrato
redtag
Novello Novizio

Non Connesso Non Connesso

Sesso: Maschio
Messaggi: 178

Media messaggi


Mostra profilo
« Risposta #5 inserita: 06 Giugno, 2010, 23:39:08 »

Grazie mille come sempre siete dei maghi.
Funziona alla perfezione.
I pacchetti e la patch che mi ritrovo nella home li posso eliminare?
Pensate che ho rinstallato tutto per passare all' ext4 e visto che c'ero nella partizione dedicata a windows ho installato seven.
Bene i driver non funzionano.
La mia paura di trovare hardware che non giri sotto Ubuntu va sempre più svanendo.
Se il negozio di elettronica che ho vicino casa mi procura i dissipatori glieli applico di sicuro.
Grazie mille ancora a tutti (in particolare a Xgaz)
Ciao
Registrato
Xgaz
Entusiasta Emergente
**
Non Connesso Non Connesso

Sesso: Maschio
Messaggi: 2318

Media messaggi


Ubuntu User # 30141


Mostra profilo WWW
« Risposta #6 inserita: 07 Giugno, 2010, 00:01:45 »

I pacchetti e la patch che mi ritrovo nella home li posso eliminare?
Yes

Pensate che ho rinstallato tutto per passare all' ext4 e visto che c'ero nella partizione dedicata a windows ho installato seven.
Bene i driver non funzionano.
La mia pennetta l'ho regalata a mio fratello e...anche lui ha qualche difficoltà con i drivers su windows (xp)  Grin Grin

Grazie mille ancora a tutti (in particolare a Xgaz)
Grazie anche a te per averci dato conferma che funziona ancora tutto!  Good
Registrato
er corvo
Novello Novizio

Non Connesso Non Connesso

Messaggi: 131

Media messaggi


E' meglio un cane amico che un amico cane.


Mostra profilo
« Risposta #7 inserita: 12 Settembre, 2010, 13:38:34 »

ciao mi ha riconosciuto la penna non come AF9015 ma come AF9013 ma mi prende solo 4 canali
Registrato
Xgaz
Entusiasta Emergente
**
Non Connesso Non Connesso

Sesso: Maschio
Messaggi: 2318

Media messaggi


Ubuntu User # 30141


Mostra profilo WWW
« Risposta #8 inserita: 13 Settembre, 2010, 17:44:53 »

Prova una scansione completa con w-scan:

Codice:
w_scan -X -P -t 2 -E 0 -c IT > channels.conf

se non l'hai già installato:
Codice:
sudo apt-get install w-scan

Il file ottenuto (channels.conf > salvato nella tua home) lo puoi aprire con VLC

Naturalmente devi avere un buon segnale in antenna: consigliata connessione all'impianto di casa  Wink
Registrato
er corvo
Novello Novizio

Non Connesso Non Connesso

Messaggi: 131

Media messaggi


E' meglio un cane amico che un amico cane.


Mostra profilo
« Risposta #9 inserita: 13 Settembre, 2010, 18:48:24 »

ciao grazie, era solo un problema d'antenna.


Prova una scansione completa con w-scan:

Codice:
w_scan -X -P -t 2 -E 0 -c IT > channels.conf

se non l'hai già installato:
Codice:
sudo apt-get install w-scan

Il file ottenuto (channels.conf > salvato nella tua home) lo puoi aprire con VLC

Naturalmente devi avere un buon segnale in antenna: consigliata connessione all'impianto di casa  Wink
Registrato
voltron81
Novello Novizio

Non Connesso Non Connesso

Messaggi: 61

Media messaggi


Mostra profilo
« Risposta #10 inserita: 11 Ottobre, 2010, 15:46:05 »

Salve a tutti.
Volevo segnalare che con il nuovo ubuntu (10.10), la pennina non va+...
Ho provato a reinstallare tutto daccapo, ma non compila proprio... questo è l'errore:
Codice:
/home/michele/af9015-57e489f6538f/v4l/tuner-xc2028.c:1314: warning: assignment makes pointer from integer without a cast
make[3]: *** [/home/michele/af9015-57e489f6538f/v4l/tuner-xc2028.o] Errore 1
make[2]: *** [_module_/home/michele/af9015-57e489f6538f/v4l] Error 2
make[2]: Leaving directory `/usr/src/linux-headers-2.6.35-22-generic'
make[1]: *** [default] Errore 2
make[1]: uscita dalla directory «/home/michele/af9015-57e489f6538f/v4l»
make: *** [all] Errore 2
E' un problema che anche altri hanno riscontrato o sono io che sbaglio qualcosa?
Grazie
MiK
Registrato
Xgaz
Entusiasta Emergente
**
Non Connesso Non Connesso

Sesso: Maschio
Messaggi: 2318

Media messaggi


Ubuntu User # 30141


Mostra profilo WWW
« Risposta #11 inserita: 14 Ottobre, 2010, 14:22:48 »

Ci sono grossi problemi a compilare drivers mercurial con il kernel 2.6.35 di Maverick....  Cry
Più o meno tutte le pennette non direttamente supportate da Ubuntu, che richiedono drivers compilati a parte, stanno avendo seri problemi !!

Hai installato prima i nuovi headers e source?
Codice:
sudo apt-get install linux-image-`uname -r` linux-headers-`uname -r`

Eventualmente proviamo poi gli ultimi drivers: http://linuxtv.org/hg/~anttip/af9015/ (3 mesi fa)
Registrato
Xgaz
Entusiasta Emergente
**
Non Connesso Non Connesso

Sesso: Maschio
Messaggi: 2318

Media messaggi


Ubuntu User # 30141


Mostra profilo WWW
« Risposta #12 inserita: 12 Dicembre, 2010, 01:22:43 »

Per chi dovesse passare di qua...

posto il link con la soluzione per il kernel 2.6.35 di Ubuntu 10.10 Maverick:

http://forum.ubuntu-it.org/index.php/topic,366156.msg3287946.html#msg3287946
Registrato
Pagine: [1]   Vai su
  Stampa  
 
Vai a: