The Call object gets incorrectly terminated
With BM818, libqmi 1.24.2 and MM 1.12.2:
ModemManager[3309]: <debug> [1579324133.242462] Added call at '/org/freedesktop/ModemManager1/Call/3'
ModemManager[3309]: <info> [1579324133.270003] user request to start call
ModemManager[3309]: <debug> [1579324133.270156] voice call to 666666666 allowed
ModemManager[3309]: <info> [1579324133.270204] Call state changed: unknown -> dialing (outgoing-started)
ModemManager[3309]: <debug> [1579324133.270485] (ttyUSB1) device open count is 2 (open)
ModemManager[3309]: <debug> [1579324133.270835] Setting up in-call state...
ModemManager[3309]: <debug> [1579324133.270887] Setting up in-call ports context
ModemManager[3309]: <debug> [1579324133.270928] (ttyUSB1) device open count is 3 (open)
ModemManager[3309]: <debug> [1579324133.270995] (ttyUSB1) Setting voice in-call unsolicited events handlers
ModemManager[3309]: <debug> [1579324133.271047] (ttyUSB1): --> 'ATD666666666;<CR>'
ModemManager[3309]: <debug> [1579324133.271154] modem is now in-call state
ModemManager[3309]: <debug> [1579324133.773429] (ttyUSB1): <-- '<CR><LF>OK<CR><LF>'
ModemManager[3309]: <info> [1579324133.773739] call is started
ModemManager[3309]: <debug> [1579324133.773992] (ttyUSB1) device open count is 2 (close)
ModemManager[3309]: <debug> [1579324134.028806] (ttyUSB2): <-- '<CR><LF>^MODE: 5<CR><LF>'
ModemManager[3309]: <debug> [1579324135.053260] (ttyUSB0): <-- 60 42 00 46 26 a7 28 87 dc aa 51 eb 00 03 46 26 84 a6 b0 dc aa 51 eb 00 04 46 26 de 32 d7 dc aa 51 eb 00 07 46 26 6d 2c e7 dc aa 51 eb 00 01 46 26 01 9b f0 dc aa 51 eb 00 05 46 26 94 5b 92 dd aa 51 eb 00 00 21 48 7e
ModemManager[3309]: <debug> [1579324135.464032] 1 calls being established: call list polling required
ModemManager[3309]: <debug> [1579324135.464186] (ttyUSB1) device open count is 3 (open)
ModemManager[3309]: <debug> [1579324135.464323] (ttyUSB1): --> 'AT+CLCC<CR>'
ModemManager[3309]: <debug> [1579324135.467297] (ttyUSB2): <-- '<CR><LF>RING_BACK<CR><LF>'
ModemManager[3309]: <debug> [1579324135.820692] (ttyUSB1): <-- '<CR><LF>+CLCC: 1,1,0,1,0,"",128<CR><LF>+CLCC: 2,0,3,0,0,"666666666",129<CR><LF><CR><LF>OK<CR><LF>'
ModemManager[3309]: <debug> [1579324135.821149] Reported 2 ongoing calls
ModemManager[3309]: <debug> [1579324135.821227] call at index 1: direction incoming, state active, number n/a
ModemManager[3309]: <debug> [1579324135.821291] call at index 2: direction outgoing, state ringing-out, number 666666666
ModemManager[3309]: <info> [1579324135.821373] Call state changed: dialing -> terminated (unknown)
ModemManager[3309]: <warn> [1579324135.821752] unexpected incoming call to number 'n/a' reported in call list: state active
ModemManager[3309]: <warn> [1579324135.821822] unexpected outgoing call to number '666666666' reported in call list: state ringing-out
ModemManager[3309]: <debug> [1579324135.821900] (ttyUSB1) device open count is 2 (close)
ModemManager[3309]: <debug> [1579324135.822287] Cleaning up in-call state...
ModemManager[3309]: <debug> [1579324135.822359] Cleaning up in-call ports context
ModemManager[3309]: <debug> [1579324135.822447] (ttyUSB1) Removing voice in-call unsolicited events handlers
ModemManager[3309]: <debug> [1579324135.822511] (ttyUSB1) device open count is 1 (close)
ModemManager[3309]: <debug> [1579324135.822626] modem is no longer in-call state
ModemManager[3309]: <debug> [1579324135.841418] Deleted call at '/org/freedesktop/ModemManager1/Call/3'
ModemManager[3309]: <debug> [1579324138.467086] no calls being established: call list polling stopped
The connection is initiated anyway and the other party's phone starts to ring.
When the other party rejects the call, log shows:
ModemManager[3309]: <debug> [1579324149.133263] (ttyUSB2): <-- '<CR><LF>+DISC: 4,0,0,17,"666666666",129<CR><LF><CR><LF><CR><CR><LF>BUSY<CR><CR><LF><CR><LF>'
ModemManager[3309]: <debug> [1579324149.133627] Got failure code 1: No carrier
The difference with a working state appears to be this part:
working
ModemManager[3309]: <debug> [1579324072.845185] Reported 2 ongoing calls
ModemManager[3309]: <debug> [1579324072.845263] call at index 1: direction incoming, state active, number n/a
ModemManager[3309]: <debug> [1579324072.845326] call at index 2: direction outgoing, state dialing, number 666666666
ModemManager[3309]: <debug> [1579324072.845419] call info matched (matched direction/state yes, matched index no, matched terminated no) with call at '/org/freedesktop/ModemManager1/Call/2'
ModemManager[3309]: <debug> [1579324072.845482] index set: 2
non-working (skips the "dialing" state and goes directly to "ringing-out"):
ModemManager[3309]: <debug> [1579324135.821149] Reported 2 ongoing calls
ModemManager[3309]: <debug> [1579324135.821227] call at index 1: direction incoming, state active, number n/a
ModemManager[3309]: <debug> [1579324135.821291] call at index 2: direction outgoing, state ringing-out, number 666666666
ModemManager[3309]: <info> [1579324135.821373] Call state changed: dialing -> terminated (unknown)
ModemManager[3309]: <warn> [1579324135.821752] unexpected incoming call to number 'n/a' reported in call list: state active
ModemManager[3309]: <warn> [1579324135.821822] unexpected outgoing call to number '666666666' reported in call list: state ringing-out
It doesn't happen all the time, but doesn't seem hard to trigger either.