Mailing List archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[vdr] Re: Cam Aston problem
Le 01/23/2004 07:10 PM, tho68@ssisrl.com a joliment écrit :
I am using VDR 1.2.6 with two cam Aston 1.05 and an original smartcard
SkyItalia, The first cam has Rev 1.1 and everithing work almost fine, the
second one is a Rev 1.2 and does not decrypt. I am using link layer ci
interface and I start debugging the behaviour of both CAM. I observed that
Rev 1.2 CAM does not handle open_session_response for session 00100041
and answer with three bytes "00 01 00" that VDR does not understand and
start a open_session -> close_session -> open_session loop, during which
is really slow to answer channel switching or everithing else command.
I does not really know anything about the protocol specification between
CAM and applications, and I would be very grateful if someone can tell me
where this specifications can be found, to avoid me a long and blind
research.
I had to apply this patch make cam Aston 1.05 to work with canal+.
Maybe it helps you.
Nicolas.
--
Powered .~.
by Linux /V\
------ // \\
solutions for /( )\
smart penguins ^`~'^
Here is a rough patch to make it work:
--- vdr-1.2.2/ci.c 2003-08-02 12:00:01.000000000 +0200
+++ vdr-1.2.2-mod/ci.c 2003-09-14 15:16:56.000000000 +0200
@@ -1253,10 +1253,10 @@
capmt[length++] = 0x00; // program_info_length L
}
-void cCiCaPmt::AddPid(int Pid)
+void cCiCaPmt::AddPid(int Pid, int StreamType)
{
//XXX buffer overflow check???
- capmt[length++] = 0x00; //XXX stream_type (apparently doesn't matter)
+ capmt[length++] = StreamType; //XXX stream_type (apparently doesn't matter, except for Aston/SECA)
capmt[length++] = (Pid >> 8) & 0xFF;
capmt[length++] = Pid & 0xFF;
esInfoLengthPos = length;
vdr-1.2.2-mod/ci.h
--- vdr-1.2.2/ci.h 2003-05-25 13:44:47.000000000 +0200
+++ vdr-1.2.2-mod/ci.h 2003-09-14 16:51:40.000000000 +0200
@@ -66,7 +66,7 @@
uint8_t capmt[2048]; ///< XXX is there a specified maximum?
public:
cCiCaPmt(int ProgramNumber);
- void AddPid(int Pid);
+ void AddPid(int Pid, int StreamType);
void AddCaDescriptor(int Length, uint8_t *Data);
};
vdr-1.2.2-mod/dvbdevice.c
--- vdr-1.2.2/dvbdevice.c 2003-05-24 15:23:51.000000000 +0200
+++ vdr-1.2.2-mod/dvbdevice.c 2003-09-14 16:52:25.000000000 +0200
@@ -276,13 +276,13 @@
cCiCaPmt CaPmt(channel.Sid());
CaPmt.AddCaDescriptor(length, buffer);
if (channel.Vpid())
- CaPmt.AddPid(channel.Vpid());
+ CaPmt.AddPid(channel.Vpid(),0x02);
if (channel.Apid1())
- CaPmt.AddPid(channel.Apid1());
+ CaPmt.AddPid(channel.Apid1(),0x04);
if (channel.Apid2())
- CaPmt.AddPid(channel.Apid2());
+ CaPmt.AddPid(channel.Apid2(),0x04);
if (channel.Dpid1())
- CaPmt.AddPid(channel.Dpid1());
+ CaPmt.AddPid(channel.Dpid1(),0x00);
if (ciHandler->SetCaPmt(CaPmt, Slot)) {
tunerStatus = tsCam;
startTime = 0;
Home |
Main Index |
Thread Index