diff --git a/libraries/BlePoll/BlePoll.cpp b/libraries/BlePoll/BlePoll.cpp
index 00a564cd7575ec7a7d24384f6844d4777af7d0b5..f2b89ae3d67d527cf753ec12a685ac02e0bde3ae 100644
--- a/libraries/BlePoll/BlePoll.cpp
+++ b/libraries/BlePoll/BlePoll.cpp
@@ -1502,6 +1502,48 @@ int BlePoll::getMeas(int slAdr, byte *dest)
   return(anzByte);
 }
 
+int BlePoll::getCtrlM(int slAdr, byte *dest){
+  int     anzByte;
+  PlpType appId;
+
+  if(slAdr < 1) return(false);
+  if(slAdr >= MAXSLAVE) return(false);
+
+  
+  SlavePtr  slavePtr = &slaveList[slAdr];
+  appId = (PlpType) slavePtr->result.plData[0];
+
+  switch(appId)
+  {
+    case plptMeas6:
+      anzByte = 0;
+      break;
+
+    case plptMeas9:
+      anzByte = 0;
+      break;
+
+    case plptMeas9Ctrl4:
+      anzByte = 4;
+      break;
+
+    case plptMeas13:
+      anzByte = 0;
+      break;
+
+    default:
+      anzByte = 0;
+      break;
+  }
+
+  for (int i = 0; i < anzByte; i++)
+  {
+    dest[i] = slavePtr->result.plData[i+20];
+  }
+
+  return(anzByte);
+}
+
 
 // --------------------------------------------------------------------------
 // Debugging
diff --git a/libraries/BlePoll/BlePoll.h b/libraries/BlePoll/BlePoll.h
index 59757afc66b79a22f4c5aa28971f164361d0f75f..721d22c5c1b2fd65fc1415d7707fb2d93383e036 100644
--- a/libraries/BlePoll/BlePoll.h
+++ b/libraries/BlePoll/BlePoll.h
@@ -219,6 +219,7 @@ typedef struct _PollInfo
   dword   wrongs;     // Anzahl ungewünschter Netzaktivitäten
 } PollInfo, *PollInfoPtr;
 
+
 typedef struct _PollState
 {
   byte    slIdx;      // Index in der Slave-Liste
@@ -493,7 +494,7 @@ public:
   int       getArea(int slIdx);     // Wert der Area auslesen
   PlpType   getAppId(int slIdx);    // Wert der AppId (BlePoll) auslesen
   int       getMeas(int slIdx, byte *dest);    // Messwerte übergeben
-
+  int       getCtrlM(int slIdx, byte *dest);
 
 
   // --------------------------------------------------------------------------
diff --git a/libraries/environment/SoaapBleMaster.h b/libraries/environment/SoaapBleMaster.h
index fb14e55e99bd8ccfb2139924ab0425a6a21de623..98bd22eb99c0839cf9f5ad554dd116b21c0afd81 100644
--- a/libraries/environment/SoaapBleMaster.h
+++ b/libraries/environment/SoaapBleMaster.h
@@ -37,6 +37,11 @@
 // Vorwärtsreferenzen
 // ----------------------------------------------------------------------------
 //
+void ctrlIdle();
+void ctrlInit();
+void sendCtrl();
+void checkCtrl();
+
 void apInit();
 void apWaitDE();
 void apWaitMeas();
diff --git a/sketches/_PIO_Sketches/Karger/SoaapBleMaster_Test_2/src/main.cpp b/sketches/_PIO_Sketches/Karger/SoaapBleMaster_Test_2/src/main.cpp
index 138a3b7033e0e1f2c71e089f81f214d850350db3..cc5c3622d1c730e194ae97c530e1f11bfdb2d4a1 100644
--- a/sketches/_PIO_Sketches/Karger/SoaapBleMaster_Test_2/src/main.cpp
+++ b/sketches/_PIO_Sketches/Karger/SoaapBleMaster_Test_2/src/main.cpp
@@ -259,7 +259,9 @@ void loop()
 //
 byte  apTmpByteArray[256];              // Zwischenspeicher für Zeichenfolgen
 int   apNrOfMeasBytes;                  // Anzahl der empfangenen Messwertbytes
+int   apNrOfCtrlBytes;                  // Anzahl der empfangenen Steuerbytes inkl count und path
 byte  apMeasByteArray[32];              // Zwischenspeicher für Messwerte
+byte  apCtrlByteArray[32];              // Zwischenspeicher für Steuerbytes
 byte  apSlaveList[NrOfSlavesToPoll];    // Merker für gepollte Slaves
 int   apNrOfSlaves;                     // Aktuelle Anzahl von Slaves
 int   curListIdx;                       // Aktueller Index für Slaveliste
@@ -352,6 +354,7 @@ void apProcMeas()
   area = blePoll.getArea(slNr);
   pAppId = blePoll.getAppId(slNr);
   apNrOfMeasBytes = blePoll.getMeas(slNr, apMeasByteArray);
+  apNrOfCtrlBytes = blePoll.getCtrlM(slNr, apCtrlByteArray);
 
 #ifdef TEST001
   ap.enter(apWaitMeas);
@@ -529,6 +532,17 @@ void smCtrlPolling()
     sm.resetEnter();
   }
 
+    // --------------------------------------------------------------------------
+  else if(mon.lastKeyIn == 'K' || mon.lastKeyIn == 'k')
+  {
+    mon.print(slNr); mon.print((char *)"|");
+    for(int i= 0; i< apNrOfCtrlBytes; i++){
+      mon.print(apCtrlByteArray[i]);
+      mon.print((char *)" ");
+    }
+    mon.print((char *) "\n");
+    sm.resetEnter();
+  }
   // --------------------------------------------------------------------------
   else if(mon.lastKeyIn == 'L' || mon.lastKeyIn == 'l')
   {
diff --git a/sketches/_PIO_Sketches/Karger/SoaapBleSlave_Test_2/src/main.cpp b/sketches/_PIO_Sketches/Karger/SoaapBleSlave_Test_2/src/main.cpp
index a08a695470c1e17a573a33cbbaea07ca59419c6c..dc884bde144955acdd20fe68907119e60539e262 100644
--- a/sketches/_PIO_Sketches/Karger/SoaapBleSlave_Test_2/src/main.cpp
+++ b/sketches/_PIO_Sketches/Karger/SoaapBleSlave_Test_2/src/main.cpp
@@ -16,6 +16,7 @@
 #include "SoaapBleSlave.h"
 
 #define SlaveADR1
+#define DebugTerminal
 
 #ifdef SlaveADR1
 #define SlaveADR 1
@@ -306,11 +307,12 @@ bool xchgCtrl(PlpType plpType, byte *dest, byte *src, int sSize)
     case plptMeas9Ctrl4:
       for(si = 0; si < sSize; si++)
         procData[si] = src[si];
-      procSize = sSize;
-      dest[di++] = procPath;
-      dest[di++] = procCnt;
-      dest[di++] = (byte) (gpio.readArd(ArdA0A3) & 0x0F);
-      dest[di++] = 0;
+        procSize = sSize;
+        dest[di++] = procPath;
+        dest[di++] = procCnt;
+        dest[di++] = (byte) (gpio.readArd(ArdA0A3) & 0x0F);
+        dest[di++] = 0xAB;
+      
       retv = true;
       break;
   }