Hi,
While testing emergency call support in the Quectel EG25-G, we found the modem is unable to place an emergency call if there’s no SIM.
If I try to place the call via AT (ATDT112) the response from the modem is NO CARRIER
If I try to place the call via QMI, using ModemManager, the modem answers with “NoNetworkFound”
If I make a call with a SIM inserted, whether it is a working SIM or an unregistered one, the call goes through perfectly fine.
Here’s a log of the call attempt using ModemManager in a Pinephone:
May 19 09:11:47 pine64-pinephone daemon.info [20904]: <info> [1652951507.509993] [modem0/call0] user request to start call
May 19 09:11:47 pine64-pinephone daemon.debug [20904]: <debug> [1652951507.510156] [modem0] voice call to 112 allowed: emergency call number always valid
May 19 09:11:47 pine64-pinephone daemon.info [20904]: <info> [1652951507.510210] [modem0/call0] call state changed: unknown -> dialing (outgoing-started)
May 19 09:11:47 pine64-pinephone daemon.debug [20904]: <debug> [1652951507.510699] [modem0/call0] starting call
May 19 09:11:47 pine64-pinephone daemon.debug [20904]: [/dev/cdc-wdm0] Sent message... <<<<<< RAW: <<<<<< length = 19 <<<<<< data = 01:12:00:00:09:02:00:01:00:20:00:06:00:01:03:00:31:31:32
May 19 09:11:47 pine64-pinephone daemon.debug [20904]: [/dev/cdc-wdm0] Sent generic request (translated)... <<<<<< QMUX: <<<<<< length = 18 <<<<<< flags = 0x00 <<<<<< service = "voice" <<<<<< client = 2 <<<<<< QMI: <<<<<< flags = "none" <<<<<< transaction = 1 <<<<<< tlv_length = 6 <<<<<< message = "Dial Call" (0x0020) <<<<<< TLV: <<<<<< type = "Calling Number" (0x01) <<<<<< length = 3 <<<<<< value = 31:31:32 <<<<<< translated = 112
May 19 09:11:47 pine64-pinephone daemon.debug [20904]: <debug> [1652951507.511928] [modem0] setting up in-call state...
May 19 09:11:47 pine64-pinephone daemon.debug [20904]: <debug> [1652951507.512216] [modem0] modem is now in-call state
May 19 09:11:47 pine64-pinephone daemon.debug [20904]: [/dev/cdc-wdm0] Received message... <<<<<< RAW: <<<<<< length = 53 <<<<<< data = 01:34:00:80:09:02:04:01:00:2E:00:28:00:01:08:00:01:01:04:00:01:06:00:00:10:07:00:01:01:00:03:31:31:32:27:03:00:01:01:00:2B:0A:00:01:01:00:00:00:01:03:31:31:32
May 19 09:11:47 pine64-pinephone daemon.debug [20904]: [/dev/cdc-wdm0] Received generic indication (translated)... <<<<<< QMUX: <<<<<< length = 52 <<<<<< flags = 0x80 <<<<<< service = "voice" <<<<<< client = 2 <<<<<< QMI: <<<<<< flags = "indication" <<<<<< transaction = 1 <<<<<< tlv_length = 40 <<<<<< message = "All Call Status" (0x002E) <<<<<< TLV: <<<<<< type = "Call Information" (0x01) <<<<<< length = 8 <<<<<< value = 01:01:04:00:01:06:00:00 <<<<<< translated = { [0] = '[ id = '1' state = 'cc-in-progress' type = 'voice' direction = 'mo' mode = '(null)' multipart_indicator = 'no' als = '1' ] '} <<<<<< TLV: <<<<<< type = "Remote Party Number" (0x10) <<<<<< length = 7 <<<<<< value = 01:01:00:03:31:31:32 <<<<<< translated = { [0] = '[ id = '1' presentation_indicator = 'allowed' type = '112' ] '} <<<<<< TLV: <<<<<< type = 0x27 <<<<<< length = 3 <<<<<< value = 01:01:00 <<<<<< TLV: <<<<<< type = 0x2b <<<<<< length = 10 <<<<<< value = 01:01:00:0
May 19 09:11:47 pine64-pinephone daemon.debug [20904]: [/dev/cdc-wdm0] Received message... <<<<<< RAW: <<<<<< length = 20 <<<<<< data = 01:13:00:80:09:02:02:01:00:20:00:07:00:02:04:00:01:00:0D:00
May 19 09:11:47 pine64-pinephone daemon.debug [20904]: [/dev/cdc-wdm0] Received generic response (translated)... <<<<<< QMUX: <<<<<< length = 19 <<<<<< flags = 0x80 <<<<<< service = "voice" <<<<<< client = 2 <<<<<< QMI: <<<<<< flags = "response" <<<<<< transaction = 1 <<<<<< tlv_length = 7 <<<<<< message = "Dial Call" (0x0020) <<<<<< TLV: <<<<<< type = "Result" (0x02) <<<<<< length = 4 <<<<<< value = 01:00:0D:00 <<<<<< translated = FAILURE: NoNetworkFound
May 19 09:11:47 pine64-pinephone daemon.warn [20904]: <warn> [1652951507.569242] [modem0/call0] couldn't start call: Couldn't create call: QMI protocol error (13): 'NoNetworkFound'
May 19 09:11:47 pine64-pinephone daemon.info [20904]: <info> [1652951507.569336] [modem0/call0] call state changed: dialing -> terminated (unknown)
May 19 09:11:47 pine64-pinephone daemon.debug [20904]: <debug> [1652951507.570639] [modem0] cleaning up in-call state...
May 19 09:11:47 pine64-pinephone daemon.debug [20904]: <debug> [1652951507.570893] [modem0] modem is no longer in-call state
Of course, having no SIM inserted the modem is unable to scan for networks and will return an empty URC when trying to retrieve them via AT commands.
The modem should be able to place emergency calls no matter the state of the SIM slot, but maybe we’re missing something and there’s some other command/procedure that needs to be run so the modem can attach to the first network it finds when there’s no SIM to be able to place the call
Are we missing some step? If so, can you tell the procedure to place an emergency call with no SIM?