# NT26 USB ECM 4G HTTP 下行测速示例 ## 功能说明 本示例用于测试 NT26 模组通过 USB CDC ECM 网卡进行 4G HTTP 下载时的下行吞吐能力。 与 `modem_usb_speed` 不同,本示例只通过 USB AT 接口完成模组配置、驻网和信号查询;DNS、TCP 连接、HTTP 请求和数据接收全部使用 lwIP socket,经 USB ECM 数据面传输。 启动流程如下: 1. 初始化 lwIP 和 CherryUSB Host 2. 通过 NT26 USB AT 接口检查 `usbnet=1`、`nat=1` 3. 配置变化时执行 `AT+CFUN=1,1`,等待模组重新枚举 4. 等待 SIM 卡就绪和蜂窝网络注册 5. 通过 `AT+QNETDEVCTL=3,1,1` 启动 ECM 网络 6. 等待 ECM netif 获取 DHCP 地址,并将其设为默认路由 7. 通过 ECM 下载测试文件,打印实时速率、总大小、总耗时和平均速率 ## 配置说明 `prj.conf` 参考 `apps/snap-learn/net_4g.conf`,启用了: - CherryUSB Host CDC ECM netif - NT26 USB AT 控制接口 - USB ECM TCP 参数调优 `CONFIG_LWIP_USB_ECM_TUNING` - PSRAM RX pbuf `CONFIG_CHERRYUSB_HOST_LWIP_RX_PSRAM` - 8 KiB USB 串口接收缓存 示例是单网卡环境,因此在 DHCP 成功后由示例显式设置 ECM 默认路由,不依赖产品工程的多网卡管理器。 ## 硬件连接与上电 - 当前面向 HK626 V1 snap-learn 板载 NT26 模组 - 示例启动时将 PB6 持续拉低以释放板级 `RESET_N`,并将 PB2 持续拉低保持模组唤醒 - 外接 NT26 时,将模组 USB 口连接到开发板 `USB_ARCS` - USB Host 端必须能够向模组提供稳定的 5 V VBUS,线材必须支持数据通信 - 当前匹配的 USB 设备为 `VID:PID=0x3505:0x0003`,AT 接口为 `intf=3` ## 测试地址 默认下载地址定义在 `src/main.c`: ```c #define SPEEDTEST_URL_CUSTOMER \ "http://test-qiniu-oss1.phone580.net/fzs-box/rk3308ota/music/yiqiannianyihou.mp3" ``` 当前示例仅支持 `http://` URL。更换地址时应使用返回 `200 OK` 的直链,避免重定向影响结果。 ## 编译 在仓库根目录执行: ```bash ./build.sh -C \ -S arcs-sdk/samples/network/modem_usb_ecm_speed \ -B build/modem_usb_ecm_speed \ -DBOARD=arcs_evb ``` ## 预期输出 ```text [I/4g.ecm.speed] NT26 USB ECM 4G HTTP downlink speed test [I/4g.ecm.speed] lwIP core initialized [I/4g.ecm.backend] NT26 registered on cellular network (stat=1) [I/4g.ecm.backend] QNETDEVCTL type=3 cid=1 urc=1 state=1 [I/4g.ecm.backend] NT26 ECM ready: IPv4=x.x.x.x gateway=x.x.x.x [I/4g.ecm.speed] start customer over USB ECM: http://... [I/4g.ecm.speed] customer progress: total=... bytes interval=... KiB/s [I/4g.ecm.speed] customer result: [I/4g.ecm.speed] total size: ... bytes (... MiB) [I/4g.ecm.speed] total time: ... ms (... s) [I/4g.ecm.speed] average speed: ... KiB/s (... Mbps) ``` ## 注意事项 1. 示例不会修改 APN,要求 NT26 的 `cid=1` PDP 上下文已正确配置。 2. 第一次运行如果需要切换 USB ECM/NAT 配置,模组会自动重启并重新枚举一次。 3. 测速结果受运营商网络、信号强度、服务器出口带宽和测试文件缓存状态影响。 4. 如果 DHCP 长时间未完成,请先确认 SIM 卡已注册网络,并检查 `AT+QNETDEVCTL?` 是否返回 `3,1,1,1`。