[linux-dvb] Re: %5Blinux-dvb%5D%20Twinhan%20Cab%2FCI%202031%3A%20frontend%20entry%20sometimes%20missing

Zoilo Gomez zoilo at xs4all.nl
Wed Sep 27 13:31:55 CEST 2006


Hi Manu,

Zoilo Gomez wrote:

> Manu Abraham wrote:
>
>> Zoilo Gomez wrote:
>>  
>>
>>> Manu Abraham wrote:
>>>
>>>   
>>>
>>>> Zoilo Gomez wrote:
>>>>

<...>

>>>>> 2) needed to tune twice in case of freq change; the first time would
>>>>> almost never give a lock (but sometimes it did strangely enough)
>>>>

<...>

> msleep(20) does not seem to make any difference for problem (2). If I 
> change frequencies, I have to select twice in order to obtain a lock 
> ... Also msleep(100) make no change.
>
> I wonder if this problem has to do with CA initialization after tuner 
> freq change, but unfortunately I have no FTA-channels so I cannot 
> compare it.


As mentioned, the tuning problem persists, with msleep(20) as well as 
msleep(100).

I think that it has something to do with CA initialization.

Here is a dmesg dump while trying to change freq 322,750,000 (pid=12183) 
to 306,750,000 (pid=12242).

>dst_ca_open:  Device opened [dd29b3c0] 
>dst_ca_ioctl:  Getting Slot capabilities
>put_checksum:  Computing string checksum.
>put_checksum:   -> string length : 0x07
>put_checksum:   -> checksum      : 0xb5
>dst_put_ci:  Put Command
>dst(1) dst_comm_init: Initializing DST.
>dst(1) dst_gpio_outb: mask=[ffffffff], enbb=[0001], outhigh=[0000]
>dst(1) rdc_reset_state: Resetting state machine
>dst(1) dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0000]
>dst(1) dst_set_freq: set Frequency 306750000
>dst(1) dst_set_frontend: Set Frequency=[306750000]
>dst(1) dst_set_symbolrate: set symrate 6900000
>dst(1) dst_set_symbolrate: DCT-CI
>dst(1) dst_write_tuna: type_flags 0x1219 
>dst(1) dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0002]
>writing [ 07 40 02 00 02 00 00 b5 ]
>dst(1) dst_gpio_outb: mask=[ffffffff], enbb=[0000], outhigh=[0000]
>dst(1) read_dst: reply is 0xff
>dst(1) dst_wait_dst_ready: dst wait ready after 1
>dst(1) read_dst: reply is 0xa
> 0x40 0x0 0x0 0x2 0x3 0x0 0x1 0x18 0x1 0x97 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff
>ca_get_slot_caps:  -->dst_put_ci SUCCESS !
>ca_get_slot_caps:  Slot cap = [1]
>===================================
> 10 64 0 0 2 3 0 1 24 1 151
>dst_ca_ioctl:  -->CA_GET_CAP Success !
>dst_ca_ioctl:  Getting Slot info
>put_checksum:  Computing string checksum.
>put_checksum:   -> string length : 0x07
>put_checksum:   -> checksum      : 0xfb
>dst_put_ci:  Put Command
>dst(1) dst_comm_init: Initializing DST.
>dst(1) dst_gpio_outb: mask=[ffffffff], enbb=[0001], outhigh=[0000]
>dst(1) rdc_reset_state: Resetting state machine
>dst(1) dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0000]
>dst(1) dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0002]
>writing [ 00 05 00 00 00 00 00 fb ]
>dst(1) dst_gpio_outb: mask=[ffffffff], enbb=[0000], outhigh=[0000]
>dst(1) read_dst: reply is 0xff
>dst(1) dst_wait_dst_ready: dst wait ready after 2
>dst(1) read_dst: reply is 0x0
> 0x5 0x0 0x14 0x88 0x4b 0x0 0x14 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff
>ca_get_slot_info:  -->dst_put_ci SUCCESS !
>ca_get_slot_info:  Slot info = [20]
>===================================
> 0 5 0 20 136 75 0 20
>dst_ca_ioctl:  -->CA_GET_SLOT_INFO Success !
>dst_ca_ioctl:  Sending message
>ca_send_message:  
>ca_send_message:  Command=[0x9f8020]
>
>ca_send_message:  Getting Cam Application information
>put_checksum:  Computing string checksum.
>put_checksum:   -> string length : 0x07
>put_checksum:   -> checksum      : 0xb7
>dst_put_ci:  Put Command
>dst(1) dst_comm_init: Initializing DST.
>dst(1) dst_gpio_outb: mask=[ffffffff], enbb=[0001], outhigh=[0000]
>dst(1) rdc_reset_state: Resetting state machine
>dst(1) dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0000]
>dst(1) dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0002]
>writing [ 07 40 01 00 01 00 00 b7 ]
>dst(1) dst_gpio_outb: mask=[ffffffff], enbb=[0000], outhigh=[0000]
>dst(1) read_dst: reply is 0xff
>dst(1) dst_wait_dst_ready: dst wait ready after 1
>dst(1) read_dst: reply is 0xd
> 0x40 0x0 0x0 0x1 0x6 0x0 0x0 0x3 0x1 0x0 0x41 0x0 0x67 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff
>ca_get_app_info:  -->dst_put_ci SUCCESS !
>ca_get_app_info:  ================================ CI Module Application Info ======================================
>ca_get_app_info:  Application Type=[0], Application Vendor=[769], Vendor Code=[65]
>ca_get_app_info: Application info=[]
>ca_get_app_info:  ==================================================================================================
>ca_send_message:  -->CA_APP_INFO_ENQUIRY Success !
>dst(1) dst_comm_init: Initializing DST.
>dst(1) dst_gpio_outb: mask=[ffffffff], enbb=[0001], outhigh=[0000]
>dst(1) rdc_reset_state: Resetting state machine
>dst(1) dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0000]
>dst_ca_ioctl:  Getting message
>ca_get_message:  Message = [9f 80 21]
>ca_get_message:  Command=[0x9f8021]
>dst_ca_ioctl:  -->CA_GET_MSG Success !
>dst(1) dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0002]
>writing [ 09 00 04 ae 3e 00 1a f4 40 b9 ]
>dst(1) dst_gpio_outb: mask=[ffffffff], enbb=[0000], outhigh=[0000]
>dst(1) read_dst: reply is 0xff
>dst(1) dst_wait_dst_ready: dst wait ready after 42
>dst(1) read_dst: reply is 0x9
> 0x0 0x4 0xae 0x3e 0x0 0x1a 0xf4 0x40 0xb9
>dst(1) dst_comm_init: Initializing DST.
>dst(1) dst_gpio_outb: mask=[ffffffff], enbb=[0001], outhigh=[0000]
>dst(1) rdc_reset_state: Resetting state machine
>dst(1) dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0000]
>dst(1) dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0002]
>writing [ 00 05 00 00 00 00 00 fb ]
>dst(1) dst_gpio_outb: mask=[ffffffff], enbb=[0000], outhigh=[0000]
>dst(1) read_dst: reply is 0xff
>dst(1) dst_wait_dst_ready: dst wait ready after 1
>dst(1) read_dst: reply is 0x0
> 0x5 0x0 0x0 0x88 0x2 0x0 0x71
>

At this point things stop ...

When I tune again to the same very channel (successfully), dmesg output 
does not stop at this point, but continues as follows:

>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=[21]
>asn_1_decode:  Length=[21]
>
>ca_set_pmt:  CA Message length=[33]
> String=[ 03 2f 6e 01 00 07 01 09 04 18 01 e0 23 02 08 fd 00 00 04 09 08 00 00 06 09 c5 00 00 06 09 05 00 00 ]
>put_checksum:  Computing string checksum.
>put_checksum:   -> string length : 0x28
>put_checksum:   -> checksum      : 0x9b
> String=[ 28 40 03 00 03 21 00 03 2f 6e 01 00 07 01 09 04 18 01 e0 23 02 08 fd 00 00 04 09 08 00 00 06 09 c5 00 00 06 09 05 00 00 9b ]
>dst_put_ci:  Put Command
>dst(1) dst_comm_init: Initializing DST.
>dst(1) dst_gpio_outb: mask=[ffffffff], enbb=[0001], outhigh=[0000]
>dst(1) rdc_reset_state: Resetting state machine
>dst(1) dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0000]
>dst(1) dst_gpio_outb: mask=[0002], enbb=[0002], outhigh=[0002]
>writing [ 28 40 03 00 03 21 00 03 2f 6e 01 00 07 01 09 04 18 01 e0 23 02 08 fd 00 00 04 09 08 00 00 06 09 c5 00 00 06 09 05 00 00 9b ]
>dst(1) dst_gpio_outb: mask=[ffffffff], enbb=[0000], outhigh=[0000]
>dst(1) read_dst: reply is 0xff
>write_to_8820:  DST-CI Command success.
>ca_send_message:  -->CA_PMT Success !
>

So I think that there is a CA problem.

Any idea why the dst_ca_ioctl call does not occur?

Z.




More information about the linux-dvb mailing list