diff --git a/Examples/Linux/custom_test/Sources/Control/control.c b/Examples/Linux/custom_test/Sources/Control/control.c
index 382ab6e0d768f877e0e52275e3776bb352ae5690..892dfe5c9390b3380a2a18effc86a2531057b23d 100644
--- a/Examples/Linux/custom_test/Sources/Control/control.c
+++ b/Examples/Linux/custom_test/Sources/Control/control.c
@@ -15,7 +15,7 @@ input_device_t control_device = {
   close_control_device
 };
 
-controller_info_t controller_state;
+controller_info_t controller_state, _z = {};
 
 // TODO: remove this in final; not required
 // Get keyboard input; return -1 if no input
@@ -37,10 +37,7 @@ int kbhit(void) {
 }
 
 C_RESULT open_control_device(void) {
-  control_state = {
-    0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0
-  };
+  controller_state = _z;
   return C_OK;
 }
 
@@ -49,15 +46,17 @@ C_RESULT update_control_device(void) {
 
   if (key == '1') {
     controller_state.start = !controller_state.start;
-    ardrone_academy_navdata_takeoff();
+    ardrone_tool_set_ui_pad_start(controller_state.start);
+    //ardrone_academy_navdata_takeoff();
   }
   else if (key == '2') {
     controller_state.emergency = !controller_state.emergency;
-    ardrone_academy_navdata_emergency();
+    ardrone_tool_set_ui_pad_select(controller_state.emergency);
+    //ardrone_academy_navdata_emergency();
   }
   else {
-    #define _INC(_c, _v) case _c : controller_state. _v += 0.01f; if ( controller_state. _v >  1.0f) controller_state. _v =  1.0f; break
-    #define _DEC(_c, _v) case _c : controller_state. _v -= 0.01f; if ( controller_state. _v < -1.0f) controller_state. _v = -1.0f; break
+    #define _INC(_c, _v) case _c : controller_state. _v += 0.5f; if ( controller_state. _v >  1000000.0f) controller_state. _v =  1.0f; break
+    #define _DEC(_c, _v) case _c : controller_state. _v -= 0.5f; if ( controller_state. _v < -1000000.0f) controller_state. _v = -1.0f; break
     switch (key) {
       _INC('q', phi);
       _INC('w', theta);
@@ -80,7 +79,6 @@ C_RESULT update_control_device(void) {
     }
     #undef _INC
     #undef _DEC
-    if (key != -1) {
       int32_t flags = (controller_state.hover_mode ? 1 : 0) | (controller_state.yaw_mode ? 2 : 0) | (controller_state.absolute_mode ? 4 : 0);
       ardrone_tool_set_progressive_cmd(
         flags, 
@@ -91,7 +89,6 @@ C_RESULT update_control_device(void) {
         controller_state.magneto_psi, 
         controller_state.magneto_psi_accuracy
       );
-    }
   }
   
   return C_OK;
diff --git a/Examples/Linux/custom_test/Sources/Navdata/navdata.c b/Examples/Linux/custom_test/Sources/Navdata/navdata.c
index 83d8e71fd9c2713af9989ca0666e7b69737ec2aa..a890c43bd63dc9bfc0e0e59224237e1f90fff88e 100644
--- a/Examples/Linux/custom_test/Sources/Navdata/navdata.c
+++ b/Examples/Linux/custom_test/Sources/Navdata/navdata.c
@@ -3,40 +3,11 @@
 #include <Navdata/navdata.h>
 #include <Control/control.h>
 #include <stdio.h>
+#include <stdlib.h>
 
 #define CTRL_STATES_STRING
 #include "control_states.h"
 
-const char* ctrl_state_str(uint32_t ctrl_state)
-{
-  #define MAX_STR_CTRL_STATE 256
-  static char str_ctrl_state[MAX_STR_CTRL_STATE];
-
-  ctrl_string_t* ctrl_string;
-  uint32_t major = ctrl_state >> 16;
-  uint32_t minor = ctrl_state & 0xFFFF;
-
-  if( strlen(ctrl_states[major]) < MAX_STR_CTRL_STATE )
-  {
-    vp_os_memset(str_ctrl_state, 0, sizeof(str_ctrl_state));
-
-    strcat_s(str_ctrl_state, sizeof(str_ctrl_state),ctrl_states[major]);
-    ctrl_string = control_states_link[major];
-
-    if( ctrl_string != NULL && (strlen(ctrl_states[major]) + strlen(ctrl_string[minor]) < MAX_STR_CTRL_STATE) )
-    {
-      strcat_s( str_ctrl_state,sizeof(str_ctrl_state), " | " );
-      strcat_s( str_ctrl_state, sizeof(str_ctrl_state),ctrl_string[minor] );
-    }
-  }
-  else
-  {
-    vp_os_memset( str_ctrl_state, '#', sizeof(str_ctrl_state) );
-  }
-
-  return str_ctrl_state;
-}
-
 /* Initialization local variables before event loop  */
 inline C_RESULT demo_navdata_client_init( void* data )
 {
@@ -49,7 +20,7 @@ inline C_RESULT demo_navdata_client_process( const navdata_unpacked_t* const nav
 	const navdata_demo_t*nd = &navdata->navdata_demo;
 
 	printf("===================== Navdata for flight demonstrations =====================\n");
-	printf("Control state : %i                  / Battery level : %i mV\n", ctrl_state_str(nd->ctrl_state), nd->vbat_flying_percentage);
+	printf("Control state : %i                  / Battery level : %i mV\n", nd->ctrl_state, nd->vbat_flying_percentage);
 	printf("Altitude      : %i\n",nd->altitude);
 	printf("Orientation   : [Theta] %4.3f  [Phi] %4.3f  [Psi] %4.3f\n", nd->theta, nd->phi, nd->psi);
 	printf("Speed         : [vX] %4.3f  [vY] %4.3f  [vZ] %4.3f\n",nd->vx,nd->vy,nd->vz);
@@ -58,7 +29,6 @@ inline C_RESULT demo_navdata_client_process( const navdata_unpacked_t* const nav
 	printf("[Gaz] %4.3f\n", controller_state.gaz);
 	printf("[Theta] %4.3f  [Phi] %4.3f  [Yaw] %4.3f  [magnet-Psi] %4.3f\n", controller_state.theta, controller_state.phi, controller_state.yaw, controller_state.magneto_psi);
 	printf("Mode : [hover] %i  [yaw] %i  [absolute] %i  [psi-accuracy] %4.3f\n", controller_state.hover_mode, controller_state.yaw_mode, controller_state.absolute_mode, controller_state.magneto_psi_accuracy);
-	printf("\033[10A");
 
   return C_OK;
 }
diff --git a/Examples/Linux/custom_test/Sources/main.c b/Examples/Linux/custom_test/Sources/main.c
index 15ac6a4e9023f8cb1534e9b4de19f08436e76d22..02738ccea9a4de8187150fc8afd2fcf66f553a95 100644
--- a/Examples/Linux/custom_test/Sources/main.c
+++ b/Examples/Linux/custom_test/Sources/main.c
@@ -4,6 +4,8 @@
  * @date 2009/07/01
  */
 #include <stdio.h>
+#include <stdlib.h>
+#include <signal.h>
 #include <VP_Os/vp_os_types.h>
 
 //ARDroneLib