[RMII Eth] Fix setting clock mode + document NW config import/export

This commit is contained in:
TD-er
2026-04-19 23:09:12 +02:00
parent 7761b60f12
commit b82c27f645
8 changed files with 251 additions and 62 deletions
+179
View File
@@ -115,3 +115,182 @@ Enable IPv6
(ESP32 only)
Checking this checkbox, will allow the network device to use IPv6.
ESP-Hosted-MCU
==============
Recently Espressif introduced a new concept along with the ESP32-P4.
These ESP32-P4 chips do not have any RF hardware present, so they don't support WiFi, Bluetooth or 802.15.4 (Zigbee)
This means boards with an ESP32-P4 and WiFi support do have a secondary Esp module present, like an ESP32-C6.
This secondary module does run the "ESP-Hosted-MCU" firmware.
In theory it should be possible to run just about any combination of ESP32-xx with an ESP32-P4, however currently only ESP32-C6 is supported even though there are ESP32-P4 boards with an ESP32-C5 being sold.
The protocol used between the processor running ESPEasy and the secondary ESP can change over time, so it is important to keep both firmware versions in sync.
ESPEasy does show information on both firmware/protocol versions on the WiFi Station config page.
For example:
.. code-block::
ESP-Host Fw Version: 2.12.3
ESP-Hosted-MCU Fw Version: 2.12.3
ESP-Hosted-MCU Chip: ESP32-C6
MAC: E4:B3:23:A9:3F:68
It has been made relatively easy to update the secondary ESP using the ``wifiotahostedmcu`` command.
This does not require any extra parameters. It only needs a direct connection to the internet.
Either via the WiFi module itself, or via Ethernet.
This will then try to download the matching firmware version from GitHub.
Export/Import Network Parameters
================================
.. note::
This is working only on ESP32 as extra network interfaces are only supported on ESP32 builds of ESPEasy.
In order to simplify initial setup of a newly flashed module, it is possible to have a JSON string to enter via the ESPEasy console.
* ``networkexportconfig,N`` with N being the network adapter index.
* ``networkexportconfig,N,'{....}'`` with N being the network adapter index and the second parameter the literal JSON string as output from the ``networkexportconfig`` command.
.. note::
N.B. the 2nd parameter must be wrapped in quotes which are not used in the JSON string, like single quote or back-ticks. Also the braces must be included.
Examples
--------
Export of network config on a `Waveshare ESP32-P4-NANO <https://www.waveshare.com/esp32-p4-nano.htm>`_ RMII Ethernet adapter set as network index 3:
.. code-block:: none
networkexportconfig,3
{"nwpluginID":3,"enabled":"true","route_prio":150,"fallback":"false","sn_block":"false","start_delay":1000,"en_ipv6":"false","Index":0,"phytype":1,"phyaddr":1,"MDC":31,"MDIO":52,"pwr":51,"clock":1}
To import this exact example:
.. code-block:: none
networkimportconfig,3,`{"nwpluginID":3,"enabled":"true","route_prio":150,"fallback":"false","sn_block":"false","start_delay":1000,"en_ipv6":"false","Index":0,"phytype":1,"phyaddr":1,"MDC":31,"MDIO":52,"pwr":51,"clock":1}`
.. note::
When a parameter is not present in the JSON when importing, the default will be used.
Also when a parameter is not present in the stored config (applies to default values), the key/value pair will not appear in the exported JSON.
Allowed Parameters
------------------
.. csv-table:: Allowed import/export keywords per network plugin.
:header: "Key","Value Type","Description","WiFi STA","WiFi AP","RMII Ethernet","SPI Ethernet","PPP "
:widths: 15, 10, 20, 10, 10, 10, 10, 10
"nwpluginID","int","ESPEasy NWPlugin ID","1","2","3","4","5 "
"enabled","bool","","✔","✔","✔","✔","✔"
"route_prio","int","See “Route Priority”","✔ (100 default)","✔ (10 default)","✔ (50 default)","✔ (50 default)","✔ (20 default)"
"fallback","bool","See “Fallback Interface”","✔","✔","✔","✔","✔"
"sn_block","bool","See “Block Web Access”","✔","✔","✔","✔","✔"
"start_delay","int","See “Delay Startup”","✔","✔","✔","✔","✔"
"en_ipv6","bool","See “Enable IPv6”","✔","✔","✔","✔","✔"
"Index","int","Network Nr on Network tab","1","2","✔","✔","✔"
"phytype","int","Selected chip, see below","","","✔","✔","✔"
"phyaddr","int","Ethernet PHY Address","","","✔","✔",""
"MDC","int","GPIO pin MDC","","","✔","",""
"MDIO","int","GPIO pin MDIO","","","✔","",""
"pwr","int","GPIO pin Power","","","✔","",""
"clock","int","Clock Mode","","","✔","",""
"CS","int","GPIO pin CS","","","","✔",""
"IRQ","int","GPIO pin IRQ","","","","✔",""
"RST","int","GPIO pin Reset","","","","✔","✔"
"ethspibus","int","SPI bus (0 or 1)","","","","✔",""
"serPort","int","ESPEasySerial port enum","","","","","✔"
"RX","int","GPIO pin RX","","","","","✔"
"TX","int","GPIO pin TX","","","","","✔"
"RTS","int","GPIO pin RTS","","","","","✔"
"CTS","int","GPIO pin CTS","","","","","✔"
"DTR","int","GPIO pin DTR","","","","","✔"
"rst_act_low","bool","Reset Active Low","","","","","✔"
"rst_delay","int","Delay after reset in ms","","","","","✔"
"baudrate","int","Baudrate","","","","","✔ (115200 default)"
"apn","string","Access Point Name (APN)","","","","","✔"
"pin","string","PIN of SIM card","","","","","✔"
"IP","string","IP address","✔","✔","✔","✔","✔"
"gw","string","Gateway IP address","✔","✔","✔","✔","✔"
"sn","string","Subnet mask","✔","✔","✔","✔","✔"
"DNS","string","DNS server IP address","✔","✔","✔","✔","✔"
Phy Types
---------
RMII Ethernet:
* LAN8720 = 0
* TLK110 = 1
* RTL8201 = 2
* JL1101 = 3
* DP83848 = 4
* KSZ8041 = 5
* KSZ8081 = 6
* LAN867X = 7
SPI Ethernet:
* DM9051 = 10
* W5500 = 11
* KSZ8851 = 12
PPP:
* generic = 1
* SIM7600 = 2
* SIM7070 = 3
* SIM7000 = 4
* BG96 = 5
* SIM800 = 6
Clock Mode
----------
For ESP32-classic, the clock mode for RMII Ethernet has these options:
* Ext_crystal_osc = 0
* Int_50MHz_GPIO_0 = 1
* Int_50MHz_GPIO_16 = 2
* Int_50MHz_GPIO_17_inv = 3
For ESP32-P4, the clock mode is a bit simpler as the clock pin can only be GPIO 32 / 44 / 50 (default)
and there are only 2 modes, either external crystal or clock generated by the ESP.
* Default = 0
* Ext_crystal (GPIO-50) = 1
* Int_50MHz (GPIO-50) = 2
And the not yet supported other clock GPIO pins:
* Ext_crystal (GPIO-32) = 129 ``(1 | (32 << 2))``
* Int_50MHz (GPIO-32) = 130 ``(2 | (32 << 2))``
* Ext_crystal (GPIO-44) = 177 ``(1 | (44 << 2))``
* Int_50MHz (GPIO-44) = 178 ``(2 | (44 << 2))``
.. note:: Currently only GPIO-50 is supported, but later the other GPIO pins could be used and then these fixed values should be used.
M5Stack ESP32-S3 Atom with W5500 AtomPoE SPI Ethernet
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Make sure SPI is configured with CLK: GPIO-5, MISO: GPIO-7, MOSI: GPIO-8
.. code-block:: none
networkimportconfig,3,'{"nwpluginID":4,"enabled":"true","route_prio":150,"sn_block":"false","start_delay":1000,"en_ipv6":"true","phytype":11,"phyaddr":0,"CS":6,"IRQ":-1,"RST":-1}'