Tarjeta TV Genius TVGo DVB-T02Q

donde lo pusistes?
me corrijo......creo que copiandolo a /lib/firmware funciona.

prueba.

edito:

pero funciona si o no?

Lo he copiado donde tu me has dicho. Y no se si funciona porque no termino de interpretar lo que te he puesto antes. De todas formas creo que se debería encender una luz azul y no se enciende nada.

Gracias

Aguila Rabuda escribió:

Lo he copiado donde tu me has dicho. Y no se si funciona porque no termino de interpretar lo que te he puesto antes. De todas formas creo que se debería encender una luz azul y no se enciende nada.

Gracias

haz la prueba!

Hecho!!!!!! Mira kaffeine ya me la detecta, con otro nombre pero bueno. Me imagino que si kaffeine la detecta es que va, ahora me faltan los canales y eso. La ultima mano y lo tenemos.

Gracias tío!

EDITO: Ya funciona!!!!!!!!! Gaucho for president!!!!!!!!! Enserio muchas, muchas gracias. Asi da gusto

Aguila Rabuda escribió:

Hecho!!!!!! Mira kaffeine ya me la detecta, con otro nombre pero bueno. Me imagino que si kaffeine la detecta es que va, ahora me faltan los canales y eso. La ultima mano y lo tenemos.

Gracias tío!

EDITO: Ya funciona!!!!!!!!! Gaucho for president!!!!!!!!! Enserio muchas, muchas gracias. Asi da gusto

felicitaciones.

Hola de nuevo!

Reabro el tema del foro, porque aunque conseguí hacerla funcionar, como se describe más arriba, la señal era muy baja y apenas se veían los canales. Al parecer el núcleo la detecta como una tarjeta que no es, y por tanto surge la necesidad de parchear uno de los módulos de v4l, dvb_usb_m920x.

En una lista de correo de linuxtv, me he encontrado una persona que ha desarrollado un parche para dicho módulo, y según él, funcionaba hace unos meses. Ahora, y tras alguna actualización de v4l ha dejado de ir. Os dejo el código del parche, por si hay alguien que entienda de esto y pueda echarme una mano o bien dejarlo como punto de partida para desarrollar unos drivers funcionales para esta tarjeta.

diff -r b40d628f830d linux/drivers/media/dvb/dvb-usb/dvb-usb-ids.h
--- a/linux/drivers/media/dvb/dvb-usb/dvb-usb-ids.h Fri Apr 24 01:46:41 2009 -0300
+++ b/linux/drivers/media/dvb/dvb-usb/dvb-usb-ids.h Wed Jun 17 01:14:11 2009 +0200
@@ -98,6 +98,7 @@
#define USB_PID_DPOSH_M9206_COLD 0x9206
#define USB_PID_DPOSH_M9206_WARM 0xa090
#define USB_PID_UNIWILL_STK7700P 0x6003
+#define USB_PID_GENIUS_DVBT_TVGO_T02Q 0x702b
#define USB_PID_GENIUS_TVGO_DVB_T03 0x4012
#define USB_PID_GRANDTEC_DVBT_USB_COLD 0x0fa0
#define USB_PID_GRANDTEC_DVBT_USB_WARM 0x0fa1
diff -r b40d628f830d linux/drivers/media/dvb/dvb-usb/m920x.c
--- a/linux/drivers/media/dvb/dvb-usb/m920x.c Fri Apr 24 01:46:41 2009 -0300
+++ b/linux/drivers/media/dvb/dvb-usb/m920x.c Wed Jun 17 01:14:11 2009 +0200
@@ -11,11 +11,13 @@

#include "m920x.h"

+#include "mt2060.h"
#include "mt352.h"
#include "mt352_priv.h"
#include "qt1010.h"
#include "tda1004x.h"
#include "tda827x.h"
+#include "zl10353.h"
#include <asm/unaligned.h>

/* debug */
@@ -475,9 +477,22 @@
.request_firmware = NULL, /* uses firmware EEPROM */
};

+static struct zl10353_config m920x_tvgot02q_zl10353_config = {
+ .demod_address = 0x0f,
+ //.adc_clock = 22528,
+ //.if2 = 361667,
+ .no_tuner = 1,
+ //.parallel_ts = 1,
+};
+
/* tuner configurations */
static struct qt1010_config m920x_qt1010_config = {
.i2c_address = 0x62
+};
+
+static struct mt2060_config m920x_tvgot02q_mt2060_config = {
+ .clock_out = 1,
+ .i2c_address = 0x60,
};

/* Callbacks for DVB USB */
@@ -517,6 +532,18 @@
return 0;
}

+static int m920x_tvgot02q_frontend_attach(struct dvb_usb_adapter *adap)
+{
+ deb("%s\n",__func__);
+
+ if ((adap->fe = dvb_attach(zl10353_attach,
+    &m920x_tvgot02q_zl10353_config,
+    &adap->dev->i2c_adap)) == NULL)
+ return -EIO;
+
+ return 0;
+}
+
static int m920x_qt1010_tuner_attach(struct dvb_usb_adapter *adap)
{
deb("%s\n",__func__);
@@ -547,6 +574,17 @@
return 0;
}

+static int m920x_mt2060_tuner_attach(struct dvb_usb_adapter *adap)
+{
+ const static int if1 = 1220;
+ deb("%s\n",__func__);
+
+ if (dvb_attach(mt2060_attach, adap->fe, &adap->dev->i2c_adap, &m920x_tvgot02q_mt2060_config, if1) == NULL)
+ return -ENODEV;
+
+ return 0;
+}
+
/* device-specific initialization */
static struct m920x_inits megasky_rc_init [] = {
{ M9206_RC_INIT2, 0xa8 },
@@ -560,6 +598,31 @@
{ 0xff28,         0x00 },
{ 0xff23,         0x00 },
{ 0xff21,         0x30 },
+ { } /* terminating entry */
+};
+
+static struct m920x_inits tvgot02q_rc_init [] = {
+// { M9206_RC_INIT2, 0xa8 }, // ff54
+// { M9206_RC_INIT1, 0x51 }, // ff55
+
+// { 0xff85,         0xff },
+// { 0xff84,         0xff },
+// { 0xff28,         0x00 },
+// { 0xff23,         0x00 },
+// { 0xff22,         0x00 },
+// { 0xff20,         0x30 },
+// { 0xff21,         0x70 },
+
+// { 0xff85,         0xf5 },
+// { 0xff84,         0x83 },
+ { 0xff54,         0xff },
+ { 0xff55,         0xff },
+ { 0xff28,         0x00 },
+ { 0xff23,         0x00 },
+ { 0xff23,         0x00 },
+ { 0xff21,         0x70 },
+// { 0xff22,         0x00 },
+// { 0xff20,         0x30 },
{ } /* terminating entry */
};

@@ -603,11 +666,34 @@
{ 0x0, 0x1e, KEY_VOLUMEUP },
};

+static struct dvb_usb_rc_key tvgot02q_rc_keys [] = {
+ { 0x0, 0x01, KEY_ZOOM }, /* Full Screen */
+ { 0x0, 0x02, KEY_CAMERA }, /* snapshot */
+ { 0x0, 0x03, KEY_MUTE },
+ { 0x0, 0x04, KEY_REWIND },
+ { 0x0, 0x05, KEY_PLAYPAUSE }, /* Play/Pause */
+ { 0x0, 0x06, KEY_FASTFORWARD },
+ { 0x0, 0x07, KEY_RECORD },
+ { 0x0, 0x08, KEY_STOP },
+ { 0x0, 0x09, KEY_TIME }, /* Timeshift */
+ { 0x0, 0x0c, KEY_COFFEE }, /* Recall */
+ { 0x0, 0x0e, KEY_CHANNELUP },
+ { 0x0, 0x12, KEY_POWER },
+ { 0x0, 0x15, KEY_MENU }, /* source */
+ { 0x0, 0x18, KEY_CYCLEWINDOWS }, /* TWIN PIP */
+ { 0x0, 0x1a, KEY_CHANNELDOWN },
+ { 0x0, 0x1b, KEY_VOLUMEDOWN },
+ { 0x0, 0x1e, KEY_VOLUMEUP },
+
+// { 0x0, 0x04, KEY_REWIND },
+};
+
/* DVB USB Driver stuff */
static struct dvb_usb_device_properties megasky_properties;
static struct dvb_usb_device_properties digivox_mini_ii_properties;
static struct dvb_usb_device_properties tvwalkertwin_properties;
static struct dvb_usb_device_properties dposh_properties;
+static struct dvb_usb_device_properties tvgot02q_properties;

static int m920x_probe(struct usb_interface *intf,
       const struct usb_device_id *id)
@@ -653,6 +739,13 @@
goto found;
}

+ ret = dvb_usb_device_init(intf, &tvgot02q_properties,
+   THIS_MODULE, &d, adapter_nr);
+ if (ret == 0) {
+ rc_init_seq = tvgot02q_rc_init;
+ goto found;
+ }
+
return ret;
} else {
/* Another interface on a multi-tuner device */
@@ -683,6 +776,7 @@
     USB_PID_LIFEVIEW_TV_WALKER_TWIN_WARM) },
{ USB_DEVICE(USB_VID_DPOSH, USB_PID_DPOSH_M9206_COLD) },
{ USB_DEVICE(USB_VID_DPOSH, USB_PID_DPOSH_M9206_WARM) },
+ { USB_DEVICE(USB_VID_KYE, USB_PID_GENIUS_DVBT_TVGO_T02Q) },
{ } /* Terminating entry */
};
MODULE_DEVICE_TABLE (usb, m920x_table);
@@ -896,6 +990,57 @@
}
};

+static struct dvb_usb_device_properties tvgot02q_properties = {
+ .caps = DVB_USB_IS_AN_I2C_ADAPTER,
+
+ .usb_ctrl = DEVICE_SPECIFIC,
+ .firmware = "dvb-usb-tvgo-t02qv2-03.fw",
+ .download_firmware = m920x_firmware_download,
+
+ .rc_interval      = 100,
+ .rc_key_map       = tvgot02q_rc_keys,
+ .rc_key_map_size  = ARRAY_SIZE(tvgot02q_rc_keys),
+ .rc_query         = m920x_rc_query,
+
+ .size_of_priv = sizeof(struct m920x_state),
+
+ .identify_state   = m920x_identify_state,
+ .num_adapters = 1,
+ .adapter = {{
+ /* PID FILTERS DON'T WORK WITH CURRENT FW/CONFIG/WHATEVER' */
+ /*
+ .caps =  DVB_USB_ADAP_HAS_PID_FILTER |
+ DVB_USB_ADAP_PID_FILTER_CAN_BE_TURNED_OFF,
+
+ .pid_filter_count = 8,
+ .pid_filter   = m920x_pid_filter,
+ .pid_filter_ctrl  = m920x_pid_filter_ctrl,
+ */
+ .frontend_attach  = m920x_tvgot02q_frontend_attach,
+ .tuner_attach   = m920x_mt2060_tuner_attach,
+
+ .stream = {
+ .type = USB_BULK,
+ .count = 8,
+ .endpoint = 0x81,
+ .u = {
+ .bulk = {
+ .buffersize = 512,
+ }
+ }
+ },
+ }},
+ .i2c_algo = &m920x_i2c_algo,
+
+ .num_device_descs = 1,
+ .devices = {
+ { "Genius TVGo DVB-T02Q",
+      { &m920x_table[6], NULL },
+      { NULL },
+ },
+ }
+};
+
static struct usb_driver m920x_driver = {
.name = "dvb_usb_m920x",
.probe = m920x_probe,

Es curioso, la primera vez que lo he aplicado me pedía el editor vi y me salía este mensaje de error:

No username found, using 'miusuario@mihost' instead                           
sh: vi: command not found                                                     
transaction abort!                                                            
rollback completed                                                            
abort: edit failed: vi exited with status 127

Y al instalar vi:

abort: outstanding uncommitted changes

El autor asegura que el dispositivo hace unos meses funcionaba, menos el mando a distancia.

Bueno ahí queda esta información. Como estoy en contacto con el, cualquier cambio que realice os lo notifico.

Un saludo!

PD: Se me olvidaba comentar, el parche lo he aplicado con mercurial, que es como se instala v4l.