Age | Commit message (Collapse) | Author |
|
|
|
|
|
We are going to allow including the plugin sources built within the
ModemManager daemon binary; moving the sources within the daemon
sources directory makes it easier.
|
|
|
|
Use library() instead of shared_library() to allow specifying which kind
of library to build with "meson setup --default-library ..."
This will avoid the following static build failure:
FAILED: src/ModemManager
/home/autobuild/autobuild/instance-11/output-1/per-package/modem-manager/host/bin/m68k-linux-gcc -o src/ModemManager src/ModemManager.p/meson-generated_.._mm-daemon-enums-types.c.o src/ModemManager.p/main.c.o src/ModemManager.p/mm-auth-provider.c.o src/ModemManager.p/mm-base-bearer.c.o src/ModemManager.p/mm-base-call.c.o src/ModemManager.p/mm-base-manager.c.o src/ModemManager.p/mm-base-modem-at.c.o src/ModemManager.p/mm-base-modem.c.o src/ModemManager.p/mm-base-sim.c.o src/ModemManager.p/mm-base-sms.c.o src/ModemManager.p/mm-bearer-list.c.o src/ModemManager.p/mm-broadband-bearer.c.o src/ModemManager.p/mm-broadband-modem.c.o src/ModemManager.p/mm-call-list.c.o src/ModemManager.p/mm-context.c.o src/ModemManager.p/mm-device.c.o src/ModemManager.p/mm-dispatcher.c.o src/ModemManager.p/mm-dispatcher-connection.c.o src/ModemManager.p/mm-dispatcher-fcc-unlock.c.o src/ModemManager.p/mm-filter.c.o src/ModemManager.p/mm-iface-modem-3gpp.c.o src/ModemManager.p/mm-iface-modem-3gpp-profile-manager.c.o src/ModemManager.p/mm-iface-modem-3gpp-ussd.c.o src/ModemManager.p/mm-iface-modem.c.o src/ModemManager.p/mm-iface-modem-cdma.c.o src/ModemManager.p/mm-iface-modem-firmware.c.o src/ModemManager.p/mm-iface-modem-location.c.o src/ModemManager.p/mm-iface-modem-messaging.c.o src/ModemManager.p/mm-iface-modem-oma.c.o src/ModemManager.p/mm-iface-modem-sar.c.o src/ModemManager.p/mm-iface-modem-signal.c.o src/ModemManager.p/mm-iface-modem-simple.c.o src/ModemManager.p/mm-iface-modem-time.c.o src/ModemManager.p/mm-iface-modem-voice.c.o src/ModemManager.p/mm-plugin.c.o src/ModemManager.p/mm-plugin-manager.c.o src/ModemManager.p/mm-port-probe.c.o src/ModemManager.p/mm-port-probe-at.c.o src/ModemManager.p/mm-private-boxed-types.c.o src/ModemManager.p/mm-sms-list.c.o -Wl,--as-needed -Wl,--no-undefined -Wl,-O1 -static '-Wl,-rpath,$ORIGIN/../libmm-glib' -Wl,-rpath-link,/home/autobuild/autobuild/instance-11/output-1/build/modem-manager-1.20.2/build/libmm-glib -Wl,--start-group src/libport.a src/libkerneldevice.a src/libhelpers.a libmm-glib/libmm-glib.so.0.9.0 libqcdm/src/libqcdm.a libmm-glib/generated/tests/libmm-test-generated.a -Wl,--export-dynamic /home/autobuild/autobuild/instance-11/output-1/per-package/modem-manager/host/m68k-buildroot-linux-uclibc/sysroot/usr/lib/libgmodule-2.0.a /home/autobuild/autobuild/instance-11/output-1/per-package/modem-manager/host/m68k-buildroot-linux-uclibc/sysroot/usr/lib/libglib-2.0.a -pthread -lm /home/autobuild/autobuild/instance-11/output-1/per-package/modem-manager/host/m68k-buildroot-linux-uclibc/sysroot/usr/lib/libpcre.a /home/autobuild/autobuild/instance-11/output-1/per-package/modem-manager/host/m68k-buildroot-linux-uclibc/sysroot/usr/lib/libgio-2.0.a /home/autobuild/autobuild/instance-11/output-1/per-package/modem-manager/host/m68k-buildroot-linux-uclibc/sysroot/usr/lib/libgobject-2.0.a /home/autobuild/autobuild/instance-11/output-1/per-package/modem-manager/host/m68k-buildroot-linux-uclibc/sysroot/usr/lib/libffi.a /home/autobuild/autobuild/instance-11/output-1/per-package/modem-manager/host/m68k-buildroot-linux-uclibc/sysroot/usr/lib/libz.a /home/autobuild/autobuild/instance-11/output-1/per-package/modem-manager/host/m68k-buildroot-linux-uclibc/sysroot/usr/lib/libmount.a /home/autobuild/autobuild/instance-11/output-1/per-package/modem-manager/host/m68k-buildroot-linux-uclibc/sysroot/usr/lib/libblkid.a -Wl,--end-group
/home/autobuild/autobuild/instance-11/output-1/per-package/modem-manager/host/opt/ext-toolchain/bin/../lib/gcc/m68k-buildroot-linux-uclibc/11.2.0/../../../../m68k-buildroot-linux-uclibc/bin/ld: attempted static link of dynamic object `libmm-glib/libmm-glib.so.0.9.0'
Fixes:
- http://autobuild.buildroot.org/results/9803d593305df36c4a8d67aac2fb4c9a3120a072
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
|
Adds new variants of Quectel modems which rely on ModemManager port type
rules for fwupd updates.
|
|
The 'link_ports' and 'ports' tables are created during object init(),
but they are fully removed and cleared during dispose(). Given that
the MMDevice executes an explicit g_object_run_dispose(), there may be
cases where a long-running operation that isn't cancelled ends up
being completed by the time the object disposal has already run at
least once.
That would end up crashing the process if we attempt to e.g. iterate
over one of the ports hash tables:
0x00007c3594eb3b93 (libglib-2.0.so.0 - ghash.c: 1180) g_hash_table_iter_next
0x00005b60d86f2563 (ModemManager - mm-base-modem.c: 1133) mm_base_modem_get_port_infos
0x00005b60d870228e (ModemManager - mm-iface-modem.c: 4013) fcc_unlock
0x00007c35950126a8 (libgio-2.0.so.0 - gtask.c: 1230) g_task_return_now
0x00007c35950116fa (libgio-2.0.so.0 - gtask.c: 1300) g_task_return
0x00007c3595011d12 (libgio-2.0.so.0 - gtask.c: 1930) g_task_return_new_error
0x00005b60d87518f2 (ModemManager - mm-broadband-modem-mbim.c: 1970) radio_state_set_up_ready
0x00007c35950126a8 (libgio-2.0.so.0 - gtask.c: 1230) g_task_return_now
0x00007c35950116fa (libgio-2.0.so.0 - gtask.c: 1300) g_task_return
0x00007c35950c486c (libmbim-glib.so.4 - mbim-device.c: 253) transaction_task_complete_and_free
0x00007c35950c714b (libmbim-glib.so.4 - mbim-device.c: 335) transaction_timed_out
0x00007c3594ec1232 (libglib-2.0.so.0 - gmain.c: 4971) g_timeout_dispatch
0x00007c3594ec43fc (libglib-2.0.so.0 - gmain.c: 3417) g_main_context_dispatch
0x00007c3594ec4704 (libglib-2.0.so.0 - gmain.c: 4211) g_main_context_iterate
0x00007c3594ec4978 (libglib-2.0.so.0 - gmain.c: 4411) g_main_loop_run
0x00005b60d86d7c56 (ModemManager - main.c: 217) main
0x00007c3594c526c5 (libc.so.6 + 0x000286c5) __libc_init_first
0x00007c3594c52781 (libc.so.6 + 0x00028781) __libc_start_main
0x00005b60d86d7970 (ModemManager + 0x00061970) _start
Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/677
Change-Id: I6695c284f86a196e60de7f714bc1671332d08848
|
|
Instead of having the modem object listen notifications in the
MbimDevice, the MMPortMbim will act as an intermediate emitter for the
same.
The primary benefit is that the lifecycle of the port object is
tightly coupled to the life of the modem object, so there is no chance
that the port object outlives the modem object.
And the port object will ensure its own device notification handler is
correctly cleared up on its dispose, so there should be no chance of
firing up a signal in the device for a listener that is already
freed.
|
|
Letting the MMBroadbandModemMbim listen for the notifications of the
MbimDevice was not a good idea, especially since no explicit reference
to the device object was hold in the modem object. This leads to race
conditions in which the MbimDevice outlives the MMBroadbandModemMbim and
the MMPortMbim, and when the "device-removed" signal is triggered, the
program crashes.
The MMPortMbim will now emit its own 'removed' signals when the
underlying MbimDevice emits "device-removed', ensuring that the signal
handler is properly cleared up during the MMPortMbim disposal.
Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/518
|
|
Letting the MMBroadbandModemQmi listen for the notifications of the
QmiDevice was not a good idea, especially since no explicit reference
to the device object was hold in the modem object. This leads to race
conditions in which the QmiDevice outlives the MMBroadbandModemQmi and
the MMPortQmi, and when the "device-removed" signal is triggered, the
program crashes.
The MMPortQmi will now emit its own 'removed' signals when the
underlying QmiDevice emits "device-removed', ensuring that the signal
handler is properly cleared up during the MMPortQmi disposal.
|
|
This signal indicates that the port is no longer accessible. Unlike a
udev port removal event, this indication may happen even if the port
is still exposed by the system.
It is designed to detect protocol proxy crashes, and so when such
event is detected by the modem, a full reprobe of the device will be
done to start from scratch the protocol management operations.
|
|
|
|
|
|
|
|
If the modem is already registered when ModemManager probes the modem,
it will ignore the registration state since the modem is not enabled
yet. Always querying the registration state before starting the
registration procedure makes sure to catch such cases and not perform
unnecessary registration steps.
Signed-off-by: Sven Schwermer <sven.schwermer@disruptive-technologies.com>
|
|
This fixes an issue where, with an BM818 connected over USB,
suspending/resuming the modem causes the modem to reset immediately.
The culprit was bisected to d6203265c2, where QCDM probing was disabled
unless explicitly requested, so I assume this modem needs it based on
the constant resetting when power management was enabled on the modem's
usb connection.
|
|
This requires bumping libmbim to 1.29.2, which is the version
including the enum->flags change.
|
|
We can directly use this change instead of requiring the libmbim
version bump because the numeric values of the enum didn't change:
NEW_MESSAGE == 2 == (1<<1)
Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/673
|
|
|
|
Use g_auto* helpers where needed, and switch to use the slice
allocator for the handler operation contexts.
|
|
|
|
Use g_auto* helpers where needed, and switch to use the slice
allocator for the handler operation contexts.
|
|
|
|
Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/671
|
|
Output of NAS Get Home Network depends on network state, and we may fail
to read SIM card info if device is not attached.
Load card operator name and identifier using UIM Read Transparent.
|
|
Since it is possible that the delayed status request for the connection
(^SWWAN?) also does not return the updated status a retry is needed.
This retry is only done for the activation path. So the connection
status monitoring and the deactivation path is not affected.
Signed-off-by: Heiko Thiery <heiko.thiery@gmail.com>
|
|
There are modems where the status in response is not available
immediatly. Doing a delayed request will solve the issue.
Suggested-by: Giacinto Cifelli <gciofono@gmail.com>
Suggested-by: Aleksander Morgado <aleksandermj@chromium.org>
Signed-off-by: Heiko Thiery <heiko.thiery@gmail.com>
|
|
|
|
client missing
Using mm_shared_qmi_ensure_client() ensures that the client must exist
or otherwise the operation would fail. Instead, try to peek the
clients independently with mm_shared_qmi_peek_client() and only fail
if both exist.
The state machine logic already treats the clients as optional.
|
|
Update profile manager and notify clients if there is a change in modem
profiles list.
|
|
When processing the NAS Signal Info message, don't assume that a
previously processed TLV creates the MMSignal object for a given
access technology.
|
|
|
|
For the WCDMA RSCP TLV support.
|
|
value needs to be divided by 10 as for LTE
|
|
|
|
|
|
Modify the load_model function to use the AT command to get the
model name and display the module name in the model instead of
[vid:pid].
Test on L860 Linux Device, use `mmcli -L`, it can show: "/org/free
desktop/ModemManager1/Modem/0 [Intel] L860-GL-16 LTE Module"
|
|
|
|
|
|
|
|
This enables the usage with busybox and fixes yocto dependency
issues.
This is related to #483 and the previous commit
91ed72aa29ede06d3a5115128e2267793ca611d4.
|
|
Requires the response parser methods in libqmi.
|
|
|
|
|
|
|
|
|
|
|
|
Some modems (e.g. Telit FN990) reports 5G capabilities in CustomDataClass
field of device-caps cid: take this into account when building the
modes according to the data caps.
|
|
==109786== 2,798 (96 direct, 2,702 indirect) bytes in 2 blocks are definitely lost in loss record 5,882 of 5,903
==109786== at 0x4841888: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==109786== by 0x4A01329: g_malloc (gmem.c:130)
==109786== by 0x4A23F17: g_slice_alloc (gslice.c:1074)
==109786== by 0x4A4B8F8: UnknownInlinedFun (gvariant-core.c:488)
==109786== by 0x4A4B8F8: UnknownInlinedFun (gvariant-core.c:626)
==109786== by 0x4A4B8F8: g_variant_builder_end (gvariant.c:3756)
==109786== by 0x48FD6DC: mm_pco_to_variant (mm-pco.c:251)
==109786== by 0x1AB397: mm_iface_modem_3gpp_update_pco_list (mm-iface-modem-3gpp.c:2274)
==109786== by 0x2306DF: ms_basic_connect_extensions_notification_pco (mm-broadband-modem-mbim.c:5101)
==109786== by 0x2306DF: ms_basic_connect_extensions_notification (mm-broadband-modem-mbim.c:5280)
==109786== by 0x2306DF: device_notification_cb (mm-broadband-modem-mbim.c:5332)
==109786== by 0x4CD3BD6: g_cclosure_marshal_VOID__BOXEDv (gmarshal.c:1686)
==109786== by 0x4CED11B: UnknownInlinedFun (gclosure.c:895)
==109786== by 0x4CED11B: g_signal_emit_valist (gsignal.c:3456)
==109786== by 0x4CED203: g_signal_emit (gsignal.c:3606)
==109786== by 0x50ADA0F: indication_ready (mbim-device.c:870)
==109786== by 0x4B92DD3: g_task_return_now (gtask.c:1232)
|
|
An explicit packet service state update request sent during a
connection attempt may end up triggering an explicit re-attach with
the network, which in turn cancels the ongoing connection attempt.
The logic to trigger an explicit attach is now managed by the
Simple.Connect() operation, which will make sure that no new request
is sent if the modem is already attached, so there is no need for this
step in the MBIM connection logic any more.
Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/622
|