diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2019-09-16 17:41:42 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2019-10-11 09:24:22 +0000 |
commit | c98a1a9dc8e02b78ae23de354f441270dfb394c1 (patch) | |
tree | 9cbde13c91169aa9f58bdc03398ada5123939aaa | |
parent | feb6c8264a0b1bb4c68a5dd6cd115b665b982392 (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.c | 1 | ||||
-rw-r--r-- | plugins/simtech/mm-broadband-modem-simtech.c | 1 | ||||
-rw-r--r-- | src/mm-broadband-modem.c | 7 |
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) |