                     digitalWrite(receiverB_led, HIGH);
                     break;
             }
-
-            while(--in_menu_time_out && (digitalRead(buttonMode) == HIGH)) // wait for next mode or time out
-            {
-                delay(200); // timeout delay
-            }
-            if(in_menu_time_out <= 0) {
+            do
+            {
+                delay(10); // timeout delay
+                // show signal strength
+                wait_rssi_ready();
+                rssi = readRSSI(useReceiverA);
+                #define RSSI_BAR_SIZE 100
+                rssi_scaled=map(rssi, 1, 100, 1, RSSI_BAR_SIZE);
+                // clear last bar
+                TV.draw_rect(25+rssi_scaled, 6+4*MENU_Y_SIZE, RSSI_BAR_SIZE-rssi_scaled, 8 , BLACK, BLACK);
+                //  draw new bar
+                TV.draw_rect(25, 6+4*MENU_Y_SIZE, rssi_scaled, 8 , WHITE, WHITE);
+
+                rssi = readRSSI(useReceiverB);
+                rssi_scaled=map(rssi, 1, 100, 1, RSSI_BAR_SIZE);
+                // clear last bar
+                TV.draw_rect(25+rssi_scaled, 6+5*MENU_Y_SIZE, RSSI_BAR_SIZE-rssi_scaled, 8 , BLACK, BLACK);
+                //  draw new bar
+                TV.draw_rect(25, 6+5*MENU_Y_SIZE, rssi_scaled, 8 , WHITE, WHITE);
+            }
+            while((digitalRead(buttonMode) == HIGH) && (digitalRead(buttonSeek) == HIGH) && (digitalRead(buttonDown) == HIGH)); // wait for next mode or time out
+
+            if(digitalRead(buttonMode) == LOW)        // channel UP
+            {
                 diversity_mode = menu_id;
                 in_menu = 0; // exit menu
             }
+            else if(digitalRead(buttonSeek) == LOW) {
+                menu_id++;
+            }
+            else if(digitalRead(buttonDown) == LOW) {
+                menu_id--;
+            }
+
+            if(menu_id > useReceiverB) {
+                menu_id = 0;
+            }
+            if(menu_id < 0) {
+                menu_id = useReceiverB;
+            }
+            beep(50); // beep & debounce
+            delay(KEY_DEBOUNCE); // debounce
         }
         while(in_menu);
 

#endif
    }
#ifdef USE_DIVERSITY
    switch(diversity_mode)
    {
        case useReceiverAuto:
            // select receiver
            if(rssiA/10 > rssiB/10)
            {
                rssi=rssiA;
                digitalWrite(receiverA_led, HIGH);
                digitalWrite(receiverB_led, LOW);
            }
            else
            {
                rssi=rssiB;
                digitalWrite(receiverB_led, HIGH);
                digitalWrite(receiverA_led, LOW);
            }
            break;
        case useReceiverA:
            rssi=rssiA;
            digitalWrite(receiverA_led, HIGH);
            digitalWrite(receiverB_led, LOW);
            break;
        case useReceiverB:
            rssi=rssiB;
            digitalWrite(receiverB_led, HIGH);
            digitalWrite(receiverA_led, LOW);
            break;
    }
#else
    rssi=rssiA;

#ifdef USE_DIVERSITY
    if(state == STATE_DIVERSITY) {
        // simple menu
        char menu_id=diversity_mode;
        uint8_t in_menu=1;
        do{
            TV.clear_screen();
            TV.select_font(font8x8);
            TV.draw_rect(0,0,127,95,  WHITE);
