USB Host EC801E ECM 示例

功能说明

演示如何在 ARCS EVB 上使用 CherryUSB Host 接入移远 EC801E,并通过 USB AT 接口自动修复 USB 网卡配置后,再通过 USB ECM 模式把模块当作网卡使用。

本示例复用了 CherryUSB 已有的:

  • class/cdc/usbh_cdc_ecm.c

  • platform/lwip/usbh_lwip.c

示例本身负责:

  1. 初始化 ARCS USB Host PHY

  2. 在 USB 初始化前调用 tcpip_init(NULL, NULL)

  3. 通过 USB 接口 3(AT 接口)发送 AT 命令

  4. 自动检查并修复 usbnet=1nat=1

  5. 必要时通过 AT+CFUN=1,1 触发一次重启并等待重新枚举

  6. 通过 AT+QNETDEVCTL=3,1,1 拉起 USB 网卡连接

  7. 等待 ECM 网卡枚举完成、DHCP 获取 IPv4 地址

  8. 优先使用 DHCP 下发的 DNS 做 UDP DNS 探测,失败后回退到阿里公共 DNS 223.5.5.5

  9. ntp1.aliyun.com:123 做 UDP NTP 探测

  10. www.baidu.com:80 做 TCP connect 和 HTTP GET 探测

本示例不接入 components/lisa_modem,目标只是先验证 EC801E 的 USB ECM 数据面是否可用。

硬件连接

开发板

  • ARCS EVB 开发板(Host 端)x 1

USB Host 硬件修改

开发板 USB_ARCS Type-C 接口默认工作在 Device 模式,作为 Host 使用必须完成以下修改:

  • VBUS 直接供电 5V

  • CC1 接 22K 上拉到 VBUS

  • CC2 接 22K 上拉到 VBUS

模块连接

  • EC801E USB 口接到 ARCS EVB 的 USB_ARCS

  • 线材必须支持数据通信

EC801E 前置条件

参考 Quectel_LTE_StandardE系列_AT命令手册_V1.3.pdf

AT+CGDCONT=1,"IP","<your_apn>"

含义:

  • CGDCONT=1,...:为 cid=1 定义 PDP 上下文和 APN

注意:

  • 本示例假设 cid=1CGDCONT/APN 已经有效,不会自动改写 APN

  • 本示例会通过 USB AT 接口自动修复 usbnet=1nat=1 并执行 AT+QNETDEVCTL=3,1,1

  • AT+QCFG="usbnet"AT+QCFG="nat" 为重启生效,所以 sample 可能主动触发一次模块重启

  • ECM 枚举和 DHCP 成功只说明 USB 网卡链路正常,不等于公网数据一定可用

  • 示例默认使用中国区可达目标:AliDNS、阿里云 NTP、百度 HTTP

USB 描述符要点

参考 Quectel_ECx00ZEC801EEG800Z系列_USB描述符介绍_V1.1.pdf

  • VID:PID = 0x2c7c:0x0903

  • Interface 0: ECM control

  • Interface 1: ECM data

  • Interface 2: vendor bulk interface

  • Interface 3: AT

  • Interface 4: Modem

本 sample 使用:

  • Interface 3 作为 USB AT 通道

  • Interface 0 和 1 作为 ECM 网卡通道

编译

./build.sh -S samples/subsys/usb/host/cherryusb_ec801e_ecm -C -DBOARD=arcs_evb

预期输出

========================================
  CherryUSB Host EC801E ECM Example
========================================
[INFO] Initializing lwIP core...
[INFO] Initializing USB Host...
[INFO] Preparing EC801E over USB AT interface...
[AT] Waiting for EC801E USB AT interface (intf=3)...
[AT] Using USB AT interface 3 via /dev/ttyUSBx
[AT] usbnet=1
[AT] nat=1
[AT] QNETDEVCTL type=3 cid=1 urc=1 state=1
[AT] EC801E USB AT preparation complete
[NET] Waiting for ECM netif and DHCP lease...
[I/usbh_core] New device found,idVendor:2c7c,idProduct:0903,...
[I/usbh_core] Loading cdc_ecm class driver on interface 0
[NET] ECM netif is ready
[NET] IPv4 Address : x.x.x.x
[NET] IPv4 Netmask : x.x.x.x
[NET] IPv4 Gateway : x.x.x.x
[NET] DNS[0]       : x.x.x.x
[NET] UDP_DNS=PASS
[NET] UDP_NTP=PASS
[NET] TCP_CONNECT=PASS
[NET] HTTP_GET=PASS
[NET] ECM internet probe passed