aboutsummaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2025-03-11treewide: Fix typosGuido Günther
Signed-off-by: Guido Günther <agx@sigxcpu.org>
2025-03-09port-probe: ensure port is open for all plugin AT probesDan Williams
If multiple plugins are selected for probing a modem with AT probes, earlier plugins may only request some probes but not all. When those probes complete successfully, subsequent plugins won't re-do the probes that were already completed, but jump to ones that haven't yet been done. For example, plugin A may request only AT probes but plugin B may request AT, AT_PRODUCT, and AT_VENDOR. Plugin B will start with AT_PRODUCT probes because plugin A already completed the AT probe. The code in probe_step() only opened the serial port for the AT probe, I guess assuming that all AT-type probes would be done in sequence. But in the above scenario they are not. Instead, make sure the port is opened for all AT style probes that have not yet been executed. Fixes: 7937a89a37e941e9a77cddcce8226c316fe70821 port-probe: rework and consolidate port probe flow for AT/QCDM/QMI/MBIM Signed-off-by: Dan Williams <dan@ioncontrol.co>
2025-03-06broadband-modem,cli: slightly bump 3GPP scan timeout; add some cli dbus ↵Dan Williams
timeout slack Add some mmcli D-Bus timeout slack, making them slightly higher than the ModemManager internal timeout, to ensure the cli doesn't time out the D-Bus call when MM succeeds. For 3GPP scan, some modems appear to have internal 5 minute timeouts, so ensure MM doesn't time out right before the modem returns results: ModemManager[282578]: <dbg> [1741054422.321400] [ttyUSB2/at] --> 'AT+COPS=?<CR>' ModemManager[282578]: <wrn> [1741054722.247806] [modem1] failed scanning networks: Serial command timed out ModemManager[282578]: <dbg> [1741054724.119770] [ttyUSB2/at] <-- '<CR><LF>+COPS: (1,"T-Mobile","T-Mobile","310260",0),,(0,1,2,3,4),(0,1,2)<CR><LF><CR><LF>OK<CR><LF>' Signed-off-by: Dan Williams <dan@ioncontrol.co>
2025-03-05treewide: Fix some spelling errorsGuido Günther
All in debug messages or code comments so not user / client visible. Signed-off-by: Guido Günther <agx@sigxcpu.org>
2025-03-05mbim: Fix typo in error messageGuido Günther
Signed-off-by: Guido Günther <agx@sigxcpu.org>
2025-03-03broadband-modem-qmi: implement UE mode get/setRobert Marko
Instead of relying on getting/setting the UE mode via AT +CEMODE command which on Quectel RM520N (And I assume other QMI based modems) only allows getting the value and not setting one it has special AT commands for CS/PS and voice/data centric values. So lets instead use the QMI Get/Set System Selection Preference TLV which offers service domain and usage domain preference info so we can use those to get/set the 3GPP TS 24.301 UE mode values. Signed-off-by: Robert Marko <robert.marko@sartura.hr>
2025-02-27messaging: load default storage from modem during initializationAkula Susmitha
Signed-off-by: Akula Susmitha <quic_asusmith@quicinc.com>
2025-02-25iface-modem-firmware: report new ID's based on PCI SSVID/SSPIDSushrut Shree Trivedi
Add new device ID based on PCI SSVID/SSPID to enable FW download based on the same. Signed-off-by: Sushrut Shree Trivedi <quic_sushruts@quicinc.com>
2025-02-24Fixed code formattingMichał Sułek
2025-02-24Setup variable declared after function call, fixed.Michał Sułek
2025-02-24Was not compiling due to setup being undefined in call_audio_channel_setMichał Sułek
2025-02-24Dan Williams changed g_usleep to g_timeout_addMichał Sułek
2025-02-24Fixed the bug regarding SIM7600 modem family that made USB audio to not turn on.Michał Sułek
Added the support for 16kHz sample rate for simtech modems and set it as default if available.
2025-02-24iface-modem-messaging: Validate supported storagesAkula Susmitha
Check for supported storages before setting default storage. Signed-off-by: Akula Susmitha <quic_asusmith@quicinc.com>
2025-02-21iface-modem-firmware: common logic to check for sahara/firehose tagsAleksander Morgado
The logic will exclusively look for the udev tags reporting sahara/firehose support in the primary control port of each modem type.
2025-02-21fibocom: add Sahara/Firehose support for NL668-EAUAleksander Morgado
Signed-off-by: default avatarLukas Voegl <lvoegl@tdt.de>
2025-02-21broadband-modem: generic Firehose and Sahara supportLukas Voegl
Allows setting the renamed `ID_MM_QUALCOMM_FIREHOSE` and `ID_MM_QUALCOMM_SAHARA` environment variables for all devices. Signed-off-by: Lukas Voegl <lvoegl@tdt.de>
2025-02-21base-modem: add subsystem device ID propertySushrut Shree Trivedi
Subsystem device ID can be used for identifying PCI modems, so expose the property. Signed-off-by: Sushrut Shree Trivedi <quic_sushruts@quicinc.com>
2025-02-21kernel-device, generic: add subsystem device ID supportSushrut Shree Trivedi
Add subsystem device ID support, that can be used in pci devices instead of vendor/device ID customization. Signed-off-by: Sushrut Shree Trivedi <quic_sushruts@quicinc.com>
2025-02-19src: plugins: quectel: add DTMF dbus notification supportKévin L'hôpital
The quectel modems that are not using QMI could receive DTMF events but no dbus notification was sent to the user space. This patch adds the DTMF notification support to the quectel plugin. Signed-off-by: Kévin L'hôpital <kevin.lhopital@savoirfairelinux.com>
2025-02-18netlink: add RTM_GETLINK support to read MAC addressDan Williams
Since we're also now reading responses we need to check sender credentials to make sure we're talking to the kernel, and not some other process spoofing netlink. Signed-off-by: Dan Williams <dan@ioncontrol.co>
2025-02-03broadband-modem: prefer explicit return to breakAleksander Morgado
Just to make it explicit that there is no more logic running afterwards.
2025-02-03broadband-modem: exit with error if enable() while in unknown stateAleksander Morgado
We should not assert if the modem is flagged as invalid but an outstanding enabling request is processed. Let's exit gracefully and let the object get properly disposed afterwards. (libc.so.6 - pthread_kill.c: 44) __pthread_kill_implementation (libc.so.6 - raise.c: 26) raise (libc.so.6 - abort.c: 79) abort (libglib-2.0.so.0 - gtestutils.c: 3450) g_assertion_message (libglib-2.0.so.0 - gtestutils.c: 3476) g_assertion_message_expr (ModemManager - mm-broadband-modem.c) enable (ModemManager - mm-iface-modem.c: 2340) handle_enable_auth_ready (libgio-2.0.so.0 - gtask.c: 1309) g_task_return_now (libgio-2.0.so.0 - gtask.c: 1378) g_task_return (ModemManager - mm-base-modem.c: 2011) lock_after_authorize_ready (libgio-2.0.so.0 - gtask.c: 1309) g_task_return_now (libgio-2.0.so.0 - gtask.c: 1378) g_task_return (ModemManager - mm-base-modem.c: 1841) base_modem_operation_run (ModemManager - mm-base-modem.c: 764) state_operation_ready (libgio-2.0.so.0 - gtask.c: 1309) g_task_return_now (libgio-2.0.so.0 - gtask.c: 1323) complete_in_idle_cb (libglib-2.0.so.0 - gmain.c: 3460) g_main_dispatch (libglib-2.0.so.0 - gmain.c: 4200) g_main_context_dispatch (libglib-2.0.so.0 - gmain.c: 4276) g_main_context_iterate (libglib-2.0.so.0 - gmain.c: 4479) g_main_loop_run (ModemManager - main.c: 236) main (libc.so.6 - libc_start_call_main.h: 58) __libc_start_call_main (libc.so.6 - libc-start.c: 360) __libc_start_main_impl (ModemManager + 0x000b8850) _start
2025-01-31shared-telit: fix missing error initialization in load_revision_readyDaniele Palmas
Closes #953
2025-01-23broadband-modem-qmi: separate "system info" and "serving system" indications ↵Valentin Blot
registration Some modems succeed on enabling "system info" and disabling "serving system" in one transaction, even though they don't support "system info". This commit separates the two: first, try to enable "system info", and if it succeeds then disable "serving system".
2025-01-22suspend: support logind not sending PrepareForSleep(true)Arnav Singh
elogind sends PrepareForSleep(false) when resuming but doesn't necessarily send PrepareForSleep(true) when sleeping. This means we didn't necessarily drop our previous inhibitor when it's time to take a new one. So instead of asserting that we dropped our previous inhibitor, just reuse it.
2025-01-17modem-helpers: fix gsize formatLukas Voegl
2024-12-27port-probe: add some QCDM/DIAG response bytes to non-AT responsesDan Williams
Seen on a Qualcomm-based Quectel EG915Q on the diag port: ModemManager[34547]: <dbg> [1732077670.330527] [ttyUSB0/at] <-- ' \0\0\0\8\0\0\0\2\0\0\0\0`%\160$"\6\169\128\200\1\30\197\142\0G\184\225\128\0\1+\127\255\255\255\255\254\255\255\255\255\255\255\255\254\255\255\255\255\255\255\255\254\255\255\255\255\255\255\255\254\255\255\255\255\255\255\255\254\255\255\255\255\255\255\255\254\255\255\255\255\255\255\255\254\255\255\255\255\255\255\255\254\255\255\255\255\255\255\255\254\255\255\255\255\255\255\255\254\255\255\255\255\255\255\255\254\255\255\255\255\255\255\255\254\255\255\255\255\255\255\255\254\255\255\255\255\255\255\255\254\255\255\255\255\255\255\255\254\255\255\255\255\255\255\255\254\255\255\255\255\255\255\255\254\255\255\255\255\255\255\255\254\255\255\255\255\255\255\255\254\255\255\255\255\255\255\255\254\255\255\255\255\255\255\255\254\255\255\255\255\255\255\255\254\255\255\255\255\255\255\255\254\255\255\255\255\255\255\255\254\255\255\255\255\255\255\255\254\255\255\255\255\255\255\255\254\255\255\255\255\255\255\255\254' Signed-off-by: Dan Williams <dan@ioncontrol.co>
2024-12-27port-probe: explicit close port stepsAleksander Morgado
If by any chance the same ports needs to go through AT and QMI/MBIM probing, make sure the serial port created during AT probing is closed before starting the QMI/MBIM probing.
2024-12-27port-probe: only run custom init on ports that will go through AT probingAleksander Morgado
2024-12-27port-probe: rename serial_probe->probeAleksander Morgado
2024-12-23port-serial: clean up whitespace formattingDan Williams
Remove stray tabs. Signed-off-by: Dan Williams <dan@ioncontrol.co>
2024-12-19device,plugin: reset MMDevice's hotplugged after creating the modemMichal Mazur
The hotplugged flag was added to simplify modem probe on first time it is created. Before the re-probe it must be set to FALSE to destroy all existing netlink interfaces and force full reconfiguration.
2024-12-09Netprisma:Add support for more USB devicesMank Wang
2024-12-01broadband-modem: Add Cell Broadcast implementationGuido Günther
The CBMs are read via unsolicted events for which we register an event handler. We don't enable unsolicted events explicitly as this already happens via the `+CNMI=*,*,2,*,*` whens setting up unsolicted events in `modem_messaging_enable_unsolicited_events` (ETSI TS 127 005).
2024-12-01cbm: Add CellBroadcast interfaceGuido Günther
This adds support for the Cell Broadcast interface allowing to receive, list, read and delete Cell Broadcast messages via the org.freedesktop.ModemManager1.Modem.CellBroadcast and org.freedesktop.ModemManager1.Cbm interfaces. Signed-off-by: Guido Günther <agx@sigxcpu.org>
2024-12-01part: fix indentGuido Günther
2024-12-01cbm: Add parsing bits for cell broadcast messagesGuido Günther
This allows to parse the CBMs parameters like channel, part number and message text. We parse uncompressed GSM7 and UCS2 encodings as described in 3GPP TS 23.038. Signed-off-by: Guido Günther <agx@sigxcpu.org>
2024-12-01modem-helpers: Add regex to parse CBM out of the serial streamGuido Günther
This will allow us to fetch cell broadcast messages. Signed-off-by: Guido Günther <agx@sigxcpu.org>
2024-12-01sms: Make sms_decode_text publicGuido Günther
This can be used for cell broadcast messages as well Signed-off-by: Guido Günther <agx@sigxcpu.org>
2024-11-20broadband-modem-cinterion: implement load_current_modesLukas Voegl
Signed-off-by: Lukas Voegl <lvoegl@tdt.de>
2024-11-20broadband-modem-cinterion: never discard operator or modeLukas Voegl
When setting an operator, AT+COPS overwrites the currently set allowed mode. Equally, the other way around, when setting the current mode, the configured operator is overwritten. Signed-off-by: Lukas Voegl <lvoegl@tdt.de>
2024-11-20broadband-modem-qmi: don't build operator id in network reject indication if ↵Aleksander Morgado
it's unknown
2024-11-20broadband-modem-qmi: avoid conditional jump due to uninitialized variable in ↵Aleksander Morgado
network reject indications ==3851== Conditional jump or move depends on uninitialised value(s) ==3851== at 0x23CF65: network_reject_indication_cb (mm-broadband-modem-qmi.c:5434) ==3851== by 0x4D00865: g_cclosure_marshal_VOID__BOXEDv (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.4) ==3851== by 0x4D196FF: g_signal_emit_valist (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.4) ==3851== by 0x4D19862: g_signal_emit (in /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.7200.4) ==3851== by 0x4F7C250: process_indication (qmi-nas.c:70290) ==3851== by 0x4DFA6C4: __qmi_client_process_indication (qmi-client.c:172) ==3851== by 0x4DFEE2D: process_indication_idle (qmi-device.c:1697) ==3851== by 0x4A26C43: g_main_context_dispatch (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7200.4) ==3851== by 0x4A7C2B7: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7200.4) ==3851== by 0x4A262B2: g_main_loop_run (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7200.4) ==3851== by 0x178042: main (main.c:236) Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/931
2024-11-20port-probe: fix custom init probing not having open AT portDan Williams
Referenced commit broke custom init flows because the AT port was not opened when custom inits were run, which was the case before the commit landed. Rework probing flow to follow a step model like much of our other code, and ensure that the AT port is opened as part of the custom init flow. Fixes: 7937a89a37e941e9a77cddcce8226c316fe70821 port-probe: rework and consolidate port probe flow for AT/QCDM/QMI/MBIM Signed-off-by: Dan Williams <dan@ioncontrol.co>
2024-11-20plugin,mtk: workaround for invalid rssi threshold on FM350.Bolan Wang
FM350 modems report an invalid rssi threshold (always 0) in the signal-state response message. It results in signal quality not being updated. We can use this patch to workaround this bug.
2024-11-12shared-qmi: don't assume LOC assistance data servers is initialized onceAleksander Morgado
0x00007bcb78abf8b4 (libglib-2.0.so.0 -gtestutils.c:3450) ??g_assertion_message 0x00007bcb78abf928 (libglib-2.0.so.0 -gtestutils.c:3476) ??g_assertion_message_expr 0x00005594f143b221 (ModemManager -mm-shared-qmi.c:6651) loc_location_get_predicted_orbits_data_source_indication_cb 0x00007bcb78866043 (libgobject-2.0.so.0 -gmarshal.c:1686) ??g_cclosure_marshal_VOID__BOXEDv 0x00007bcb7886338b (libgobject-2.0.so.0 -gclosure.c:895) _g_closure_invoke_va 0x00007bcb78878a10 (libgobject-2.0.so.0 -gsignal.c:3472) ??g_signal_emit_valist 0x00007bcb78879486 (libgobject-2.0.so.0 -gsignal.c:3622) ??g_signal_emit 0x00007bcb785acc70 (libqmi-glib.so.5 -qmi-loc.c:16976) process_indication 0x00007bcb78520ede (libqmi-glib.so.5 -qmi-device.c:1697) process_indication_idle 0x00007bcb78a9b75c (libglib-2.0.so.0 -gmain.c:3460) ??g_main_dispatch 0x00007bcb78a9b75c (libglib-2.0.so.0 -gmain.c:4200) ??g_main_context_dispatch 0x00007bcb78a9ba81 (libglib-2.0.so.0 -gmain.c:4276) g_main_context_iterate 0x00007bcb78a9bcff (libglib-2.0.so.0 -gmain.c:4479) ??g_main_loop_run 0x00005594f13a7463 (ModemManager -main.c:236) ??main 0x00007bcb7825c705 (libc.so.6 -libc_start_call_main.h:58) ??__libc_start_call_main 0x00007bcb7825c7c1 (libc.so.6 -libc-start.c:360) ??__libc_start_main_impl 0x00005594f13a6da0 (ModemManager + 0x000b5da0) ??_start
2024-11-09broadband-modem-telit: fix endless loop when enabling events in secondary portDaniele Palmas
2024-11-08fibocom: add NL668-EAU to rules fileFlorian Eckert
The NL668-EAU is a 4G, 3G, 2G CAT4 modem from fibocom. https://www.fibocom.com/en/products/LTECat-NL668-EAU.html Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2024-11-08fibocom: add additional USB_VID for NL668-EAUFlorian Eckert
The NL668-EAU 4G, 3G, 2G CAT4 is a modem from fibocom and is using a diffrent USB_VID for this modem. By adding the new USB_VID, the 'fibocom' plugin is now responsible and not the 'generic' plugin. Signed-off-by: Florian Eckert <fe@dev.tdt.de>