MPCIe调制解调器QMI接口Internet连接设置

来自Waveshare Wiki
跳转至: 导航搜索

如前一个 QMI 部分所述,新一代 LTE mPCIE 调制解调器提供 HSDPA/3G 和 LTE/4G 无线连接,这些调制解调器默认使用较新的 QMI 接口作为主要连接方法,而不是通过串行或直接 IP 的 PPP与该系列中的早期调制解调器一样,目前最好由 Raspbian Jessie OS 或更高版本支持,因为它支持 libqmi 接口工具。

最新一代的型号已经放弃了对 802.3 成帧数据格式的支持,转而支持 raw-ip 格式,这意味着以前用于较早一代调制解调器的 qmi 连接方法不再有效,我们需要相应地修改连接程序

如果您尝试将连接方法设置为 802-3(按照之前 QMI 帮助文档中的步骤)并且设置没有更改,您将知道您拥有的调制解调器是否不支持 802.3 模式

在本例中,我们将使用 Sierra Wireless MC7455 调制解调器,并首先从调制解调器规则包的 /etc/udev/rules.d 中安装 udev 规则 (20-modem-7304.rules)。这设置了快捷方式引用,使我们能够一致地识别哪些 ttyUSBx 端口执行哪些功能

首先,我们需要通过以下命令安装软件支持包:

apt-get install libqmi-utils udhcpc

这将安装两个主要的实用程序(qmi-cli工具和qmi-network helper程序),它们用于与调制解调器和udhcp包(它支持raw-ip模式)进行交互,并使配置操作系统网络后连接更容易。经过检查,我们已经注册了网络并且有良好的信号,让我们继续连接网络

192.png

这里基本上有4个步骤:

1.设置QMI内核驱动工作在raw-ip模式

2. 确保 wwan0 网络接口已准备就绪

3.连接到蜂窝网络

4.运行一个支持DHCP客户端的raw-ip来配置网络接口和路由/DNS

因此,让我们在此处逐步完成示例连接:

1922.png

ifconfig wwan0 down
ifconfig wwan1 down  # Only needed for Sierra Wireless modems
# Enable OS Raw IP Mode setting (not persistent) 
echo Y > /sys/class/net/wwan0/qmi/raw_ip
ifconfig wwan0 up
# Next line for Jessie OS -- Change APN Name!
qmicli -d /dev/cdc-wdm0 --device-open-net="net-raw-ip|net-no-qos-header" --wds-start-network=your.sim.apn.name.here --client-no-release-cid  
# Next line for Stretch/Buster OS -- Change APN Name!
qmicli -d /dev/cdc-wdm0 --device-open-net="net-raw-ip|net-no-qos-header" --wds-start-network="apn='your.sim.apn.name.here',ip-type=4" --client-no-release-cid  
udhcpc -i wwan0
# Stop Connection
qmicli -d /dev/cdc-wdm0 --wds-stop-network
ifconfig wwan0 down
# Stop Connection
qmicli -d /dev/cdc-wdm0 --wds-stop-network
ifconfig wwan0 down

您会看到,一旦建立网络连接,只需通过 udhcp 客户端配置网络接口,这具有自动配置路由和 DNS 的好处。

请注意,一旦网络连接断开,接口将需要关闭(通过使用 ifconfig wwan0 down 来更正路由/DNS 配置。

我们仍然可以利用 qmi-network 帮助程序,但在我们这样做之前,我们必须修改它以使用新的原始 ip 设置,如上所示。下面显示了您需要进行的更改,我们创建了一个新版本,其中包含所有编辑以及通常的连接监控程序和 wwan0 接口文件(请参阅页面底部的下载链接)。

这是使用的命令和对原始文件所做的编辑,请注意,这在 Raspbian Stretch 上略有变化,因为操作系统引入了更新版本的 qmi-network 程序,其中包含一个漏洞,因此对于 Stretch 附加行需要更改(请参阅链接更多信息)。

cp /usr/bin/qmi-network /usr/local/bin/qmi-network-raw
vim /usr/local/bin/qmi-network-raw

编辑Raspbian Jessie

1923.png

Raspbian Stretch/Buster 1924.png

接下来,我们需要通过创建并添加一行到 /etc/qmi-network.conf 来设置 SIM APN 配置 - 请咨询您的运营商以获取正确的 APN 名称并将其插入到配置文件中,如下所示:

echo "APN=your.sim.apn.name.here" >/etc/qmi-network.conf

所以现在我们可以使用下面的命令来手动启动和停止网络连接

#开始连接
ifconfig wwan0 down
ifconfig wwan1 down  # Only needed for Sierra Wireless modems
qmi-network-raw /dev/cdc-wdm0 start
udhcpc -i wwan0
#停止连接
qmi-network-raw /dev/cdc-wdm0 stop
ifconfig wwan0 down

关于启用原始 IP 模式,请注意在启动时 wwan 接口通常处于启用状态但处于断开状态(通常使用 169.254.x.x. 地址)并且在您可以更改 /sys/class/net/wwan0/qmi/raw_ip 设置之前, 这需要在每次启动时执行,因为它不是持久的,所有调制解调器 wwan 接口都需要关闭(因此 ifconfig wwanx down 语句)。

与大多数与 Linux 相关的任务一样,实现某事的方法不止一种,在这种情况下,一种更简洁但更复杂的记录方法是安装 sysfsutils 包并将此设置放在 /etc/sysfs.conf 中,因此值得研究 .

即使连接到互联网,modemAT 串行接口仍然可以正常使用与调制解调器交互或发送 SMS 消息。

通过使用以下行创建配置文件 /etc/network/interfaces.d/wwan0 可以自动执行上述步骤顺序:

iface wwan0 inet manual
    pre-up ifconfig wwan0 down
    pre-up ifconfig wwan1 down # only needed if the modem presents two wwan interfaces
    pre-up for _ in $(seq 1 10); do /usr/bin/test -c /dev/cdc-wdm0 && break; /bin/sleep 1; done
    pre-up for _ in $(seq 1 10); do /usr/bin/qmicli -d /dev/cdc-wdm0 --nas-get-signal-strength && break; /bin/sleep 1; done
    pre-up /usr/local/bin/qmi-network-raw /dev/cdc-wdm0 start
    pre-up udhcpc -i wwan0
    post-down /usr/local/bin/qmi-network-raw /dev/cdc-wdm0 stop

在这种情况下,wwan0将尝试在每次ifup wwan0事件时建立一个蜂窝连接,这取决于DHCP进程需要多长时间,接口可能需要一段时间来获得一个可用的IP地址用于网络使用。见下面完成的示例

1925.png

下面显示了其他的命令,有关更多信息,请参阅man qmicli

qmicli -d /dev/cdc-wdm0 --nas-get-signal-info
qmicli -d /dev/cdc-wdm0 --nas-get-signal-strength
qmicli -d /dev/cdc-wdm0 --nas-get-home-network
qmicli -d /dev/cdc-wdm0 --nas-get-serving-system
qmicli -d /dev/cdc-wdm0 --dms-uim-verify-pin=PIN,0000
qmi-network /dev/cdc-wdm0 status
qmicli -d /dev/cdc-wdm0  --wds-get-packet-service-status

为了帮助获得和维护连接的过程,我们创建了一个示例程序集,可以作为引导过程的一部分运行,以自动化和监督调制解调器连接,请使用下面的链接下载这些程序

值得阅读有关调制解调器故障排除,因为这涵盖了建立和维护网络连接的更常见问题