[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.

    Helmut


    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).


    Helmut

  • 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.


    Helmut

  • 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.


    Helmut

  • 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


    Helmut

  • Hier eine neue Version des CamTweak Patch, die es ermöglicht, das Programm Limit von Ca-Modulen anzuheben.
    Dazu wird nicht wie sonst üblich für jedes Programm eine eigene CA_PMT an das CAM übertragen, sondern alle Programme (Stream- und ECM-Pids) eines CamSlot bzw. bei MTD auch aller MtdCamslots in eine einzelne CA_PMT gepackt.

    Das Programm Limit hängt dann nur von der möglichen Anzahl der Pids ab, die das CAM aufnehmen kann.


    Es gibt dazu 2 neue Optionen in der camtweaks.conf, die beste und einfachste wäre der Wert 0x21 (MTD) onder 0x25 (nur MCD).

    Code: camtweaks.conf
    1. # CAMTWEAK_PACK_MCD 0x10 - pack each CamSlot into a single CA_PMT - for CAMs with limited program slots
    2. # CAMTWEAK_PACK_MTD 0x20 - pack *all* MtdCamSlots into a single CA_PMT - for CAMs with only one program slot
    3. # Example: 0x21,0,<...> tweaks enabled, PACK_MTD (single CA_PMT for MCD+MTD, implicit MCD and unlimited number of programs)

    Ich kann nun mit dem SimpiTv-Modul statt 2 nun auch 7 Programme gleichzeitig entschlüsseln.

    Jun 24 23:48:27 gentoo64vdr vdr[2942]: [2942] SendCaPmts(MTD) CAM 1: [0] actives in CAM: 7 -> 7 (20 pids)


    Es funktioniert grundsätzlcih auch mit der Sky CAM - allerdings mit ein paar Einschränkungen wie sich bei den Tests von kamel5 herausgestellt hat.

    - Maximal 2 Programme gleichzeitig - vermutlich eine Beschränkung auf 6 Stream-Pids

    - MTD it derzeit noch nicht möglich - nicht einmal die Simulation mit KEEPPIDS in mtd.c

    - Beim Hin- und Herzappen auf andere Kanäle während einer laufenden Aufnahme kömmt irgendwann der Punkt wo der 2. Kanal nicht mehr

    entschlüsselt wird (das passiert manschmal schon nach 8 oder auch erst nach 50 mal), Es ist aber noch nicht klar warum das so ist und ob es nur bei der SKY CAM Auftritt.


    Wenn jemand den Patch testen möchte - ein paar Erfahrungsberichte wären sehr interessant.


    Helmut

  • Ich habe mich letztes Wochenende zu sehr auf dieses packen der CA_PMT konzentriert, dass ich, nach einer letzten kleinen Änderung, den "Normal" Modul nicht aufmerksam getestet habe. Daher ist mir auch nicht aufgefallen, des er mit dem obigen Patch nicht mehr richtig funktioniert.

    Auch beim mitzählen der aktven Programme war noch ein Fehler.

    Hier nun ein Update in dem diese Fehler behoben sind.


    Zusätzlich habe ich noch eine kleine Ergänzung beim Entfernen von Pids eingefügt, da ich auch Pobleme nach mehrmaligem Umschalten bei einer laufenden Aufnahme festgestellt habe. Nun werden die aktuell zu entfernenden Pids einmalig mit "NOT_SELECTED" in die CA_PMT aufgenommen. Das hat bei mir geholfen - ist aber vielleicht auch CAM-abhängig.

    kamel5 - ist in etwa wie im der sid9.patch - ich hoffe, es gibt keine Verschlechterung bei dir.


    Helmut