diff --git a/Marlin/Conditionals_LCD.h b/Marlin/Conditionals_LCD.h
index 3c775a1155209f060fcc9c0bc38a3e9b060fd9e4..5ea664bb851079c9ddffb65a39bb76883dd34e00 100644
--- a/Marlin/Conditionals_LCD.h
+++ b/Marlin/Conditionals_LCD.h
@@ -373,6 +373,13 @@
    */
   #define HAS_Z_SERVO_ENDSTOP (defined(Z_ENDSTOP_SERVO_NR) && Z_ENDSTOP_SERVO_NR >= 0)
 
+  /**
+   * UBL has its own manual probing, so this just causes trouble.
+   */
+  #if ENABLED(AUTO_BED_LEVELING_UBL)
+    #undef PROBE_MANUALLY
+  #endif
+
   /**
    * Set a flag for any enabled probe
    */
diff --git a/Marlin/Marlin.h b/Marlin/Marlin.h
index 9d505d87fedf0444ae624fdc9b89a0c3a0bcbc87..d09616937ec2f982176b4be9776fbfb5ffbe6b58 100644
--- a/Marlin/Marlin.h
+++ b/Marlin/Marlin.h
@@ -351,6 +351,9 @@ int16_t code_value_temp_diff();
   void refresh_zprobe_zoffset(const bool no_babystep=false);
   #define DEPLOY_PROBE() set_probe_deployed(true)
   #define STOW_PROBE() set_probe_deployed(false)
+#else
+  #define DEPLOY_PROBE()
+  #define STOW_PROBE()
 #endif
 
 #if ENABLED(HOST_KEEPALIVE_FEATURE)
diff --git a/Marlin/SanityCheck.h b/Marlin/SanityCheck.h
index 9ddda7cbcc270cd95dbf4031d6c3f6a6e334cb12..a63bbfdad8357fff2a55f5aae91ddbb490592e6d 100644
--- a/Marlin/SanityCheck.h
+++ b/Marlin/SanityCheck.h
@@ -463,16 +463,16 @@ static_assert(1 >= 0
   #if ENABLED(BLTOUCH)
     + 1
   #endif
-  #if ENABLED(Z_PROBE_ALLEN_KEY)
+  #if ENABLED(SOLENOID_PROBE)
     + 1
   #endif
-  #if ENABLED(Z_PROBE_SLED)
+  #if ENABLED(Z_PROBE_ALLEN_KEY)
     + 1
   #endif
-  #if ENABLED(SOLENOID_PROBE)
+  #if ENABLED(Z_PROBE_SLED)
     + 1
   #endif
-  , "Please enable only one probe: PROBE_MANUALLY, FIX_MOUNTED_PROBE, Z Servo, BLTOUCH, Z_PROBE_ALLEN_KEY, or Z_PROBE_SLED."
+  , "Please enable only one probe option: PROBE_MANUALLY, FIX_MOUNTED_PROBE, BLTOUCH, SOLENOID_PROBE, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or Z Servo."
 );
 
 
@@ -547,9 +547,13 @@ static_assert(1 >= 0
    * Require some kind of probe for bed leveling and probe testing
    */
   #if HAS_ABL
-    #error "Auto Bed Leveling requires a probe! Define a Z Servo, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or FIX_MOUNTED_PROBE."
+    #if ENABLED(AUTO_BED_LEVELING_UBL)
+      #error "Unified Bed Leveling requires a probe: FIX_MOUNTED_PROBE, BLTOUCH, SOLENOID_PROBE, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or Z Servo."
+    #else
+      #error "Auto Bed Leveling requires one of these: PROBE_MANUALLY, FIX_MOUNTED_PROBE, BLTOUCH, SOLENOID_PROBE, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or a Z Servo."
+    #endif
   #elif ENABLED(Z_MIN_PROBE_REPEATABILITY_TEST)
-    #error "Z_MIN_PROBE_REPEATABILITY_TEST requires a probe! Define a Z Servo, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or FIX_MOUNTED_PROBE."
+    #error "Z_MIN_PROBE_REPEATABILITY_TEST requires a probe: FIX_MOUNTED_PROBE, BLTOUCH, SOLENOID_PROBE, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or Z Servo."
   #endif
 
 #endif
diff --git a/Marlin/ubl_G29.cpp b/Marlin/ubl_G29.cpp
index 5f20c59b258558d71a0663f899ee218f3f065399..42a95ef56e0c10ed91cf038df37692260cb8710f 100644
--- a/Marlin/ubl_G29.cpp
+++ b/Marlin/ubl_G29.cpp
@@ -640,10 +640,10 @@
         ubl.state.z_offset = code_value_float();   // do the simple case. Just lock in the specified value
       else {
         ubl.save_ubl_active_state_and_disable();
-        //measured_z = probe_pt(x_pos + X_PROBE_OFFSET_FROM_EXTRUDER, y_pos + Y_PROBE_OFFSET_FROM_EXTRUDER, ProbeDeployAndStow, g29_verbose_level);
+        //float measured_z = probe_pt(x_pos + X_PROBE_OFFSET_FROM_EXTRUDER, y_pos + Y_PROBE_OFFSET_FROM_EXTRUDER, ProbeDeployAndStow, g29_verbose_level);
 
         ubl.has_control_of_lcd_panel = true;     // Grab the LCD Hardware
-        measured_z = 1.5;
+        float measured_z = 1.5;
         do_blocking_move_to_z(measured_z);  // Get close to the bed, but leave some space so we don't damage anything
                                             // The user is not going to be locking in a new Z-Offset very often so
                                             // it won't be that painful to spin the Encoder Wheel for 1.5mm
@@ -1185,9 +1185,12 @@
       SERIAL_PROTOCOL_F(planner.z_fade_height, 4);
       SERIAL_EOL;
     #endif
-    SERIAL_PROTOCOLPGM("zprobe_zoffset: ");
-    SERIAL_PROTOCOL_F(zprobe_zoffset, 7);
-    SERIAL_EOL;
+
+    #if HAS_BED_PROBE
+      SERIAL_PROTOCOLPGM("zprobe_zoffset: ");
+      SERIAL_PROTOCOL_F(zprobe_zoffset, 7);
+      SERIAL_EOL;
+    #endif
 
     SERIAL_ECHOLNPAIR("UBL_MESH_MIN_X  " STRINGIFY(UBL_MESH_MIN_X) "=", UBL_MESH_MIN_X);
     SERIAL_ECHOLNPAIR("UBL_MESH_MIN_Y  " STRINGIFY(UBL_MESH_MIN_Y) "=", UBL_MESH_MIN_Y);