Linux Driver for VisionPlus VisionDTV USB-Ter DVB-T Device (VP7041) (http://www.twinhan.com/visiontv-2_4.htm) and CTS Portable (Chinese Television System) (http://www.2cts.tv/ctsportable/) Copyright (C) 2004 Patrick Boettcher (patrick.boettcher@desy.de), This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. Koenigs Wusterhausen, Germany NEWS: 2004-07-15 - found out, by accident, that the device has a TUA6010XS for frequency generator 2004-07-12 - figured out, that the driver should also work with the CTS Portable (Chinese Television System) 2004-07-08 - firmware-extraction-2.422-problem solved, driver is now working properly with firmware extracted from 2.422 - #if for 2.6.4 (dvb), compile issue - changed firmware handling, see vp7041.txt sec 1.1 2004-07-02 - some tuner modifications, v0.1, cleanups, first public 2004-06-28 - now using the dvb_dmx_swfilter_packets, everything runs fine now 2004-06-27 - able to watch and switching channels (pre-alpha) - no section filtering yet 2004-06-06 - first TS received, but kernel oops :/ 2004-05-14 - firmware loader is working 2004-05-11 - start writing the driver 0. About the driver. This driver is completly reverse-engineered by using the device on a guest PC with Windows (where a working driver exists). If you have a look into the source code, you will find a lot of buffers with a lot of hex-numbers in it. By all means, I will not assert, that I understand each of them. But this is like the windows driver controls the device, and obviously it is working even in Linux. If someone of you recognizes something in those buffers (maybe there is a frontend or any other device, which are fed like this) please let me know. If I could assign a function name to any of those anonymous numbers, I will be very happy. By all means, I will highly appreciate any comment, critic and patch to improve the quality of this piece of software. When using this driver your system can crash or hang. I'm not responsibly for any data you may lose. So be warned. (Enabling sysrq saves a lot of data). Addition: This driver should also work with the CTS Portable since the windriver seems to be identical to the Twinhan one. Comment on this badly needed. 1. How to use? NOTE: This driver was developed on Linux 2.6.6., it is working with 2.6.7. Linux 2.4.x support is not planned, but patches are very welcome. NOTE: I'm using Debian testing, so the following explaination (especially the hotplug-path) needn't match your system, but probably it will :). 1.1. Firmware extraction First of all you have to extract the firmware from the windows driver: Therefore "Peter Schildmann" originally wrote a shell script, I adopted it to a Perl script for easier supporting different firmware version. The firmware extract script can be found inside the dvb-kernel-cvs (script/vp7041_extract_firmware.pl). If you want to extract the firmware, you have to run the script like this: perl vp7041_extract_firmware.pl The driverfile can be found in the windows driver package. As of version 2.42 the windows driver the file is called "UDTTload.sys", older (but working) versions have "twinload.sys" respectively . (On a windows system, where the driver is in use, it can be found in \PathtoWindows\System32\drivers) The name of the firmware-file for linux has to be "dvb-vp7041-.fw" (the script cares about). The firmware has to be put into /usr/lib/hotplug/firmware (As I said Debian). If you figured out the driver file extract the firmware: perl vp7041_extract_firmware.pl /path/to/UDTTload.sys \ /usr/lib/hotplug/firmware 1.2. Compiling Since the driver is in the linux kernel, activating the driver in your favorite config-environment should sufficient. I recommend to compile the driver as module. Hotplug does the rest. 1.3. Loading the driver Hotplug is able to load the driver, when it is needed (because you plugged in the device). If you want to enable debug output, you have to load the driver manually. modprobe vp7041 debug=1 should do the trick. When the driver is loaded successfully, the firmware file was in the right place and the device is connected, the "Power"-LED should be turned on. If this is done, even in the non-debug mode, dmesg should show something like the following: DVB: registering new adapter (VisionPlus VisionDTV USB-Ter DVB-T Device). DVB: registering frontend 0:0 (VisionPlus VisionDTV USB-Ter (VP7041) Frontend)... VisionPlus VisionDTV USB-Ter DVB-T Device successfully initialized and connected. At this point you are able to start a dvb-capable application. For myself I used mplayer, dvbscan, tzap and kaxtv, they are working. Using the device as a slave device in vdr, was not working for me. Some work has to be done (patches and comments are very welcome). 2. Known problems and bugs see vp7041.c 2.1 TODO see vp7041.c again, patches and comments are very very welcome 3. Acknowledgements Alex Woods for frequently answering question about usb and dvb stuff, a big thank you Bernd Wagner for helping with huge bug reports and discussions. Some guys on the linux-dvb mailing list for encouraging me Peter Schildmann >peter.schildmann-nospam-at-web.de< for his user-level firmware loader, which saves a lot of time Ulf Hermenau for helping me out with traditional chinese. André Smoktun and Christian Frömmel for supporting me with hardware and listening to my problems very patient