轶哥

📚 Having fun with AI Agent. Always learning.

    OpenWRT使用4G/5G无线网卡模块上网
    •   更新:2022-05-17 16:38:29
    •   首发:2022-03-27 20:46:19
    •   教程
    •   34996

    由于无线上网卡驱动的完善,随着内核的更新大部分的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网卡的驱动方式,一共有以下几种:

    • QMI
    • NCM
    • 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卡托拨号上网》。

    打赏
    交流区

    暂无内容

    尚未登陆
    发布
      上一篇 (Powershell7 中文乱码问题解决)
    下一篇 (CentOS 8 升级 RHEL 8)  

    评论回复提醒