[vdr] Multiple decryption with TechniCrypt CW CAM

Arthur Konovalov artlov at gmail.com
Wed Apr 16 10:52:41 CEST 2008


Arthur Konovalov wrote:
> Klaus Schmidinger wrote:
> 
>> Can you narrow down which of these three changes is actually necessary
>> to make it work?
> I can repeat tests tomorrow, but I recall that this (it was first change):
> 
>>        state = 4; // normal operation
>> +     repliesToQuery = true; //AK
>>        }
> and this (next change, because first doesn't help and I saw replays to 
> query: Slot 1: <== Ca Pmt Reply (3) 1144 01 82 2210=82 2211=82):
>        dbgprotocol("\n");
>        }
> +	state = 6; //AK
>        break;
> 
> was necessary in this case.

Confirmed, only with those 2 changes multiple decryption works.

>> #define QUERY_WAIT_TIME      3000 // ms to wait before sending a query
> Will try tomorrow.
Doesn't help.

Added syslog debug entries like this:

          if (l <= 2){
             ok = CA_ENABLE(caepl) == CAEI_POSSIBLE;
       	    dsyslog("AK: CA_ENABLE(caepl): %d, ok: %d", CA_ENABLE(caepl),ok);
		 }
          while (l > 2) {
                uint16_t pid = ((uint16_t)(*d) << 8) | *(d + 1);
                unsigned char caees = *(d + 2);
                dbgprotocol(" %d=%02X", pid, caees);
                d += 3;
                l -= 3;
            	   dsyslog("AK: CA_ENABLE(caees): %d, ok: %d", CA_ENABLE(caees),ok);
                if (CA_ENABLE(caees) != CAEI_POSSIBLE){
                   ok = false;
            	   	  dsyslog("AK: ok set to false. state: %d", state);
			   }
          }
          if (ok){
            	dsyslog("AK: ok true!");
             state = 6; // descrambling possible
          }
       }
    }
    }
dbgprotocol("\n");
}
dsyslog("AK:  state: %d", state);
break;



And syslog (with 'repliesToQuery = true;' only):

Apr 16 11:00:35 vdr vdr: [17443] switching to channel 136
Apr 16 11:00:36 vdr vdr: [17447] AK: CA_ENABLE(caees): 2, ok: 1
Apr 16 11:00:36 vdr vdr: [17447] AK: ok set to false. state: 5
Apr 16 11:00:36 vdr vdr: [17447] AK: CA_ENABLE(caees): 2, ok: 0
Apr 16 11:00:36 vdr vdr: [17447] AK: ok set to false. state: 5
Apr 16 11:00:36 vdr vdr: [17447] AK:  state: 5
Apr 16 11:00:36 vdr vdr: [17443] info: Channel not available!

It seems that 'if (CA_ENABLE(caees) != CAEI_POSSIBLE)' is reason of fault and 
'state' always stay false.
Unfortunately  I don't understand this logic here :/


Arthur




More information about the vdr mailing list