Hello,
I am experiencing recurring cellular disconnects with a GL.iNet Spitz AX / GL-X3000.
On the affected roaming network, the modem loses packet service approximately every 30–33 minutes. QmiWwanThread then exits, the cellular interface is reported as offline, and GL.iNet’s cellular_manage service performs a complete network re-registration using:
CFUN=4 -> CFUN=1
The connection is restored after approximately 10–15 seconds, but the same issue occurs again roughly half an hour later.
Hardware and software
-
Router: GL.iNet Spitz AX / GL-X3000
-
Router firmware: 4.9.0
-
Modem: Quectel RM520N-GL
-
Router protocol: QCM
-
Modem interface: PCIe/MHI
-
QMI device:
/dev/mhi_QMI0 -
Usage scenario: international roaming
-
Radio connection: LTE or 5G NSA
I have tested several Quectel modem firmware versions from different firmware branches, including 201- and 301-series versions. The recurring disconnect behaviour remained essentially unchanged.
Modem configuration
The relevant modem settings are:
AT+QCFG="pcie/mode"
+QCFG: "pcie/mode",0
AT+QCFG="data_interface"
+QCFG: "data_interface",1,0
AT+QCFG="usbnet"
+QCFG: "usbnet",0
AT+QNWPREFCFG="mode_pref"
+QNWPREFCFG: "mode_pref",AUTO
AT+QNWPREFCFG="nr5g_disable_mode"
+QNWPREFCFG: "nr5g_disable_mode",1
nr5g_disable_mode=1 disables 5G SA but allows 5G NSA.
The permitted NR bands are:
n1, n3, n28, n78
The issue occurs both while the modem is using LTE and while 5G NSA is available.
A normal 5G NSA serving-cell response looks like this:
+QENG: "servingcell","NOCONN"
+QENG: "LTE","FDD",<MCC>,<MNC>,<CELL-ID>,<PCI>,<EARFCN>,<LTE-BAND>,...
+QENG: "NR5G-NSA",<MCC>,<MNC>,<PCI>,<RSRP>,<SINR>,<RSRQ>,<NR-ARFCN>,<NR-BAND>,...
Typical signal levels are usable and do not indicate a complete loss of coverage:
LTE RSRP: approximately -90 to -105 dBm
LTE RSRQ: approximately -6 to -12 dB
LTE SINR: approximately 15 to 19 dB
NR RSRP: approximately -94 dBm
NR RSRQ: approximately -10 dB
NR SINR: approximately 16 dB
I understand that 5G NSA may release the NR secondary carrier while idle and temporarily remain on LTE. However, the problem described here is different: the modem reports PS: Detached, the QCM process exits, and the complete radio registration is restarted.
Anonymized verbatim logread excerpt
The following is a verbatim excerpt from logread. Only the PLMN, CGNAT addresses and process IDs have been anonymized.
Fri Jul 10 19:22:04 2026 daemon.info cellular_manage:
(cm.c:7458) Start force re-register network(CFUN=4 -> CFUN=1)...
Fri Jul 10 19:22:15 2026 daemon.notice netifd:
modem_0001_s1_4 (<PID>): udhcpc:
lease of <CGNAT-IP-1> obtained, lease time 7200
Fri Jul 10 19:53:09 2026 daemon.notice netifd:
modem_0001_s1 (<PID>): [07-10_19:52:47:169]
requestRegistrationState2 MCC: <MCC>, MNC: <MNC>,
PS: Detached, DataCap: UNKNOW
Fri Jul 10 19:53:09 2026 daemon.notice netifd:
modem_0001_s1 (<PID>): [07-10_19:52:48:717]
requestRegistrationState2 MCC: <MCC>, MNC: <MNC>,
PS: Detached, DataCap: UNKNOW
Fri Jul 10 19:53:09 2026 daemon.notice netifd:
modem_0001_s1 (<PID>): [07-10_19:52:51:498]
requestRegistrationState2 MCC: <MCC>, MNC: <MNC>,
PS: Detached, DataCap: UNKNOW
Fri Jul 10 19:53:09 2026 daemon.notice netifd:
modem_0001_s1 (<PID>): [07-10_19:52:53:927]
requestRegistrationState2 MCC: <MCC>, MNC: <MNC>,
PS: Detached, DataCap: UNKNOW
Fri Jul 10 19:53:09 2026 daemon.notice netifd:
modem_0001_s1 (<PID>): [07-10_19:52:53:930]
requestRegistrationState2 MCC: <MCC>, MNC: <MNC>,
PS: Detached, DataCap: UNKNOW
Fri Jul 10 19:53:09 2026 daemon.notice netifd:
modem_0001_s1 (<PID>): [07-10_19:52:59:146]
requestRegistrationState2 MCC: <MCC>, MNC: <MNC>,
PS: Detached, DataCap: UNKNOW
Fri Jul 10 19:53:09 2026 daemon.notice netifd:
modem_0001_s1 (<PID>): [07-10_19:52:59:149]
requestRegistrationState2 MCC: <MCC>, MNC: <MNC>,
PS: Detached, DataCap: UNKNOW
Fri Jul 10 19:53:09 2026 daemon.notice netifd:
modem_0001_s1 (<PID>): [07-10_19:53:04:366]
requestRegistrationState2 MCC: <MCC>, MNC: <MNC>,
PS: Detached, DataCap: UNKNOW
Fri Jul 10 19:53:09 2026 daemon.notice netifd:
modem_0001_s1 (<PID>): [07-10_19:53:04:371]
requestRegistrationState2 MCC: <MCC>, MNC: <MNC>,
PS: Detached, DataCap: UNKNOW
Fri Jul 10 19:53:09 2026 daemon.notice netifd:
modem_0001_s1 (<PID>): [07-10_19:53:09:584]
requestRegistrationState2 MCC: <MCC>, MNC: <MNC>,
PS: Detached, DataCap: UNKNOW
Fri Jul 10 19:53:13 2026 daemon.notice netifd:
modem_0001_s1 (<PID>): [07-10_19:53:09:587]
requestRegistrationState2 MCC: <MCC>, MNC: <MNC>,
PS: Detached, DataCap: UNKNOW
Fri Jul 10 19:53:13 2026 daemon.notice netifd:
modem_0001_s1 (<PID>): [07-10_19:53:13:783]
QmiWwanThread exit
Fri Jul 10 19:53:14 2026 daemon.info cellular_manage:
(cm.c:8619) Executing dial connect, initiated by INTERFACE OFFLINE
(bus: 0001:01:00.0, slot: 1 interface: modem_0001_s1)
Fri Jul 10 19:53:14 2026 daemon.info cellular_manage:
(cm.c:7458) Start force re-register network(CFUN=4 -> CFUN=1)...
Fri Jul 10 19:53:23 2026 daemon.notice netifd:
modem_0001_s1_4 (<PID>): udhcpc:
lease of <CGNAT-IP-2> obtained, lease time 7200
Fri Jul 10 20:26:16 2026 daemon.notice netifd:
modem_0001_s1 (<PID>): [07-10_20:26:00:124]
requestRegistrationState2 MCC: <MCC>, MNC: <MNC>,
PS: Detached, DataCap: UNKNOW
Fri Jul 10 20:26:16 2026 daemon.notice netifd:
modem_0001_s1 (<PID>): [07-10_20:26:00:395]
requestRegistrationState2 MCC: <MCC>, MNC: <MNC>,
PS: Detached, DataCap: UNKNOW
Fri Jul 10 20:26:16 2026 daemon.notice netifd:
modem_0001_s1 (<PID>): [07-10_20:26:04:172]
requestRegistrationState2 MCC: <MCC>, MNC: <MNC>,
PS: Detached, DataCap: UNKNOW
Fri Jul 10 20:26:16 2026 daemon.notice netifd:
modem_0001_s1 (<PID>): [07-10_20:26:05:682]
requestRegistrationState2 MCC: <MCC>, MNC: <MNC>,
PS: Detached, DataCap: UNKNOW
Fri Jul 10 20:26:16 2026 daemon.notice netifd:
modem_0001_s1 (<PID>): [07-10_20:26:05:687]
requestRegistrationState2 MCC: <MCC>, MNC: <MNC>,
PS: Detached, DataCap: UNKNOW
Fri Jul 10 20:26:16 2026 daemon.notice netifd:
modem_0001_s1 (<PID>): [07-10_20:26:10:893]
requestRegistrationState2 MCC: <MCC>, MNC: <MNC>,
PS: Detached, DataCap: UNKNOW
Fri Jul 10 20:26:16 2026 daemon.notice netifd:
modem_0001_s1 (<PID>): [07-10_20:26:10:898]
requestRegistrationState2 MCC: <MCC>, MNC: <MNC>,
PS: Detached, DataCap: UNKNOW
Fri Jul 10 20:26:19 2026 daemon.notice netifd:
modem_0001_s1 (<PID>): [07-10_20:26:16:094]
requestRegistrationState2 MCC: <MCC>, MNC: <MNC>,
PS: Detached, DataCap: UNKNOW
Fri Jul 10 20:26:19 2026 daemon.notice netifd:
modem_0001_s1 (<PID>): [07-10_20:26:16:097]
requestRegistrationState2 MCC: <MCC>, MNC: <MNC>,
PS: Detached, DataCap: UNKNOW
Fri Jul 10 20:26:19 2026 daemon.notice netifd:
modem_0001_s1 (<PID>): [07-10_20:26:19:113]
QmiWwanThread exit
Fri Jul 10 20:26:19 2026 daemon.info cellular_manage:
(cm.c:8619) Executing dial connect, initiated by INTERFACE OFFLINE
(bus: 0001:01:00.0, slot: 1 interface: modem_0001_s1)
Fri Jul 10 20:26:20 2026 daemon.info cellular_manage:
(cm.c:7458) Start force re-register network(CFUN=4 -> CFUN=1)...
Fri Jul 10 20:26:29 2026 daemon.notice netifd:
modem_0001_s1_4 (<PID>): udhcpc:
lease of <CGNAT-IP-3> obtained, lease time 7200
Timing analysis
The excerpt shows the following timing:
-
New DHCP lease obtained at
19:22:15 -
Packet-service detachment begins at
19:52:47 -
Time until failure: approximately 30 minutes and 32 seconds
After recovery:
-
New DHCP lease obtained at
19:53:23 -
Packet-service detachment begins again at
20:26:00 -
Time until the next failure: approximately 32 minutes and 37 seconds
The two GL.iNet-initiated forced re-registrations occurred at:
19:53:14
20:26:20
The interval between them was approximately 33 minutes and 6 seconds.
In both incidents, the sequence is effectively identical:
PS: Detached
DataCap: UNKNOW
QmiWwanThread exit
INTERFACE OFFLINE
cellular_manage starts CFUN=4 -> CFUN=1
new DHCP lease obtained
The DHCP lease duration is 7200 seconds. The failures after approximately 30–33 minutes therefore do not correspond to the normal DHCP lease-expiry or renewal interval.
Normal DHCP renewals can also be seen independently at intervals of approximately two hours:
12:08:17 – lease obtained, lease time 7200
14:07:20 – lease obtained, lease time 7200
16:06:24 – lease obtained, lease time 7200
18:05:27 – lease obtained, lease time 7200
20:04:31 – lease obtained, lease time 7200
22:03:34 – lease obtained, lease time 7200
Troubleshooting already performed
I have already tested:
-
Several RM520N-GL modem firmware versions
-
Modem firmware from different branches, including 201 and 301
-
LTE-only mode
-
LTE plus 5G NSA using
mode_pref=AUTO -
Different NR band configurations
-
Complete radio re-registration
-
Router reboot
-
Modem firmware reflashing
-
Signal Capture disabled:
glmodem.signal.enable=0
- Different roaming operators
The recurring disconnects remained on the affected roaming network.
The behaviour also appears to be operator-dependent. Another available roaming operator was substantially more stable and did not show the same recurring detach pattern.
In the same location, an iPhone connected to 5G remains stable and does not perform a comparable full reconnect every 30–33 minutes.
This suggests that the problem is unlikely to be caused solely by general coverage conditions or by normal network-side 5G NSA idle behaviour.
Interpretation
The logs confirm that GL.iNet’s cellular_manage service starts the forced re-registration after:
QmiWwanThread exit
INTERFACE OFFLINE
However, the excerpt does not reveal why the modem initially changes to:
PS: Detached
DataCap: UNKNOW
The main question is therefore whether the original detachment is caused by:
-
the roaming network,
-
the Quectel modem firmware,
-
the QCM/MHI implementation,
-
or a timer, watchdog or registration check inside GL.iNet firmware 4.9.0.
Questions for GL.iNet
Could GL.iNet please investigate the following?
-
What exact QMI or NAS state causes
requestRegistrationState2to reportPS: Detached, DataCap: UNKNOW? -
Why does
QmiWwanThreadterminate after the detached state persists for approximately 20–25 seconds? -
Is
QmiWwanThread exitcaused by the modem, the GL.iNet QCM dialer or thenetifdinterface-management process? -
Is there any roaming, packet-service, watchdog or registration timer in firmware 4.9.0 that could explain the recurring 30–33 minute interval?
-
Could a temporary network-side registration or NSA/LTE state transition be interpreted as a complete loss of packet service?
-
Could the cellular manager attempt a QMI data-session recovery before performing a complete
CFUN=4 -> CFUN=1radio re-registration? -
Are there known compatibility issues between GL.iNet firmware 4.9.0, QCM over PCIe/MHI and particular RM520N-GL modem firmware versions?
-
Is it possible to enable more detailed QMI, NAS, MHI or
cellular_managedebugging so that the original reason forPS: Detachedcan be identified?
I can provide a complete support archive and an additional anonymized log covering several minutes before and after further disconnects if required.
Thank you.

