| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
| |
Never automatically flag the bearer as disconnected if it's using PPP,
because we could end up using the TTY at the same time as pppd, with
the wrong CLOCAL settings.
So, whenever we detect that the bearer requires PPP, we will ignore
all disconnection reports generated by ModemManager itself.
(cherry picked from commit 5f29bd64de8127cb326488d68a2a2b64a45e1f45)
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
This patch fixes a potential memory leak in
parent_setup_registration_checks_ready() where the allocated
SetupRegistrationChecksResults may be leaked when the MMIfaceModemCdma
parent's setup_registration_checks() fails.
(cherry picked from commit 7f78ef50100f7f125ddcd47a721676d80e86d1fe)
|
|
|
|
|
|
|
|
| |
This patch fixes a potential memory leak in
mm_3gpp_parse_pdu_cmgl_response() where the allocated MM3gppPduInfo may
be leaked when failing to parse the +CMGL response.
(cherry picked from commit 84fe52a1e6f1521ecc95666c5a17e37a4937b22a)
|
|
|
|
|
|
|
|
| |
Telit modems LM940/960 need more time for becoming responsive
to qmi requests after device appearance.
(cherry picked from commit 301bdcfef7e3407a675b37b99d2c57ddb249baa8)
(cherry picked from commit a73b13b67cd1987431f92ea6a4ccc2cb85c51cc7)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
MBIM_STATUS_FAILURE
Some modems (Namely: Telit LE910 V2) report nonzero NwError code,
outside of 3GPP TS 24.008 - in "register-state set command-done" response,
while status code equals MBIM_STATUS_ERROR_NONE.
In such cases network is operational.
According to MBIM specification 1.0 table 10.5.9.8 "Status codes",
NwError shall be nonzero only if Status Code equals MBIM_STATUS_FAILURE,
and client shall parse NwError only in such cases.
Also, MBIM specification does not explicitly state that 'NwError == 0' equals
no error, rather than that it is unknown error, hence raise an error
unconditionally if MBIM status code is MBIM_STATUS_FAILURE.
Therefore, check NwError IFF MBIM response status code equals
MBIM_STATUS_FAILURE, instead of MBIM_STATUS_SUCCESS.
Fixes: 854c371c8aa9 ("broadband-modem-mbim: implement 3GPP registration request")
Signed-off-by: Lech Perczak <l.perczak@camlintechnologies.com>
(cherry picked from commit 7a6e92727f1034f17d5d21f631f3e904b8a6011a)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
indication_id
If a disconnection fails (because stop_network() failed), base-bearer
flips the state back to CONNECTED. Oops. At that point something is
clearly messed up, but it seems correct to assume the bearer is
connected.
Nevertheless, we will have already have unhooked the unsolicited events
reporting. A subsequent attempt to disconnect the bearer will trip the
assertion:
#0 0x00007ffff75f2eb5 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1 0x00007ffff75dd895 in __GI_abort () at abort.c:79
#2 0x00007ffff77beb53 in g_assertion_message
(domain=<optimized out>, file=<optimized out>, line=<optimized out>, func=0x5088e0 <__FUNCTION__.56253> "cleanup_event_report_unsolicited_events", message=<optimized out>) at ../glib/gtestutils.c:2878
#3 0x00007ffff781a96f in g_assertion_message_expr
(domain=domain@entry=0x0, file=file@entry=0x507aad "mm-bearer-qmi.c", line=line@entry=1138, func=func@entry=0x5088e0 <__FUNCTION__.56253> "cleanup_event_report_unsolicited_events", expr=expr@entry=0x507ae5 "*indication_id != 0") at ../glib/gtestutils.c:2904
#4 0x00000000004a0c49 in cleanup_event_report_unsolicited_events (client=<optimized out>, indication_id=0x5bb30c, self=<optimized out>)
at mm-bearer-qmi.c:1138
#5 0x00000000004a0c49 in cleanup_event_report_unsolicited_events
(client=<optimized out>, indication_id=indication_id@entry=0x5bb30c, self=0x5bb420 [MMBearerQmi]) at mm-bearer-qmi.c:1132
#6 0x00000000004a0ee3 in disconnect_context_step (task=0x7fffe8012100 [GTask]) at mm-bearer-qmi.c:1854
#7 0x000000000046e889 in disconnect_auth_ready (self=<optimized out>, res=<optimized out>, ctx=ctx@entry=0x654630)
at mm-iface-modem-simple.c:865
#8 0x00007ffff79cfa9a in g_task_return_now (task=0x7fffe8012640 [GTask]) at ../gio/gtask.c:1209
...
Add checks for indication_id to calls to
cleanup_event_report_unsolicited_events() on
DISCONNECT_STEP_STOP_NETWORK_IPV4 or DISCONNECT_STEP_STOP_NETWORK_IPV6, as
is done elsewhere.
(cherry picked from commit 50fc46c17089fbb55595327a5c3fc82d83f792fd)
|
|
|
|
|
| |
https://gitlab.freedesktop.org/mobile-broadband/ModemManager/issues/131
(cherry picked from commit d1b716abaf4fca0a31498ce77b17fbc7216a5936)
|
|
|
|
| |
(cherry picked from commit d56bc301dd6b65fce56affa55ddd86b4e3ff335f)
|
|
|
|
|
|
| |
The reporting of the operation result was reversed in the async method.
(cherry picked from commit 46d627ff831b7d4d609060d77cd852f42cfcfa83)
|
|
|
|
|
|
| |
The reporting of the operation result was reversed in the async method.
(cherry picked from commit 1ef58be792e992f0c4fee3e2f8ac274d2b832a40)
|
|
|
|
|
|
|
|
|
|
|
| |
We were re-using the GDBusObjectManagerClientFlags set in the
MMManager object as GDBusProxyFlags for the Manager1 interface proxy
object, and that was completely broken.
Instead of setting "DO_NOT_AUTO_START" in the proxy, we were actually
setting "DO_NOT_LOAD_PROPERTIES"...
(cherry picked from commit d0bb8d1d503f2ce01ea85625294c238aa831d298)
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If we have a modem reference around during an ongoing operation but
the modem has already been disposed after getting removed from the
system, we were trying to iterate a NULL hash table, which led to a
crash.
https://lists.freedesktop.org/archives/modemmanager-devel/2018-November/006915.html
Reported by Sebastien Fabre <sebastien.fabre@sigfox.com>
(cherry picked from commit 7510b3355d7c1a670ab1eff373ef04bc5a8ad282)
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
This is just to consolidate the output w.r.t. similar fields in
e.g. the Messaging or Location interfaces.
(cherry picked from commit 8ef6d397c70313bdc511319c707e0ae825eacc96)
|
|
|
|
| |
(cherry picked from commit e75063d80a8b18a28a89116beb78e42fe85c0d56)
|
|
|
|
|
| |
Signed-off-by: Milo Casagrande <milo@milo.name>
(cherry picked from commit 45a8fccb03ddcc35080f746bbe00b481bdbfb43e)
|
|
|
|
| |
(cherry picked from commit 3dc4106f0da30a31af040cb7c38cc1df6a1a177c)
|
|
|
|
| |
(cherry picked from commit fe3665b18ed79f6de759718959154d5cbee4382a)
|
|
|
|
|
|
|
|
|
|
| |
Fix the test for invalid characters, because now I allow hex chars in
the account number.
And add new tests with real China Mobile ICCIDs that contain hex chars
in the account number.
(cherry picked from commit 32aa8333c62296c7c9c918b161e35355821e7615)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There are operators (e.g. the Chinese CMCC operator) that abuse the
fact that 4 bits are used to store the BCD encoded numbers, and also
use the [A-F] range as valid characters for the ICCID in the operator
specific account number part. Haven't seen any documentation where
this format with [A-F] characters is explicitly allowed, but I have
seen multiple real cases where it happens. E.g.:
898602F9091830030220
898602C0123456789012
This patch also removes the 'last F' validation, used when reading
19-digit ICCIDs with +CRSM, as it no longer applies.
(cherry picked from commit 099d54a4bcaf7d71ccda1d42424d5b73ec286911)
|
|
|
|
|
|
|
| |
Use AT+CCID to query the SIM ICCID, and fallback to parent's +CRSM
based method otherwise.
(cherry picked from commit eb01914bd0cada5d2ed144d5f3f45fd17722e97c)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The mm_3gpp_parse_iccid() method does validation of the ICCID string
and was originally implemented to handle +CRSM reported values. The
implementation was looking for 20-digit strings, even for 19-digit
ICCIDs (those finished with a trailing 'F').
We now extend the logic to also validate ICCID strings reported as
19-digit values directly, and when that happens we won't allow
swapping of the digits (a +CRSM specific requirement) or trailing 'F'
characters (as that is only required when reporting 19-digit ICCIDs
with 20-digit strings).
This change allows us to e.g. use the u-blox specific AT+CCID command
and validate the returned ICCID with the same helper method, which
currently fails:
(ttyACM2): --> 'AT+CCID<CR>'
(ttyACM2): <-- '<CR><LF>+CCID: 8934077700015848638<CR><LF><CR><LF>OK<CR><LF>'
couldn't load SIM identifier: 'Invalid ICCID response size (was 19, expected 20)'
(cherry picked from commit 02821232878d2a12bf248b7f2594c48076593810)
|
|
|
|
|
|
|
|
|
|
| |
On CDMA-only connections we won't have a CID defined, so instead of
getting in a loop of warnings reporting "cid not defined", early error
out with an UNSUPPORTED error so that the connection check isn't tried
any more.
https://gitlab.freedesktop.org/mobile-broadband/ModemManager/issues/83
(cherry picked from commit 47ed19d5be68f139d4fbb00c997cd2805488ace7)
|
|
|
|
|
|
|
| |
g_free() handles a NULL pointer properly, so there is no need to have a
NULL check before calling g_free().
(cherry picked from commit 1b3b2e26a7ff4faf536074b8b82d6e4eec11b36c)
|
|
|
|
|
| |
Signed-off-by: Guido Günther <guido.gunther@puri.sm>
(cherry picked from commit f24d8279bcfac4f9945c2e47bf60e6dfc5a686f5)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Implement a new interface to keep the code shared between the QMI and
non-QMI modem implementations.
While doing that, also fix the parent interface pointer handling, so
that it isn't a static pointer applicable to all modems, and make it a
per-modem specific pointer. Without this fix, ModemManager would crash
if e.g. running with both a QMI and non-QMI Cinterion modem at the
same time.
The new shared Cinterion logic will be in charge of managing all GPS
sources not already managed by the parent interface. E.g. if the
parent implementation already supports QMI-based GPS location (using
the LOC service for example) prefer that to the custom AT-based
logic.
(cherry picked from commit 59e79c996b4863448f68a262bf8be053416a1344)
|
|
|
|
| |
(cherry picked from commit cc0c76d87564aacee774644a3422d7854f0090bb)
|
|
|
|
|
|
|
| |
From: Emin Tufan Çetin <etcetin@gmail.com>
https://gitlab.freedesktop.org/mobile-broadband/ModemManager/issues/80
(cherry picked from commit 89ffcbdd8db4164a4a1cbea0224b0cc14a3f57b0)
|
|
|
|
|
|
|
|
| |
The MBIM protocol hides to the user the concept of SMS storages, so we
should explicitly ignore the initialization step so that it isn't run
with the parent AT-based implementation.
(cherry picked from commit b7e5ca62c5eca1118e0c5cbda3d769f2c756c92c)
|
|
|
|
| |
(cherry picked from commit 342abd7f6303ccd7f9a519c766ea53f3aa924b2d)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Unfortunately, G_MINDOUBLE is basically 0.0, so MM_SIGNAL_UNKNOWN ends
up giving us a value that may fall in the range of expected values for
the signal component.
Update the MM_SIGNAL_UNKNOWN symbol to match a value which is
definitely out any other possible valid range, so that we can easily
detect which values are set and which aren't.
While API is maintained, this fix is introducing an ABI break. Not a
big deal anyway, as the purpose of the value is just to detect unset
fields.
(cherry picked from commit fe66bdf65e57fa7dee3dcb8dea068fb3fc7aec34)
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Setting bands is a very device-specific operation. Sometimes the
device requires specific band combinations, or sometimes the 'any'
specific logic doesn't apply to all supported bands (e.g. may apply
only to the currently selected modes, as in XMM based devices).
So, don't assume that if the set command succeeds we have set all
expected bands. Instead, do an explicit loading of the current bands
after the set operation, same thing as we do when setting modes.
(cherry picked from commit 59a5af9771b942ea6878e2f428635daae624f229)
|
|
|
|
|
|
|
|
|
|
|
| |
When we detect that the modem is QMI-capable or MBIM-capable, we still
want to be able to use TTYs, for features unsupported by the main
protocols.
So, don't flag all the TTYs as non-AT non-QCDM, let them probe as
usual instead.
(cherry picked from commit 24e31dc2b86ade753a0c5853ae568f2312e19072)
|
|
|
|
|
|
|
|
|
|
| |
The first step in the Enable() processing is to wait for a final
state, so we can definitely wait for the ongoing disabling or
initializing states to finish before we go on with the enable
operation, there is no need to early fail if the disabling or
initializing intermediate states are detected.
(cherry picked from commit 8430b051139cc4ca5711345f6244ca5cf160c7e6)
|
|
|
|
|
|
|
|
|
|
|
| |
If additional Enable() requests are received while one is already
ongoing, we queue them and will end up completing all with the same
result once the first one finishes.
Same logic also for Disable().
https://gitlab.freedesktop.org/mobile-broadband/ModemManager/issues/8
(cherry picked from commit c4766122476b53a89c606bd0c0cbbd0ec6d9826b)
|
|
|
|
| |
(cherry picked from commit dbfc03d9ac5f0ab78d5447b0541cb459ab15c32c)
|
|
|
|
|
|
| |
Section (8) is for tools that require root privileges.
(cherry picked from commit b56cd74ab57edc024eefbcfa0bf0e5ffbabe32eb)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
E.g. if the modem switches from 4G to 3G while the extended signal
information is enabled, we should no longer expose LTE specific signal
quality values, only the UMTS specific ones.
E.g. to avoid this:
$ mmcli -m 1 --signal-get
-------------------------
UMTS | RSSI: '0,00' dBm
| RSCP: '-92,00' dBm
| EcIo: '-13,00' dB
-------------------------
LTE | RSSI: '0,00' dBm
| RSRQ: '-6,50' dB
| RSRP: '-96,00' dBm
| SNR: '0,00' dB
(cherry picked from commit ae9efa05c855c94122ef25ab6ee43dee13c1a64c)
|
|
|
|
| |
(cherry picked from commit ab0133445c67091bc494f01bfaea663d5298c568)
|
|
|
|
|
|
|
|
|
|
|
| |
The sort_band() method used in the tester was totally wrong, it was
comparing the addresses of the variables instead of the MMModemBand
values.
Use the common mm_common_bands_garray_sort() instead, which works as
expected.
(cherry picked from commit b8c7773a74f0c460ff19742a29dbf0060119e584)
|
|
|
|
| |
(cherry picked from commit 3a4a137de31cf1513c5fba4685b3de34eaa8713a)
|
|
|
|
|
|
|
|
| |
The default AT^SCFG="Radio/Band" value for Cinterion PLS8-J devices is
"16819472". Add UMTS band 19 and LTE band 19 entries based on the
information given in the PLS8 datasheet.
(cherry picked from commit ebe9fcd57445460c3a37f7a82dc67843fb07a5cb)
|
|
|
|
|
|
|
|
|
|
|
|
| |
To have proper ordering in the D-Bus signals, the skeleton's property
changes must be flushed before the Call{Add,Delet}ed signals are
emitted. Without this flush, the emission of the PropertiesChanged
signal is delayed until the main loop is idle. This causes problems
on the client side, for example the CallAdded signal being received
before the Calls property contains the call.
Closes: #81
(cherry picked from commit a160832fced9c1e944e119ffdb47ff6460abc8aa)
|
|
|
|
|
|
| |
Reported by: Matthew Stanger <stangerm2@gmail.com>
(cherry picked from commit 95cee88ccd7a87147ef8222ed575eb12c73320ee)
|
|
|
|
|
|
|
|
|
|
|
|
| |
This info comes from PLS8-X/E/J/V/US, HC25 & PHS8 references, the
last two can be found publicly via Google search.
Swapped bit-mask locations for G850 & PCS bands as they may have
changed with FW or where accidently put in the wrong place.
Updated many 3G & 4G bit-mask fields.
(cherry picked from commit 7913fe4fafb583d517ca21ab6ea59d9a1d8c773d)
|