aboutsummaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2023-03-27iface-modem-3gpp: avoid to connect signal on NULL SIM objectAleksander Morgado
Happens when we boot without a SIM card inserted: ModemManager[12065]: <dbg> [1679912011.887410] [ttyACM2/at] --> 'AT+CLCK="PC",2<CR>' ModemManager[12065]: <dbg> [1679912011.905401] [ttyACM2/at] <-- '<CR><LF>+CLCK: 0<CR><LF><CR><LF>OK<CR><LF>' (ModemManager:12065): GLib-GObject-CRITICAL **: 12:13:31.905: invalid (NULL) pointer instance
2023-03-24broadband-modem-qmi: avoid duplicating code in operating mode update logicAleksander Morgado
2023-03-24broadband-modem-qmi: fix return type of GSourceFunc callbackAleksander Morgado
2023-03-24mm-broadband-modem-qmi: run explicit DMS Get Operating Mode query if timeout ↵Akash Aggarwal
reached Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/646
2023-03-24port-qmi: read checksum offload link flags to use from kernel rmnet driverAleksander Morgado
The feature/rx_offload and feature/tx_offload sysfs attributes specify which offload settings should be used when creating new links.
2023-03-22broadband-modem-qmi: ignore profile updates during 100ms after our own updatesAleksander Morgado
2023-03-22Revert "broadband-modem-qmi: disable profile changed indications during our ↵Aleksander Morgado
operations" This reverts commit dad3e8274723805e3957f166ba158a37cf6a96ec. Disabling profile change indications just before doing our profile updates and re-enabling them just after is not enough. The modem may still emit the profile change indication right after, so all this logic is unnecessary.
2023-03-21base-manager: improve logging of manager DBus requestsAleksander Morgado
2023-03-15cinterion: don't assume GError structure always initializedKirill Buksha
GError structure may not be initialized after execution of mm_3gpp_parse_cgdcont_read_response() and accessing it's fields will cause a segmentation fault.
2023-03-15iface-modem-signal: remove unused variableAleksander Morgado
src/mm-iface-modem-signal.c:99:27: warning: unused variable 'current_time' [-Wunused-variable] g_autoptr(GDateTime) current_time = NULL; ^
2023-03-15sim-mbim: remove unused variableAleksander Morgado
src/mm-sim-mbim.c:1134:30: warning: unused variable 'request' [-Wunused-variable] g_autoptr(MbimMessage) request = NULL; ^
2023-03-10broadband-modem-qmi: disable profile changed indications during our operationsAleksander Morgado
Just ignoring the received indications is not enough, because they could arrive after the operation response has been processed. We now explicitly disable the indications by reconfiguring the modem before and after every profile update operation triggered by our own logic.
2023-03-07telit: ignore composition 0x1075Daniele Palmas
When Telit FN990 is integrated through PCIe, but also USB lines are available, ModemManager will consider the port on the USB composition as a different modem: oem@sw-test:~$ mmcli -L /org/freedesktop/ModemManager1/Modem/1 [telit] FN990A40 /org/freedesktop/ModemManager1/Modem/0 [Telit] FN990A40 oem@sw-test:~$ mmcli -m 0 <snip> | equipment id: 359172390022295 -------------------------------- System | device: /sys/devices/pci0000:00/0000:00:14.0/usb2/2-5 | drivers: option | plugin: telit | primary port: ttyUSB0 | ports: ttyUSB0 (at) oem@sw-test:~$ mmcli -m 1 <snip> | equipment id: 359172390022295 ----------------------------------- System | device: /sys/devices/pci0000:00/0000:00:1c.0/0000:01:00.0 | drivers: mhi-pci-generic | plugin: telit | primary port: wwan0mbim0 | ports: wwan0 (net), wwan0at0 (at), wwan0at1 (at), | wwan0mbim0 (mbim), wwan0nmea0 (ignored), wwan0qcdm0 (ignored) Ignore composition 0x1075, since it should not be used by ModemManager and can only show when PCIe is used.
2023-03-03quectel: add support for EG12-EA type usb modulesdchard
2023-02-28broadband-modem-mbim: add support for setting up thresholds on v1 MBIM modemsNagi Marupaka
On MBIM modems that do not support mbimex v2, extra steps are required to retrieve 3G/4G signal quality markers from the modem when using thresholds to trigger signal quality indications.
2023-02-24base-manager: remove shadowing variableAleksander Morgado
[1/2] Compiling C object src/ModemManager.p/mm-base-manager.c.o ../src/mm-base-manager.c: In function ‘remove_device_inhibition’: ../src/mm-base-manager.c:1127:20: warning: declaration of ‘l’ shadows a previous local [-Wshadow] 1127 | GList *l; | ^ ../src/mm-base-manager.c:1116:16: note: shadowed declaration is here 1116 | GList *l; | ^
2023-02-23quectel: add support for EC21-EUX usb modulesQuectelDuke
Signed-off-by: QuectelDuke <duke.xin@quectel.com>
2023-02-21xmm: fix crash parsing XACT? responseAleksander Morgado
Ensure we don't assert when processing an unexpected response. We were not correctly handling the case where g_match_info_matches() was not succeeding. 0x00007d8be96cc462 (libc.so.6 + 0x00028462) abort 0x00007d8be995ff01 (libglib-2.0.so.0 - gtestutils.c: 3253) g_assertion_message 0x00007d8be995ff64 (libglib-2.0.so.0 - gtestutils.c: 3279) g_assertion_message_expr 0x00007d8be858086a (libmm-shared-xmm.so - mm-modem-helpers-xmm.c: 467) mm_xmm_parse_xact_query_response 0x00007d8be857d4e0 (libmm-shared-xmm.so - mm-shared-xmm.c: 310) xact_query_bands_ready 0x00007d8be9a79463 (libgio-2.0.so.0 - gsimpleasyncresult.c: 802) g_simple_async_result_complete 0x00005c8d2a11e9b9 (ModemManager - mm-base-modem-at.c: 538) at_command_ready 0x00007d8be9a79463 (libgio-2.0.so.0 - gsimpleasyncresult.c: 802) g_simple_async_result_complete 0x00005c8d2a19376b (ModemManager - mm-port-serial-at.c) serial_command_ready 0x00007d8be9a79463 (libgio-2.0.so.0 - gsimpleasyncresult.c: 802) g_simple_async_result_complete 0x00005c8d2a18f93f (ModemManager - mm-port-serial.c: 139) command_context_complete_and_free 0x00005c8d2a192985 (ModemManager - mm-port-serial.c: 753) port_serial_got_response 0x00005c8d2a192dff (ModemManager - mm-port-serial.c: 924) common_input_available 0x00007d8be993e3fc (libglib-2.0.so.0 - gmain.c: 3417) g_main_context_dispatch 0x00007d8be993e704 (libglib-2.0.so.0 - gmain.c: 4211) g_main_context_iterate 0x00007d8be993e978 (libglib-2.0.so.0 - gmain.c: 4411) g_main_loop_run 0x00005c8d2a105e66 (ModemManager - main.c: 217) main 0x00007d8be96cc6c5 (libc.so.6 + 0x000286c5) __libc_init_first 0x00007d8be96cc781 (libc.so.6 + 0x00028781) __libc_start_main 0x00005c8d2a105b80 (ModemManager + 0x00061b80) _start
2023-02-21base-manager: fix crash when uninhibiting partially removed deviceAleksander Morgado
If the device is not fully removed from the system during inhibition and port additions happen, we reach a state where the MMDevice object is still tracked by ModemManager and we also have new port additions tracked that will require explicit port probings before a new modem object can be created. Solve this mixup by faking the removal of all existing device ports, which will end up completely removing hte MMDevice, so that new port additions reported afterwards also involve the full device probing process triggered by the plugin manager. The issue could be reproduced easily on a MBIM device that also exposed TTYs, as follows: * mmcli -m a --inhibit, leave it running * rmmod cdc_mbim && sleep 5 && modprobe cdc_mbim (so that the cdc-wdm and net ports go away from the system but NOT the TTYs.) * Cltr+C to stop the inhibit in the mmcli call. ModemManager would assert as follows: 0x000079918bcf2a3f (libc.so.6 + 0x00087a3f) pthread_key_delete 0x000079918bca7c6c (libc.so.6 + 0x0003cc6c) gsignal 0x000079918bc93462 (libc.so.6 + 0x00028462) abort 0x000079918bf26f03 (libglib-2.0.so.0 - gtestutils.c: 3253) g_assertion_message 0x000079918bf26f66 (libglib-2.0.so.0 - gtestutils.c: 3279) g_assertion_message_expr 0x0000594ff1093d0c (ModemManager - mm-base-manager.c: 1110) remove_device_inhibition 0x0000594ff1093968 (ModemManager - mm-base-manager.c: 1247) inhibit_device_auth_ready 0x000079918c0536a8 (libgio-2.0.so.0 - gtask.c: 1230) g_task_return_now 0x000079918c0536db (libgio-2.0.so.0 - gtask.c: 1244) complete_in_idle_cb 0x000079918bf053fc (libglib-2.0.so.0 - gmain.c: 3417) g_main_context_dispatch 0x000079918bf05704 (libglib-2.0.so.0 - gmain.c: 4211) g_main_context_iterate 0x000079918bf05978 (libglib-2.0.so.0 - gmain.c: 4411) g_main_loop_run 0x0000594ff108de66 (ModemManager - main.c: 217) main 0x000079918bc936c5 (libc.so.6 + 0x000286c5) __libc_init_first 0x000079918bc93781 (libc.so.6 + 0x00028781) __libc_start_main 0x0000594ff108db80 (ModemManager + 0x00061b80) _start
2023-02-20broadband-modem-mbim: limit the use of context types defined in MBIMExAleksander Morgado
The Tethering context type UUID was defined by Microsoft in its extensions as `5e4e0601-48dc-4e2b-acb8-08b4016bbaac` (along with others like Admin, Xcap, App and EmergencyCalling), see https://learn.microsoft.com/en-us/windows-hardware/drivers/network/mb-provisioned-context-operations. These UUIDs are expected to be usable only if the modem supports `MBIM_CID_MS_PROVISIONED_CONTEXT_V2` (CID=1) in the Basic Connect Extensions service (3d01dcc5-fef5-4d05-0d3abef7058e9aaf). If the modem doesn't support these, we should try to fallback to a more generic APN type automatically, e.g. "Internet", which was defined in MBIM 1.0 and should always be supported. There should be no problem in a modem to have 2 separate PDN connections with the same context type.
2023-02-17modem-helpers-mbim: add missing support for 'emergency' APN typeAleksander Morgado
2023-02-17modem-helpers-mbim: small refactor in the EARFCN/NRARFCN to frequency convertersAleksander Morgado
2023-02-17broadband-modem-mbim: avoid using already freed element during iterationAleksander Morgado
If we remove the current element being iterated in the GList, we can no longer call g_list_next() on it. Ensure we keep a valid pointer to the next element in the list before removing the current one.
2023-02-17broadband-modem-mbim: cell-info core logic implementationsom
Handling of gdbus interface changes for additional properties(service cell type and bandwidth) in broadband modem mbim. Co-author: Shilpa Shivakumar
2023-02-15iface-modem-3gpp: enable reading of IMEI in FAILED stateMichal Mazur
It was not possible to read IMEI of modem when SIM was not inserted or initialization failed due to modem facility locks. To load IMEI, the 3gpp interface need to be initialized before going to FALLBACK_LIMITED.
2023-02-06mm-broadband-modem-qmi: update signal values while processing NAS signal ↵Akash Aggarwal
info indication
2023-02-03mm-iface-modem-3gpp: reject unspecified values for 5G reg settingsEric Caruso
It seems like users can put the "unsupported" value for both DRX cycle and MICO mode, so we should reject that.
2023-02-03qmi: implement GetCellInfo for LTE, NROliver Kästner
2023-01-30telit: fallback to AT commands in case of MBIM loading revision failureDaniele Palmas
Some firmware versions return an empty string for the revision when using the device caps MBIM request, so use AT commands as a fallback in case this happens.
2023-01-30telit: increase initial delay for AT portsDaniele Palmas
FN990 requires more time for the AT ports to become responsive, so increase the initial delay up to 40 seconds.
2023-01-30telit: add port type hints for FN990 0x1070, 0x1071 compositionsDaniele Palmas
2023-01-30telit: add shared support for 5G modesDaniele Palmas
2023-01-23broadband-modem-qmi: don't fail on power indication registration errorLouis-Alexis Eyraud
This commit modifies the QMI DMS Operating Mode indication registration logic. During the power sequence chance, if a QMI_PROTOCOL_ERROR_MISSING_ARGUMENT error was returned in "DMS Set Event Report" operation for Operating Mode Reporting failed, the whole sequence was aborted, leading the modem to be disabled. <debug> [modem0] Power indication registration request is sent ... <debug> [modem0] couldn't update power state: Couldn't register for power indications: QMI protocol error (17): 'MissingArgument' <warn> [modem0] couldn't enable interface: 'Couldn't register for power indications: QMI protocol error (17): 'MissingArgument'' <debug> [modem0] running implicit disable after failed enable... This commit modifies the logic to properly detect the failure and continue the sequence without the indications. Fixes #683 Signed-off-by: Louis-Alexis Eyraud <louis-alexis.eyraud@unabiz.com>
2023-01-20bearer-qmi: fix a mnc/mcc typoLubomir Rintel
Makes my compiler unhappy: [471/539] Compiling C object src/ModemManager.p/mm-bearer-qmi.c.o ../src/mm-bearer-qmi.c: In function ‘process_operator_reserved_pco’: ../src/mm-bearer-qmi.c:580:18: warning: logical ‘and’ of equal expressions [-Wlogical-op] 580 | if (!tmp_mcc && !tmp_mcc && !container_id && !array->len) | ^~ Fixes: f4b8d14b8d2d ('bearer-qmi: explicitly ignore PCOs with undefined contents:')
2023-01-18broadband-modem-mbim,qmi-shared: Fallback from qmi uim service only when not ↵Ulrich Mohr
supported When using qmi uim service from mbim broadband modem, a fallback from using qmi uim service to normal mbim operations is done every time a call to qmi_set_primary_sim_slot fails. But this may fall for various reasons, and a fallback only makes sense when the device does not support that call Patch reworked by Aleksander Morgado <aleksandermj@chromium.org>
2023-01-18broadband-modem-mbim: Sync state of sim_hot_swap_configured variableMichal Mazur
2023-01-18broadband-modem-mbim: Fix bug in cleanup_unsolicited_events_3gpp()Michal Mazur
2023-01-16bearer-qmi: explicitly ignore PCOs with undefined contents:Aleksander Morgado
There is nothing to process in this kind of PCO fields: <<<<<< TLV: <<<<<< type = "Operator Reserved PCO" (0x2f) <<<<<< length = 8 <<<<<< value = 00:00:00:00:00:00:00:00 <<<<<< translated = [ mcc = '0' mnc = '0' mnc_includes_pcs_digit = 'no' app_specific_info = '{}' container_id = '0' ] Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/690
2023-01-16bearer-qmi: app specific info in PCO may be emptyAleksander Morgado
ModemManager[562783]: <err> [1673538458.350130] mm_utils_bin2hexstr: assertion 'bin != NULL' failed ModemManager[562783]: <dbg> [1673538458.350167] [modem0/bearer0] container ID: 0 ModemManager[562783]: <dbg> [1673538458.350201] [modem0/bearer0] app specific info: (null) Treat it better by only trying to build the app specific info string if there are contents in the array.
2023-01-12bearer-qmi: fix pco array declarationDaniele Palmas
2023-01-11sim-mbim: Reset cached SIM info when SIM is unlockedMichal Mazur
Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/684
2023-01-11broadband-modem-qmi: ignore our own profile changed indicationsAleksander Morgado
The device may emit a "WDS Profile Changed" indication triggered from our own "WDS Modify Profile", "WDS Create Profile" or "WDS Delete Profile" operations, so ensure those are fully ignored so that we don't emit the "Updated" signal in the ProfileManager interface. The logic keeps track of the amount of concurrent operations so that the signal is ignored for as long as there is at least one operation running. Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/687
2023-01-10build: fix dependency on daemon enums required by pluginsAleksander Morgado
Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/686
2023-01-03build: new option to build plugins within the daemon binaryAleksander Morgado
Instead of creating libmm-plugin* and libmm-shared* libraries that are dlopen()-ed on runtime, allow incorporating all plugins into the daemon binary itself. This makes the startup of the daemon much faster and also avoids issues with builds that require linker namespace isolation. Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/674
2023-01-03plugins: setup new helper macros to define shared utilsAleksander Morgado
2023-01-03plugins: setup new helper macros to define pluginsAleksander Morgado
We also remove the plugin headers completely as they are not really required anywhere.
2023-01-03plugin-manager: don't crash when loading an invalid shared utils libraryAleksander Morgado
<wrn> [plugin-manager] could not load shared '/usr/lib/ModemManager/libmm-shared-xmm.so': Missing major version info Thread 1 "ModemManager" received signal SIGSEGV, Segmentation fault. 0x000055555562b79d in load_external_shared (path=<optimized out>, self=0x5555557b5880) at ../src/mm-plugin-manager.c:1885 1885 if (module && !(*shared_name)) (gdb) p module $1 = (GModule *) 0x5555557b9670 (gdb) p shared_name $2 = (const gchar **) 0x0
2023-01-03plugins: don't include daemon enums sourcesAleksander Morgado
2023-01-03build: compile plugins before daemonAleksander Morgado
2023-01-03build: fix missing module name in shared option utilsAleksander Morgado