diff --git a/Marlin/src/HAL/HAL_ESP32/persistent_store_spiffs.cpp b/Marlin/src/HAL/HAL_ESP32/persistent_store_spiffs.cpp
index 0ba5fff650b4c205d3aa39fc2779df4e6c576636..5227da3568601e1ff859f89d516d4f3c61205d12 100644
--- a/Marlin/src/HAL/HAL_ESP32/persistent_store_spiffs.cpp
+++ b/Marlin/src/HAL/HAL_ESP32/persistent_store_spiffs.cpp
@@ -24,7 +24,7 @@
 
 #include "../../inc/MarlinConfig.h"
 
-#if ENABLED(SD_EEPROM_EMULATION)
+#if ENABLED(EEPROM_SETTINGS) && DISABLED(FLASH_EEPROM_EMULATION)
 
 #include "../shared/persistent_store_api.h"
 
@@ -102,5 +102,5 @@ bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t
 
 size_t PersistentStore::capacity() { return HAL_ESP32_EEPROM_SIZE; }
 
-#endif // SD_EEPROM_EMULATION
+#endif // EEPROM_SETTINGS
 #endif // ARDUINO_ARCH_ESP32
diff --git a/Marlin/src/HAL/HAL_STM32F1/persistent_store_sdcard.cpp b/Marlin/src/HAL/HAL_STM32F1/persistent_store_sdcard.cpp
index 08bc201502eac64221586baad63cae52ed83b9ab..32440935779e10e3cc429c54d5310a61e8b271c1 100644
--- a/Marlin/src/HAL/HAL_STM32F1/persistent_store_sdcard.cpp
+++ b/Marlin/src/HAL/HAL_STM32F1/persistent_store_sdcard.cpp
@@ -28,7 +28,7 @@
 
 #include "../../inc/MarlinConfig.h"
 
-#if ENABLED(SD_EEPROM_EMULATION)
+#if ENABLED(EEPROM_SETTINGS) && NONE(FLASH_EEPROM_EMULATION, SPI_EEPROM, I2C_EEPROM)
 
 #include "../shared/persistent_store_api.h"
 
diff --git a/Marlin/src/Marlin.cpp b/Marlin/src/Marlin.cpp
index bbc04994254b5d4511dffeb1a418536250c98490..e73066fabfafae5a8a5be12313b18e137cbc682b 100644
--- a/Marlin/src/Marlin.cpp
+++ b/Marlin/src/Marlin.cpp
@@ -941,9 +941,7 @@ void setup() {
 
   // Load data from EEPROM if available (or use defaults)
   // This also updates variables in the planner, elsewhere
-  #if DISABLED(SD_EEPROM_EMULATION)
-    (void)settings.load();
-  #endif
+  (void)settings.load();
 
   #if HAS_M206_COMMAND
     // Initialize current position based on home_offset
@@ -1096,17 +1094,8 @@ void setup() {
     init_closedloop();
   #endif
 
-  #if !HAS_SPI_LCD
-
-    #if ENABLED(SD_EEPROM_EMULATION)
-      SERIAL_ECHOLNPGM("Loading settings from SD");
-      (void)settings.load();
-    #endif
-
-    #if ENABLED(INIT_SDCARD_ON_BOOT)
-      card.beginautostart();
-    #endif
-
+  #if ENABLED(INIT_SDCARD_ON_BOOT) && !HAS_SPI_LCD
+    card.beginautostart();
   #endif
 
   #if HAS_TRINAMIC && DISABLED(PS_DEFAULT_OFF)
diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h
index 36b4fd7e0c275a5d7af62a0c872123a7f16fafb6..af1a95138d74e9c5c6a7e291213799727eb80055 100644
--- a/Marlin/src/inc/Conditionals_post.h
+++ b/Marlin/src/inc/Conditionals_post.h
@@ -1734,7 +1734,3 @@
     #define INIT_SDCARD_ON_BOOT
   #endif
 #endif
-
-#if ENABLED(EEPROM_SETTINGS) && NONE(FLASH_EEPROM_EMULATION, SPI_EEPROM, I2C_EEPROM)
-  #define SD_EEPROM_EMULATION
-#endif
diff --git a/Marlin/src/lcd/ultralcd.cpp b/Marlin/src/lcd/ultralcd.cpp
index 9dc9ca1cdf2731eab2014c292129807f45d98654..fb4975585d4a96dbdc29aa0b16487008c994dbec 100644
--- a/Marlin/src/lcd/ultralcd.cpp
+++ b/Marlin/src/lcd/ultralcd.cpp
@@ -81,10 +81,6 @@
 
 #include "../Marlin.h"
 
-#if ENABLED(SD_EEPROM_EMULATION)
-  #include "../module/configuration_store.h"
-#endif
-
 #if ENABLED(POWER_LOSS_RECOVERY)
   #include "../feature/power_loss_recovery.h"
 #endif
@@ -787,13 +783,8 @@ void MarlinUI::update() {
       if (sd_status) {
         safe_delay(500); // Some boards need a delay to get settled
         card.initsd();
-        if (old_sd_status == 2) {
-          #if ENABLED(SD_EEPROM_EMULATION)
-            SERIAL_ECHOLNPGM("Loading settings from SD");
-            (void)settings.load();
-          #endif
+        if (old_sd_status == 2)
           card.beginautostart();  // Initial boot
-        }
         else
           set_status_P(PSTR(MSG_SD_INSERTED));
       }
diff --git a/Marlin/src/sd/cardreader.cpp b/Marlin/src/sd/cardreader.cpp
index a8574569d2d35cc3a9cf7c7e586a28d76c8b8add..efd955259db6ead1ac3eccb0d72d13fb241cdadc 100644
--- a/Marlin/src/sd/cardreader.cpp
+++ b/Marlin/src/sd/cardreader.cpp
@@ -353,6 +353,9 @@ void CardReader::initsd() {
   else {
     flag.detected = true;
     SERIAL_ECHO_MSG(MSG_SD_CARD_OK);
+    #if ENABLED(EEPROM_SETTINGS) && DISABLED(FLASH_EEPROM_EMULATION)
+      (void)settings.load();
+    #endif
   }
   setroot();
 
@@ -558,6 +561,11 @@ void CardReader::checkautostart() {
 
   if (!isDetected()) initsd();
 
+  #if ENABLED(EEPROM_SETTINGS) && DISABLED(FLASH_EEPROM_EMULATION)
+    SERIAL_ECHOLNPGM("Loading settings from SD");
+    (void)settings.load();
+  #endif
+
   if (isDetected()
     #if ENABLED(POWER_LOSS_RECOVERY)
       && !recovery.valid() // Don't run auto#.g when a resume file exists