Commit Graph

4774 Commits

Author SHA1 Message Date
Aleksander Morgado
4534d6bb8d iface-modem-3gpp-profile-manager: improve logging of user request to list profiles 2022-11-04 13:12:57 +00:00
Aleksander Morgado
3bf15120f4 iface-modem-3gpp: improve logging of user request to disable facility locks 2022-11-04 13:12:57 +00:00
Aleksander Morgado
58f4eefea1 iface-modem-3gpp: improve logging of user request to set packet service state 2022-11-04 13:12:57 +00:00
Aleksander Morgado
e0c251fe68 iface-modem-3gpp: improve logging of user request to scan networks 2022-11-04 13:12:57 +00:00
Aleksander Morgado
856f6a8db8 iface-modem-3gpp: improve logging of user request to set EPS UE mode of operation 2022-11-04 13:12:57 +00:00
Aleksander Morgado
406338dcfe iface-modem-3gpp: improve logging of user request to set 5GNR registration settings 2022-11-04 13:12:57 +00:00
Aleksander Morgado
2571ab0146 iface-modem-3gpp: improve logging of user request to set initial EPS bearer settings 2022-11-04 13:12:57 +00:00
Aleksander Morgado
11d881c0a4 iface-modem-3gpp: improve logging of user request to register in network 2022-11-04 13:12:57 +00:00
Aleksander Morgado
c0f8d21188 iface-modem-3gpp: log registration check results in INFO level 2022-11-04 13:12:57 +00:00
Aleksander Morgado
5c604d9d35 iface-modem: improve logging of user request to set current modes 2022-11-04 13:12:57 +00:00
Aleksander Morgado
d4c0af9128 iface-modem: improve logging of user request to set current bands 2022-11-04 13:12:57 +00:00
Aleksander Morgado
21d60de42f iface-modem: improve logging of user request to factory reset modem 2022-11-04 13:12:57 +00:00
Aleksander Morgado
b82c89f45c iface-modem: improve logging of user request to reset modem 2022-11-04 13:12:57 +00:00
Aleksander Morgado
03528fbff7 iface-modem: improve logging of user request to set power state 2022-11-04 13:12:57 +00:00
Aleksander Morgado
a86fb711b3 iface-modem: improve logging of user request to enable/disable modem 2022-11-04 13:12:57 +00:00
Aleksander Morgado
9fe16af157 iface-modem: improve logging of user request to get cell info 2022-11-04 13:12:57 +00:00
Aleksander Morgado
73696cab1a iface-modem: improve logging of user request to set primary SIM slot 2022-11-04 13:12:57 +00:00
Aleksander Morgado
4fa773d234 iface-modem: improve logging of user request to delete bearer 2022-11-04 13:12:57 +00:00
Aleksander Morgado
aed53fe30a iface-modem: improve logging of user request to run AT command 2022-11-04 13:12:57 +00:00
Aleksander Morgado
ac28a6a1c0 iface-modem: improve logging of user request to set current capabilities 2022-11-04 13:12:57 +00:00
Aleksander Morgado
9840818766 iface-modem: improve logging of user request to create bearer 2022-11-04 13:12:56 +00:00
Aleksander Morgado
f98bcd5f58 iface-modem: refactor user request to list bearers 2022-11-04 13:12:56 +00:00
Aleksander Morgado
f1fa2eb81e iface-modem: improve logging in INFO level 2022-11-04 13:12:56 +00:00
Aleksander Morgado
e7b225ab9a log-helpers: add helper to log simple connect properties 2022-11-04 13:12:56 +00:00
Aleksander Morgado
f509e68fa3 log-helpers: add helper to log 3gpp profile 2022-11-04 13:12:56 +00:00
Aleksander Morgado
8b6dc28ee7 log-helpers: add helper to log bearer properties 2022-11-04 13:12:56 +00:00
Aleksander Morgado
0e6660025e libmm-glib,common: add helpers to build printable strings 2022-11-04 13:12:56 +00:00
Aleksander Morgado
e6dcebf999 log: allow querying whether personal info should be shown or not
We need this when building printable representations of helper types
like the MMBearerProperties object.
2022-11-04 13:12:56 +00:00
Aleksander Morgado
3592d98e5b log: new methods to check if a given logging level is enabled
There are certain cases where we perform a lot of data processing just
for logging purposes. Having methods that let us know whether a given
log level will be printed before doing all that data processing is useful.
2022-11-04 13:12:56 +00:00
Aleksander Morgado
afb89bb78f log: new mm_obj_log() that allows specifying level explicitly 2022-11-04 13:12:56 +00:00
Aleksander Morgado
f19aa4d99a log: new helper to allow printing or hiding personal info 2022-11-04 13:12:56 +00:00
Aleksander Morgado
ddfdbf66f6 core,log: reduce the log level tag to 3 characters
Just to make all of them the same avoid needing extra whitespaces just
for alignment of the text after this tag.
2022-11-04 13:12:56 +00:00
Aleksander Morgado
b3f315ad2d core,log: new 'MSG' log level between 'INFO' and 'WARN'
We're bumping the current "INFO" level messages to the new "MSG"
level, also making the new level the default.

The old "INFO" level will be used to setup an intermediate level of
logging which is not as verbose as "DEBUG" but still provides some
capabilities to analyze the behavior of a modem.
2022-11-04 13:12:56 +00:00
Aleksander Morgado
823f3e7995 base-sim: fix length when reading GID1/GID2
We were attempting to read 15 bytes unconditionally, regardless of the
size of the EF_gid1 and EF_gid2 files.

This operation would succeed in some SIM cards even if the actual file
lengths are shorter:

  AT+CRSM=176,28478,0,0,15
  +CRSM: 144,0,"FFFF"
  OK

But the operation would fail in some other SIM cards due to the length
mismatch:

  AT+CRSM=176,28478,0,0,15
  +CRSM: 103,0
  OK

Using 0 as requested length instructs the modem to read the length
specified in the EF status information, which is also the same
approach we do in QMI and MBIM.

  AT+CRSM=176,28478,0,0,0
  +CRSM: 144,0,"FFFF"
  OK
2022-11-03 23:42:48 +00:00
Evangelos Ribeiro Tzaras
4bb601dd2f iface-modem-3gpp-profile-manager: Initialize autofreed string to NULL
This avoids compiler warnings when using -Wmaybe-uninitialized

Closes: #653
2022-11-01 14:09:32 +01:00
Aleksander Morgado
1532545efa base-sim: fix loading GID2
We were not even trying to load it if GID1 was successfully loaded.
2022-10-27 11:22:16 +02:00
Aleksander Morgado
1bc9df2a08 sim-mbim: read exact GID1/GID2 file size 2022-10-27 11:22:16 +02:00
Akash Aggarwal
cce9ba475d mm-broadband-modem-qmi: do not set "enable refresh" in PDC "register" QMI message
If "enable refresh" is set, QMI modem expects an acknowledgement upon receiving a PDC refresh indication,
otherwise the modem resets assuming clients are facing an issue in refreshing their cache.

Register for PDC refresh indication without setting "enable refresh" TLV.
We would still receive the refresh indication to notify that the list of profiles stored has changed and
would not have to acknowledge the modem.
2022-10-27 11:07:07 +05:30
Aleksander Morgado
c73cbcc309 core: update copyright years 2022-10-19 11:18:38 +00:00
Akash Aggarwal
034383a650 broadband-modem-qmi: support for setting up signal thresholds 2022-10-18 15:54:37 +05:30
Akash Aggarwal
04ed52a74c mm-iface-modem: always require a SIM card in 3GPP modules
Avoid removing 3GPP capabilities if sim is absent.
Transition to 'Failed' state for 3GPP capable devices if sim is absent.
2022-10-11 11:55:28 +05:30
Fanice.luo
fab0481027 foxconn: remove QMI_SERVICE_FOX from Generic MBIM modem object
Allocate the fox_client to attempt loading the firmware info using
QMI_SERVICE_FOX,and release it when no longer needed.

Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/599
2022-10-10 11:46:57 +00:00
Aleksander Morgado
1db9cf4689 sms-part-3gpp: coding style fixes 2022-10-06 09:18:38 +00:00
Aleksander Morgado
795103cf3a broadband-modem-mbim: ensure message array contains valid PDUs
When reading SMS PDUs during initialization or upon a notification of
a new PDU arriving, we should ensure that the array of messages
returned is of type PDU, and also validate whether the array contains
valid PDUs before processing them, otherwise we could be dereferencing
invalid memory.

This is trying to fix crashes like the following:

    0x000059502b7ebaa2(ModemManager -mm-broadband-modem-mbim.c:7816)add_sms_part
    0x000059502b7f5cf5(ModemManager -mm-broadband-modem-mbim.c:7849)sms_read_query_ready
    0x000079e48edb36d3(libgio-2.0.so.0 -gtask.c:1230)g_task_return_now
    0x000079e48edb2732(libgio-2.0.so.0 -gtask.c:1300)g_task_return
    0x000079e48ee64ce5(libmbim-glib.so.4 -mbim-device.c:240)transaction_task_complete_and_free
    0x000079e48ee6665f(libmbim-glib.so.4 -mbim-device.c:1017)data_available
    0x000079e48ec65463(libglib-2.0.so.0 -gmain.c:3417)g_main_context_dispatch
    0x000079e48ec6576e(libglib-2.0.so.0 -gmain.c:4211)g_main_context_iterate
    0x000079e48ec659e2(libglib-2.0.so.0 -gmain.c:4411)g_main_loop_run
    0x000059502b7796b1(ModemManager -main.c:217)main
    0x000079e48e9f77a7(libc.so.6 + 0x000227a7)__libc_start_main
    0x000059502b7794b9(ModemManager + 0x0005f4b9)_start
    0x00007ffef825c6a7
2022-10-06 11:12:48 +02:00
Aleksander Morgado
125ef27274 sim-mbim: fix race condition when sync requested during preload
This is an extremely tricky race condition.

 * During SIM object initialization, we try to load SIM type (first
   item loaded).
 * MMSimMbim SIM type loading step runs preload_subscriber_info(),
   which:
   ** Sets self->priv->preload = TRUE; so that it is not run anymore.
   ** Sets the sync monitor to clear preloaded info if sync needed.
   ** Runs the subscriber ready status operation asynchronously.
   ** Just before the subscriber ready status operation returns, the
      system goes to sleep.
   ** The resume logic kicks in, and we flag the modem with sync
      needed, which clears the self->priv->preload flag.
 * Then the subscriber ready status operation response arrives, and we
   store the IMSI and the other things.
 * When the next initialization step happens, given that
   self->priv->preload is cleared, we run attempt to run
   preload_subscriber_info() again, and this time it finds the info like
   IMSI is already set, so asserts:

    0x00007cbcd287523f (libglib-2.0.so.0 - gtestutils.c: 3253)      g_assertion_message
    0x00007cbcd28752a2 (libglib-2.0.so.0 - gtestutils.c: 3279)      g_assertion_message_expr
    0x00005cbdab0a2dc0 (ModemManager - mm-sim-mbim.c: 253)  subscriber_ready_status_ready
    0x00007cbcd29a173b (libgio-2.0.so.0 - gtask.c: 1230)    g_task_return_now
    0x00007cbcd29a0799 (libgio-2.0.so.0 - gtask.c: 1300)    g_task_return
    0x00007cbcd2a548e0 (libmbim-glib.so.4 - mbim-device.c: 264)     transaction_task_complete_and_free
    0x00007cbcd2a562fc (libmbim-glib.so.4 - mbim-device.c: 1047)    data_available
    0x00007cbcd28534a6 (libglib-2.0.so.0 - gmain.c: 3417)   g_main_context_dispatch
    0x00007cbcd28537b1 (libglib-2.0.so.0 - gmain.c: 4211)   g_main_context_iterate
    0x00007cbcd2853a25 (libglib-2.0.so.0 - gmain.c: 4411)   g_main_loop_run
    0x00005cbdab034d26 (ModemManager - main.c: 217) main
    0x00007cbcd25e16c5 (libc.so.6 + 0x000286c5)     __libc_init_first
    0x00007cbcd25e1781 (libc.so.6 + 0x00028781)     __libc_start_main
    0x00005cbdab034a40 (ModemManager + 0x00061a40)  _start

In order to solve this, upon a sync request the ongoing preload
operation will be cancelled.
2022-10-05 13:12:09 +00:00
Aleksander Morgado
eee9a6f6b4 iface-modem-3gpp: disallow Scan() or Register() if Locked
We are exporting the 3GPP interface even when locked, so we should
cleanly disallow the Scan() and Register() operations on that state,
instead of wrongly assuming they may never happen.

  0x00007c192134944a (libc.so.6 + 0x0003744a)     gsignal
  0x00007c19213344e8 (libc.so.6 + 0x000224e8)     abort
  0x00007c19215c4221 (libglib-2.0.so.0 - gtestutils.c: 3253)      g_assertion_message
  0x00007c19215c4284 (libglib-2.0.so.0 - gtestutils.c: 3279)      g_assertion_message_expr
  0x00005b3eec9c9fbc (ModemManager - mm-iface-modem-3gpp.c)       handle_scan_auth_ready
  0x00007c19216ef75b (libgio-2.0.so.0 - gtask.c: 1230)    g_task_return_now
  0x00007c19216ee7b9 (libgio-2.0.so.0 - gtask.c: 1300)    g_task_return
  0x00005b3eec99a5ef (ModemManager - mm-dispatcher-fcc-unlock.c: 69)      dispatcher_run_ready
  0x00007c19216ef75b (libgio-2.0.so.0 - gtask.c: 1230)    g_task_return_now
  0x00007c19216ef78e (libgio-2.0.so.0 - gtask.c: 1244)    complete_in_idle_cb
  0x00007c19215a2486 (libglib-2.0.so.0 - gmain.c: 3417)   g_main_context_dispatch
  0x00007c19215a2791 (libglib-2.0.so.0 - gmain.c: 4211)   g_main_context_iterate
  0x00007c19215a2a05 (libglib-2.0.so.0 - gmain.c: 4411)   g_main_loop_run
  0x00005b3eec998451 (ModemManager - main.c: 217) main
  0x00007c19213347a7 (libc.so.6 + 0x000227a7)     __libc_start_main
  0x00005b3eec998259 (ModemManager + 0x00060259)  _start

Fixes 83e7600a67
2022-10-05 11:04:20 +00:00
Angus Ainslie
4628056a3e mm-modem-helpers.c: adjust the RING regex
The Broadmobi BM818 has some additional carriage returns in the RING message

Fixes: #626

Signed-off-by: Angus Ainslie <angus@akkea.ca>
2022-09-30 14:29:39 -06:00
Aleksander Morgado
a74f11ae43 sim-mbim: fallback to AT commands if reading GID via MBIM fails
Older MBIM modems don't support the low level UICC reading extension
defined by Microsoft. In those case, fallback to reading the GID
values using AT commands wherever possible.
2022-09-30 13:51:56 +00:00
Aleksander Morgado
fa6d64550b base-sim: implement GID1 and GID2 loading using AT commands 2022-09-30 13:51:56 +00:00
Aleksander Morgado
2c66d43bb9 broadband-modem-qmi: select last used level when enabling SAR
Same as we do in the MBIM protocol implementation.
2022-09-27 08:28:07 +00:00