ESP32连接以太网后,扫描AP会导致以太网连接断开

xsp1989
Posts: 6
Joined: Tue Mar 17, 2020 8:13 am

ESP32连接以太网后,扫描AP会导致以太网连接断开

Postby xsp1989 » Mon Aug 04, 2025 3:10 am

问题说明:
我们使用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
附件是一个demo程序,在我这边环境可以复现这个问题。
Attachments
eth_apscan.zip
(25.14 KiB) Downloaded 51 times

Who is online

Users browsing this forum: No registered users and 3 guests