Mailing List archive

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

[vdr] Re: CAM Skycrypt - connection lost after editing



Wolfgang Goeller wrote:
> 
> Hans-Peter Raschke wrote:
> 
> > did you try the -ll version with my recently posted patch?
> 
> Well, at first not - i tried with the -ll version but even
> cold reboot did bring no success. Then I used the icam-version
> and that was it. Seems to work reliable.

Please take VDR 1.2.5pre2, the latest CVS driver (both available
in ftp://ftp.cadsoft.de/vdr/Developer) and apply this patch
to VDR/dvbdevice.c:

--- dvbdevice.c 2003/09/06 13:19:33     1.64
+++ dvbdevice.c 2003/09/07 14:28:00
@@ -272,20 +272,29 @@
               if (ciHandler) {
                  if (ciHandler->Process() && useCa) {
                     if (tunerStatus != tsCam) {//XXX TODO update in case the CA descriptors have changed
+                       static bool CaMode = false;
                        for (int Slot = 0; Slot < ciHandler->NumSlots(); Slot++) {
                            uchar buffer[2048];
                            int length = cSIProcessor::GetCaDescriptors(channel.Source(), channel.Frequency(), channel.Sid(), ciHandler->GetCaSystemIds(Slot), sizeof(buffer), buffer);
                            if (length > 0) {
                               cCiCaPmt CaPmt(channel.Sid());
-                              CaPmt.AddCaDescriptor(length, buffer);
-                              if (channel.Vpid())
+                              if (!CaMode) CaPmt.AddCaDescriptor(length, buffer);
+                              if (channel.Vpid()) {
                                  CaPmt.AddPid(channel.Vpid());
-                              if (channel.Apid1())
+                                 if (CaMode) CaPmt.AddCaDescriptor(length, buffer);
+                                 }
+                              if (channel.Apid1()) {
                                  CaPmt.AddPid(channel.Apid1());
-                              if (channel.Apid2())
+                                 if (CaMode) CaPmt.AddCaDescriptor(length, buffer);
+                                 }
+                              if (channel.Apid2()) {
                                  CaPmt.AddPid(channel.Apid2());
-                              if (channel.Dpid1())
+                                 if (CaMode) CaPmt.AddCaDescriptor(length, buffer);
+                                 }
+                              if (channel.Dpid1()) {
                                  CaPmt.AddPid(channel.Dpid1());
+                                 if (CaMode) CaPmt.AddCaDescriptor(length, buffer);
+                                 }
                               if (ciHandler->SetCaPmt(CaPmt, Slot)) {
                                  tunerStatus = tsCam;
                                  startTime = 0;

With this version please try receiving encrypted channels, once leaving 'CaMode'
at the value 'false', then setting it to true.

Can you observe a different behaviour in the two cases?
Does it work in any of them?

NB: make sure you use the LL firmware (the logfile should list "...firmware supports
    CI link layer interface").

Klaus


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



Home | Main Index | Thread Index