Detecting Dual SIM on EM7455

Aleksander Morgado aleksander at aleksander.es
Wed Apr 7 20:10:13 UTC 2021


Hey,

>> Could you please test showing the failed case where, upon boot,
>> --uim-get-card-status shows one single SIM instead of two?
>>
> My apologies if this wasn't clear. The above case is the "failing" case. --uim-get-card-status shows two SIMs, it doesn't, however, show the ICCID for that card, which makes it appear from software as if that SIM card is not installed.

Oh, I see. Then the issue has nothing to do with my assumption :)

> I know there are "SIM Detect"  lines on the SIM cards, however, we leave them both floating because we do not know if a SIM will be installed or not during production. We also do not have SIM slots that physically short that pin to ground if a SIM is inserted.

If the modem reports a second SIM is available, even if it does not
read its ICCID, I would assume that the modem is doing some kind of
SIM probing of some sort on the secondary slot too. But then I'm not
sure; I believe I haven't seen before a case where SIM detect isn't
being actively used.

> Get Slot Status:
> root at EDG4600:~# qmicli -p -d /dev/lte/qmi_b --uim-get-slot-status
> [/dev/lte/qmi_b] Successfully got slots status
> [/dev/lte/qmi_b] 2 physical slots found:
>   Physical slot 1:
>      Card status: present
>      Slot status: inactive
>            ICCID: unknown

Ok, present but ICCID unknown, as you said. You're actively querying
the modem with qmicli, so I would rule out a timing issue (e.g. I
don't think the SIM is taking too much to initialize or something like
that).

>   Physical slot 2:
>      Card status: present
>      Slot status: active
>     Logical slot: 1
>            ICCID: 89011703278374634023
>
> root at EDG4600:~# qmicli -p -d /dev/lte/qmi_b --uim-get-card-status
> [/dev/lte/qmi_b] Successfully got card status
> Provisioning applications:
> Primary GW:   slot '1', application '1'
> Primary 1X:   session doesn't exist
> Secondary GW: session doesn't exist
> Secondary 1X: session doesn't exist
> Slot [1]:
> Card state: 'present'
> UPIN state: 'not-initialized'
> UPIN retries: '0'
> UPUK retries: '0'
> Application [1]:
> Application type:  'usim (2)'
> Application state: 'ready'
> Application ID:
> A0:00:00:00:87:10:02:FF:FF:FF:FF:89:03:02:00:00
> Personalization state: 'ready'
> UPIN replaces PIN1: 'no'
> PIN1 state: 'disabled'
> PIN1 retries: '3'
> PUK1 retries: '10'
> PIN2 state: 'enabled-not-verified'
> PIN2 retries: '3'
> PUK2 retries: '10'
> Application [2]:
> Application type:  'isim (5)'
> Application state: 'detected'
> Application ID:
> A0:00:00:00:87:10:04:FF:FF:FF:FF:89:03:02:00:00
> Personalization state: 'unknown'
> UPIN replaces PIN1: 'no'
> PIN1 state: 'disabled'
> PIN1 retries: '3'
> PUK1 retries: '10'
> PIN2 state: 'not-initialized'
> PIN2 retries: '0'
> PUK2 retries: '0'
> Slot [2]:
> Card state: 'absent'
> UPIN state: 'not-initialized'
> UPIN retries: '0'
> UPUK retries: '0'
>
> *** Switch primary to slot 1
> A potentially unrelated issue is that it appears MM restarts when switching slots on a modem that needs to switch profiles as a result:
> Apr  7 10:56:07 EDG4600 ModemManager[15523]: <info>  ModemManager (version 1.16.2) starting in system bus...
>
> I have not looked into this, only just noticed as I switched the slot...
>

Oh that looks like a segfault. If you could get a backtrace and MM
debug log after running with "gdb --args /usr/sbin/ModemManager debug"
(then "r" for run, wait for it to crash, and "bt" for backtrace).
you'll need to make sure the system-started MM is stopped before doing
that also (e.g. "sudo systemctl stop ModemManager if using systemd")

> After changing SIM slots only slot info 1 is shown. If the profile doesn't switch, then the ICCID for both SIM's will be shown
(which is the example I shared previously of --uim-get-card-status):
> root at EDG4600:~# qmicli -p -d /dev/lte/qmi_b --uim-get-card-status
> [/dev/lte/qmi_b] Successfully got card status
> Provisioning applications:
> Primary GW:   slot '1', application '1'
> Primary 1X:   session doesn't exist
> Secondary GW: session doesn't exist
> Secondary 1X: session doesn't exist
> Slot [1]:
> Card state: 'present'
> UPIN state: 'not-initialized'
> UPIN retries: '0'
> UPUK retries: '0'
> Application [1]:
> Application type:  'usim (2)'
> Application state: 'ready'
> Application ID:
> A0:00:00:00:87:10:02:FF:86:FF:FF:89:FF:FF:FF:FF
> Personalization state: 'ready'
> UPIN replaces PIN1: 'no'
> PIN1 state: 'disabled'
> PIN1 retries: '3'
> PUK1 retries: '3'
> PIN2 state: 'enabled-not-verified'
> PIN2 retries: '3'
> PUK2 retries: '3'
> Slot [2]:
> Card state: 'absent'
> UPIN state: 'not-initialized'
> UPIN retries: '0'
> UPUK retries: '0'
> root at EDG4600:~# qmicli -p -d /dev/lte/qmi_b --uim-get-slot-status
> [/dev/lte/qmi_b] Successfully got slots status
> [/dev/lte/qmi_b] 2 physical slots found:
>   Physical slot 1:
>      Card status: present
>      Slot status: active
>     Logical slot: 1
>            ICCID: 89860000502000180722
>   Physical slot 2:
>      Card status: present
>      Slot status: inactive
>            ICCID: unknown
>
> An EM7511 with dual SIM shows the ICCID for both SIM's on bootup:

Are you using the latest EM7455 firmware available? Maybe this is an
issue already solved by a newer firmware.


-- 
Aleksander
https://aleksander.es


More information about the ModemManager-devel mailing list