Hauppauge WinTV-CI

From LinuxTVWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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