I did some tests trying to follow dvb-kernel/linux/Documentation/dvb/ci.txt and her is the results of my tests: # modprobe bttv i2c_hw=1 card=0x71 - dmesg: ------------------------- ... Linux video capture interface: v1.00 bttv: driver version 0.9.16 loaded bttv: using 8 buffers with 2080k (520 pages) each for capture bttv: Bt8xx card found (0). ACPI: PCI Interrupt 0000:00:06.0[A] -> Link [LNKC] -> GSI 11 (level, low) -> IRQ 11 bttv0: Bt878 (rev 17) at 0000:00:06.0, irq: 11, latency: 32, mmio: 0xef000000 bttv0: detected: Twinhan VisionPlus DVB [card=113], PCI subsystem ID is 1822:0001 bttv0: using: Twinhan DST + clones [card=113,insmod option] bttv0: gpio: en=00000000, out=00000000 in=00fb69fd [init] bttv0: using tuner=4 bttv0: add subdevice "dvb0" ---------------------------------- # modprobe dst verbose=5 # modprobe dst_ca verbose=5 - dmesg: ------------------------- ... bt878: AUDIO driver version 0.0.0 loaded bt878: Bt878 AUDIO function found (0). ACPI: PCI Interrupt 0000:00:06.1[A] -> Link [LNKC] -> GSI 11 (level, low) -> IRQ 11 bt878(0): Bt878 (rev 17) at 00:06.1, irq: 11, latency: 32, memory: 0xee800000 ---------------------------------- # modprobe modprobe dvb-bt8xx - dmesg: ------------------------- ... DVB: registering new adapter (bttv0). rdc_8820_reset: Resetting DST dst_gpio_outb: mask=[0004], enbb=[0004], outhigh=[0000] dst_gpio_outb: mask=[0004], enbb=[0004], outhigh=[0004] dst_comm_init: Initializing DST. dst_gpio_outb: mask=[ffffffff], enbb=[0001], outhigh=[0000] rdc_reset_state: Resetting state machine dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0000] dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0002] writing [ 00 06 00 00 00 00 00 fa ] dst_gpio_outb: mask=[ffffffff], enbb=[0000], outhigh=[0000] read_dst: reply is 0xff dst_wait_dst_ready: dst wait ready after 1 read_dst: reply is 0x0 0x44 0x43 0x54 0x2d 0x43 0x49 0x6c dst_gpio_outb: mask=[ffffffff], enbb=[0000], outhigh=[0000] dst_get_device_id: Recognise [DCT-CI] dst_type_print: DST type: cable DST type flags : 0x1 newtuner 0x10 firmware version = 2 dst_comm_init: Initializing DST. dst_gpio_outb: mask=[ffffffff], enbb=[0001], outhigh=[0000] rdc_reset_state: Resetting state machine dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0000] dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0002] writing [ 00 0a 00 00 00 00 00 f6 ] dst_gpio_outb: mask=[ffffffff], enbb=[0000], outhigh=[0000] read_dst: reply is 0xff dst_wait_dst_ready: dst wait ready after 0 read_dst: reply is 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 dst_get_mac: MAC Address=[00:00:00:00:00:00] dst_ca_attach: registering DST-CA device DVB: registering frontend 0 (DST DVB-C)... ---------------------------------- # ./dvb-apps/util/szap/czap -c mychannels.conf SVT1 -x using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0' reading channels from file 'mychannels.conf' 186 SVT1:290000000:INVERSION_AUTO:6875000:FEC_NONE:QAM_64:4102:4358:1097 186 SVT1: f 290000000, s 6875000, i 2, fec 0, qam 3, v 0x1006, a 0x1106 status 00 | signal 0000 | snr 0000 | ber 00000004 | unc 00000000 | status 1f | signal 8000 | snr 1400 | ber 00000004 | unc 00000000 | FE_HAS_LOCK - dmesg: ------------------------- ... dst_set_freq: set Frequency 290000000 dst_set_frontend: Set Frequency=[290000000] dst_set_symbolrate: set symrate 6875000 dst_write_tuna: type_flags 0x11 dst_comm_init: Initializing DST. dst_gpio_outb: mask=[ffffffff], enbb=[0001], outhigh=[0000] rdc_reset_state: Resetting state machine dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0000] dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0002] writing [ 09 00 04 6c d0 00 1a db 40 82 ] dst_gpio_outb: mask=[ffffffff], enbb=[0000], outhigh=[0000] read_dst: reply is 0xff dst_wait_dst_ready: dst wait ready after 2 read_dst: reply is 0x9 0x0 0x4 0x6c 0xd0 0x0 0x1a 0xdb 0x40 0x82 dst_comm_init: Initializing DST. dst_gpio_outb: mask=[ffffffff], enbb=[0001], outhigh=[0000] rdc_reset_state: Resetting state machine dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0000] dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0002] writing [ 00 05 00 00 00 00 00 fb ] dst_gpio_outb: mask=[ffffffff], enbb=[0000], outhigh=[0000] read_dst: reply is 0xff dst_wait_dst_ready: dst wait ready after 2 read_dst: reply is 0x0 0x5 0x0 0x14 0x80 0x5c 0x0 0xb dst_comm_init: Initializing DST. dst_gpio_outb: mask=[ffffffff], enbb=[0001], outhigh=[0000] rdc_reset_state: Resetting state machine dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0000] dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0002] writing [ 00 05 00 00 00 00 00 fb ] dst_gpio_outb: mask=[ffffffff], enbb=[0000], outhigh=[0000] read_dst: reply is 0xff dst_wait_dst_ready: dst wait ready after 2 read_dst: reply is 0x0 0x5 0x0 0x14 0x80 0x5c 0x0 0xb dst_comm_init: Initializing DST. dst_gpio_outb: mask=[ffffffff], enbb=[0001], outhigh=[0000] rdc_reset_state: Resetting state machine dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0000] dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0002] writing [ 00 05 00 00 00 00 00 fb ] dst_gpio_outb: mask=[ffffffff], enbb=[0000], outhigh=[0000] read_dst: reply is 0xff dst_wait_dst_ready: dst wait ready after 2 read_dst: reply is 0x0 0x5 0x0 0x14 0x80 0x5c 0x0 0xb dst_comm_init: Initializing DST. dst_gpio_outb: mask=[ffffffff], enbb=[0001], outhigh=[0000] rdc_reset_state: Resetting state machine dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0000] dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0002] writing [ 00 05 00 00 00 00 00 fb ] dst_gpio_outb: mask=[ffffffff], enbb=[0000], outhigh=[0000] read_dst: reply is 0xff dst_wait_dst_ready: dst wait ready after 2 read_dst: reply is 0x0 0x5 0x0 0x14 0x80 0x5c 0x0 0xb dst_comm_init: Initializing DST. dst_gpio_outb: mask=[ffffffff], enbb=[0001], outhigh=[0000] rdc_reset_state: Resetting state machine dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0000] dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0002] writing [ 00 05 00 00 00 00 00 fb ] dst_gpio_outb: mask=[ffffffff], enbb=[0000], outhigh=[0000] read_dst: reply is 0xff dst_wait_dst_ready: dst wait ready after 2 read_dst: reply is 0x0 0x5 0x0 0x14 0x80 0x5c 0x0 0xb dst_comm_init: Initializing DST. dst_gpio_outb: mask=[ffffffff], enbb=[0001], outhigh=[0000] rdc_reset_state: Resetting state machine dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0000] dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0002] writing [ 00 05 00 00 00 00 00 fb ] dst_gpio_outb: mask=[ffffffff], enbb=[0000], outhigh=[0000] read_dst: reply is 0xff dst_wait_dst_ready: dst wait ready after 2 read_dst: reply is 0x0 0x5 0x0 0x14 0x80 0x5c 0x0 0xb dst_comm_init: Initializing DST. dst_gpio_outb: mask=[ffffffff], enbb=[0001], outhigh=[0000] rdc_reset_state: Resetting state machine dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0000] dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0002] writing [ 00 05 00 00 00 00 00 fb ] dst_gpio_outb: mask=[ffffffff], enbb=[0000], outhigh=[0000] read_dst: reply is 0xff dst_wait_dst_ready: dst wait ready after 2 read_dst: reply is 0x0 0x5 0x0 0x14 0x80 0x5c 0x0 0xb dst_comm_init: Initializing DST. dst_gpio_outb: mask=[ffffffff], enbb=[0001], outhigh=[0000] rdc_reset_state: Resetting state machine dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0000] dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0002] writing [ 00 05 00 00 00 00 00 fb ] dst_gpio_outb: mask=[ffffffff], enbb=[0000], outhigh=[0000] read_dst: reply is 0xff dst_wait_dst_ready: dst wait ready after 2 read_dst: reply is 0x0 0x5 0x0 0x14 0x80 0x5c 0x0 0xb dst_comm_init: Initializing DST. dst_gpio_outb: mask=[ffffffff], enbb=[0001], outhigh=[0000] rdc_reset_state: Resetting state machine dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0000] dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0002] writing [ 00 05 00 00 00 00 00 fb ] dst_gpio_outb: mask=[ffffffff], enbb=[0000], outhigh=[0000] read_dst: reply is 0xff dst_wait_dst_ready: dst wait ready after 2 read_dst: reply is 0x0 0x5 0x0 0x14 0x80 0x5c 0x0 0xb dst_comm_init: Initializing DST. dst_gpio_outb: mask=[ffffffff], enbb=[0001], outhigh=[0000] rdc_reset_state: Resetting state machine dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0000] dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0002] writing [ 00 05 00 00 00 00 00 fb ] dst_gpio_outb: mask=[ffffffff], enbb=[0000], outhigh=[0000] read_dst: reply is 0xff dst_wait_dst_ready: dst wait ready after 2 read_dst: reply is 0x0 0x5 0x0 0x14 0x80 0x5c 0x0 0xb ---------------------------------- # ./dvb-apps/util/ca_zap/ca_zap -c ~/mychannels.conf -t cab -s 0 -f 0 -n SVT1 -a 0 Using Adpater=[/dev/dvb/adapter0] Frontend=[/dev/dvb/adapter0/frontend0] Demux=[/dev/dvb/adapter0/demux0] Slot=[/dev/dvb/adapter0/ca0] Parsing /root/mychannels.conf Cable frontend Service ID=[1097] parse_pat: ----------------->parse PAT section parse_pat: PAT => Section Length=[33], TS ID=[45] parse_si: PMT PID = [262] parse_si: PAT: Close Demux /dev/dvb/adapter0/demux0 parse_pmt: PMT Words=[ 02 b0 4e 04 49 df 00 00 f0 06 f0 17 09 04 0b 00 e3 76 09 0f 05 00 e3 06 10 01 00 13 01 40 14 03 00 88 00 02 f0 06 f0 00 03 f1 06 f0 06 0a 04 73 77 65 00 06 ff 06 f0 07 56 05 73 77 65 09 00 06 f2 06 f0 09 6a 01 00 0a 04 73 77 65 00 1d 64 66 72 ] parse_pmt: ----------->parse PMT section, PMT PID=[262], bytes=[81] parse_pmt_header: Table ID=[2], Section Length=[78], Program Number=[1097], Section Number=[0], PCR PID=[4102], Program info length=[23] parse_pmt: Program info length=[23] INFO:: Parsing descriptor: parse_ca_descriptor, Tag=[09], Length=[4] parse_ca_descriptor: Tag=[09], Length=[04], CA System=[b00], CA PID=[376] parse_ca_descriptor: CA Private Data=[ ] parse_ca_descriptor: Pos=[18] parse_pmt: Count=[18], Position=[18], Program descriptor count=[23] INFO:: Parsing descriptor: parse_ca_descriptor, Tag=[09], Length=[15] parse_ca_descriptor: Tag=[09], Length=[0f], CA System=[500], CA PID=[306] parse_ca_descriptor: CA Private Data=[ 10 01 00 13 01 40 14 03 00 88 00 ] parse_ca_descriptor: Pos=[35] parse_pmt: Count=[54], Position=[35], Program descriptor count=[23] parse_streams: Elements=[ 02 f0 06 f0 00] parse_streams: Stream=[0], Stream Type=[2], Elementary PID=[4102], ES info length=[0] parse_streams: Elements=[ 03 f1 06 f0 06 0a 04 73 77 65 00] parse_streams: Stream=[1], Stream Type=[3], Elementary PID=[4358], ES info length=[6] INFO:: Parsing descriptor: parse_iso_639_language_descriptor, Tag=[0a], Length=[4] copy_en50221_pmt_object: Copying EN50221 Header copy_en50221_pmt_object: Program Number=[1097], Program info length=[23] copy_en50221_pmt_object: Program level descriptor count=[2] copy_en50221_pmt_object: CA descriptor=[09] found, @ [0xbfb5ddc4], descriptor length=[0f] copy_en50221_descriptor_object: Tag=[09], Length=[0f], CA system ID=[500], CA PID=[306] copy_en50221_descriptor_object: Private bytes=[11] [ 10 01 00 13 01 40 14 03 00 88 00 ] copy_en50221_pmt_object: [0] CA descriptor copied copy_en50221_pmt_object: CA descriptor=[00] found, @ [0xbfb5ddc4], descriptor length=[00] copy_en50221_stream_object: Stream Type=[2], Elementary PID=[4102], ES length=[0], Number of descriptors=[0] copy_en50221_stream_object: Stream Type=[3], Elementary PID=[4358], ES length=[6], Number of descriptors=[0] do_en50221_pmt_object: CA PMT List Management=[03] set_pmt_command: Setting PMT Command set_pmt_command: CA descriptor found @ PROGRAM Level, Setting CA PMT command=[01] do_en50221_pmt_object: Object length=[272], Total length=[34] asn_1_encode: Length=[34] asn_1_encode: length indicator=[22] do_en50221_pmt_object: ASN.1 words=[1], Length Array=[ 34 ] en50221_encode_header: CA PMT List Mgmt=[3], Program Number=[1097], Program info length=[23] write_en50221_pmt_object: EN50221 header encoded write_en50221_pmt_object: Program level descriptor @ [0x80520d0], count=[2], tag=[09], length=[0f] encode_ca_pmt_command: Encoding SCRAMBLING @ PROGRAM Level, Command=[01] en50221_encode_descriptor: Tag=[09], length=[0f], CA system id=[500], CA PID=[306] en50221_encode_descriptor: Private Bytes=[11] [ 10 01 00 13 01 40 14 03 00 88 00 ] write_en50221_pmt_object: Program level descriptor @ [0x80520d0], count=[2], tag=[00], length=[00] write_en50221_pmt_object: Descriptor length=[0] en50221_encode_streams: Stream type=[02], ES PID=[1006], ES Info length=[00] en50221_encode_streams: Stream type=[03], ES PID=[1106], ES Info length=[06] debug_message: CA MESSAGE=[ 9f 80 32 22 03 04 49 fd 10 17 01 09 0f 05 00 e3 06 10 01 00 13 01 40 14 03 00 88 00 02 f0 06 f0 00 03 f1 06 f0 00 ] - dmesg: ------------------------- ... dst_ca_open: Device opened [e0b9bae0] dst_ca_ioctl: Sending message ca_send_message: ca_send_message: Command=[0x9f8032] ca_send_message: Command = SEND_CA_PMT asn_1_decode: Length field=[22] asn_1_decode: Length=[22] ca_set_pmt: CA Message length=[34] String=[ 03 04 49 fd 10 17 01 09 0f 05 00 e3 06 10 01 00 13 01 40 14 03 00 88 00 02 f0 06 f0 00 03 f1 06 f0 00 ] put_checksum: Computing string checksum. put_checksum: -> string length : 0x29 put_checksum: -> checksum : 0x1e String=[ 29 40 03 00 03 22 00 03 04 49 fd 10 17 01 09 0f 05 00 e3 06 10 01 00 13 01 40 14 03 00 88 00 02 f0 06 f0 00 03 f1 06 f0 00 1e ] dst_comm_init: Initializing DST. dst_gpio_outb: mask=[ffffffff], enbb=[0001], outhigh=[0000] rdc_reset_state: Resetting state machine dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0000] dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0002] dst_put_ci: Put Command dst_comm_init: Initializing DST. dst_gpio_outb: mask=[ffffffff], enbb=[0001], outhigh=[0000] rdc_reset_state: Resetting state machine dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0000] dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0002] writing [ 29 40 03 00 03 22 00 03 04 49 fd 10 17 01 09 0f 05 00 e3 06 10 01 00 13 01 40 14 03 00 88 00 02 f0 06 f0 00 03 f1 06 f0 00 1e ] dst_gpio_outb: mask=[ffffffff], enbb=[0000], outhigh=[0000] read_dst: reply is 0xff write_to_8820: DST-CI Command succes. ca_send_message: -->CA_PMT Success ! dst_ca_release: Device closed. ---------------------------------- Per