Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[vdr] Some CI/CAM experiences



Hi all!

I started to use VDR a couple of days ago and here are some of my (CI/CAM)
experiences, so far. I did some research before my DVB-card arrived and concluded
that it could be problems with the CI/CAM... :)

My setup:
DVB-C card
Viaccess CAM (Red label, V478)
3.5" CI
Cable provider: ComHem, Sweden

I started out with VDR 1.1.26 and tried linux-dvb.2003-02-09-ci-ll.tar.bz2,
linux-dvb.2003-02-16.tar.bz2 and linuxtv-dvb-1.0.0-pre2.tar.gz without any success. I
also tried with and without the cam-1.1.26.diff patch.

I think that I at this point discovered that my channels.conf was corrupt. M64 and C
were swapped (I had used some conversion perl script to convert from a .lst file from
Windows...). Anyhow now I could see three unencrypted channels.

At this point I switch to the "latest" snapshot of the driver (dvb-20030407.tar.bz2).
VDR was "cam patched" when I started to debug. I never got any further that step 1 in
cams.txt.

First thing I found was that I never stepped into an if-statement with "&&
channel.Ca()" in it. ("&& channel.Ca()" was added with the cam patch...). "All" my CA
fields in channels.conf are zero (could this be wrong???) . So I commented out "&&
channel.Ca()" and suddenly I got all the way to step 6. :) (I have tested that I get
this far as well with an unpatched VDR and the 0407 driver. I don't know if I was to
impatient before or if the driver does the magic.)

Step 7 talks about problem to extract CA descriptors from the DVB stream. After some
messing around I found a caDescriptor->Add() in cSIProcessor::Action(), which I never
reached. To get to this statement, a DESCR_CA had to be found in the stream. Some
tracing showed that I actually had DESCR_CA's in my stream and that they were
inserted in descriptor lists.

But, the problem seemed like that all my DESCR_CA's ended up in PidInfo descriptor
lists and not in the Pid descriptor list, which was looped thru in ::Action(). I
added an extra for loop around the previous one, so all PidInfo descriptor lists
where "scanned" instead of the Pid descriptor list.

And voila, my encrypted channels started to decode. :)

I'm no DVB expert so what I've done could be completely wrong, but hopefully some
smart people (on this list) could explain why my hack helps me.

It is still a bit unstable though. I have seen segmentation faults, "ending up in CAM
menu", "hangings" and channel switching takes quit some time (> 15 sec), but that
just minor things right now... :)

Best regards,
Håkan








-- 
Info:
To unsubscribe send a mail to listar@linuxtv.org with "unsubscribe vdr" as subject.



Home | Main Index | Thread Index