     }
   }
   return bestChannel;
+}
+
+
+//******************************************************************************
+//* function: graphicScanner
+//*         : scans the 5.8 GHz band in 3 MHz increments and draws a graphical
+//*         : representation. If the button is single pressed the currently
+//*         : scanned frequency is returned. All other click types return the
+//*         : scan start frequency
+//******************************************************************************
+uint16_t graphicScanner( uint16_t frequency ) {
+  uint8_t i;
+  uint16_t scanRssi;
+  uint16_t bestRssi = 0;
+  uint16_t scanFrequency = frequency;
+  uint16_t bestFrequency = frequency;
+  uint8_t clickType;
+  uint8_t value;
+
+  // Draw screen frame etc
+  drawScannerScreen();
+
+  while ((clickType = getClickType(BUTTON_PIN)) == NO_CLICK) {
+    scanFrequency += 3;
+    if (scanFrequency > FREQUENCY_MAX)
+      scanFrequency = FREQUENCY_MIN;
+    setRTC6715Frequency(scanFrequency);
+    delay( RSSI_STABILITY_DELAY_MS );
+    scanRssi = readRssi();
+    value = scanRssi / 10;      // Roughly 18 - 60
+    updateScannerScreen((FREQUENCY_MAX - scanFrequency) / 3, value );
+  }
+
+  if (clickType != SINGLE_CLICK )
+    return frequency;
+
+  // Fine tuning
+  scanFrequency = bestFrequency - 20;
+  bestRssi = 0;
+  for (i = 0; i < 20; i++, scanFrequency += 2) {
+    setRTC6715Frequency(scanFrequency);
+    delay( RSSI_STABILITY_DELAY_MS );
+    scanRssi = readRssi();
+    if (bestRssi < scanRssi) {
+      bestRssi = scanRssi;
+      bestFrequency = scanFrequency;
+    }
+  }
+
+  // Return the best frequency
+  setRTC6715Frequency(bestFrequency);
+  return (bestFrequency);
 }
 
 //******************************************************************************

}

//******************************************************************************
//* function: drawDebugScreen
//******************************************************************************
#ifdef DEBUG

    case NO_CLICK: // do nothing
      break;

    case LONG_LONG_CLICK: // graphical band scanner
      currentChannel = bestChannelMatch(graphicScanner(getFrequency(currentChannel)));
      drawChannelScreen(currentChannel, 0);
      displayUpdateTimer = millis() +  RSSI_STABILITY_DELAY_MS ;
      break;

    case LONG_CLICK:      // auto search
      drawDialog( "SCANNING");
      currentChannel = bestChannelMatch(autoScan(getFrequency(currentChannel)));
      drawChannelScreen(currentChannel, 0);
