Commit Graph
7752 Commits
Author SHA1 Message Date
Iñigo Martínez 803ce03d6a build,meson: Remove unnecessary empty line 2021-10-14 07:57:55 +00:00
Iñigo Martínez 7c4f8f6cc5 build,meson: Make use of _opt suffix for option variables
To make option names consistent, an `_opt` suffix has been added.

This was not applied to `polkit` option at the time and this is
fixed now.
2021-10-14 07:57:55 +00:00
Iñigo Martínez b3b16b3dc2 build,meson: Make use of partial_dependency for generated dependency
The generated objects in `libmm-glib` are include in
`libmm_glib_dep` one by one to avoid the link to the generated
library that is included as a whole in `libmm-glib`.

meson includes a way to include partial objects of a dependency by
using the `partial_dependency` method, so by taking advantage of it
almost all objects are included.
2021-10-14 07:57:55 +00:00
Iñigo Martínez 3974b8b98f build,meson: Sort files alphabetically 2021-10-14 07:57:55 +00:00
Iñigo Martínez c3b6a2876e build,meson: Remove unused option 2021-10-14 07:57:55 +00:00
Iñigo Martínez bbc157688d build,meson: Improve plugins option set
Improved the way the plugins are set to allow a smaller summary.
2021-10-14 07:57:55 +00:00
Aleksander Morgado 85a99ae028 broadband-modem-qmi: fix non-initialized GError 2021-10-13 22:06:31 +02:00
Aleksander Morgado 8852cef817 quectel: fix non-initialized GError
Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/442
2021-10-13 22:06:31 +02:00
Aleksander Morgado 2b742d99d5 broadband-modem-mbim: coding style fixes in the SAR implementation 2021-10-13 13:14:10 +02:00
Aleksander Morgado 708bde6b9c broadband-modem-mbim: use a dynamically allocated MbimSarConfigState
It makes reading the code a bit easier.
2021-10-13 13:14:10 +02:00
Aleksander Morgado 58e617e03c iface-modem-sar: fix initialization sequence completion
We cannot just return without completing the GTask. If we see the
support check method failed, just keep on with the state machine so
that the GTask is completed in the FAIL_IF_UNSUPPORTED step.

Also, don't assume GError is set if FALSE is returned. This is the
only kind of async method where we allow this right now.
2021-10-13 13:14:10 +02:00
Aleksander Morgado 05ddf7c293 mmcli,sar: rename actions to just --sar-enable and --sar-disable 2021-10-13 13:14:10 +02:00
Jack Song f45bc200a9 broadband-modem-mbim: implement the sar interface 2021-10-13 13:14:10 +02:00
lvmaorui 1da847c407 broadband-modem: add the sar interface 2021-10-13 13:14:10 +02:00
Aleksander Morgado 19a6ba5562 build,meson: add SAR interface support in the daemon 2021-10-13 13:14:10 +02:00
lvmaorui 534ffc5ca6 iface-modem-sar: new MMIfaceModemSar interface 2021-10-13 13:14:10 +02:00
Aleksander Morgado 8329435bdf build,meson: add SAR interface support in mmcli 2021-10-13 13:14:10 +02:00
lvmaorui 07a6b6032b mmcli:add SAR command --sar-status/--sar-enable/--sar-disable/--set-power-level 2021-10-13 13:14:10 +02:00
Aleksander Morgado 1f321bd79d build,meson: add SAR interface support in libmm-glib 2021-10-13 13:14:10 +02:00
lvmaorui 8e67d2375c docs,libmm-glib: add SAR user-level api 2021-10-13 13:14:10 +02:00
Aleksander Morgado dbd95e30c4 mm-broadband-modem-mbim: treat NO_ESIM_PROFILE as failure 2021-10-13 11:20:32 +02:00
Aleksander Morgado fb97b0756b build: bump libmbim version to use NO_ESIM_PROFILE 2021-10-13 11:14:08 +02:00
Aleksander Morgado 846dafe86b build: sync libqmi and libmbim versions in meson build
Fixes f5168cb54b
2021-10-13 11:12:35 +02:00
Andrew Lassalle 43e76bf1bb iface-modem: Allow SetPowerState(Low|On) on failed state
In some modems, the modem's radio can be ON when no SIM card is present.
In this case, the modem is in failed state, and the host cannot set the
power state to LOW. Since we we will allow the host to set the power to
LOW, we should allow it to set it back to ON.
2021-10-11 10:18:47 -07:00
Daniele Palmas 53f6c309bf telit: add port type hints for LN920 0x1060, 0x1061 compositions 2021-10-11 16:02:40 +00:00
Daniele Palmas 291f583a50 telit: fix typo in load_supported_modes_ready 2021-10-11 16:02:40 +00:00
Daniele Palmas 41482d823b telit: fix segmentation fault in initialize_alternate_3g_band
Fix the following segmentation fault:

ModemManager[128007]: mm_port_peek_kernel_device: assertion 'MM_IS_PORT (self)' failed

Thread 1 "ModemManager" received signal SIGSEGV, Segmentation fault.
0x00005555556c6e3e in mm_kernel_device_get_global_property
(self=0x0, property=0x7ffff5947480 "ID_MM_TELIT_BND_ALTERNATE")
at kerneldevice/mm-kernel-device.c:309

Reported by Carlo Lobrano <c.lobrano@gmail.com>
2021-10-11 16:02:40 +00:00
Daniele Palmas 176b3f53c2 api: new TDS capability 2021-10-11 16:02:40 +00:00
Daniele Palmas ecb5c3dbef modem-helpers: change deprecated MBIM_NW_ERROR_UNKNOWN to MBIM_NW_ERROR_NONE 2021-10-11 16:02:40 +00:00
Aleksander Morgado f5168cb54b build: libqmi and libmbim version bumps
In order to use the latest symbols exposed (MBIM_NW_ERROR_NONE and QMI_DMS_RADIO_INTERFACE_TDS).
2021-10-11 18:01:24 +02:00
Amol Lad 11b83e4cb8 mm-bearer-mbim: unref not needed and it is causing crash 2021-10-04 14:48:05 +05:30
Frederic Martinsons ea7517f0e5 Update signal strength indicator thresholds
These are thresholds for RSSI so nothing is expected to be
greater than 0.
This will allow to have a better granularity (even if with some
modem, we are limited in the number of thresholds configured)

These new thresholds will give the following signal quality range:
  - 11% for -110 dBm
  - 30% for  -94 dBm
  - 50% for  -82 dBm
  - 70% for  -69 dBm
  - 90% for  -57 dBm

We are expecting to receive indication sreport every time the
signal strength crosses one of the configured thresholds.

Signed-off-by: Frederic Martinsons <frederic.martinsons@sigfox.com>
2021-10-03 17:44:52 +02:00
Lubomir Rintel 90ea3ef5db iface-modem-3gpp-profile-manager: correct a GError instance ownership
The call to g_task_return_error() takes ownership of the GError passed
to it; we must not free it ourselves upon automatic pointer cleanup.

Otherwise a crash can be triggered in the error handling path:

  ModemManager[259816]: <debug> [1633088468.157848] [modem0/modemu/at] <-- '<CR><LF>OK<CR><LF>'
  ModemManager[259816]: <debug> [1633088468.159832] [modem0] stored profile with id '1'
  ModemManager[259816]: <debug> [1633088468.160501] [modem0] set profile state (7/8): list after
  ModemManager[259816]: <debug> [1633088468.161686] [modem0/modemu/at] device open count is 3 (open)
  ModemManager[259816]: <debug> [1633088468.162320] [modem0/modemu/at] device open count is 2 (close)
  ModemManager[259816]: <debug> [1633088468.162746] [modem0/modemu/at] --> 'AT+CGDCONT?<CR>'
  ModemManager[259816]: <debug> [1633088468.177437] [modem0/modemu/at] <-- '<CR><LF>ERROR<CR><LF>'
  ModemManager[259816]: <debug> [1633088468.178011] [modem0/modemu/at] operation failure: 100 (Unknown error)
  ModemManager[259816]: <warn>  [1633088468.182420] [modem0/bearer0] connection attempt #1 failed: Couldn't validate update of profile '1': Unknown error
  ModemManager[259816]: <info>  [1633088468.193156] [modem0/bearer0] connection #1 finished: duration 0s, tx: 0 bytes, rx: 0 bytes
  ModemManager[259816]: <debug> [1633088468.194280] [modem0] couldn't connect bearer: Couldn't validate update of profile '1': Unknown error
  ==259816== Invalid read of size 4
  ==259816==    at 0x4FF66CF: UnknownInlinedFun (gerror.c:535)
  ==259816==    by 0x4FF66CF: g_error_free (gerror.c:832)
  ==259816==    by 0x1A7F49: UnknownInlinedFun (glib-autocleanups.h:52)
  ==259816==    by 0x1A7F49: UnknownInlinedFun (glib-autocleanups.h:52)
  ==259816==    by 0x1A7F49: profile_manager_get_profile_after_ready (mm-iface-modem-3gpp-profile-manager.c:140)
  ==259816==    by 0x4E342C9: g_task_return_now (gtask.c:1219)
  ==259816==    by 0x4E344CA: UnknownInlinedFun (gtask.c:1289)
  ==259816==    by 0x4E344CA: g_task_return (gtask.c:1245)
  ==259816==    by 0x1A867C: get_profile_list_ready (mm-iface-modem-3gpp-profile-manager.c:680)
  ==259816==    by 0x4E342C9: g_task_return_now (gtask.c:1219)
  ==259816==    by 0x4E344CA: UnknownInlinedFun (gtask.c:1289)
  ==259816==    by 0x4E344CA: g_task_return (gtask.c:1245)
  ==259816==    by 0x1A3DB5: internal_list_profiles_ready (mm-iface-modem-3gpp-profile-manager.c:774)
  ==259816==    by 0x4E342C9: g_task_return_now (gtask.c:1219)
  ==259816==    by 0x4E344CA: UnknownInlinedFun (gtask.c:1289)
  ==259816==    by 0x4E344CA: g_task_return (gtask.c:1245)
  ==259816==    by 0x1D7B8B: profile_manager_cgdcont_query_ready (mm-broadband-modem.c:10240)
  ==259816==    by 0x4E1DB61: g_simple_async_result_complete (gsimpleasyncresult.c:802)
  ==259816==  Address 0x9286da0 is 0 bytes inside a block of size 16 free'd
  ==259816==    at 0x48440E4: free (vg_replace_malloc.c:755)
  ==259816==    by 0x500FD1C: g_free (gmem.c:199)
  ==259816==    by 0x502A22F: g_slice_free1 (gslice.c:1180)
  ==259816==    by 0x4FF6780: g_error_free (gerror.c:864)
  ==259816==    by 0x1B22D2: connect_bearer_ready (mm-iface-modem-simple.c:286)
  ==259816==    by 0x4E342C9: g_task_return_now (gtask.c:1219)
  ==259816==    by 0x4E344CA: UnknownInlinedFun (gtask.c:1289)
  ==259816==    by 0x4E344CA: g_task_return (gtask.c:1245)
  ==259816==    by 0x18031A: connect_ready (mm-base-bearer.c:917)
  ==259816==    by 0x4E342C9: g_task_return_now (gtask.c:1219)
  ==259816==    by 0x4E344CA: UnknownInlinedFun (gtask.c:1289)
  ==259816==    by 0x4E344CA: g_task_return (gtask.c:1245)
  ==259816==    by 0x18329B: connect_3gpp_ready (mm-broadband-bearer.c:918)
  ==259816==    by 0x4E342C9: g_task_return_now (gtask.c:1219)
  ==259816==  Block was alloc'd at
  ==259816==    at 0x484186F: malloc (vg_replace_malloc.c:380)
  ==259816==    by 0x5013408: g_malloc (gmem.c:106)
  ==259816==    by 0x502ACB4: g_slice_alloc (gslice.c:1069)
  ==259816==    by 0x502B33D: g_slice_alloc0 (gslice.c:1095)
  ==259816==    by 0x4FF64E6: g_error_allocate (gerror.c:702)
  ==259816==    by 0x4FF6F03: UnknownInlinedFun (gerror.c:716)
  ==259816==    by 0x4FF6F03: g_error_copy (gerror.c:886)
  ==259816==    by 0x4E1D0A0: g_simple_async_result_set_from_error (gsimpleasyncresult.c:676)
  ==259816==    by 0x236AAB: port_serial_got_response (mm-port-serial.c:744)
  ==259816==    by 0x23B0F1: UnknownInlinedFun (mm-port-serial.c:934)
  ==259816==    by 0x23B0F1: common_input_available (mm-port-serial.c:1035)
  ==259816==    by 0x500AF9E: UnknownInlinedFun (gmain.c:3337)
  ==259816==    by 0x500AF9E: g_main_context_dispatch (gmain.c:4055)
  ==259816==    by 0x505F607: g_main_context_iterate.constprop.0 (gmain.c:4131)
  ==259816==    by 0x500A562: g_main_loop_run (gmain.c:4329)
2021-10-03 13:36:54 +00:00
Lubomir Rintel e3d108de0f broadband-modem: ensure mm_broadband_modem_create_device_identifier() sets an error on all bad returns
modem_load_device_identifier_finish() expect it to do so and trips an
assertion failure in g_propagate_error():

  ModemManager[256038]: <warn>  [1633083601.491190] [modem0] couldn't load equipment identifier: Unknown error
  ModemManager[256038]: <debug> [1633083601.491204] [modem0] loading device identifier...
  ModemManager[256038]: <debug> [1633083601.491215] [modem0/modemu/at] device open count is 3 (open)
  ModemManager[256038]: <debug> [1633083601.491231] [modem0/modemu/at] device open count is 2 (close)
  ModemManager[256038]: <debug> [1633083601.491254] [modem0/modemu/at] --> 'ATI<CR>'
  ModemManager[256038]: <debug> [1633083601.494616] [modem0/modemu/at] <-- '<CR><LF>ERROR<CR><LF>'
  ModemManager[256038]: <debug> [1633083601.494643] [modem0/modemu/at] operation failure: 100 (Unknown error)

  (ModemManager:256038): GLib-CRITICAL **: 06:20:01.494: g_propagate_error: assertion 'src != NULL' failed

  Thread 1 "ModemManager" received signal SIGTRAP, Trace/breakpoint trap.
  g_logv (log_domain=0x7ffff77d1071 "GLib", log_level=G_LOG_LEVEL_CRITICAL, format=<optimized out>, args=<optimized out>) at ../glib/gmessages.c:1413
  1413		  g_private_set (&g_log_depth, GUINT_TO_POINTER (depth));
  Missing separate debuginfos, use: dnf debuginfo-install libmbim-1.26.0-2.el9.x86_64 libqmi-1.30.2-1.el9.x86_64
  (gdb) bt
  #0  g_logv (log_domain=0x7ffff77d1071 "GLib", log_level=G_LOG_LEVEL_CRITICAL, format=<optimized out>, args=<optimized out>) at ../glib/gmessages.c:1413
  #1  0x00007ffff77813d3 in g_log (log_domain=<optimized out>, log_level=<optimized out>, format=<optimized out>) at ../glib/gmessages.c:1451
  #2  0x000055555561122d in modem_load_device_identifier_finish (self=0x5555557e62d0, res=<optimized out>, error=0x7fffffffd320)
      at /usr/src/debug/ModemManager-1.18.2-1.el9.x86_64/src/mm-broadband-modem.c:1168
  #3  0x00005555555ea69a in load_device_identifier_ready (self=0x5555557e62d0, res=0x5555557ea6b0, task=task@entry=0x7fffe8011e20 [GTask])
      at /usr/src/debug/ModemManager-1.18.2-1.el9.x86_64/src/mm-iface-modem.c:4727
  #4  0x00007ffff7951b62 in g_simple_async_result_complete (simple=0x5555557ea6b0 [GSimpleAsyncResult]) at ../gio/gsimpleasyncresult.c:802
  #5  0x00005555555d1b0a in at_sequence_parse_response (port=<optimized out>, res=<optimized out>, ctx=ctx@entry=0x5555557ed7f0)
      at /usr/src/debug/ModemManager-1.18.2-1.el9.x86_64/src/mm-base-modem-at.c:250
  #6  0x00007ffff7951b62 in g_simple_async_result_complete (simple=0x5555557e5440 [GSimpleAsyncResult]) at ../gio/gsimpleasyncresult.c:802
  #7  0x00005555556805dc in serial_command_ready (port=<optimized out>, res=<optimized out>, simple=simple@entry=0x5555557e5440 [GSimpleAsyncResult])
      at /usr/src/debug/ModemManager-1.18.2-1.el9.x86_64/src/mm-port-serial-at.c:378
  #8  0x00007ffff7951b62 in g_simple_async_result_complete (simple=0x5555557d6730 [GSimpleAsyncResult]) at ../gio/gsimpleasyncresult.c:802
  #9  0x000055555567fb35 in command_context_complete_and_free (ctx=ctx@entry=0x7fffe800c200, idle=idle@entry=0) at /usr/src/debug/ModemManager-1.18.2-1.el9.x86_64/src/mm-port-serial.c:141
  #10 0x0000555555682a96 in port_serial_got_response (self=0x5555557dd4e0 [MMPortSerialAt], parsed_response=0x0, error=0x5555557d5040)
      at /usr/src/debug/ModemManager-1.18.2-1.el9.x86_64/src/mm-port-serial.c:755
  #11 0x00005555556870d2 in parse_response_buffer (self=<optimized out>) at /usr/src/debug/ModemManager-1.18.2-1.el9.x86_64/src/mm-port-serial.c:934
  #12 common_input_available (self=0x5555557dd4e0 [MMPortSerialAt], condition=(G_IO_NVAL | unknown: 0xf762a5c0)) at /usr/src/debug/ModemManager-1.18.2-1.el9.x86_64/src/mm-port-serial.c:1035
  #13 0x00007ffff7778f9f in g_main_dispatch (context=0x5555557527c0) at ../glib/gmain.c:3337
  #14 g_main_context_dispatch (context=0x5555557527c0) at ../glib/gmain.c:4055
  #15 0x00007ffff77cd608 in g_main_context_iterate.constprop.0 (context=0x5555557527c0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4131
  #16 0x00007ffff7778563 in g_main_loop_run (loop=0x55555576da60) at ../glib/gmain.c:4329
  #17 0x00005555555b7b60 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/ModemManager-1.18.2-1.el9.x86_64/src/main.c:216
2021-10-03 13:13:21 +00:00
Aleksander Morgado 7c30471d94 ci: bump image template to refresh CA certificates
At the end of September 2021, Let's Encrypt's DST Root CA X3
certificate expired, and the new ISRG Root X1 took over.
Update the CI template so that the new certificate is available and we
can keep on cloning the libmbim/libqmi/libqrtr-glib repos without
failures.
2021-10-03 14:47:09 +02:00
Daniele Palmas 9c47c54f06 telit: fix g_object_unref failed assertion
Fix the following g_object_unref failed assertion:

ModemManager[385967]: <debug> [1632924639.132023] [modem0/ttyUSB2/at] --> 'AT+CSIM=1<CR>'
ModemManager[385967]: <debug> [1632924639.144892] [modem0/ttyUSB2/at] <-- '<CR><LF>ERROR<CR><LF>'
ModemManager[385967]: <debug> [1632924639.145021] [modem0/ttyUSB2/at] operation failure: 100 (Unknown error)
(ModemManager:385967): GLib-GObject-CRITICAL **: 16:10:39.145: g_object_unref: assertion 'G_IS_OBJECT (object)' failed
2021-09-29 16:13:45 +02:00
Benoît Monin 8755e85d13 sms: increase send timeout to 5 minutes
The timeout for sms send operation can exceed the current value, so
increase it to 5 minutes. Timeouts up to 4 minutes have been observed
in the following test scenario:
* Power up the modem and wait for registration.
* Right when the modem is registered, attenuate the rf signal
  or remove the antenna.
* Immediately try to send an sms.

Increasing the timeout cover this corner case.
2021-09-23 11:57:59 +02:00
Michal Mazur 5c6b4851c5 modem-qmi,sim-qmi: read personalization retries from Card Status 2021-09-21 14:28:01 +02:00
Michal Mazur 5828af115c modem-mbim: enter LOCKED state when SIM is incompatible
According to MBIM specification, the subscriber state is INITIALIZED
when SIM card is incompatible with enabled modem personalization lock.
This patch introduce additional check for enabled PIN lock in such case
and fixes depersonalization of one lock if several are enabled.
2021-09-21 14:28:01 +02:00
Yegor Yefremov d5c2ea931e .gitignore: ignore ctags tags file 2021-09-20 07:22:05 +00:00
Yegor Yefremov 8b80da152b Fix -Wmaybe-uninitialized warning
Initialize the scheme variable to QMI_VOICE_USS_DATA_CODING_SCHEME_UNKNOWN
to avoid the warning.
2021-09-19 13:07:10 +00:00
Aleksander Morgado a046c13ad2 sim-mbim: always close UICC channel, even on error
Don't close the UICC channel only when the EID was successfully
load. If for any reason it failed, also close the channel.
2021-09-19 09:09:35 +00:00
Aleksander Morgado 27010ea955 sim-mbim: coding style fixes in the EID loading 2021-09-19 09:09:35 +00:00
Som_SP 19a11396dd sim-mbim: add support for loading eid via mbim protocol
Support is added to set eid dbus interface property using
MBIM protocol when the inserted sim is esim.
2021-09-19 09:09:35 +00:00
Yegor Yefremov 4875817f19 Tests: fix -Wformat compiler warning
Use G_GUINT64_FORMAT to properly format a guint64 type.
2021-09-17 12:10:31 +02:00
Shawn Guo 57eb239089 build: enable qcom-soc plugin by default
As people are running distros like Debian, Archlinux, Fedora, etc., on
laptops powered by Qualcomm Snapdragon SoCs, e.g. Lenovo Yoga C630, it
makes sense to enable qcom-soc plugin by default, so that MM aarch64
package can be built by those distros more easily.

Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
2021-09-17 04:18:43 -04:00
Aleksander Morgado 727410048f ci: add meson build test
The system template is updated to add new packages required at build
time:

 * libdbus-1-dev is added so that we can autodetect the service
   directory path via the installed pkg-config file.
 * udev is added so that we can autodetect the udev rules directory
   path via the installed pkg-config file.
 * policykit-1 is added so that the i18n operation merging policy
   files is able to use the installed ITS files.
 * bash-completion is added to enable the feature in the meson build.

The 'dist' step in the test is fully skipped for now, as the meson
port doesn't fully support running all unit tests successfully.
2021-09-16 09:35:33 +02:00
Aleksander Morgado aee12967ee build,meson: simplify build of daemon enums sources 2021-09-16 09:31:25 +02:00
Aleksander Morgado d5a992d30f build,meson: introspection is setup as a feature 2021-09-15 22:00:30 +02:00
Aleksander Morgado b75d1d50d7 Revert "build,meson: Improve plugins option set"
This reverts commit 09a5052a77.

This commit breaks the default disabling of the qcom-soc plugin.
2021-09-15 22:00:28 +02:00