Linux support for Digicom Digitune-S (vp7049, UDTT7049)
Support for the Digicom Digitune-S DVB-T USB stick will land in linux 3.9, the patch I sent was accepted along with other small refactorings.
The adapter can also be found under these names:
- Twinhan/Azurewave DTV-DVB UDTT7049
- Think Xtra Hollywood DVB-T USB2.0
A dump of the USB communication of the Windows driver is attached, it was captured using SniffUSB 2.0 and it can be made more readable using the parse-sniffusb2.pl tool from v4l-utils.
I used the dump also to figure out some details about the hardware: before writing any code I had to know what hardware components the adapter was using; the USB bridge (ULi M9206) and the frontend (MT352CG) could be seen clearly when opening the plastic case, but the tuner was protected by a metal shield and I couldn't easily find out what it was by reading the labels printed on the chip, so I tried to look at the USB communication to see if there were any clues, in particular these bits were useful:
40 23 c0 00 80 00 00 00 >>> 40 23 00 00 00 00 00 00 >>> 40 23 c1 00 80 00 00 00 >>> c0 23 00 00 60 00 01 00 <<< 63
I thought they had something to do with some chip identification, and in fact by following the m920x driver code you can derive that this communication means more or less: “read the register at address 0x00
of the I2C device at address 0x60
”; the returned value was 0x63
and by grepping through the kernel code for that value this turned out to be the same value used in the mt2060 driver for the PART_REV
constant, that was enough to understand what tuner the device was using and make the jigsaw complete.
At that point adding support for the adapter was easy as all the drivers of the single components were already in the kernel, even the remote control mapping was there: separation of responsibility and modularity are good; what a surprise, eh?
The firmware was extracted from the USB dumps too, by first using parse-sniffusb2.pl:
$ v4l-utils/contrib/parse-sniffusb2.pl usbsnoop-digicom-digitune-s-dump.log_ > parsed-Digitune-S-dump.log
and then by runing m920x_parse.pl on the pre-processed log with this command line:
$ perl v4l-utils/contrib/m920x/m920x_parse.pl -i us2 -m fw < parsed-Digitune-S-dump.log $ mv fw dvb-usb-vp7049-0.95.fw
While testing the adapter I've found out that signal reception improves when the little antenna with the magnetic base is on top of some metal object, I put mine on top of a candy tin box and I can get a few more channels, from what I read the physical principle that makes this work is the one of the ground plane of a monopole antenna.
Note to world: if you want any hardware of yours to be working under linux, just find a way to have some kernel hackers put their hands on it; the rest will come by itself.
Comments
Post new comment