网络相关
基于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 后,APB 和 USB PHY 时钟都会关闭,USB 相关控制器无法继续正常工作,因此 USB 网络连接中断是由底层硬件机制决定的,无法在保持 USB 网络不断开的同时进入浅睡眠。
可选方案如下:
- 改用
Wi-Fi + Light-sleep的组合方案。 - 使能
CONFIG_USJ_NO_AUTO_LS_ON_CONNECTION选项,在 USB 连接存在时不进入睡眠,但这会增加功耗。 - 更换 4G 接口方案,改用
UART通信而不是 USB。
使用 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,再重新执行清理和构建。