diff --git a/wled00/wled.cpp b/wled00/wled.cpp index 9fe74d5c..abee0ebc 100644 --- a/wled00/wled.cpp +++ b/wled00/wled.cpp @@ -473,7 +473,7 @@ void WLED::setup() delay(WLED_BOOTUPDELAY); // delay to let voltage stabilize, helps with boot issues on some setups #endif - #if ARDUINO_USB_CDC_ON_BOOT && (defined(CONFIG_IDF_TARGET_ESP32S3) || defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C6)) + #if ARDUINO_USB_CDC_ON_BOOT && (defined(CONFIG_IDF_TARGET_ESP32S3) || defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C6) || defined(CONFIG_IDF_TARGET_ESP32P4)) Serial.begin(115200); // WLEDMM avoid "hung devices" when USB_CDC is enabled; see https://github.com/espressif/arduino-esp32/issues/9043 Serial.setTxTimeoutMs(0); // potential side-effect: incomplete debug output, with missing characters whenever TX buffer is full. #else @@ -507,8 +507,8 @@ void WLED::setup() if (!Serial) delay(2500); // WLEDMM allow CDC USB serial to initialise (WLED_DEBUG only) #endif #if ARDUINO_USB_CDC_ON_BOOT || ARDUINO_USB_MODE - #if ARDUINO_USB_CDC_ON_BOOT && (defined(CONFIG_IDF_TARGET_ESP32S3) || defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C6)) - + #if ARDUINO_USB_CDC_ON_BOOT && (defined(CONFIG_IDF_TARGET_ESP32S3) || defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C6) || defined(CONFIG_IDF_TARGET_ESP32P4)) + // WLEDMM avoid "hung devices" when USB_CDC is enabled; see https://github.com/espressif/arduino-esp32/issues/9043 Serial.setTxTimeoutMs(0); #endif #if !defined(WLEDMM_NO_SERIAL_WAIT) || defined(WLED_DEBUG) diff --git a/wled00/wled_serial.cpp b/wled00/wled_serial.cpp index fe83fc43..4d5f1f22 100644 --- a/wled00/wled_serial.cpp +++ b/wled00/wled_serial.cpp @@ -76,8 +76,8 @@ void sendBytes(){ } bool canUseSerial(void) { // WLEDMM returns true if Serial can be used for debug output (i.e. not configured for other purpose) - #if ARDUINO_USB_CDC_ON_BOOT && (defined(CONFIG_IDF_TARGET_ESP32S3) || defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C6)) && !defined(WLED_DEBUG_HOST) - // on S3/C3/C6, USB CDC blocks if disconnected! so check if Serial is active before printing to it. + #if ARDUINO_USB_CDC_ON_BOOT && (defined(CONFIG_IDF_TARGET_ESP32S3) || defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C6) || defined(CONFIG_IDF_TARGET_ESP32P4)) && !defined(WLED_DEBUG_HOST) + // on S3/C3/C6/P4, 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))