Commit Graph

7767 Commits

Author SHA1 Message Date
Aleksander Morgado
f7b595d066 broadband-modem-mbim: pass MbimDevice to notification parsers
We're going to enable the Microsoft extensions by default, and in
order to properly parse the notification messages, we'll need to know
which is the currently agreed MBIMEx version.

So, pass down the MbimDevice to every notification parser. Not all of
them will need it, so just for completeness.
2021-10-16 22:03:39 +02:00
Aleksander Morgado
5f043e47bf introspection,signal: minor doc fix in 5G RSRP 2021-10-16 00:02:26 +02:00
Daniele Palmas
6c574ce3d6 telit: remove prefix mm_shared in static function names 2021-10-15 15:23:59 +02:00
Daniele Palmas
f8c1e84939 telit: prefer qmi for set_current_bands if available 2021-10-15 15:22:02 +02:00
Daniele Palmas
266043255f telit: prefer qmi for load_current_bands if available 2021-10-15 15:21:57 +02:00
Daniele Palmas
91e16ca282 telit: prefer qmi for load_supported_bands if available 2021-10-15 15:18:14 +02:00
Carlo Lobrano
3522a11578 telit: Detect 4G BND format from BND test reply
Telit modems that require hexadecimal number when specifying 4G bands
also reply to #BND=? command with a 4th parameter <LTE_band_ext>
(e.g. LM940, LM960, LN920, FN980).
On the other hand, modems that require decimal number when specifying 4G
bands only return 3 parameters to the same command.

It is then possible replace the detection of ext_4g_bands via UDEV tags
with an inspection of BND=? reply.
2021-10-15 11:39:33 +00:00
Amol Lad
650cdc5a32 telit: LN920 bands support 2021-10-15 11:39:33 +00:00
Freedom Liu
f5ab3c4678 foxconn: add T99W265 modules, support for QDU. 2021-10-15 14:05:27 +08:00
Aleksander Morgado
a1e6f911dd cli,signal: fix error message without EOL 2021-10-14 16:10:13 +02:00
Aleksander Morgado
c06ca6df3f qcom-soc: require udev tag for ports
Since the 'wwan' subsystem addition to the qcom-soc plugin, the rules
to say a modem is handled by this plugin are too broad, and the plugin
attempts to support any kind of device exposed by the WWAN subsystem,
not just those from Qualcomm SoCs.

Update the plugin to require a new ID_MM_QCOM_SOC udev tag that is set
in the plugin udev rules, given that these rules already check for the
expected SoC drivers (bam-dmux, ipa, qcom-q6v5-mss).
2021-10-14 12:54:21 +00:00
Aleksander Morgado
f9645c30b7 Revert "ci: temporarily build single plugins on merge requests"
This reverts commit 18b8a3c784.

We no longer need this, back to only on schedules.
2021-10-14 10:56:36 +02:00
Aleksander Morgado
18b8a3c784 ci: temporarily build single plugins on merge requests 2021-10-14 10:34:40 +02:00
Aleksander Morgado
a5f2f84f44 ci: switch single plugins build to use meson 2021-10-14 10:34:30 +02:00
Iñigo Martínez
86fcf2592f build,meson: Add an empty line to split includes and dependencies 2021-10-14 07:57:55 +00:00
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