USB PPP

[English]

PPP 是一种网络中最为基础的协议。PPP 协议(Point-to-Point Protocol) 是一种数据链路层协议,它是为在同等单元之间传输数据包这样的简单链路而设计的。这种链路提供全双工操作,并按照顺序传递数据包。PPP 为基于各种主机、网桥和路由器的简单连接提供一种共通的解决方案。

iot_usbh_modem 组件实现了 USB 主机 PPP 拨号的全流程。支持通过 USB 接口连接 4G Cat.1/4 模块,实现 PPP 拨号上网。支持通过 Wi-Fi softAP 热点共享互联网给其他设备。

特性:
  • 快速启动

  • 支持热插拔

  • 支持 Modem+AT 双接口(需要模组支持)

  • 支持 PPP 标准协议 (大部分 4G 模组均支持)

  • 支持 4G 转 Wi-Fi 热点

  • 支持 NAPT 网络地址转换

  • 支持电源管理

  • 支持网络自动恢复

  • 支持卡检测、信号质量检测

  • 支持网页配置界面

已支持的模组型号:

下表是已经支持的 4G 模组型号,可直接在 menuconfig 中通过宏 MODEM_TARGET 配置,如配置后不生效,请直接在 menuconfig 中选择 MODEM_TARGET_USER 并手动配置 ITF 接口。

备注

同一个模组可能存在多个功能固件,具体请咨询模组厂商是否支持 PPP 拨号。

模组型号

ML302-DNLM/CNLM

NT26

EC600NCNLC-N06

AIR780E

MC610_EU

EC20_CE

EG25_GL

YM310_X09

SIM7600E

A7670E

SIM7070G

SIM7080G

设置 PPP 接口

PPP 接口一般为 USB CDC 接口,一定具有一个 CDC data 接口,包含两个 bulk 端点,用于输入和输出数据。可能具有一个 CDC notify 接口,包含一个 interrupt 端点。本应用代码中并不使用该接口。

PPP 接口可用于传输 AT 指令和 PPP 数据传输,通过发送 “+++” 数据进行切换。

示例描述符

大部分的 PPP 接口的 bInterfaceClass 都为 0xFF (Vendor Specific Class)。如下图改 USB 设备的 PPP 接口的 bInterfaceNumber 为 0x03。

示例 USB 描述符:

备注

以下描述符为示例,并非所有的描述符都如下,可能带有 IAD 接口描述符或者不具有 interrupt 端点。

*** Interface descriptor ***
bLength 9
bDescriptorType 4
bInterfaceNumber 3
bAlternateSetting 0
bNumEndpoints 3
bInterfaceClass 0xff
bInterfaceSubClass 0x0
bInterfaceProtocol 0x0
iInterface 8
        *** Endpoint descriptor ***
        bLength 7
        bDescriptorType 5
        bEndpointAddress 0x8a   EP 10 IN
        bmAttributes 0x3        INT
        wMaxPacketSize 16
        bInterval 16
        *** Endpoint descriptor ***
        bLength 7
        bDescriptorType 5
        bEndpointAddress 0x82   EP 2 IN
        bmAttributes 0x2        BULK
        wMaxPacketSize 64
        bInterval 0
        *** Endpoint descriptor ***
        bLength 7
        bDescriptorType 5
        bEndpointAddress 0x1    EP 1 OUT
        bmAttributes 0x2        BULK
        wMaxPacketSize 64
        bInterval 0

当我们找到了 PPP 接口后,可以配置 MODEM_TARGETMODEM_TARGET_USER,并配置 MODEM_USB_ITF 为 PPP 接口的 bInterfaceNumber。

双 PPP 接口

为了保证数据传输时还能传输 AT 指令,可以使用两个 PPP 接口,一个用于传输数据,一个用于传输 AT 指令。需要额外的配置 MODEM_USB_ITF2

备注

是否具有第二个 AT 指令接口,要视设备而定。