diff --git a/src/cfclient/configs/config.json b/src/cfclient/configs/config.json
index bb92591efe544bc86c28072ab1592b17e5516745..82bb36e5109cb5aae7e08f2d55b3f86bef1e296b 100644
--- a/src/cfclient/configs/config.json
+++ b/src/cfclient/configs/config.json
@@ -14,6 +14,7 @@
     "max_rp": 30,
     "client_side_xmode": false,
     "auto_reconnect": false,
+    "keep_alive": false,
     "device_config_mapping": {},
     "enable_debug_driver": false,
     "input_device_blacklist": "(VirtualBox|VMware)",
diff --git a/src/cfclient/ui/main.py b/src/cfclient/ui/main.py
index 64f5929a1d72f790e5b395c1463ba119d9028f76..e8ad3370024641a08553f59760e7f69dcc0e322b 100644
--- a/src/cfclient/ui/main.py
+++ b/src/cfclient/ui/main.py
@@ -244,6 +244,11 @@ class MainUI(QtWidgets.QMainWindow, main_window_class):
             self._auto_reconnect_changed)
         self.autoReconnectCheckBox.setChecked(Config().get("auto_reconnect"))
 
+        self._keep_alive_enabled = Config().get("keep_alive")
+        self.keepAliveCheckBox.toggled.connect(
+            self._keep_alive_changed)
+        self.keepAliveCheckBox.setChecked(Config().get("keep_alive"))
+
         self._disable_input = False
 
         self.joystickReader.input_updated.add_callback(
@@ -551,6 +556,19 @@ class MainUI(QtWidgets.QMainWindow, main_window_class):
         Config().set("auto_reconnect", checked)
         logger.info("Auto reconnect enabled: {}".format(checked))
 
+    def _keep_alive_changed(self, checked):
+        self._keep_alive_enabled = checked
+        Config().set("keep_alive", checked)
+        logger.info("Keep alive enabled: {}".format(checked))
+
+        if checked:
+            cflib.crtp.radiodriver.set_retries_before_disconnect(99999999999999999)  # never disconnect :)
+            cflib.crtp.radiodriver.set_retries(3)
+        else:
+            cflib.crtp.radiodriver.set_retries_before_disconnect(1500) # default
+            cflib.crtp.radiodriver.set_retries(3)
+        
+
     def _show_connect_dialog(self):
         self.logConfigDialogue.show()
 
diff --git a/src/cfclient/ui/main.ui b/src/cfclient/ui/main.ui
index e2f4e36939ecbf2a82ca384a0c8f8d3b70b2af26..f754129a8a503216319c9b9387a4953b4ed9548a 100644
--- a/src/cfclient/ui/main.ui
+++ b/src/cfclient/ui/main.ui
@@ -189,7 +189,7 @@
       </item>
       <item>
        <widget class="QGroupBox" name="groupBox">
-        <layout class="QHBoxLayout" stretch="0,0,1">
+        <layout class="QHBoxLayout" stretch="0,0,0,1">
          <item>
           <widget class="QLabel" name="addressLabel">
            <property name="text">
@@ -220,6 +220,19 @@
            </property>
           </widget>
          </item>
+         <item>
+          <widget class="QCheckBox" name="keepAliveCheckBox">
+           <property name="mouseTracking">
+            <bool>false</bool>
+           </property>
+           <property name="text">
+            <string>Keep Alive</string>
+           </property>
+           <property name="checked">
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
         </layout>
        </widget>
       </item>
diff --git a/src/cfclient/ui/tabs/FlightTab.py b/src/cfclient/ui/tabs/FlightTab.py
index 4034fb811d97d4fcdf15a539989b1d373e874770..22157f2091585c921218a292f94ddcc55f1d078c 100644
--- a/src/cfclient/ui/tabs/FlightTab.py
+++ b/src/cfclient/ui/tabs/FlightTab.py
@@ -579,7 +579,8 @@ class FlightTab(Tab, flight_tab_class):
                            12: "Gravity",
                            13: "LED tab",
                            14: "Color fader",
-                           15: "Link quality"}
+                           15: "Link quality",
+                           16: "Lighthouse quality"}
 
         for i in range(nbr + 1):
             name = "{}: ".format(i)
@@ -593,7 +594,7 @@ class FlightTab(Tab, flight_tab_class):
             self._ring_effect_changed)
 
         self._led_ring_effect.setCurrentIndex(current)
-        if self.helper.cf.mem.ow_search(vid=0xBC, pid=0x01):
+        if bool(self.helper.cf.param.values["deck"]["bcLedRing"]):
             self._led_ring_effect.setEnabled(True)
             self._led_ring_headlight.setEnabled(True)
 
@@ -617,20 +618,20 @@ class FlightTab(Tab, flight_tab_class):
         heightHoldPossible = False
         hoverPossible = False
 
-        if self.helper.cf.mem.ow_search(vid=0xBC, pid=0x09):
+        if bool(self.helper.cf.param.values["deck"]["bcZRanger"]):
             heightHoldPossible = True
             self.helper.inputDeviceReader.set_hover_max_height(1.0)
 
-        if self.helper.cf.mem.ow_search(vid=0xBC, pid=0x0E):
+        if bool(self.helper.cf.param.values["deck"]["bcZRanger2"]):
             heightHoldPossible = True
             self.helper.inputDeviceReader.set_hover_max_height(2.0)
 
-        if self.helper.cf.mem.ow_search(vid=0xBC, pid=0x0A):
+        if bool(self.helper.cf.param.values["deck"]["bcFlow"]):
             heightHoldPossible = True
             hoverPossible = True
             self.helper.inputDeviceReader.set_hover_max_height(1.0)
 
-        if self.helper.cf.mem.ow_search(vid=0xBC, pid=0x0F):
+        if bool(self.helper.cf.param.values["deck"]["bcFlow2"]):
             heightHoldPossible = True
             hoverPossible = True
             self.helper.inputDeviceReader.set_hover_max_height(2.0)