Unable to reliably send SMS
Hello,
I am trying to reliably send SMS when the radio coverage is poor or intermittent and I have trouble detecting if the SMS has been sent or not. It works fine when the signal is good.
Test context:
- ModemManager version 1.16.0
- libqmi version 1.28.2
- Modem quectel EC25-E
Here is my test case:
[power up]
[disconnect antenna]
[]$ /usr/libexec/qmi-proxy --no-exit --verbose > qmi-proxy.log &
[]$ ModemManager --debug --log-file mm.log &
[]$ mmcli -m 0 -e
successfully enabled the modem
[]$ mmcli -m 0 --messaging-create-sms="number=*REDACTED*,text=test_no_antenna"
Successfully created new SMS: /org/freedesktop/ModemManager1/SMS/0
[]$ time mmcli -s 0 --send
error: couldn't send the SMS: 'Timeout was reached'
Command exited with non-zero status 1
real 0m 30.04s
user 0m 0.01s
sys 0m 0.00s
[reconnect antenna]
[SMS is received by recipient]
[]$ mmcli -s 0
-----------------------------
General | path: /org/freedesktop/ModemManager1/SMS/0
-----------------------------
Content | number: *REDACTED*
| text: test_no_antenna
-----------------------------
Properties | pdu type: submit
| delivery report: not requested
When sending the message without radio coverage, calling mm_sms_send
or mmcli --send
time outs and report that the SMS has not been sent. But when the modem is reattached to the network, the SMS is received by the recipient. On the ModemManager side, the SMS is still shown as not sent and can be sent again. After the send timeout, the SMS can be removed with mmcli --messaging-delete-sms
, it will still be received by the recipient.
Am I missing something in the API? What is the correct way to send only one message in poor signal condition?
The logs: