| « WYSIWYG JavaScript GUI builder | Install NuPIC v1.7.1 on OpenSuSE 11.3 64bits and python version 2.6.2. » |
How to Install DGTechnics Smart HDTV/FM on Linux
DGTechnics Smart HDTV/FM is one of the cheapest TV/capture cards in the market. It has been built using a TM6010 chipset from Trident. Unfortunatelly this chip is not supported in standard linux. I hve tried to install it and finally it gets working even better than the standard installation in Windows. I have used Video4Linux drivers as the base. There is a guide to install TM6000 Familly chipsets on the Video4Linux Wiki pages take a look here. But it is not complete and TM6010 driver installation needs more steps. I’ll explain here, all the steps to get it working:
- First you must ensure that you have installed development packages. Needed packages are:
- gcc, make, kernel-source, kernel-devel.
These packages has dependencies so you better install them using your distro package manager:- YaST, Zypper: OpenSuSE, SuSE
- RPM: OpenSuSE, RedHat, Fedora, Centos, …
- apt-get: Debian, Ubuntu, Kubuntu, Knoppix, …
- Now you must install Mercurial package to be able to download Video4Linux Drivers. Install it by your desired package manager or by compiling from the source.
- Now you must clone the latest Video4Linux drivers. Do as follows:
- Currently TM6010 driver is in experimental version so you must active it before compiling drivers. to do so do as follows
- Mark Stagging drivers
- Select Media devices in stagging
- Mark TV Master TM5600/6000/6010 driver
- Exit and save configurations
- Now compile the drivers:
- DGTechnics Smart HDTV/FM uses XC3028 as the TV tuner chip so you must install it even if you don't need the TV functionallity. This chip's driver has been compiled in the last step but there is no firmware to active it. You can download a functional compatible firmware for this chipset from:
http://www.steventoth.net/linux/xc5000/HVR-12x0-14x0-17x0_1_25_25271_WHQL.zip
which has been released for HVR-12x0 TV Tuner cards. To extract the firmware do a s follows: - I prefer to monitor kernel messages before activating the card. To do so I have written an script like this:
Code:
Now change it's mode to executable and run it:$ cat > mondmesg.sh#!/bin/shwhile [ 1 = 1 ]dodmesg -csleep 1done[press CTRL+D to Save]
$ chmod a+x mondmesg
$ sudo ./mondmesg.sh
All the kernel messages are dumped. Press Carriage return twice to have space between old and new kernel messages.
- Now install the receiver card in one of yoour USB ports. You will get a message similar to the following:
- Now setup the card using following command:
- Now you can check your installation using a video player such as MPlayer or VLC I prefer MPlayer because it is capable to switch the card to video capture mode and setup some filters and receiving parameters. A sample command to start capturing from the composit input of the card is as the following:
$hg clone http://linuxtv.org/hg/v4l-dvb
$ cd v4l-dvb
$ make menuconfig
On the menu appeared:
$ make
$ sudo make install
$ unzip -j HVR-12x0-14x0-17x0_1_25_25271_WHQL.zip Driver85/hcw85bda.sys
$ wget www.kernel.org/doc/Documentation/video4linux/extract_xc3028.pl
$ ./extract_xc3028.pl
$ sudo mv xc3028-v27.fw /lib/firmware
Code:
[15.370020] usb 1-7: new high speed USB device using ehci_hcd and address 5 | |
[15.489972] usb 1-7: New USB device found, idVendor=6000, idProduct=0002 | |
[15.489980] usb 1-7: New USB device strings: Mfr=16, Product=32, SerialNumber=64 | |
[15.489986] usb 1-7: Product: TVBOX | |
[15.489989] usb 1-7: Manufacturer: Trident | |
[15.489993] usb 1-7: SerialNumber: 2004090820040908 | |
[15.490097] usb 1-7: configuration #1 chosen from 1 choice |
$ sudo modprobe tm6000
Kernel messages will be similar to the following:
Code:
[16.763509] tm6000 v4l2 driver version 0.0.2 loaded | |
[16.764439] tm6000: alt 0, interface 0, class 255 | |
[16.764445] tm6000: alt 0, interface 0, class 255 | |
[16.764449] tm6000: Bulk IN endpoint: 0x82 (max size=512 bytes) | |
[16.764454] tm6000: alt 0, interface 0, class 255 | |
[16.764457] tm6000: alt 1, interface 0, class 255 | |
[16.764461] tm6000: ISOC IN endpoint: 0x81 (max size=3072 bytes) | |
[16.764466] tm6000: alt 1, interface 0, class 255 | |
[16.764469] tm6000: alt 1, interface 0, class 255 | |
[16.764473] tm6000: alt 2, interface 0, class 255 | |
[16.764477] tm6000: alt 2, interface 0, class 255 | |
[16.764481] tm6000: alt 2, interface 0, class 255 | |
[16.764485] tm6000: alt 3, interface 0, class 255 | |
[16.764488] tm6000: alt 3, interface 0, class 255 | |
[16.764492] tm6000: alt 3, interface 0, class 255 | |
[16.764496] tm6000: New video device @ 480 Mbps (6000:0002, ifnum 0) | |
[16.764500] tm6000: Found Generic tm6010 board | |
[17.227017] Board version = 0x67980bf4 | |
[17.500019] board=0x67980bf4 | |
[17.594015] tm6000 #0: i2c eeprom 00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
[17.730016] tm6000 #0: i2c eeprom 10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
[17.870015] tm6000 #0: i2c eeprom 20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
[18.009503] tm6000 #0: i2c eeprom 30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
[18.156008] tm6000 #0: i2c eeprom 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
[18.300543] tm6000 #0: i2c eeprom 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
[18.438016] tm6000 #0: i2c eeprom 60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
[18.574016] tm6000 #0: i2c eeprom 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
[18.710017] tm6000 #0: i2c eeprom 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
[18.850013] tm6000 #0: i2c eeprom 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
[18.994015] tm6000 #0: i2c eeprom a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
[19.130010] tm6000 #0: i2c eeprom b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
[19.266017] tm6000 #0: i2c eeprom c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
[19.402016] tm6000 #0: i2c eeprom d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
[19.538015] tm6000 #0: i2c eeprom e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
[19.674016] tm6000 #0: i2c eeprom f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
[19.806017] ................ | |
[19.807484] tuner 7-0061: chip found @ 0xc2 (tm6000 #0) | |
[19.807560] xc2028 7-0061: creating new instance | |
[19.807565] xc2028 7-0061: type set to XCeive xc2028/xc3028 tuner | |
[19.807570] Setting firmware parameters for xc2028 | |
[19.807577] usb 1-7: firmware: requesting xc3028-v27.fw | |
[19.826698] xc2028 7-0061: Loading 80 firmware from xc3028-v27.fw, type: xc2028 firmware, ver 2.7 | |
[20.100016] xc2028 7-0061: Loading firmware for type=BASE (1), id 0000000000000000. |
And After 5 Seconds youo will get following messages:
Code:
[25.131013] xc2028 7-0061: Loading firmware for type=(0), id 000000000000b700. | |
[25.815237] SCODE (20000000), id 000000000000b700: | |
[25.815249]xc2028 7-0061: Loading SCODE for type=MONO SCODE HAS_IF_4320 (60008000), id 0000000000008000. | |
[25.623097] Trident TVMaster TM5600/TM6000/TM6010 USB2 board (Load status: 0) | |
[25.623124] usbcore: registered new interface driver tm6000 | |
[25.624315] tm6000: open called (dev=video1) | |
[25.455023] Original value=255 | |
[25.471398] tm6000: open called (dev=video1) |
In the last line of the kernel message you will find device video number:
open called (dev=video1)Also you will have a same named vido device in /dev
$ mplayer tv:// -tv "device=/dev/video1:noaudio:norm=PAL-BG:input=1:outfmt=uyvy"
Which will start capturing from composite (caused by input number 1) in PAL mode and output format set to YUV. Then you can use any video player or video capture program such as VLC, OpenCV, Matlab, ... to capture from this video device. Take note that first time you have setup the card there will be a delay about 10 seconds before showing up any video.
Trackback address for this post
8 comments
P.S.: when it start my card search the firmware xc3028-v36.fw, not xc3028-v27.fw. I have copied the -v27 to -v36, because I don't see any way to generate -v36.fw.
I think you are looking for xc3028L-v36.fw firmware.
You can get it from http://www.stefanringel.de/pub/xc3028L-v36.fw
Vivek.
dmesg
[17776.444707] tm6000: module is from the staging directory, the quality is unknown, you have been warned.
[17776.445993] tm6000 v4l2 driver version 0.0.2 loaded
[17776.446069] usbcore: registered new interface driver tm6000
bat
xawtv -hwscan
This is xawtv-3.95.dfsg.1, running on Linux/x86_64 (3.0.0-13-generic)
looking for available devices
port 143-146
type : Xvideo, image scaler
name : ATI Radeon AVIVO Video
/dev/video0: No existe el dispositivo o la dirección
/dev/video1: No existe el dispositivo o la dirección
/dev/video2: No existe el dispositivo o la dirección
/dev/video3: No existe el dispositivo o la dirección
tvtime -d /dev/video1
Ejecutando tvtime 1.0.2.
Leyendo la configuración de /etc/tvtime/tvtime.xml
Leyendo la configuración de /home/lester/.tvtime/tvtime.xml
videoinput: Cannot open capture device /dev/video1: No existe el dispositivo o la dirección
mixer: find error: Conseguido
mixer: Can't open mixer default, mixer volume and mute unavailable.
mixer: Can't open device default/Line, mixer volume and mute unavailable.
tvtime -d /dev/video0
Ejecutando tvtime 1.0.2.
Leyendo la configuración de /etc/tvtime/tvtime.xml
Leyendo la configuración de /home/lester/.tvtime/tvtime.xml
videoinput: Cannot open capture device /dev/video0: No existe el dispositivo o la dirección
mixer: find error: Conseguido
mixer: Can't open mixer default, mixer volume and mute unavailable.
mixer: Can't open device default/Line, mixer volume and mute unavailable.
What happend please, some ideas???
Seems that driver has not been installed correctly. In Step 9 after modeprobing you must have /dev/video# but all of your program logs say that you don't have this device. Re-chcek your nstallation process and send me dmesg output after each step. Si prefieres puedo ayudarte en espanol. Dimelo por email.
"[ 4551.553041] tuner 4-0061: Tuner -1 found with type(s) Radio TV.
[ 4551.553075] xc2028 4-0061: creating new instance
[ 4551.553082] xc2028 4-0061: type set to XCeive xc2028/xc3028 tuner
[ 4551.553087] Setting firmware parameters for xc2028
[ 4551.557432] xc2028 4-0061: Error: firmware xc3028-v24.fw not found.
[ 4551.561664] xc2028 4-0061: Error: firmware xc3028-v24.fw not found.
[ 4551.561742] tm6000 #0: registered device video0
[ 4551.561744] Trident TVMaster TM5600/TM6000/TM6010 USB2 board (Load status: 0)
[ 4551.805479] tm6000: open called (dev=video0)
[ 4551.903442] xc2028 4-0061: Error: firmware xc3028-v24.fw not found."
So I downloaded UDXTTM6000.sys and created firmware xc3028-v24.fw. Now the dmesg is:
"[ 4775.427364] xc2028 4-0061: creating new instance
[ 4775.427367] xc2028 4-0061: type set to XCeive xc2028/xc3028 tuner
[ 4775.427369] Setting firmware parameters for xc2028
[ 4775.430371] xc2028 4-0061: Loading 77 firmware images from xc3028-v24.fw, type: xc2028 firmware, ver 2.4
[ 4775.704126] xc2028 4-0061: Loading firmware for type=BASE (1), id 0000000000000000.
[ 4789.232057] xc2028 4-0061: Loading firmware for type=(0), id 000000000000b700.
[ 4789.691093] SCODE (20000000), id 000000000000b700:
[ 4789.691109] xc2028 4-0061: Loading SCODE for type=MONO SCODE HAS_IF_4320 (60008000), id 0000000000008000.
[ 4789.814194] xc2028 4-0061: Incorrect readback of firmware version.
[ 4790.139079] xc2028 4-0061: Loading firmware for type=BASE (1), id 0000000000000000."
Interestingly, lsusb returns: "Bus 002 Device 019: ID 6000:0001 Beholder International Ltd." and not Trident TV Box.
I'm stumped
Thanks
Which stick has you and which component has it? We must add yours as indivitually stick. Your tuner needed Version 2.7 and if it's xc3028L then the Version 3.6 (PS: the vendor id's "6000" is trident, but beholder has it now.).
Stefan Ringel
my usb tv tuner is epro pendrive tv tuner. everything is fine until step 8. when i connect my usb tv tuner into usb port, in mondmesg.sh shows:
[ 172.324151] usb 2-1: new high-speed USB device number 5 using ehci_hcd
[ 172.465604] usb 2-1: New USB device found, idVendor=6000, idProduct=0001
[ 172.465616] usb 2-1: New USB device strings: Mfr=16, Product=32, SerialNumber=64
[ 172.465625] usb 2-1: Product: TVBOX
[ 172.465633] usb 2-1: Manufacturer: Trident
[ 172.465640] usb 2-1: SerialNumber: 2004090820040908
[ 172.602809] tm6000: alt 0, interface 0, class 255
[ 172.602814] tm6000: alt 0, interface 0, class 255
[ 172.602817] tm6000: Bulk IN endpoint: 0x82 (max size=512 bytes)
[ 172.602820] tm6000: alt 1, interface 0, class 255
[ 172.602822] tm6000: ISOC IN endpoint: 0x81 (max size=3072 bytes)
[ 172.602825] tm6000: alt 1, interface 0, class 255
[ 172.602828] tm6000: alt 2, interface 0, class 255
[ 172.602830] tm6000: alt 2, interface 0, class 255
[ 172.602833] tm6000: New video device @ 480 Mbps (6000:0001, ifnum 0)
[ 172.602835] tm6000: Found Generic tm5600 board
[ 172.617394] tm6000 #0: i2c eeprom 00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
[ 172.828404] tm6000 #0: i2c eeprom 10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
[ 173.038778] tm6000 #0: i2c eeprom 20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
[ 173.249753] tm6000 #0: i2c eeprom 30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
[ 173.460085] tm6000 #0: i2c eeprom 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
[ 173.676041] tm6000 #0: i2c eeprom 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
[ 173.887370] tm6000 #0: i2c eeprom 60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
[ 174.098648] tm6000 #0: i2c eeprom 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
[ 174.309194] tm6000 #0: i2c eeprom 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
[ 174.520286] tm6000 #0: i2c eeprom 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
[ 174.731243] tm6000 #0: i2c eeprom a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
[ 174.942672] tm6000 #0: i2c eeprom b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
[ 175.154026] tm6000 #0: i2c eeprom c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
[ 175.365406] tm6000 #0: i2c eeprom d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
[ 175.577077] tm6000 #0: i2c eeprom e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
[ 175.788651] tm6000 #0: i2c eeprom f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
[ 175.985689] Device has eeprom but is currently unknown
[ 175.992644] Found tm6000
[ 176.532958] tuner 7-0061: Tuner -1 found with type(s) Radio TV.
[ 176.902129] xc2028 7-0061: creating new instance
[ 176.902135] xc2028 7-0061: type set to XCeive xc2028/xc3028 tuner
[ 176.902140] Setting firmware parameters for xc2028
[ 176.912567] xc2028 7-0061: Loading 77 firmware images from xc3028-v24.fw, type: xc2028 firmware, ver 2.4
[ 177.192114] xc2028 7-0061: Loading firmware for type=BASE (1), id 0000000000000000.
[ 184.404771] xc2028 7-0061: Loading firmware for type=(0), id 000000000000b700.
[ 184.847691] SCODE (20000000), id 000000000000b700:
[ 184.847707] xc2028 7-0061: Loading SCODE for type=MONO SCODE HAS_IF_4320 (60008000), id 0000000000008000.
[ 184.931174] xc2028 7-0061: Incorrect readback of firmware version.
[ 185.264104] xc2028 7-0061: Loading firmware for type=BASE (1), id 0000000000000000.
[ 192.481312] xc2028 7-0061: Loading firmware for type=(0), id 000000000000b700.
[ 192.920428] SCODE (20000000), id 000000000000b700:
[ 192.920443] xc2028 7-0061: Loading SCODE for type=MONO SCODE HAS_IF_4320 (60008000), id 0000000000008000.
[ 193.004076] xc2028 7-0061: Incorrect readback of firmware version.
[ 193.340102] xc2028 7-0061: Loading firmware for type=BASE (1), id 0000000000000000.
[ 200.558149] xc2028 7-0061: Loading firmware for type=(0), id 000000000000b700.
[ 200.998912] SCODE (20000000), id 000000000000b700:
[ 200.998928] xc2028 7-0061: Loading SCODE for type=MONO SCODE HAS_IF_4320 (60008000), id 0000000000008000.
[ 201.081572] xc2028 7-0061: Incorrect readback of firmware version.
[ 201.416077] xc2028 7-0061: Loading firmware for type=BASE (1), id 0000000000000000.
[ 208.634326] xc2028 7-0061: Loading firmware for type=(0), id 000000000000b700.
[ 209.073533] SCODE (20000000), id 000000000000b700:
[ 209.073548] xc2028 7-0061: Loading SCODE for type=MONO SCODE HAS_IF_4320 (60008000), id 0000000000008000.
[ 209.156448] xc2028 7-0061: Incorrect readback of firmware version.
[ 209.492101] xc2028 7-0061: Loading firmware for type=BASE (1), id 0000000000000000.
[ 216.708788] xc2028 7-0061: Loading firmware for type=(0), id 000000000000b700.
[ 217.151161] SCODE (20000000), id 000000000000b700:
[ 217.151175] xc2028 7-0061: Loading SCODE for type=MONO SCODE HAS_IF_4320 (60008000), id 0000000000008000.
[ 217.234162] xc2028 7-0061: Incorrect readback of firmware version.
[ 217.568093] xc2028 7-0061: Loading firmware for type=BASE (1), id 0000000000000000.
[ 224.786167] xc2028 7-0061: Loading firmware for type=(0), id 000000000000b700.
[ 225.228038] SCODE (20000000), id 000000000000b700:
[ 225.228054] xc2028 7-0061: Loading SCODE for type=MONO SCODE HAS_IF_4320 (60008000), id 0000000000008000.
[ 225.311672] xc2028 7-0061: Incorrect readback of firmware version.
[ 225.644152] xc2028 7-0061: Loading firmware for type=BASE (1), id 0000000000000000.
its is caused by incorrect firmware version, right? CMIIW. so how to fix it?
best regards and keep your good work.
You must find an upgraded firmware. I don't know where you can but maybe you can extract it from the windows version. 


