| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
https://gitlab.freedesktop.org/mobile-broadband/ModemManager/issues/100
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ModemManager[2804]: <warn> [1545055222.508649] No valid firmware images listed. Assuming firmware unsupported.
ModemManager[2804]: <debug> [1545055222.508665] firmware list loading failed: unsupported
ModemManager[2804]: <debug> [1545055222.508683] Couldn't load firmware image list: firmware list unknown
ModemManager[2804]: <debug> [1545055222.508728] Couldn't load current firmware image: current firmware unknown
(ModemManager:2804): GLib-CRITICAL **: 15:00:22.508: g_variant_builder_end: assertion '!GVSB(builder)->uniform_item_types || GVSB(builder)->prev_item_type != NULL || g_variant_type_is_definite (GVSB(builder)->type)' failed
Thread 1 "ModemManager" received signal SIGTRAP, Trace/breakpoint trap.
0x00007ffff75b39b6 in ?? () from /usr/lib/libglib-2.0.so.0
(gdb) bt
#0 0x00007ffff75b39b6 in () at /usr/lib/libglib-2.0.so.0
#1 0x00007ffff75b4363 in g_logv () at /usr/lib/libglib-2.0.so.0
#2 0x00007ffff75b4560 in g_log () at /usr/lib/libglib-2.0.so.0
#3 0x00007ffff758867d in g_variant_builder_end () at /usr/lib/libglib-2.0.so.0
#4 0x00005555555e4d12 in load_current_ready (self=0x55555579c330, res=0x5555557388e0, ctx=0x5555557d6d80) at mm-iface-modem-firmware.c:84
#5 0x00007ffff778f194 in () at /usr/lib/libgio-2.0.so.0
#6 0x00007ffff778f1c9 in () at /usr/lib/libgio-2.0.so.0
#7 0x00007ffff75c4271 in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0
#8 0x00007ffff75c5f89 in () at /usr/lib/libglib-2.0.so.0
#9 0x00007ffff75c6f62 in g_main_loop_run () at /usr/lib/libglib-2.0.so.0
#10 0x0000555555597aa0 in main (argc=2, argv=0x7fffffffe488) at main.c:181
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
commit 397faef3c5ce ("mm-common-helpers: add mm_autoptr helpers for
GRegex and GMatchInfo") introduces mm_autoptr(), which implements
g_autoptr() that isn't available before glib 2.44. This patch fixes the
code to consistently uses mm_autoptr().
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The standard says a RING or CRING should be emitted whenever the
network sends an incoming call notification, which is nation-specific:
"Interpretation of indications from the network to determine what
constitutes a "ring" is defined by national regulations. This
result code should be repeated each time the network repeats the
incoming call indication." -- ITU-T Rec. V.250, p. 42
On the giffgaff (O2) network in the UK, a SIMCom SIM7100E modem emits
RING indicators every six seconds. The current timeout is only five
seconds resulting in a stream of timed-out ModemManager call objects
whenever there is an incoming call. To fix this, we increase the
timeout to ten seconds.
|
|
|
|
|
|
|
| |
The handler assumes the regex sub-expressions each have the same index
so they need to be within the same set of parentheses rather than each
individually parenthesised. Without this fix, call state changes are
missed.
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
The method on MMBaseCall is send_tone but the D-Bus method call is
SendDtmf. Without this patch, calls return
org.freedesktop.DBus.Error.AccessDenied.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
So that the returned error is much more descriptive.
E.g. instead of this:
$ sudo mmcli -m 0 -e
error: couldn't enable the modem: 'GDBus.Error:org.freedesktop.DBus.Error.UnknownMethod: Method Enable is not implemented on interface org.freedesktop.ModemManager1.Modem'
We'll get this:
$ sudo mmcli -m 0 -e
error: couldn't enable the modem: 'GDBus.Error:org.freedesktop.ModemManager1.Error.Core.WrongState: modem in failed state'
https://gitlab.freedesktop.org/mobile-broadband/ModemManager/issues/96
|
|
|
|
|
|
|
| |
When the MMIfaceModem initialization returns with the SIM_NOT_INSERTED
error, the base logic is already updating the modem failed reason to
SIM_MISSING. There is no need to do that explicitly for the case where
SIM hot swap is supported.
|
|
|
|
|
|
| |
For subclasses of MMBroadbandModemMbim, also apply the same property
defaults. E.g. we want to avoid peridic signal quality polling and we
also want to report that SIM hot swap is supported.
|
|
|
|
|
|
|
|
| |
Even if some fields wouldn't apply to some modem, we're always
including all in the output so that clients can assume the fields are
always given.
Fix adding the 3GPP EPS related fields unconditionally.
|
|
|
|
|
|
|
| |
We use the "LTE attach config" extension defined by Microsoft to update
the initial EPS bearer settings.
https://docs.microsoft.com/en-us/windows-hardware/drivers/network/mb-lte-attach-operations
|
|
|
|
|
|
|
| |
We use the "LTE attach config" extension defined by Microsoft to query
the initial EPS bearer settings.
https://docs.microsoft.com/en-us/windows-hardware/drivers/network/mb-lte-attach-operations
|
|
|
|
|
|
|
| |
We use the "LTE attach status" extension defined by Microsoft to query
and monitor the initial EPS bearer settings.
https://docs.microsoft.com/en-us/windows-hardware/drivers/network/mb-lte-attach-operations
|
| |
|
| |
|
|
|
|
|
| |
This method allows users to modify the settings used during the
initial LTE attach procedure.
|
|
|
|
|
| |
This property shows the settings stored in the device to be used
during the initial LTE attach procedure.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This property contains the DBus path of a Bearer object of type
MM_BEARER_TYPE_DEFAULT_ATTACH, which is automatically exposed by the
modem when registered in the LTE network.
Unlike standard bearer objects created by the user, this bearer won't
allow any connection/disconnection request, as its status is bound to
the LTE registration exclusively.
The bearer settings exposed by the object include the APN details that
have been used during the initial packet network attach, which may be
defined by modem settings (e.g. if previously configured in the
firmware which APN to use for the given SIM card operator) or by the
network itself (e.g. if none configured, or if a network override is
required as when roaming).
The bearer object will be created as soon as the LTE attach status
details are known, and only while the modem is enabled. The
implementation allows modems to update the LTE attach status details
during runtime, so the bearer object with the settings may be
recreated during runtime as well.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Until now we have only allowed to use and setup 'default bearers' (in
4G) or 'primary contexts' (in 2G/3G).
We can define a couple of additional bearer types, though:
* The 'dedicated bearers' (in 4G) or 'secondary contexts' (in 2G/3G),
which are associated to a specific default/primary one, but which
provide specific QoS settings configured via traffic flow templates.
* The 'initial default EPS bearer', which is a special case of default
bearer in LTE, which is automatically created and connected when the
modem is registered in the LTE network.
This commit introduces a new 'MMBearerType' enumeration that will be
associated to each bearer through a 'BearerType' property in the
org.freedesktop.ModemManager1.Bearer interface, showing what kind of
bearer/context this is.
By default, right now, all bearer objects created are 'default'
bearers.
|
|
|
|
| |
The reporting of the operation result was reversed in the async method.
|
|
|
|
| |
The reporting of the operation result was reversed in the async method.
|
|
|
|
| |
Alias them to g_autoptr() on glib >= 2.44, otherwise re-implement.
|
| |
|
|
|
|
|
|
| |
This string shows the runtime version of the ModemManager daemon.
https://gitlab.freedesktop.org/mobile-broadband/ModemManager/issues/94
|
|
|
|
|
|
|
|
|
| |
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"...
|
|
|
|
|
|
|
|
|
| |
Looks like the original band 6 mapping was ok, and the mismatch was
introduced when adding support for band 19.
https://forum.sierrawireless.com/t/utran-19-band-configuration-in-sdk/14625
Fixes 518d62e731534cb4834a10e86f32ee31300de98b.
|
|
|
|
|
|
|
|
| |
This patch fixes the following compiler warning:
mmcli-output.c:783:19: error: implicitly declaring library function 'strlen' with type 'unsigned long (const char *)' [-Werror,-Wimplicit-function-declaration]
aux = strlen (section_infos[field_infos[item_l->field].section].name);
^
|
|
|
|
|
|
|
|
| |
This patch fixes the following issue with string conversion of a MMCallStateReason enum:
mmcli-call.c:160:88: error: implicit conversion from enumeration type 'MMCallStateReason' to different enumeration type 'MMCallState' [-Werror,-Wenum-conversion]
mmcli_output_string (MMC_F_CALL_PROPERTIES_STATE_REASON, mm_call_state_get_string (mm_call_get_state_reason (call)));
~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
| |
In addition to the standard human-friendly output, we now allow a
machine-friendly key-value pair output, much easier to parse and use
by programs that look at the mmcli output.
This new key-value pair output should be treated as API from now on, so
third-party programs can assume the output is compatible from one
release to another.
|
|
|
|
|
|
|
| |
The --location-get action provides full location information from all
sources, which is better than per-source actions, as those were anyway
using the same API method to load location information as the global
one.
|
|
|
|
|
|
|
|
| |
The Simple.GetStatus() method is useful for simple DBus clients that
don't need all the information associated to the modem, just the most
important bits. But, in our case, the information provided by this
method is already given by the standard modem info output, so it is
totally redundant.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This method is completely unnecessary as we have the readable Bearers
property already in place, so let's deprecate it.
Worth noting that the mm_modem_list_bearers() async/sync methods in
libmm-glib were not really using the ListBearers() method anyway, they
are using the property directly. These methods are NOT deprecated,
because they allow us to get a list of MMBearer objects, instead of
just the list of DBus paths that we get when reading the Bearers
property directly.
We also remove --list-bearers from the mmcli operation list as we have
already the same information in the standard modem output.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The +CGEV indications allow us to get notified of packet domain
events like network-initiated or ME-initiated disconnections on
specific connected contexts, as well as full PS detach events (all
contexts disconnected). If the modem supports these indications, we
will enable them with +CGEREP and will then process them when they are
emitted by the modem.
If a full PS detach event happens, we will explicitly disconnect all
connected bearers.
If a deactivation inidication is received for a single context, we
will look for the associated bearer by CID and explicitly disconnect
it.
|
|
|
|
| |
Each group of items should have a separator.
|
|
|
|
|
|
|
|
| |
At this point we want the values enclosed between single quotes,
e.g. so that the fields are parsed easier by scripts.
This issue will not have any practical relevance as soon as the
key-value pair output support is merged.
|
|
|
|
|
|
|
|
| |
This port was ignored because it was non-functional in early
development firmware images, and made device probing very slow.
This has been solved in the first production images of the DW5821e
module.
|
| |
|
| |
|
|
|
|
| |
To avoid gtk-doc complaining about that.
|
| |
|
| |
|
|
|
|
|
|
| |
g_assert_cmpmem() isn't available until glib 2.46, while the minimum
glib version required by ModemManager is 2.36. This patch replaces the
uses of g_assert_cmpmem() with memcmp() instead.
|