[linux-dvb] Problems with twinhanDTV Sat-CI and new HlCI Api

Manu Abraham manu at kromtek.com
Thu Jun 23 15:16:49 CEST 2005


sigmund at snap.tv wrote:
> Hi,
> I'm trying to make a TwinhanDTV Sat-CI card work with cam and the new api, 
> but have a few problems. I can't say if all these are related, and I'm not 
> sure what more info should be supplied, but here goes:
> 
> *Scanning works with dvbscan, and tuning works with szap, but no data comes 
> out of dvr0, even with -r and -x in various combinations and positions for 
> szap. I do however get FTA channels with vlc(which does it's own tuning).
> 

try using test_dvr and see whether the same problem persists in 
dvb-apps/test

> *ca_zap hangs after the following message:
> parse_si: PAT: Close Demux /dev/dvb/adapter0/demux0
> This might be related to the above problem.
>

Nope.

> *I've tried to replicate the calls of ca_zap inside vlc's dvb module, and 
> all seems to work, however the channel stay scrambled.
> 

Let's stick on to a minimalistic thing to get this going else, would be 
a real pain ..

Try running ca_zap alone, you might not be able to identify anything at 
all if the initial problems are not solved ..

> Attached is the output in dmesg from such a run, there are some interresting
> messages, like something about an ASIC bug, and descriptors at stream level. 

Which provider is it ?..  Some providers even if they do descryption at 
Program level, the have all the descriptors at Stream level . TPS is 
known for that . In this case the descriptors from the Stream level have 
to be moved to Program level ..

This thing i have not implemented yet ..

Try to get a dvbsnoop output for the PAT and PMT

> I hope this information can be of help, and can help someone find give me a 
> hint as to what is wrong.
> 
> As a side note, I've had several problems with these drivers, after some time 
> the signal strength and SNR values returned goes to 0000 in szap, and some 

That's okay for the moment, nothing to get upset ..

> large negative value in vlc, even though tuning works. And after some more 
> time tuning stops working. Even though the tuning calls complete without error
> the data returned are still from the old transponder. Reloading the drivers 
> sometimes help, other times a reboot is needed.

Hmm .. junk data was written to the card, the MCU crashed .. most 
probably ..

> 
> With regard
> 
> 
> 
> ------------------------------------------------------------------------
> 
> dst_ca_open:Device opened [ec93f700]
> i2c_adapter i2c-0: master_xfer[0] W, addr=0x55, len=10
> i2c_adapter i2c-0: master_xfer[0] R, addr=0x55, len=1
> i2c_adapter i2c-0: master_xfer[0] R, addr=0x55, len=10
> dst_ca_ioctl: Getting Slot capabilities
> put_checksum: ========================= Checksum calculation ===========================
> put_checksum: String Length=[0x07]
> put_checksum: String=[ 07 40 02 00 02 00 00 ]
> put_checksum: Sum=[4b]
> put_checksum: Checksum=[b5]
> put_checksum: ==========================================================================
> dst_put_ci: Put Command
> i2c_adapter i2c-0: master_xfer[0] W, addr=0x55, len=8
> i2c_adapter i2c-0: master_xfer[0] R, addr=0x55, len=1
> i2c_adapter i2c-0: master_xfer[0] R, addr=0x55, len=128
> ca_get_slot_caps: -->dst_put_ci SUCCESS !
> ca_get_slot_caps: Slot cap = [1]
> ===================================
>  10 64 0 0 2 3 0 1
> dst_ca_ioctl: -->CA_GET_CAP Success !
> dst_ca_ioctl: Getting Slot info
> put_checksum: ========================= Checksum calculation ===========================
> put_checksum: String Length=[0x07]
> put_checksum: String=[ 00 05 00 00 00 00 00 ]
> put_checksum: Sum=[05]
> put_checksum: Checksum=[fb]
> put_checksum: ==========================================================================
> dst_put_ci: Put Command
> i2c_adapter i2c-0: master_xfer[0] W, addr=0x55, len=8
> i2c_adapter i2c-0: master_xfer[0] R, addr=0x55, len=1
> i2c_adapter i2c-0: master_xfer[0] R, addr=0x55, len=128
> ca_get_slot_info: -->dst_put_ci SUCCESS !
> ca_get_slot_info: Slot info = [220]
> ===================================
>  6 167 25 220 128 33 1 188
> dst_ca_ioctl: -->CA_GET_SLOT_INFO Success !
> dst_get_signal: Getting Signal strength and other parameters !!!!!!!!
> i2c_adapter i2c-0: master_xfer[0] W, addr=0x55, len=8
> i2c_adapter i2c-0: master_xfer[0] R, addr=0x55, len=1
> i2c_adapter i2c-0: master_xfer[0] R, addr=0x55, len=8
> dst_get_signal: Getting Signal strength and other parameters !!!!!!!!
> dst_ca_ioctl: Sending message
> ca_send_message
> ca_send_message:Command=[0x9f8020]
> ca_send_message: Getting Cam Application information
> put_checksum: ========================= Checksum calculation ===========================
> put_checksum: String Length=[0x07]
> put_checksum: String=[ 07 40 01 00 01 00 00 ]
> put_checksum: Sum=[49]
> put_checksum: Checksum=[b7]
> put_checksum: ==========================================================================
> dst_put_ci: Put Command
> i2c_adapter i2c-0: master_xfer[0] W, addr=0x55, len=8
> i2c_adapter i2c-0: master_xfer[0] R, addr=0x55, len=1
> i2c_adapter i2c-0: master_xfer[0] R, addr=0x55, len=128
> ca_get_app_info: -->dst_put_ci SUCCESS !
> ca_get_app_info: ================================ CI Module Application Info ======================================
> ca_get_app_info: Application Type=[1], Application Vendor=[2816], Vendor Code=[1201]
> ca_get_app_info: Application info=[Conax 4.00e]
> ca_get_app_info: ==================================================================================================
> ca_send_message: -->CA_APP_INFO_ENQUIRY Success !
> dst_ca_ioctl: Getting message
> Message = [9f 80 21]
> ca_get_message:Command=[0x9f8021]
> dst_ca_ioctl: -->CA_GET_MSG Success !
> dst_ca_ioctl: Sending message
> ca_send_message
> ca_send_message:Command=[0x9f8032]
> Command = SEND_CA_PMT
> asn_1_decode: Length field=[2b]
> asn_1_decode: Length=[2b]
> ca_set_pmt: CA Message length=[43]
> ca_set_pmt: ASN.1  String=[ 03 0b c0 23 00 07 01 00 41 01 00 00 17 02 02 00 00 00 04 02 80 00 00 06 02 81 00 00 06 02 40 00 00 c0 03 50 00 00 0b 08 fb 00 00 ]
> copy_string: Copying [ 03 0b c0 23 00 07]
> ca_set_pmt: Probably an ASIC bug !!!
>  String=[ 00 00 80 32 00 00 00 03 0b c0 23 00 07 00 00 00 00 00 00 ]
> ca_set_pmt: Program info length=[07]
> copy_string: Copying [ 01 00 41 01 00 00 17 02]
> copy_string: Copying [ 02 00 00 00 04]
> ca_set_pmt: ES info length=[402]
> ca_set_pmt: Descriptors @ STREAM level...!!! 
> copy_string: Copying [ 02 80 00 00 06]
> ca_set_pmt: ES info length=[602]
> ca_set_pmt: Descriptors @ STREAM level...!!! 
> copy_string: Copying [ 02 81 00 00 06]
> ca_set_pmt: ES info length=[602]
> ca_set_pmt: Descriptors @ STREAM level...!!! 
> copy_string: Copying [ 02 40 00 00 c0]
> ca_set_pmt: ES info length=[203]
> ca_set_pmt: Descriptors @ STREAM level...!!! 
> copy_string: Copying [ 03 50 00 00 0b]
> ca_set_pmt: ES info length=[b08]
> ca_set_pmt: Descriptors @ STREAM level...!!! 
>  String=[ 00 00 80 32 00 00 00 03 0b c0 23 00 08 01 00 41 01 00 00 17 02 02 00 00 00 04 02 80 00 00 06 02 81 00 00 06 02 40 00 00 c0 03 50 00 00 0b 00 00 27 62 f9 ]

Yep, it wrote junk ..


To check whether ca_zap is sending the messages okay, you can 
temporarily disable the call to write_to_Slot() to disable writes to the 
   MCU.

The relevant debugstring printed out to the console should be a valid 
CA_PMT object..

Just try it out , try to get as much as information from the stream as 
well as verbosed information. The only wasy we can check for bugs is 
comparing both of these ..

Manu




More information about the linux-dvb mailing list