Age | Commit message (Collapse) | Author |
|
Do it in a function instead of the same thing in a bunch of places.
Signed-off-by: Dan Williams <dan@ioncontrol.co>
|
|
Consistently interpret the modem's reported custom data class when
loading current mode, supported mode, supported capabilities,
setting current mode, and current access technology.
Normalize the data class to include any custom data class immediately
after reading it from any MBIM message. De-normalize it when sending
back to the modem when setting current modes so the modem receives
MBIM_DATA_CLASS_CUSTOM for the custom mode.
Fixes: https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/937
Signed-off-by: Dan Williams <dan@ioncontrol.co>
|
|
Signed-off-by: Guido Günther <agx@sigxcpu.org>
|
|
This adds support for setting the channels to override the boot up modem
defaults:
```
busctl --system call org.freedesktop.ModemManager1 /org/freedesktop/ModemManager1/Modem/0 org.freedesktop.ModemManager1.Modem.CellBroadcast SetChannels 'a(uu)' 1 0 9999
busctl --system get-property org.freedesktop.ModemManager1 /org/freedesktop/ModemManager1/Modem/0 org.freedesktop.ModemManager1.Modem.CellBroadcast Channels
a(uu) 1 0 9999
```
Closes: https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/934
Signed-off-by: Guido Günther <agx@sigxcpu.org>
|
|
`CSCB` has the form
```
CSCB: [0|1],"<channel-list>","<data-coding-scheme>"
```
If the first parameter is `0` this specifies the accepted types if `1`
it specifies rejected.
So far seen in the wild were CSCB strings with accepted types only and a
coding scheme of "" so this is what we handle for the moment.
Signed-off-by: Guido Günther <agx@sigxcpu.org>
|
|
Some AT-based modems like the Quectel Unisoc-based RM500U don't
support the older AT commands we used to detect modes like
AT*CNTI=2 and AT+WS46. Add support for detecting 4G and 5G
with generic commands too.
Fixes: https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/786
Signed-off-by: Dan Williams <dan@ioncontrol.co>
|
|
Use the new early port probe logic to do AT probes before the custom
init hook actually starts.
Signed-off-by: Dan Williams <dan@ioncontrol.co>
|
|
AT probes
For modems that need more time to respond to AT port probes (like some Telit devices,
and Cinterion-based Telit MV31/MV32) allow a custom number of AT probe tries on a
per-port basis for generic probing, or plugins that opt into this functionality.
Signed-off-by: Dan Williams <dan@ioncontrol.co>
|
|
If the old IMSI was unavailable because the SIM was locked, but now
is available because the SIM was unlocked, don't treat the SIM
properties change as a hotswap that may trigger dropping and re-probing
the modem.
Signed-off-by: Dan Williams <dan@ioncontrol.co>
|
|
Signed-off-by: Guido Günther <agx@sigxcpu.org>
|
|
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>
|
|
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>
|
|
All in debug messages or code comments so not user / client visible.
Signed-off-by: Guido Günther <agx@sigxcpu.org>
|
|
Signed-off-by: Guido Günther <agx@sigxcpu.org>
|
|
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>
|
|
Signed-off-by: Akula Susmitha <quic_asusmith@quicinc.com>
|
|
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>
|
|
|
|
|
|
|
|
|
|
Added the support for 16kHz sample rate for simtech modems and set it as default if available.
|
|
Check for supported storages before setting default storage.
Signed-off-by: Akula Susmitha <quic_asusmith@quicinc.com>
|
|
The logic will exclusively look for the udev tags reporting
sahara/firehose support in the primary control port of each modem
type.
|
|
Signed-off-by: default avatarLukas Voegl <lvoegl@tdt.de>
|
|
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>
|
|
Subsystem device ID can be used for identifying PCI modems,
so expose the property.
Signed-off-by: Sushrut Shree Trivedi <quic_sushruts@quicinc.com>
|
|
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>
|
|
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>
|
|
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>
|
|
Just to make it explicit that there is no more logic running
afterwards.
|
|
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
|
|
Closes #953
|
|
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".
|
|
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.
|
|
|
|
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>
|
|
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.
|
|
|
|
|
|
Remove stray tabs.
Signed-off-by: Dan Williams <dan@ioncontrol.co>
|
|
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.
|
|
|
|
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).
|
|
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>
|
|
|
|
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>
|
|
This will allow us to fetch cell broadcast messages.
Signed-off-by: Guido Günther <agx@sigxcpu.org>
|
|
This can be used for cell broadcast messages as well
Signed-off-by: Guido Günther <agx@sigxcpu.org>
|
|
Signed-off-by: Lukas Voegl <lvoegl@tdt.de>
|