Hauppauge WinTV-CI
The Hauppauge WinTV-CI is a standalone CI-interface from Hauppauge.
Overview/features
The WinTV-CI is a bus-powered USB 2.0 device that provides a CI interface for PayTV.
According to Hauppauge, the Windows driver supports following CAMs:
- AlphaCrypt
- Conax
- Irdeto
- Mediaguard
- AstonCrypt
- CryptoWorks
- Viacess
Components used
The box contains a single PCB with two active components : an FX2 from Cypress (CY7C68013A) and a FPGA (Actel Proasic-plus, APA075-F)
Identification
dmesg output:
usb 1-7: new high speed USB device using ehci_hcd and address 2 usb 1-7: new device found, idVendor=2040, idProduct=1100 usb 1-7: new device strings: Mfr=0, Product=0, SerialNumber=0 usb 1-7: configuration #1 chosen from 1 choice
Making it work
Driver
There is a working driver which was successfully tested with VDR in conjunction with the ddci2-plugin. Sources and instruction can be found on GitHub: [1]
See also the discussion in the german vdr-portalforum: [2]
This is the log with the driver initialisation and communication with vdr/ddci2: Mar 4 23:04:55 gentoo2 kernel: usb 1-1: new high-speed USB device number 26 using ehci-pci Mar 4 23:04:55 gentoo2 kernel: wintv_usb2ci: Found USB-CI device 2040:1100 (Ver.2) in cold state Mar 4 23:04:55 gentoo2 kernel: wintv_usb2ci: located firmware wintvci_cb.fw, size 6424 bytes Mar 4 23:04:55 gentoo2 kernel: wintv_usb2ci: *** FW *** block-size 16, block-cnt 292, adr-low 0x0000, adr-top 0x0E06 Mar 4 23:04:55 gentoo2 kernel: wintv_usb2ci: * 291 firmware blocks written to internal RAM Mar 4 23:04:55 gentoo2 kernel: wintv_usb2ci: * EEPROM: Boot-Mode: C0, V:P:D: 2040:1100-2.00 cfg: 04 Mar 4 23:04:55 gentoo2 kernel: wintv_usb2ci: * EEPROM: Size 16 kB ( 16384 [0x4000] bytes ) Mar 4 23:04:55 gentoo2 kernel: wintv_usb2ci: * REVID [0xE60A]: Silicon Revision 0x01 Mar 4 23:04:55 gentoo2 kernel: wintv_usb2ci: * IFCONFIG [0xE601]=0x80 : FIFO/GPIF Clock 30 Mhz (internal) Mar 4 23:04:55 gentoo2 kernel: wintv_usb2ci: * USBCS [0xE680]=0x80 Mar 4 23:04:55 gentoo2 kernel: wintv_usb2ci: * CPUCS [0xE600]=0x02 : CPU clock-speed 12 Mhz (12|24|48) Mar 4 23:04:55 gentoo2 kernel: wintv_usb2ci: CI-firmware wintvci_r2.fw selected Mar 4 23:04:55 gentoo2 kernel: wintv_usb2ci: located firmware wintvci_r2.fw, size 13684 bytes Mar 4 23:04:55 gentoo2 kernel: wintv_usb2ci: *** FW *** block-size 16, block-cnt 622, adr-low 0x0000, adr-top 0x26C9 Mar 4 23:04:55 gentoo2 kernel: wintv_usb2ci: * 621 firmware blocks written to internal RAM Mar 4 23:04:55 gentoo2 kernel: wintv_usb2ci: probe succesfull Mar 4 23:04:55 gentoo2 kernel: usbcore: registered new interface driver wintv_usb2ci Mar 4 23:04:55 gentoo2 kernel: Error: Driver 'wintv_usb2ci' is already registered, aborting... Mar 4 23:04:55 gentoo2 kernel: usb 1-1: USB disconnect, device number 26 Mar 4 23:04:55 gentoo2 kernel: wintv_usb2ci: wintv_usb_ci_disconnect Mar 4 23:04:55 gentoo2 kernel: wintv_usb2ci: wintv_usb_ci_delete Mar 4 23:04:55 gentoo2 kernel: wintv_usb2ci: USB wintv-ci #-1 now disconnected Mar 4 23:04:57 gentoo2 kernel: usb 1-1: new high-speed USB device number 27 using ehci-pci Mar 4 23:04:57 gentoo2 kernel: wintv_usb2ci: Found USB-CI device 2040:1100 (Ver.0) in warm state Mar 4 23:04:57 gentoo2 kernel: wintv_usb2ci: Product : WinTV-CI-USB2 Mar 4 23:04:57 gentoo2 kernel: wintv_usb2ci: Manufacturer : HAUPPAUGE Mar 4 23:04:59 gentoo2 kernel: wintv_usb2ci: EP 1 IN (INTR) Addr : 0x81, Maxp 64 Ival 9 Mar 4 23:04:59 gentoo2 kernel: wintv_usb2ci: EP 1 OUT (BULK) Addr : 0x01, Maxp 512 Ival 8 Mar 4 23:04:59 gentoo2 kernel: wintv_usb2ci: EP 2 IN (ISOC) Addr : 0x82, Maxp 752 Ival 1 Mar 4 23:04:59 gentoo2 kernel: wintv_usb2ci: EP 6 OUT (ISOC) Addr : 0x06, Maxp 752 Ival 1 Mar 4 23:04:59 gentoo2 kernel: wintv_usb2ci: Registering DVB Adapter Mar 4 23:04:59 gentoo2 kernel: dvbdev: DVB: registering new adapter (WinTV-CI) Mar 4 23:04:59 gentoo2 kernel: wintv_usb2ci: Attaching DVB CA Device Mar 4 23:04:59 gentoo2 kernel: wintv_usb2ci: ca_bulk_allocate : EP(01) init packet buffer: 512 bytes Mar 4 23:04:59 gentoo2 kernel: wintv_usb2ci: ca_intr_allocate : EP(81) init packet/message buffers: 64/255 bytes Mar 4 23:04:59 gentoo2 kernel: wintv_usb2ci: Attaching DVB CI Device Mar 4 23:04:59 gentoo2 kernel: wintv_usb2ci: ts_rb_alloc : EP(06) ringbuffer size 721920 bytes (8 x 480 / 3840 TS-packets) Mar 4 23:04:59 gentoo2 kernel: wintv_usb2ci: ci_isoc_allocate : EP(06) init 8 urbs (120 uframes / 480 TS-packets each urb) Mar 4 23:04:59 gentoo2 kernel: wintv_usb2ci: ci_isoc_setup : EP(06) initialize 8 urbs (DIR_OUT) Mar 4 23:04:59 gentoo2 kernel: wintv_usb2ci: ts_rb_alloc : EP(82) ringbuffer size 721920 bytes (8 x 480 / 3840 TS-packets) Mar 4 23:04:59 gentoo2 kernel: wintv_usb2ci: ci_isoc_allocate : EP(82) init 8 urbs (120 uframes / 480 TS-packets each urb) Mar 4 23:04:59 gentoo2 kernel: wintv_usb2ci: ci_isoc_setup : EP(82) initialize 8 urbs (DIR_IN) Mar 4 23:04:59 gentoo2 kernel: wintv_usb2ci: Reset CI Device Mar 4 23:04:59 gentoo2 kernel: wintv_usb2ci: ts_stop_streaming : stop streaming Mar 4 23:04:59 gentoo2 kernel: wintv_usb2ci: CI_send_CMD : [90] 0 Mar 4 23:04:59 gentoo2 kernel: wintv_usb2ci: CI_read_CMD_REPLY : [08] 20/20/0 Mar 4 23:04:59 gentoo2 kernel: wintv_usb2ci: * FW_Version(2.01) FPGA_Version(1.d) Mar 4 23:04:59 gentoo2 kernel: wintv_usb2ci: cam_state_set : 00 -> 01 Mar 4 23:04:59 gentoo2 kernel: wintv_usb2ci: probe succesfull Mar 4 23:04:59 gentoo2 kernel: Error: Driver 'wintv_usb2ci' is already registered, aborting... Mar 4 23:05:00 gentoo2 kernel: wintv_usb2ci: CI_send_CMD : [10] 1 Mar 4 23:05:02 gentoo2 kernel: wintv_usb2ci: CI_read_CMD_REPLY : [02] 0/0/0 Mar 4 23:05:02 gentoo2 kernel: wintv_usb2ci: CI_WriteExchange : [10/02] response after 2343 ms Mar 4 23:05:02 gentoo2 kernel: wintv_usb2ci: cam_state_set : 01 -> 03 Mar 4 23:05:02 gentoo2 kernel: wintv_usb2ci: Reset CI Device Mar 4 23:05:02 gentoo2 kernel: wintv_usb2ci: ts_stop_streaming : stop streaming Mar 4 23:05:02 gentoo2 kernel: wintv_usb2ci: CI_send_CMD : [40] 0 Mar 4 23:05:03 gentoo2 kernel: wintv_usb2ci: CI_read_CMD_REPLY : [03] 158/60/98 Mar 4 23:05:03 gentoo2 kernel: wintv_usb2ci: CI_read_CMD_REPLY : [03] 98/60/38 Mar 4 23:05:03 gentoo2 kernel: wintv_usb2ci: CI_read_CMD_REPLY : [03] 38/38/0 Mar 4 23:05:03 gentoo2 kernel: wintv_usb2ci: CI_WriteExchange : [40/03] response after 320 ms Mar 4 23:05:03 gentoo2 kernel: wintv_usb2ci: cam_state_set : 03 -> 04 Mar 4 23:05:03 gentoo2 kernel: wintv_usb2ci: parse_cis_vstrings : CFG_V1_STR 0: SMIT Mar 4 23:05:03 gentoo2 kernel: wintv_usb2ci: parse_cis_vstrings : CFG_V1_STR 1: DVB CA Module Mar 4 23:05:03 gentoo2 kernel: wintv_usb2ci: parse_cis_vstrings : CFG_V1_STR 2: $compatible[ciplus=1 ciprof=1]$ Mar 4 23:05:03 gentoo2 kernel: wintv_usb2ci: parse_cis : CFG_BASE: 0x220 (Cfg.Reg[0] in Attrib.Memory) Mar 4 23:05:03 gentoo2 kernel: wintv_usb2ci: parse_cis : CFG_REGS present [0-7] = 0x01 Mar 4 23:05:03 gentoo2 kernel: wintv_usb2ci: parse_cis : IF-CODE[0] 0x0241 'DVB_CI_V1.00' matched Mar 4 23:05:03 gentoo2 kernel: wintv_usb2ci: parse_cis : skip Interface description for IF-index 1 Mar 4 23:05:03 gentoo2 kernel: wintv_usb2ci: parse_cis : CFG-OPTIONS: 0xF Mar 4 23:05:03 gentoo2 kernel: wintv_usb2ci: DVB-CI-Module detected Mar 4 23:05:03 gentoo2 kernel: wintv_usb2ci: CI_send_CMD : [70] 5 Mar 4 23:05:03 gentoo2 kernel: wintv_usb2ci: CI_read_CMD_REPLY : [07] 0/0/0 Mar 4 23:05:03 gentoo2 kernel: wintv_usb2ci: CI_WriteExchange : [70/07] response after 290 ms Mar 4 23:05:03 gentoo2 kernel: wintv_usb2ci: cam_state_set : 04 -> 05 Mar 4 23:05:03 gentoo2 kernel: wintv_usb2ci: CI_send_CMD : [60] 2 Mar 4 23:05:03 gentoo2 kernel: wintv_usb2ci: CI_read_CMD_REPLY : [04] 2/2/0 Mar 4 23:05:03 gentoo2 kernel: wintv_usb2ci: CI_WriteExchange : [60/04] response after 160 ms Mar 4 23:05:03 gentoo2 kernel: wintv_usb2ci: cam_state_set : 05 -> 06