Age | Commit message (Collapse) | Author |
|
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>
|
|
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>
|
|
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>
|
|
`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>
|
|
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>
|
|
Fixes: https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/990
Signed-off-by: Dan Williams <dan@ioncontrol.co>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
Stat value may be multidigit e.g. 10 or 11.
Signed-off-by: Kirill Buksha <kirbuk200@gmail.com>
|
|
Signed-off-by: Kirill Buksha <kirbuk200@gmail.com>
|
|
The 'stat' field in CREG responce may contain multi-digit numbers, such as "10"
meaning "registered for "CSFB not preferred", roaming". Furtermore, some modems
use value "11" to indicate that only emergency services are available.
Signed-off-by: Kirill Buksha <kirbuk200@gmail.com>
|
|
Otherwise we'll get a NULL pointer dereference segfault in mm_auth when
sending SIM PIN.
Looks like MMBaseSim was accidentally missed during the conversion done
by the commit in the Fixes tag below.
Fixes: ef5cee3ab578 ("auth-provider: move auth provider logic into each class")
Signed-off-by: Maciej S. Szmigiero <mail@maciej.szmigiero.name>
|
|
Signed-off-by: Thomas Vogt <acc-github@tovotu.de>
|
|
Add some test responses from the Quectel EG915Q and some other Quectel devices.
Then try to parse those responses.
Signed-off-by: Dan Williams <dan@ioncontrol.co>
|
|
unstored parts
MMSmsList has logic to allow multiple unstored messages as long as
they use SMS_PART_INVALID_INDEX. These messages aren't stored so
they don't have an index.
But the MBIM and QMI modems used index 0 for unstored messages,
meaning there could only ever be one and also that multipart
messages would fail to be combined.
Let's fix that by just using SMS_PART_INVALID_INDEX for every
scenario where an unstored message comes in.
Fixes: https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/979
Signed-off-by: Dan Williams <dan@ioncontrol.co>
|
|
Not used for anything anymore so we can remove the property.
Signed-off-by: Dan Williams <dan@ioncontrol.co>
|
|
No longer depend on MMBaseModem since everything that specifically
uses it is now removed.
Signed-off-by: Dan Williams <dan@ioncontrol.co>
|
|
Instead of going through the messaging interface, which just asks
the MMSmsList anyway, just go straight to the list.
Signed-off-by: Dan Williams <dan@ioncontrol.co>
|
|
Move error paths after getting a multipart reference to before getting
one, to reduce the possiblity that we get a reference from the MMSmsList
that ultimately doesn't end up getting used.
Signed-off-by: Dan Williams <dan@ioncontrol.co>
|
|
They won't change, and this lets us get rid of one more usage of
MMIfaceModemMessaging.
Signed-off-by: Dan Williams <dan@ioncontrol.co>
|
|
Instead of getting it from the MMIfaceModemMessaging when the
SMS is stored. This flattens dependencies between MMBaseSms and
MMIfaceModemMessaging.
Signed-off-by: Dan Williams <dan@ioncontrol.co>
|
|
MMBroadbandModem class
This commit moves creation of the MMBaseSms objects out of MMSmsList and up
into MMIfaceModemMessaging (which is already a MMBroadbandModem) and
the MMBroadbandModem subclasses themselves.
This flattens the creation of MMBaseSms objects by passing them down
from the object that creates the SMS parts, rather than having a
convoluted callback scheme relying on MMSmsList and MMBaseSms having
direct knowledge of their owning modem.
The goal is to eventually remove usage of MMBaseModem from MMBaseSms
and MMSmsList so that we can test them more easily.
Signed-off-by: Dan Williams <dan@ioncontrol.co>
|
|
Simplify MMBaseSms (making it easier to use from testcases) by
splitting the AT-specific code into MMSmsAt rather than keeping
it in the base class.
Signed-off-by: Dan Williams <dan@ioncontrol.co>
|
|
Signed-off-by: Dan Williams <dan@ioncontrol.co>
|
|
Allows us to test things that rely on MMBaseSms more easily..
Signed-off-by: Dan Williams <dan@ioncontrol.co>
|
|
It won't ever change over the lifetime of the BaseSMS.
Signed-off-by: Dan Williams <dan@ioncontrol.co>
|
|
Signed-off-by: Dan Williams <dan@ioncontrol.co>
|
|
CBM isn't as complicated as SMS, and the CBM class itself doesn't
need to be overridden by QMI/MBIM/etc. Now that the log parent
and connection binding no longer require MMBaseModem we can flatten
the CBM object creation and remove usage of MMBaseModem.
Signed-off-by: Dan Williams <dan@ioncontrol.co>
|
|
Continues removing usage of MMBaseModem in a bunch of files
by splitting out bits of its usage to separate interfaces.
Signed-off-by: Dan Williams <dan@ioncontrol.co>
|
|
Rather than make all of them rely on MMBaseModem for it. This
lets us disentangle dependencies for easier unit testing.
For interfaces, rather than casting directly to MMBaseModem
use intermediate interfaces (MMIfaceAuth and MMIfaceOpLock)
that tests can fake out.
Signed-off-by: Dan Williams <dan@ioncontrol.co>
|
|
The bypass when in testcase mode has nothing to do with the base modem
class; so make it generic.
Signed-off-by: Dan Williams <dan@ioncontrol.co>
|
|
AT docs for many (most?) device state a max timeout of 15 seconds.
Signed-off-by: Dan Williams <dan@ioncontrol.co>
|
|
AT docs for many (most?) Quectel devices state that QPOWD=1 receives
the OK response very quickly but the caller must wait for the
POWERED DOWN URC to avoid data loss. Do that.
Signed-off-by: Dan Williams <dan@ioncontrol.co>
|
|
When matching profiles ignore disabled ones. When activating a
specific profile index, return an error if that profile is marked
as disabled.
Signed-off-by: Dan Williams <dan@ioncontrol.co>
|
|
Instead of using the loop index, use the actual profile index
because they aren't always the same.
Signed-off-by: Dan Williams <dan@ioncontrol.co>
|
|
Previously, a disabled profile would cause Profile Manager interface
enabling to fail because get_profile_settings_ready() returned an
error for disabled profiles.
But 3GPP profile objects already have support for the enable/disabled
setting, so just hook that up and stop returning an error for disabled
ones.
This allows successful initialization of the 3GPP Profile Manager
on devices that contain disabled profiles.
While we're at it, allow creating disabled profiles, and changing
profiles back and forth from enabled<->disabled.
Signed-off-by: Dan Williams <dan@ioncontrol.co>
|