Skip to content

WT32 ETH01

martin-ger edited this page Mar 27, 2026 · 2 revisions

WT32-ETH01 (Ethernet Uplink)

The firmware supports the WT32-ETH01 board, which uses a wired Ethernet (LAN8720) uplink instead of WiFi STA. In this mode the ESP32 receives its upstream connection via the RJ45 Ethernet port and provides a WiFi AP for clients.

Other WT32-ETH01 Projects

If you are looking for a plain ESP32 Ethernet AP (Layer 2 bridge), check out the esp32_eth_wifi_bridge. There is also "reverse" version, the esp32_ethernet_router with WiFi STA as uplink (Internet) and Ethernet as downlink (LAN).

Hardware

The WT32-ETH01 is an ESP32-based board with an integrated LAN8720 Ethernet PHY:

Component Details
Chip ESP32 with integrated Ethernet MAC (EMAC)
PHY LAN8720 Ethernet PHY
PHY Power GPIO 16 (active high)
MDC GPIO 23
MDIO GPIO 18
PHY Address 1

Note: GPIO 0 is used by the Ethernet clock on this board, so the BOOT button factory reset is not available. Use the factory_reset CLI command or esptool.py erase_flash instead.

Building

The Ethernet variant requires an additional sdkconfig defaults file:

idf.py -B build_eth -D 'SDKCONFIG_DEFAULTS=sdkconfig.defaults;sdkconfig.defaults.wt32_eth01' build

To flash and monitor:

idf.py -B build_eth -p /dev/ttyUSB0 flash monitor

The multi-target build script also builds the ETH variant automatically:

./build_all_targets.sh

Flashing Pre-built Binaries

esptool.py --chip esp32 \
--before default_reset --after hard_reset write_flash \
-z --flash_mode dio --flash_freq 40m --flash_size detect \
0x1000 firmware_wt32_eth01/bootloader.bin \
0x8000 firmware_wt32_eth01/partition-table.bin \
0x10000 firmware_wt32_eth01/esp32_nat_router.bin

First Boot

After flashing, the WT32-ETH01 will:

  1. Create an open WiFi AP with SSID "ESP32_NAT_Router"
  2. Wait for Ethernet link on the RJ45 port
  3. Obtain an IP address via DHCP on the Ethernet interface (or use static IP if configured)

Connect to the AP and open http://192.168.4.1 to configure.

Differences from the WiFi Build

Web Interface

  • The Getting Started (/setup) and WiFi Scan (/scan) pages are removed
  • The Configuration page does not show Station Settings (no upstream WiFi to configure)
  • The Configuration page adds an AP Channel field (0 = auto, 1-13 = fixed) since the AP channel is not constrained by an upstream WiFi connection
  • Port mappings show "ETH (Ethernet)" instead of "STA (WiFi)" as the interface option
  • The status page shows "Ethernet Connected/Disconnected" instead of WiFi signal strength

CLI Commands

Command WiFi Build ETH Build
set_sta Available Not available
set_sta_mac / set_mac Available Not available
scan Available Not available
set_ap_mac Available Available
set_ap_channel Not available Available (0=auto, 1-13)

All other commands work identically: set_ap, set_sta_static (for ETH static IP), portmap, dhcp_reserve, acl, pcap, set_vpn, remote_console, set_led_gpio, set_ttl, set_hostname, etc.

AP Channel Selection

Since the Ethernet uplink doesn't constrain the WiFi channel (unlike STA mode where the AP must use the same channel as the upstream network), you can explicitly set the AP WiFi channel:

set_ap_channel 6       # Use channel 6
set_ap_channel 0       # Auto-select (default)
set_ap_channel         # Show current setting

Changes require a restart.

Static IP for Ethernet

To use a static IP on the Ethernet uplink instead of DHCP:

set_sta_static 192.168.1.100 255.255.255.0 192.168.1.1

To revert to DHCP:

set_sta_static dhcp

Changes require a restart.

Feature Support

All major features work with the Ethernet variant:

Feature Status
NAT Routing
WireGuard VPN
DHCP Reservations
Port Forwarding ✅ (interface shows as "ETH")
Firewall (ACL)
PCAP Capture
Remote Console
MCP Bridge
Web Interface ✅ (without /setup and /scan pages)
LED Status
BOOT Button Reset ❌ (GPIO 0 used by ETH clock)
WiFi Scan ❌ (no WiFi STA)
WPA2-Enterprise ❌ (no WiFi STA)

Customizing GPIO Pins

The default pin configuration matches the WT32-ETH01 board. If you use a different board with a LAN8720 PHY, adjust the pins via idf.py menuconfig under NAT Router Uplink, or edit sdkconfig.defaults.wt32_eth01:

CONFIG_ETH_UPLINK=y
CONFIG_ETH_MDC_GPIO=23
CONFIG_ETH_MDIO_GPIO=18
CONFIG_ETH_PHY_ADDR=1
CONFIG_ETH_PHY_POWER_GPIO=16

Set CONFIG_ETH_PHY_POWER_GPIO to -1 if your board does not use a power control GPIO for the PHY.

Clone this wiki locally