From a5f3b99496064f313a2b06a2e09ce91847e7774c Mon Sep 17 00:00:00 2001 From: TD-er Date: Fri, 20 Feb 2026 12:59:19 +0100 Subject: [PATCH 1/2] [USB-CDC] Fix USB disconnect on reboot for USB-JTAG/CDC boards --- boards/esp32c3cdc-16M.json | 2 +- boards/esp32c3cdc.json | 3 +-- boards/esp32c5cdc-8M.json | 2 +- boards/esp32c5cdc.json | 2 +- boards/esp32c61cdc-8M.json | 2 +- boards/esp32c6cdc-16M.json | 2 +- boards/esp32c6cdc-8M.json | 2 +- boards/esp32c6cdc.json | 2 +- boards/esp32s3cdc-qio_opi-16M.json | 2 +- boards/esp32s3cdc-qio_opi-8M.json | 2 +- boards/esp32s3cdc-qio_opi.json | 2 +- boards/esp32s3cdc-qio_qspi-16M.json | 2 +- boards/esp32s3cdc-qio_qspi-8M.json | 2 +- boards/esp32s3cdc-qio_qspi.json | 2 +- lib/ESPEasySerial/Port_ESPEasySerial_USB_HWCDC.cpp | 4 ++-- 15 files changed, 16 insertions(+), 17 deletions(-) diff --git a/boards/esp32c3cdc-16M.json b/boards/esp32c3cdc-16M.json index 338909ca0..293149efd 100644 --- a/boards/esp32c3cdc-16M.json +++ b/boards/esp32c3cdc-16M.json @@ -4,7 +4,7 @@ "ldscript": "esp32c3_out.ld" }, "core": "esp32", - "extra_flags": "-DARDUINO_TASMOTA -DARDUINO_USB_MODE=1 -DESP32_16M -DESP32C3 -DUSE_USB_CDC_CONSOLE -DARDUINO_USB_CDC_ON_BOOT=1", + "extra_flags": "-DARDUINO_TASMOTA -DARDUINO_USB_MODE=1 -DESP32_16M -DESP32C3 -DUSE_USB_CDC_CONSOLE -DARDUINO_USB_CDC_ON_BOOT=0", "f_cpu": "160000000L", "f_flash": "80000000L", "flash_mode": "dio", diff --git a/boards/esp32c3cdc.json b/boards/esp32c3cdc.json index 206367fb9..73fc6ca36 100644 --- a/boards/esp32c3cdc.json +++ b/boards/esp32c3cdc.json @@ -4,7 +4,7 @@ "ldscript": "esp32c3_out.ld" }, "core": "esp32", - "extra_flags": "-DARDUINO_TASMOTA -DARDUINO_USB_MODE=1 -DESP32_4M -DESP32C3 -DUSE_USB_CDC_CONSOLE -DARDUINO_USB_CDC_ON_BOOT=1", + "extra_flags": "-DARDUINO_TASMOTA -DARDUINO_USB_MODE=1 -DESP32_4M -DESP32C3 -DUSE_USB_CDC_CONSOLE -DARDUINO_USB_CDC_ON_BOOT=0", "f_cpu": "160000000L", "f_flash": "80000000L", "flash_mode": "dio", @@ -29,7 +29,6 @@ "maximum_ram_size": 327680, "maximum_size": 4194304, "require_upload_port": true, - "before_reset": "usb_reset", "speed": 460800 }, "url": "https://docs.espressif.com/projects/esp-idf/en/latest/esp32c3/hw-reference/esp32c3/user-guide-devkitm-1.html", diff --git a/boards/esp32c5cdc-8M.json b/boards/esp32c5cdc-8M.json index 42ae430a3..ebe4c7fe2 100644 --- a/boards/esp32c5cdc-8M.json +++ b/boards/esp32c5cdc-8M.json @@ -4,7 +4,7 @@ "ldscript": "esp32c5_out.ld" }, "core": "esp32", - "extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_8M -DESP32C5 -DARDUINO_USB_CDC_ON_BOOT=1", + "extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_8M -DESP32C5 -DARDUINO_USB_CDC_ON_BOOT=0", "f_cpu": "160000000L", "f_flash": "80000000L", "flash_mode": "qio", diff --git a/boards/esp32c5cdc.json b/boards/esp32c5cdc.json index 312d32556..4459f683f 100644 --- a/boards/esp32c5cdc.json +++ b/boards/esp32c5cdc.json @@ -4,7 +4,7 @@ "ldscript": "esp32c5_out.ld" }, "core": "esp32", - "extra_flags": "-DARDUINO_TASMOTA -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32C5 -DARDUINO_USB_CDC_ON_BOOT=1", + "extra_flags": "-DARDUINO_TASMOTA -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32C5 -DARDUINO_USB_CDC_ON_BOOT=0", "f_cpu": "160000000L", "f_flash": "80000000L", "flash_mode": "qio", diff --git a/boards/esp32c61cdc-8M.json b/boards/esp32c61cdc-8M.json index be0ed214d..06ff0f88c 100644 --- a/boards/esp32c61cdc-8M.json +++ b/boards/esp32c61cdc-8M.json @@ -4,7 +4,7 @@ "ldscript": "esp32c61_out.ld" }, "core": "esp32", - "extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_8M -DESP32C61 -DARDUINO_USB_CDC_ON_BOOT=1", + "extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_8M -DESP32C61 -DARDUINO_USB_CDC_ON_BOOT=0", "f_cpu": "160000000L", "f_flash": "80000000L", "flash_mode": "qio", diff --git a/boards/esp32c6cdc-16M.json b/boards/esp32c6cdc-16M.json index efa16120c..1e8c84f17 100644 --- a/boards/esp32c6cdc-16M.json +++ b/boards/esp32c6cdc-16M.json @@ -4,7 +4,7 @@ "ldscript": "esp32c6_out.ld" }, "core": "esp32", - "extra_flags": "-DARDUINO_TASMOTA -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_16M -DESP32C6 -DARDUINO_USB_CDC_ON_BOOT=1", + "extra_flags": "-DARDUINO_TASMOTA -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_16M -DESP32C6 -DARDUINO_USB_CDC_ON_BOOT=0", "f_cpu": "160000000L", "f_flash": "80000000L", "flash_mode": "qio", diff --git a/boards/esp32c6cdc-8M.json b/boards/esp32c6cdc-8M.json index 9bfc4e34c..d33326421 100644 --- a/boards/esp32c6cdc-8M.json +++ b/boards/esp32c6cdc-8M.json @@ -4,7 +4,7 @@ "ldscript": "esp32c6_out.ld" }, "core": "esp32", - "extra_flags": "-DARDUINO_TASMOTA -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_8M -DESP32C6 -DARDUINO_USB_CDC_ON_BOOT=1", + "extra_flags": "-DARDUINO_TASMOTA -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_8M -DESP32C6 -DARDUINO_USB_CDC_ON_BOOT=0", "f_cpu": "160000000L", "f_flash": "80000000L", "flash_mode": "qio", diff --git a/boards/esp32c6cdc.json b/boards/esp32c6cdc.json index b6615cba4..d5e8e29dd 100644 --- a/boards/esp32c6cdc.json +++ b/boards/esp32c6cdc.json @@ -4,7 +4,7 @@ "ldscript": "esp32c6_out.ld" }, "core": "esp32", - "extra_flags": "-DARDUINO_TASMOTA -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32C6 -DARDUINO_USB_CDC_ON_BOOT=1", + "extra_flags": "-DARDUINO_TASMOTA -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32C6 -DARDUINO_USB_CDC_ON_BOOT=0", "f_cpu": "160000000L", "f_flash": "80000000L", "flash_mode": "qio", diff --git a/boards/esp32s3cdc-qio_opi-16M.json b/boards/esp32s3cdc-qio_opi-16M.json index 22afb4bb5..a66c537fa 100644 --- a/boards/esp32s3cdc-qio_opi-16M.json +++ b/boards/esp32s3cdc-qio_opi-16M.json @@ -9,7 +9,7 @@ "f_flash": "80000000L", "boot": "opi", "flash_mode": "qio", - "extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_16M -DESP32S3 -DARDUINO_USB_CDC_ON_BOOT=1", + "extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_16M -DESP32S3 -DARDUINO_USB_CDC_ON_BOOT=0", "hwids": [ [ "0x303A", diff --git a/boards/esp32s3cdc-qio_opi-8M.json b/boards/esp32s3cdc-qio_opi-8M.json index 064cb4019..b24582f91 100644 --- a/boards/esp32s3cdc-qio_opi-8M.json +++ b/boards/esp32s3cdc-qio_opi-8M.json @@ -5,7 +5,7 @@ "memory_type": "qio_opi" }, "core": "esp32", - "extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_8M -DESP32S3 -DARDUINO_USB_CDC_ON_BOOT=1", + "extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_8M -DESP32S3 -DARDUINO_USB_CDC_ON_BOOT=0", "f_cpu": "240000000L", "f_flash": "80000000L", "flash_mode": "qio", diff --git a/boards/esp32s3cdc-qio_opi.json b/boards/esp32s3cdc-qio_opi.json index 03943d071..e586ed6a5 100644 --- a/boards/esp32s3cdc-qio_opi.json +++ b/boards/esp32s3cdc-qio_opi.json @@ -5,7 +5,7 @@ "memory_type": "qio_opi" }, "core": "esp32", - "extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32S3 -DARDUINO_USB_CDC_ON_BOOT=1", + "extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32S3 -DARDUINO_USB_CDC_ON_BOOT=0", "f_cpu": "240000000L", "f_flash": "80000000L", "flash_mode": "qio", diff --git a/boards/esp32s3cdc-qio_qspi-16M.json b/boards/esp32s3cdc-qio_qspi-16M.json index e924d3dbd..5b65241ff 100644 --- a/boards/esp32s3cdc-qio_qspi-16M.json +++ b/boards/esp32s3cdc-qio_qspi-16M.json @@ -5,7 +5,7 @@ "memory_type": "qio_qspi" }, "core": "esp32", - "extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_16M -DESP32S3 -DARDUINO_USB_CDC_ON_BOOT=1", + "extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_16M -DESP32S3 -DARDUINO_USB_CDC_ON_BOOT=0", "f_cpu": "240000000L", "f_flash": "80000000L", "flash_mode": "qio", diff --git a/boards/esp32s3cdc-qio_qspi-8M.json b/boards/esp32s3cdc-qio_qspi-8M.json index 669a50bb5..62735f885 100644 --- a/boards/esp32s3cdc-qio_qspi-8M.json +++ b/boards/esp32s3cdc-qio_qspi-8M.json @@ -5,7 +5,7 @@ "memory_type": "qio_qspi" }, "core": "esp32", - "extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_8M -DESP32S3 -DARDUINO_USB_CDC_ON_BOOT=1", + "extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_8M -DESP32S3 -DARDUINO_USB_CDC_ON_BOOT=0", "f_cpu": "240000000L", "f_flash": "80000000L", "flash_mode": "qio", diff --git a/boards/esp32s3cdc-qio_qspi.json b/boards/esp32s3cdc-qio_qspi.json index e1ecb7910..293db5750 100644 --- a/boards/esp32s3cdc-qio_qspi.json +++ b/boards/esp32s3cdc-qio_qspi.json @@ -5,7 +5,7 @@ "memory_type": "qio_qspi" }, "core": "esp32", - "extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32S3 -DARDUINO_USB_CDC_ON_BOOT=1", + "extra_flags": "-DARDUINO_TASMOTA -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32S3 -DARDUINO_USB_CDC_ON_BOOT=0", "f_cpu": "240000000L", "f_flash": "80000000L", "flash_mode": "qio", diff --git a/lib/ESPEasySerial/Port_ESPEasySerial_USB_HWCDC.cpp b/lib/ESPEasySerial/Port_ESPEasySerial_USB_HWCDC.cpp index f57ae8ec4..4f59d31e4 100644 --- a/lib/ESPEasySerial/Port_ESPEasySerial_USB_HWCDC.cpp +++ b/lib/ESPEasySerial/Port_ESPEasySerial_USB_HWCDC.cpp @@ -58,10 +58,10 @@ Port_ESPEasySerial_USB_HWCDC_t::Port_ESPEasySerial_USB_HWCDC_t(const ESPEasySeri { _config.port = ESPEasySerialPort::usb_hw_cdc; #if !ARDUINO_USB_CDC_ON_BOOT - USB.begin(); +// USB.begin(); #endif if (_hwcdc_serial != nullptr) { - _hwcdc_serial->end(); +// _hwcdc_serial->end(); // _config.rxBuffSize = _hwcdc_serial->setRxBufferSize(_config.rxBuffSize); // _config.txBuffSize = _hwcdc_serial->setTxBufferSize(_config.txBuffSize); From 05cfb52ee1b49f424a659edd1031481e7d554296 Mon Sep 17 00:00:00 2001 From: TD-er Date: Mon, 23 Feb 2026 14:31:12 +0100 Subject: [PATCH 2/2] [ESP8266 build] Fix failing custom ESP8266 build using Custom.h --- src/ESPEasy/net/ESPEasyNetwork_ESP8266.cpp | 4 ++-- src/_C009.cpp | 2 +- src/src/Helpers/Networking.cpp | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/ESPEasy/net/ESPEasyNetwork_ESP8266.cpp b/src/ESPEasy/net/ESPEasyNetwork_ESP8266.cpp index 935ece720..131c37ba9 100644 --- a/src/ESPEasy/net/ESPEasyNetwork_ESP8266.cpp +++ b/src/ESPEasy/net/ESPEasyNetwork_ESP8266.cpp @@ -72,7 +72,7 @@ IPAddress NetworkLocalIP() { return WiFi.localIP(); } IPAddress NetworkID() { const IPAddress subnet = NetworkSubnetMask(); - IPAddress networkID = NetworkLocalIP(); + IPAddress networkID = ESPEasy::net::NetworkLocalIP(); for (uint8_t i = 0; i < 4; ++i) { networkID[i] &= subnet[i]; @@ -83,7 +83,7 @@ IPAddress NetworkID() IPAddress NetworkBroadcast() { const IPAddress subnet = NetworkSubnetMask(); - IPAddress broadcast = NetworkLocalIP(); + IPAddress broadcast = ESPEasy::net::NetworkLocalIP(); for (uint8_t i = 0; i < 4; ++i) { broadcast[i] |= ~subnet[i]; diff --git a/src/_C009.cpp b/src/_C009.cpp index 1be83eb72..0016b5eba 100644 --- a/src/_C009.cpp +++ b/src/_C009.cpp @@ -150,7 +150,7 @@ bool do_process_c009_delay_queue(cpluginID_t cpluginID, const Queue_element_base // embed IP, important if there is NAT/PAT // char ipStr[20]; - // IPAddress ip = NetworkLocalIP(); + // IPAddress ip = ESPEasy::net::NetworkLocalIP(); // sprintf_P(ipStr, PSTR("%u.%u.%u.%u"), ip[0], ip[1], ip[2], ip[3]}); esp->write({F("ip"), formatIP(ESPEasy::net::NetworkLocalIP())}); } diff --git a/src/src/Helpers/Networking.cpp b/src/src/Helpers/Networking.cpp index 48ae6fd4e..743d8deed 100644 --- a/src/src/Helpers/Networking.cpp +++ b/src/src/Helpers/Networking.cpp @@ -559,7 +559,7 @@ void SSDP_schema() { return; } - const IPAddress ip = NetworkLocalIP(); + const IPAddress ip = ESPEasy::net::NetworkLocalIP(); const uint32_t chipId = ESP.getChipId(); char uuid[64]; @@ -658,7 +658,7 @@ bool SSDP_begin() { ip_addr_t ifaddr; - ifaddr.addr = NetworkLocalIP(); + ifaddr.addr = ESPEasy::net::NetworkLocalIP(); ip_addr_t multicast_addr; multicast_addr.addr = (uint32_t)SSDP_MULTICAST_ADDR; @@ -705,7 +705,7 @@ bool SSDP_begin() { Send SSDP messages (notify & responses) \*********************************************************************************************/ void SSDP_send(uint8_t method) { - uint32_t ip = NetworkLocalIP(); + uint32_t ip = ESPEasy::net::NetworkLocalIP(); // FIXME TD-er: Why create String objects of these flashstrings? String _ssdp_response_template = F(