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 e897ef8fb36da16a096f1e38f41a47c6e76ba823..778c78149b94b4f67d5b2c7a441ed1f74beebe11 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
@@ -128,30 +128,7 @@ public class MedtronicCnlIntentService extends IntentService {
                 pollInterval = configurationStore.getLowBatteryPollInterval();
             }
 
-            if (!hasUsbHostFeature()) {
-                sendStatus("It appears that this device doesn't support USB OTG.");
-                Log.e(TAG, "Device does not support USB OTG");
-                // TODO - throw, don't return
-                return;
-            }
-
-            UsbDevice cnlStick = UsbHidDriver.getUsbDevice(mUsbManager, USB_VID, USB_PID);
-            if (cnlStick == null) {
-                sendStatus("USB connection error. Is the Contour Next Link plugged in?");
-                Log.w(TAG, "USB connection error. Is the CNL plugged in?");
-
-                // TODO - set status if offline or Nightscout not reachable
-                uploadToNightscout();
-                // TODO - throw, don't return
-                return;
-            }
-
-            if (!mUsbManager.hasPermission(UsbHidDriver.getUsbDevice(mUsbManager, USB_VID, USB_PID))) {
-                sendMessage(Constants.ACTION_NO_USB_PERMISSION);
-                // TODO - throw, don't return
-                return;
-            }
-            mHidDevice = UsbHidDriver.acquire(mUsbManager, cnlStick);
+            if (!acquireUsbDevice()) return;
 
             try {
                 mHidDevice.open();
@@ -366,6 +343,34 @@ public class MedtronicCnlIntentService extends IntentService {
         }
     }
 
+    private boolean acquireUsbDevice() {
+        if (!hasUsbHostFeature()) {
+            sendStatus("It appears that this device doesn't support USB OTG.");
+            Log.e(TAG, "Device does not support USB OTG");
+            // TODO - throw, don't return
+            return false;
+        }
+
+        UsbDevice cnlStick = UsbHidDriver.getUsbDevice(mUsbManager, USB_VID, USB_PID);
+        if (cnlStick == null) {
+            sendStatus("USB connection error. Is the Contour Next Link plugged in?");
+            Log.w(TAG, "USB connection error. Is the CNL plugged in?");
+
+            // TODO - set status if offline or Nightscout not reachable
+            uploadToNightscout();
+            // TODO - throw, don't return
+            return false;
+        }
+
+        if (!mUsbManager.hasPermission(UsbHidDriver.getUsbDevice(mUsbManager, USB_VID, USB_PID))) {
+            sendMessage(Constants.ACTION_NO_USB_PERMISSION);
+            // TODO - throw, don't return
+            return false;
+        }
+        mHidDevice = UsbHidDriver.acquire(mUsbManager, cnlStick);
+        return true;
+    }
+
     // reliable wake alarm manager wake up for all android versions
     public static void wakeUpIntent(Context context, long wakeTime, PendingIntent pendingIntent) {
         final AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);