[Patch] CAM-Tweaks für Multi Channel Decryption

  • So all with 09 0A 0B 00 F3 89

    and today 09 0A 0B 00 89 F3 with the last 2 bytes reversed.

    Can you find more of this wrong CAT-PIDS by greping for '89 f3' in your logs?

    A workaround could be to look for this wrong PID in ci.c / cCaPidReveiver::Receive() and adjust it - but this is more a hack then a fix.


    Edit: corvy - you can try this patch. It compiles, but is completly untested

  • I think I thought too complicated last night.

    It's better to treat it what it is - a plain data error. And data with faulty CRC32 checksum should be simply ignored.

    Here is a more general patch fo this problem (and it has nothing to do with your provider - so ignore the patch in post #61).


  • will this be proposed for the next release in case it is stable?

    I dont know, maybe only if this patch really solves your problem.

    If you can catch the CRC-error ( look for cCaPidReceiver::Receive() : CRC-ERROR - skip invalid CAT section [Ver.... with a following cCaPidReceiver::Receive() : got valid CAT section [Ver....in your logs ) then i think the chances are good.


  • Seems I have too many patches so this last one fails to apply:

    Attached my ci.c file (had to zip it due to forum not accepting .c extension upload). I have patched most of kls patches (up to 26).

  • Your manually patch looks OK. I applied it with all vdr-patches up to #34 but didn't think of your HEXDUMP() line.

    I think it will take some time to catch the data/crc error because the CAT is first evaluated on a channel-switch, but after that only if the catversionchanges - but i don't know how often this happens (hours ?, days?).
    And so i think, for test purposes, it would be better to modify the patch and verify the checksum of all CATPID occurences, regardless of catversion.

    I will try this tonight - and open a new thread for it because it has nothing to do with MCD or MTD.


  • Mit dem letzten Patch wird es auch noch nicht hell:

    Weil ich nicht bemerkt habe, das die ECM-Pids immer nur auf Programm-Ebene in die caPMT eingetragen und damit auf alle EsPids angewendet wurden. Mein Test mit 4 Programmen war nur deshalb erfolgreich, weil sie alle die gleiche ECM-Pid verwenden (shared Pids).

    Hier nun ein Patch, der die zur EsPid passende ECM-Pid auf Stream-Ebene in die caPMT einträgt. Läuft so bei mir nun auch mit mehreren Programmen und unterschiedlichen ECM-Pids.

    kamel5 : der Plugin-Patch ist nicht erforderlich, die Debug-Ausgaben sind in diesem Patch enthalten