diff -Naur vdr-1.3.21/Makefile vdr-1.3.21/Makefile
--- vdr-1.3.21/Makefile	2005-02-13 11:13:45.000000000 +0100
+++ vdr-1.3.21/Makefile	2005-03-03 13:13:45.000000000 +0100
@@ -38,7 +38,7 @@
        lirc.o menu.o menuitems.o nit.o osdbase.o osd.o pat.o player.o plugin.o rcu.o\
        receiver.o recorder.o recording.o remote.o remux.o ringbuffer.o sdt.o sections.o\
        skinclassic.o skins.o skinsttng.o sources.o spu.o status.o svdrp.o themes.o thread.o\
-       timers.o tools.o transfer.o vdr.o videodir.o
+       timers.o tools.o transfer.o vdr.o videodir.o evocamd.o
 
 FIXFONT_ISO8859_1 = -adobe-courier-bold-r-normal--25-*-100-100-m-*-iso8859-1
 OSDFONT_ISO8859_1 = -adobe-helvetica-medium-r-normal--23-*-100-100-p-*-iso8859-1
diff -Naur vdr-1.3.21/channels.h vdr-1.3.21/channels.h
--- vdr-1.3.21/channels.h	2005-01-16 14:46:41.000000000 +0100
+++ vdr-1.3.21/channels.h	2005-03-03 13:13:45.000000000 +0100
@@ -158,7 +158,7 @@
   const char *Dlang(int i) const { return (0 <= i && i < MAXDPIDS) ? dlangs[i] : ""; }
   const char *Slang(int i) const { return (0 <= i && i < MAXSPIDS) ? slangs[i] : ""; }
   int Tpid(void) const { return tpid; }
-  int Ca(int Index = 0) const { return Index < MAXCAIDS ? caids[Index] : 0; }
+  int Ca(int Index = 0) const { return Index < MAXCAIDS ? 0/*caids[Index] */: 0; }
   int Nid(void) const { return nid; }
   int Tid(void) const { return tid; }
   int Sid(void) const { return sid; }
diff -Naur vdr-1.3.21/ci.c vdr-1.3.21/ci.c
--- vdr-1.3.21/ci.c	2004-07-17 16:30:17.000000000 +0200
+++ vdr-1.3.21/ci.c	2005-03-03 13:13:45.000000000 +0100
@@ -1341,7 +1341,7 @@
 }
 
 cCiHandler *cCiHandler::CreateCiHandler(const char *FileName)
-{
+{return NULL;
   int fd_ca = open(FileName, O_RDWR);
   if (fd_ca >= 0) {
      ca_caps_t Caps;
diff -Naur vdr-1.3.21/device.c vdr-1.3.21/device.c
--- vdr-1.3.21/device.c	2005-02-13 10:51:48.000000000 +0100
+++ vdr-1.3.21/device.c	2005-03-03 13:13:45.000000000 +0100
@@ -18,7 +18,7 @@
 #include "receiver.h"
 #include "status.h"
 #include "transfer.h"
-
+#include "evocamd.h"
 // --- cPesAssembler ---------------------------------------------------------
 
 class cPesAssembler {
@@ -588,6 +588,7 @@
         EnsureAudioTrack(true);
         }
      cStatus::MsgChannelSwitch(this, Channel->Number()); // only report status if channel switch successfull
+     send_evocam(Channel->Sid(),1);
      }
 
   return Result;
diff -Naur vdr-1.3.21/evocamd.c vdr-1.3.21/evocamd.c
--- vdr-1.3.21/evocamd.c	1970-01-01 01:00:00.000000000 +0100
+++ vdr-1.3.21/evocamd.c	2005-03-03 13:13:45.000000000 +0100
@@ -0,0 +1,33 @@
+#include "evocamd.h"
+
+int send_evocam(unsigned short servid, unsigned short msg)
+{
+int evocamdSocket;
+char sockBuffer[3];
+struct sockaddr_un servaddr;
+int clilen;
+
+servaddr.sun_family = AF_UNIX;
+strcpy(servaddr.sun_path, EVOCAM_SOCKET);
+clilen = sizeof(servaddr.sun_family) + strlen(servaddr.sun_path);
+if ((evocamdSocket = socket(AF_UNIX, SOCK_STREAM, 0)) < 0)
+{
+// perror("[Connect] socket");
+return 0;
+}
+if (connect(evocamdSocket, (struct sockaddr*) &servaddr, clilen) < 0)
+{
+//perror("[evocamdConnect] connect");
+return 0;
+}
+        sockBuffer[0] = servid >> 8;
+        sockBuffer[1] = servid & 0xff;
+	sockBuffer[2] = msg;
+if (write(evocamdSocket, sockBuffer, 3) < 0)
+{
+return 0;
+}
+close(evocamdSocket);
+return 1;
+}
+
diff -Naur vdr-1.3.21/evocamd.h vdr-1.3.21/evocamd.h
--- vdr-1.3.21/evocamd.h	1970-01-01 01:00:00.000000000 +0100
+++ vdr-1.3.21/evocamd.h	2005-03-03 13:13:45.000000000 +0100
@@ -0,0 +1,10 @@
+#ifndef __EVOCAMD_H
+#define __EVOCAMD_H
+
+#include <unistd.h>
+#include <sys/socket.h> 
+#include <sys/un.h>
+#define EVOCAM_SOCKET "/tmp/camd.socket"
+int send_evocam(unsigned short servid, unsigned short msg);
+
+#endif //__EVOCAMD_H
