5G PCIe网卡

本文以连接RM520N-GL PCIe网卡为例,介绍如何在Quectel Pi H1智能主控板上通过PCIe接口连接5G网卡,并完成网络配置和拨号上网。

硬件接口及准备

image-20251126135111447

开始操作前,请确认已准备好以下硬件:

  • Quectel Pi H1智能主控板
  • RM520N-GL PCIe网卡
  • PCIe转接线
  • Type-C-to-Type-A USB数据线
  • 5G天线
  • 有效的SIM卡

快速开始

连接硬件

  1. 将RM520N-GL PCIe网卡转接线完全均匀地插入智能主控板的PCIe端口。
  2. 从两侧向下推动PCIe接口支架,确保PCIe转接线牢牢固定到位。
  3. 使用TYPE-C To USB线连接至Windows PC。初次使用可能需要安装USB驱动(驱动文件由模块技术支持提供,请根据模块型号选择正确的驱动文件)。

功能使用

PCIe模块配置

使用PCIe直通转接卡时,必须把模块设置成PCIe-EP模式,否则无法与Quectel Pi H1的PCIe接口通信。安装模块驱动后,通过转接板的USB口连接5G模块,输入AT指令,将其切换到PCIe-EP模式,操作如下:

连接AT端口

  1. 在Windows PC的设备管理器中,找到显示为“Quectel USB AT Port (COMxxx)”的端口。
  2. 然后,使用串口工具打开该AT端口。

执行配置命令

  1. 执行如下配置命令:
AT+QCFG="data_interface",1,0
AT+QCFG="pcie/mode",0
AT+QCFG="usbnet",2
AT+CFUN=1,1
  1. 执行完成后,断开PC端的USB线,重新给主控板上电。

验证PCIe设备识别情况

通过Shell口使用如下命令并核对输出:

  1. 检查PCIe总线设备识别情况。

    执行命令:

    lspci
    

    正常输出示例:

    root@QuectelPi:~# lspci
    0000:00:00.0 PCI bridge: Qualcomm Device 010b
    0000:01:00.0 Ethernet controller: Device 1f0a:6801 (rev 01)
    0001:00:00.0 PCI bridge: Qualcomm Device 010b
    0001:01:00.0 Unassigned class [ff00]: Qualcomm Device 0308
    
  2. 检查MHI调至解调器接口识别情况。

    执行命令:

    ls /dev/mhi*
    

    正常输出示例:

    root@QuectelPi:~# ls /dev/mhi*
    /dev/mhi_BHI  /dev/mhi_DIAG  /dev/mhi_DUN  /dev/mhi_LOOPBACK  /dev/mhi_QMI0
    
  3. 若以上设备均已被成功识别,则可以正常执行拨号操作。

拨号上网

拨号前准备

  • 已为5G模块连接天线。
  • 已插入SIM卡。
  • 信号正常(避免信号较差导致注网失败)。

使用quectel-CM拨号

后台运行quectel-CM命令进行拨号。

root@QuectelPi:~# quectel-CM &
[2] 1303
root@QuectelPi:~# [01-01_00:07:55:168] QConnectManager_Linux_V1.6.7
[01-01_00:07:55:179] network interface '' or qmidev '' is not exist
[01-01_00:07:55:179] netcard driver = pcie_mhi, driver version = V1.3.7
[01-01_00:07:55:179] qmap_mode = 1, qmap_version = 9, qmap_size = 15360, muxid = 0x81, qmap_netcard = rmnet_mhi0.1
[01-01_00:07:55:179] Modem works in QMI mode
[01-01_00:07:55:193] /proc/1273/fd/7 -> /dev/mhi_QMI0
[01-01_00:07:55:193] /proc/1273/exe -> /usr/bin/quectel-CM
[01-01_00:07:55:193] requestDeactivateDefaultPDP WdsConnectionIPv4Handle
[01-01_00:07:55:424] ip link set dev rmnet_mhi0 down
[01-01_00:07:55:431] ip addr flush dev rmnet_mhi0.1
[01-01_00:07:55:436] ip link set dev rmnet_mhi0.1 down
[01-01_00:07:55:457] QmiWwanThread exit
[01-01_00:07:55:459] qmi_main exit
[01-01_00:07:57:196] cdc_wdm_fd = 7
[01-01_00:07:57:208] Get clientWDS = 15
[01-01_00:07:57:212] Get clientDMS = 1
[01-01_00:07:57:215] Get clientNAS = 4
[01-01_00:07:57:219] Get clientUIM = 3
[01-01_00:07:57:224] Get clientWDA = 1
[01-01_00:07:57:229] requestBaseBandVersion RM520NGLABR03A02M8G
[01-01_00:07:57:232] qmap_settings.rx_urb_size = 15360
[01-01_00:07:57:233] qmap_settings.ul_data_aggregation_max_datagrams  = 11
[01-01_00:07:57:233] qmap_settings.ul_data_aggregation_max_size       = 8192
[01-01_00:07:57:233] qmap_settings.dl_minimum_padding                 = 0
[01-01_00:07:57:248] requestGetSIMStatus SIMStatus: SIM_READY
[01-01_00:07:57:257] requestGetProfile[pdp:1 index:1] ctnet///0/IPV4V6
[01-01_00:07:57:261] requestRegistrationState2 MCC: 460, MNC: 11, PS: Attached, DataCap: 5G_SA
[01-01_00:07:57:265] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED
[01-01_00:07:57:265] ip link set dev rmnet_mhi0 down
[01-01_00:07:57:272] ip addr flush dev rmnet_mhi0.1
[01-01_00:07:57:277] ip link set dev rmnet_mhi0.1 down
[01-01_00:07:57:768] requestSetupDataCall WdsConnectionIPv4Handle: 0xe27891d0
[01-01_00:07:57:783] ip link set dev rmnet_mhi0 up
[  473.062494][ T1311] [I][mhi_netdev_open] Opened net dev interface
[01-01_00:07:57:797] ip link set dev rmnet_mhi0.1 up
[01-01_00:07:57:803] busybox udhcpc -f -n -q -t 5 -i rmnet_mhi0.1
udhcpc: started, v1.35.0
udhcpc: broadcasting discover
udhcpc: broadcasting select for 100.98.134.67, server 100.98.134.68
udhcpc: lease of 100.98.134.67 obtained from 100.98.134.68, lease time 7200
[01-01_00:07:57:883] /etc/udhcpc.d/50default: Adding DNS 202.102.213.68
[01-01_00:07:57:883] /etc/udhcpc.d/50default: Adding DNS 61.132.163.68

当底部的udhcpc获取到IP地址后,表明设备已成功获得基站分配的IP,网络连接建立成功。

接下来,使用ifconfig和ping命令验证网络连接:

root@QuectelPi:~# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:55:7B:B5:7D:F7  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:166 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:50 errors:0 dropped:0 overruns:0 frame:0
          TX packets:50 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:4632 (4.5 KiB)  TX bytes:4632 (4.5 KiB)

p2p0      Link encap:Ethernet  HWaddr 02:03:7F:D6:00:01  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

rmnet_mhi0 Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet6 addr: fe80::6921:e40e:336d:a80e/64 Scope:Link
          UP RUNNING NOARP  MTU:1500  Metric:1
          RX packets:14 errors:0 dropped:0 overruns:0 frame:0
          TX packets:23 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:4464 (4.3 KiB)  TX bytes:5204 (5.0 KiB)

rmnet_mhi0.1 Link encap:Ethernet  HWaddr 02:50:F4:00:00:01  
          inet addr:100.98.134.67  Mask:255.255.255.248
          inet6 addr: fe80::50:f4ff:fe00:1/64 Scope:Link
          UP RUNNING NOARP  MTU:1500  Metric:1
          RX packets:14 errors:0 dropped:0 overruns:0 frame:0
          TX packets:23 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:4330 (4.2 KiB)  TX bytes:5334 (5.2 KiB)

wlan0     Link encap:Ethernet  HWaddr 00:03:7F:50:00:01  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

root@QuectelPi:~# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=113 time=5006.075 ms
64 bytes from 8.8.8.8: seq=5 ttl=113 time=485.806 ms
64 bytes from 8.8.8.8: seq=6 ttl=113 time=190.026 ms
64 bytes from 8.8.8.8: seq=13 ttl=113 time=628.962 ms
64 bytes from 8.8.8.8: seq=14 ttl=113 time=542.605 ms
64 bytes from 8.8.8.8: seq=15 ttl=113 time=585.632 ms
64 bytes from 8.8.8.8: seq=16 ttl=113 time=796.018 ms
64 bytes from 8.8.8.8: seq=17 ttl=113 time=95.139 ms
64 bytes from 8.8.8.8: seq=18 ttl=113 time=837.369 ms
64 bytes from 8.8.8.8: seq=19 ttl=113 time=41.186 ms