Issues with modem reset
Piotr Figiel
figiel at gmail.com
Wed Jun 28 08:27:39 UTC 2017
Hi Aleksander, modemmanager-devel,
we're encountering an issue with modem manager when used with network
manager, such that sometimes the modem's secondary port becomes
unusable from modem manager after modem is reset with mmcli -r.
The modem responds fine to AT commands when asked directly, though
for some reason MM can't handle it any more after the modem restarts,
subsequent queries which require secondary port fail. Additionally
after the pppd dies on the only port which works from MM point of view
the modem is no longer usable and all requests fail with "Resource
temporarily unavailable" in MM log.
The issue is sometimes reproducible (1/20 times to 1/2 times) by
running mmcli -r in loop with delays of 60 seconds when a connection
is configured on NM and it's active. It seems the exact value of the
delay between resets makes a difference if the issue happens or not.
Modem in question is Telit HE910.
For example when running this loop:
a=0
function get_modem_path() {
mmcli -L | grep /org/freedesktop/ | (read modem_path rest;
echo "$modem_path")
}
while mmcli -r -m $(get_modem_path); do
sleep 60
a=$(( a + 1 ))
echo "Restarting again"
done
echo "reset failed after $a resets"
exit 1
It starts to fail with:
mmcli -r -m /org/freedesktop/ModemManager1/Modem/8
error: couldn't reset the modem:
'GDBus.Error:org.freedesktop.ModemManager1.Error.Core.Connected: No AT
port available to run command'
At some iteration.
This is worrying as it indicates MM can't handle modem restart
situation well, and sometimes HE910 resets spontaneously.
Debug log from the issue is here:
https://github.com/figiel/temp/blob/mm/mm-debug.log.xz?raw=true it's
reproduced on 26e41b8b186ee875c82cea4f18fee7e287eb4362 (top mm-1.6).
You can see there 8 AT#REBOOT and after the last one once the
connection is established no more reset requests are accepted and 'No
AT port available to run command' appears.
Also mmcli on that modem in this state shows everything should be fine:
| ports: 'ttyACM3 (at), ttyACM0 (at), ttyACM1
(unknown), ttyACM2 (unknown)'
I checked it with recent 1.6 branch and also on past couple 1.6
releases and it seems to be reproducible there as well (I wasn't able
to find a commit where it worked, though it seems to fail differently
between versions).
I'm debugging it now but hints would be appreciated.
Best regards, Piotr Figiel.
More information about the ModemManager-devel
mailing list