ZTE MF286D LTE modem not working with QMI

OpenWrt 23.05.3 r23809-234f1a2efa is installed on an ZTE MF286D using serial+TFTP. Updated all packages, installed kmod-usb-serial-qualcomm and picocom. ATI shows

Manufacturer: ZTE CORPORATION
Model: MF286DMODULE
Revision: BD_MF286DMODULEV1.0.0B07
SVN: 01
IMEI: 86675xxxxxxxxxx
+GCAP: +CGSM

Also looks like uqmi is working:

root@OpenWrt:~# uqmi -d /dev/cdc-wdm0 --get-signal-info
{
	"type": "lte",
	"rssi": -64,
	"rsrq": -14,
	"rsrp": -97,
	"snr": 0.000000
}
root@OpenWrt:~# uqmi -d /dev/cdc-wdm0 --get-current-settings
"Out of call"
root@OpenWrt:~# uqmi -d /dev/cdc-wdm0 --get-device-operating-mode
"online"
root@OpenWrt:~# uqmi -d /dev/cdc-wdm0 --get-data-status
"disconnected"

The issue is, when creating the interface, even if AT commands still works, uqmi stops working (frozen, returning noting) and data connection does not work.

Used luci-proto-qmi to create the interface and config looks like this:

config interface 'wlte'               
        option proto 'qmi'            
        option device '/dev/cdc-wdm0' 
        option apn '3internet'        
        option auth 'none'            
        option pdptype 'ipv4'

I tried the SIM in a portable MiFi router and even restored the stock firmware on the same MF286D; it worked both times.

I feel like I am missing someting very simple but have no idea what to investigate or try next?

Many thanks!

Please show the output of at+cgdcont?

Thanks AndrewZ, noticed that I missed the config and edited the initial message adding the network config. The interface is in the wan zone. Here is the at+cgdcont?:

at+cgdcont?
+CGDCONT: 1,"IPV4V6","3internet","0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0",0,0,0,0
+CGDCONT: 2,"IPV6","ims","0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0",0,0,0,0
+CGDCONT: 3,"IPV6","sos","0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0",0,0,0,1
+CGDCONT: 4,"IP","3internet","0.0.0.0",0,0,0,0

Try deleting context 4: at+cgdcont=4
Then reset/reboot and check with at+cgpaddr after a minute or so.

Context 4 is deleted, rebooted the router and run at+cgdcont? and at+cgpaddr:

AT+CGDCONT?
+CGDCONT: 1,"IPV4V6","3internet","0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0",0,0,0,0
+CGDCONT: 2,"IPV6","ims","0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0",0,0,0,0
+CGDCONT: 3,"IPV6","sos","0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0",0,0,0,1

OK
AT+CGPADDR
+CGPADDR: 1,188.29.129.112
+CGPADDR: 2,42.4.74.67.1.155.57.140.0.0.0.0.101.243.204.232
+CGPADDR: 3,0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0

OK

Then I run uqmi -d /dev/cdc-wdm0 --get-signal-info that froze.

I would like to mention that default wan interface is still present and tried with upstream connected and disconnected, with same result. Earlier today I even deleted the default wan and wan6 interfaces without success.

You have the IP address from the carrier in profile 1, so everything looks good.
You don't need to run any uqmi command manually.

You are right AndrewZ, the ip address looks valid for Three UK. But for some reason it does not work. Tested opkg update from the terminal and it does not work :pensive:

Show ifstatus wlte and ip r output.

root@OpenWrt:~# ifstatus wlte
{
	"up": false,
	"pending": true,
	"available": true,
	"autostart": true,
	"dynamic": false,
	"proto": "qmi",
	"data": {
		
	}
}

ip r with upstream wan disconnected:

root@OpenWrt:~# ip r
192.168.1.0/24 dev br-lan scope link  src 192.168.1.1

wlte is down, so restart it and check the system log.

This is the system log from luci:

Mon May 13 21:51:04 2024 daemon.notice netifd: wlte (4045): Stopping network wlte
Mon May 13 21:51:04 2024 daemon.notice netifd: wlte (4045): Command failed: ubus call network.interface notify_proto { "action": 0, "link-up": false, "keep": false, "interface": "wlte" } (Permission denied)
Mon May 13 21:51:04 2024 daemon.notice netifd: Interface 'wlte' is now down
Mon May 13 21:51:04 2024 daemon.notice netifd: Interface 'wlte' is setting up now
Mon May 13 21:51:04 2024 daemon.notice netifd: wlte (4054): Waiting for SIM initialization

2nd line ends with (Permission denied), is that OK?
Refreshed the system log page but after 5 minutes no other log record was added.

Noticed the message earlier, there is no wlte_4 interface, was not created automatically but I can create it in case it is required; just I do not know how to set it...

That's weird. Tagging @hauke who was working on the connection script improvements as he may have some ideas. The issue could be related to the initial timeout of 3s.

P.S. my personal choice with this device in Nordic_B12 OEM firmware in a bridge mode.

Thanks a lot AndrewZ, will try to update the modem firmware tomorrow, reset the OpenWrt to factory settings and redo all again. Will post the progress here.

There is no need to reset.
What you can try:
locate /lib/netifd/proto/qmi.sh and change 3000 to 10000 (it should be line 87):
uqmi -d "$device" --get-pin-status -t 3000 > /dev/null 2>&1

I could be wrong though :wink:

Increasing the timeout helped, there is more in the system log now:

root@OpenWrt:~# logread | grep "wlte"
Tue May 14 11:11:41 2024 daemon.notice netifd: Interface 'wlte' is setting up now
Tue May 14 11:11:42 2024 daemon.notice netifd: wlte (5673): Waiting for SIM initialization
Tue May 14 11:11:42 2024 daemon.notice netifd: wlte (5673): Failed to parse message data
Tue May 14 11:11:43 2024 daemon.notice netifd: wlte (5673): PIN verification is disabled
Tue May 14 11:11:44 2024 daemon.notice netifd: wlte (5673): Device does not support 802.3 mode. Informing driver of raw-ip only for wwan0 ..
Tue May 14 11:11:44 2024 daemon.notice netifd: wlte (5673): Waiting for network registration
Tue May 14 11:11:45 2024 daemon.notice netifd: wlte (5673): Starting network wlte

Unfortunately it freezes here and for some reason the modem does not get an IP address anymore (AT+CGPADDR):

AT+CGDCONT?
+CGDCONT: 1,"IPV4V6","3internet","0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0",0,0,0,0
+CGDCONT: 2,"IPV6","ims","0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0",0,0,0,0
+CGDCONT: 3,"IPV6","sos","0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0",0,0,0,1

OK

AT+CGPADDR
+CGPADDR: 1,42.4.74.67.132.255.248.31.0.0.0.0.31.98.206.95
+CGPADDR: 2,42.4.74.67.3.189.29.168.0.0.0.0.86.188.211.243
+CGPADDR: 3,0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0

OK

Let's see if am able to update the modem firmware :worried: :rofl:

Actually you do have the address, but this time it is IPv6 only.
In this case I would configure the interface in OpenWrt with IPv6 only and see what is in the log:
logread -f then save/apply or restart the interface.

I am a bit down the rabbit hole, overwritten mtd8 and mtd9 with Nordic ones found on eko.one.pl yesterday and the web GUI password on the label on my router was not working any more. Reverted to stock partitions I saved before 1st upgrade to OpenWrt, web GUI changed but password still did not work so I ended up restoring partitions one by one. mtd4 (cfg-param) was the one that restored the initial password so now I have a working router with stock firmware. I think I will give another try to the modem firmware update before installing OpenWrt again; it could be a couple of days until either success of give up :grin:

It works :grinning:

It took me forever to update the modem firmware up to Nordic_B12:

Manufacturer: ZTE CORPORATION
Model: MF286DMODULE
Revision: BD_TELIAMF286DV1.0.0B12
SVN: 12
IMEI: 86675xxxxxxxxxx
+GCAP: +CGSM

Updated manually, both the router and the modem, only to B11 and let the device updated itself to B12. Next installed OpenWRT 23.05.3, all pending updates, all packages not yet installed listed for "qmi" filter and kmod-usb-serial-qualcomm. Created the interface as did initially and unplugged the upstream wan cable.
The solution for me was in AndrewZ's comment: "my personal choice with this device in Nordic_B12 OEM firmware in a bridge mode".

Next is mwan3 with failover setup, but in case of issues will be another post.

You misinterpreted my recommendation :wink:

Thanks a lot AndrewZ! If I understood correctly your message, will need 2 separate devices for the internet connection alone. The final objective of the project is:

  • Main wired WAN
  • Failover 4G WAN
  • WireGuard for remote access irrespective of the active WAN
  • WDS WiFi LAN "extension"
    so 3 devices in total.

I would like to try first to keep the setup down to 2 devices if possible, the MF286D and a D-Link DAP-X1860. I understand that mwan3 is not working well yet with OpenWRT 23.05.3 and guess that there will be other reasons for headache as well, but wish to try first :grinning:

Many thanks again!