Age | Commit message (Collapse) | Author |
|
|
|
|
|
Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/409
|
|
Only the plural ATTRS form was checked but we also need to support
the single ATTR for matching device's attribute only.
Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
|
|
The template files in the `build-aux` directory used in enums sources
and headers generation use the `{$name}-template.[ch]` pattern.
However, the examples in the official guide[0] and usually GNOME and
Freedesktop packages use the `{$name}.[ch].template` pattern.
Due to this, the name of the template files and build commands have
been changed.
[0] https://developer.gnome.org/gobject/stable/glib-mkenums.html
|
|
The port open operation may be happening very early after the device
has booted, so let's give the module some more time to reply the very
first MBIM query we do. The original 10s seems to be a bit tight in
some cases.
See https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/405#note_1006746
|
|
Regardless of whether WDA is supported or not.
|
|
We should check if WDA is supported before running any other logic
that may change the state of the kernel or the modem. E.g. if we don't
do this as the first step, the loading of the supported kernel data
modes may end up changing the expected kernel data mode to raw-ip.
|
|
ModemManager[703345]: <debug> [1626962477.971869] [modem0] couldn't open QMI port with data format update: Unexpected kernel data mode: cannot setup using CTL
ModemManager[703345]: <debug> [1626962477.972197] [cdc-wdm0/qmi] Opening QMI device...
ModemManager[703345]: <debug> [1626962477.972310] [cdc-wdm0/qmi] Checking if QMI device already opening...
ModemManager[703345]: <warn> [1626962477.975182] [modem0] couldn't start initialization: QMI device open/close operation in progress
|
|
E.g. the ZTE MF190 has a very old QMI firmware that is not able to run
CTL Set Data Format (raw-ip).
ModemManager[666366]: [/dev/cdc-wdm0] QMI Device supports 4 services:
ModemManager[666366]: [/dev/cdc-wdm0] ctl (1.2)
ModemManager[666366]: [/dev/cdc-wdm0] wds (1.3)
ModemManager[666366]: [/dev/cdc-wdm0] dms (1.2)
ModemManager[666366]: [/dev/cdc-wdm0] nas (1.0)
ModemManager[666366]: [/dev/cdc-wdm0] Setting network port data format...
ModemManager[666366]: [/dev/cdc-wdm0] Sent message...
<<<<<< RAW:
<<<<<< length = 21
<<<<<< data = 01:14:00:00:00:00:00:03:26:00:09:00:10:02:00:02:00:01:01:00:00
ModemManager[666366]: [/dev/cdc-wdm0] Sent generic request (translated)...
<<<<<< QMUX:
<<<<<< length = 20
<<<<<< flags = 0x00
<<<<<< service = "ctl"
<<<<<< client = 0
<<<<<< QMI:
<<<<<< flags = "none"
<<<<<< transaction = 3
<<<<<< tlv_length = 9
<<<<<< message = "Set Data Format" (0x0026)
<<<<<< TLV:
<<<<<< type = "Protocol" (0x10)
<<<<<< length = 2
<<<<<< value = 02:00
<<<<<< translated = raw-ip
<<<<<< TLV:
<<<<<< type = "Format" (0x01)
<<<<<< length = 1
<<<<<< value = 00
<<<<<< translated = absent
ModemManager[666366]: [/dev/cdc-wdm0] Received message...
<<<<<< RAW:
<<<<<< length = 19
<<<<<< data = 01:12:00:80:00:00:01:03:26:00:07:00:02:04:00:01:00:2D:00
ModemManager[666366]: [/dev/cdc-wdm0] Received generic response (translated)...
<<<<<< QMUX:
<<<<<< length = 18
<<<<<< flags = 0x80
<<<<<< service = "ctl"
<<<<<< client = 0
<<<<<< QMI:
<<<<<< flags = "response"
<<<<<< transaction = 3
<<<<<< tlv_length = 7
<<<<<< message = "Set Data Format" (0x0026)
<<<<<< TLV:
<<<<<< type = "Result" (0x02)
<<<<<< length = 4
<<<<<< value = 01:00:2D:00
<<<<<< translated = FAILURE: InvalidDataFormat
ModemManager[666366]: <debug> [1626961628.001354] [cdc-wdm0/qmi] QMI port open operation failed: QMI protocol error (45): 'InvalidDataFormat'
ModemManager[666366]: <warn> [1626961628.002563] [modem0] couldn't start initialization: QMI protocol error (45): 'InvalidDataFormat'
ModemManager[666366]: <warn> [1626961628.004181] [modem0] couldn't initialize: 'Modem is unusable, cannot fully initialize'
|
|
|
|
WWAN network devices expose link management over netlink (wwan type),
but it is not yet supported by libmbim.
Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
|
|
The wwan subsystem is a new bus agnostic framework exposing wwan
device and its components (ports, netdev...). It can be useful to
get the wwan device a device belongs to
Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
|
|
QMI modems remove trailing F in 19 digit ICCID. Do the same on
MBIM modems for consistency.
|
|
Requires IPA kernel driver to expose the TX and RX endpoint IDs through sysfs.
Available from linux 5.14 onwards.
|
|
Required by MMPortQmi for fetching the TX and RX endpoint IDs
through sysfs from linux 5.14 onwards
|
|
Will be set by base modem when organizing ports, similar to
net driver name. Required for fetching the TX and RX endpoint IDs
through sysfs from linux 5.14 onwards.
|
|
|
|
When querying the slots using "Slot info status", the modem expects
the slot index passed in the [0,number_slots-1] range.
But for the ModemManager API, the slot indices start at 1; i.e. they
are in the [1,number_of_slots] range.
Consider that wen reporting the current slot index using MBIM.
|
|
|
|
|
|
Fixes AT load call list function messing up with the call list
in case of both AT+QMI is available for a given modem.
|
|
We should never run any mm_bearer_properties_set_X() operations
ourselves for the properties received by the user, or otherwise the
logic comparing the bearers will fail and we may end up creating one
bearer per connection attempt.
|
|
If the user doesn't provide a specific multiplex setting, we'll
fallback to a predefined default.
For now, the default is REQUESTED.
|
|
|
|
==636642== Syscall param socketcall.sendto(msg) points to uninitialised byte(s)
==636642== at 0x5282BAC: send (in /usr/lib/libpthread-2.33.so)
==636642== by 0x4EF20AF: UnknownInlinedFun (gsocket.c:3426)
==636642== by 0x4EF20AF: g_socket_send_with_blocking (gsocket.c:3529)
==636642== by 0x4EDF176: g_output_stream_write (goutputstream.c:242)
==636642== by 0x4EDF2D4: g_output_stream_write_all (goutputstream.c:301)
==636642== by 0x4A5CDAC: endpoint_send (qmi-endpoint-qmux.c:409)
==636642== by 0x4A5B963: qmi_endpoint_send (qmi-endpoint.c:225)
==636642== by 0x4A55408: qmi_device_command_abortable (qmi-device.c:2897)
==636642== by 0x4A554C3: qmi_device_command_full (qmi-device.c:2923)
==636642== by 0x4B52664: qmi_client_nas_set_system_selection_preference (qmi-nas.c:61099)
==636642== by 0x1F6FDC: register_in_network_sssp (mm-shared-qmi.c:455)
==636642== by 0x1F71E6: mm_shared_qmi_3gpp_register_in_network (mm-shared-qmi.c:505)
==636642== by 0x19FCF0: mm_iface_modem_3gpp_register_in_network (mm-iface-modem-3gpp.c:484)
==636642== Address 0x880a3b3 is 19 bytes inside a block of size 32 alloc'd
==636642== at 0x484383F: realloc (vg_replace_malloc.c:1192)
==636642== by 0x50DC130: g_realloc (gmem.c:171)
==636642== by 0x50A067C: g_array_maybe_expand (garray.c:1009)
==636642== by 0x50A0A0C: UnknownInlinedFun (garray.c:520)
==636642== by 0x50A0A0C: g_array_append_vals (garray.c:509)
==636642== by 0x50A0A9E: g_byte_array_append (garray.c:2430)
==636642== by 0x4A4B70D: qmi_message_tlv_write_guint8 (qmi-message.c:686)
==636642== by 0x4B14CA8: __qmi_message_nas_set_system_selection_preference_request_create (qmi-nas.c:33477)
==636642== by 0x4B525B6: qmi_client_nas_set_system_selection_preference (qmi-nas.c:61087)
==636642== by 0x1F6FDC: register_in_network_sssp (mm-shared-qmi.c:455)
==636642== by 0x1F71E6: mm_shared_qmi_3gpp_register_in_network (mm-shared-qmi.c:505)
==636642== by 0x19FCF0: mm_iface_modem_3gpp_register_in_network (mm-iface-modem-3gpp.c:484)
==636642== by 0x1B0BD4: check_next_registration (mm-iface-modem-simple.c:154)
|
|
The signal handler may have been already removed during dispose of the
modem object, which is run manually through g_object_run_dispose().
Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/399
|
|
|
|
Prior to this change, a hotswap on the inactive slot would result
in reprobe of the modem. With this change, the sim object would be
updated, but no reprobe will be performed. The advantage is
1) we do not drop connections on the active slot
2) Slot status on the inactive slot is susceptible to firmware bugs.
We have seen scenarios where the inactive slot is reported as
absent/ iccid={0}, followed by a correction. We should not
reprobe the modem if our active slot hasn't changed.
|
|
service
Not all manufacturers expect this service to be used for the simple
purpose of reseting the modem.
It works with Sierra Wireless devices (e.g. EM7345,
XMM7160_V1.1_MODEM_01.1349.12), but it doesn't work with Cinterion
devices (e.g. mPLS62-w, XMM7160_V1.1_MBIM_NAND_ADAPT_R).
So allow plugins to disable its use entirely.
|
|
This was required when building with GLib < 2.54, but we now require
2.56 as minimum, so it is no longer needed.
|
|
There are modems (e.g. Nokia, Thuraya, Iridium) which don't require or
don't support power management, and therefore there is no way to
either load or update the power status.
In those modems we just assume ON is the current and only value (set
in the skeleton during initialization) and so when we attempt to
update the power state to ON during enabling, the logic should not
break.
Fix the logic by making sure the requested_power_setup() function
pointers are only checked for validity after ensuring we're not
already in the desired power state.
Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/398
|
|
indication
|
|
|
|
|
|
|
|
Calling the mm_iface_modem_update_unlock_retries function directly from
pin_set_enter_ready caused a notification to be send too early with
invalid number of attempts to unlock on MBIM modems.
The mm_iface_modem_update_unlock_retries is already called for all
modems from send_pin_ready (mm-base-sim.c).
|
|
Each with its expected corresponding length.
|
|
Currently, we are not increasing the reference counter of the QrtrNode
when creating a PortQmi for a QRTR port, and we are clearing the object
when disposing the port.
|
|
If using rmnet and IP passthrough setting in qmi_wwan, also configure
the master interface with an MTU equal to the maximum data aggregation
size.
Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/367
|
|
==4263== 747 (72 direct, 675 indirect) bytes in 3 blocks are definitely lost in loss record 5,739 of 5,787
==4263== at 0x4842839: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==4263== by 0x50C6DE8: g_malloc (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6800.1)
==4263== by 0x50DDFF1: g_slice_alloc (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6800.1)
==4263== by 0x50B8EB9: g_list_prepend (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6800.1)
==4263== by 0x27CE4C: mm_3gpp_parse_cgdcont_read_response (mm-modem-helpers.c:1845)
==4263== by 0x1E5485: profile_manager_cgdcont_query_ready (mm-broadband-modem.c:10200)
==4263== by 0x4ED54A1: g_simple_async_result_complete (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.6800.1)
==4263== by 0x18605E: at_command_ready (mm-base-modem-at.c:538)
==4263== by 0x4ED54A1: g_simple_async_result_complete (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.6800.1)
==4263== by 0x25ADFA: serial_command_ready (mm-port-serial-at.c:393)
==4263== by 0x4ED54A1: g_simple_async_result_complete (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.6800.1)
==4263== by 0x254752: command_context_complete_and_free (mm-port-serial.c:141)
|
|
Use mm_obj_warn() instead.
|
|
Use mm_obj_warn() instead.
|
|
|
|
|
|
These lists were used in the corresponding TTY_BLACKLIST and
TTY_MANUAL_SCAN_ONLY filter rules, in the LEGACY and PARANOID filter
types, which are no longer supported.
The DEFAULT_ALLOWED filter rule made sense only in the LEGACY filter
type, and therefore it is also now removed, leaving the
DEFAULT_FORBIDDEN fallback rule exclusively. In other words, there is
now no way to ask ModemManager to implicitly allow TTY ports; the only
way to do that is by explicit making the TTY ports fall in one filter
rule that would allow them.
|
|
Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/390
|
|
wwan qcdm port is not a serial port, calling config_fd on it
will always fail, i.e.:
ModemManager[124587]: <debug> [1619584182.125262] [wwan0p1QCDM/probe] probing QCDM...
ModemManager[124587]: <debug> [1619584182.125398] [wwan0p1QCDM/qcdm] opening serial port...
ModemManager[124587]: <debug> [1619584182.151759] [wwan0p1QCDM/qcdm] failed to configure serial device
ModemManager[124587]: <warn> [1619584182.151836] [wwan0p1QCDM/qcdm] failed to open serial device
ModemManager[124587]: <warn> [1619584182.170152] [plugin-manager] task 1,wwan0p1QCDM: error when checking support with plugin 'generic': (wwan/wwan0p1QCDM) Failed to open QCDM port: Failed to open QCDM port: -2
|
|
|
|
FIREHOSE ports are used for firmware updates which are done
independently from ModemManager, so we should ignore those ports.
A similar change was originally made by Loic Poulain here:
https://gitlab.freedesktop.org/loicpoulain/ModemManager/-/commit/32b0eb79cdbb37afe33abb72fd948be3cbaf6a2d
|