Hauppauge WinTV-CI: Difference between revisions

From LinuxTVWiki
Jump to navigation Jump to search
Line 28: Line 28:


===Driver===
===Driver===
There is a working driver which was successfully tested with VDR and the ddci2-plugin.
There is a working driver which was successfully tested with VDR in conjunction with the ddci2-plugin.
Sources and instruction can be found here:
Sources and instruction can be found on GitHub:
[https://github.com/siricco/usb2ci]
[https://github.com/siricco/usb2ci]


Line 36: Line 36:


This is the log with the driver initialisation and communication with vdr/ddci2:
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
[[File:/root/down/wintv-usb2ci.txt]]
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


===External links===
===External links===

Revision as of 22:14, 11 March 2018

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 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

External links