3

OpenWRT使用4G/5G无线网卡模块上网

 1 year ago
source link: https://www.wyr.me/post/699
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

由于无线上网卡驱动的完善,随着内核的更新大部分的4G/5G无线网卡得到免驱支持。

OpenWRT社区包含了大量的无线网卡驱动,其中不乏4G/5G模块,现如今市面上常见的模块型号都得到了支持。

如果在其它Linux发行版使用4G/5G模块,请参考《Linux使用4G/5G无线网卡模块上网》

将4G/5G开发板插入设备,终端输入lsusblspci,看设备是否识别到4G/5G模块。

$ lsusb
Bus 001 Device 001: ID 05c6:6001 Qualcomm, Inc. Mass Storage Device

以树莓派4(Raspberry4)中安装的OpenWRT为例,上述命令显示设备识别到高通芯片的4G模块(USB无线网卡)。

如果你也在树莓派4中使用4G/5G网卡,还可以参考:《树莓派4使用OTG功能变身有线网卡》

查看驱动加载情况

OpenWRT对3G/UMTS/4G/LTE/5G/Phone网卡的驱动方式,一共有以下几种:

  • RNDIS
  • 串口/专有驱动

查看dmesg信息,确认模块驱动加载情况。不同的4G/5G网卡,加载的驱动模式可能有差异。通常情况下,4G无线网卡包含两个模式,一个CD存储模式,另一个是Modem模式(调制解调器模式)。5G模块的无线网卡通常走USB Type-C,具有专门的驱动。

$ dmesg

如果usb模式切换正常,通常可以看到输出内容包含:

GSM modem

否则,可能只识别到USB Storage device或者CD-ROM。这种情况下,需要安装usb-modeswitch等库,并设置切换网卡运行模式。

如果只识别到USB设备而没有对应驱动,需要对OpenWRT内核编译选项进行配置。如果看到GSM相关字眼(跳过内核编译,说明固件已经支持该模块),那么直接执行ifconfig -a查看是否有wwan0usb之类的网卡名称。

很多情况下一些依赖的相关驱动需要安装后才会出现网卡。

例如执行lsusb时找到设备为高通4G卡托:

Bus 001 Device 006: ID 05c6:9008 Qualcomm, Inc. Gobi Wireless Modem (QDL mode)

执行RNDIS相关依赖安装:

opkg update
opkg install kmod-usb-net-rndis usb-modeswitch

重启设备。

重启后如果dmesg输出内容包含RNDIS device,则说明已经被识别为RNDIS设备,将匹配为一个安卓手机来进行上网。

这时执行lsusb就可以看到USB设备已经变为:

Bus 001 Device 006: ID 05c6:902d Android Android

这时USB 4G上网卡托则被识别为安卓设备,同时ifconfig -a出现usb0网卡。

内核编译选项

### USB Net Drivers
CONFIG_PACKAGE_kmod-usb-net=y
CONFIG_PACKAGE_kmod-usb-net-asix=y
CONFIG_PACKAGE_kmod-usb-net-asix-ax88179=y
CONFIG_PACKAGE_kmod-usb-net-rtl8152=y
CONFIG_PACKAGE_kmod-usb-net-cdc-eem=y
CONFIG_PACKAGE_kmod-usb-net-cdc-ether=y
CONFIG_PACKAGE_kmod-usb-net-cdc-mbim=y
CONFIG_PACKAGE_kmod-usb-net-cdc-ncm=y
CONFIG_PACKAGE_kmod-usb-net-cdc-subset=y
CONFIG_PACKAGE_kmod-usb-net-dm9601-ether=y
CONFIG_PACKAGE_kmod-usb-net-hso=y
CONFIG_PACKAGE_kmod-usb-net-huawei-cdc-ncm=y
CONFIG_PACKAGE_kmod-usb-net-ipheth=y
CONFIG_PACKAGE_kmod-usb-net-kalmia=y
CONFIG_PACKAGE_kmod-usb-net-kaweth=y
CONFIG_PACKAGE_kmod-usb-net-mcs7830=y
CONFIG_PACKAGE_kmod-usb-net-pegasus=y
CONFIG_PACKAGE_kmod-usb-net-pl=y
CONFIG_PACKAGE_kmod-usb-net-qmi-wwan=y
CONFIG_PACKAGE_kmod-usb-net-rndis=y
CONFIG_PACKAGE_kmod-usb-net-sierrawireless=y
CONFIG_PACKAGE_kmod-usb-net-smsc95xx=y
CONFIG_PACKAGE_kmod-usb-net-sr9700=y
CONFIG_PACKAGE_kmod-usb-net2280=y

### USB Storage Drivers
CONFIG_PACKAGE_kmod-usb-ohci=y
CONFIG_PACKAGE_kmod-usb-ohci-pci=y
CONFIG_PACKAGE_kmod-usb-printer=y
CONFIG_PACKAGE_kmod-usb-storage=y
CONFIG_PACKAGE_kmod-usb-storage-extras=y
CONFIG_PACKAGE_kmod-usb-storage-uas=y
CONFIG_PACKAGE_kmod-usb-uhci=y
CONFIG_PACKAGE_kmod-usb2=y
CONFIG_PACKAGE_kmod-usb2-pci=y
CONFIG_PACKAGE_kmod-usb3=y

# 3G/4G/5G Drivers & Utilities
CONFIG_PACKAGE_comgt-ncm=y
CONFIG_PACKAGE_comgt=y
CONFIG_PACKAGE_kmod-mii=y
CONFIG_PACKAGE_kmod-usb-acm=y
CONFIG_PACKAGE_kmod-usb-serial=y
CONFIG_PACKAGE_kmod-usb-serial-option=y
CONFIG_PACKAGE_kmod-usb-serial-wwan=y
CONFIG_PACKAGE_luci-proto-3g=y
CONFIG_PACKAGE_luci-proto-ncm=y
CONFIG_PACKAGE_luci-proto-qmi=y
CONFIG_PACKAGE_qmi-utils=y
CONFIG_PACKAGE_umbim=y
CONFIG_PACKAGE_uqmi=y
CONFIG_PACKAGE_usb-modeswitch=y

# Mobile Network Sharing
CONFIG_PACKAGE_libimobiledevice-utils=y
CONFIG_PACKAGE_libplist-utils=y
CONFIG_PACKAGE_libudev-fbsd=y
CONFIG_PACKAGE_libusbmuxd-utils=y
CONFIG_PACKAGE_usbmuxd=y

# Kmods
CONFIG_PACKAGE_kmod-rtl8187=y
CONFIG_PACKAGE_kmod-rtl8188eu=y
CONFIG_PACKAGE_kmod-rtl8192c-common=y
CONFIG_PACKAGE_kmod-rtl8192cu=y
CONFIG_PACKAGE_kmod-rtl8192du=y
CONFIG_PACKAGE_kmod-rtl8812au-ac=y
CONFIG_PACKAGE_kmod-rtl8821cu=y
CONFIG_PACKAGE_kmod-rtl88x2bu=y
CONFIG_PACKAGE_kmod-rtlwifi=y
CONFIG_PACKAGE_kmod-rtlwifi-usb=y
CONFIG_PACKAGE_kmod-usb-net-rtl8150=y
CONFIG_PACKAGE_kmod-usb-net-rtl8152=y

上述配置项包含了常见的3G/4G/5G模块所依赖的配置信息。其中最为关键的是usb-modeswitch模块的配置。

按照上述配置项编译后,即可正常识别上网模块。如果仍然无法识别,需要根据设备ID查找对应驱动,可参考《Linux安装无线网卡驱动通用方法》

OpenWRT.png

常见的4G模块是通电即能联网,无需手工配置拨号信息。这类模块在ifconfig -a中直接体现了wwan0usb之类的网卡名称。但由于OpenWRT默认没有对网卡启用DHCP Client,因此不会看到被分配的IP信息。这种情况下我们只需要在UI管理界面的接口-新建接口,输入一个你喜欢的wan口名称,并选择协议为DHCP客户端,选中对应的网卡,新建后修改-网卡防火墙,选择wan保存。之后就可以看到接口界面该网卡获得了IP地址,客户端即可正常上网。【USB模块里最常见情况】

另外一种情况通常是给开发人员提供的4G/5G模块,是需要依赖一个上位机系统才能完成拨号并正常上网的。这类模块的表现就是直接给模块通电是无法正常上网的,需要配置拨号信息。例如移远等各类开发板使用的LTE模块、GL.iNet的各类LTE模块、给自助设备/嵌入式设备使用的4G模块、大部分的PCIe接口的LTE模块。这种情况需要使用qmi模块进行拨号上网。

opkg install usb-modeswitch kmod-mii kmod-usb-net kmod-usb-wdm kmod-usb-net-qmi-wwan uqmi luci-proto-qmi

安装上述模块后,进入GUI管理界面,接口-新建接口,输入一个你喜欢的wan口名称,并选择协议为QMI 蜂窝(不同版本翻译的名称不一样,带QMI即可),新建后修改-网卡防火墙,选择wan保存。修改,设备地址输入/dev/cdc-wdm0(通常是这个,看dmesg输出的结果),APN根据卡片来(联通 3gnet、移动 cmnet、电信ctnet)。保存后查看是否能成功拨号。

其它特殊模块参考官方文档https://openwrt.org/docs/guide-user/network/wan/wwan/ltedongle

具体的手动拨号方法参见《OpenWRT使用4G卡托拨号上网》。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK