网络相关

  • network
  • RNDIS
  • USBH_CDC
  • esp_hosted
  • SDIO

基于esp-iot-bridge/examples/wireless_nic工程,配置模块开启 AP 模式并通过 USB 提供网络接入,实测发现 PC / 手机接入 AP 的 IP 为 192.168.5.2、USB 连接的 MCU IP 为 192.168.4.2,二者分属不同网段,现需实现 PC / 手机对 MCU 的跨网段远程控制,该需求是否可实现?

​ 可以实现,网卡 IP 为 192.168.4.2,终端(PC / 手机)接入模块 AP 属 5 网段,由终端(PC / 手机)发送的数据会经模块内部会转发至 192.168.4.1,二者可互 ping 通,从而实现跨网段通信。

ESP32-S3 搭配 EG800AK,通过 USB RNDIS 上网时,一进入 Light-sleep 就断网;有没有既降功耗又保持网络不断开的办法?

进入 Light-sleep 后,APBUSB PHY 时钟都会关闭,USB 相关控制器无法继续正常工作,因此 USB 网络连接中断是由底层硬件机制决定的,无法在保持 USB 网络不断开的同时进入浅睡眠。

可选方案如下:

  1. 改用 Wi-Fi + Light-sleep 的组合方案。
  2. 使能 CONFIG_USJ_NO_AUTO_LS_ON_CONNECTION 选项,在 USB 连接存在时不进入睡眠,但这会增加功耗。
  3. 更换 4G 接口方案,改用 UART 通信而不是 USB。

参考文档:
https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32s3/api-guides/usb-serial-jtag-console.html#id7

使用 RNDIS 联网时,组件打印 USBH_CDC / usbh_rndis 查询连接状态失败日志,这是什么问题?

如果日志类似如下:

E (1490825) USBH_CDC: usbh_cdc_send_custom_request(1024): CTRL transfer failed
E (1490825) usbh_rndis: usbh_rndis_query_msg_request(103): Failed to send query message
E (1490835) usbh_rndis: usbh_rndis_get_connect_status(153): Failed to query OID_GEN_MEDIA_CONNECT_STATUS
W (1490835) usbh_rndis: Failed to get connect status

这是 ESP 端通过控制端点定时查询 4G 模组连接状态时,4G 模组没有正确回应导致的。部分 4G 模组不支持这种查询方式。

理论上这类日志不影响实际通信。后续官方可能会把该查询改成可选项;当前如需规避日志,可以临时注释掉对应报错处的代码。

使用 WT99P4C5-S1 开发板烧录并运行指定 DEMO 后,出现报错 E (2043) HS_MP: mempool create failed: no mem,原因是什么?如何处理?

该问题通常是工程 main/idf_component.yml 中没有限制 esp_hosted 版本,构建时自动解析到较新的 2.12.8 版本导致的。

该版本在当前工程环境下启动 ESP-Hosted 时,对 SDIO mempool 所需内存的分配需求更高或限制更严格,导致 sdio_mempool_create() 内存申请失败并触发断言。

处理方法是将工程 main/idf_component.yml 中的 esp_hosted 版本固定为 2.7.2,再重新执行清理和构建。