Leadtek WinFast DTV2000DS PLUS

From LinuxTVWiki
Revision as of 11:22, 4 November 2013 by Jaredquinn (talk | contribs) (→‎Use with jaredquinn's driver)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Overview

This is a dual tuner DVB-T PCI card. It uses an onboard VIA PCI-USB bridge so behaves like a USB device, with USB ID 0413:6f12.

It has the RealTek RTL2832U chipset, unlike its sibling the Leadtek WinFast DTV2000DS which has the Afatech AF9015 and AF9013 chipset. Therefore drivers for the non-plus version will certainly not work.

Note that the official Leadtek product page [1] falsely states that it has the AF9015 and AF9013.

The card is currently unsupported, but it is possible to get it working with the existing RTL2832U drivers - see below. It may be similar to the Mygica T1800B PCI card, since they have very similar general specifications.

Identification

Output of lsusb -v:

Bus 003 Device 002: ID 0413:6f12 Leadtek Research, Inc. 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x0413 Leadtek Research, Inc.
  idProduct          0x6f12 
  bcdDevice            1.00
  iManufacturer           1 Realtek
  iProduct                2 WinFast DTV2000 DS Plus
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           25
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          4 USB2.0-Bulk&Iso
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              500mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass    255 Vendor Specific Subclass
      bInterfaceProtocol    255 Vendor Specific Protocol
      iInterface              5 Bulk-In, Interface
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  bNumConfigurations      2
Device Status:     0x0000
  (Bus Powered)

Use with jaredquinn's driver

I have gotten this card to work by patching the Ambrosa project (listed below) and keeping it updated to work with the latest Linux kernel sources (right up to 3.11.4 currently) or V4L-DVB source.

1- Ensure you have a full compile kit, Linux Source and git.

$ sudo apt-get install build-essential git

2- Get your Kernel or DVB-V4L source:

$ sudo apt-get install linux-headers-$(uname -r) linux-source-$(uname -r)  

Note: acquiring and installing DVB-V4L sources are covered in How_to_Obtain,_Build_and_Install_V4L-DVB_Device_Drivers)

3- clone the repository using git and go to source directory

$ git clone https://github.com/jaredquinn/DVB-Realtek-RTL2832U.git
$ cd DVB-Realtek-RTL2832U/src 

4- build it!

$ make

Note: if you are using the DVB-V4L source you can pass the DVB_SOURCE environment variable to make:

$ DVB_SOURCE=/usr/src/media_build/media/drivers/media make

Caveats:

  • In Ubuntu you may need to extract/unpack the kernel source or have a suitable symlink at /usr/src/linux-source-$(uname -r)

Notes:

  • No additional patching is required to work with a Leadtek Winfast DTV2000DS PLUS
  • No editing or copying of Kernel include files is required (make file should find them)

Use with Ambrosa's driver in Xubuntu 12.04

I have got this card to work using this driver [2] in Xubuntu 12.04 with the 3.2.0.37-generic kernel. I followed the instructions in the driver's README and made one minor edit. The full process is described here. Please note: distro selection is important. The driver only compiles against 3.2.x kernel headers, so Xubuntu 12.04.1 is okay, but for 12.04.2 (3.5.0 kernel) the compile will fail.

1- Install compile kit, linux headers and git

$ sudo apt-get install build-essential
$ sudo apt-get install linux-headers-$(uname -r)
$ sudo apt-get install git 

2- clone the repository using git and go to source directory

$ git clone https://github.com/ambrosa/DVB-Realtek-RTL2832U-2.2.2-10tuner-mod_kernel-3.0.0.git
$ cd DVB-Realtek-RTL2832U-2.2.2-10tuner-mod_kernel-3.0.0/RTL2832-2.2.2_kernel-3.0.0 

3- edit Makefile to change the option INCLUDE_EXTRA_DVB to suit the 3.2 kernel. This means commenting out the line "INCLUDE_EXTRA_DVB := include-300" and uncommenting the line "INCLUDE_EXTRA_DVB := include-320". Obviously don't do this if you have a 3.0 kernel. (3.0 kernel is untested with this card).

4- Now the special step! Edit the header file rtl2832u.h so that our device is recognised. The simplest way is to find the line
"#define USB_PID_LEADTEK_WARM_2 0x6F11"
and change the last digit to 2 so it reads
"#define USB_PID_LEADTEK_WARM_2 0x6F12".
This means we have stolen the Product ID of another Leadtek device that uses this driver. Simply adding a new line like
"#define USB_PID_LEADTEK_WARM_4 0x6F12"
is not sufficient.

5- Now continue with the README instructions. Compile the code, install and insert the module.

$ make clean
$ make
$ sudo make install
$ sudo modprobe dvb_usb_rtl2832u

The driver module should now load automatically each time you boot. This method worked with Scan and VLC. (Create a channels.conf file with scan, then open the file in VLC, or run $ vlc channels.conf).

The driver seems to cause problems with suspend.