diff --git a/app/src/main/java/info/nightscout/android/medtronic/MainActivity.java b/app/src/main/java/info/nightscout/android/medtronic/MainActivity.java
index 00775792b97686d923d9c0c6200bcef93307a96b..4b71e4b65b315e8f4d8480858ce1c546615a1c30 100644
--- a/app/src/main/java/info/nightscout/android/medtronic/MainActivity.java
+++ b/app/src/main/java/info/nightscout/android/medtronic/MainActivity.java
@@ -104,6 +104,14 @@ public class MainActivity extends AppCompatActivity implements OnSharedPreferenc
     public static short pumpBattery = 0;
     public static int countUnavailableSGV = 0;
 
+    // temporary debug stats for CNL connections
+    public static int dbgCNL_enterControlMode = 0;
+    public static int dbgCNL_enterPassthroughMode = 0;
+    public static int dbgCNL_openConnection = 0;
+    public static int dbgCNL_beginEHSMSession = 0;
+    public static int dbgCNL_clearMessage = 0;
+    public static int dbgCNL_not0x81 = 0;
+
     boolean mEnableCgmService = true;
     SharedPreferences prefs = null;
     private PumpInfo mActivePump;
diff --git a/app/src/main/java/info/nightscout/android/medtronic/message/ContourNextLinkMessage.java b/app/src/main/java/info/nightscout/android/medtronic/message/ContourNextLinkMessage.java
index 86305a33b9cb21f99c88d105b78b2b35a90c7b0a..095c68ca1ab0b24145a7781da6edb1ac09c46bca 100644
--- a/app/src/main/java/info/nightscout/android/medtronic/message/ContourNextLinkMessage.java
+++ b/app/src/main/java/info/nightscout/android/medtronic/message/ContourNextLinkMessage.java
@@ -8,9 +8,7 @@ import java.nio.ByteBuffer;
 import java.util.concurrent.TimeoutException;
 
 import info.nightscout.android.USB.UsbHidDriver;
-import info.nightscout.android.medtronic.exception.ChecksumException;
-import info.nightscout.android.medtronic.exception.EncryptionException;
-import info.nightscout.android.medtronic.exception.UnexpectedMessageException;
+import info.nightscout.android.medtronic.MainActivity;
 import info.nightscout.android.utils.HexDump;
 
 /**
@@ -154,6 +152,7 @@ public abstract class ContourNextLinkMessage {
             if (responseBytes[18] != (byte) 0x81) {
                 doRetry = true;
                 Log.d(TAG, "readMessage0x81: did not get 0x81 response, got " + responseBytes[18]);
+                MainActivity.dbgCNL_not0x81++;
             } else {
                 doRetry = false;
                 responseSize = responseBytes.length;
@@ -186,6 +185,7 @@ public abstract class ContourNextLinkMessage {
 
         if (bytesClear > 0) {
             Log.d(TAG, "clearMessage: message stream cleared bytes: " + bytesClear);
+            MainActivity.dbgCNL_clearMessage++;
         }
 
         return bytesClear;
diff --git a/app/src/main/java/info/nightscout/android/medtronic/service/MedtronicCnlIntentService.java b/app/src/main/java/info/nightscout/android/medtronic/service/MedtronicCnlIntentService.java
index 85d2dbe26daa3f6f3dba5c8a06ae8497fde9d8ce..ed91b04b46066836a27b35d072ab78afadf45513 100644
--- a/app/src/main/java/info/nightscout/android/medtronic/service/MedtronicCnlIntentService.java
+++ b/app/src/main/java/info/nightscout/android/medtronic/service/MedtronicCnlIntentService.java
@@ -189,10 +189,14 @@ public class MedtronicCnlIntentService extends IntentService {
             cnlReader.getPumpSession().setStickSerial(info.getSerialNumber());
 
             cnlReader.enterControlMode();
+            MainActivity.dbgCNL_enterControlMode += 1;
 
             try {
                 cnlReader.enterPassthroughMode();
+                MainActivity.dbgCNL_enterPassthroughMode += 1;
                 cnlReader.openConnection();
+                MainActivity.dbgCNL_openConnection += 1;
+
                 cnlReader.requestReadInfo();
 
                 String key = info.getKey();
@@ -245,6 +249,7 @@ public class MedtronicCnlIntentService extends IntentService {
 
                     MainActivity.timeLastEHSM = timePollStarted;
                     cnlReader.beginEHSMSession();
+                    MainActivity.dbgCNL_beginEHSMSession += 1;
 
                     // read pump status
                     PumpStatusEvent pumpRecord = realm.createObject(PumpStatusEvent.class);
@@ -265,6 +270,7 @@ public class MedtronicCnlIntentService extends IntentService {
                     cnlReader.updatePumpStatus(pumpRecord);
 
                     cnlReader.endEHSMSession();
+                    MainActivity.dbgCNL_beginEHSMSession -= 1;
 
                     if (pumpRecord.getSgv() != 0) {
 
@@ -322,8 +328,11 @@ public class MedtronicCnlIntentService extends IntentService {
             } finally {
                 try {
                     cnlReader.closeConnection();
+                    MainActivity.dbgCNL_openConnection -= 1;
                     cnlReader.endPassthroughMode();
+                    MainActivity.dbgCNL_enterPassthroughMode -= 1;
                     cnlReader.endControlMode();
+                    MainActivity.dbgCNL_enterControlMode -= 1;
                 } catch (NoSuchAlgorithmException e) {}
 
             }
@@ -379,6 +388,11 @@ public class MedtronicCnlIntentService extends IntentService {
             MedtronicCnlAlarmManager.setAlarm(nextRequestedPollTime);
             sendStatus("Next poll due at: " + df.format(nextRequestedPollTime));
 
+            // temporary debug stats for CNL connections
+            if ((MainActivity.dbgCNL_enterControlMode + MainActivity.dbgCNL_enterPassthroughMode + MainActivity.dbgCNL_openConnection + MainActivity.dbgCNL_beginEHSMSession + MainActivity.dbgCNL_clearMessage + MainActivity.dbgCNL_not0x81) > 0) {
+                sendStatus("CM: " + MainActivity.dbgCNL_enterControlMode + " PT: " + MainActivity.dbgCNL_enterPassthroughMode + " OC: " + MainActivity.dbgCNL_openConnection + " EH: " + MainActivity.dbgCNL_beginEHSMSession + " U: " + MainActivity.dbgCNL_clearMessage + " X: " + MainActivity.dbgCNL_not0x81);
+            }
+
             MedtronicCnlAlarmReceiver.completeWakefulIntent(intent);
         }
     }