diff --git a/Marlin/src/HAL/HC32/pinsDebug.h b/Marlin/src/HAL/HC32/pinsDebug.h
index 70789701ba..c00ddf3ba2 100644
--- a/Marlin/src/HAL/HC32/pinsDebug.h
+++ b/Marlin/src/HAL/HC32/pinsDebug.h
@@ -71,7 +71,7 @@
   #define M43_NEVER_TOUCH(Q) (IS_HOST_USART_PIN(Q) || IS_OSC_PIN(Q))
 #endif
 
-static pin_t digitalPinToAnalogIndex(pin_t pin) {
+static int8_t digitalPinToAnalogIndex(pin_t pin) {
   if (!isValidPin(pin)) return -1;
   const int8_t adc_channel = int8_t(PIN_MAP[pin].adc_info.channel);
   return pin_t(adc_channel);
diff --git a/Marlin/src/HAL/STM32/pinsDebug.h b/Marlin/src/HAL/STM32/pinsDebug.h
index 6813a856ca..cce705410c 100644
--- a/Marlin/src/HAL/STM32/pinsDebug.h
+++ b/Marlin/src/HAL/STM32/pinsDebug.h
@@ -173,7 +173,7 @@ int8_t digital_pin_to_analog_pin(const pin_t Ard_num) {
   if (WITHIN(Ard_num, NUM_ANALOG_FIRST, NUM_ANALOG_LAST))
     return Ard_num - NUM_ANALOG_FIRST;
 
-  const uint32_t ind = digitalPinToAnalogIndex(Ard_num);
+  const int8_t ind = digitalPinToAnalogIndex(Ard_num);
   return (ind < NUM_ANALOG_INPUTS) ? ind : -1;
 }
 
diff --git a/Marlin/src/HAL/STM32F1/pinsDebug.h b/Marlin/src/HAL/STM32F1/pinsDebug.h
index 448d974dec..ab8bc8816e 100644
--- a/Marlin/src/HAL/STM32F1/pinsDebug.h
+++ b/Marlin/src/HAL/STM32F1/pinsDebug.h
@@ -54,7 +54,7 @@ extern const stm32_pin_info PIN_MAP[BOARD_NR_GPIO_PINS];
 
 int8_t get_pin_mode(const pin_t pin) { return isValidPin(pin) ? _GET_MODE(pin) : -1; }
 
-pin_t digitalPinToAnalogIndex(const pin_t pin) {
+int8_t digitalPinToAnalogIndex(const pin_t pin) {
   if (!isValidPin(pin)) return -1;
   pin_t adc_channel = pin_t(PIN_MAP[pin].adc_channel);
   #ifdef NUM_ANALOG_INPUTS
diff --git a/Marlin/src/lcd/menu/menu_motion.cpp b/Marlin/src/lcd/menu/menu_motion.cpp
index c09ab04c5e..0460949d56 100644
--- a/Marlin/src/lcd/menu/menu_motion.cpp
+++ b/Marlin/src/lcd/menu/menu_motion.cpp
@@ -331,36 +331,6 @@ void menu_move() {
     ui.go_back();
   }
 
-  TString ftmode(5), dmode(10);
-
-  void ftm_menu_get_msg_strings() {
-    ft_config_t &c = ftMotion.cfg;
-
-    switch (c.mode) {
-      default:
-      case ftMotionMode_DISABLED: ftmode = GET_TEXT_F(MSG_LCD_OFF);  break;
-      case ftMotionMode_ENABLED:  ftmode = GET_TEXT_F(MSG_LCD_ON);   break;
-      case ftMotionMode_ZV:       ftmode = GET_TEXT_F(MSG_FTM_ZV);   break;
-      case ftMotionMode_ZVD:      ftmode = GET_TEXT_F(MSG_FTM_ZVD);  break;
-      case ftMotionMode_ZVDD:     ftmode = GET_TEXT_F(MSG_FTM_ZVDD); break;
-      case ftMotionMode_ZVDDD:    ftmode = GET_TEXT_F(MSG_FTM_ZVDDD);break;
-      case ftMotionMode_EI:       ftmode = GET_TEXT_F(MSG_FTM_EI);   break;
-      case ftMotionMode_2HEI:     ftmode = GET_TEXT_F(MSG_FTM_2HEI); break;
-      case ftMotionMode_3HEI:     ftmode = GET_TEXT_F(MSG_FTM_3HEI); break;
-      case ftMotionMode_MZV:      ftmode = GET_TEXT_F(MSG_FTM_MZV);  break;
-    }
-
-    #if HAS_DYNAMIC_FREQ
-      switch (c.dynFreqMode) {
-        default:
-        case dynFreqMode_DISABLED:   dmode = GET_TEXT_F(MSG_LCD_OFF);        break;
-        case dynFreqMode_Z_BASED:    dmode = GET_TEXT_F(MSG_FTM_Z_BASED);    break;
-        case dynFreqMode_MASS_BASED: dmode = GET_TEXT_F(MSG_FTM_MASS_BASED); break;
-    }
-    #endif
-
-  }
-
   inline void menu_ftm_cmpn_x() {
     const ftMotionShaper_t shaper = ftMotion.cfg.shaper[X_AXIS];
     START_MENU();
@@ -421,7 +391,33 @@ void menu_move() {
   void menu_ft_motion() {
     ft_config_t &c = ftMotion.cfg;
 
-    ftm_menu_get_msg_strings();
+    FSTR_P ftshaper[1 + ENABLED(HAS_Y_AXIS)] {};
+
+    #if HAS_X_AXIS
+      for (uint_fast8_t a = X_AXIS; a <= TERN(HAS_Y_AXIS, Y_AXIS, X_AXIS); ++a) {
+        switch (c.shaper[a]) {
+          case ftMotionShaper_NONE:  ftshaper[a] = GET_TEXT_F(MSG_LCD_OFF);  break;
+          case ftMotionShaper_ZV:    ftshaper[a] = GET_TEXT_F(MSG_FTM_ZV);   break;
+          case ftMotionShaper_ZVD:   ftshaper[a] = GET_TEXT_F(MSG_FTM_ZVD);  break;
+          case ftMotionShaper_ZVDD:  ftshaper[a] = GET_TEXT_F(MSG_FTM_ZVDD); break;
+          case ftMotionShaper_ZVDDD: ftshaper[a] = GET_TEXT_F(MSG_FTM_ZVDDD);break;
+          case ftMotionShaper_EI:    ftshaper[a] = GET_TEXT_F(MSG_FTM_EI);   break;
+          case ftMotionShaper_2HEI:  ftshaper[a] = GET_TEXT_F(MSG_FTM_2HEI); break;
+          case ftMotionShaper_3HEI:  ftshaper[a] = GET_TEXT_F(MSG_FTM_3HEI); break;
+          case ftMotionShaper_MZV:   ftshaper[a] = GET_TEXT_F(MSG_FTM_MZV);  break;
+        }
+      }
+    #endif
+
+    #if HAS_DYNAMIC_FREQ
+      FSTR_P dmode;
+      switch (c.dynFreqMode) {
+        default:
+        case dynFreqMode_DISABLED:   dmode = GET_TEXT_F(MSG_LCD_OFF);        break;
+        case dynFreqMode_Z_BASED:    dmode = GET_TEXT_F(MSG_FTM_Z_BASED);    break;
+        case dynFreqMode_MASS_BASED: dmode = GET_TEXT_F(MSG_FTM_MASS_BASED); break;
+      }
+    #endif
 
     START_MENU();
     BACK_ITEM(MSG_MOTION);
@@ -458,7 +454,7 @@ void menu_move() {
 
       #if HAS_DYNAMIC_FREQ
         SUBMENU(MSG_FTM_DYN_MODE, menu_ftm_dyn_mode);
-        MENU_ITEM_ADDON_START_RJ(dmode.length()); lcd_put_u8str(dmode); MENU_ITEM_ADDON_END();
+        MENU_ITEM_ADDON_START_RJ(11); lcd_put_u8str(dmode); MENU_ITEM_ADDON_END();
         if (c.dynFreqMode != dynFreqMode_DISABLED) {
           #if HAS_X_AXIS
             EDIT_ITEM_FAST_N(float42_52, X_AXIS, MSG_FTM_DFREQ_K_N, &c.dynFreqK[X_AXIS], 0.0f, 20.0f);
@@ -477,32 +473,14 @@ void menu_move() {
     END_MENU();
   }
 
-  void menu_tune_ft_motion() {
-
-    ftm_menu_get_msg_strings();
-
-    ft_config_t &c = ftMotion.cfg;
-
-    START_MENU();
-    SUBMENU(MSG_FTM_MODE, menu_ftm_mode);
-    MENU_ITEM_ADDON_START_RJ(ftmode.length()); lcd_put_u8str(ftmode); MENU_ITEM_ADDON_END();
-    #if HAS_DYNAMIC_FREQ
-      SUBMENU(MSG_FTM_DYN_MODE, menu_ftm_dyn_mode);
-      MENU_ITEM_ADDON_START_RJ(dmode.length()); lcd_put_u8str(dmode); MENU_ITEM_ADDON_END();
-    #endif
-    #if HAS_EXTRUDERS
-      EDIT_ITEM(bool, MSG_LINEAR_ADVANCE, &c.linearAdvEna);
-      if (c.linearAdvEna) EDIT_ITEM(float62, MSG_ADVANCE_K, &c.linearAdvK, 0.0f, 1000.0f);
-    #endif
-
-    END_MENU();
-
-  }
-
 #endif // FT_MOTION_MENU
 
 void menu_motion() {
 
+  #if ENABLED(FT_MOTION_MENU)
+    const bool is_busy = printer_busy();
+  #endif
+
   START_MENU();
 
   //
@@ -532,7 +510,7 @@ void menu_motion() {
   // M493 - Fixed-Time Motion
   //
   #if ENABLED(FT_MOTION_MENU)
-    SUBMENU(MSG_FIXED_TIME_MOTION, menu_ft_motion);
+    if (!is_busy) SUBMENU(MSG_FIXED_TIME_MOTION, menu_ft_motion);
   #endif
 
   //
diff --git a/Marlin/src/lcd/menu/menu_tune.cpp b/Marlin/src/lcd/menu/menu_tune.cpp
index 22d412bac6..68f61caaec 100644
--- a/Marlin/src/lcd/menu/menu_tune.cpp
+++ b/Marlin/src/lcd/menu/menu_tune.cpp
@@ -231,14 +231,6 @@ void menu_tune() {
     #endif
   #endif
 
-  //
-  // FT_MOTION
-  //
-  #if ENABLED(FT_MOTION_MENU)
-    extern void menu_tune_ft_motion();
-    SUBMENU(MSG_FIXED_TIME_MOTION, menu_tune_ft_motion);
-  #endif
-
   END_MENU();
 }