diff --git a/app/src/main/java/info/nightscout/android/medtronic/MedtronicCnlReader.java b/app/src/main/java/info/nightscout/android/medtronic/MedtronicCnlReader.java
index e6d92eb7a97a1d15120ece272c79740127a5f3a9..9c2080c5b70aab426520174927c1b0a67b6b9cfe 100644
--- a/app/src/main/java/info/nightscout/android/medtronic/MedtronicCnlReader.java
+++ b/app/src/main/java/info/nightscout/android/medtronic/MedtronicCnlReader.java
@@ -141,6 +141,7 @@ public class MedtronicCnlReader {
 
             if (lastChannel != null) {
                 radioChannels.add(0, lastChannel);
+                radioChannels.add(5, lastChannel);  // retry last used channel again, this allows for transient noise if missed on first attempt when pump is in range
             }
         }
 
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 286c75df52b5027030e1dfb70af280908a329aa9..36e332d980a5912c0e921bb13a8ca8cedd9e9ea4 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
@@ -205,6 +205,11 @@ public class MedtronicCnlIntentService extends IntentService {
                         sendStatus("Could not communicate with the pump. Is it nearby?");
                         Log.i(TAG, "Could not communicate with the pump. Is it nearby?");
                         pollInterval = configurationStore.getPollInterval() / (configurationStore.isReducePollOnPumpAway() ? 2L : 1L); // reduce polling interval to half until pump is available
+                    } else if (cnlReader.getPumpSession().getRadioRSSIpercentage() < 5) {
+                        sendStatus(String.format(Locale.getDefault(), "Connected on channel %d  RSSI: %d%%", (int) radioChannel, cnlReader.getPumpSession().getRadioRSSIpercentage()));
+                        sendStatus("Warning: pump signal too weak. Is it nearby?");
+                        Log.i(TAG, "Warning: pump signal too weak. Is it nearby?");
+                        pollInterval = configurationStore.getPollInterval() / (configurationStore.isReducePollOnPumpAway() ? 2L : 1L); // reduce polling interval to half until pump is available
                     } else {
                         dataStore.setActivePumpMac(pumpMAC);
 
@@ -242,7 +247,7 @@ public class MedtronicCnlIntentService extends IntentService {
                                 dataStore.getLastPumpStatus().getPumpDate() != null &&
                                 pumpRecord.getPumpDate().getTime() - dataStore.getLastPumpStatus().getPumpDate().getTime() < 5000L &&
                                 timePollExpected - timePollStarted < 5000L) {
-                            sendStatus("Pump sent old SGV event, re-polling...");
+                            sendStatus("Pump sent old SGV event");
                         }
 
                         dataStore.clearUnavailableSGVCount(); // reset unavailable sgv count
@@ -273,11 +278,11 @@ public class MedtronicCnlIntentService extends IntentService {
                 } catch (UnexpectedMessageException e) {
                     Log.e(TAG, "Unexpected Message", e);
                     sendStatus("Communication Error: " + e.getMessage());
-                    pollInterval = configurationStore.getPollInterval() / (configurationStore.isReducePollOnPumpAway() ? 2L : 1L);
+                    pollInterval = 60000L; // retry once during this poll period, this allows for transient radio noise
                 } catch (TimeoutException e) {
                     Log.e(TAG, "Timeout communicating with the Contour Next Link.", e);
                     sendStatus("Timeout communicating with the Contour Next Link.");
-                    pollInterval = configurationStore.getPollInterval() / (configurationStore.isReducePollOnPumpAway() ? 2L : 1L);
+                    pollInterval = 60000L; // retry once during this poll period, this allows for transient radio noise
                 } catch (NoSuchAlgorithmException e) {
                     Log.e(TAG, "Could not determine CNL HMAC", e);
                     sendStatus("Error connecting to Contour Next Link: Hashing error.");