Hi All,
   I had bought a "USB 2.0 laptop TV tuner card" (as mentioned on the device).
It has a TM5600 chip with following written on it.

TVMASTER
TM5600 B HCCO2
D49KK 1 0923
2013F0F906F071003

Downloaded the v4l code and compiled on Ubuntu 2.6.32-25-generic.

Loaded the drivers in following order.

insmod v4l1-compat.ko
insmod videodev.ko
insmod v4l2-common.ko
insmod videobuf-core.ko
insmod videobuf-vmalloc.ko
insmod tm6000.ko
insmod tea5761.ko
insmod mt20xx.ko
insmod tda9887.ko
insmod videodev.ko
insmod tea5767.ko
insmod xc5000.ko
insmod tuner-xc2028.ko
insmod tda8290.ko
insmod tuner-types.ko
insmod tuner-simple.ko
insmod tuner.ko

Kernel was able to detect the card with a usb id of (0x6000, 0x0001)
tried to load the firmware which seems to succeed.

=== LOG BEGIN ===
kernel: [ 5125.600265] usb 2-1: new high speed USB device using
ehci_hcd and address 9
kernel: [ 5125.742106] usb 2-1: configuration #1 chosen from 1 choice
kernel: [ 5125.745661] tm6000: alt 0, interface 0, class 255
kernel: [ 5125.745669] tm6000: alt 0, interface 0, class 255
kernel: [ 5125.745675] tm6000: Bulk IN endpoint: 0x82 (max size=512 bytes)
kernel: [ 5125.745681] tm6000: alt 1, interface 0, class 255
kernel: [ 5125.745686] tm6000: ISOC IN endpoint: 0x81 (max size=3072 bytes)
kernel: [ 5125.745692] tm6000: alt 1, interface 0, class 255
kernel: [ 5125.745698] tm6000: alt 2, interface 0, class 255
kernel: [ 5125.745703] tm6000: alt 2, interface 0, class 255
kernel: [ 5125.745709] tm6000: New video device @ 480 Mbps (6000:0001, ifnum 0)
kernel: [ 5125.745714] tm6000: Found 10Moons UT 821
kernel: [ 5126.524188] Board version = 0x67980cf3
kernel: [ 5126.724163] tm6000 #5: i2c eeprom 00: 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00  ................
kernel: [ 5127.012071] tm6000 #5: i2c eeprom 10: 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00  ................
kernel: [ 5127.300225] tm6000 #5: i2c eeprom 20: 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00  ................
kernel: [ 5127.588227] tm6000 #5: i2c eeprom 30: 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00  ................
kernel: [ 5127.876192] tm6000 #5: i2c eeprom 40: 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00  ................
kernel: [ 5128.164118] tm6000 #5: i2c eeprom 50: 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00  ................
kernel: [ 5128.456206] tm6000 #5: i2c eeprom 60: 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00  ................
kernel: [ 5128.744170] tm6000 #5: i2c eeprom 70: 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00  ................
kernel: [ 5129.032200] tm6000 #5: i2c eeprom 80: 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00  ................
kernel: [ 5129.320109] tm6000 #5: i2c eeprom 90: 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00  ................
kernel: [ 5129.604091] tm6000 #5: i2c eeprom a0: 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00  ................
kernel: [ 5129.892102] tm6000 #5: i2c eeprom b0: 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00  ................
kernel: [ 5130.181833] tm6000 #5: i2c eeprom c0: 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00  ................
kernel: [ 5130.468116] tm6000 #5: i2c eeprom d0: 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00  ................
kernel: [ 5130.764229] tm6000 #5: i2c eeprom e0: 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00  ................
kernel: [ 5131.053186] tm6000 #5: i2c eeprom f0: 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00  ................
kernel: [ 5131.320180]   ................
kernel: [ 5131.323658] tuner 5-0061: chip found @ 0xc2 (tm6000 #5)
kernel: [ 5131.323675] xc2028 5-0061: creating new instance
kernel: [ 5131.323682] xc2028 5-0061: type set to XCeive xc2028/xc3028 tuner
kernel: [ 5131.323687] Setting firmware parameters for xc2028
kernel: [ 5131.323700] usb 2-1: firmware: requesting xc3028-v24.fw
kernel: [ 5131.328769] xc2028 5-0061: Loading 77 firmware images from
xc3028-v24.fw, type: xc2028 firmware, ver 2.4
kernel: [ 5131.432183] xc2028 5-0061: Loading firmware for type=BASE
(1), id 0000000000000000.
kernel: [ 5165.608114] xc2028 5-0061: Loading firmware for type=(0),
id 000000000000b700.
kernel: [ 5166.868179] SCODE (20000000), id 000000000000b700:
kernel: [ 5166.868194] xc2028 5-0061: Loading SCODE for type=MONO
SCODE HAS_IF_4320 (60008000), id 0000000000008000.
kernel: [ 5167.328194] xc2028 5-0061: Loading firmware for type=BASE
(1), id 0000000000000000.
kernel: [ 5201.500190] xc2028 5-0061: Loading firmware for type=(0),
id 000000000000b700.
kernel: [ 5202.761170] SCODE (20000000), id 000000000000b700:
kernel: [ 5202.761186] xc2028 5-0061: Loading SCODE for type=MONO
SCODE HAS_IF_4320 (60008000), id 0000000000008000.
kernel: [ 5203.564193] xc2028 5-0061: Loading firmware for type=BASE
(1), id 0000000000000000.
kernel: [ 5237.764133] xc2028 5-0061: Loading firmware for type=(0),
id 000000000000b700.
kernel: [ 5239.028085] SCODE (20000000), id 000000000000b700:
kernel: [ 5239.028101] xc2028 5-0061: Loading SCODE for type=MONO
SCODE HAS_IF_4320 (60008000), id 0000000000008000.
kernel: [ 5239.488226] xc2028 5-0061: Loading firmware for type=BASE
(1), id 0000000000000000.
kernel: [ 5273.669181] xc2028 5-0061: Loading firmware for type=(0),
id 000000000000b700.
kernel: [ 5274.932188] SCODE (20000000), id 000000000000b700:
kernel: [ 5274.932204] xc2028 5-0061: Loading SCODE for type=MONO
SCODE HAS_IF_4320 (60008000), id 0000000000008000.
kernel: [ 5275.632325] Trident TVMaster TM5600/TM6000/TM6010 USB2
board (Load status: 0)
=== LOG END ===

Now when I try to access /dev/vide0,  I get the urb failed error messages.

I doubt that the Firmware did not load correctly. After digging into
more details, it seems that the
existing "tm6000" driver is written assuming that the device has an XC
2028 chip inside, while in my
case I do not see any such chip.

I am not much familiar with organization of these chip,
what I saw inside was only the following chips.

1. TM5600 tvmaster
2. NXD TDA9801T (VFX7K0)
3. One big receiver with TNF9022-BF written on it
4. Two more small IC's (difficult to read)

>From my debugging I concluded that since I do not have the XC2028
chip, so the firmware will not work.

The device works fine on windows XP and has the following driver files.

-r-------- 1 pm pm   3584 2011-06-01 20:20 triddev.sys
-r-------- 1 pm pm   8050 2011-06-01 20:20 tridvid.inf
-r-------- 1 pm pm 201216 2011-06-01 20:20 tridvid.sys
-r-------- 1 pm pm  28672 2011-06-01 20:20 VendorCmdRW.dll

I ran usb snoop to dump the USB packets in windows and have a log for
the same. I do
not have much of experience in doing this kind of engineering (yet !)

Here is the log of the packets I get from SnoopyPro in windows

===============
URB Header (length: 80)
SequenceNumber: 4
Function: 0017 (VENDOR_DEVICE)
PipeHandle: 8682dba8

SetupPacket:
0000: 00 07 df 00 1f 00 00 00
bmRequestType: 00
  DIR: Host-To-Device
  TYPE: Standard
  RECIPIENT: Device
bRequest: 07
  SET_DESCRIPTOR


No TransferBuffer

4       out up  n/a     0.026   CONTROL_TRANSFER        -       0x00000000
URB Header (length: 80)
SequenceNumber: 4
Function: 0008 (CONTROL_TRANSFER)
PipeHandle: 869356a8

SetupPacket:
0000: 40 07 df 00 1f 00 00 00
bmRequestType: 40
  DIR: Host-To-Device
  TYPE: Vendor
  RECIPIENT: Device
bRequest: 07


No TransferBuffer
================
(NOTE: THERE ARE MANY SUCH PACKETS, I HAVE LISTED ONLY TWO)

I have done some reverse engineering before and I am keen on making my
device work
under Linux.

Would request some pointer/guidance on how to extract the firmware from the
USB snoop log or any other alternative approach.

thanks,
~Raj

(PS: I am not in the linux-media list, would request a reply-all)
--
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

Reply via email to