Hello,
We have an application running on the Balena Fin v1.1.1 that uses a Quectel EC25 modem and we have deployed it successfully in multiple countries. We recently tried replacing the EC25 with an EG21-G and an EG25-G into two separate products, and they connected and ran fine for about 24 hours but then disconnected and have remained disconnected ever since (4 days). I was able to connect serially to determine the state, and here are some things I found.
The “mmcli -m 0” command shows the Status state is “enabling”, but no “bearer” is listed in the output, which is unusual. Over the course of an hour or two, and through various commands I have tried, the state has always been “enabling”.
Here’s a snippet from the output of “journalctl -u ModemManager --no-pager”:
Jun 07 15:52:18 db1f1bd ModemManager[1400]: [modem0] state changed (enabling -> disabled)
Jun 07 15:52:18 db1f1bd ModemManager[1400]: [modem0] simple connect started...
Jun 07 15:52:18 db1f1bd ModemManager[1400]: [modem0] simple connect state (3/8): enable
Jun 07 15:52:18 db1f1bd ModemManager[1400]: [modem0] state changed (disabled -> enabling)
Jun 07 15:52:18 db1f1bd ModemManager[1400]: [modem0] simple connect started...
Jun 07 15:52:18 db1f1bd ModemManager[1400]: [modem0] simple connect state (4/8): wait to get fully enabled
Jun 07 15:52:18 db1f1bd ModemManager[1400]: [modem0] state changed (enabling -> disabled)
Jun 07 15:52:18 db1f1bd ModemManager[1400]: [modem0] simple connect started...
Jun 07 15:52:18 db1f1bd ModemManager[1400]: [modem0] simple connect state (3/8): enable
Jun 07 15:52:18 db1f1bd ModemManager[1400]: [modem0] state changed (disabled -> enabling)
Jun 07 15:52:18 db1f1bd ModemManager[1400]: [modem0] simple connect started...
Jun 07 15:52:18 db1f1bd ModemManager[1400]: [modem0] simple connect state (4/8): wait to get fully enabled
Jun 07 15:52:19 db1f1bd ModemManager[1400]: [modem0] state changed (enabling -> disabled)
This cycle repeats about 4x every second (from “simple connect started” to “simple connect state (4/8): wait to get fully enabled”).
I tried issuing the following commands, and got the following responses:
mmcli -m 0 --set-power-state-low
"error: couldn't set new power state in the modem: 'GDBus.Error:org.freedesktop.ModemManager1.Error.Core.WrongState: Cannot set power state: not in disabled state'"
mmcli -m 0 --simple-connect="apn={our_wireless_apn}"
"error: couldn't connect the modem: 'GDBus.Error:org.freedesktop.libqmi.Error.Protocol.InvalidTransition: Couldn't set operating mode: QMI protocol error (60): 'InvalidTransition''"
mmcli -m 0 -d
"successfully disabled the modem"
mmcli -m 0 -e
"error: couldn't enable the modem: 'GDBus.Error:org.freedesktop.libqmi.Error.Protocol.InvalidTransition: Couldn't set operating mode: QMI protocol error (60): 'InvalidTransition''"
mmcli -m 0 r
"successfully reseted the modem"
Although the reset appeared to work, when I query “mmcli -m 0” again, after the reset, the Status state is still “enabling”.
I have looked at our /etc/NetworkManager/system-connections/ cell connection file and it looks the same as it is in any of our working EC25 products.
The cell modem appears to be in a funky state, and even the reset command (-r) cannot seem to recover it. If I physically remove the power cord and plug it in again, the cell modem connects and comes online again just fine.
I’m not sure how it got into this state, and how to recover it once it gets into this state. (Power cycling is not an option for us.) Has anyone seen anything like this? Any suggestions on anything else I could try?
I will also contact the modem vendor to see if we should update the modem firmware.