aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
13 daysbase-call: split AT-specific call code into MMCallAtDan Williams
Signed-off-by: Dan Williams <dan@ioncontrol.co>
2025-05-23Merge request !1290 from 'port-scheduler'Dan Williams
port-serial: add command scheduler infrastructure and use it https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/1290
2025-05-23port-scheduler: implement LOG_OBJECT interface and add scheduler loggingMaciej S. Szmigiero
Otherwise log functions crash. Signed-off-by: Maciej S. Szmigiero <mail@maciej.szmigiero.name>
2025-05-23port-serial: add serial port command schedulerDan Williams
Add an interface and implementation for a port scheduler that round- robins between ports the scheduler is attached to, serializing command execution among one or more MMPortSerial instances. Theory of operation: Sources (e.g. MMPort subclasses) register themselves with the scheduler. Each source notifies the scheduler whenever its command queue depth changes, for example when new commands are submitted, when commands are completed, or when commands are canceled. The scheduler will round-robin between all sources with pending commands, sleeping when there are no pending commands from any source. For each source with a pending command the scheduler will emit the 'send-command' signal with that source's ID. The given source should send the next command in its queue to the modem. When that command is finished (either successfully or with an error/timeout) the source must call mm_port_scheduler_notify_command_done() to notify the scheduler that it may advance to the next source with a pending command, if any. If the 'send-command' signal and the notify_command_done() call are not balanced the scheduler may stall. Signed-off-by: Dan Williams <dan@ioncontrol.co>
2025-05-23log-object: don't construct log ID with NULL self_idDan Williams
If the object has an owner ID already but doesn't yet have enough information to build its log ID, don't cache a less-than-useful log ID string for it. Signed-off-by: Dan Williams <dan@ioncontrol.co>
2025-05-23log-object: Add possibility to reset logger idMaciej S. Szmigiero
Logger id (the one generated from build_id interface method and owner_id property) is generated and cached the first time it is required, further uses just return the cached value. Add a cache reset method so if the interface implementer knows that its logger id could have changed it could force its re-generation. Signed-off-by: Maciej S. Szmigiero <mail@maciej.szmigiero.name>
2025-05-23Merge request !1361 from 'cbm-lang'Dan Williams
Parse CBM's language when available and export it on DBus https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/1361
2025-05-23cli/cbm: Show CBMs language when availableGuido Günther
Signed-off-by: Guido Günther <agx@sigxcpu.org>
2025-05-23mmcbmmonitor: Print language when availableGuido Günther
Signed-off-by: Guido Günther <agx@sigxcpu.org>
2025-05-23mm-glib/cbm: Allow to get languageGuido Günther
Signed-off-by: Guido Günther <agx@sigxcpu.org>
2025-05-23base-cbm: Export the lang property on DBusGuido Günther
Signed-off-by: Guido Günther <agx@sigxcpu.org>
2025-05-23cbm-part: Handle additional coding schemes and parse languagesGuido Günther
We store the language as iso639 as this is what the what TS 23.038 references. Signed-off-by: Guido Günther <agx@sigxcpu.org>
2025-05-23cbm-part: Fix parsing of language encodingsGuido Günther
According to TS 23.038 the language is stored at the beginning of the information page not in the "header". Signed-off-by: Guido Günther <agx@sigxcpu.org>
2025-05-23cbm-part: Use automatic cleanupGuido Günther
Safer than freeing the the struct in multiple places Signed-off-by: Guido Günther <agx@sigxcpu.org>
2025-05-23polkit,conf: Add missing Cell Broadcast SetChannel methodGuido Günther
Signed-off-by: Guido Günther <agx@sigxcpu.org>
2025-05-23polkit,conf: Add missing Cell Broadcast methodsGuido Günther
Fixes 62f7b76e8 ("cbm: Add CellBroadcast interface") Signed-off-by: Guido Günther <agx@sigxcpu.org>
2025-05-23Merge request !1355 from 'mtk-unlock-required'Dan Williams
mtk-legacy: read IMSI if CPIN response is an error https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/1355 Closes #980
2025-05-23mtk-legacy: read IMSI if CPIN response is an errorDan Williams
Some older MTK-based phones (Tecno T528 NEW) reply to +CPIN with an error but are (obviously) unlocked, otherwise they wouldn't be able to boot up to the point of talking to a computer. Since they are actually unlocked they will happily give out the IMSI even if +CPIN errors. To work around the +CPIN issue treat the device as unlocked if we can successfully read the IMSI. Fixes: https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/980 Signed-off-by: Dan Williams <dan@ioncontrol.co>
2025-05-23broadband-modem,modem-helpers: move +CPIN response parsing to modem helpersDan Williams
Unit test it better, plus remove code duplication in various plugins. Signed-off-by: Dan Williams <dan@ioncontrol.co>
2025-05-22Merge request !1364 from 'cbs-policy'Dan Williams
pollkit,cell-broadcast: Use more specific error message https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/1364
2025-05-22pollkit,cell-broadcast: Use more specific error messageGuido Günther
Text messages could also be SMS Fixes 1fb74f266 ("data: Add a policy rule to access the cellbroadcast API") Signed-off-by: Guido Günther <agx@sigxcpu.org>
2025-05-22Merge request !1363 from 'pr/20250521-mbim-qdu'Dan Williams
broadband-modem-mbim: add qdu firmware update check https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/1363
2025-05-22broadband-modem-mbim: add qdu firmware update checkFlorian Eckert
The manufacturers can offer a firmware update file 'ota.bin' with which the firmware can be updated in the modem via a manufacturer tool using windows. The tool is only available for Windows and can therefore not be used for embedded devices. A investigation has shown that this tool updates the firmware via 'mbim-qdu'. The update service 'fwupd' which has a 'modemmanager' plugin can install the firmware via 'mbim-qdu'. For this to work, the ModemManager must export this update method via the firmware interface. As the 'mbim-qdu' is a generic update method, the check is integrated into the 'mm-broadband-modem-mbim' class. If 'mbim-qdu' update method is supported by the mbim interface and the udev env variable 'ID_MM_MBIM_QDU' is set for this modem, then the 'mbim-qdu' update is exported via dbus. The following line must be added to the '77-mm-cinterion-port-types.rules' udev rules file, for example, so that the mbim-qdu update for the 'MV31' can be used. ATTRS{vendor}=="0x1e2d", ATTRS{device}=="0x00b3", ENV{ID_MM_MBIM_QDU}="1" This is the corresponding output of the 'mmcli' command to show the supported update method for the 'MV31'. root@G3-10940 ~ # mmcli -m Modem1 --firmware-status Firmware | method: mbim-qdu | device ids: USB\VID_1E2D&PID_00B3&REV_0414&CARRIER_GCF | USB\VID_1E2D&PID_00B3&REV_0414 | USB\VID_1E2D&PID_00B3 | USB\VID_1E2D | version: T99W175.F0.1.0.0.9.GC.004.063 - 0A000804 Signed-off-by: Florian Eckert <fe@dev.tdt.de>
2025-05-22Merge request !1044 from 'submodule'Dan Williams
Allow to use libqmi and libmbim as meson subprojects https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/1044
2025-05-22build: Allow to use libqmi as subprojectGuido Günther
This makes it simpler to build ModemManager git Signed-off-by: Guido Günther <agx@sigxcpu.org>
2025-05-22build: Allow to use libmbim as subprojectGuido Günther
This makes it simpler to build ModemManager git Signed-off-by: Guido Günther <agx@sigxcpu.org>
2025-05-22Merge request !1360 from 'bind-to-vs-cbm-crash'Dan Williams
base-cbm: Install properties one by one https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/1360
2025-05-22base-cbm: Install properties one by oneGuido Günther
`g_object_class_install_property` picks up `PROP_BIND_TO` resulting in a crash on the first CBM received. Fixes: ec5104c9a ("Move log parent and connection property binding to helper") Signed-off-by: Guido Günther <agx@sigxcpu.org>
2025-05-22Merge request !1356 from 'sierra-call-urc-fix'Dan Williams
serial-parsers: don't echo-remove strange call start/end URCs https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/1356
2025-05-22serial-parsers: don't echo-remove strange call start/end URCsDan Williams
Some Sierra devices omit the leading <CR> from call start/end URCs like NO CARRIER and CONNECT, which caused the echo-removal code to remove from the response buffer because the leading <CR><LF> did not exist. That can break call control and hangup handling on those devices. Signed-off-by: Dan Williams <dan@ioncontrol.co>
2025-05-22serial-parsers,port-serial-at: move echo removal into serial parserDan Williams
Mainly because we need somewhere to stash the call end regex, and it's silly to have a 3rd instance of that in MMPortSerialAt when we already have one in the serial parsers that MMPortSerialAt relies on pretty heavily. Signed-off-by: Dan Williams <dan@ioncontrol.co>
2025-05-22broadband-modem,modem-helpers: generalize call end regex creationDan Williams
Signed-off-by: Dan Williams <dan@ioncontrol.co>
2025-05-22Merge request !1359 from 'cpms-spaces'Dan Williams
modem-helpers: handle spaces in +CPMS query response https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/1359 Closes #990
2025-05-20modem-helpers: handle spaces in +CPMS query responseDan Williams
Fixes: https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/990 Signed-off-by: Dan Williams <dan@ioncontrol.co>
2025-05-20Merge request !1358 from 'qmi-cbm-fixes'Dan Williams
broadband-modem-qmi: Cellbroadcast channel reading fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/1358
2025-05-20broadband-modem-qmi/cellbroadcast: Allow for G_MAXUINT16Guido Günther
It's a valid channel value. Since start and end are guint16 we can drop the check altogether. Fixes: e25dd7db9 ("broadband-modem-qmi: Add support for loading channels") Signed-off-by: Guido Günther <agx@sigxcpu.org>
2025-05-20broadband-modem-qmi/cellbroadcast: Return on failureGuido Günther
Return after setting the error Fixes: e25dd7db9 ("broadband-modem-qmi: Add support for loading channels") Signed-off-by: Guido Günther <agx@sigxcpu.org>
2025-05-19Merge request !1354 from 'dp/le910q-ecm-upstream'Dan Williams
Add ECM support for Telit LE910Q1 https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/1354
2025-05-19telit: add ECM bearer for LE910Q1/ELS63-IDaniele Palmas
Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
2025-05-19broadband-modem-telit: use +COPS to get AcT for LE910Q1/ELS63-IDaniele Palmas
Use +COPS to retrieve AcT for LE910Q1/ELS63-I since they do not support #PSNT and +SERVICE. Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
2025-05-19telit: add port hints for LE910Q1/ELS63-IDaniele Palmas
Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
2025-05-19modem-helpers: remove unused variable in mm_3gpp_parse_cmer_test_responseDaniele Palmas
Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
2025-05-19broadband-modem: support +CGEREP values different than 2Daniele Palmas
Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
2025-05-16Merge request !1346 from 'disconnect-request'Dan Williams
bearer: add new "disconnect-request" logic https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/1346
2025-05-16base-bearer: set dbus disconnect_request on ignored disconnectionDominique Martinet
When we get a disconnect event that we wanted to ignore, set the DisconnectRequest property instead so clients on dbus can act on it. Also upgrade the logs from dbg to msg (info) as there would be otherwise no message indicating the disconnect request if it is not acted on. This was checked with dbus-monitor: ``` $ dbus-monitor --system "type='signal',sender='org.freedesktop.ModemManager1'" signal time=1747362238.227804 sender=:1.73798 -> destination=(null destination) serial=741 path=/org/freedesktop/ModemManager1/Bearer/0; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged string "org.freedesktop.ModemManager1.Bearer" array [ dict entry( string "DisconnectRequest" variant boolean true ) ] array [ ] ``` Signed-off-by: Dominique Martinet <dominique.martinet@atmark-techno.com>
2025-05-16api,bearer: new 'DisconnectRequest' propertyDominique Martinet
To report that the bearer has been killed from the modem side and the connection should be terminated. Signed-off-by: Dominique Martinet <dominique.martinet@atmark-techno.com>
2025-05-16dispatcher-connection: add new 'disconnect-request' eventDominique Martinet
When bearer gets an event that should trigger a disconnection but we cannot disconnect (for example because we're waiting for pppd to close), we now trigger a new 'disconnect-request' event instead This was tested with the following hook: ``` $ cat /etc/ModemManager/connection.d/handle-disconnect-request.sh #!/bin/sh if [ "$4" != disconnect-request ]; then exit 0 fi iface=$(mmcli -b "$2" -K | awk '/bearer.status.interface/ { print $3 }') if pkill -f "pppd\>.*\<$iface\>"; then logger -t mm-disconnect-request "Killed $iface pppd" else logger -t mm-disconnect-request "No pppd found for $iface" fi ``` Signed-off-by: Dominique Martinet <dominique.martinet@atmark-techno.com>
2025-05-16dispatcher-connection: replace 'connected' boolean with a new enumDominique Martinet
The next commit will introduce a new dispatcher event. This commit should not change anything user-facing Signed-off-by: Dominique Martinet <dominique.martinet@atmark-techno.com>
2025-05-14Merge request !1353 from 'fix-creg-regex'Dan Williams
modem-helpers: support multi-digit "stat" values in CREG response https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/1353 Closes #987
2025-05-14modem-helpers: fix method for distinguishing lac and stat valuesKirill Buksha
Stat value may be multidigit e.g. 10 or 11. Signed-off-by: Kirill Buksha <kirbuk200@gmail.com>