Can't use Data on RM500Q-AE on OpenWrt 22.03

Hello,

We would like to use RM500Q-AE in OpenWrt device, to make Voice and Data working. Both features are working fine using EG25-G, in the same host Router, using the same OpenWrt software (22.03).

In the beginning we were using standard qmi_wwan driver from OpenWrt, we were able to establish Data connection using uqmi tool, we got the IP address from operator, and 2 DNS servers. Everything was configured in the same way as for EG25-G, routing rules, firewall, wwan0 interface, …, but on RM500Q-AE we were able to ping ONLY DNS servers and to resolve the network domain names, but we were NOT able to ping 8.8.8.8 or google.com, although we resolved well its IP address. When we checked RX counter in ifconfig wwan0, it was not incrementing.

We saw that EG25-G uses Qualcomm MDM9x07 chipset, that is supported in the standard OpenWrt qmi_wwan driver, but RM500Q-AE uses different chipset (Qualcomm Snapdragon X55 ), so we decided to try Quectel qmi_wwan_q driver. We have successfully compiled it and installed in our OpenWrt kernel.

T: Bus=02 Lev=02 Prnt=02 Port=02 Cnt=01 Dev#= 3 Spd=5000 MxCh= 0
D: Ver= 3.20 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs= 1
P: Vendor=2c7c ProdID=0800 Rev= 4.14
S: Manufacturer=Quectel
S: Product=RM500Q-AE
S: SerialNumber=13f0ecef
C:* #Ifs= 6 Cfg#= 1 Atr=a0 MxPwr=896mA
A: FirstIf#= 7 IfCount= 3 Cls=01(audio) Sub=00 Prot=00
I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E: Ad=82(I) Atr=03(Int.) MxPS= 10 Ivl=32ms
E: Ad=81(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E: Ad=01(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E: Ad=84(I) Atr=03(Int.) MxPS= 10 Ivl=32ms
E: Ad=83(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan_q
E: Ad=85(I) Atr=03(Int.) MxPS= 8 Ivl=32ms
E: Ad=8e(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E: Ad=0f(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
I:* If#= 7 Alt= 0 #EPs= 0 Cls=01(audio) Sub=01 Prot=00 Driver=snd-usb-audio
I:* If#= 8 Alt= 0 #EPs= 0 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
I: If#= 8 Alt= 1 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
E: Ad=86(I) Atr=05(Isoc) MxPS= 32 Ivl=1ms
I:* If#= 9 Alt= 0 #EPs= 0 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
I: If#= 9 Alt= 1 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
E: Ad=03(O) Atr=09(Isoc) MxPS= 32 Ivl=1ms

But when we use this qmi_wwan_q driver, our uqmi utility is not working any more, it blocks? Can we use uqmi utility with this driver?

What is the purpose of rmnet_nss.c file and what to do with it on OpenWrt?

Do you have any instructions how to use these Quectel drivers in OpenWrt?

Thanks for the advices and hints.

You need the quectel-CM to set up data call.

Thank you, I found the source code of quectel-CM version 1.6.5, made it by provided CMakeLists.txt with the cross-compiling toolchain for my OpenWrt. I have successfully connected Data by executing:

root@ROBOT2p:~# quectel-CM -s “internet” “yettel” “gprs”

[05-02_09:31:18:751] QConnectManager_Linux_V1.6.5

[05-02_09:31:18:756] Find /sys/bus/usb/devices/2-1.3 idVendor=0x2c7c idProduct=0x800, bus=0x002, dev=0x003

[05-02_09:31:18:759] Auto find qmichannel = /dev/cdc-wdm0

[05-02_09:31:18:759] Auto find usbnet_adapter = wwan0

[05-02_09:31:18:760] netcard driver = qmi_wwan_q, driver version = V1.2.9

[05-02_09:31:18:760] qmap_mode = 1, qmap_version = 9, qmap_size = 31744, muxid = 0x81, qmap_netcard = wwan0_1

[05-02_09:31:18:761] Modem works in QMI mode

[05-02_09:31:18:774] cdc_wdm_fd = 7

[05-02_09:31:18:860] Get clientWDS = 14

[05-02_09:31:18:892] Get clientDMS = 1

[05-02_09:31:18:924] Get clientNAS = 3

[05-02_09:31:18:956] Get clientUIM = 1

[05-02_09:31:18:988] Get clientWDA = 1

[05-02_09:31:19:020] requestBaseBandVersion RM500QAEAAR13A03M4G

[05-02_09:31:19:052] qmap_settings.rx_urb_size = 31744

[05-02_09:31:19:052] qmap_settings.ul_data_aggregation_max_datagrams = 11

[05-02_09:31:19:052] qmap_settings.ul_data_aggregation_max_size = 4096

[05-02_09:31:19:053] qmap_settings.dl_minimum_padding = 0

[05-02_09:31:19:180] requestGetSIMStatus SIMStatus: SIM_READY

[05-02_09:31:19:244] requestGetProfile[pdp:1 index:1] internet/“yettel”/“gprs”/2/IPV4

[05-02_09:31:19:244] requestSetProfile[pdp:1 index:1] internet/“yettel”/“gprs”/2/IPV4

[05-02_09:31:19:244] no need to set skip the rest

[05-02_09:31:19:276] requestRegistrationState2 MCC: 220, MNC: 1, PS: Attached, DataCap: LTE

[05-02_09:31:19:308] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED

[05-02_09:31:19:309] ip link set dev wwan0 down

[05-02_09:31:19:319] ip addr flush dev wwan0_1

[05-02_09:31:19:329] ip link set dev wwan0_1 down

[05-02_09:31:19:724] requestSetupDataCall WdsConnectionIPv4Handle: 0x658b8b40

[05-02_09:31:19:856] ip link set dev wwan0 up

[05-02_09:31:19:874] ip link set dev wwan0_1 up

[05-02_09:31:19:887] busybox udhcpc -f -n -q -t 5 -i wwan0_1

udhcpc: started, v1.35.0

udhcpc: broadcasting discover

udhcpc: broadcasting select for 10.40.84.89, server 10.40.84.90

udhcpc: lease of 10.40.84.89 obtained from 10.40.84.90, lease time 7200

[05-02_09:31:20:224] udhcpc: ip addr add 10.40.84.89/255.255.255.252 broadcast + dev wwan0_1

[05-02_09:31:20:232] udhcpc: setting default routers: 10.40.84.90

BUT, the problem rests the same :frowning:

I still can ping my provider DNS server:

root@ROBOT2p:~# ping 109.245.224.105

PING 109.245.224.105 (109.245.224.105): 56 data bytes

64 bytes from 109.245.224.105: seq=0 ttl=248 time=203.702 ms

64 bytes from 109.245.224.105: seq=1 ttl=248 time=24.699 ms

64 bytes from 109.245.224.105: seq=2 ttl=248 time=18.708 ms

64 bytes from 109.245.224.105: seq=3 ttl=248 time=26.801 ms

64 bytes from 109.245.224.105: seq=4 ttl=248 time=27.735 ms

64 bytes from 109.245.224.105: seq=5 ttl=248 time=19.573 ms

64 bytes from 109.245.224.105: seq=6 ttl=248 time=24.650 ms

^C

— 109.245.224.105 ping statistics —

7 packets transmitted, 7 packets received, 0% packet loss

round-trip min/avg/max = 18.708/49.409/203.702 ms

but can NOT ping anything else:

root@ROBOT2p:~# ping 8.8.8.8

PING 8.8.8.8 (8.8.8.8): 56 data bytes

^C

— 8.8.8.8 ping statistics —

9 packets transmitted, 0 packets received, 100% packet loss

Routing configurations seams OK:

root@ROBOT2p:~# ip route
default via 10.40.84.90 dev wwan0_1
10.40.84.88/30 dev wwan0_1 proto kernel scope link src 10.40.84.89
192.168.1.0/24 dev br-lan proto kernel scope link src 192.168.1.1

root@ROBOT2p:~# ifconfig wwan0_1
wwan0_1 Link encap:Ethernet HWaddr 0E:FD:56:3E:95:69
inet addr:10.40.84.89 Mask:255.255.255.252
inet6 addr: fe80::cfd:56ff:fe3e:9569/64 Scope:Link
UP RUNNING NOARP MTU:1500 Metric:1
RX packets:4 errors:0 dropped:0 overruns:0 frame:0
TX packets:31 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1280 (1.2 KiB) TX bytes:4014 (3.9 KiB)

Can somebody figure what is the cause of this strange problem?

You cannot ping the 8.8.8.8.
It is limited by the SIM card or the operator.

Maybe, but if I replace RM500Q-AE by EG25-G, and use it with the same SIM on the same network, ping 8.8.8.8 is working fine.

I am testing also with wget --spider http://www.google.com/, and the result is the same, no RX at all.

You can try AT+QPING first.

do not try the quectel-CM. Just run with the AT command

AT+QIACT=1
AT+QPING=1,“8.8.8.8”

Whatever I ping with AT+QPING

I receive:

AT+QPING=1,“8.8.8.8”,10,10
OK

+QPING: 569

AT+QPING=1,“10.11.12.13”
OK

+QPING: 569