diff --git a/wled00/wled.cpp b/wled00/wled.cpp index 6753ab6b..06703528 100644 --- a/wled00/wled.cpp +++ b/wled00/wled.cpp @@ -299,7 +299,7 @@ void WLED::setup() Serial0.setDebugOutput(false); Serial.setDebugOutput(true); #else - Serial.setTimeout(50); + if (Serial) Serial.setTimeout(50); // WLEDMM - only when serial is initialized #endif //Serial0.setDebugOutput(false); diff --git a/wled00/wled_serial.cpp b/wled00/wled_serial.cpp index 562d31a3..daf60b45 100644 --- a/wled00/wled_serial.cpp +++ b/wled00/wled_serial.cpp @@ -68,6 +68,10 @@ void sendBytes(){ } bool canUseSerial(void) { // WLEDMM returns true if Serial can be used for debug output (i.e. not configured for other purpose) + #if defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(WLED_DEBUG_HOST) + // on -C3, USB CDC blocks if disconnected! so check if Serial is active before printing to it. + if (!Serial) return false; + #endif if (pinManager.isPinAllocated(hardwareTX) && (pinManager.getPinOwner(hardwareTX) != PinOwner::DebugOut)) return false; // TX allocated to LEDs or other functions if ((realtimeMode == REALTIME_MODE_GENERIC) || (realtimeMode == REALTIME_MODE_ADALIGHT) || (realtimeMode == REALTIME_MODE_TPM2NET))