RM510Q-GL 5G LTE OpenWrt Modem USB PCI-E how-to 楽天モバイル バンド3 固定


This article will introduce how to use RM510Q-GL 5G LTE Modem with OpenWrt.

Working / Performing ways of 5G LTE Modern USB dongles

QMI and MBIM

① It is required to switch the modem to provide NDIS interface
QMI protocol is proprietary protocol by Qualcomm. In contrast to qmi, mbim is more standardized protocol for 3G/4G dongles.
RMNET driver is used for supporting the Multiplexing and aggregation Protocol (MAP). This protocol is used by all recent chipsets using Qualcomm Technologies, Inc. modems.
This driver can be used to register onto any physical network device in IP mode. Physical transports include USB, HSIC, PCIe and IP accelerator.
Multiplexing allows for creation of logical netdevices (rmnet devices) to handle multiple private data networks (PDN) like a default internet, tethering, multimedia messaging service (MMS) or IP media subsystem (IMS). Hardware sends packets with MAP headers to rmnet. Based on the multiplexer id, rmnet routes to the appropriate PDN after removing the MAP header.
Aggregation is required to achieve high data rates. This involves hardware sending aggregated bunch of MAP frames. rmnet driver will de-aggregate these MAP frames and send them to appropriate PDN’s.
② Kernel Cellular Modem Device Drivers - Rmnet Driver
MBIM (Mobile Broadband Interface Model).

NCM

NCM (Network Control Model) is ethernet over USB protocol used by some fast speed USB modems/dongles.
USB CDC-ECM

1
2
3
4
5
6
7
8
9
static const struct driver_info	cdc_info = {
.description = "CDC Ethernet Device",
.flags = FLAG_ETHER | FLAG_POINTTOPOINT,
.bind = usbnet_cdc_bind,
.unbind = usbnet_cdc_unbind,
.status = usbnet_cdc_status,
.set_rx_mode = usbnet_cdc_update_filter,
.manage_power = usbnet_manage_power,
};

③ Linux-Drivers-Net-USB-CDC-ethernet-based-networking-peripherals

RNDIS

RNDIS (Remote Network Driver Interface Specification) is ethernet over USB protocol used by some fast speed USB modems/dongles.
④ OpenWrt-WWAN-ethernetoverusb-RNDIS
The Remote Network Driver Interface Specification (RNDIS) is a Microsoft proprietary protocol used mostly on top of USB. It provides a virtual Ethernet link to most versions of the Windows, Linux, and FreeBSD operating systems. Multiple revisions of a partial RNDIS specification are available from Microsoft, but Windows implementations have been observed to issue requests not included in that specification, and to have undocumented constraints.
The protocol is tightly coupled to Microsoft’s programming interfaces and models, most notably the Network Driver Interface Specification (NDIS), which are alien to operating systems other than Windows. This complicates implementing RNDIS on non-Microsoft operating systems, but Linux, FreeBSD, NetBSD and OpenBSD implement RNDIS natively.
The USB Implementers Forum (USB-IF) defines at least three non-proprietary USB communications device class (USB CDC) protocols with comparable “virtual Ethernet” functionality; one of them (CDC-ECM) predates RNDIS and is widely used for interoperability with non-Microsoft operating systems, but does not work with Windows.
Most versions of Android include RNDIS USB functionality. For example, Samsung smartphones have the capability and use RNDIS over USB to operate as an virtual Ethernet card that will connect the host PC to the mobile or Wi-Fi network in use by the phone, effectively working as a mobile broadband modem or a wireless card, for mobile hotspot tethering.
⑤ Wikipedia-RNDIS

PPP

OpenWrt can be setup and configured for using a USB 3g/UMTS-modem for WAN connection using the older (and slower) ppp protocol.
⑥ OpenWrt PPP protocol

Some AT commands for 5G Modem

List Available Operator

1
AT+COPS=?

Current Operator

1
AT+COPS?

Query Network Information
Response
+QNWINFO: AcT,oper,band,channel
Example
+QNWINFO: “FDD LTE”,”44020”,”LTE BAND 3”,1675

1
AT+QNWINFO

Query the Service Provider Name
Response
+QSPN: FNN,SNN,SPN,alphabet,RPLMN
If alphabet is 0, FNN and SNN will be shown in GSM 7-bit default alphabet string.
If alphabet is 1, FNN and SNN will be shown in UCS2 hexadecimal string.
Example
+QSPN: “SoftBank”,”SoftBank”,”Y!mobile”,0,”44020”

1
AT+QSPN

Signal Quality Report
Integer type. Received signal strength indication.
0 -113 dBm or less
1 -111 dBm
2–30 -109 dBm to -53 dBm
31 -51 dBm or greater
99 Not known or not detectable

1
AT+CSQ

Query Primary Serving Cell Information
Response
In LTE mode:
+QENG: “servingcell”,state,”LTE”,is_tdd,MCC,MNC,cellID,PCID,earfcn,freq_band_ind,UL_bandwidth,DL_bandwidth,TAC,RSRP,RSRQ,RSSI,SINR,CQI,tx_power,srxlev
state: String type. UE state.
“SEARCH” UE is searching but could not (yet) find a suitable 3G/4G cell.
“LIMSRV” UE is camping on a cell but has not registered on the network.
“NOCONN” UE is camping on a cell and has registered on the network, and it is in idle mode.
“CONNECT” UE is camping on a cell and has registered on the network, and a call is in progress.
cellID: Integer type. Cell ID. The parameter determines the 16-bit (GSM) or 28-bit (UMTS) cell ID. Range: 0–0xFFFFFFF.
PCID: Number format. Physical cell ID.
earfcn: The parameter determines the E-UTRA-ARFCN of the cell that was scanned.
freq_band_ind: Integer type. E-UTRA frequency band (see 3GPP 36.101)
UL_bandwidth:
Integer type. UL bandwidth.
0 1.4 MHz
1 3 MHz
2 5 MHz
3 10 MHz
4 15 MHz
5 20 MHz
TAC: Tracking Area Code (see 3GPP 23.003 Section 19.4.2.3)
Example
+QENG: “servingcell”,”NOCONN”,”LTE”,”FDD”,440,20,4B1B302,25,1675,3,4,4,24A7,-87,-5,-62,27,-

⑦ Open Cellid Lookup

1
AT+QENG="servingcell"

Network Registration Status
Response
+CREG: n,stat,lac,ci,AcT
n: Integer type
0 Disable network registration unsolicited result code
1 Enable network registration unsolicited result code: +CREG: stat
2 Enable network registration unsolicited result code with location information:
lac: Two bytes location area code in hexadecimal format.
ci: 28-bit (UMTS/LTE) cell ID in hexadecimal format.

1
2
AT+CREG=n
AT+CREG?

Query the current configuration of preferred LTE bands to be searched by UE

1
AT+QNWPREFCFG="lte_band"

Write the preferred LTE bands to be searched by UE

1
AT+QNWPREFCFG="lte_band",:

Query the current configuration of Network Search Mode

1
AT+QNWPREFCFG="mode_pref"

Write the configuration of Network Search Mode

1
AT+QNWPREFCFG="mode_pref",:

Query the current configuration of Roaming Preference

1
AT+QNWPREFCFG="roam_pref"

Write the configuration of Roaming Preference
1 Roam only on home network
3 Roam on affiliate network
255 Roam on any network

1
AT+QNWPREFCFG="roam_pref",

Read the band configured in the carrier policy

1
AT+QNWPREFCFG="policy_band"

Query the band configured in the UE capability information

1
AT+QNWPREFCFG="ue_capability_band"

Attachment or Detachment of PS
Integer type. Indicate the state of PS attachment.
0 Detached
1 Attached

1
AT+CGATT?

Read PDP Contexts

1
AT+QGDCNT?

Write PDP Contexts

1
AT+CGDCONT=5,"IPV4V6","rakuten.jp","0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0",0,0

Read all PDP Contexts
Response
+CGACT: cid,state
Integer type. Indicate the state of PDP context activation.
0 Deactivated
1 Activated

1
AT+CGACT?

Activate or Deactivate PDP Contexts

1
AT+CGATT=state,cid

Read Service Center Address

1
AT+CSCA?

Setting up working mode on a Windows PC using the Serial Debugging Tool by Quectel

0 RMNET via QMI tool using QMI commands, get public IP address.
1 ECM Interface, init data call via CDC-ECM, sending ECM commands, get local IP.
2 MBIM Interface, Mobile Broadband Interface Model, works well with win8/10/11.
3 RNDIS Interface, TCP/IP over USB based on RNDIS, get local IP.
Actually, Modem works on mode 0 by default and uses NDIS with the driver provided by quectel tech supporter on a windows PC.
And with the QCOM_V1.6.exe tool, you can send AT Commands to Modem.

1
2
3
AT+QCFG="usbnet"?
AT+QCFG="usbnet",0
AT+CFUN=1,1

楽天モバイル バンド3 固定

1
AT+QNWPREFCFG="lte_band",3

Package

Package Description
Required Packages           To make use of qmi protocol
kmod-usb-net-qmi-wwan           QMI WWAN driver for Qualcomm MSM based 3G and LTE modems
uqmi           uqmi is a command line tool for controlling mobile broadband modems using the QMI-protocol.
usb-modeswitch           It will automatically issue a “special” command to the modem for switching it into the “Working” state
kmod-mii           Mii driver
kmod-usb-net           Kernel modules for USB-to-Ethernet convertors
kmod-usb-wdm           USB Wireless Device Management support
luci-proto-qmi           QMI Protocol Configuration
Optional Packages           To make use of qmi protocol
kmod-usb-net-cdc-mbim           QMI WWAN driver for Qualcomm MSM based 3G and LTE modems
umbim           Add support for MBIM devices
Optional Packages           Add support for PC Interface (ttyUSB0) - You need it if you want to send AT commands
kmod-usb-serial-option           To make use of qmi protocol
kmod-usb-serial           QMI WWAN driver for Qualcomm MSM based 3G and LTE modems
kmod-usb-serial-wwan           QMI WWAN driver for Qualcomm MSM based 3G and LTE modems

Installation

1
2
3
4
5
opkg update
opkg install usb-modeswitch kmod-mii kmod-usb-net kmod-usb-wdm
opkg install kmod-usb-net-qmi-wwan uqmi luci-proto-qmi
reboot
ls -l /dev/cdc-wdm0

APN Configuration

Package Description
APN           rakuten.jp
APN Protocol           IPv4/IPv6

IPv6 Configuration










References

1
2
3
4
5
6
7
[1]: https://openwrt.org/docs/guide-user/network/wan/wwan/ltedongle
[2]: https://www.kernel.org/doc/html/latest/networking/device_drivers/cellular/qualcomm/rmnet.html
[3]: https://github.com/torvalds/linux/blob/master/drivers/net/usb/cdc_ether.c
[4]: https://openwrt.org/docs/guide-user/network/wan/wwan/ethernetoverusb_rndis
[5]: https://en.wikipedia.org/wiki/RNDIS
[6]: https://openwrt.org/docs/guide-user/network/wan/wwan/3gdongle
[7]: https://opencellid.org/

Author: Yuzu
Link: https://kamisu66.com/2022/05/08/RM510Q-GL-5G-LTE-OpenWrt-Modem-USB-PCI-E-how-to/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.

Author: Yuzu
Link: https://kamisu66.com/2022/05/08/RM510Q-GL-5G-LTE-OpenWrt-Modem-USB-PCI-E-how-to/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.