Re: Hauppauge HVR-900 HD and HVR 930C-HD with si2165

2013-10-07 Thread pierigno
Hi Matthias,

I went through a similar path in the past, using USBLyzer on a
virtualized windows environment, and developed this simple awk script
to adapt the csv output of USBLyzer to usbsnoop format. Hope it helps
:)





2013/10/7 Matthias Schwarzott z...@gentoo.org:
 On 01.10.2013 16:45, Antti Palosaari wrote:

 On 01.10.2013 08:34, Matthias Schwarzott wrote:

 On 26.09.2013 16:54, Antti Palosaari wrote:

 On 25.09.2013 07:50, Matthias Schwarzott wrote:

 On 17.08.2013 13:30, Ulf wrote:

 Hi,

 I know the topic Hauppauge HVR-900 HD and HVR 930C-HD with si2165
 demodulator was already discussed

 http://permalink.gmane.org/gmane.linux.drivers.video-input-infrastructure/40982

 and

 http://permalink.gmane.org/gmane.linux.drivers.video-input-infrastructure/46266.


 Just for me as a confirmation nobody plans to work on a driver for
 si2165.
 Is there any chance how to push the development?

 Ulf

 Hi!

 I also bought one of these to find out it is not supported.
 But my plan is to try to write a driver for this.
 I want to get DVB-C working, but I also have DVB-T and analog reception
 available.

 My current status is I got it working in windows in qemu and did a usb
 snoop.
 I also have a second system to test it in windows vista directly on the
 hardware.

 Current status is documented here.
 http://www.linuxtv.org/wiki/index.php/Hauppauge_WinTV-HVR-930C-HD

 Until now I only have a component list summarized from this list.

   * Conexant http://www.linuxtv.org/wiki/index.php/Conexant CX231xx
 http://www.linuxtv.org/wiki/index.php/Conexant_CX2310x
   * Silicon Labs


 http://www.linuxtv.org/wiki/index.php?title=Silicon_Labsaction=editredlink=1


 si2165 http://www.linuxtv.org/wiki/index.php/Silicon_Labs_si2165
 (Multi-Standard DVB-T and DVB-C Demodulator)
   * NXP TDA18271
 http://www.linuxtv.org/wiki/index.php/NXP/Philips_TDA182xx
 (silicon tuner IC, most likely i2c-addr: 0x60)
   * eeprom (windows driver reads 1kb, i2c-addr: 0x50)


 Is this correct?
 Did anyone open his device and can show pictures?

 I now need to know which component is at which i2c address.
 Windows driver does upload file hcw10mlD.rom of 16kb to device 0x44.


 I have opened it. There was similar sandwich PCB than used by rev1
 too. So you cannot see all the chip unless you use metal saw to
 separate PCBs.

 PCB side A:
 TDA18271HDC2
 16.000 MHz

 Si2165-GM
 16.000 MHz


 PCB side B:
 24C02H

 regards
 Antti

 Hi Antti,

 thanks for that information.
 The only real new information for me is the 16.000MHz xtal value.

 Sad to know that the other chips are hidden.
 I assigned more i2c addresses to functions, but not yet all (no idea if
 more addresses are real, or bad interpretations of snooped data).

 I now try to check what already works:
 - This is video via composite input.
 - Next is to try video via analog input - see I see if the tuner in
 general works in this device.

 In parallel I try to capture usb in different setups.
 1. kvm+tcpdump (using usbmon)
 2. usbsnoop on windows vista

 Only setup 1 does provide a real list of usb packets.


 Matthias, you likely try to do things too complex :) I am not going to
 comment analog side as I simply has no experience. Missing piece of code
 from the DTV point of view is only si2165 demod driver.

 My technique is to make successful tune one channel and take sniffs. From
 sniffs I generate C-code register writes (and sometimes reads too) using
 scripts. Reading that C-code is much more visual and easier than looking
 correct bytes from the raw sniffs. It is essential to find out from the
 sniffs what are tuner register writes, what are demod register writes and
 what are for USB-bridge itself. There may be some other chips which are
 needed to init in order to operate, like in cases I2C bus is connected
 through analog demodulator to digital demodulator.

 Usually it is rather trivial to make skeleton driver from the code
 generated from sniffs which just shows that single channel sniffs were
 taken.

 I have been looking simple example for reverse-engineer demodulator
 driver how-to blog post, but I haven't found suitable device yet. That was
 one device I looked, but I given-up as simplest sniff after parsing was over
 1MB. Looks like there is multiple firmwares to download and also CX231xx usb
 protocol generates a lot of I/O = not very good example for simple how-to.

 Take a look of that post to see some practical example about sniffing and
 code generation.
 http://blog.palosaari.fi/2013/07/generating-rtl2832u-driver-code.html

 regards
 Antti

 Hi Antti,

 my real problem currently is, that I cannot get a good usb dump:
 1. In virtual machine (win xp under kvm) it finds one transponder when
 scanning DVB-T, but does not get a picture.
 2. On real machine with vista I can tune perfectly, but usb snooping does
 not work (at least not the ones I tried).
 3. The only sniffer that seemed to produce enough data on vista was
 usblyzer.
 But there is not script to 

AF9035 Twinstar has firmware errors

2012-07-04 Thread pierigno
hello,

I've downloaded and compiled against karnel 3.0.0 and kernel 3.4.3 the
latest git tree from antii, branch dvb-usb-pull, and it doesn't
recognize my dual tuner Avermedia Twinstar (af9035 + mxl5007t)
anymore. Here's the logs from dmesg (the compiled modules do not have
any debug parameters to enable):

[44919.461121] WARNING: You are using an experimental version of the
media stack.
[44919.461125]  As the driver is backported to an older kernel, it doesn't offer
[44919.461129]  enough quality for its usage in production.
[44919.461131]  Use it with care.
[44919.461133] Latest git patches (needed if you report a bug to
linux-media@vger.kernel.org):
[44919.461136]  635b1d05b4a2c62ebb76a1514e806faa133abc1f dvb_usb_v2:
remove usb_clear_halt() from stream
[44919.461139]  fc86b47f681e0c052cc6e71a4fd55f405fbe6d51 dvb_usb_v2:
do not try to remove non-existent adapter
[44919.461143]  6b86e957b62381c65f1edc068a4b2483ff9536df dvb_usb_v2:
use dev_* logging macros
[44919.465073] WARNING: You are using an experimental version of the
media stack.
[44919.465077]  As the driver is backported to an older kernel, it doesn't offer
[44919.465080]  enough quality for its usage in production.
[44919.465082]  Use it with care.
[44919.465084] Latest git patches (needed if you report a bug to
linux-media@vger.kernel.org):
[44919.465087]  635b1d05b4a2c62ebb76a1514e806faa133abc1f dvb_usb_v2:
remove usb_clear_halt() from stream
[44919.465090]  fc86b47f681e0c052cc6e71a4fd55f405fbe6d51 dvb_usb_v2:
do not try to remove non-existent adapter
[44919.465094]  6b86e957b62381c65f1edc068a4b2483ff9536df dvb_usb_v2:
use dev_* logging macros
[44919.467147] usbcore: registered new interface driver dvb_usb_af9035
[44919.467487] usb 2-1.2: dvb_usbv2: found a 'AVerMedia Twinstar
(A825)' in cold state
[44919.507679] usb 2-1.2: dvb_usbv2: downloading firmware from file
'dvb-usb-af9035-02.fw'
[44919.817562] dvb_usb_af9035: firmware version=11.5.9.0
[44919.817613] usb 2-1.2: dvb_usbv2: found a 'AVerMedia Twinstar
(A825)' in warm state
[44919.820841] usb 2-1.2: dvb_usbv2: will pass the complete MPEG2
transport stream to the software demuxer
[44919.820892] DVB: registering new adapter (AVerMedia Twinstar (A825))
[44919.826864] af9033: firmware version: LINK=11.5.9.0 OFDM=5.17.9.1
[44919.826875] DVB: registering adapter 0 frontend 0 (Afatech AF9033 (DVB-T))...
[44920.166089] mxl5007t 16-0060: creating new instance
[44920.166883] mxl5007t_get_chip_id: unknown rev (3f)
[44920.166891] mxl5007t_get_chip_id: MxL5007T detected @ 16-0060
[44920.178890] usb 2-1.2: dvb_usbv2: 'AVerMedia Twinstar (A825)' error
while loading driver (-22)
[44920.179065] mxl5007t 16-0060: destroying instance
[44920.179599] usb 2-1.2: dvb_usbv2: 'AVerMedia Twinstar (A825)'
successfully deinitialized and disconnected
[45352.006027] usb 2-1.2: USB disconnect, device number 6
[45370.454070] usbcore: deregistering interface driver dvb_usb_af9035

How can I enable debug parameters in order to provide better
informations? I've compiled as usual using the following command
sequence:

git clone git://linuxtv.org/media_build.git
cd media_build
./build --git git://linuxtv.org/anttip/media_tree.git dvb_usb_pull
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] af9035: add several new USB IDs

2012-04-05 Thread pierigno
hello,

these are the definitions needed for AVermedia Twinstar. The stick
works correctly so far: I was also able to tune many channels through
kaffeine (~300 channels here in Turin, Italy). and watching
continuously a channel for 4 hours without interruptions or visual
glitches. Switching from one channel to another takes ~1 sec. Just one
tuner is recognized at the moment.

Regards,
Pierangelo Terzulli


--- a/drivers/media/dvb/dvb-usb/af9035.c
+++ b/drivers/media/dvb/dvb-usb/af9035.c
@@ -821,29 +821,68 @@ err:

 enum af9035_id_entry {
   AF9035_0CCD_0093,
+   AF9035_0CCD_00AA,
   AF9035_15A4_9035,
+   AF9035_15A4_1000,
   AF9035_15A4_1001,
+   AF9035_15A4_1002,
+   AF9035_15A4_1003,
+   AF9035_07CA_0825,
+   AF9035_07CA_A825,
+   AF9035_07CA_0835,
   AF9035_07CA_A835,
   AF9035_07CA_B835,
+   AF9035_07CA_A333,
+   AF9035_07CA_0337,
+   AF9035_07CA_F337,
+   AF9035_07CA_0867,
   AF9035_07CA_1867,
+   AF9035_07CA_3867,
   AF9035_07CA_A867,
+   AF9035_07CA_B867,
 };

 static struct usb_device_id af9035_id[] = {
   [AF9035_0CCD_0093] = {
   USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_CINERGY_T_STICK)},
+   [AF9035_0CCD_00AA] = {
+   USB_DEVICE(USB_VID_TERRATEC,
USB_PID_TERRATEC_CINERGY_T_STICK_2)},
   [AF9035_15A4_9035] = {
   USB_DEVICE(USB_VID_AFATECH, USB_PID_AFATECH_AF9035)},
-   [AF9035_15A4_1001] = {
+   [AF9035_15A4_1000] = {
   USB_DEVICE(USB_VID_AFATECH, USB_PID_AFATECH_AF9035_2)},
+   [AF9035_15A4_1001] = {
+   USB_DEVICE(USB_VID_AFATECH, USB_PID_AFATECH_AF9035_3)},
+   [AF9035_15A4_1002] = {
+   USB_DEVICE(USB_VID_AFATECH, USB_PID_AFATECH_AF9035_4)},
+   [AF9035_15A4_1003] = {
+   USB_DEVICE(USB_VID_AFATECH, USB_PID_AFATECH_AF9035_5)},
+   [AF9035_07CA_0825] = {
+   USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_0825)},
+   [AF9035_07CA_A825] = {
+   USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_A825)},
+   [AF9035_07CA_0835] = {
+   USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_0835)},
   [AF9035_07CA_A835] = {
   USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_A835)},
   [AF9035_07CA_B835] = {
   USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_B835)},
+   [AF9035_07CA_A333] = {
+   USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_A333)},
+   [AF9035_07CA_0337] = {
+   USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_0337)},
+   [AF9035_07CA_F337] = {
+   USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_F337)},
+   [AF9035_07CA_0867] = {
+   USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_0867)},
   [AF9035_07CA_1867] = {
   USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_1867)},
+   [AF9035_07CA_3867] = {
+   USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_3867)},
   [AF9035_07CA_A867] = {
   USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_A867)},
+   [AF9035_07CA_B867] = {
+   USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_B867)},
   {},
 };

@@ -886,30 +925,47 @@ static struct dvb_usb_device_properties
af9035_properties[] = {

   .i2c_algo = af9035_i2c_algo,

-   .num_device_descs = 4,
+   .num_device_descs = 5,
   .devices = {
   {
   .name = TerraTec Cinergy T Stick,
   .cold_ids = {
   af9035_id[AF9035_0CCD_0093],
+   af9035_id[AF9035_0CCD_00AA],
   },
   }, {
   .name = Afatech Technologies DVB-T stick,
   .cold_ids = {
   af9035_id[AF9035_15A4_9035],
+   af9035_id[AF9035_15A4_1000],
   af9035_id[AF9035_15A4_1001],
+   af9035_id[AF9035_15A4_1002],
+   af9035_id[AF9035_15A4_1003],
+   },
+   }, {
+   .name = AVerMedia AVerTV TwinStar (A825),
+   .cold_ids = {
+   af9035_id[AF9035_07CA_0825],
+   af9035_id[AF9035_07CA_A825],
   },
   }, {
   .name = AVerMedia AVerTV Volar HD/PRO (A835),
   .cold_ids = {
+   af9035_id[AF9035_07CA_0835],
   af9035_id[AF9035_07CA_A835],
   af9035_id[AF9035_07CA_B835],
   },
  

Re: [PATCH] af9035: add several new USB IDs

2012-04-05 Thread pierigno
gosh!! I pasted the wrong patch, sorry for the noise, here it is (it
should be applied against
http://git.linuxtv.org/anttip/media_tree.git/shortlog/refs/heads/af9035_experimental):


--- drivers/media/dvb/dvb-usb/af9035.c.origin   2012-04-05
15:31:55.431075058 +0200
+++ drivers/media/dvb/dvb-usb/af9035.c  2012-04-05 15:26:44.483073976 +0200
@@ -827,6 +827,7 @@ enum af9035_id_entry {
AF9035_07CA_B835,
AF9035_07CA_1867,
AF9035_07CA_A867,
+   AF9035_07CA_0825,
 };

 static struct usb_device_id af9035_id[] = {
@@ -844,6 +845,8 @@ static struct usb_device_id af9035_id[]
USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_1867)},
[AF9035_07CA_A867] = {
USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_A867)},
+   [AF9035_07CA_0825] = {
+   USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_TWINSTAR)},
{},
 };

@@ -886,7 +889,7 @@ static struct dvb_usb_device_properties

.i2c_algo = af9035_i2c_algo,

-   .num_device_descs = 4,
+   .num_device_descs = 5,
.devices = {
{
.name = TerraTec Cinergy T Stick,
@@ -911,6 +914,10 @@ static struct dvb_usb_device_properties
af9035_id[AF9035_07CA_1867],
af9035_id[AF9035_07CA_A867],
},
+   }, {
+   .name = AVerMedia Twinstar (0825),
+   .cold_ids = {
+   af9035_id[AF9035_07CA_0235],
},
}
},

--- drivers/media/dvb/dvb-usb/dvb-usb-ids.h.origin  2012-04-05
15:32:15.229075128 +0200
+++ drivers/media/dvb/dvb-usb/dvb-usb-ids.h 2012-04-05 15:27:22.775074099 
+0200
@@ -228,6 +228,7 @@
 #define USB_PID_AVERMEDIA_B835 0xb835
 #define USB_PID_AVERMEDIA_1867 0x1867
 #define USB_PID_AVERMEDIA_A867 0xa867
+#define USB_PID_AVERMEDIA_TWINSTAR 0x0825
 #define USB_PID_TECHNOTREND_CONNECT_S2400   0x3006
 #define USB_PID_TECHNOTREND_CONNECT_CT3650 0x300d
 #define USB_PID_TERRATEC_CINERGY_DT_XS_DIVERSITY   0x005a


Il 05 aprile 2012 16:23, pierigno pieri...@gmail.com ha scritto:
 hello,

 these are the definitions needed for AVermedia Twinstar. The stick
 works correctly so far: I was also able to tune many channels through
 kaffeine (~300 channels here in Turin, Italy). and watching
 continuously a channel for 4 hours without interruptions or visual
 glitches. Switching from one channel to another takes ~1 sec. Just one
 tuner is recognized at the moment.

 Regards,
 Pierangelo Terzulli


 --- a/drivers/media/dvb/dvb-usb/af9035.c
 +++ b/drivers/media/dvb/dvb-usb/af9035.c
 @@ -821,29 +821,68 @@ err:

  enum af9035_id_entry {
       AF9035_0CCD_0093,
 +       AF9035_0CCD_00AA,
       AF9035_15A4_9035,
 +       AF9035_15A4_1000,
       AF9035_15A4_1001,
 +       AF9035_15A4_1002,
 +       AF9035_15A4_1003,
 +       AF9035_07CA_0825,
 +       AF9035_07CA_A825,
 +       AF9035_07CA_0835,
       AF9035_07CA_A835,
       AF9035_07CA_B835,
 +       AF9035_07CA_A333,
 +       AF9035_07CA_0337,
 +       AF9035_07CA_F337,
 +       AF9035_07CA_0867,
       AF9035_07CA_1867,
 +       AF9035_07CA_3867,
       AF9035_07CA_A867,
 +       AF9035_07CA_B867,
  };

  static struct usb_device_id af9035_id[] = {
       [AF9035_0CCD_0093] = {
               USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_CINERGY_T_STICK)},
 +       [AF9035_0CCD_00AA] = {
 +               USB_DEVICE(USB_VID_TERRATEC,
 USB_PID_TERRATEC_CINERGY_T_STICK_2)},
       [AF9035_15A4_9035] = {
               USB_DEVICE(USB_VID_AFATECH, USB_PID_AFATECH_AF9035)},
 -       [AF9035_15A4_1001] = {
 +       [AF9035_15A4_1000] = {
               USB_DEVICE(USB_VID_AFATECH, USB_PID_AFATECH_AF9035_2)},
 +       [AF9035_15A4_1001] = {
 +               USB_DEVICE(USB_VID_AFATECH, USB_PID_AFATECH_AF9035_3)},
 +       [AF9035_15A4_1002] = {
 +               USB_DEVICE(USB_VID_AFATECH, USB_PID_AFATECH_AF9035_4)},
 +       [AF9035_15A4_1003] = {
 +               USB_DEVICE(USB_VID_AFATECH, USB_PID_AFATECH_AF9035_5)},
 +       [AF9035_07CA_0825] = {
 +               USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_0825)},
 +       [AF9035_07CA_A825] = {
 +               USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_A825)},
 +       [AF9035_07CA_0835] = {
 +               USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_0835)},
       [AF9035_07CA_A835] = {
               USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_A835)},
       [AF9035_07CA_B835] = {
               USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_B835)},
 +       [AF9035_07CA_A333] = {
 +               USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_A333)},
 +       [AF9035_07CA_0337

Re: [PATCH] af9035: add several new USB IDs

2012-04-05 Thread pierigno
Damn!! here it is again, corrected. I'm really sorry, thanks for the patience :)

 Also, I think the name should be something like AVerMedia Twinstar
 (A825) since Avermedia code names usually are Axxx.

I thought the name between parenthesis was after the usb pvid value so
I used that value.
This is what I get with lsusb:

# lsusb
bus 003 Device 002: ID 07ca:0825 AVerMedia Technologies, Inc.

I've modified the name with AVermedia Twinstar (A825) as you
suggested, should I revert it?


--- drivers/media/dvb/dvb-usb/af9035.c.origin   2012-04-05
15:31:55.431075058 +0200
+++ drivers/media/dvb/dvb-usb/af9035.c  2012-04-05 15:26:44.483073976 +0200
@@ -827,6 +827,7 @@ enum af9035_id_entry {
  AF9035_07CA_B835,
  AF9035_07CA_1867,
  AF9035_07CA_A867,
+   AF9035_07CA_0825,
 };

 static struct usb_device_id af9035_id[] = {
@@ -844,6 +845,8 @@ static struct usb_device_id af9035_id[]
  USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_1867)},
  [AF9035_07CA_A867] = {
  USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_A867)},
+   [AF9035_07CA_0825] = {
+   USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_TWINSTAR)},
  {},
 };

@@ -886,7 +889,7 @@ static struct dvb_usb_device_properties

  .i2c_algo = af9035_i2c_algo,

-   .num_device_descs = 4,
+   .num_device_descs = 5,
  .devices = {
  {
  .name = TerraTec Cinergy T Stick,
@@ -911,6 +914,10 @@ static struct dvb_usb_device_properties
  af9035_id[AF9035_07CA_1867],
  af9035_id[AF9035_07CA_A867],
  },
+   }, {
+   .name = AVerMedia Twinstar (A825),
+   .cold_ids = {
+   af9035_id[AF9035_07CA_0825],
  },
  }
  },

--- drivers/media/dvb/dvb-usb/dvb-usb-ids.h.origin  2012-04-05
15:32:15.229075128 +0200
+++ drivers/media/dvb/dvb-usb/dvb-usb-ids.h 2012-04-05
15:27:22.775074099 +0200
@@ -228,6 +228,7 @@
 #define USB_PID_AVERMEDIA_B835 0xb835
 #define USB_PID_AVERMEDIA_1867 0x1867
 #define USB_PID_AVERMEDIA_A867 0xa867
+#define USB_PID_AVERMEDIA_TWINSTAR 0x0825
 #define USB_PID_TECHNOTREND_CONNECT_S2400   0x3006
 #define USB_PID_TECHNOTREND_CONNECT_CT3650 0x300d
 #define USB_PID_TERRATEC_CINERGY_DT_XS_DIVERSITY   0x005a


Signed-off-by: Pierangelo Terzulli pieri...@gmail.com

Il 05 aprile 2012 18:20, Gianluca Gennari gennar...@gmail.com ha scritto:
 Thanks Pierangelo,
 but there are still issues with your patch.
 See in-line comments.

 Il 05/04/2012 16:34, pierigno ha scritto:
 gosh!! I pasted the wrong patch, sorry for the noise, here it is (it
 should be applied against
 http://git.linuxtv.org/anttip/media_tree.git/shortlog/refs/heads/af9035_experimental):


 --- drivers/media/dvb/dvb-usb/af9035.c.origin 2012-04-05
 15:31:55.431075058 +0200
 +++ drivers/media/dvb/dvb-usb/af9035.c        2012-04-05 15:26:44.483073976 
 +0200
 @@ -827,6 +827,7 @@ enum af9035_id_entry {
       AF9035_07CA_B835,
       AF9035_07CA_1867,
       AF9035_07CA_A867,
 +     AF9035_07CA_0825,

 here you define AF9035_07CA_0825

  };

  static struct usb_device_id af9035_id[] = {
 @@ -844,6 +845,8 @@ static struct usb_device_id af9035_id[]
               USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_1867)},
       [AF9035_07CA_A867] = {
               USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_A867)},
 +     [AF9035_07CA_0825] = {
 +             USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_TWINSTAR)},
       {},
  };

 @@ -886,7 +889,7 @@ static struct dvb_usb_device_properties

               .i2c_algo = af9035_i2c_algo,

 -             .num_device_descs = 4,
 +             .num_device_descs = 5,
               .devices = {
                       {
                               .name = TerraTec Cinergy T Stick,
 @@ -911,6 +914,10 @@ static struct dvb_usb_device_properties
                                       af9035_id[AF9035_07CA_1867],
                                       af9035_id[AF9035_07CA_A867],
                               },
 +                     }, {
 +                             .name = AVerMedia Twinstar (0825),
 +                             .cold_ids = {
 +                                     af9035_id[AF9035_07CA_0235],

 ... and here you use AF9035_07CA_0235!
 Also, I think the name should be something like AVerMedia Twinstar
 (A825) since Avermedia code names usually are Axxx.


                       },
               }
       },

 --- drivers/media/dvb/dvb-usb/dvb-usb-ids.h.origin    2012-04-05
 15:32:15.229075128 +0200
 +++ drivers/media/dvb/dvb-usb/dvb-usb-ids.h   2012-04-05 15:27:22.775074099 
 +0200
 @@ -228,6 +228,7 @@
  #define