diff --git a/radio/src/edgetx.cpp b/radio/src/edgetx.cpp index e4a1da5e815..bd86328447c 100644 --- a/radio/src/edgetx.cpp +++ b/radio/src/edgetx.cpp @@ -1370,6 +1370,15 @@ void edgeTxInit() { TRACE("edgeTxInit"); + #if defined(COLORLCD) + // SD_CARD_PRESENT() does not work properly on most + // B&W targets, so that we need to delay the detection + // until the SD card is mounted (requires RTOS scheduler running) + if (!SD_CARD_PRESENT() && !UNEXPECTED_SHUTDOWN()) { + runFatalErrorScreen(STR_NO_SDCARD); + } +#endif + // Show splash screen (color LCD) if (!(startOptions & OPENTX_START_NO_SPLASH)) startSplash(); @@ -1623,15 +1632,6 @@ int main() } #endif -#if defined(COLORLCD) - // SD_CARD_PRESENT() does not work properly on most - // B&W targets, so that we need to delay the detection - // until the SD card is mounted (requires RTOS scheduler running) - if (!SD_CARD_PRESENT() && !UNEXPECTED_SHUTDOWN()) { - runFatalErrorScreen(STR_NO_SDCARD); - } -#endif - tasksStart(); } diff --git a/radio/src/gui/colorlcd/startup_shutdown.cpp b/radio/src/gui/colorlcd/startup_shutdown.cpp index fbb90912b17..2f554aeb3d0 100644 --- a/radio/src/gui/colorlcd/startup_shutdown.cpp +++ b/radio/src/gui/colorlcd/startup_shutdown.cpp @@ -275,6 +275,13 @@ void runFatalErrorScreen(const char* message) { lcdInitDisplayDriver(); + drawFatalErrorScreen(message); + + // On startup wait for power button to be released + while (pwrPressed()) { + WDG_RESET(); + } + while (true) { drawFatalErrorScreen(message); WDG_RESET();