Commit Graph
9033 Commits
Author SHA1 Message Date
Aleksander Morgado 8e8e88b75d broadband-modem: update modem state before disabling task is completed
The modem state property update was happening at disabling task context
free time, after the actual task completion has happened.

Avoid wrong assumptions on the modem state value in operations
scheduled after the task completion, in the same way as done in the
enabling sequence.
2024-09-30 07:51:53 +00:00
Aleksander Morgado 17929188d8 broadband-modem: update modem state before enabling task is completed
The modem state property update was happening at enabling task context
free time, after the actual task completion has happened. Due to this,
scheduling a new enable request right after finishing one would end up
with the logic asserting, as the new enable operation would be
scheduled while the modem was still reporting "enabling" state.

  ModemManager[7673]: <inf> [1722359278.131123] [modem0] processing user request to enable modem...
  **
  ERROR:../src/mm-broadband-modem.c:12487:enable: code should not be reached
  Bail out! ERROR:../src/mm-broadband-modem.c:12487:enable: code should not be reached
  Aborted
2024-09-30 07:51:53 +00:00
Michal Mazur a030eaef76 sim: add common helpers to parse operator name and mnc length 2024-09-25 12:08:40 +00:00
Michal Mazur 257839c66e sim-mbim: read operator name and id from SIM EF files
Currently the SIM operator name and code are read using the "Home
Provider" query operation which may perform network communication
to get name provided by operator. This may take long to complete
or even timeout. Solution is to read name and id from SIM card.
2024-09-25 12:08:40 +00:00
Dan Williams 64646b98cd plugins/quectel: support modem power operations for AT-based devices
Signed-off-by: Dan Williams <dan@ioncontrol.co>
2024-09-24 23:52:13 -05:00
Aleksander Morgado a1f8045c53 build: require libmbim 1.31.5
We need a newer libmbim to handle the MBIM_CID_QDU_COMMAND operation
introduced for AT over MBIM in Quectel modems.

Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/892
2024-09-20 09:31:05 +00:00
Kamesh Relangi 7de52c0b79 qrtr-bus-watcher: Increase delay for probing
Sometimes Qualcomm modem is not detected because modem is up
after initial probing is completed.
Increase in wait time for probing to ensure that modem is up.
2024-09-18 20:53:37 +05:30
Dan Williams f19f20c008 helpers: consolidate some uses of mm_kernel_device_get_subsystem()
Signed-off-by: Dan Williams <dan@ioncontrol.co>
2024-09-17 12:20:46 -05:00
Dan Williams 0b5f2adb4b port-probe: restart AT probing if "NO CARRIER" is received during QCDM probing
If the system and modem are independently powered, a system restart may
leave one of the modem's AT ports in PPP mode. On restart this may cause
AT probing to fail. The modem may terminate PPP after receiving bogus
HDLC frames from QCDM probing (since PPP also uses HDLC framing), and
return "NO CARRIER". We can use this to restart AT probing now that
PPP is down and auto-detect the expected additional AT ports.

Feb 08 20:22:53 ModemManager[385]: <debug> [1675887773.887574] [ttyUSB2/at] <-- '\8\158\239~'
Feb 08 20:22:54 ModemManager[385]: <debug> [1675887774.215054] [ttyUSB2/at] <-- '\8\214\137~'
Feb 08 20:22:54 ModemManager[385]: <debug> [1675887774.851349] [ttyUSB2/at] <-- '\8\250\177~'
Feb 08 20:22:55 ModemManager[385]: <debug> [1675887775.576776] [ttyUSB2/at] <-- '\8\168u~'
Feb 08 20:22:55 ModemManager[385]: <debug> [1675887775.612694] [ttyUSB2/at] <-- '\8w\25~'
Feb 08 20:22:55 ModemManager[385]: <debug> [1675887775.862886] [ttyUSB2/at] <-- '\8!&~'
Feb 08 20:22:56 ModemManager[385]: <debug> [1675887776.614747] [ttyUSB2/at] <-- '\8%\254~'
Feb 08 20:22:56 ModemManager[385]: <debug> [1675887776.686207] [ttyUSB2/probe] port is not AT-capable
Feb 08 20:22:56 ModemManager[385]: <debug> [1675887776.686447] [ttyUSB2/probe] probing QCDM...
Feb 08 20:22:56 ModemManager[385]: <debug> [1675887776.725483] [ttyUSB2/qcdm] --> 7e 00 78 f0 7e
Feb 08 20:22:56 ModemManager[385]: <debug> [1675887776.880941] [ttyUSB2/qcdm] <-- 0d 0a 4e 4f 20 43 41 52 52 49 45 52 0d 0a

Signed-off-by: Dan Williams <dan@ioncontrol.co>
2024-09-17 11:26:06 -05:00
Dan Williams 7937a89a37 port-probe: rework and consolidate port probe flow for AT/QCDM/QMI/MBIM
Open the AT port from the regular port probe flow rather than doing
that one-off at the beginning of probing. That lets us re-open the AT
port later if needed, based on QCDM/QMI/MBIM probing results.

Signed-off-by: Dan Williams <dan@ioncontrol.co>
2024-09-17 11:23:01 -05:00
Dan Williams 6664d3740d port-probe: consolidate serial port closure and cleanup
Signed-off-by: Dan Williams <dan@ioncontrol.co>
2024-09-17 11:11:23 -05:00
Lukas Voegl 76b48f6194 cinterion: implement FDL update method
Adds AT^SFDL based Firmware Download as an update method for supported Cinterion modems.

Signed-off-by: Lukas Voegl <lvoegl@tdt.de>
2024-09-16 12:26:18 +02:00
Aleksander Morgado a1214b5fd5 build: unstable release version bump to 1.23.11 2024-09-16 09:19:23 +00:00
Aleksander Morgado a1f2d8c99b broadband-modem-mbim: log hex value of IP type if unknown
The L850 seems to report 0xFFFFFFFF as MbimContextIpType value, which
is not a correct value.

Instead of printing "(none)" (the default used by glib when trying to
print a NULL pointer as a string), make it so that we end up printing
the actual numeric value in hex.

   <dbg> [modem0] 'home' settings found at configuration index 0
   <dbg> [modem0] 'non-partner' settings found at configuration index 1
   <dbg> [modem0] 'partner' settings not found
   <dbg> [modem0] updates in the home LTE attach configuration settings:
   <dbg> [modem0]   ip type: 'unknown (0xffffffff)' -> ''ipv4v6'
   <dbg> [modem0] updates in the partner LTE attach configuration settings:
   <dbg> [modem0]   none (skipped)
   <dbg> [modem0] updates in the non-partner LTE attach configuration settings:
   <dbg> [modem0]   none
2024-09-11 11:01:19 +00:00
Aleksander Morgado 4748ebf300 broadband-modem-mbim: update all home/partner/non-partner LTE attach settings
Instead of updating the attach settings associated with the home
network, update all three to the same values, so that network attach
while roaming uses the same settings as in home.

This is a major change in behavior; if there is ever a need to roll
back to the old behavior because a given device doesn't support this,
we can provided device-specific behaviors using the
load_set_initial_eps_bearer_settings_mask() virtual method.
2024-09-11 11:01:18 +00:00
Aleksander Morgado 8a5aab8be5 fibocom: L850 specific hack when using an AT&T 310280 SIM card
L850 modems running a firmware version less than 18500.5001.0.7 and
using AT&T SIM cards with MCCMNC 310280 do not support specifying
"partner" settings in the MBIM operation to set the LTE attach
configuration.
2024-09-11 11:01:18 +00:00
Aleksander Morgado 58f25ec5f9 broadband-modem-mbim: rework the logic to set LTE attach configuration
The ModemManager API provides a single method to update the attach
settings used in LTE registration, but in the MBIM protocol there are
three different distinct configurations associated with that
operation.

Until now we have exclusively updated the "home" settings, leaving the
"partner" and "non-partner" settings untouched (i.e. we loaded the
existing settings for these sections, and used the same ones when
providing our update operation).

Unfortunately, this logic does not fit all needs. Some modems will
require all 3 elements to be unconditionally updated, and some other
modems may need to fully skip one of the configuration sections.

The rework done in this commit does not change the behavior, but
provides the ability for subclasses to modify how the operation is
done, via a set of flags that is provided on each update attempt (as
sometimes the behavior is operator-specific).
2024-09-11 11:01:18 +00:00
Aleksander Morgado a5c15ec7d8 broadband-modem-mbim: rework home settings lookup in LTE attach config response
We look for the home settings, but also allow to optionally lookup for
the partner and non-partner settings, logging in each case if we find
anomalies (e.g. if not found or if found duplicated entries).
2024-09-11 11:01:18 +00:00
Aleksander Morgado 9d4eb8f1ba modem-helpers-mbim: minor coding style fix 2024-09-11 11:01:18 +00:00
Dan Williams 478e9645ca tests: test mm_split_string_groups()
Signed-off-by: Dan Williams <dan@ioncontrol.co>
2024-09-10 19:03:31 -05:00
Dan Williams 1a43833d99 modem-helpers: remove duplicate include
Signed-off-by: Dan Williams <dan@ioncontrol.co>
2024-09-10 19:03:31 -05:00
Kyle Evans 7fadbc0615 mm-sms-list: tag dbg messages with base sms identifier
This helps identify which base sms the message belongs to.

Previous
[modem0/sms-list] found existing multipart SMS object with reference
'126': adding new part

New
[modem0/sms0] found existing multipart SMS object with reference
'126': adding new part

Signed-off-by: Kyle Evans <kvans32@gmail.com>
2024-09-09 08:48:37 +00:00
Kyle Evans 7eca4583cd sms-part-3gpp: add the message timestamp in dbg
This aids in determining the age of messages stuck in receiving.

Signed-off-by: Kyle Evans <kvans32@gmail.com>
2024-09-09 08:48:37 +00:00
Kyle Evans ae88eeed49 mm-base-sms: cmp by reference & number
Messages from different senders can have the same reference.
Stale messages from the same sender can also conflict.

Consider the number of the sender and also the max parts
when assigning parts to a base sms.

Ref 3gpp specification section 9.2.3.24.1

Fixes #757

Signed-off-by: Kyle Evans <kvans32@gmail.com>
2024-09-09 08:48:37 +00:00
Lukas Voegl d763b94677 quectel: implement DFOTA update method 2024-09-09 08:26:15 +00:00
mank.wang 0bab39a20b Quectel: Fix obtaining incorrect module names 2024-09-09 08:16:04 +00:00
Vanillan Wang ec779b9274 plugin,rolling: Update RW135 udev rules. 2024-09-09 07:35:51 +00:00
Aleksander Morgado 096455947a mtk: never reload TX/RX stats in FM350
The device always reports empty TX/RX values so there is no point in
periodically asking.

The logic to poll for stats is kept in place only if the device
requires the IP packet filters removal hack.
2024-08-29 10:07:43 +00:00
Aleksander Morgado 2b3f4f22c2 fibocom: NL668 ttys are managed by the option driver
So they are ttyUSB instead of ttyACM.
2024-08-23 16:26:34 +00:00
Aleksander Morgado e30ed1bc47 fibocom: add L850 AT port hints
Just so that we make sure no other probing type is tried with them.
2024-08-23 16:24:37 +00:00
Aleksander Morgado 04b3a3f01c build: unstable release version bump to 1.23.10 2024-08-21 17:52:24 +00:00
Aleksander Morgado 8ff4b3638f modem-helpers-qmi: map the DUN/tethering APN type
libqmi version is bumped to 1.35.6, which is the unstable tag that
includes the new symbols.
2024-08-21 17:04:38 +00:00
Daniele Palmas f62ff207bb telit: add port hints for FN912C04 0x3000 and 0x3001 compositions
Related kernel commits:

9a590ff28342 ("USB: serial: option: add Telit FN912 rmnet compositions")
77453e2b015b ("net: usb: qmi_wwan: add Telit FN912 compositions")
2024-08-05 03:25:09 +00:00
Aleksander Morgado e685479a6e build: reorder netprisma plugin alphabetically 2024-08-02 14:40:12 +00:00
Aleksander Morgado e1d0bd0a64 netprisma: remove serial modems support 2024-08-02 14:38:03 +00:00
Mank Wang d7dab1773d Netprisma: Add new plugin 2024-08-02 14:34:16 +00:00
Sebastian Krzyszkowiak 93c1e55d36 mm-iface-modem: Always check properties for disabling signal polling
MMBroadbandModemQmi only disables signal polling once it successfully
sets the indication up. To do that, it sets the properties on
MMIfaceModem. This, however, doesn't actually disable polling, as the
property values are only checked once in get_private when Private
structure hasn't been created yet. Once that happens, only the cached
values are ever checked, and there's nothing that would update them.

Since there's only one place where these properties are checked, get
rid of cached bools in Private structure and instead read the property
values directly in periodic_signal_check_step, letting QMI modems
actually disable polling at runtime.
2024-08-02 03:43:44 +02:00
Bolan Wang 388e8ea538 plugin,mtk: Add load_unlock_retries
This patch add load_unlock_retries support by AT in mtk-based Fibocom
modem.
2024-07-31 20:13:28 +00:00
Thomas Vogt 7312c86130 intel: mark XMM7360 as unsupported 2024-07-31 17:36:14 +00:00
Thomas Vogt c2e3a8c10e port-probe: detect XMMRPC ports 2024-07-31 17:36:14 +00:00
Michal Mazur 1c4f2320f1 broadband-modem-mbim: workaround for invalid SMS part index on L850
Fibocom L850 modems report an invalid part index (always 1) in the
response message. Because we know which message part was requested,
we can use that value instead to workaround this bug.
2024-07-31 17:30:15 +00:00
mank.wang 8cbd12a603 quectel: support at over mbim in quectel modems 2024-07-31 13:58:16 +00:00
Aleksander Morgado 14192af87e build: unstable release version bump to 1.23.9 2024-07-26 16:35:18 +00:00
lupuliang fc2886a3f9 rolling: Set RW101 AT port to ignore
MM does not need to use two AT ports at the same time.
Sending AT to both ports at the same time may cause the ports to not work.
2024-07-22 15:01:57 +00:00
Puliang Lu 4632af30a7 fibocom: Set FM101 AT port to ignore
MM does not need to use two AT ports at the same time.
Sending AT to both ports at the same time may cause the ports to not work.
2024-07-22 14:58:01 +00:00
Dan Williams 99b18fa863 man: fix line starting with ' and remove an extra .
Fixes: https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/867

Thanks to John Veness
2024-07-17 11:39:53 -05:00
Lubomir Rintel 509acb6474 mmcli: fix a memory leak
Poor modem_uid got left behind.
2024-07-09 14:55:30 +00:00
Lubomir Rintel 664d748a93 ublox/helpers: fix propagation of +URAT response parse error
The fallback error handling branch happens much too late, just leaking the
newly made GError instead of propagating.
2024-07-09 14:55:30 +00:00
Lubomir Rintel 0365f9f0d8 Revert "ublox/helpers: fix propagation of +URAT response parse error"
Not quite correct -- with the patch applied, the newly allocated GError
could potentially overwrite inner_error that was set previously.

This reverts commit d550a24ffdae4492e9f9e18fdf294adcda28fb65.
2024-07-09 14:55:30 +00:00
Lubomir Rintel 26f36f79c9 build: bump libmbim dependency
Fibocom's MBIM support needs this:

  mm-port-mbim-fibocom.c: In function ‘iface_port_at_check_support’:
  mm-port-mbim-fibocom.c:64:66: error: ‘MBIM_SERVICE_FIBOCOM’ undeclared (first use in this function); did you mean ‘MBIM_SERVICE_GOOGLE’?
     64 |         if (!mm_port_mbim_supports_command (MM_PORT_MBIM (self), MBIM_SERVICE_FIBOCOM, MBIM_CID_FIBOCOM_AT_COMMAND)) {
        |                                                                  ^~~~~~~~~~~~~~~~~~~~
        |                                                                  MBIM_SERVICE_GOOGLE
  mm-port-mbim-fibocom.c:64:66: note: each undeclared identifier is reported only once for each function it appears in
  mm-port-mbim-fibocom.c:64:88: error: ‘MBIM_CID_FIBOCOM_AT_COMMAND’ undeclared (first use in this function)
     64 |         if (!mm_port_mbim_supports_command (MM_PORT_MBIM (self), MBIM_SERVICE_FIBOCOM, MBIM_CID_FIBOCOM_AT_COMMAND)) {
        |                                                                                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~

Fixes: c66a6b89ec ('fibocom: create custom MBIM port object with potential AT support')
2024-07-09 14:49:22 +00:00