Commit Graph

7640 Commits

Author SHA1 Message Date
Aleksander Morgado
04dba846c9 bearer-list: if non-multiplexing not supported, 0 max non-multiplexed bearers 2021-08-09 12:22:26 +00:00
Aleksander Morgado
9d2782cc5a bearer-list: if multiplexing not supported, 0 max multiplexed bearers
Fixes warnings on AT+PPP based devices:

   ModemManager[602870]: <debug> [1626948725.168355] [modem0] allowed up to 1 active bearers

   (ModemManager:602870): GLib-GObject-WARNING **: 12:12:05.185: value "0" of type 'guint' is invalid or out of range for property 'max-active-multiplexed-bearers' of type 'guint'
2021-08-09 12:22:26 +00:00
Freedom Liu
f720467016 foxconn: add T99W175 carrier mapping table 2021-08-09 17:47:27 +08:00
Freedom Liu
10521ce248 foxconn: update T77W968 carrier mapping table 2021-08-09 15:40:03 +08:00
Freedom Liu
33e2b023ef foxconn: Rename carrier-mapping to t77w968-carrier-mapping 2021-08-09 15:37:22 +08:00
Aleksander Morgado
180bd63381 ci: switch to build libqrtr-glib from git using meson 2021-08-06 10:47:13 +02:00
Aleksander Morgado
7eb6495c48 ci: switch to build libqmi from git using meson 2021-08-06 10:19:29 +02:00
Aleksander Morgado
b77c15f8b5 broadband-modem-mbim: minor rework in SIM event related comments 2021-08-04 14:21:44 +02:00
Aleksander Morgado
bcf5f2bc8b broadband-modem-mbim: also report as available not fully ready SIMs
If a SIM card is not fully ready or in a failed state in the
non-active slot, we should still report them as available.
2021-08-04 14:21:39 +02:00
ZhangMingjie
3004e99fcb broadband-modem-mbim: deal with the slot info status notification event for DSSA 2021-08-04 11:02:43 +02:00
Loic Poulain
9e5e699227 kernel-device-generic: Fix ptr_array_add_sysfs_attribute_link_basename
A pointer can not be used anymore after its ownership has been transfered
using the g_steal_pointer function (pointer is nullified).

In this function, g_steal_pointer() is used when inserting 'value' inside
the array but can also be subsequently used when dumping 'value' to
'out_value' via g_strdup().

Fix that with simple reordering.

Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
2021-08-04 07:40:09 +00:00
Joel Selvaraj
b91bf1e3a6 modem-qmi: implement multiparty functionalities
The following functionalities are implemented:
1. Hold all and accept
2. Hangup all and accept
3. Hangup all
4. Join multiparty
5. Leave multiparty
6. Call transfer
2021-08-02 13:11:29 +00:00
Joel Selvaraj
691cb9b694 modem-qmi: implement call waiting setup and query 2021-08-02 13:11:29 +00:00
Joel Selvaraj
1894dd7767 modem-qmi: implement setup in call unsolicited events
Handle supplementary service notification indication.
Useful to know when existing call is on hold, unheld and waiting.
2021-08-02 13:11:29 +00:00
Joel Selvaraj
82054410e2 call-list: allow getting call object by index 2021-08-02 13:11:29 +00:00
Joel Selvaraj
99ba7ee266 build: bump libqmi requirement to support voice supplementary services 2021-08-02 13:11:29 +00:00
Teijo Kinnunen
0610267fa8 test,modem-helpers: add test case of AT+CPOL? response parsing 2021-08-02 12:42:13 +03:00
Teijo Kinnunen
948099bff0 modem-helpers: allow unquoted operator code in AT+CPOL? response
Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/409
2021-08-02 12:39:38 +03:00
Aleksander Morgado
f9d2168c52 telit: disable +CPOL based features in the LN930
Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/414
2021-08-01 16:32:28 +02:00
Aleksander Morgado
999df00d58 fibocom: fix QMI device allowance
E.g. for a FM150:

   [1627656003.230873] [cdc-wdm0] port contents loaded:
   [1627656003.231069] [cdc-wdm0]   bus: usb
   [1627656003.231179] [cdc-wdm0]   interface: /sys/devices/pci0000:00/0000:00:14.0/usb1/1-11/1-11.4/1-11.4.4/1-11.4.4:1.4
   [1627656003.231272] [cdc-wdm0]   device: /sys/devices/pci0000:00/0000:00:14.0/usb1/1-11/1-11.4/1-11.4.4
   [1627656003.231364] [cdc-wdm0]   driver: qmi_wwan
   [1627656003.231450] [cdc-wdm0]   vendor: 2cb7
   [1627656003.231536] [cdc-wdm0]   product: 0104
   [1627656003.231626] [cdc-wdm0]   revision: 0414
   [1627656003.231722] [base-manager] adding port cdc-wdm0 at sysfs path: /sys/devices/pci0000:00/0000:00:14.0/usb1/1-11/1-11.4/1-11.4.4/1-11.4.4:1.4/usbmisc/cdc-wdm0
   ...
   [1627656004.333874] [plugin/fibocom] port cdc-wdm0 filtered by implicit QMI driver
2021-07-31 23:12:55 +02:00
Aleksander Morgado
c4130dcf83 huawei: disable CPOL based features in the R215
Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/411
2021-07-31 23:12:55 +02:00
Aleksander Morgado
13d82c1de2 huawei: ignore ^LWURC URCs
Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/412
2021-07-31 23:12:55 +02:00
Loic Poulain
b0248e471c kernel-device: generic: Support ATTR condition
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>
2021-07-30 14:03:40 +00:00
Iñigo Martínez
7c4db66eb3 build: Rename template files
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
2021-07-30 10:14:52 +00:00
Aleksander Morgado
b935782010 cinterion: increase ^SCFG? timeout to 120s
The timeout in this command is extremely large, because there are some
modules like the EGS5 that build the response based on the current
network registration, and that implies the module needs to be
registered. If for any reason there is no serving network where to
register, the response comes after a very long time, up to 100s.

Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/408
2021-07-29 13:06:11 +02:00
Aleksander Morgado
2590c4f0d7 ci: switch to build libmbim from git using meson 2021-07-28 16:14:45 +02:00
Aleksander Morgado
15f53851c8 port-mbim: increase timeout of first command after port open
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
2021-07-27 16:00:58 +02:00
Aleksander Morgado
bcf11c0e50 port-qmi: open without data format explicitly if requested by user
Regardless of whether WDA is supported or not.
2021-07-27 00:39:29 +02:00
Aleksander Morgado
ee0f473233 port-qmi: early check if WDA is supported
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.
2021-07-27 00:39:29 +02:00
Aleksander Morgado
ae09baf61b port-qmi: cleanly close device if an open operation failed
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
2021-07-27 00:39:29 +02:00
Aleksander Morgado
9be34affe2 port-qmi: support devices that only run in 802.3 mode
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'
2021-07-27 00:39:29 +02:00
Aleksander Morgado
939cf166dd broadband-modem-qmi: remove trailing whitespaces 2021-07-27 00:37:53 +02:00
Aleksander Morgado
c43ab6d330 ci: remove autoconf-archive from template 2021-07-27 00:11:56 +02:00
Aleksander Morgado
e4d4bbbb72 huawei: plug memleak when processing GETPORTMODE hints
==99766== 96 (24 direct, 72 indirect) bytes in 1 blocks are definitely lost in loss record 3,791 of 4,243
   ==99766==    at 0x483E7C5: malloc (vg_replace_malloc.c:380)
   ==99766==    by 0x50DCAC9: g_malloc (gmem.c:106)
   ==99766==    by 0x50F46D6: g_slice_alloc (gslice.c:1069)
   ==99766==    by 0x50CE9F2: g_list_insert_sorted_real (glist.c:1109)
   ==99766==    by 0x753DE92: ???
   ==99766==    by 0x753E6D4: ???
   ==99766==    by 0x753E897: ???
   ==99766==    by 0x1F059D: mm_plugin_create_modem (mm-plugin.c:922)
   ==99766==    by 0x166693: mm_device_create_modem (mm-device.c:481)
   ==99766==    by 0x161547: device_support_check_ready (mm-base-manager.c:219)
   ==99766==    by 0x4F03533: g_task_return_now (gtask.c:1219)
   ==99766==    by 0x4F07078: UnknownInlinedFun (gtask.c:1289)
   ==99766==    by 0x4F07078: g_task_return (gtask.c:1245)
2021-07-27 00:10:02 +02:00
Aleksander Morgado
0d1952c489 option: disable preferred networks management in custom SIM object
It's been observed that running CPOL? would completely break the AT
port of the modules like the GIO225.

Fully disable this feature in the whole option and option-hso plugins,
by creating a new custom SIM object with the features disabled
completely, and setup as a new shared interface object.

Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/404
2021-07-27 00:10:02 +02:00
Aleksander Morgado
af0fba0585 iridium: disable preferred networks management in SIM object
It's not applicable to Iridium modems, which only work with one single
operator.
2021-07-27 00:10:02 +02:00
Aleksander Morgado
689769467a libqcdm: plug leak in qcdm_cdm_log_config_new()
==748616== 37 bytes in 1 blocks are definitely lost in loss record 2,850 of 4,938
   ==748616==    at 0x48435FF: calloc (vg_replace_malloc.c:1117)
   ==748616==    by 0x249CCF: qcdm_cmd_log_config_new (commands.c:1742)
   ==748616==    by 0x24A321: qcdm_cmd_log_config_set_mask_new (commands.c:1901)
   ==748616==    by 0x1DAE12: modem_cdma_setup_cleanup_unsolicited_events (mm-broadband-modem.c:8643)
   ==748616==    by 0x1DAF21: modem_cdma_setup_unsolicited_events (mm-broadband-modem.c:8671)
   ==748616==    by 0x1AE49F: interface_enabling_step (mm-iface-modem-cdma.c:1627)
   ==748616==    by 0x1AE680: mm_iface_modem_cdma_enable (mm-iface-modem-cdma.c:1693)
   ==748616==    by 0x1E2DF6: enabling_step (mm-broadband-modem.c:11756)
   ==748616==    by 0x1E204E: iface_modem_3gpp_ussd_enable_ready (mm-broadband-modem.c:11606)
   ==748616==    by 0x4F03533: g_task_return_now (gtask.c:1219)
   ==748616==    by 0x4F07078: UnknownInlinedFun (gtask.c:1289)
   ==748616==    by 0x4F07078: g_task_return (gtask.c:1245)
   ==748616==    by 0x1AA323: interface_enabling_step (mm-iface-modem-3gpp-ussd.c:702)
2021-07-27 00:10:02 +02:00
Aleksander Morgado
4bd8845f50 build: import used AX_ macros from autoconf-archive
This allows us to build from git without build-depending on
autoconf-archive, which is not always available as a package.
2021-07-27 00:10:02 +02:00
Aleksander Morgado
bdd340455a build: update introspection.m4
In sync with gobject-introspection 1.68.0
2021-07-27 00:10:02 +02:00
Loic Poulain
064624c69d bearer-mbim: Disable multiplex support for wwan devices
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>
2021-07-26 20:43:24 +00:00
Loic Poulain
2f38ea0155 kernel-device: Add get_wwandev_sysfs_path
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>
2021-07-26 20:43:24 +00:00
Pavan Holla
97ab517348 mm-sim-mbim: Remove trailing F in ICCID
QMI modems remove trailing F in 19 digit ICCID. Do the same on
MBIM modems for consistency.
2021-07-26 09:25:09 +00:00
Dylan Van Assche
0faf969e30 introspection: signal quality signature is (ub)
Signal quality property signature of the Modem Simple interface
is not an unsigned integer, but a struct containing
an unsigned integer indicating the strength and
a boolean to indicate if the value was recently taken.
2021-07-25 16:18:06 +02:00
Joel Selvaraj
95f4a232ce port-qmi: open dpm port automatically in case of IPA net driver
Requires IPA kernel driver to expose the TX and RX endpoint IDs through sysfs.
Available from linux 5.14 onwards.
2021-07-21 20:40:42 +05:30
Joel Selvaraj
3b79f7379f base-modem: set net sysfs path
Required by MMPortQmi for fetching the TX and RX endpoint IDs
through sysfs from linux 5.14 onwards
2021-07-21 20:36:07 +05:30
Joel Selvaraj
43c9c47b04 port-qmi: allow MMPortQmi to get the net sysfs path
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.
2021-07-21 20:35:33 +05:30
Aleksander Morgado
1d4caa929f broadband-modem-mbim: fix passing new slots array in the set operation 2021-07-14 15:14:18 +02:00
Aleksander Morgado
1830801f0f broadband-modem-mbim: slot index in MM starts at 1
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.
2021-07-14 15:14:18 +02:00
ZhangMingjie
48261375d3 mm-broadband-modem-mbim: implement the set_primary_sim_slot() method for DSSA 2021-07-14 15:14:18 +02:00
ZhangMingjie
b151740d15 mm-broadband-modem-mbim: implement the load_sim_slots() method for DSSA 2021-07-14 15:14:18 +02:00