On Wed, Apr 7, 2021 at 5:31 AM Aleksander Morgado <aleksan...@aleksander.es> wrote:
> Hey, > > >> > 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@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@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). > > 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. 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. > >> > >> > >> 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@test:~# qmicli -d /dev/cdc-wdm1 -p --uim-switch-slot=1 > > [/dev/cdc-wdm1] Successfully switched slots > > root@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. > > There is absolutely no cache in libqmi, the qmicli commands just print > what the modem replies :) If anything, it would be an issue in the > modem firmware itself. > > I still would like to see --uim-get-card-status and > --uim-get-slot-status for the failing case, i.e. booting and the slot > status reporting one single SIM even if there are 2. > Get Slot Status: root@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 Physical slot 2: Card status: present Slot status: active Logical slot: 1 ICCID: 89011703278374634023 root@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... 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@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@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: root@EDG4200:~# qmicli -p -d /dev/lte/qmi_a --uim-get-slot-status [/dev/lte/qmi_a] Successfully got slots status [/dev/lte/qmi_a] 2 physical slots found: Physical slot 1: Card status: present Slot status: active Logical slot: 1 ICCID: 89011703278374630625 Protocol: uicc Num apps: 0 Is eUICC: no Physical slot 2: Card status: present Slot status: inactive ICCID: 89440800000000000004 Protocol: uicc Num apps: 0 Is eUICC: no root@EDG4200:~# qmicli -p -d /dev/lte/qmi_a --uim-get-card-status [/dev/lte/qmi_a] 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' ----------------------------------- SIM | primary sim path: /org/freedesktop/ModemManager1/SIM/0 | sim slot paths: slot 1: /org/freedesktop/ModemManager1/SIM/0 (active) | slot 2: /org/freedesktop/ModemManager1/SIM/1 > -- > Aleksander > https://aleksander.es I hope that wasn't too much information. Thanks, Jack
_______________________________________________ ModemManager-devel mailing list ModemManager-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/modemmanager-devel