Hauppauge WinTV-CI

From LinuxTVWiki
Jump to navigation Jump to search
A 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 https://github.com/siricco/usb2ci.

See also the discussion in the german VDR forum https://www.vdr-portal.de/forum/index.php?thread/130720-wintv-ci-cinergy-usb-ci-und-ddci2


This is a log with the driver initialisation and the communication with vdr/ddci2:

  usb 1-1: new high-speed USB device number 26 using ehci-pci
  wintv_usb2ci: Found USB-CI device 2040:1100 (Ver.2) in cold state
  wintv_usb2ci: located firmware wintvci_cb.fw, size 6424 bytes
  wintv_usb2ci: *** FW *** block-size 16, block-cnt 292, adr-low 0x0000, adr-top 0x0E06
  wintv_usb2ci:  * 291 firmware blocks written to internal RAM
  wintv_usb2ci:  * EEPROM: Boot-Mode: C0, V:P:D: 2040:1100-2.00 cfg: 04
  wintv_usb2ci:  * EEPROM: Size 16 kB ( 16384 [0x4000] bytes )
  wintv_usb2ci:  * REVID [0xE60A]: Silicon Revision 0x01
  wintv_usb2ci:  * IFCONFIG [0xE601]=0x80 : FIFO/GPIF Clock 30 Mhz (internal)
  wintv_usb2ci:  * USBCS [0xE680]=0x80
  wintv_usb2ci:  * CPUCS [0xE600]=0x02 : CPU clock-speed 12 Mhz (12|24|48)
  wintv_usb2ci: CI-firmware wintvci_r2.fw selected
  wintv_usb2ci: located firmware wintvci_r2.fw, size 13684 bytes
  wintv_usb2ci: *** FW *** block-size 16, block-cnt 622, adr-low 0x0000, adr-top 0x26C9
  wintv_usb2ci:  * 621 firmware blocks written to internal RAM
  wintv_usb2ci: probe succesfull
  usbcore: registered new interface driver wintv_usb2ci
  usb 1-1: USB disconnect, device number 26
  wintv_usb2ci: wintv_usb_ci_disconnect
  wintv_usb2ci: wintv_usb_ci_delete
  wintv_usb2ci: USB wintv-ci #-1 now disconnected
  usb 1-1: new high-speed USB device number 27 using ehci-pci
  wintv_usb2ci: Found USB-CI device 2040:1100 (Ver.0) in warm state
  wintv_usb2ci:              Product : WinTV-CI-USB2
  wintv_usb2ci:         Manufacturer : HAUPPAUGE
  wintv_usb2ci:   EP 1 IN  (INTR) Addr : 0x81, Maxp   64 Ival 9
  wintv_usb2ci:   EP 1 OUT (BULK) Addr : 0x01, Maxp  512 Ival 8
  wintv_usb2ci:   EP 2 IN  (ISOC) Addr : 0x82, Maxp  752 Ival 1
  wintv_usb2ci:   EP 6 OUT (ISOC) Addr : 0x06, Maxp  752 Ival 1
  wintv_usb2ci: Registering DVB Adapter
  dvbdev: DVB: registering new adapter (WinTV-CI)
  wintv_usb2ci: Attaching DVB CA Device
  wintv_usb2ci: ca_bulk_allocate : EP(01) init packet buffer: 512 bytes
  wintv_usb2ci: ca_intr_allocate : EP(81) init packet/message buffers: 64/255 bytes
  wintv_usb2ci: Attaching DVB CI Device
  wintv_usb2ci: ts_rb_alloc : EP(06) ringbuffer size 721920 bytes (8 x 480 / 3840 TS-packets)
  wintv_usb2ci: ci_isoc_allocate : EP(06) init 8 urbs (120 uframes / 480 TS-packets each urb)
  wintv_usb2ci: ci_isoc_setup : EP(06) initialize 8 urbs (DIR_OUT)
  wintv_usb2ci: ts_rb_alloc : EP(82) ringbuffer size 721920 bytes (8 x 480 / 3840 TS-packets)
  wintv_usb2ci: ci_isoc_allocate : EP(82) init 8 urbs (120 uframes / 480 TS-packets each urb)
  wintv_usb2ci: ci_isoc_setup : EP(82) initialize 8 urbs (DIR_IN)
  wintv_usb2ci: Reset CI Device
  wintv_usb2ci: ts_stop_streaming : stop streaming
  wintv_usb2ci: CI_send_CMD         : [90] 0
  wintv_usb2ci: CI_read_CMD_REPLY   : [08] 20/20/0
  wintv_usb2ci:  * FW_Version(2.01) FPGA_Version(1.d)
  wintv_usb2ci: cam_state_set       : 00 -> 01
  wintv_usb2ci: probe succesfull
  Error: Driver 'wintv_usb2ci' is already registered, aborting...
  wintv_usb2ci: CI_send_CMD         : [10] 1
  wintv_usb2ci: CI_read_CMD_REPLY   : [02] 0/0/0
  wintv_usb2ci: CI_WriteExchange    : [10/02] response after 2343 ms
  wintv_usb2ci: cam_state_set       : 01 -> 03
  wintv_usb2ci: Reset CI Device
  wintv_usb2ci: ts_stop_streaming : stop streaming
  wintv_usb2ci: CI_send_CMD         : [40] 0
  wintv_usb2ci: CI_read_CMD_REPLY   : [03] 158/60/98
  wintv_usb2ci: CI_read_CMD_REPLY   : [03] 98/60/38
  wintv_usb2ci: CI_read_CMD_REPLY   : [03] 38/38/0
  wintv_usb2ci: CI_WriteExchange    : [40/03] response after 320 ms
  wintv_usb2ci: cam_state_set       : 03 -> 04
  wintv_usb2ci: parse_cis_vstrings : CFG_V1_STR 0: SMIT
  wintv_usb2ci: parse_cis_vstrings : CFG_V1_STR 1: DVB CA Module
  wintv_usb2ci: parse_cis_vstrings : CFG_V1_STR 2: $compatible[ciplus=1 ciprof=1]$
  wintv_usb2ci: parse_cis : CFG_BASE: 0x220 (Cfg.Reg[0] in Attrib.Memory)
  wintv_usb2ci: parse_cis : CFG_REGS present [0-7] = 0x01
  wintv_usb2ci: parse_cis : IF-CODE[0] 0x0241 'DVB_CI_V1.00' matched
  wintv_usb2ci: parse_cis : skip Interface description for IF-index 1
  wintv_usb2ci: parse_cis : CFG-OPTIONS: 0xF
  wintv_usb2ci: DVB-CI-Module detected
  wintv_usb2ci: CI_send_CMD         : [70] 5
  wintv_usb2ci: CI_read_CMD_REPLY   : [07] 0/0/0
  wintv_usb2ci: CI_WriteExchange    : [70/07] response after 290 ms
  wintv_usb2ci: cam_state_set       : 04 -> 05
  wintv_usb2ci: CI_send_CMD         : [60] 2
  wintv_usb2ci: CI_read_CMD_REPLY   : [04] 2/2/0
  wintv_usb2ci: CI_WriteExchange    : [60/04] response after 160 ms
  wintv_usb2ci: cam_state_set       : 05 -> 06
  vdr[15587]: New default svdrp port 6419!
  wintv_usb2ci: ca_ioctl : CA_GET_CAP
  wintv_usb2ci: ca_ioctl : CA_RESET
  wintv_usb2ci: cam_state_set       : 06 -> 01
  wintv_usb2ci:    *** CA-poll(104) [0]***
  wintv_usb2ci:      *** TS-poll(104) [0]***
  vdr[15579]: [15579] DDCI-Inf: plugin version 1.0.5 initializing (compiled for VDR version 2.3.8)
  vdr[15579]: [15579] DDCI-Inf: found 1 DD CI adapter
  vdr[15579]: [15579] DDCI-Inf: Creating DdCiAdapter 0 (/dev/dvb/adapter1/ca0)
  vdr[15579]: [15579] DDCI-Inf: plugin started
  vdr[15579]: [15599] [vdr-sxfe]  sxfe_display_open: failed to connect to X server (0.0)
  wintv_usb2ci: ca_ioctl : CA_GET_SLOT_INFO [0] : CAM NO_CAM
  wintv_usb2ci:    *** CA-poll(104) [16]***
  wintv_usb2ci: ca_ioctl : CA_GET_SLOT_INFO [0] : CAM NO_CAM
  wintv_usb2ci: CI_send_CMD         : [10] 1
  wintv_usb2ci:    *** CA-poll(104) [16]***
  wintv_usb2ci: ca_ioctl : CA_GET_SLOT_INFO [0] : CAM NO_CAM
  wintv_usb2ci:    *** CA-poll(104) [16]***
  wintv_usb2ci: ca_ioctl : CA_GET_SLOT_INFO [0] : CAM NO_CAM
  wintv_usb2ci:    *** CA-poll(104) [16]***
  wintv_usb2ci: ca_ioctl : CA_GET_SLOT_INFO [0] : CAM NO_CAM
  wintv_usb2ci:    *** CA-poll(104) [16]***
  wintv_usb2ci: ca_ioctl : CA_GET_SLOT_INFO [0] : CAM NO_CAM
  wintv_usb2ci:    *** CA-poll(104) [16]***
  wintv_usb2ci: ca_ioctl : CA_GET_SLOT_INFO [0] : CAM NO_CAM
  wintv_usb2ci:    *** CA-poll(104) [16]***
  wintv_usb2ci: CI_read_CMD_REPLY   : [02] 0/0/0
  wintv_usb2ci: CI_WriteExchange    : [10/02] response after 2350 ms
  wintv_usb2ci: cam_state_set       : 01 -> 03
  wintv_usb2ci: Reset CI Device
  wintv_usb2ci: ts_stop_streaming : stop streaming
  wintv_usb2ci: CI_send_CMD         : [40] 0
  wintv_usb2ci: ca_ioctl : CA_GET_SLOT_INFO [0] : CAM PRESENT
  wintv_usb2ci:      *** TS-poll(104) [0]***
  wintv_usb2ci:    *** CA-poll(104) [16]***
  wintv_usb2ci: CI_read_CMD_REPLY   : [03] 158/60/98
  wintv_usb2ci: CI_read_CMD_REPLY   : [03] 98/60/38
  wintv_usb2ci: CI_read_CMD_REPLY   : [03] 38/38/0
  wintv_usb2ci: CI_WriteExchange    : [40/03] response after 320 ms
  wintv_usb2ci: cam_state_set       : 03 -> 04
  wintv_usb2ci: parse_cis_vstrings : CFG_V1_STR 0: SMIT
  wintv_usb2ci: parse_cis_vstrings : CFG_V1_STR 1: DVB CA Module
  wintv_usb2ci: parse_cis_vstrings : CFG_V1_STR 2: $compatible[ciplus=1 ciprof=1]$
  wintv_usb2ci: parse_cis : CFG_BASE: 0x220 (Cfg.Reg[0] in Attrib.Memory)
  wintv_usb2ci: parse_cis : CFG_REGS present [0-7] = 0x01
  wintv_usb2ci: parse_cis : IF-CODE[0] 0x0241 'DVB_CI_V1.00' matched
  wintv_usb2ci: parse_cis : skip Interface description for IF-index 1
  wintv_usb2ci: parse_cis : CFG-OPTIONS: 0xF
  wintv_usb2ci: DVB-CI-Module detected
  wintv_usb2ci: CI_send_CMD         : [70] 5
  wintv_usb2ci: ca_ioctl : CA_GET_SLOT_INFO [0] : CAM PRESENT
  wintv_usb2ci:    *** CA-poll(104) [16]***
  wintv_usb2ci: CI_read_CMD_REPLY   : [07] 0/0/0
  wintv_usb2ci: CI_WriteExchange    : [70/07] response after 286 ms
  wintv_usb2ci: cam_state_set       : 04 -> 05
  wintv_usb2ci: CI_send_CMD         : [60] 2
  wintv_usb2ci: CI_read_CMD_REPLY   : [04] 2/2/0
  wintv_usb2ci: CI_WriteExchange    : [60/04] response after 160 ms
  wintv_usb2ci: cam_state_set       : 05 -> 06
  wintv_usb2ci:    *** CA-poll(104) [16]***
  wintv_usb2ci: [HOST] rb_write_tpdu (0)(1)[ 5] *** (82) TT_CREATE_TC ***
   TPDU : 00000000: 82 01 01                                         ...
  wintv_usb2ci: [CAM ] rb_read_tpdu (0)(1)[ 9] *** (83) TT_CTC_REPLY ***
   TPDU : 00000000: 83 01 01 80 02 01 00                             .......
  wintv_usb2ci: [CAM ] rb_read_tpdu (0)(1)[15] *** (91) ST_OPEN_SESSION_REQU ***
   TPDU : 00000000: a0 07 01 91 04 00 01 00 41 80 02 01 00           ........A....
  wintv_usb2ci: [HOST] rb_write_tpdu (0)(1)[14] *** (92) ST_OPEN_SESSION_RESP ***
   TPDU : 00000000: a0 0a 01 92 07 00 00 01 00 41 00 01              .........A..
  wintv_usb2ci: [HOST] rb_write_tpdu (0)(1)[13] *** (1) AOT_PROFILE_ENQ ***
   TPDU : 00000000: a0 09 01 90 02 00 01 9f 80 10 00                 ...........
  wintv_usb2ci: [CAM ] rb_read_tpdu (0)(1)[17] *** (1) AOT_PROFILE ***
   TPDU : 00000000: a0 09 01 90 02 00 01 9f 80 11 00 80 02 01 00     ...............
  wintv_usb2ci: [HOST] rb_write_tpdu (0)(1)[13] *** (1) AOT_PROFILE_CHANGE ***
   TPDU : 00000000: a0 09 01 90 02 00 01 9f 80 12 00                 ...........
  wintv_usb2ci: [CAM ] rb_read_tpdu (0)(1)[17] *** (1) AOT_PROFILE_ENQ ***
   TPDU : 00000000: a0 09 01 90 02 00 01 9f 80 10 00 80 02 01 00     ...............
  wintv_usb2ci: [HOST] rb_write_tpdu (0)(1)[37] *** (1) AOT_PROFILE ***
   TPDU : 00000000: a0 21 01 90 02 00 01 9f 80 11 18 00 01 00 41 00  .!............A.
   TPDU : 00000010: 02 00 41 00 03 00 41 00 20 00 41 00 24 00 41 00  ..A...A. .A.$.A.
  wintv_usb2ci: [CAM ] rb_read_tpdu (0)(1)[15] *** (91) ST_OPEN_SESSION_REQU ***
   TPDU : 00000000: a0 07 01 91 04 00 02 00 41 80 02 01 00           ........A....
  wintv_usb2ci: [HOST] rb_write_tpdu (0)(1)[14] *** (92) ST_OPEN_SESSION_RESP ***
   TPDU : 00000000: a0 0a 01 92 07 00 00 02 00 41 00 02              .........A..
  wintv_usb2ci: [HOST] rb_write_tpdu (0)(1)[13] *** (2) AOT_APPLICATION_INFO_ENQ ***
   TPDU : 00000000: a0 09 01 90 02 00 02 9f 80 20 00                 ......... .
  wintv_usb2ci: [CAM ] rb_read_tpdu (0)(1)[36] *** (2) AOT_APPLICATION_INFO ***
   TPDU : 00000000: a0 1c 01 90 02 00 02 9f 80 21 13 01 ca fe ba be  .........!......
   TPDU : 00000010: 0d 49 72 64 65 74 6f 20 41 63 63 65 73 73 80 02  .Irdeto Access..
  wintv_usb2ci: [CAM ] rb_read_tpdu (0)(1)[15] *** (91) ST_OPEN_SESSION_REQU ***
   TPDU : 00000000: a0 07 01 91 04 00 03 00 41 80 02 01 00           ........A....
  wintv_usb2ci: [HOST] rb_write_tpdu (0)(1)[14] *** (92) ST_OPEN_SESSION_RESP ***
   TPDU : 00000000: a0 0a 01 92 07 00 00 03 00 41 00 03              .........A..
  wintv_usb2ci: [HOST] rb_write_tpdu (0)(1)[13] *** (3) AOT_CA_INFO_ENQ ***
   TPDU : 00000000: a0 09 01 90 02 00 03 9f 80 30 00                 .........0.
  wintv_usb2ci: [CAM ] rb_read_tpdu (0)(1)[37] *** (3) AOT_CA_INFO ***
   TPDU : 00000000: a0 1d 01 90 02 00 03 9f 80 31 14 06 9c 00 00 00  .........1......
   TPDU : 00000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80  ................
  wintv_usb2ci: [HOST] rb_write_tpdu (0)(1)[20] *** (3) AOT_CA_PMT ***
   TPDU : 00000000: a0 10 01 90 02 00 03 9f 80 32 07 03 00 00 01 00  .........2......
   TPDU : 00000010: 01 03                                            ..
  wintv_usb2ci: [HOST] rb_write_tpdu (0)(1)[20] *** (3) AOT_CA_PMT ***
   TPDU : 00000000: a0 10 01 90 02 00 03 9f 80 32 07 03 00 00 01 00  .........2......
   TPDU : 00000010: 01 03                                            ..
  wintv_usb2ci: [HOST] rb_write_tpdu (0)(1)[20] *** (3) AOT_CA_PMT ***
   TPDU : 00000000: a0 10 01 90 02 00 03 9f 80 32 07 03 00 00 01 00  .........2......
   TPDU : 00000010: 01 03                                            ..
  wintv_usb2ci: [HOST] rb_write_tpdu (0)(1)[20] *** (3) AOT_CA_PMT ***
   TPDU : 00000000: a0 10 01 90 02 00 03 9f 80 32 07 03 00 00 01 00  .........2......
   TPDU : 00000010: 01 03                                            ..
  wintv_usb2ci:      *** TS-poll(104) [128]***
  wintv_usb2ci: [HOST] rb_write_tpdu (0)(1)[20] *** (3) AOT_CA_PMT ***
   TPDU : 00000000: a0 10 01 90 02 00 03 9f 80 32 07 03 00 00 01 00  .........2......
   TPDU : 00000010: 01 03                                            ..
  wintv_usb2ci: [HOST] rb_write_tpdu (0)(1)[20] *** (3) AOT_CA_PMT ***
   TPDU : 00000000: a0 10 01 90 02 00 03 9f 80 32 07 03 00 00 01 00  .........2......
   TPDU : 00000010: 01 03                                            ..
  wintv_usb2ci:      *** TS-poll(104) [128]***
  wintv_usb2ci:      *** TS-poll(104) [128]***
  wintv_usb2ci: [HOST] rb_write_tpdu (0)(1)[26] *** (3) AOT_CA_PMT ***
   TPDU : 00000000: a0 16 01 90 02 00 03 9f 80 32 0d 03 37 15 01 00  .........2..7...
   TPDU : 00000010: 07 04 09 04 06 9c e3 fb                          ........
  wintv_usb2ci: [HOST] rb_write_tpdu (0)(1)[41] *** (3) AOT_CA_PMT ***
   TPDU : 00000000: a0 25 01 90 02 00 03 9f 80 32 1c 03 37 15 01 00  .%.......2..7...
   TPDU : 00000010: 07 01 09 04 06 9c e3 fb 02 03 f2 00 00 06 03 f3  ................
  wintv_usb2ci:      +++ TS-BITRATE : 0.00 Mbit/s
  wintv_usb2ci:      +++ TS-BITRATE : 6.13 Mbit/s
  wintv_usb2ci:      +++ TS-BITRATE : 5.67 Mbit/s
  wintv_usb2ci:      +++ TS-BITRATE : 5.50 Mbit/s
  wintv_usb2ci:      +++ TS-BITRATE : 5.48 Mbit/s

External links