<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=EN-US link=blue vlink=purple>
<div class=Section1>
<p class=MsoNormal>Hi,<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>According to the suggestions I’ve modified dvb-usb-ids.h
and cxusb.c to add a support for that card.<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>I would appreciate someone to look at the code below and
compare it with spec on the wiki for that card.<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>---
ala/v4l-dvb/linux/drivers/media/dvb/dvb-usb/dvb-usb-ids.h 2008-12-14
23:11:28.000000000 +0100<o:p></o:p></p>
<p class=MsoNormal>+++ v4l-dvb/linux/drivers/media/dvb/dvb-usb/dvb-usb-ids.h 2008-12-14
22:08:17.000000000 +0100<o:p></o:p></p>
<p class=MsoNormal>@@ -234,5 +234,5 @@<o:p></o:p></p>
<p class=MsoNormal> #define USB_PID_XTENSIONS_XD_380 0x0381<o:p></o:p></p>
<p class=MsoNormal> #define USB_PID_TELESTAR_STARSTICK_2 0x8000<o:p></o:p></p>
<p class=MsoNormal> #define USB_PID_MSI_DIGI_VOX_MINI_III
0x8807<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>+#define USB_PID_AVERMEDIA_A312
0xa312<o:p></o:p></p>
<p class=MsoNormal> #endif<o:p></o:p></p>
<p class=MsoNormal>--- ala/v4l-dvb/linux/drivers/media/dvb/dvb-usb/cxusb.c 2008-12-14
23:11:28.000000000 +0100<o:p></o:p></p>
<p class=MsoNormal>+++ v4l-dvb/linux/drivers/media/dvb/dvb-usb/cxusb.c 2008-12-14
22:43:33.000000000 +0100<o:p></o:p></p>
<p class=MsoNormal>@@ -1224,6 +1224,8 @@<o:p></o:p></p>
<p class=MsoNormal> static struct dvb_usb_device_properties
cxusb_bluebird_nano2_properties;<o:p></o:p></p>
<p class=MsoNormal> static struct dvb_usb_device_properties
cxusb_bluebird_nano2_needsfirmware_properties;<o:p></o:p></p>
<p class=MsoNormal> static struct dvb_usb_device_properties
cxusb_aver_a868r_properties;<o:p></o:p></p>
<p class=MsoNormal>+static struct dvb_usb_device_properties
cxusb_aver_a312_properties;<o:p></o:p></p>
<p class=MsoNormal>+<o:p></o:p></p>
<p class=MsoNormal> static struct dvb_usb_device_properties
cxusb_d680_dmb_properties;<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal> static int cxusb_probe(struct usb_interface *intf,<o:p></o:p></p>
<p class=MsoNormal>@@ -1248,6 +1250,8 @@<o:p></o:p></p>
<p class=MsoNormal>
THIS_MODULE, NULL, adapter_nr) ||<o:p></o:p></p>
<p class=MsoNormal> 0 == dvb_usb_device_init(intf,
&cxusb_aver_a868r_properties,<o:p></o:p></p>
<p class=MsoNormal>
THIS_MODULE, NULL, adapter_nr) ||<o:p></o:p></p>
<p class=MsoNormal>+ 0 == dvb_usb_device_init(intf,
&cxusb_aver_a312_properties,<o:p></o:p></p>
<p class=MsoNormal>+
THIS_MODULE, NULL, adapter_nr) ||<o:p></o:p></p>
<p class=MsoNormal> 0 == dvb_usb_device_init(intf,<o:p></o:p></p>
<p class=MsoNormal>
&cxusb_bluebird_dualdig4_rev2_properties,<o:p></o:p></p>
<p class=MsoNormal>
THIS_MODULE, NULL, adapter_nr) ||<o:p></o:p></p>
<p class=MsoNormal>@@ -1277,6 +1281,7 @@<o:p></o:p></p>
<p class=MsoNormal> { USB_DEVICE(USB_VID_DVICO,
USB_PID_DVICO_BLUEBIRD_DVB_T_NANO_2) },<o:p></o:p></p>
<p class=MsoNormal> { USB_DEVICE(USB_VID_DVICO,
USB_PID_DVICO_BLUEBIRD_DVB_T_NANO_2_NFW_WARM) },<o:p></o:p></p>
<p class=MsoNormal> { USB_DEVICE(USB_VID_AVERMEDIA,
USB_PID_AVERMEDIA_VOLAR_A868R) },<o:p></o:p></p>
<p class=MsoNormal>+ { USB_DEVICE(USB_VID_AVERMEDIA,
USB_PID_AVERMEDIA_A312) },<o:p></o:p></p>
<p class=MsoNormal> { USB_DEVICE(USB_VID_DVICO,
USB_PID_DVICO_BLUEBIRD_DUAL_4_REV_2) },<o:p></o:p></p>
<p class=MsoNormal> { USB_DEVICE(USB_VID_CONEXANT,
USB_PID_CONEXANT_D680_DMB) },<o:p></o:p></p>
<p class=MsoNormal> {} /*
Terminating entry */<o:p></o:p></p>
<p class=MsoNormal>@@ -1724,6 +1729,48 @@<o:p></o:p></p>
<p class=MsoNormal> }<o:p></o:p></p>
<p class=MsoNormal> };<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>+static struct dvb_usb_device_properties
cxusb_aver_a312_properties = {<o:p></o:p></p>
<p class=MsoNormal>+ .caps = DVB_USB_IS_AN_I2C_ADAPTER,<o:p></o:p></p>
<p class=MsoNormal>+<o:p></o:p></p>
<p class=MsoNormal>+ .usb_ctrl = CYPRESS_FX2,<o:p></o:p></p>
<p class=MsoNormal>+<o:p></o:p></p>
<p class=MsoNormal>+ .size_of_priv = sizeof(struct
cxusb_state),<o:p></o:p></p>
<p class=MsoNormal>+<o:p></o:p></p>
<p class=MsoNormal>+ .num_adapters = 1,<o:p></o:p></p>
<p class=MsoNormal>+ .adapter = {<o:p></o:p></p>
<p class=MsoNormal>+ {<o:p></o:p></p>
<p class=MsoNormal>+ .streaming_ctrl
= cxusb_aver_streaming_ctrl,<o:p></o:p></p>
<p class=MsoNormal>+ .frontend_attach
= cxusb_aver_lgdt3303_frontend_attach,<o:p></o:p></p>
<p class=MsoNormal>+ .tuner_attach
= cxusb_dvico_xc3028_tuner_attach,<o:p></o:p></p>
<p class=MsoNormal>+ /* parameter
for the MPEG2-data transfer */<o:p></o:p></p>
<p class=MsoNormal>+ .stream = {<o:p></o:p></p>
<p class=MsoNormal>+ .type
= USB_BULK,<o:p></o:p></p>
<p class=MsoNormal>+ .count
= 5,<o:p></o:p></p>
<p class=MsoNormal>+ .endpoint
= 0x04,<o:p></o:p></p>
<p class=MsoNormal>+ .u
= {<o:p></o:p></p>
<p class=MsoNormal>+ .bulk
= {<o:p></o:p></p>
<p class=MsoNormal>+ .buffersize
= 8192,<o:p></o:p></p>
<p class=MsoNormal>+ }<o:p></o:p></p>
<p class=MsoNormal>+ }<o:p></o:p></p>
<p class=MsoNormal>+ },<o:p></o:p></p>
<p class=MsoNormal>+<o:p></o:p></p>
<p class=MsoNormal>+ },<o:p></o:p></p>
<p class=MsoNormal>+ },<o:p></o:p></p>
<p class=MsoNormal>+ .power_ctrl = cxusb_aver_power_ctrl,<o:p></o:p></p>
<p class=MsoNormal><span lang=PL>+<o:p></o:p></span></p>
<p class=MsoNormal><span lang=PL>+ .i2c_algo =
&cxusb_i2c_algo,<o:p></o:p></span></p>
<p class=MsoNormal>+<o:p></o:p></p>
<p class=MsoNormal>+ .generic_bulk_ctrl_endpoint = 0x01,<o:p></o:p></p>
<p class=MsoNormal>+<o:p></o:p></p>
<p class=MsoNormal>+ .num_device_descs = 1,<o:p></o:p></p>
<p class=MsoNormal>+ .devices = {<o:p></o:p></p>
<p class=MsoNormal>+ { "AVerMedia AVerTVHD
(A312)",<o:p></o:p></p>
<p class=MsoNormal>+ { NULL },<o:p></o:p></p>
<p class=MsoNormal>+ {
&cxusb_table[17], NULL },<o:p></o:p></p>
<p class=MsoNormal>+ },<o:p></o:p></p>
<p class=MsoNormal>+ }<o:p></o:p></p>
<p class=MsoNormal>+};<o:p></o:p></p>
<p class=MsoNormal>+<o:p></o:p></p>
<p class=MsoNormal> static<o:p></o:p></p>
<p class=MsoNormal> struct dvb_usb_device_properties
cxusb_bluebird_dualdig4_rev2_properties = {<o:p></o:p></p>
<p class=MsoNormal> .caps = DVB_USB_IS_AN_I2C_ADAPTER,<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>After modprobing cxusb driver I have:<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>vb-usb: found a 'AVerMedia AVerTVHD (A312)' in warm state.<o:p></o:p></p>
<p class=MsoNormal>dvb-usb: will pass the complete MPEG2 transport stream to
the software demuxer.<o:p></o:p></p>
<p class=MsoNormal>DVB: registering new adapter (AVerMedia AVerTVHD (A312))<o:p></o:p></p>
<p class=MsoNormal>DVB: registering adapter 0 frontend 0 (LG Electronics
LGDT3303 VSB/QAM Frontend)...<o:p></o:p></p>
<p class=MsoNormal>xc2028 4-0061: creating new instance<o:p></o:p></p>
<p class=MsoNormal>xc2028 4-0061: type set to XCeive xc2028/xc3028 tuner<o:p></o:p></p>
<p class=MsoNormal>dvb-usb: AVerMedia AVerTVHD (A312) successfully initialized
and connected.<o:p></o:p></p>
<p class=MsoNormal>usbcore: registered new interface driver dvb_usb_cxusb<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>h3xu5 v4l-dvb # ls -laR /dev/dvb/<o:p></o:p></p>
<p class=MsoNormal>/dev/dvb/:<o:p></o:p></p>
<p class=MsoNormal>total 0<o:p></o:p></p>
<p class=MsoNormal>drwxr-xr-x 3 root root 60 Dec 14 23:06 .<o:p></o:p></p>
<p class=MsoNormal>drwxr-xr-x 15 root root 4640 Dec 14 23:06 ..<o:p></o:p></p>
<p class=MsoNormal>drwxr-xr-x 2 root root 120 Dec 14 23:06 adapter0<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>/dev/dvb/adapter0:<o:p></o:p></p>
<p class=MsoNormal>total 0<o:p></o:p></p>
<p class=MsoNormal>drwxr-xr-x 2 root root 120 Dec 14 23:06 .<o:p></o:p></p>
<p class=MsoNormal>drwxr-xr-x 3 root root 60 Dec 14 23:06 ..<o:p></o:p></p>
<p class=MsoNormal>crw-rw---- 1 root video 212, 0 Dec 14 23:06 demux0<o:p></o:p></p>
<p class=MsoNormal>crw-rw---- 1 root video 212, 1 Dec 14 23:06 dvr0<o:p></o:p></p>
<p class=MsoNormal>crw-rw---- 1 root video 212, 3 Dec 14 23:06 frontend0<o:p></o:p></p>
<p class=MsoNormal>crw-rw---- 1 root video 212, 2 Dec 14 23:06 net0<o:p></o:p></p>
<p class=MsoNormal><b><o:p> </o:p></b></p>
<p class=MsoNormal>The question is if it is ok or maybe something is missing
here and what should be next steps.<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>Regards,<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
</div>
</body>
</html>