Dual SIM on Telit LE910C1-EU

Ulrich Mohr u.mohr at semex-engcon.com
Wed Jul 13 09:47:30 UTC 2022


Hey Aleksander,

thank you for the reply. See comments below...


>> I use a telit LE910C1-EU with mbim interface. This modem has support for two sim slots and we want to use this feature with ModemManager (I am using Version 1.19.0)
>>
>> What I want to do is
>>
>> find out which slot is currently active
>> switch active slot if possible
>>
>> I am able to switch the slot using AT commands directly. Using qmicli works as well. But I am not able to use mmcli to do so.
>>  From looking at the code, it seems that using AT commands is not implemented in the telit plugin and using qmi-over-mbim is not implemented for the uim service. It seems to me that there is some code for that in the mbim broadband modem, but I don't understand how that can work, since the service QMI_SERVICE_UIM is not included in the list of QMI service in the mbim implementation. I tried to include the service in the list, but that caused modem manager to crash since the modem is not a QMI modem (invalid cast)
>>
> That's a bug to fix. QMI_SERVICE_UIM should definitely be in that
> qmi_services list in MMBroadbandModemMbim, otherwise the shared utils
> using the UIM client will all fail.
That matches my expectation that it will not work without the 
QMI_SERVICE_UIM in the list of qmi services.
> What's the exact crash you got
> when doing that? can you get a backtrace?

Here is the backtrace when I iclude the QMI_SERVICE_UIM in the list of 
services:

(gdb) back
#0  mm_broadband_modem_qmi_peek_port_qmi (self=0x5cc270) at 
../../../../../../../modemmanager-dev/src/mm-broadband-modem-qmi.c:218
#1  0x004b6cee in ensure_qmi_client (task=task at entry=0x5bb1f0, 
self=self at entry=0x579150, service=service at entry=QMI_SERVICE_UIM, 
o_client=o_client at entry=0xbeffe890)
     at ../../../../../../../modemmanager-dev/src/mm-sim-qmi.c:64
#2  0x004b8e10 in wait_sim_ready (_self=<optimized out>, 
callback=<optimized out>, user_data=0x579810) at 
../../../../../../../modemmanager-dev/src/mm-sim-qmi.c:208
#3  0x0047b5fe in interface_initialization_step (task=0xb4b0db60) at 
../../../../../../../modemmanager-dev/src/mm-iface-modem.c:5739
#4  0xb6d803a8 in ?? () from /usr/lib/libgio-2.0.so.0

>> So the question is how to implement that dual SIM support? To me, the most promising seems to support the UIM service via qmi-over-mbim, but it is not clear to me what the best way is to do so? Do you have some guidance how to proceed?
>>
> The MMBroadbandModemMbim object already supports multi-SIM management
> using the Microsoft MBIM extensions (e.g. device slot mappings query).

When I try to use any of the microsoft extensions, I get a failure from 
mbimcli.

This is what I get when I query the device services:

 > mbimcli -d /dev/cdc-wdm0 --query-device-services
[/dev/cdc-wdm0] Device services retrieved:
     Max DSS sessions: '0'
             Services: (13)

                   Service: 'basic-connect'
                      UUID: [a289cc33-bcbb-8b4f-b6b0-133ec2aae6df]:
               DSS payload: 0
         Max DSS instances: 0
                      CIDs: device-caps (1),
                            subscriber-ready-status (2),
                            radio-state (3),
                            pin (4),
                            pin-list (5),
                            home-provider (6),
                            preferred-providers (7),
                            visible-providers (8),
                            register-state (9),
                            packet-service (10),
                            signal-state (11),
                            connect (12),
                            provisioned-contexts (13),
                            ip-configuration (15),
                            device-services (16),
                            device-service-subscribe-list (19),
                            packet-statistics (20),
                            network-idle-hint (21),
                            emergency-mode (22),
                            ip-packet-filters (23)

                   Service: 'sms'
                      UUID: [533fbeeb-14fe-4467-9f90-33a223e56c3f]:
               DSS payload: 0
         Max DSS instances: 0
                      CIDs: configuration (1),
                            read (2),
                            send (3),
                            delete (4),
                            message-store-status (5)

                   Service: 'ussd'
                      UUID: [e550a0c8-5e82-479e-82f7-10abf4c3351f]:
               DSS payload: 0
         Max DSS instances: 0
                      CIDs: ussd (1)

                   Service: 'phonebook'
                      UUID: [4bf38476-1e6a-41db-b1d8-bed289c25bdb]:
               DSS payload: 0
         Max DSS instances: 0
                      CIDs: configuration (1),
                            read (2),
                            delete (3),
                            write (4)

                   Service: 'auth'
                      UUID: [1d2b5ff7-0aa1-48b2-aa52-50f15767174e]:
               DSS payload: 0
         Max DSS instances: 0
                      CIDs: aka (1),
                            sim (3)

                   Service: 'qmi'
                      UUID: [d1a30bc2-f97a-6e43-bf65-c7e24fb0f0d3]:
               DSS payload: 0
         Max DSS instances: 0
                      CIDs: msg (1)

                   Service: 'ms-host-shutdown'
                      UUID: [883b7c26-985f-43fa-9804-27d7fb80959c]:
               DSS payload: 0
         Max DSS instances: 0
                      CIDs: notify (1)

                   Service: 'unknown'
                      UUID: [2d0c12c9-0e6a-495a-915c-8d174fe5d63c]:
               DSS payload: 0
         Max DSS instances: 0
                      CIDs: 1, 2

                   Service: 'ms-firmware-id'
                      UUID: [e9f7dea2-feaf-4009-93ce-90a3694103b6]:
               DSS payload: 0
         Max DSS instances: 0
                      CIDs: get (1)

                   Service: 'atds'
                      UUID: [5967bdcc-7fd2-49a2-9f5c-b2e70e527db3]:
               DSS payload: 0
         Max DSS instances: 0
                      CIDs: signal (1),
                            location (2),
                            operators (3),
                            rat (4),
                            register-state (9),
                            unknown (10)

                   Service: 'qdu'
                      UUID: [6427015f-579d-48f5-8c54-f43ed1e76f83]:
               DSS payload: 0
         Max DSS instances: 0
                      CIDs: update-session (1),
                            file-open (2),
                            file-write (3)

                   Service: 'ms-uicc-low-level-access'
                      UUID: [c2f6588e-f037-4bc9-8665-f4d44bd09367]:
               DSS payload: 0
         Max DSS instances: 0
                      CIDs: atr (1),
                            open-channel (2),
                            close-channel (3),
                            apdu (4),
                            terminal-capability (5)

                   Service: 'unknown'
                      UUID: [54656c69-744d-4249-4d45-7874656e6453]:
               DSS payload: 0
         Max DSS instances: 0
                      CIDs: 1

Seems to me it is in fact not available on that modem.

> But, it also supports multi-SIM management using QMI over MBIM, which
> is actually the preferred way of doing it; i.e.:
>
>   * If built with QMI and QMI-over-MBIM support:
>      ** It'll try QMI-based multi-SIM management first always.
>      ** If QMI-based multi-SIM management fails (e.g. device doesn't
> support QMI-over-MBIM), it falls back to MBIM-based multi-SIM
> management.
>   * If not built with QMI or QMI-over-MBIM support, it will use
> MBIM-based multi-SIM management by default.
>
> In your case it didn't try QMI over MBIM because of the missing UIM
> client allocation in MMBroadbandModemMbim.
So then the way to go (for me) is to fix the QMI-over-MBIM issue.
>
>> I attach parts of the starting log ....
>>
> Please try to get a debug-level log always:
> https://modemmanager.org/docs/modemmanager/debugging/
>
>> ModemManager[17594]: <info>  [modem0] QMI-based capability and mode switching support enabled
>> ModemManager[17594]: <warn>  [modem0] couldn't query SIM slots: NoDeviceSupport
> This error actually shows that no QMI over MBIM was tried, as the
> NoDeviceSupport is actually a MBIM error, so it only tried MBIM, and
> maybe that specific Microsoft extension isn't supported by the
> firmware.
I think so, see above...
>
> We need to fix that UIM client allocation issue, could you please dig into that?
> And open a new issue in gitlab for that please?

Sure.

https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/592




More information about the ModemManager-devel mailing list