Difference between revisions of "E3C EC168"

From LinuxTVWiki
Jump to: navigation, search
(EC168 Devices)
(Known USB requests)
Line 56: Line 56:
 
  #define CMD_EC168_STREAM    0x03 //R-X ex: dfu_ctrl(device,0x03,0/0x20,0xFF00);
 
  #define CMD_EC168_STREAM    0x03 //R-X ex: dfu_ctrl(device,0x03,0/0x20,0xFF00);
 
                                   //        disable/enable streaming  
 
                                   //        disable/enable streaming  
  #define CMD_EC168_SET_POWER 0x04 //--X ex: dfu_ctrl(device,0x04,0/1,0x0008);
+
  #define CMD_EC168_SET_POWER 0x04 //R-X ex: dfu_ctrl(device,0x04,0/1,0x0008);
 
                                   //        disable/enable LED
 
                                   //        disable/enable LED
                                   //        indexes seen: 206,208,8,9,A,B
+
                                   //        indexes seen in trace: 0x8,0x9,0xA,0xB,0x206,0x208 - Not a Binary Mask !
 
  #define CMD_EC168_UNKNOWN  0x10 //--X ???
 
  #define CMD_EC168_UNKNOWN  0x10 //--X ???
 
  #define CMD_EC168_READ_BUF  0x20 //R-- ex: dfu_ctrl_get(device,0x20,0x0000,0x01A0,buffer,0x1A);  
 
  #define CMD_EC168_READ_BUF  0x20 //R-- ex: dfu_ctrl_get(device,0x20,0x0000,0x01A0,buffer,0x1A);  

Revision as of 19:30, 7 December 2008

An USB controller, that also contains an embedded DVB-T demodulator, produced by Tai-Hui and marketed under the brand name e3C Technologies.

This IC is used in many cheap DVB-T USB Sticks. It is currently unsupported under Linux.

EC168 Devices

Known USB IDs are 18b4:1689, 18b4:fffa, 18b4:fffb, 18b4:1001 and 18b4:1002 (for devices with a second tuner).

  • DUTV002 Shen Zhen MinTV-DVB-T Stick 18b4:1001
  • DUTV007B USB TNT Basic LIGHT from PC-Basic (Graphics) with MXL5003S tuner and has USB ID 18b4:1001.
  • DUTV009 SinoVideo 3420A-2 with MXL5003S but no eeprom (has USB ID 18b4:1689/18b4:fffb)
  • SKU08309 USB DVB-T TV Dongle with Remote from DealExtreme uses this chip and has USB ID 18b4:1689.
  • MM002V2 Sweex MM002V2 Microtune MT2060 silicon tuner 18b4:1689
  • Tvisto USB DVB-T with MXL5003S tuner 18b4:fffa
  • ZAP DVB-T USB stick

Without drivers, ubuntu 8.10 detect the dongle as an USB Keyboard :

[    8.729023] usb 3-2: new high speed USB device using ehci_hcd and address 2
[    8.844654] usb 3-2: configuration #1 chosen from 1 choice
[    8.844992] usb 3-2: New USB device found, idVendor=18b4, idProduct=1001
[    8.844994] usb 3-2: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    8.919832] input: HID 18b4:1001 as /devices/pci0000:00/0000:00:04.1/usb3/3-2/3-2:1.0/input/input5
[    8.922137] input,hidraw4: USB HID v1.11 Keyboard [HID 18b4:1001] on usb-0000:00:04.1-2

DUTV009 SinoVideo 3420A-2

DUTV009 PCB.jpg

No eeprom in this one

SKU 08309 USB DVB-T Dongle

SKU 08309 USB DVB-T Dongle requires Firmware-File called EC168BDA.bin contained in Windows Driver TVGo_Genius.rar

DUTV007B USB TNT Basic LIGHT (GRTNTUSBV4)

DUTV007B.JPG

Same USB descriptors as SinoVideo 3420A-2, but with another PID... IR is detected directly by the hidraw driver (usbhid)


The PC-Basic v4 USB Stick contains following chips :

  • EC168 (USB 2.0 µ-controller, could be also a preprogrammed AVR or PIC)
  • Maxlinear MXL5003S Tuner [1]
  • EEPROM 24C02N I²C 0xA0 (256 Bytes) [2]

The windows driver also upload a 7109-bytes sized firmware (EC168BDA.bin) to get the device working...

Uploading Firmware to the device

  • EC168 Direct Firmware Upload tool based on libusb by Tanguy Pruvot : dfu-ec168

Known USB requests

#define CMD_EC168_RAM       0x00 //RW- Read/Write RAM (Firmware go to addr 0-0x1EFF)
#define CMD_EC168_GETSTATUS 0x01 //R-- ex: dfu_ctrl_get(device,0x01,0,1,buffer,1);
                                 //        to know if firmware is ready
#define CMD_EC168_STREAM    0x03 //R-X ex: dfu_ctrl(device,0x03,0/0x20,0xFF00);
                                 //        disable/enable streaming 
#define CMD_EC168_SET_POWER 0x04 //R-X ex: dfu_ctrl(device,0x04,0/1,0x0008);
                                 //        disable/enable LED
                                 //        indexes seen in trace: 0x8,0x9,0xA,0xB,0x206,0x208 - Not a Binary Mask !
#define CMD_EC168_UNKNOWN   0x10 //--X ???
#define CMD_EC168_READ_BUF  0x20 //R-- ex: dfu_ctrl_get(device,0x20,0x0000,0x01A0,buffer,0x1A); 
                                 //        read eeprom ?
#define CMD_EC168_WRITE_BUF 0x21 //-W- 
#define CMD_EC168_SET       0x30 //--X ex: dfu_ctrl(device, 0x30, 0x0709, 0x1A);
                                 //        set IR Key ?

Identification

USB subsytem ID is: 18b4:1001

output of 'lsusb -vv -d 18b4:1001':

Device Descriptor:
 bLength                18
 bDescriptorType         1
 bcdUSB               2.00
 bDeviceClass            0 (Defined at Interface level)
 bDeviceSubClass         0
 bDeviceProtocol         0
 bMaxPacketSize0        64
 idVendor           0x18b4
 idProduct          0x1001
 bcdDevice            0.02
 iManufacturer           0
 iProduct                0
 iSerial                 0
 bNumConfigurations      1
 Configuration Descriptor:
   bLength                 9
   bDescriptorType         2
   wTotalLength           50
   bNumInterfaces          2
   bConfigurationValue     1
   iConfiguration          0
   bmAttributes         0x80
     (Bus Powered)
   MaxPower              100mA
   Interface Descriptor:
     bLength                 9
     bDescriptorType         4
     bInterfaceNumber        0
     bAlternateSetting       0
     bNumEndpoints           1
     bInterfaceClass         3 Human Interface Device
     bInterfaceSubClass      1 Boot Interface Subclass
     bInterfaceProtocol      1 Keyboard
     iInterface              0
       HID Device Descriptor:
         bLength                 9
         bDescriptorType        33
         bcdHID               1.11
         bCountryCode            0 Not supported
         bNumDescriptors         1
         bDescriptorType        34 Report
         wDescriptorLength      63
        Report Descriptors:
          ** UNAVAILABLE **
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x81  EP 1 IN
       bmAttributes            3
         Transfer Type            Interrupt
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0008  1x 8 bytes
       bInterval               7
   Interface Descriptor:
     bLength                 9
     bDescriptorType         4
     bInterfaceNumber        1
     bAlternateSetting       0
     bNumEndpoints           1
     bInterfaceClass       255 Vendor Specific Class
     bInterfaceSubClass    255 Vendor Specific Subclass
     bInterfaceProtocol    255 Vendor Specific Protocol
     iInterface              0
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x82  EP 2 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      1
Device Status:     0x0001
 Self Powered


External Links