aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2019-09-16 17:41:42 +0200
committerAleksander Morgado <aleksander@aleksander.es>2019-10-11 09:24:22 +0000
commitc98a1a9dc8e02b78ae23de354f441270dfb394c1 (patch)
tree9cbde13c91169aa9f58bdc03398ada5123939aaa
parentfeb6c8264a0b1bb4c68a5dd6cd115b665b982392 (diff)
simtech: disable CMER/CIND support explicitly
The logic to setup the generic +CIND indications in the SIM7600E seems to end up breaking connectivity when in TTY+PPP mode. If we issue the AT+CMER=3,0,0,1 command, this will end up in the modem not replying a correct CONNECT response to the ATD command. Let's disable these +CIND indications completely in the simtech plugin, as there is even no AT command reference saying those are supported. Fixes https://gitlab.freedesktop.org/mobile-broadband/ModemManager/issues/144
-rw-r--r--plugins/simtech/mm-broadband-modem-qmi-simtech.c1
-rw-r--r--plugins/simtech/mm-broadband-modem-simtech.c1
-rw-r--r--src/mm-broadband-modem.c7
3 files changed, 6 insertions, 3 deletions
diff --git a/plugins/simtech/mm-broadband-modem-qmi-simtech.c b/plugins/simtech/mm-broadband-modem-qmi-simtech.c
index 0b05e66d..c6ca6b5a 100644
--- a/plugins/simtech/mm-broadband-modem-qmi-simtech.c
+++ b/plugins/simtech/mm-broadband-modem-qmi-simtech.c
@@ -52,6 +52,7 @@ mm_broadband_modem_qmi_simtech_new (const gchar *device,
MM_BASE_MODEM_PLUGIN, plugin,
MM_BASE_MODEM_VENDOR_ID, vendor_id,
MM_BASE_MODEM_PRODUCT_ID, product_id,
+ MM_BROADBAND_MODEM_INDICATORS_DISABLED, TRUE,
NULL);
}
diff --git a/plugins/simtech/mm-broadband-modem-simtech.c b/plugins/simtech/mm-broadband-modem-simtech.c
index 4294538d..1a280f71 100644
--- a/plugins/simtech/mm-broadband-modem-simtech.c
+++ b/plugins/simtech/mm-broadband-modem-simtech.c
@@ -826,6 +826,7 @@ mm_broadband_modem_simtech_new (const gchar *device,
MM_BASE_MODEM_PLUGIN, plugin,
MM_BASE_MODEM_VENDOR_ID, vendor_id,
MM_BASE_MODEM_PRODUCT_ID, product_id,
+ MM_BROADBAND_MODEM_INDICATORS_DISABLED, TRUE,
NULL);
}
diff --git a/src/mm-broadband-modem.c b/src/mm-broadband-modem.c
index 173c601a..0afca140 100644
--- a/src/mm-broadband-modem.c
+++ b/src/mm-broadband-modem.c
@@ -2207,7 +2207,8 @@ modem_load_signal_quality (MMIfaceModem *_self,
/* Check whether we can get a non-connected AT port */
ctx->at_port = (MMPortSerial *)mm_base_modem_get_best_at_port (MM_BASE_MODEM (self), &error);
if (ctx->at_port) {
- if (self->priv->modem_cind_supported &&
+ if (!self->priv->modem_cind_disabled &&
+ self->priv->modem_cind_supported &&
CIND_INDICATOR_IS_VALID (self->priv->modem_cind_indicator_signal_quality))
signal_quality_cind (task);
else
@@ -3189,7 +3190,7 @@ check_and_setup_3gpp_urc_support (GTask *task)
self = g_task_get_source_object (task);
/* Check support for +CIEV indications, managed with +CIND/+CMER */
- if (!self->priv->modem_cind_support_checked) {
+ if (!self->priv->modem_cind_disabled && !self->priv->modem_cind_support_checked) {
mm_dbg ("Checking indicator support...");
self->priv->modem_cind_support_checked = TRUE;
mm_base_modem_at_command (MM_BASE_MODEM (self),
@@ -3238,7 +3239,7 @@ modem_3gpp_cleanup_unsolicited_events (MMIfaceModem3gpp *_self,
task = g_task_new (self, NULL, callback, user_data);
- if (self->priv->modem_cind_support_checked && self->priv->modem_cind_supported)
+ if (!self->priv->modem_cind_disabled && self->priv->modem_cind_support_checked && self->priv->modem_cind_supported)
set_ciev_unsolicited_events_handlers (self, FALSE);
if (self->priv->modem_cgerep_supported)