[linux-dvb] Twinhan DTV Cab-CI support? SUCCESS (or kind of ;)!!

Per Dalén perda at oden.cnwab.se
Thu Sep 22 09:43:15 CEST 2005


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



More information about the linux-dvb mailing list