Commit Graph

6478 Commits

Author SHA1 Message Date
Aleksander Morgado
8ec9789e3c quectel: add port type hints for the Quectel LTE-A EG06
ttyUSB0 (if #0): QCDM/DIAG port
 ttyUSB1 (if #1): GPS data port
 ttyUSB2 (if #2): AT primary port
 ttyUSB3 (if #3): AT secondary port
2019-05-30 17:28:13 +02:00
Aleksander Morgado
aa22387937 iface-modem: fix reporting state while registration is denied
When registration is denied, we should be reporting the modem with
'enabled' state instead of 'registered'. This was not happening
because the logic to build the consolidated state (for 3GPP+3GPP2
modems) was using as default initial state the current old state, and
so if the old one was 'registered' it never allowed getting a
consolidated state of 'enabled', because 'registered' > 'enabled'.

Instead of using the old initial state, the consolidated modem state
should use 'enabled' as default initial value, which is the lowest
among 'enabled, 'searching' and 'registered'.
2019-05-30 13:18:32 +00:00
Aleksander Morgado
7f822fbc50 xmm,shared: don't assume parent object implements location support
E.g. when MM is built without QMI support, the MBIM modem won't have
any location support, as the only location implementation is based on
QMI over MBIM.

https://gitlab.freedesktop.org/mobile-broadband/ModemManager/issues/125
2019-05-28 22:56:54 +02:00
Aleksander Morgado
fd1a26fc36 plugin: ignore unwanted net ports
* For QMI modems, make sure we only grab QMI data ports (flag the
   rest as ignored).
 * For MBIM modems, make sure we only grab MBIM data ports (flag the
   rest as ignored).
 * For other plugins that use NET ports in their logic, make sure we
   only grab non-QMI and non-MBIM data ports.
2019-05-23 11:16:00 +02:00
Aleksander Morgado
6dc6a825b3 base-modem-at: don't ignore allow_cached flag in first command in sequence 2019-05-18 16:00:28 +02:00
Aleksander Morgado
254da81ebd telit: loading access tech should never use cached replies 2019-05-18 16:00:19 +02:00
Lubomir Rintel
50fc46c170 bearer-qmi: do not call cleanup_event_report_unsolicited_events() w/o 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.
2019-05-14 09:49:15 +02:00
Lubomir Rintel
eaaf64ffce base-bearer: fix check for cancellation
If we cancel connect_cancellable, the connect task will return a
G_IO_ERROR_CANCELLED. We may need to do some cleanup (like, disconnect
if the connection went far enough to actually start the network
connection), thus it's important we check for cancellation correctly.
2019-05-14 09:47:54 +02:00
Lubomir Rintel
aaea6c77f2 bearer-qmi: remove unused DisconnectContext::data 2019-05-14 09:46:46 +02:00
Aleksander Morgado
7753eb0013 iface-modem-messaging: flush sms list update before notifying added/removed
So that clients are able to have the full updated list before the list
update notification.
2019-05-08 20:26:05 +02:00
Johny Mattsson
8e364b72b9 mmcli: allow use of modem UID to specify SIM operation
Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/issues/107
2019-05-06 13:31:21 +02:00
yparitcher
d56bc301dd mm-broadband-modem: fix error propagation in cdma service status 2019-05-01 15:36:32 -05:00
Lech Perczak
7a6e92727f broadband-modem-mbim: parse nw_error in register_state_set_ready only if 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: 854c371c8a ("broadband-modem-mbim: implement 3GPP registration request")
Signed-off-by: Lech Perczak <l.perczak@camlintechnologies.com>
2019-04-26 14:36:32 +00:00
Moo
81ad40d27e i18n: Added Lithuanian translation 2019-04-25 10:18:13 +02:00
Aleksander Morgado
de1ae549fa shared-qmi: config list may be empty
Reported by: Enrico Mioso <mrkiko.rs@gmail.com>
2019-04-15 10:43:59 +02:00
Aleksander Morgado
44eac9e974 shared-xmm: implement support for MSB A-GPS 2019-04-09 12:24:39 +00:00
Aleksander Morgado
791c582df3 shared-qmi: implement support for MSB A-GPS 2019-04-09 12:24:39 +00:00
Aleksander Morgado
d5dc9751b6 location,agps: include support for MSB A-GPS 2019-04-09 12:24:39 +00:00
Aleksander Morgado
caa1f8fdc1 iface-modem-location: define first and last location sources
Much clearer to understand when looping through them.
2019-04-09 12:24:39 +00:00
Aleksander Morgado
b77aa7ab0e location,agps: explicitly specify that MSA A-GPS is implemented
The A-GPS based implementations we currently have assume MSA A-GPS, so
rename the MMModemLocationSource enum value to reflect that.
2019-04-09 12:24:39 +00:00
Aleksander Morgado
619d2ce5ac cli,location: minor refactor to handle the location setup flags 2019-04-09 12:24:39 +00:00
Ben Chan
79df43f0d7 broadband-modem: remove unused CallManagerStateContext defintion 2019-04-09 11:11:54 +00:00
Ben Chan
49f391b10d altair-lte: remove unused fields in DetailedDisconnectContext 2019-04-08 13:30:14 -07:00
Aleksander Morgado
210dc0be47 plugins,dell: port type hints for the DW5820e module 2019-04-08 12:45:28 +02:00
Ben Chan
9dac5ece77 build: make compiler warning options compatible with clang
This patch updates m4/compiler-warnings.m4 as follows to make it more
compatible with clang:

* clang doesn't support -Wunused-but-set-variable, which can be replaced
  with -Wunused-variable as the latter covers unused variables with or
  without an assigned value and is supported by gcc and clang.

* -Wno-unused-function is added to let clang ignore unused functions that
  are auto-generated.
2019-04-05 08:02:14 +00:00
Ben Chan
7f78ef5010 via: fix memory leak in parent_setup_registration_checks_ready
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.
2019-04-03 10:57:14 -07:00
Ben Chan
84fe52a1e6 modem-helpers: fix memory leak in mm_3gpp_parse_pdu_cmgl_response
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.
2019-04-03 10:53:01 -07:00
Sven Schwermer
7e4a8d9566 ublox: add LISA/SARA-U2 alternative port types
When configuring these modems with AT+UUSBCONF=2, i.e. CDC-ECM + 4x
CDC-ACM, they also enumerate with a different PID on the USB. We need to
adjust the udev rules for that case in order to ignore the non-AT ports.

Signed-off-by: Sven Schwermer <sven.schwermer@disruptive-technologies.com>
2019-04-03 13:17:19 +02:00
Dan Williams
1c14ca7262 libwmc: remove it
The WMC protocol was only present on older Panasonic/Verizon devices
from the 2006 - 2011 timeframe. The last device to support WMC was
the UML290 which also supported QMI (which is much more functional).
ModemManager also never used WMC support and it was never significantly
reverse engineered.

So remove WMC code from git; it'll still be in the history if anyone
cares in the future.
2019-04-02 11:20:11 -05:00
Dan Williams
88fac7f14a build: fix -Wunused-but-set-variable support and handle clang better
By default the build used -Wno-unused-but-set-variable but that's
clearly not what we want. Fix those problems.

When using clang, the compiler doesn't error on unknown compile
options, so let's add -Werror to the checking too.

CC='clang'
configure:3408: checking for gcc
configure:3435: result: clang
...
configure:17644: checking whether gcc understands -Wno-unused-but-set-variable
configure:17657: clang -c -Wall -std=gnu89 -g -O2 -Wmissing-declarations -Wmissing-prototypes -Wdeclaration-after-statement -Wstrict-prototypes -Wno-unused-parameter -Wno-sign-compare -Wno-deprecated-declarations -Wno-unused-but-set-variable  conftest.c >&5
warning: unknown warning option '-Wno-unused-but-set-variable'; did you mean '-Wno-unused-const-variable'? [-Wunknown-warning-option]
1 warning generated.
configure:17657: $? = 0
configure:17666: result: yes

Reported-by: Torsten Hilbrich <torsten.hilbrich@secunet.com>
2019-04-02 10:48:40 -05:00
Aleksander Morgado
093174c84d shared-qmi: always use newest carrier config if more than one found 2019-04-02 12:14:03 +02:00
Aleksander Morgado
c09e8c8a2a shared-qmi: if requested config not installed, fallback to generic
If there is a known match for a specific config, but the config is not
available in the module, we should fallback to the generic
configuration.
2019-04-02 12:14:03 +02:00
Aleksander Morgado
0029f846cd shared-qmi: no active carrier config means default is in use
In addition to any installed MCFG file, the firmware itself as a
'default' config that will be selected when no carrier config is
installed.

So it is not an error if 'QMI PDC Get Selected Config' doesn't return
the 'Active ID' TLV, it just means the default one is selected.
2019-04-02 12:14:03 +02:00
Aleksander Morgado
52b67dc7c3 api,modem: new 'CarrierConfigurationRevision' property
Which reports the version of the currently active carrier
configuration.

We also update the firmware 'version' reported in the firmware
settings so that carrier-specific upgrades can be performed (e.g. when
the firmware stays the same but the MCFG is updated).
2019-04-02 12:14:03 +02:00
Aleksander Morgado
c479d036f7 firmware: export a device id containing the carrier info
In order to support different per-carrier upgrade paths in fwupd.
2019-04-02 12:14:03 +02:00
Aleksander Morgado
147facd2ec plugins,test: setup new simple keyfile tester 2019-04-02 12:14:03 +02:00
Aleksander Morgado
2719265cbd dell,dw5821e: install carrier config mapping 2019-04-02 12:14:03 +02:00
Aleksander Morgado
b4b6dc9e65 shared-qmi: implement QMI PDC based carrier config support
We implement both loading the current configuration in use, as well as
automatically switching to a different one if a mapping file is
available.
2019-04-02 12:14:03 +02:00
Aleksander Morgado
94cf7f0ceb iface-modem: new carrier config support
During initialization phase we will allow querying the modem for the
details of which carrier-specific configuration is being used, and
will expose a description string in the API.

In addition to showing the current configuration, we will also allow
automatically switching the configuration based on the SIM card
detected in the device. In order to allow this, plugins/modems will
need to provide the expected mapping between carrier config
description and MCCMNC. This mapping cannot be generic, because
different manufacturers may use different description strings.
2019-04-02 12:11:25 +02:00
Aleksander Morgado
b8daedd3c0 broadband-modem-mbim: static array to define used QMI services 2019-04-02 12:11:25 +02:00
Aleksander Morgado
51a5b628ad broadband-modem-qmi: static array to define used QMI services 2019-04-02 12:11:25 +02:00
Aleksander Morgado
8c053f637a dell,dw5821e: allow unmanaged GPS even when raw/nmea enabled
The raw/nmea GPS source setup is using QMI LOC operations, so there is
no point in disallowing the control of the unmanaged GPS source, as
the GPS data TTY is exclusively used for unmanaged GPS.
2019-04-02 08:40:26 +00:00
Aleksander Morgado
a0cb8b4dd5 iface-modem-location: allow enabling unmanaged gps even if raw/nmea enabled
But only if the plugin implementation allows to do so.
2019-04-02 08:40:26 +00:00
Aleksander Morgado
5bbcfa8318 base-manager: fix inhibition alloc/dealloc mixup 2019-04-02 00:46:05 +02:00
Ben Chan
43d454ab7f ublox: fix out-of-bounds array accesses
This patch fixes several invalid checks like this:

   array[i] && i < G_N_ELEMENTS (array)

which should instead be:

   i < G_N_ELEMENTS (array) && array[i]

to avoid an out-of-bounds access of the array.

Fixes: c1aa658802
2019-03-29 13:34:10 -07:00
Aleksander Morgado
0944e59252 ublox: parse +UGCNTRD stats as unsigned 64bit values
[1551646332.583651] (ttyACM2): --> 'AT+UGCNTRD<CR>'
  [1551646332.626567] (ttyACM2): <-- '<CR><LF>+UGCNTRD: 1,0,0,0,0<CR><LF><CR><LF>+UGCNTRD: 2,1397316870,113728263578,1397316870,113728263578<CR><LF><CR><LF>OK<CR><LF>'
  [1551646332.627120] Reloading stats failed: Couldn't load primary PDP context 2 statistics: Error parsing session RX bytes
2019-03-29 10:07:29 +00:00
Aleksander Morgado
7330f6d581 libmm-glib,common: new helper methods to read guint64 values
We use strtoull() to read a "unsigned long long" that is always at
least 64bits, even in 32bit systems.
2019-03-29 10:07:29 +00:00
Aleksander Morgado
0a5d638726 ci: run distcheck on default build 2019-03-13 13:35:17 +01:00
Aleksander Morgado
8fba3a2318 ci: include builds without qmi and/or without mbim 2019-03-13 11:20:56 +01:00
Aleksander Morgado
5ef3c8eeb1 dell,dw5821e: firmware update support only if QMI is enabled 2019-03-13 10:57:43 +01:00