ZTE MF286D losing connection to the modem

I successfully installed OpenWrt 23.05.2 to my ZTE MF286D 3 days ago.
It has been working well, without apparent issue until today, when the modem disconnected and its interface was not brought back up automatically. To bring it back up I logged in to LuCi and restarted the modem (QMI) interface. On the interface details I could see an error indicating that the network registration had failed.

There was no instability on the stock firmware. I would like to prevent this from happening in the future, as a connection that goes down without (quickly) going back up is not acceptable.
Is there a way to prevent this?

Logs from the disconnection (at 14:45:08) until I intervened (at 15:35:36) below (with the MAC addresses hidden).

Wed Dec  6 14:45:08 2023 kern.info kernel: [272941.853209] usb 2-1: USB disconnect, device number 2
Wed Dec  6 14:45:08 2023 kern.info kernel: [272941.853993] option1 ttyUSB0: GSM modem (1-port) converter now disconnected from ttyUSB0
Wed Dec  6 14:45:08 2023 kern.info kernel: [272941.857482] option 2-1:1.2: device disconnected
Wed Dec  6 14:45:08 2023 kern.info kernel: [272941.866023] option1 ttyUSB1: GSM modem (1-port) converter now disconnected from ttyUSB1
Wed Dec  6 14:45:08 2023 kern.info kernel: [272941.870235] option 2-1:1.3: device disconnected
Wed Dec  6 14:45:08 2023 kern.info kernel: [272941.878709] option1 ttyUSB2: GSM modem (1-port) converter now disconnected from ttyUSB2
Wed Dec  6 14:45:08 2023 kern.info kernel: [272941.882900] option 2-1:1.4: device disconnected
Wed Dec  6 14:45:08 2023 daemon.notice netifd: Network device 'wwan0' link is down
Wed Dec  6 14:45:08 2023 daemon.notice netifd: Network alias 'wwan0' link is down
Wed Dec  6 14:45:08 2023 daemon.notice netifd: Interface 'lte_4' has link connectivity loss
Wed Dec  6 14:45:08 2023 kern.info kernel: [272941.895168] qmi_wwan 2-1:1.5 wwan0: unregister 'qmi_wwan' usb-xhci-hcd.0.auto-1, WWAN/QMI device
Wed Dec  6 14:45:08 2023 daemon.notice netifd: Interface 'lte_4' is disabled
Wed Dec  6 14:45:08 2023 daemon.notice netifd: lte_4 (6831): udhcpc: SIOCGIFINDEX: No such device
Wed Dec  6 14:45:08 2023 daemon.notice netifd: lte_4 (6831): udhcpc: received SIGTERM
Wed Dec  6 14:45:08 2023 daemon.notice netifd: lte_4 (6831): udhcpc: unicasting a release of 10.84.228.74 to 10.84.228.73
Wed Dec  6 14:45:08 2023 daemon.notice netifd: lte_4 (6831): udhcpc: sending release
Wed Dec  6 14:45:08 2023 daemon.notice netifd: lte_4 (6831): udhcpc: can't bind to interface wwan0: No such device
Wed Dec  6 14:45:08 2023 daemon.notice netifd: lte_4 (6831): udhcpc: bindtodevice: No such device
Wed Dec  6 14:45:08 2023 daemon.notice netifd: lte_4 (6831): udhcpc: entering released state
Wed Dec  6 14:45:08 2023 daemon.notice netifd: lte_4 (6831): Command failed: ubus call network.interface notify_proto { "action": 0, "link-up": false, "keep": false, "interface": "lte_4" } (Permission denied)
Wed Dec  6 14:45:08 2023 daemon.notice netifd: Interface 'lte_4' is now down
Wed Dec  6 14:45:08 2023 daemon.info dnsmasq[1]: reading /tmp/resolv.conf.d/resolv.conf.auto
Wed Dec  6 14:45:08 2023 daemon.info dnsmasq[1]: using nameserver 2001:14b8:1000::1#53
Wed Dec  6 14:45:08 2023 daemon.info dnsmasq[1]: using nameserver 2001:14b8:1000::2#53
Wed Dec  6 14:45:08 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test
Wed Dec  6 14:45:08 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion
Wed Dec  6 14:45:08 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost
Wed Dec  6 14:45:08 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local
Wed Dec  6 14:45:08 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid
Wed Dec  6 14:45:08 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind
Wed Dec  6 14:45:08 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan
Wed Dec  6 14:45:08 2023 daemon.notice netifd: lte (14302): Stopping network lte
Wed Dec  6 14:45:08 2023 daemon.notice netifd: lte (14302): Command failed: ubus call network.interface notify_proto { "action": 0, "link-up": false, "keep": false, "interface": "lte" } (Permission denied)
Wed Dec  6 14:45:08 2023 daemon.notice netifd: Interface 'lte' is now down
Wed Dec  6 14:45:08 2023 daemon.warn dnsmasq[1]: no servers found in /tmp/resolv.conf.d/resolv.conf.auto, will retry
Wed Dec  6 14:45:08 2023 daemon.info dnsmasq[1]: read /etc/hosts - 12 names
Wed Dec  6 14:45:08 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 4 names
Wed Dec  6 14:45:08 2023 daemon.info dnsmasq[1]: read /tmp/hosts/odhcpd - 2 names
Wed Dec  6 14:45:08 2023 daemon.info dnsmasq-dhcp[1]: read /etc/ethers - 0 addresses
Wed Dec  6 14:45:09 2023 daemon.warn odhcpd[1345]: No default route present, overriding ra_lifetime!
Wed Dec  6 14:45:25 2023 kern.info kernel: [272959.312031] usb 2-1: new SuperSpeed USB device number 3 using xhci-hcd
Wed Dec  6 14:45:26 2023 kern.info kernel: [272959.487818] option 2-1:1.2: GSM modem (1-port) converter detected
Wed Dec  6 14:45:26 2023 kern.info kernel: [272959.488247] usb 2-1: GSM modem (1-port) converter now attached to ttyUSB0
Wed Dec  6 14:45:26 2023 kern.info kernel: [272959.493892] option 2-1:1.3: GSM modem (1-port) converter detected
Wed Dec  6 14:45:26 2023 kern.info kernel: [272959.500517] usb 2-1: GSM modem (1-port) converter now attached to ttyUSB1
Wed Dec  6 14:45:26 2023 kern.info kernel: [272959.506708] option 2-1:1.4: GSM modem (1-port) converter detected
Wed Dec  6 14:45:26 2023 kern.info kernel: [272959.513219] usb 2-1: GSM modem (1-port) converter now attached to ttyUSB2
Wed Dec  6 14:45:26 2023 kern.info kernel: [272959.549856] qmi_wwan 2-1:1.5: cdc-wdm0: USB WDM device
Wed Dec  6 14:45:26 2023 kern.info kernel: [272959.551108] qmi_wwan 2-1:1.5 wwan0: register 'qmi_wwan' at usb-xhci-hcd.0.auto-1, WWAN/QMI device, ZZ:ZZ:ZZ:ZZ:ZZ:ZZ
Wed Dec  6 14:45:26 2023 daemon.notice netifd: Interface 'lte' is setting up now
Wed Dec  6 14:45:26 2023 daemon.notice netifd: lte (14479): Waiting for SIM initialization
Wed Dec  6 14:45:29 2023 daemon.notice netifd: lte (14479): Failed to parse message data
Wed Dec  6 14:45:31 2023 daemon.notice netifd: lte (14479): Device does not support 802.3 mode. Informing driver of raw-ip only for wwan0 ..
Wed Dec  6 14:45:31 2023 daemon.notice netifd: lte (14479): Waiting for network registration
Wed Dec  6 14:45:44 2023 daemon.notice netifd: lte (14479): Network registration failed, registration timeout reached
Wed Dec  6 14:45:44 2023 daemon.notice netifd: lte (14575): Stopping network lte
Wed Dec  6 14:45:44 2023 daemon.notice netifd: lte (14575): Command failed: ubus call network.interface notify_proto { "action": 0, "link-up": false, "keep": false, "interface": "lte" } (Permission denied)
Wed Dec  6 14:45:44 2023 daemon.notice netifd: Interface 'lte' is now down
Wed Dec  6 14:45:45 2023 daemon.warn odhcpd[1345]: No default route present, overriding ra_lifetime!
Wed Dec  6 14:46:17 2023 daemon.info hostapd: phy1-ap0: STA XX:XX:XX:XX:XX:XX IEEE 802.11: authenticated
Wed Dec  6 14:46:17 2023 daemon.info hostapd: phy1-ap0: STA XX:XX:XX:XX:XX:XX IEEE 802.11: associated (aid 1)
Wed Dec  6 14:46:17 2023 daemon.notice hostapd: phy0-ap0: Prune association for XX:XX:XX:XX:XX:XX
Wed Dec  6 14:46:17 2023 daemon.notice hostapd: phy0-ap0: AP-STA-DISCONNECTED XX:XX:XX:XX:XX:XX
Wed Dec  6 14:46:17 2023 daemon.notice hostapd: phy1-ap0: AP-STA-CONNECTED XX:XX:XX:XX:XX:XX auth_alg=open
Wed Dec  6 14:46:17 2023 daemon.info hostapd: phy1-ap0: STA XX:XX:XX:XX:XX:XX WPA: pairwise key handshake completed (RSN)
Wed Dec  6 14:46:17 2023 daemon.notice hostapd: phy1-ap0: EAPOL-4WAY-HS-COMPLETED XX:XX:XX:XX:XX:XX
Wed Dec  6 14:46:19 2023 kern.info kernel: [273012.631656] ath10k_ahb a000000.wifi: mac flush vdev 0 drop 0 queues 0x1 ar->paused: 0x0  arvif->paused: 0x0
Wed Dec  6 14:46:47 2023 daemon.info hostapd: phy0-ap0: STA XX:XX:XX:XX:XX:XX IEEE 802.11: deauthenticated due to inactivity (timer DEAUTH/REMOVE)
Wed Dec  6 14:52:20 2023 daemon.warn odhcpd[1345]: No default route present, overriding ra_lifetime!
Wed Dec  6 14:57:35 2023 daemon.warn odhcpd[1345]: No default route present, overriding ra_lifetime!
Wed Dec  6 15:06:49 2023 daemon.warn odhcpd[1345]: No default route present, overriding ra_lifetime!
Wed Dec  6 15:14:22 2023 daemon.warn odhcpd[1345]: No default route present, overriding ra_lifetime!
Wed Dec  6 15:22:46 2023 daemon.warn odhcpd[1345]: No default route present, overriding ra_lifetime!
Wed Dec  6 15:28:18 2023 daemon.warn odhcpd[1345]: No default route present, overriding ra_lifetime!
Wed Dec  6 15:32:41 2023 daemon.notice hostapd: phy1-ap0: AP-STA-DISCONNECTED XX:XX:XX:XX:XX:XX
Wed Dec  6 15:32:41 2023 daemon.info hostapd: phy1-ap0: STA XX:XX:XX:XX:XX:XX IEEE 802.11: disassociated
Wed Dec  6 15:32:41 2023 kern.info kernel: [275794.950567] ath10k_ahb a800000.wifi: mac flush vdev 0 drop 0 queues 0x1 ar->paused: 0x0  arvif->paused: 0x0
Wed Dec  6 15:32:42 2023 daemon.info hostapd: phy1-ap0: STA XX:XX:XX:XX:XX:XX IEEE 802.11: deauthenticated due to inactivity (timer DEAUTH/REMOVE)
Wed Dec  6 15:34:56 2023 daemon.info hostapd: phy1-ap0: STA YY:YY:YY:YY:YY:YY IEEE 802.11: associated (aid 1)
Wed Dec  6 15:34:56 2023 daemon.notice hostapd: phy1-ap0: AP-STA-CONNECTED YY:YY:YY:YY:YY:YY auth_alg=sae
Wed Dec  6 15:34:56 2023 daemon.info hostapd: phy1-ap0: STA YY:YY:YY:YY:YY:YY WPA: pairwise key handshake completed (RSN)
Wed Dec  6 15:34:56 2023 daemon.notice hostapd: phy1-ap0: EAPOL-4WAY-HS-COMPLETED YY:YY:YY:YY:YY:YY
Wed Dec  6 15:34:56 2023 daemon.info dnsmasq-dhcp[1]: DHCPREQUEST(br-lan) 192.168.1.127 YY:YY:YY:YY:YY:YY
Wed Dec  6 15:34:56 2023 daemon.info dnsmasq-dhcp[1]: DHCPACK(br-lan) 192.168.1.127 YY:YY:YY:YY:YY:YY laptop
Wed Dec  6 15:35:15 2023 daemon.err uhttpd[5648]: [info] luci: accepted login on / for root from 192.168.1.127
Wed Dec  6 15:35:36 2023 daemon.notice netifd: Interface 'lte' is setting up now
Wed Dec  6 15:35:36 2023 daemon.notice netifd: lte (14785): Waiting for SIM initialization
Wed Dec  6 15:35:36 2023 daemon.notice netifd: lte (14785): Failed to parse message data
Wed Dec  6 15:35:37 2023 daemon.notice netifd: lte (14785): PIN already verified
Wed Dec  6 15:35:38 2023 daemon.notice netifd: lte (14785): Device does not support 802.3 mode. Informing driver of raw-ip only for wwan0 ..
Wed Dec  6 15:35:38 2023 daemon.notice netifd: lte (14785): Waiting for network registration
Wed Dec  6 15:35:39 2023 daemon.notice netifd: lte (14785): Starting network lte
Wed Dec  6 15:35:40 2023 daemon.notice netifd: lte (14785): Setting up wwan0
Wed Dec  6 15:35:40 2023 daemon.notice netifd: Interface 'lte' is now up
Wed Dec  6 15:35:40 2023 daemon.notice netifd: Network device 'wwan0' link is up
Wed Dec  6 15:35:40 2023 daemon.notice netifd: Network alias 'wwan0' link is up
Wed Dec  6 15:35:40 2023 daemon.info dnsmasq[1]: reading /tmp/resolv.conf.d/resolv.conf.auto
Wed Dec  6 15:35:40 2023 daemon.info dnsmasq[1]: using nameserver 2001:14b8:1000::1#53
Wed Dec  6 15:35:40 2023 daemon.info dnsmasq[1]: using nameserver 2001:14b8:1000::2#53
Wed Dec  6 15:35:40 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test
Wed Dec  6 15:35:40 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion
Wed Dec  6 15:35:40 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost
Wed Dec  6 15:35:40 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local
Wed Dec  6 15:35:40 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid
Wed Dec  6 15:35:40 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind
Wed Dec  6 15:35:40 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan
Wed Dec  6 15:35:40 2023 daemon.notice netifd: Interface 'lte_4' is enabled
Wed Dec  6 15:35:40 2023 daemon.notice netifd: Interface 'lte_4' has link connectivity
Wed Dec  6 15:35:40 2023 daemon.notice netifd: Interface 'lte_4' is setting up now
Wed Dec  6 15:35:40 2023 user.notice firewall: Reloading firewall due to ifup of lte (wwan0)
Wed Dec  6 15:35:40 2023 daemon.info dnsmasq[1]: read /etc/hosts - 12 names
Wed Dec  6 15:35:40 2023 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 4 names
Wed Dec  6 15:35:40 2023 daemon.info dnsmasq[1]: read /tmp/hosts/odhcpd - 4 names
Wed Dec  6 15:35:40 2023 daemon.info dnsmasq-dhcp[1]: read /etc/ethers - 0 addresses
Wed Dec  6 15:35:40 2023 daemon.notice netifd: lte_4 (14886): udhcpc: started, v1.36.1
Wed Dec  6 15:35:40 2023 daemon.notice netifd: lte_4 (14886): udhcpc: broadcasting discover
Wed Dec  6 15:35:40 2023 daemon.notice netifd: lte_4 (14886): udhcpc: broadcasting select for 10.85.186.112, server 10.85.186.113
Wed Dec  6 15:35:41 2023 daemon.notice netifd: lte_4 (14886): udhcpc: lease of 10.85.186.112 obtained from 10.85.186.113, lease time 7200
Wed Dec  6 15:35:41 2023 daemon.notice netifd: Interface 'lte_4' is now up
Wed Dec  6 15:35:41 2023 daemon.info dnsmasq[1]: reading /tmp/resolv.conf.d/resolv.conf.auto
Wed Dec  6 15:35:41 2023 daemon.info dnsmasq[1]: using nameserver 2001:14b8:1000::1#53
Wed Dec  6 15:35:41 2023 daemon.info dnsmasq[1]: using nameserver 2001:14b8:1000::2#53
Wed Dec  6 15:35:41 2023 daemon.info dnsmasq[1]: using nameserver 62.241.198.245#53
Wed Dec  6 15:35:41 2023 daemon.info dnsmasq[1]: using nameserver 62.241.198.246#53
Wed Dec  6 15:35:41 2023 daemon.info dnsmasq[1]: using only locally-known addresses for test
Wed Dec  6 15:35:41 2023 daemon.info dnsmasq[1]: using only locally-known addresses for onion
Wed Dec  6 15:35:41 2023 daemon.info dnsmasq[1]: using only locally-known addresses for localhost
Wed Dec  6 15:35:41 2023 daemon.info dnsmasq[1]: using only locally-known addresses for local
Wed Dec  6 15:35:41 2023 daemon.info dnsmasq[1]: using only locally-known addresses for invalid
Wed Dec  6 15:35:41 2023 daemon.info dnsmasq[1]: using only locally-known addresses for bind
Wed Dec  6 15:35:41 2023 daemon.info dnsmasq[1]: using only locally-known addresses for lan
Wed Dec  6 15:35:41 2023 user.notice firewall: Reloading firewall due to ifupdate of lte (wwan0)
Wed Dec  6 15:35:42 2023 user.notice firewall: Reloading firewall due to ifup of lte_4 (wwan0)
Wed Dec  6 15:36:05 2023 daemon.notice hostapd: phy1-ap0: AP-STA-DISCONNECTED YY:YY:YY:YY:YY:YY
Wed Dec  6 15:36:05 2023 kern.info kernel: [275999.399657] ath10k_ahb a800000.wifi: mac flush vdev 0 drop 0 queues 0x1 ar->paused: 0x0  arvif->paused: 0x0

I discovered and installed watchcat to automatically restart the interface if the connection goes down. Not a solution per se, but let's see if it helps.

Is this working well for you?

Yes, it's been working well with watchcat configured properly. I remember that I had to fiddle a bit to get it right. But since then it's been going smoothly.

Currently the modem has been running for 160 days, the LAN interface has been up for this long and the LTE one (wwan0) for 22 days. It seems that only the logs from the last day are available, so my guess is that the LTE interface was last restarted because of the connection being down 22 days ago.

Anyway, I haven't had issues with the connection being down anymore.

Are you able to plug other devices into the LAN port and use them?
I would like to plug Tenda access points into the LAN ports and use them in bridge mode so that the MF286D assigns all the IP addresses and does all the QoS. This will also avoid Double NAT.

I read a lot of forum posts saying this is not possible under OpenWRT.

Please link to such posts..

Bride mode puts the public IP on one of your ports on the 286D, you need to have a router attached to the 286D, if you do this.

It's usually no point in having more than one port active in this mode, since you get one public IP.

No reason to have OpenWRT installed on the 286D, if you use bridge mode, as you're completely bypassing the router.

I think I got something wrong.
I have 2 Tenda routers (MW6) which come with an app. If I set them to "bridge mode", the tenda routers assign IP addresses from the MF286D's DHCP server to all wifi clients.

This avoids a "Double NAT". I use tenda routers for wifi because they have excellent roaming capabilities (802.11r).

Would my tenda routers not work the same way after switching to openwrt?

They would.