Age | Commit message (Collapse) | Author |
|
Signed-off-by: Dan Williams <dan@ioncontrol.co>
|
|
port-serial: add command scheduler infrastructure and use it
https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/1290
|
|
Otherwise log functions crash.
Signed-off-by: Maciej S. Szmigiero <mail@maciej.szmigiero.name>
|
|
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>
|
|
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>
|
|
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>
|
|
Parse CBM's language when available and export it on DBus
https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/1361
|
|
Signed-off-by: Guido Günther <agx@sigxcpu.org>
|
|
Signed-off-by: Guido Günther <agx@sigxcpu.org>
|
|
Signed-off-by: Guido Günther <agx@sigxcpu.org>
|
|
Signed-off-by: Guido Günther <agx@sigxcpu.org>
|
|
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>
|
|
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>
|
|
Safer than freeing the the struct in multiple places
Signed-off-by: Guido Günther <agx@sigxcpu.org>
|
|
Signed-off-by: Guido Günther <agx@sigxcpu.org>
|
|
Fixes 62f7b76e8 ("cbm: Add CellBroadcast interface")
Signed-off-by: Guido Günther <agx@sigxcpu.org>
|
|
mtk-legacy: read IMSI if CPIN response is an error
https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/1355
Closes #980
|
|
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>
|
|
Unit test it better, plus remove code duplication in various plugins.
Signed-off-by: Dan Williams <dan@ioncontrol.co>
|
|
pollkit,cell-broadcast: Use more specific error message
https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/1364
|
|
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>
|
|
broadband-modem-mbim: add qdu firmware update check
https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/1363
|
|
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>
|
|
Allow to use libqmi and libmbim as meson subprojects
https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/1044
|
|
This makes it simpler to build ModemManager git
Signed-off-by: Guido Günther <agx@sigxcpu.org>
|
|
This makes it simpler to build ModemManager git
Signed-off-by: Guido Günther <agx@sigxcpu.org>
|
|
base-cbm: Install properties one by one
https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/1360
|
|
`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>
|
|
serial-parsers: don't echo-remove strange call start/end URCs
https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/1356
|
|
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>
|
|
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>
|
|
Signed-off-by: Dan Williams <dan@ioncontrol.co>
|
|
modem-helpers: handle spaces in +CPMS query response
https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/1359
Closes #990
|
|
Fixes: https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/990
Signed-off-by: Dan Williams <dan@ioncontrol.co>
|
|
broadband-modem-qmi: Cellbroadcast channel reading fixes
https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/1358
|
|
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>
|
|
Return after setting the error
Fixes: e25dd7db9 ("broadband-modem-qmi: Add support for loading channels")
Signed-off-by: Guido Günther <agx@sigxcpu.org>
|
|
Add ECM support for Telit LE910Q1
https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/1354
|
|
Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
|
|
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>
|
|
Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
|
|
Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
|
|
Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
|
|
bearer: add new "disconnect-request" logic
https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/1346
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
modem-helpers: support multi-digit "stat" values in CREG response
https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/1353
Closes #987
|
|
Stat value may be multidigit e.g. 10 or 11.
Signed-off-by: Kirill Buksha <kirbuk200@gmail.com>
|