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