From 581a6f87f15a7cb1518601fb6d3035c7d30eb12e Mon Sep 17 00:00:00 2001 From: TD-er Date: Tue, 13 Feb 2024 23:32:40 +0100 Subject: [PATCH 01/15] [SPI Eth] Add ESP32-S3 ETH builds --- .../Reference/SPI_Ethernet_ESP32_boards.rst | 25 +++++++++++++++- platformio_esp32s3_envs.ini | 29 ++++++++++--------- tools/pio/generate_web_flasher_manifest.py | 5 ++++ 3 files changed, 45 insertions(+), 14 deletions(-) diff --git a/docs/source/Reference/SPI_Ethernet_ESP32_boards.rst b/docs/source/Reference/SPI_Ethernet_ESP32_boards.rst index 7d8524d2de..516ed1ef19 100644 --- a/docs/source/Reference/SPI_Ethernet_ESP32_boards.rst +++ b/docs/source/Reference/SPI_Ethernet_ESP32_boards.rst @@ -36,6 +36,17 @@ N.B. As there is not yet support in ESPEasy for multiple SPI busses, it cannot b - 3 - 10 - SPI2_HOST + * - M5Stack PoECAM + - ESP32-classic + - W5500 + - + - 4 + - + - + - 23 + - 38 + - 13 + - SPI2_HOST * - M5Stack Atom PoE Kit (ATOM LITE) - ESP32-classic - W5500 @@ -47,6 +58,17 @@ N.B. As there is not yet support in ESPEasy for multiple SPI busses, it cannot b - 23 - 33 - SPI2_HOST + * - M5Stack Atom PoE Kit (AtomS3) + - ESP32-S3 + - W5500 + - + - 6 + - + - + - 5 + - 7 + - 8 + - SPI2_HOST * - M5Stack Base LAN (End-of-life) - M5Core - W5500 @@ -119,8 +141,9 @@ See: * `M5 Stack Base LAN `_ * `M5 Stack LAN Base V12 `_ +* `M5 Stack PoECAM `_ * `M5 Stack LAN PoE Base V12 `_ * `M5 Stack LAN Module V13.2 `_ -* `M5 Stack ATOM PoE `_ +* `M5 Stack ATOM PoE `_ `ATOM Lite `_ `AtomS3 `_ * `M5 Stack Base PoE `_ * `TTGO/LilyGO Ethernet boards `_ diff --git a/platformio_esp32s3_envs.ini b/platformio_esp32s3_envs.ini index 6267c2ab88..a771e96ce1 100644 --- a/platformio_esp32s3_envs.ini +++ b/platformio_esp32s3_envs.ini @@ -138,40 +138,43 @@ build_flags = ${esp32s3_common.build_flags} -DPLUGIN_NEOPIXEL_COLLECTION -[env:custom_ESP32s3_8M1M_LittleFS_CDC] +[env:custom_ESP32s3_8M1M_LittleFS_CDC_ETH] extends = esp32s3_common_LittleFS board = esp32s3cdc-qio_qspi-8M build_flags = ${esp32s3_common_LittleFS.build_flags} + -DFEATURE_ETHERNET=1 -DFEATURE_ARDUINO_OTA=1 -DPLUGIN_BUILD_CUSTOM -DFEATURE_SD=1 extra_scripts = ${esp32s3_common_LittleFS.extra_scripts} pre:tools/pio/pre_custom_esp32.py -[env:custom_ESP32s3_8M1M_LittleFS_OPI_PSRAM_CDC] -extends = env:custom_ESP32s3_8M1M_LittleFS_CDC +[env:custom_ESP32s3_8M1M_LittleFS_OPI_PSRAM_CDC_ETH] +extends = env:custom_ESP32s3_8M1M_LittleFS_CDC_ETH board = esp32s3cdc-qio_opi-8M -[env:max_ESP32s3_8M1M_LittleFS_CDC] +[env:max_ESP32s3_8M1M_LittleFS_CDC_ETH] extends = esp32s3_common_LittleFS board = esp32s3cdc-qio_qspi-8M build_flags = ${esp32s3_common_LittleFS.build_flags} + -DFEATURE_ETHERNET=1 -DFEATURE_ARDUINO_OTA=1 -DPLUGIN_BUILD_MAX_ESP32 -DPLUGIN_BUILD_IR_EXTENDED extra_scripts = ${esp32s3_common_LittleFS.extra_scripts} -[env:max_ESP32s3_8M1M_LittleFS_OPI_PSRAM_CDC] -extends = env:max_ESP32s3_8M1M_LittleFS_CDC +[env:max_ESP32s3_8M1M_LittleFS_OPI_PSRAM_CDC_ETH] +extends = env:max_ESP32s3_8M1M_LittleFS_CDC_ETH board = esp32s3cdc-qio_opi-8M -[env:custom_ESP32s3_16M8M_LittleFS_CDC] +[env:custom_ESP32s3_16M8M_LittleFS_CDC_ETH] extends = esp32s3_common_LittleFS board = esp32s3cdc-qio_qspi-16M build_flags = ${esp32s3_common_LittleFS.build_flags} + -DFEATURE_ETHERNET=1 -DFEATURE_ARDUINO_OTA=1 -DPLUGIN_BUILD_CUSTOM -DPLUGIN_BUILD_IR_EXTENDED @@ -179,27 +182,27 @@ build_flags = ${esp32s3_common_LittleFS.build_flags} extra_scripts = ${esp32s3_common_LittleFS.extra_scripts} pre:tools/pio/pre_custom_esp32.py -[env:custom_ESP32s3_16M8M_LittleFS_OPI_PSRAM_CDC] -extends = env:custom_ESP32s3_16M8M_LittleFS_CDC +[env:custom_ESP32s3_16M8M_LittleFS_OPI_PSRAM_CDC_ETH] +extends = env:custom_ESP32s3_16M8M_LittleFS_CDC_ETH board = esp32s3cdc-qio_opi-16M -[env:max_ESP32s3_16M8M_LittleFS_CDC] +[env:max_ESP32s3_16M8M_LittleFS_CDC_ETH] extends = esp32s3_common_LittleFS board = esp32s3cdc-qio_qspi-16M build_flags = ${esp32s3_common_LittleFS.build_flags} - -DUSE_LITTLEFS + -DFEATURE_ETHERNET=1 -DFEATURE_ARDUINO_OTA=1 -DPLUGIN_BUILD_MAX_ESP32 -DPLUGIN_BUILD_IR_EXTENDED extra_scripts = ${esp32s3_common_LittleFS.extra_scripts} -[env:max_ESP32s3_16M8M_LittleFS_OPI_PSRAM_CDC] +[env:max_ESP32s3_16M8M_LittleFS_OPI_PSRAM_CDC_ETH] extends = esp32s3_common_LittleFS board = esp32s3cdc-qio_opi-16M build_flags = ${esp32s3_common_LittleFS.build_flags} - -DUSE_LITTLEFS + -DFEATURE_ETHERNET=1 -DFEATURE_ARDUINO_OTA=1 -DPLUGIN_BUILD_MAX_ESP32 -DPLUGIN_BUILD_IR_EXTENDED diff --git a/tools/pio/generate_web_flasher_manifest.py b/tools/pio/generate_web_flasher_manifest.py index 9502ed4e59..dda0c80416 100644 --- a/tools/pio/generate_web_flasher_manifest.py +++ b/tools/pio/generate_web_flasher_manifest.py @@ -93,6 +93,7 @@ def parse_filename(file, version, variant, file_suffix): elif '_16M8M' in variant: flash_size = '16M8M' main_group = '16M Flash' + else: if ".bin" in file_suffix and ".gz" not in file_suffix and 'ESP32' not in variant: chipFamily = 'ESP8266' @@ -379,6 +380,10 @@ def generate_manifest_files(bin_folder, output_prefix): '
\n', '
\n', ' See latest/ for a pre-release test build.\n', + '
\n', + ' See ../ for last official build.\n', + '
\n', + ' all.zip containing all bin files in a single zip file.\n', ' ")); html_TR_TD(); - { - addHtml(F("Current size: ")); - addHtmlInt(size); - addHtml(F(" characters (Max ")); - addHtmlInt(RULES_MAX_SIZE); - addHtml(F(")")); - } - - if (size > RULES_MAX_SIZE) { - addHtml(F("Filesize exceeds web editor limit!")); - } + addHtml(F("Current size: ")); + addHtmlInt(size); + addHtml(F(" characters")); } bool Rule_Download(const String& path) From bc81cedb32e1810409017accea37ab172aceba03 Mon Sep 17 00:00:00 2001 From: TD-er Date: Thu, 15 Feb 2024 18:05:03 +0100 Subject: [PATCH 14/15] [Eth] Show Ethernet adapter used in JSON/Sysinfo --- src/src/Helpers/StringProvider.cpp | 2 ++ src/src/Helpers/StringProvider.h | 1 + src/src/WebServer/JSON.cpp | 1 + src/src/WebServer/SysInfoPage.cpp | 2 ++ 4 files changed, 6 insertions(+) diff --git a/src/src/Helpers/StringProvider.cpp b/src/src/Helpers/StringProvider.cpp index 96c3aa4d42..5b869388cd 100644 --- a/src/src/Helpers/StringProvider.cpp +++ b/src/src/Helpers/StringProvider.cpp @@ -269,6 +269,7 @@ const __FlashStringHelper * getLabel(LabelType::Enum label) { case LabelType::ETH_STATE: return F("Eth State"); case LabelType::ETH_SPEED_STATE: return F("Eth Speed State"); case LabelType::ETH_CONNECTED: return F("Eth connected"); + case LabelType::ETH_CHIP: return F("Eth chip"); #endif // if FEATURE_ETHERNET # if FEATURE_ETHERNET || defined(USES_ESPEASY_NOW) case LabelType::ETH_WIFI_MODE: return F("Network Type"); @@ -583,6 +584,7 @@ String getValue(LabelType::Enum label) { case LabelType::ETH_STATE: return EthLinkUp() ? F("Link Up") : F("Link Down"); case LabelType::ETH_SPEED_STATE: return EthLinkUp() ? getEthLinkSpeedState() : F("Link Down"); case LabelType::ETH_CONNECTED: return ETHConnected() ? F("CONNECTED") : F("DISCONNECTED"); // 0=disconnected, 1=connected + case LabelType::ETH_CHIP: return toString(Settings.ETH_Phy_Type); #endif // if FEATURE_ETHERNET # if FEATURE_ETHERNET || defined(USES_ESPEASY_NOW) case LabelType::ETH_WIFI_MODE: return toString(active_network_medium); diff --git a/src/src/Helpers/StringProvider.h b/src/src/Helpers/StringProvider.h index ce11604180..0a487af2b7 100644 --- a/src/src/Helpers/StringProvider.h +++ b/src/src/Helpers/StringProvider.h @@ -212,6 +212,7 @@ struct LabelType { ETH_STATE, ETH_SPEED_STATE, ETH_CONNECTED, + ETH_CHIP, #endif // if FEATURE_ETHERNET # if FEATURE_ETHERNET || defined(USES_ESPEASY_NOW) ETH_WIFI_MODE, diff --git a/src/src/WebServer/JSON.cpp b/src/src/WebServer/JSON.cpp index 0afcc5c8dc..bc2ea01b46 100644 --- a/src/src/WebServer/JSON.cpp +++ b/src/src/WebServer/JSON.cpp @@ -299,6 +299,7 @@ void handle_json() { LabelType::ETH_WIFI_MODE, LabelType::ETH_CONNECTED, + LabelType::ETH_CHIP, LabelType::ETH_DUPLEX, LabelType::ETH_SPEED, LabelType::ETH_STATE, diff --git a/src/src/WebServer/SysInfoPage.cpp b/src/src/WebServer/SysInfoPage.cpp index fc8cba04c6..e8ba02427e 100644 --- a/src/src/WebServer/SysInfoPage.cpp +++ b/src/src/WebServer/SysInfoPage.cpp @@ -147,6 +147,7 @@ void handle_sysinfo_json() { json_open(false, F("ethernet")); json_prop(F("ethwifimode"), getValue(LabelType::ETH_WIFI_MODE)); json_prop(F("ethconnected"), getValue(LabelType::ETH_CONNECTED)); + json_prop(F("ethchip"), getValue(LabelType::ETH_CHIP)); json_prop(F("ethduplex"), getValue(LabelType::ETH_DUPLEX)); json_prop(F("ethspeed"), getValue(LabelType::ETH_SPEED)); json_prop(F("ethstate"), getValue(LabelType::ETH_STATE)); @@ -407,6 +408,7 @@ void handle_sysinfo_Ethernet() { static const LabelType::Enum labels[] PROGMEM = { + LabelType::ETH_CHIP, LabelType::ETH_STATE, LabelType::ETH_SPEED, LabelType::ETH_DUPLEX, From 4cc4f0ffaef6b97d8ef8c1dbf0e4f5761052ddac Mon Sep 17 00:00:00 2001 From: TD-er Date: Thu, 15 Feb 2024 18:06:05 +0100 Subject: [PATCH 15/15] [ESP-IDF5.x] Add fix to ESP-IDF/Arduino for W5500 without RST (AtomPoE) --- platformio_core_defs.ini | 2 +- platformio_esp32_solo1.ini | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/platformio_core_defs.ini b/platformio_core_defs.ini index 8619ac60a6..142a15b1b7 100644 --- a/platformio_core_defs.ini +++ b/platformio_core_defs.ini @@ -211,7 +211,7 @@ lib_ignore = ;platform = https://github.com/Jason2866/platform-espressif32.git platform = https://github.com/tasmota/platform-espressif32/releases/download/2024.02.10/platform-espressif32.zip ;platform_packages = -platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/2031/framework-arduinoespressif32-release_v5.1-0090de7.zip +platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/2036/framework-arduinoespressif32-release_v5.1-246cad0.zip build_flags = -DESP32_STAGE -DESP_IDF_VERSION_MAJOR=5 -DLIBRARIES_NO_LOG=1 diff --git a/platformio_esp32_solo1.ini b/platformio_esp32_solo1.ini index 55bb83ca06..61afb5b4e8 100644 --- a/platformio_esp32_solo1.ini +++ b/platformio_esp32_solo1.ini @@ -18,7 +18,7 @@ build_unflags = ${esp32_base.build_unflags} ; IDF 5.1.2 [esp32_solo1_common_LittleFS] extends = esp32_base_idf5 -platform_packages = framework-arduino-solo1 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/2033/framework-arduinoespressif32-solo1-release_v5.1-0090de7.zip +platform_packages = framework-arduino-solo1 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/2038/framework-arduinoespressif32-solo1-release_v5.1-246cad0.zip build_flags = ${esp32_base_idf5.build_flags} -DFEATURE_ARDUINO_OTA=1 -DUSE_LITTLEFS