Commit Graph
4572 Commits
Author SHA1 Message Date
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
Aleksander Morgado 1ea5a577e3 iface-modem-sar: report updated level on SAR enable
The SAR enable operation may be selecting an explicit SAR level by
itself, so make sure the protocol implementation reports back to the
interface the default level that was used while enabling SAR.

No level change is reported in the interface if the SAR is being
disabled.
2022-09-27 08:28:07 +00:00
Aleksander Morgado 950d36d4ee iface-modem-sar: avoid changing level if already in the target level 2022-09-27 08:28:07 +00:00