我们使用ESP32+LAN8720的PHY芯片连接以太网。当连接以太网获取IP地址以后,扫描WiFi的AP,在WIFI扫描开始后,会立即出现Ethernet Link Down的事件,在WIFI扫描完成以后,就会立即出现Ethernet Link Up恢复以太网连接。
测试环境说明:
生产用的IDF为4.4.7,现经过测试,IDF5.5也是同样的现象。
目前发现只有在某些特定的交换机或者路由器下面可以复现出来,经过测试,有一款水星的路由器和一款腾达的交换机可以复现这个问题,只要不扫描WIFI,以太网不会断开连接。
这款产品已经出货多年,单以太网连接没出现过稳定性问题。
log如下:
Code: Select all
I (27) boot: ESP-IDF v5.5-dirty 2nd stage bootloader
I (27) boot: compile time Aug 4 2025 10:34:41
I (28) boot: Multicore bootloader
I (28) boot: chip revision: v3.1
I (28) boot.esp32: SPI Speed : 40MHz
I (28) boot.esp32: SPI Mode : DIO
I (29) boot.esp32: SPI Flash Size : 4MB
I (29) boot: Enabling RNG early entropy source...
I (30) boot: Partition Table:
I (30) boot: ## Label Usage Type ST Offset Length
I (31) boot: 0 nvs WiFi data 01 02 00009000 00004000
I (32) boot: 1 otadata OTA data 01 00 0000d000 00002000
I (33) boot: 2 phy_init RF data 01 01 0000f000 00001000
I (33) boot: 3 coredump Unknown data 01 03 00010000 00010000
I (34) boot: 4 ota_0 OTA app 00 10 00020000 00180000
I (35) boot: 5 ota_1 OTA app 00 11 001a0000 00180000
I (36) boot: 6 userdata Unknown data 01 06 00320000 00008000
I (37) boot: End of partition table
I (37) esp_image: segment 0: paddr=00020020 vaddr=3f400020 size=12878h ( 75896) map
I (64) esp_image: segment 1: paddr=000328a0 vaddr=3ff80000 size=00020h ( 32) load
I (64) esp_image: segment 2: paddr=000328c8 vaddr=3ffb0000 size=03e6ch ( 15980) load
I (70) esp_image: segment 3: paddr=0003673c vaddr=40080000 size=098dch ( 39132) load
I (86) esp_image: segment 4: paddr=00040020 vaddr=400d0020 size=845a0h (542112) map
I (271) esp_image: segment 5: paddr=000c45c8 vaddr=400898dc size=0d2b4h ( 53940) load
I (303) boot: Loaded app from partition at offset 0x20000
I (303) boot: Disabling RNG early entropy source...
I (305) cpu_start: Multicore app
I (313) cpu_start: Pro cpu start user code
I (313) cpu_start: cpu freq: 160000000 Hz
I (313) app_init: Application information:
I (314) app_init: App version: 1.1.5
I (314) app_init: Compile time: Aug 4 2025 10:32:42
I (315) app_init: ELF file SHA256: e5012416d6e220a7...
I (316) app_init: ESP-IDF: v5.5-dirty
I (316) efuse_init: Min chip rev: v0.0
I (317) efuse_init: Max chip rev: v3.99
I (318) efuse_init: Chip rev: v3.1
I (319) heap_init: Initializing. RAM available for dynamic allocation:
I (319) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (320) heap_init: At 3FFB8170 len 00027E90 (159 KiB): DRAM
I (321) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (321) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (322) heap_init: At 40096B90 len 00009470 (37 KiB): IRAM
I (325) spi_flash: detected chip: generic
I (325) spi_flash: flash io: dio
I (00:00:00.014) main_task: Started on CPU0
I (00:00:00.025) main_task: Calling app_main()
I (00:00:00.025) main: version = 1.1.5
I (00:00:00.026) main: build Time=[Aug 4 2025 10:44:17]
I (00:00:00.065) esp_eth.netif.netif_glue: a0:b7:65:57:9a:a7
I (00:00:00.067) esp_eth.netif.netif_glue: ethernet attached to netif
I (00:00:01.565) ETH: Event dispatched from event loop base=ETH_EVENT, event_id=0
I (00:00:01.565) ETH: Ethernet Started
I (00:00:01.567) ETH: Event dispatched from event loop base=ETH_EVENT, event_id=2
I (00:00:01.568) ETH: Ethernet Link Up
I (00:00:02.564) esp_netif_handlers: eth ip: 192.168.2.109, mask: 255.255.255.0, gw: 192.168.2.1
I (00:00:02.565) ETH: Event dispatched from event loop base=IP_EVENT, event_id=4
I (00:00:02.566) ETH: Ethernet Got IP Address
I (00:00:02.566) ETH: ~~~~~~~~~~~
I (00:00:02.567) ETH: ETHIP:192.168.2.109
I (00:00:02.568) ETH: ETHMASK:255.255.255.0
I (00:00:02.568) ETH: ETHGW:192.168.2.1
I (00:00:02.569) ETH: ~~~~~~~~~~~
I (00:00:02.569) main: Waiting for Ethernet to get IP...
I (2912) wifi:wifi driver task: 3ffc821c, prio:23, stack:6656, core=0
I (2912) wifi:wifi firmware version: f3dbad7
I (2912) wifi:wifi certification version: v7.0
I (2912) wifi:config NVS flash: enabled
I (2912) wifi:config nano formatting: disabled
I (2912) wifi:Init data frame dynamic rx buffer num: 32
I (2912) wifi:Init static rx mgmt buffer num: 5
I (2912) wifi:Init management short buffer num: 32
I (2912) wifi:Init dynamic tx buffer num: 32
I (2912) wifi:Init static rx buffer size: 1600
I (2912) wifi:Init static rx buffer num: 10
I (2922) wifi:Init dynamic rx buffer num: 32
I (00:00:02.586) wifi_init: rx ba win: 6
I (00:00:02.587) wifi_init: accept mbox: 6
I (00:00:02.587) wifi_init: tcpip mbox: 32
I (00:00:02.587) wifi_init: udp mbox: 6
I (00:00:02.587) wifi_init: tcp mbox: 6
I (00:00:02.588) wifi_init: tcp tx win: 5744
I (00:00:02.589) wifi_init: tcp rx win: 5744
I (00:00:02.589) wifi_init: tcp mss: 1440
I (00:00:02.590) wifi_init: WiFi IRAM OP enabled
I (00:00:02.590) wifi_init: WiFi RX IRAM OP enabled
I (00:00:02.591) main: esp_wifi_init ret = 0
I (00:00:02.593) phy_init: phy_version 4860,6b7a6e5,Feb 6 2025,14:47:07
I (3002) wifi:mode : sta (a0:b7:65:57:9a:a4)
I (3002) wifi:enable tsf
I (00:00:02.674) ETH: Event dispatched from event loop base=WIFI_EVENT, event_id=43
I (00:00:02.675) ETH: Event dispatched from event loop base=WIFI_EVENT, event_id=2
I (00:00:02.676) main: start scan
I (00:00:03.568) ETH: Event dispatched from event loop base=ETH_EVENT, event_id=3
I (00:00:03.569) ETH: Ethernet Link Down
I (00:00:05.094) ETH: Event dispatched from event loop base=WIFI_EVENT, event_id=1
I (00:00:05.095) ETH: sta scan done
I (00:00:05.568) ETH: Event dispatched from event loop base=ETH_EVENT, event_id=2
I (00:00:05.568) ETH: Ethernet Link Up
I (00:00:06.564) esp_netif_handlers: eth ip: 192.168.2.109, mask: 255.255.255.0, gw: 192.168.2.1
I (00:00:06.565) ETH: Event dispatched from event loop base=IP_EVENT, event_id=4
I (00:00:06.566) ETH: Ethernet Got IP Address
I (00:00:06.566) ETH: ~~~~~~~~~~~
I (00:00:06.567) ETH: ETHIP:192.168.2.109
I (00:00:06.568) ETH: ETHMASK:255.255.255.0
I (00:00:06.568) ETH: ETHGW:192.168.2.1
I (00:00:06.569) ETH: ~~~~~~~~~~~
I (00:00:08.034) ETH: Event dispatched from event loop base=IP_EVENT, event_id=3