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
This commit is contained in:
Aleksander Morgado
2019-10-11 09:24:22 +00:00
parent feb6c8264a
commit c98a1a9dc8
3 changed files with 6 additions and 3 deletions
@@ -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);
}
@@ -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);
}
+4 -3
View File
@@ -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)