[vdr] Testing multi CAM mode

Klaus Schmidinger Klaus.Schmidinger at cadsoft.de
Sun Nov 13 15:16:02 CET 2005

I have uploaded a patch against VDR 1.3.36 to


which is a first attempt to allow multiple channels to
be decrypted at the same time, provided the CAM supports

There is currently no test whether this operation is possible
or how many channels a given CAM can decrypt simultaneously,
so use this with extreme care! This is just for testing!!

With my AlphaCrypt CAM I have successfully tested 3 parallel
recordings of encrypted channels on the same transponder.

Now the reason why I am providing this patch is that I'd
like to invite you folks to try this out and maybe see what
might be wrong here. The problem is that whenever a channel
is added or removed from the CA_PMT data, there are distortions
in the recordings.

What I'm doing is to send either a single CA_PMT object (marked
as CPLM_ONLY), in case there is only one channel to decrypt,
or a list of such objects (CPLM_FIRST/CPLM_MORE/CPLM_LAST), in
case there is more than one channel.

The standard says:

   When the CA application receives a CA_PMT with a new list of programmes,
   it starts analysing the new list and usually stops the descrambling of the
   programmes of the previous list, except if it detects that this new list
   contains programme(s) or elementary stream(s) of the previous list. In this case,
   it should continue the descrambling of this programme or elementary stream
   without interruption visible by the user. For example, the only way to remove
   a programme from the list consists in sending a new list without the programme.
   In this case, the module should continue the descrambling of the other programmes
   of the list without interruption. Another typical example is when the host sends
   a new CA_PMT because the version_number of the PMT has changed. This change may
   not affect the CA operation and in this case, the module should not interrupt the

So from this I would expect no distortions to happen when adding/removing
channels from the list of CA_PMT objects.

Now there is either a flaw in my code, or my CAM just doesn't work
as required by the standard.

Any hints here are appreciated.


More information about the vdr mailing list