Detecting Dual SIM on EM7455

Jack Broderick jbroderick at councilrock.com
Tue Apr 6 22:00:10 UTC 2021


Hello,

On Tue, Apr 6, 2021 at 5:51 PM Aleksander Morgado <aleksander at aleksander.es>
wrote:

> Hey,
>
> On Tue, Apr 6, 2021 at 11:33 PM Jack Broderick
> <jbroderick at councilrock.com> wrote:
> >
> > Hello,
> >
> > I have recently upgraded to 1.16.2 on OpenWRT in order to utilize the
> extended SIM features. We integrate both the EM7511 and EM/MC7455. We have
> identified that on boot, the EM7511 will detect both SIM's installed, with
> the EM7455, however, it requires switching between the slots to detect. We
> previously identified this issue when using just qmicli in order to read
> the SIM slots.
> >
> > We resolved this issue by "toggling" the SIM slot on boot so qmicli
> would pick up both slots.
>
> You're saying that you need to switch SIM on boot, e.g. to the
> secondary SIM, so that the modem ends up reporting that 2 SIMs are
> active? If that's the case, I have a theory.
>

The idea isn't necessarily that both need to be active, it's that we would
like to see the information for both SIM's that are installed at all times.

>
> > It is a bit of a hack, but it works. This becomes an issue, when using
> AT!IMPREF="AUTO-SIM", and using two SIM's that use different profiles. For
> example, if SIM1=AT&T and SIM2=GENERIC, when switching SIM's the modem
> appears to reboot. It is not just a reprobe by ModemManager, the usb device
> detaches and re-attaches.
>
> That is actually expected when using AUTO-SIM, as the "active" SIM
> mandates which carrier config is loaded in the device. If you're
> switching SIMs actively, the modem will reset itself to boot with the
> new carrier config automatically selected.
>

Okay, that makes sense, ideally we would be able to still "see" what is in
the other SIM slot after this reset.

>
> >
> > The interesting thing is, with the EM7511, both SIM's are reported by
> both mmcli and qmicli without needing to "toggle". I am curious if this
> issue has been seen in any other testing.
> >
> > EM7455 After Boot, with modem on SIM1 before reboot:
> >   -----------------------------------
> >   SIM      |        primary sim path:
> /org/freedesktop/ModemManager1/SIM/0
> >            |          sim slot paths: slot 1:
> /org/freedesktop/ModemManager1/SIM/0 (active)
> >            |                          slot 2: none
> >
> > After running mmcli -m 0 --set-primary-sim-slot=2
> >
> >   -----------------------------------
> >   SIM      |        primary sim path:
> /org/freedesktop/ModemManager1/SIM/2
> >            |          sim slot paths: slot 1:
> /org/freedesktop/ModemManager1/SIM/1
> >            |                          slot 2:
> /org/freedesktop/ModemManager1/SIM/2 (active)
> >
> > The modem did not reset because AT!IMPREF="GENERIC" was set, the modem
> did re-enumerate in modemanager, however.
> >
>
> Could you run this qmicli command on the EM7455 after boot?
> $ qmicli -d /dev/cdc-wdm0 -p --uim-get-card-status
> $ qmicli -d /dev/cdc-wdm0 -p --uim-get-slot-status
>

root at test:~# qmicli -d /dev/cdc-wdm1 -p --uim-get-card-status
[/dev/cdc-wdm1] 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:06:19: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: '10'
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:07:03:00:00
Personalization state: 'unknown'
UPIN replaces PIN1: 'no'
PIN1 state: 'not-initialized'
PIN1 retries: '0'
PUK1 retries: '0'
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'
root at test:~# qmicli -d /dev/cdc-wdm1 -p --uim-get-slot-status
[/dev/cdc-wdm1] Successfully got slots status
[/dev/cdc-wdm1] 2 physical slots found:
  Physical slot 1:
     Card status: present
     Slot status: inactive
           ICCID: unknown
  Physical slot 2:
     Card status: present
     Slot status: active
    Logical slot: 1
           ICCID: 8901260882270113639

This is after reboot where Slot 2 as the active slot before reboot (I had
just rebooted with that SIM active while debugging).

>
> My assumption is that you're seeing one single SIM reported because
> --uim-get-slot-status reports one single SIM. BUT, does
> --uim-get-card-status report 2 SIMs? ModemManager currently ignores
> the 2nd SIM in --uim-get-card-status, because in this case both SIMs
> are really active (unlike the slot status case). Right now MM doesn't
> support the Dual SIM Dual Active case, although it shouldn't be very
> difficult to support that (e.g. selecting which SIM will use the data
> connection done via the GW provisioning session selection and such).
>
> So when you manually toggle to select the 2nd SIM we're using
> --uim-switch-slot and the setup switches to Dual SIM Single Active, so
> the slots status ends up reporting 2 SIMs now (and card status would
> report 1 single SIM).
>
> Is this assumption in track? If it isn't, it could be some timing
> issue of some sort, MM debug logs would help.
>

After switching:
root at test:~# qmicli -d /dev/cdc-wdm1 -p --uim-switch-slot=1
[/dev/cdc-wdm1] Successfully switched slots
root at test:~# qmicli -d /dev/cdc-wdm1 -p --uim-get-slot-status
[/dev/cdc-wdm1] Successfully got slots status
[/dev/cdc-wdm1] 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: 8901260882270113639

>From this, it appears that it may be more of an issue with libqmi than
anything else. Maybe not even an issue but the behavior seems to be it will
"cache" information for the active SIM and retain that information when the
other sim is active.


> --
> Aleksander
> https://aleksander.es


Jack
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/modemmanager-devel/attachments/20210406/06e2a54c/attachment-0001.htm>


More information about the ModemManager-devel mailing list