Commit Graph

7897 Commits

Author SHA1 Message Date
Aleksander Morgado
a6dd7ac60f cli,modem: add 5GNR registration settings in modem info output 2021-12-24 12:41:27 +00:00
Aleksander Morgado
dcf9bb4ee8 cli,modem-3gpp: new '--3gpp-set-nr5g-registration-settings' action 2021-12-24 12:41:27 +00:00
Aleksander Morgado
5395a85443 libmm-glib,modem-3gpp: add support to get/set 5GNR registration settings 2021-12-24 12:41:27 +00:00
Aleksander Morgado
22657021fb libmm-glib: new helper to handle the 5GNR registration settings 2021-12-24 12:41:27 +00:00
Aleksander Morgado
724342deac api,modem3gpp: add DRX cycle in 5G registration settings 2021-12-24 12:41:27 +00:00
Som_SP
e951008ae8 api,modem3gpp: new 5G registration settings support and MICO mode
A new set of property+method is added to be able to configure the 5G
specific registration settings, initially defining the support for the
MICO mode.

The property name starts with "Nr5g" instead of "5gNr" because of the
limitations imposed by the GObject type system on how properties with
numbers can be named.
2021-12-24 12:41:27 +00:00
Xeonacid
922bc2df5f build,meson: Remove incorrect args for i18n.merge_file
`i18n.merge_file` has been ignoring positional arguments for a time and explicitly rejects with error since meson 0.60.0.
2021-12-23 09:14:02 +08:00
Jakob Hauser
db228b2859 broadband-modem-qmi: Introduce udev flag for reduced facility lock query
The udev flag "ID_MM_QMI_FACILITY_LOCK_QUERY_REDUCED" allows to skip
facility lock state query "get_ck_status" on the DMS path for devices
where this isn't implemented properly.

On devices that have enabled "device locks", this flag won't work well.
Skipping the query doesn't disable the locks.

Fixes #448
2021-12-20 05:10:14 +01:00
Alexander Yashin
f95fb11b93 ublox: add support to SIM hot swap
Main thing that's required to get modem hot-swapping to work is the
UDCONF=50,1 command(see u-blox AT-command manual). But there are a lot
of u-blox modules which do not support this command. So in this patch,
it's supposed that this thing is configured beforehand(Like the UUSBCONF
functioning mode) for modules, where SIM hot-swaping feature is
possible. For the modems where it's not, the patch will not have any effects.

----

For ublox modems, CIEV: 12(X) messages allow to know if
SIM is (un)plugged. The values are encoded as:
    - 0: no SIM detected
    - 1: SIM detected

It's required from a modem to generate these events about the SIM
detection state.

To set up these `CIEV: 12,(X)` URC events the `+CMER=1,0,0,1,0` command
is used. That command is supported by almost all u-blox modems except
SARA-G300/SARA-G310/LEON-G1(For these models the hot-swap feature will
not work).

As this 12 that is used in CIEV may be completely different in other
modules, the test command parsing is quite important to get that index
number. So, this logic is also added in cind_simind_format_check_ready
function.

----

It seems that it's necessary to issue this `+CMER` set up there despite
that the `+CMER` configuration will take place later in the 3GPP
interface enabling sequence. Because without it simind indications
will not be enabled at all.
CMER configuration may be later overwritten by 3GPP interface enabling
sequence, but in the worst-case scenario only hot-swap feature will not
work.
2021-12-13 13:20:39 +03:00
Alexander Yashin
2de0e89589 plugins: ublox: bearer: SIM absence should not break disconnect
If we have a modem with an established connection, and then the
SIM is getting removed from that modem, this forces modem reprobing
sequence.

It looks like that:
```
 mm-base-modem:mm_base_modem_process_sim_event
 -> mm-base-modem:mm_base_modem_disable
 -> mm-base-modem:disable
 -> mm-broadband-modem:common_disable
 -> mm-broadband-modem:disabling_step,
 -> ctx->step=DISABLING_STEP_FIRST
 -> ctx->step=DISABLING_STEP_WAIT_FOR_FINAL_STATE
 -> ctx->step=DISABLING_STEP_DISCONNECT_BEARERS
```

At this stage, there is no actual connection existing already, but
bearer objects still exist and are still marked as connected.
So, if there were any active bearers - they will be disconnected.

In order to disconnect, ublox bearer sends +CGACT=0,%u, modem then
will return CME ERROR: 10(SIM not inserted):
```
[modem0/ttyACM0/at] --> 'AT+CGACT=0,1<CR>'
[modem0/ttyACM0/at] <-- '<CR><LF>+CME ERROR: 10<CR><LF>'
[modem0/ttyACM0/at] operation failure: 10 (SIM not inserted)
[modem0/bearer0] couldn't disconnect: SIM not inserted
```
this error will break disabling and reprobing. To fix that, it's
require to add 'SIM not inserted' state as a valid condition to
continue bearer disconnection.
2021-12-13 13:20:39 +03:00
Aleksander Morgado
029ea68ce4 base-bearer: make sure 'ReloadStatsSupported' is set before transitioning to 'Connected'
By the time we report the bearer as 'Connected', the DBus client
should also be able to know right away the value of
'ReloadStatsSupported', instead of needing to wait for it to be
updated asynchronously.

This logic adds one additional step in the generic connection
sequence for this purpose, which is run after the modem is connected
but before we report the state change via DBus.
2021-12-13 09:35:28 +00:00
Frederic Martinsons
9fc3d15d29 api, dbus, bearer: Add ReloadStatsSupported bearer dbus property
This property means that the current bearer can reload stats and read TX
and RX bytes transmitted.

The property is initiliazed as soon as the bearer is connected.

Signed-off-by: Frederic Martinsons <frederic.martinsons@sigfox.com>
2021-12-13 09:35:28 +00:00
Aleksander Morgado
07c4e95ac9 api,enums: minor alignment fix in comments 2021-12-11 22:12:13 +01:00
Aleksander Morgado
b094fe4427 port-probe: duplicate amount of AT probing attempts
We originally did only 3 attempts every 3s, so the maximum probing
time for a given TTY port looking for AT capabilities was 9 seconds.
We now duplicate the amount of times, so up to 18s of port probing,
which is quite a lot more than before, but unfortunately it's needed
because most new modems take a lot of time to boot up internally.

The way to avoid this long probing time is to make sure port type
hints for the possible AT ports are set correctly.

Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/379
2021-12-11 20:22:57 +00:00
Aleksander Morgado
2c34ebe80c port-mbim: support MBIMEx v3.0
The ModemManager codebase has been ported to support Basic Connect v3
messages as defined in MBIMEx v3.0, so at this point we can now switch
to use it by default whenever possible.
2021-12-11 13:13:37 +01:00
Aleksander Morgado
2cf8b7858e broadband-modem-mbim,bearer-mbim: support packet service from MBIMEx v3.0
Whenever MBIMEx v3.0 is enabled, the logic should create requests and
parse responses using the updated format.

Based on an initial implementation by Som_SP <somashekhar.puttagangaiah@intel.com>
2021-12-11 13:13:33 +01:00
Aleksander Morgado
3382e421cc broadband-modem-mbim,bearer-mbim: support connect from MBIMEx v3.0
Whenever MBIMEx v3.0 is enabled, the logic should create requests and
parse responses using the updated format.

Based on an initial implementation by Som_SP <somashekhar.puttagangaiah@intel.com>
2021-12-11 13:12:55 +01:00
Aleksander Morgado
9940bd9dbe broadband-modem-mbim: treat 'no eSIM profile' as initialized
When an eSIM doesn't have any profile set, we should treat it as fully
ready to be used; i.e. so that a new SIM object can be created and
initialized.

In this state, the "eSIM status" property will say "No profiles".
2021-12-11 12:53:37 +01:00
Aleksander Morgado
36402df05b sim-mbim: load 'SimType', 'Removability' and 'EsimStatus' properties
We can use the MBIMEx v3.0 support to load the SIM type, SIM
removability details and eSIM status.
2021-12-11 12:53:37 +01:00
Aleksander Morgado
c76da3bed9 broadband-modem-mbim,sim-mbim: support subscriber ready status from MBIMEx 3.0
Whenever MBIMEx v3.0 is enabled, the logic should parse the response
and indication messages using the updated format.
2021-12-11 12:53:37 +01:00
Aleksander Morgado
83ebc2b4a8 base-sim: new 'SimType', 'Removability' and 'EsimStatus' properties
We implement the methods to load the properties during SIM object
initialization.
2021-12-11 12:53:37 +01:00
Aleksander Morgado
8cfddef2be base-sim: reorder init ready() methods
The ready() methods for each step in the initialization sequence must
be ordered from bottom to top, so that we can read the logic in that
same order.
2021-12-11 12:53:37 +01:00
Aleksander Morgado
8aef73ab53 base-sim: reorder load_preferred_networks()
Add it along with the other initialization property loaders.
2021-12-11 12:53:37 +01:00
Aleksander Morgado
f8719e6308 cli,sim: new 'SimType', 'Removability' and 'EsimStatus' properties 2021-12-11 12:53:37 +01:00
Aleksander Morgado
0eda648bb9 libmm-glib,sim: new 'SimType', 'Removability' and 'EsimStatus' properties 2021-12-11 12:53:37 +01:00
som
46016f68fd api,sim: new 'SimType', 'Removability' and 'EsimStatus' properties 2021-12-11 12:53:37 +01:00
Aleksander Morgado
b07ce3cb87 libmm-glib,sim: reoder get_preferred_networks()
Add it along with the other getters.
2021-12-11 12:53:37 +01:00
Aleksander Morgado
3f8ea6e8a1 sim-mbim: common method for Subscriber Ready Status
Instead of running the Susbcriber Ready Status separately for IMSI and
ICCID, we run it only once and store the results in a new private
struct.

It only saves one request/response right now, but it will save more
once introduced other SIM parameters loaded with the same method.
2021-12-11 12:53:37 +01:00
Mingjie Zhang
2bad8f5a0d fibocom: update FM101 port type hints to final layout
The port type hints for the FM101 were updated to be in line with the final product layout,
where USB interface #2 is now used as an AT port (not ignored) and USB interface #4 is now
used as debug port. USB interface #6 is removed as it no longer exists.
2021-12-10 19:44:28 +08:00
Aleksander Morgado
559df16deb filter: allow 'option' string in the TTY driver filter list
Fixes
https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/475
2021-12-08 14:30:59 +01:00
Aleksander Morgado
e9f254ba3f udev: avoid [0-9]* as shell globbing patterns
The udev rules expect matches based on shell globbing pattern, not
based on regex. This means that "[0-9]*" doesn't mean "zero or more
digits", it actually means "one digit and zero or more other
characters".

So, avoid the regex like match, even if it worked for us, because it
didn't mean what we thought it meant, plus, it breaks our custom udev
rules processing logic, in which we convert the input patterns into
real regex expressions.

See https://bbs.archlinux.org/viewtopic.php?pid=1415916#p1415916

While at it, also make sure that the wildcard matching is done
exclusively for prefix and suffix matches, never in the middle of
a string, or our custom rules parser would not match correctly.
2021-12-01 22:12:06 +01:00
Aleksander Morgado
558a681fc8 sms-part-cdma: remove trailing whitespaces 2021-11-26 09:38:18 +01:00
Aleksander Morgado
d2b620c5fa libmm-glib,modem: fix warning when loading SIM slots
Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/465
2021-11-22 13:04:52 +00:00
Matthew Via
6db9a48c34 sms-part-cdma: merge WDP multipart CDMA WAP messages.
CDMA WAPs have multipart message information in a 3 byte header in-band
with the user data, as described in WAP-259-WDP-20010614-a.  Set the
message concat parameters and use the message-id as the reference.
2021-11-21 21:17:20 +00:00
Aleksander Morgado
afb213ac05 bearer-mbim: fix error handling in connection status reload
We should not set the GError as autoptr(), as we're returning it as
part of the GTask.
2021-11-21 15:18:27 +01:00
Aleksander Morgado
647a438b43 bearer-mbim: plug leak when checking if already disconnected fails
If the modem reports any error during the connection status check,
we're creating a GError but never disposing it. We don't need that
GError for anything, so just discard it.
2021-11-21 14:51:24 +01:00
som
74ed6eeeff broadband-modem-mbim: support lte attach info from MBIMEx 3.0
whenever MBIM version is set to 3.0, lte attach info should
invoke the MBIMEx 3.0 specific CID to fetch the data.
2021-11-19 23:32:51 +01:00
Fran Dieguez
46463d1b6a po: add galician language translations 2021-11-19 22:48:06 +01:00
Aleksander Morgado
e7a6bb7504 data,fcc-unlock: add example unlock scripts
Added scripts for Foxconn SDX55, Quectel EM120, and several old Sierra
Wireless manufactured devices:
 * Installed but not used by default, the user needs to setup manual
   links from ${pkgdatadir}/fcc-unlock.available.d, to
   ${pkgsysconfdir}/fcc-unlock.d in order to enable them.
 * Installed with rights only for the owner, so that the dispatcher in
   ModemManager can validate them.
 * They rely on $PATH to find the qmicli/mbimcli tools.

In addition to these scripts, per-vid:pid links are created in the
same ${pkgdatadir}/fcc-unlock.available.d directory, specifying which
are the specific devices that require the FCC unlock operation.

This patch also creates the ${pkgsysconfdir}/fcc-unlock.d and
${pkglibdir}/fcc-unlock.d directories where ModemManager looks for the
enabled tools.

Note that the meson setup doesn't support creating/deleting links
officially yet, so we use a workaround using meson.add_install_script
that is not perfect (i.e. doesn't handle the symlink removal during
uninstall). See https://github.com/mesonbuild/meson/issues/1602
2021-11-18 11:20:41 +01:00
Aleksander Morgado
81302efa66 iface-modem: use external dispatcher to attempt FCC unlock
We remove the built-in FCC unlock procedures from the ModemManager, we
will no longer run them automatically, and instead rely on external
scripts/programs to do that.

Packages providing the external FCC unlock tools can install them in
${pkglibdir}/fcc-unlock.d.

Users manually enabling external FCC unlock tools can install them in
${pkgsysconfdir}/fcc-unlock.d.

The user-enabled path takes precedence over the package-enabled one.
2021-11-17 11:30:01 +01:00
Aleksander Morgado
21c775703c libmm-glib: fix license in sources
The libmm-glib library is LGPLv2+, not GPLv2+.
2021-11-16 17:54:26 +01:00
Prakash Pabba
103eb9cf29 shared-qmi,modem-helpers-qmi: Add support for NR5G band preference
Implement support for the NR5G band list to get current NR5G bands.
This will also allow us to configure supported NR5G bands via mmcli.
2021-11-14 20:19:37 +05:30
Prakash Pabba
6e1cb371ca shared-qmi,modem-helpers-qmi: Add support for NR5G band capability
Implement support for the NR5G band list to get supported NR5G
band capabilities.

  localhost ~ # qmicli -d qrtr://0 --dms-get-band-capabilities
  [qrtr://0] Device band capabilities retrieved:
        Bands: 'bc-0-a-system, bc-0-b-system, bc-1-all-blocks, gsm-dcs-1800, gsm-900-extended, bc-10, gsm-850, gsm-pcs-1900, wcdma-2100, wcdma-pcs-1900, wcdma-1700-us, wcdma-850-us, wcdma-800, wcdma-900, wcdma-850-japan'
        LTE bands: '1, 2, 3, 4, 5, 7, 8, 11, 12, 13, 14, 17, 18, 19, 20, 21, 25, 26, 28, 29, 30, 32, 34, 38, 39, 40, 41, 42, 43'
        LTE bands (extended): '1, 2, 3, 4, 5, 7, 8, 11, 12, 13, 14, 17, 18, 19, 20, 21, 25, 26, 28, 29, 30, 32, 34, 38, 39, 40, 41, 42, 43, 46, 48, 66, 68, 71'
        NR5G bands: '1, 2, 3, 5, 7, 8, 12, 13, 14, 18, 20, 25, 26, 28, 29, 30, 38, 40, 41, 48, 66, 70, 71, 77, 78, 79'
2021-11-14 20:19:37 +05:30
Prakash Pabba
35d5287dda mm-shared-qmi: Add check for 5g modem iface type 2021-11-14 20:19:37 +05:30
Prakash Pabba
a498e4674d broadband-modem-qmi: Process Signal Info for NR5G
MM was not processing NR5G signal strength for QMI signal info
response/indication message. Thus modem access technology and
signal quality was not reported for NR5G-only modems.

Process and consider NR5G signal strength too while getting
signal quality for modem interface.

As 5GNR does not have RSSI, take NR5G signal quality to be minimum
of percentage strength computed using RSRP, SNR and RSRQ values
individually.
2021-11-14 20:19:37 +05:30
Prakash Pabba
07512ef2a4 broadband-modem-qmi: Process System Info for NR5G
MM was not processing NR5G service info for QMI system info
response/indication message. This led to NR5G-only modems never
having 'registered' status.

Process NR5G system info and accordingly update the 5gs
registration status for qmi modems.

This commit also removes some stale comments.
2021-11-14 20:19:37 +05:30
Prakash Pabba
0936204eb5 api,enums: add NGRAN bands in MMModemBand enum 2021-11-14 20:18:52 +05:30
Prakash Pabba
2e4bba105e build,meson: bump libqmi version to 1.31.2
In order to be able to use new 5GNR apis.
2021-11-11 18:21:52 +05:30
ZhangMingjie
3a880fd832 plugins: add fibocom FM101 to fibocom port types rules file
This patch add fibocom FM101 to 77-mm-fibocom-port-types.rules file.
which contains two sets of vid and pid pairs, "2cb7:01a2" and "2cb7:01a4".
2021-11-10 20:19:47 +08:00
Aleksander Morgado
59ad8409a6 kerneldevice,generic: simplify DEVPATH matching logic
Use autoptr to avoid the embedded goto.
2021-11-09 10:50:26 +01:00