All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] quectel: detect missing sim-cards
@ 2019-08-12 20:50 Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
  2019-09-02 21:16 ` [PATCHv2] quectel: handle sim states Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
  2019-09-02 21:17 ` [PATCHv2] quectel: swap cmuxed ports Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
  0 siblings, 2 replies; 15+ messages in thread
From: Martin =?unknown-8bit?q?Hundeb=C3=B8ll?= @ 2019-08-12 20:50 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 5341 bytes --]

The unsolicited +CPIN: NOT INSERTED is lost on the M95 and MC60 modems
during CMUX setup, and the CPIN? query responds with an unhandled
CME ERROR: 10.

Use at_util_sim_state_query_new() to detect SIM presence/pin-state
during power-on. (M95 / MC60 don't support hotplug of sim card).
---

Philip: This patch removes the CFUN? query that is apparently needed for
UC15 modems, but I don't have such a modem to test on. Are you still
working with this and can you test this?

 plugins/quectel.c | 90 ++++++-----------------------------------------
 1 file changed, 11 insertions(+), 79 deletions(-)

diff --git a/plugins/quectel.c b/plugins/quectel.c
index bddf6a17..741aced6 100644
--- a/plugins/quectel.c
+++ b/plugins/quectel.c
@@ -59,7 +59,6 @@
 #include <drivers/atmodem/vendor.h>
 
 static const char *cfun_prefix[] = { "+CFUN:", NULL };
-static const char *cpin_prefix[] = { "+CPIN:", NULL };
 static const char *cbc_prefix[] = { "+CBC:", NULL };
 static const char *qinistat_prefix[] = { "+QINISTAT:", NULL };
 static const char *cgmm_prefix[] = { "UC15", "Quectel_M95", "Quectel_MC60",
@@ -87,12 +86,12 @@ enum quectel_model {
 struct quectel_data {
 	GAtChat *modem;
 	GAtChat *aux;
-	guint cpin_ready;
 	guint call_ready;
 	bool have_sim;
 	enum ofono_vendor vendor;
 	enum quectel_model model;
 	struct l_timeout *sms_ready_timer;
+	struct at_util_sim_state_query *sim_state_query;
 
 	/* used by quectel uart driver */
 	GAtChat *uart;
@@ -182,9 +181,6 @@ static void quectel_remove(struct ofono_modem *modem)
 
 	DBG("%p", modem);
 
-	if (data->cpin_ready != 0)
-		g_at_chat_unregister(data->aux, data->cpin_ready);
-
 	ofono_modem_set_data(modem, NULL);
 	l_gpio_writer_free(data->gpio);
 	g_at_chat_unref(data->aux);
@@ -523,68 +519,25 @@ static void dbus_hw_enable(struct ofono_modem *modem)
 	ofono_modem_add_interface(modem, dbus_hw_interface);
 }
 
-static void cpin_notify(GAtResult *result, gpointer user_data)
+static void sim_state_cb(gboolean present, gpointer user_data)
 {
 	struct ofono_modem *modem = user_data;
 	struct quectel_data *data = ofono_modem_get_data(modem);
-	const char *sim_inserted;
-	GAtResultIter iter;
 
 	DBG("%p", modem);
 
-	g_at_result_iter_init(&iter, result);
-
-	if (!g_at_result_iter_next(&iter, "+CPIN:"))
-		return;
-
-	g_at_result_iter_next_unquoted_string(&iter, &sim_inserted);
-
-	if (g_strcmp0(sim_inserted, "NOT INSERTED") != 0)
-		data->have_sim = true;
-
-	ofono_modem_set_powered(modem, TRUE);
-
-	/* Turn off the radio. */
-	g_at_chat_send(data->aux, "AT+CFUN=4", none_prefix, NULL, NULL, NULL);
-
-	g_at_chat_unregister(data->aux, data->cpin_ready);
-	data->cpin_ready = 0;
+	if (!present)
+		ofono_warn("%s sim not present", ofono_modem_get_path(modem));
 
+	data->have_sim = present;
 	dbus_hw_enable(modem);
+	ofono_modem_set_powered(modem, TRUE);
 }
 
-static void cpin_query(gboolean ok, GAtResult *result, gpointer user_data)
-{
-	DBG("%p ok %d", user_data, ok);
-
-	if (ok)
-		cpin_notify(result, user_data);
-}
-
-static void cfun_enable(gboolean ok, GAtResult *result, gpointer user_data)
-{
-	struct ofono_modem *modem = user_data;
-	struct quectel_data *data = ofono_modem_get_data(modem);
-
-	DBG("%p ok %d", modem, ok);
-
-	if (!ok) {
-		close_serial(modem);
-		return;
-	}
-
-	data->cpin_ready = g_at_chat_register(data->aux, "+CPIN", cpin_notify,
-						FALSE, modem, NULL);
-	g_at_chat_send(data->aux, "AT+CPIN?", cpin_prefix, cpin_query, modem,
-			NULL);
-}
-
-static void cfun_query(gboolean ok, GAtResult *result, gpointer user_data)
+static void cfun_cb(gboolean ok, GAtResult *result, gpointer user_data)
 {
 	struct ofono_modem *modem = user_data;
 	struct quectel_data *data = ofono_modem_get_data(modem);
-	GAtResultIter iter;
-	int cfun;
 
 	DBG("%p ok %d", modem, ok);
 
@@ -593,30 +546,9 @@ static void cfun_query(gboolean ok, GAtResult *result, gpointer user_data)
 		return;
 	}
 
-	g_at_result_iter_init(&iter, result);
-
-	if (g_at_result_iter_next(&iter, "+CFUN:") == FALSE) {
-		close_serial(modem);
-		return;
-	}
-
-	g_at_result_iter_next_number(&iter, &cfun);
-
-	/*
-	 * The modem firmware powers up in CFUN=1 but will respond to AT+CFUN=4
-	 * with ERROR until some amount of time (which varies with temperature)
-	 * passes.  Empirical evidence suggests that the firmware will report an
-	 * unsolicited +CPIN: notification when it is ready to be useful.
-	 *
-	 * Work around this feature by only transitioning to CFUN=4 if the
-	 * modem is not in CFUN=1 or until after we've received an unsolicited
-	 * +CPIN: notification.
-	 */
-	if (cfun != 1)
-		g_at_chat_send(data->aux, "AT+CFUN=4", none_prefix, cfun_enable,
-				modem, NULL);
-	else
-		cfun_enable(TRUE, NULL, modem);
+	data->sim_state_query = at_util_sim_state_query_new(data->aux, 2, 20,
+								sim_state_cb,
+								modem, NULL);
 }
 
 static void cgmm_cb(int ok, GAtResult *result, void *user_data)
@@ -651,7 +583,7 @@ static void cgmm_cb(int ok, GAtResult *result, void *user_data)
 		data->model = QUECTEL_UNKNOWN;
 	}
 
-	g_at_chat_send(data->aux, "AT+CFUN?", cfun_prefix, cfun_query, modem,
+	g_at_chat_send(data->aux, "AT+CFUN=4", none_prefix, cfun_cb, modem,
 			NULL);
 }
 
-- 
2.22.0


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCHv2] quectel: handle sim states
  2019-08-12 20:50 [PATCH] quectel: detect missing sim-cards Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
@ 2019-09-02 21:16 ` Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
  2019-09-02 21:37   ` Denis Kenzior
  2019-09-05 10:33   ` [PATCHv3] " Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
  2019-09-02 21:17 ` [PATCHv2] quectel: swap cmuxed ports Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
  1 sibling, 2 replies; 15+ messages in thread
From: Martin =?unknown-8bit?q?Hundeb=C3=B8ll?= @ 2019-09-02 21:16 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 11388 bytes --]

The quectel M95 and MC60 modems are picky about when the sim is properly
initialized, so the logic to detect this needs to be in the quectel
plugin.

After doing basic initialization, a CPIN query is issued to detect sim
state.

If the sim is unlocked and ready, a timer is created to wait for the
modem state (AT+QINISTAT) to complete. At this point ofono is notified
about the initialized sim.

If the sim is locked, a listener for "+CPIN: READY" is set up to
know when a pin is entered. Once the indication is received, the timer
is set up as if the sim was unlocked from the beginning.

If the sim is busy/resetting, the CPIN query is issued again.
---

Changes since v1:
 * New implementation without at_util_sim_state_query_new()
 * Tested on Quectel UC15
 * Delays basic SIM initialization until QINISTAT is correct

 plugins/quectel.c | 281 ++++++++++++++++++++++++++++++----------------
 1 file changed, 182 insertions(+), 99 deletions(-)

diff --git a/plugins/quectel.c b/plugins/quectel.c
index ccfc6c5f..b9c2d911 100644
--- a/plugins/quectel.c
+++ b/plugins/quectel.c
@@ -87,12 +87,11 @@ enum quectel_model {
 struct quectel_data {
 	GAtChat *modem;
 	GAtChat *aux;
-	guint cpin_ready;
-	guint call_ready;
-	bool have_sim;
 	enum ofono_vendor vendor;
 	enum quectel_model model;
-	struct l_timeout *sms_ready_timer;
+	struct ofono_sim *sim;
+	enum ofono_sim_state sim_state;
+	unsigned int sim_watch;
 
 	/* used by quectel uart driver */
 	GAtChat *uart;
@@ -185,9 +184,6 @@ static void quectel_remove(struct ofono_modem *modem)
 
 	DBG("%p", modem);
 
-	if (data->cpin_ready != 0)
-		g_at_chat_unregister(data->aux, data->cpin_ready);
-
 	ofono_modem_set_data(modem, NULL);
 	l_timeout_remove(data->init_timeout);
 	l_gpio_writer_free(data->gpio);
@@ -527,42 +523,203 @@ static void dbus_hw_enable(struct ofono_modem *modem)
 	ofono_modem_add_interface(modem, dbus_hw_interface);
 }
 
-static void cpin_notify(GAtResult *result, gpointer user_data)
+static void qinistat_cb(gboolean ok, GAtResult *result, gpointer user_data)
 {
 	struct ofono_modem *modem = user_data;
 	struct quectel_data *data = ofono_modem_get_data(modem);
-	const char *sim_inserted;
 	GAtResultIter iter;
+	int ready = 0;
+	int status;
 
 	DBG("%p", modem);
 
 	g_at_result_iter_init(&iter, result);
 
-	if (!g_at_result_iter_next(&iter, "+CPIN:"))
+	if (!g_at_result_iter_next(&iter, "+QINISTAT:"))
+		return;
+
+	if (!g_at_result_iter_next_number(&iter, &status))
 		return;
 
-	g_at_result_iter_next_unquoted_string(&iter, &sim_inserted);
+	DBG("qinistat: %d", status);
+
+	switch (data->model) {
+	case QUECTEL_UC15:
+		/* UC15 uses a bitmap of 1 + 2 + 4 = 7 */
+		ready = 7;
+		break;
+	case QUECTEL_M95:
+	case QUECTEL_MC60:
+		/* M95 and MC60 uses a counter to 3 */
+		ready = 3;
+		break;
+	case QUECTEL_UNKNOWN:
+		ready = 0;
+		break;
+	}
+
+	if (status != ready) {
+		l_timeout_modify_ms(data->init_timeout, 500);
+		return;
+	}
 
-	if (g_strcmp0(sim_inserted, "NOT INSERTED") != 0)
-		data->have_sim = true;
+	l_timeout_remove(data->init_timeout);
+	data->init_timeout = NULL;
 
-	ofono_modem_set_powered(modem, TRUE);
+	if (data->sim_state == OFONO_SIM_STATE_READY) {
+		/*
+		 * when initializing with a non-locked sim card, the sim atom
+		 * isn't created until now to avoid accessing it before the
+		 * modem is ready.
+		 *
+		 * call ofono_modem_set_powered() to make ofono call
+		 * quectel_pre_sim() where the sim atom is created. Then signal
+		 * the inserted state.
+		 */
+		ofono_modem_set_powered(modem, true);
+		ofono_sim_inserted_notify(data->sim, true);
+	} else {
+		/*
+		 * When initialized with a locked sim card, the modem is already
+		 * powered up, and the inserted signal has been sent to allow
+		 * the pin to be entered. So simply update the state, and notify
+		 * about the finished initialization below.
+		 */
+		data->sim_state = OFONO_SIM_STATE_READY;
+	}
 
-	/* Turn off the radio. */
-	g_at_chat_send(data->aux, "AT+CFUN=4", none_prefix, NULL, NULL, NULL);
+	ofono_sim_initialized_notify(data->sim);
+	ofono_sms_create(modem, data->vendor, "atmodem", data->aux);
+	ofono_phonebook_create(modem, data->vendor, "atmodem", data->aux);
+	ofono_voicecall_create(modem, data->vendor, "atmodem", data->aux);
+	ofono_call_volume_create(modem, data->vendor, "atmodem", data->aux);
+}
 
-	g_at_chat_unregister(data->aux, data->cpin_ready);
-	data->cpin_ready = 0;
+static void init_timer_cb(struct l_timeout *timeout, void *user_data)
+{
+	struct ofono_modem *modem = user_data;
+	struct quectel_data *data = ofono_modem_get_data(modem);
 
-	dbus_hw_enable(modem);
+	DBG("%p", modem);
+
+	g_at_chat_send(data->aux, "AT+QINISTAT", qinistat_prefix, qinistat_cb,
+			modem, NULL);
+}
+
+static void sim_watch_cb(GAtResult *result, void *user_data)
+{
+	struct ofono_modem *modem = user_data;
+	struct quectel_data *data = ofono_modem_get_data(modem);
+
+	DBG("%p", modem);
+
+	g_at_chat_unregister(data->aux, data->sim_watch);
+	data->sim_watch = 0;
+
+	data->init_timeout = l_timeout_create_ms(500, init_timer_cb, modem, NULL);
+	if (!data->init_timeout) {
+		close_serial(modem);
+		return;
+	}
+}
+
+static enum ofono_sim_state cme_parse(GAtResult *result)
+{
+	struct ofono_error error;
+
+	decode_at_error(&error, g_at_result_final_response(result));
+
+	if (error.type != OFONO_ERROR_TYPE_CME)
+		return OFONO_SIM_STATE_RESETTING;
+
+	switch (error.error) {
+	case 5:
+	case 6:
+	case 7:
+	case 11:
+	case 12:
+	case 17:
+	case 18:
+		return OFONO_SIM_STATE_LOCKED_OUT;
+	case 10:
+		return OFONO_SIM_STATE_NOT_PRESENT;
+	case 13:
+	case 14:
+	case 15:
+		return OFONO_SIM_STATE_RESETTING;
+	default:
+		ofono_error("unknown cpin error: %i", error.error);
+		return OFONO_SIM_STATE_RESETTING;
+	}
+}
+
+static enum ofono_sim_state cpin_parse(GAtResult *result)
+{
+	GAtResultIter iter;
+	const char *cpin;
+
+	g_at_result_iter_init(&iter, result);
+
+	if (!g_at_result_iter_next(&iter, "+CPIN:"))
+		return OFONO_SIM_STATE_RESETTING;
+
+	g_at_result_iter_next_unquoted_string(&iter, &cpin);
+
+	if (g_strcmp0(cpin, "NOT INSERTED") == 0)
+		return OFONO_SIM_STATE_NOT_PRESENT;
+
+	if (g_strcmp0(cpin, "READY") == 0)
+		return OFONO_SIM_STATE_READY;
+
+	return OFONO_SIM_STATE_LOCKED_OUT;
 }
 
 static void cpin_query(gboolean ok, GAtResult *result, gpointer user_data)
 {
-	DBG("%p ok %d", user_data, ok);
+	struct ofono_modem *modem = user_data;
+	struct quectel_data *data = ofono_modem_get_data(modem);
+
+	DBG("%p ok %i", modem, ok);
 
 	if (ok)
-		cpin_notify(result, user_data);
+		data->sim_state = cpin_parse(result);
+	else
+		data->sim_state = cme_parse(result);
+
+	/* Turn off the radio. */
+	g_at_chat_send(data->aux, "AT+CFUN=4", none_prefix, NULL, NULL, NULL);
+
+	switch (data->sim_state) {
+	case OFONO_SIM_STATE_LOCKED_OUT:
+		ofono_modem_set_powered(modem, true);
+		ofono_sim_inserted_notify(data->sim, true);
+		data->sim_watch = g_at_chat_register(data->aux, "+CPIN: READY",
+							sim_watch_cb, FALSE,
+							modem, NULL);
+		if (!data->sim_watch) {
+			ofono_error("failed to create sim watch");
+			close_serial(modem);
+			return;
+		}
+		break;
+	case OFONO_SIM_STATE_READY:
+		data->init_timeout = l_timeout_create_ms(500, init_timer_cb,
+							modem, NULL);
+		if (!data->init_timeout) {
+			ofono_error("failed to create qinitstat timer");
+			close_serial(modem);
+			return;
+		}
+		break;
+	case OFONO_SIM_STATE_RESETTING:
+	case OFONO_SIM_STATE_INSERTED:
+		g_at_chat_send(data->aux, "AT+CPIN?", cpin_prefix, cpin_query,
+				modem, NULL);
+		break;
+	case OFONO_SIM_STATE_NOT_PRESENT:
+		ofono_warn("%s: sim not present", ofono_modem_get_path(modem));
+		ofono_modem_set_powered(modem, true);
+	}
 }
 
 static void cfun_enable(gboolean ok, GAtResult *result, gpointer user_data)
@@ -577,8 +734,8 @@ static void cfun_enable(gboolean ok, GAtResult *result, gpointer user_data)
 		return;
 	}
 
-	data->cpin_ready = g_at_chat_register(data->aux, "+CPIN", cpin_notify,
-						FALSE, modem, NULL);
+	dbus_hw_enable(modem);
+
 	g_at_chat_send(data->aux, "AT+CPIN?", cpin_prefix, cpin_query, modem,
 			NULL);
 }
@@ -659,67 +816,6 @@ static void cgmm_cb(int ok, GAtResult *result, void *user_data)
 			NULL);
 }
 
-static void qinistat_cb(gboolean ok, GAtResult *result, gpointer user_data)
-{
-	struct ofono_modem *modem = user_data;
-	struct quectel_data *data = ofono_modem_get_data(modem);
-	GAtResultIter iter;
-	int status;
-
-	DBG("%p", modem);
-
-	g_at_result_iter_init(&iter, result);
-
-	if (!g_at_result_iter_next(&iter, "+QINISTAT:"))
-		return;
-
-	if (!g_at_result_iter_next_number(&iter, &status))
-		return;
-
-	DBG("qinistat: %d", status);
-
-	if (status != 3) {
-		l_timeout_modify_ms(data->sms_ready_timer, 500);
-		return;
-	}
-
-	ofono_sms_create(modem, data->vendor, "atmodem", data->aux);
-	l_timeout_remove(data->sms_ready_timer);
-	data->sms_ready_timer = NULL;
-}
-
-static void sms_ready_cb(struct l_timeout *timeout, void *user_data)
-{
-	struct ofono_modem *modem = user_data;
-	struct quectel_data *data = ofono_modem_get_data(modem);
-
-	DBG("%p", modem);
-
-	g_at_chat_send(data->aux, "AT+QINISTAT", qinistat_prefix, qinistat_cb,
-			modem, NULL);
-}
-
-static void call_ready_notify(GAtResult *result, void *user_data)
-{
-	struct ofono_modem *modem = user_data;
-	struct quectel_data *data = ofono_modem_get_data(modem);
-
-	DBG("%p", modem);
-
-	g_at_chat_unregister(data->aux, data->call_ready);
-	data->call_ready = 0;
-	data->sms_ready_timer = l_timeout_create_ms(500, sms_ready_cb, modem,
-							NULL);
-	if (!data->sms_ready_timer) {
-		close_serial(modem);
-		return;
-	}
-
-	ofono_phonebook_create(modem, 0, "atmodem", data->aux);
-	ofono_voicecall_create(modem, 0, "atmodem", data->aux);
-	ofono_call_volume_create(modem, 0, "atmodem", data->aux);
-}
-
 static int open_ttys(struct ofono_modem *modem)
 {
 	struct quectel_data *data = ofono_modem_get_data(modem);
@@ -739,19 +835,9 @@ static int open_ttys(struct ofono_modem *modem)
 		return -EIO;
 	}
 
-	data->call_ready = g_at_chat_register(data->aux, "Call Ready",
-						call_ready_notify, false,
-						modem, NULL);
-	if (!data->call_ready) {
-		close_serial(modem);
-		return -ENOTTY;
-	}
-
 	g_at_chat_set_slave(data->modem, data->aux);
 
-	g_at_chat_send(data->modem, "ATE0; &C0; +CMEE=1", none_prefix, NULL,
-			NULL, NULL);
-	g_at_chat_send(data->aux, "ATE0; &C0; +CMEE=1", none_prefix, NULL, NULL,
+	g_at_chat_send(data->aux, "ATE0; &C0; +CMEE=1; +QIURC=0", none_prefix, NULL, NULL,
 			NULL);
 	g_at_chat_send(data->aux, "AT+CGMM", cgmm_prefix, cgmm_cb, modem,
 			NULL);
@@ -1048,10 +1134,7 @@ static void quectel_pre_sim(struct ofono_modem *modem)
 	DBG("%p", modem);
 
 	ofono_devinfo_create(modem, 0, "atmodem", data->aux);
-	sim = ofono_sim_create(modem, data->vendor, "atmodem", data->aux);
-
-	if (sim && data->have_sim == true)
-		ofono_sim_inserted_notify(sim, TRUE);
+	data->sim = ofono_sim_create(modem, data->vendor, "atmodem", data->aux);
 }
 
 static void quectel_post_sim(struct ofono_modem *modem)
-- 
2.22.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCHv2] quectel: swap cmuxed ports
  2019-08-12 20:50 [PATCH] quectel: detect missing sim-cards Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
  2019-09-02 21:16 ` [PATCHv2] quectel: handle sim states Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
@ 2019-09-02 21:17 ` Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
  2019-09-02 21:22   ` Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
  2019-09-02 21:27   ` Denis Kenzior
  1 sibling, 2 replies; 15+ messages in thread
From: Martin =?unknown-8bit?q?Hundeb=C3=B8ll?= @ 2019-09-02 21:17 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 1006 bytes --]

According to the manual, when using CMUX on the UC15, it outputs
unsolicited indications on port 2 (i.e. /dev/gsmtty2), so the quectel
plugin must use this when registering for such.
---
 plugins/quectel.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/plugins/quectel.c b/plugins/quectel.c
index ccfc6c5f..dea23bdd 100644
--- a/plugins/quectel.c
+++ b/plugins/quectel.c
@@ -849,8 +849,8 @@ static void cmux_cb(gboolean ok, GAtResult *result, gpointer user_data)
 	 * the kernel does not yet support mapping the underlying serial device
 	 * to its virtual gsm ttys, so hard-code gsmtty1 gsmtty2 for now
 	 */
-	ofono_modem_set_string(modem, "Aux", "/dev/gsmtty1");
-	ofono_modem_set_string(modem, "Modem", "/dev/gsmtty2");
+	ofono_modem_set_string(modem, "Modem", "/dev/gsmtty1");
+	ofono_modem_set_string(modem, "Aux", "/dev/gsmtty2");
 
 	/* wait for gsmtty devices to appear */
 	if (!l_timeout_create_ms(100, mux_ready_cb, modem, NULL)) {
-- 
2.22.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [PATCHv2] quectel: swap cmuxed ports
  2019-09-02 21:17 ` [PATCHv2] quectel: swap cmuxed ports Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
@ 2019-09-02 21:22   ` Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
  2019-09-02 21:27   ` Denis Kenzior
  1 sibling, 0 replies; 15+ messages in thread
From: Martin =?unknown-8bit?q?Hundeb=C3=B8ll?= @ 2019-09-02 21:22 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 343 bytes --]

On 02/09/2019 23.17, Martin Hundebøll wrote:
> According to the manual, when using CMUX on the UC15, it outputs
> unsolicited indications on port 2 (i.e. /dev/gsmtty2), so the quectel
> plugin must use this when registering for such.

Sorry, this should have been a separate patch instead of a v2 reply to 
the sim patch.

// martin

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCHv2] quectel: swap cmuxed ports
  2019-09-02 21:17 ` [PATCHv2] quectel: swap cmuxed ports Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
  2019-09-02 21:22   ` Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
@ 2019-09-02 21:27   ` Denis Kenzior
  1 sibling, 0 replies; 15+ messages in thread
From: Denis Kenzior @ 2019-09-02 21:27 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 389 bytes --]

Hi Martin,

On 9/2/19 4:17 PM, Martin Hundebøll wrote:
> According to the manual, when using CMUX on the UC15, it outputs
> unsolicited indications on port 2 (i.e. /dev/gsmtty2), so the quectel
> plugin must use this when registering for such.
> ---
>   plugins/quectel.c | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
> 

Applied, thanks.

Regards,
-Denis


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCHv2] quectel: handle sim states
  2019-09-02 21:16 ` [PATCHv2] quectel: handle sim states Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
@ 2019-09-02 21:37   ` Denis Kenzior
  2019-09-05 10:33   ` [PATCHv3] " Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
  1 sibling, 0 replies; 15+ messages in thread
From: Denis Kenzior @ 2019-09-02 21:37 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 12698 bytes --]

Hi Martin,

On 9/2/19 4:16 PM, Martin Hundebøll wrote:
> The quectel M95 and MC60 modems are picky about when the sim is properly
> initialized, so the logic to detect this needs to be in the quectel
> plugin.
> 
> After doing basic initialization, a CPIN query is issued to detect sim
> state.
> 
> If the sim is unlocked and ready, a timer is created to wait for the
> modem state (AT+QINISTAT) to complete. At this point ofono is notified
> about the initialized sim.
> 
> If the sim is locked, a listener for "+CPIN: READY" is set up to
> know when a pin is entered. Once the indication is received, the timer
> is set up as if the sim was unlocked from the beginning.
> 
> If the sim is busy/resetting, the CPIN query is issued again.
> ---
> 
> Changes since v1:
>   * New implementation without at_util_sim_state_query_new()
>   * Tested on Quectel UC15
>   * Delays basic SIM initialization until QINISTAT is correct
> 
>   plugins/quectel.c | 281 ++++++++++++++++++++++++++++++----------------
>   1 file changed, 182 insertions(+), 99 deletions(-)
> 
> diff --git a/plugins/quectel.c b/plugins/quectel.c
> index ccfc6c5f..b9c2d911 100644
> --- a/plugins/quectel.c
> +++ b/plugins/quectel.c
> @@ -87,12 +87,11 @@ enum quectel_model {
>   struct quectel_data {
>   	GAtChat *modem;
>   	GAtChat *aux;
> -	guint cpin_ready;
> -	guint call_ready;
> -	bool have_sim;
>   	enum ofono_vendor vendor;
>   	enum quectel_model model;
> -	struct l_timeout *sms_ready_timer;
> +	struct ofono_sim *sim;
> +	enum ofono_sim_state sim_state;
> +	unsigned int sim_watch;
>   
>   	/* used by quectel uart driver */
>   	GAtChat *uart;
> @@ -185,9 +184,6 @@ static void quectel_remove(struct ofono_modem *modem)
>   
>   	DBG("%p", modem);
>   
> -	if (data->cpin_ready != 0)
> -		g_at_chat_unregister(data->aux, data->cpin_ready);
> -
>   	ofono_modem_set_data(modem, NULL);
>   	l_timeout_remove(data->init_timeout);
>   	l_gpio_writer_free(data->gpio);
> @@ -527,42 +523,203 @@ static void dbus_hw_enable(struct ofono_modem *modem)
>   	ofono_modem_add_interface(modem, dbus_hw_interface);
>   }
>   
> -static void cpin_notify(GAtResult *result, gpointer user_data)
> +static void qinistat_cb(gboolean ok, GAtResult *result, gpointer user_data)
>   {
>   	struct ofono_modem *modem = user_data;
>   	struct quectel_data *data = ofono_modem_get_data(modem);
> -	const char *sim_inserted;
>   	GAtResultIter iter;
> +	int ready = 0;
> +	int status;
>   
>   	DBG("%p", modem);
>   
>   	g_at_result_iter_init(&iter, result);
>   
> -	if (!g_at_result_iter_next(&iter, "+CPIN:"))
> +	if (!g_at_result_iter_next(&iter, "+QINISTAT:"))
> +		return;
> +
> +	if (!g_at_result_iter_next_number(&iter, &status))
>   		return;
>   
> -	g_at_result_iter_next_unquoted_string(&iter, &sim_inserted);
> +	DBG("qinistat: %d", status);
> +
> +	switch (data->model) {
> +	case QUECTEL_UC15:
> +		/* UC15 uses a bitmap of 1 + 2 + 4 = 7 */
> +		ready = 7;
> +		break;
> +	case QUECTEL_M95:
> +	case QUECTEL_MC60:
> +		/* M95 and MC60 uses a counter to 3 */
> +		ready = 3;
> +		break;
> +	case QUECTEL_UNKNOWN:
> +		ready = 0;
> +		break;
> +	}
> +
> +	if (status != ready) {
> +		l_timeout_modify_ms(data->init_timeout, 500);
> +		return;
> +	}
>   
> -	if (g_strcmp0(sim_inserted, "NOT INSERTED") != 0)
> -		data->have_sim = true;
> +	l_timeout_remove(data->init_timeout);
> +	data->init_timeout = NULL;
>   
> -	ofono_modem_set_powered(modem, TRUE);
> +	if (data->sim_state == OFONO_SIM_STATE_READY) {
> +		/*
> +		 * when initializing with a non-locked sim card, the sim atom
> +		 * isn't created until now to avoid accessing it before the
> +		 * modem is ready.
> +		 *
> +		 * call ofono_modem_set_powered() to make ofono call
> +		 * quectel_pre_sim() where the sim atom is created. Then signal
> +		 * the inserted state.
> +		 */
> +		ofono_modem_set_powered(modem, true);
> +		ofono_sim_inserted_notify(data->sim, true);
> +	} else {
> +		/*
> +		 * When initialized with a locked sim card, the modem is already
> +		 * powered up, and the inserted signal has been sent to allow
> +		 * the pin to be entered. So simply update the state, and notify
> +		 * about the finished initialization below.
> +		 */
> +		data->sim_state = OFONO_SIM_STATE_READY;
> +	}
>   
> -	/* Turn off the radio. */
> -	g_at_chat_send(data->aux, "AT+CFUN=4", none_prefix, NULL, NULL, NULL);
> +	ofono_sim_initialized_notify(data->sim);
> +	ofono_sms_create(modem, data->vendor, "atmodem", data->aux);
> +	ofono_phonebook_create(modem, data->vendor, "atmodem", data->aux);
> +	ofono_voicecall_create(modem, data->vendor, "atmodem", data->aux);
> +	ofono_call_volume_create(modem, data->vendor, "atmodem", data->aux);

Are you sure you want to do this here?  Shouldn't you wait until the 
core actually performs the PIN entry or whatnot prior to initializing 
phonebook & sms, etc?  Otherwise they might be marked as pre-sim state 
and you'll have all sorts of weirdness to worry about.  Keep atom 
creation in the pre_sim/post_sim/post_online callbacks whenever possible.

> +}
>   
> -	g_at_chat_unregister(data->aux, data->cpin_ready);
> -	data->cpin_ready = 0;
> +static void init_timer_cb(struct l_timeout *timeout, void *user_data)
> +{
> +	struct ofono_modem *modem = user_data;
> +	struct quectel_data *data = ofono_modem_get_data(modem);
>   
> -	dbus_hw_enable(modem);
> +	DBG("%p", modem);
> +
> +	g_at_chat_send(data->aux, "AT+QINISTAT", qinistat_prefix, qinistat_cb,
> +			modem, NULL);
> +}
> +
> +static void sim_watch_cb(GAtResult *result, void *user_data)
> +{
> +	struct ofono_modem *modem = user_data;
> +	struct quectel_data *data = ofono_modem_get_data(modem);
> +
> +	DBG("%p", modem);
> +
> +	g_at_chat_unregister(data->aux, data->sim_watch);
> +	data->sim_watch = 0;
> +
> +	data->init_timeout = l_timeout_create_ms(500, init_timer_cb, modem, NULL);
> +	if (!data->init_timeout) {
> +		close_serial(modem);
> +		return;
> +	}
> +}
> +
> +static enum ofono_sim_state cme_parse(GAtResult *result)
> +{
> +	struct ofono_error error;
> +
> +	decode_at_error(&error, g_at_result_final_response(result));
> +
> +	if (error.type != OFONO_ERROR_TYPE_CME)
> +		return OFONO_SIM_STATE_RESETTING;
> +
> +	switch (error.error) {
> +	case 5:
> +	case 6:
> +	case 7:
> +	case 11:
> +	case 12:
> +	case 17:
> +	case 18:
> +		return OFONO_SIM_STATE_LOCKED_OUT;
> +	case 10:
> +		return OFONO_SIM_STATE_NOT_PRESENT;
> +	case 13:
> +	case 14:
> +	case 15:
> +		return OFONO_SIM_STATE_RESETTING;
> +	default:
> +		ofono_error("unknown cpin error: %i", error.error);
> +		return OFONO_SIM_STATE_RESETTING;
> +	}
> +}
> +
> +static enum ofono_sim_state cpin_parse(GAtResult *result)
> +{
> +	GAtResultIter iter;
> +	const char *cpin;
> +
> +	g_at_result_iter_init(&iter, result);
> +
> +	if (!g_at_result_iter_next(&iter, "+CPIN:"))
> +		return OFONO_SIM_STATE_RESETTING;
> +
> +	g_at_result_iter_next_unquoted_string(&iter, &cpin);
> +
> +	if (g_strcmp0(cpin, "NOT INSERTED") == 0)
> +		return OFONO_SIM_STATE_NOT_PRESENT;
> +
> +	if (g_strcmp0(cpin, "READY") == 0)
> +		return OFONO_SIM_STATE_READY;
> +
> +	return OFONO_SIM_STATE_LOCKED_OUT;
>   }
>   
>   static void cpin_query(gboolean ok, GAtResult *result, gpointer user_data)
>   {
> -	DBG("%p ok %d", user_data, ok);
> +	struct ofono_modem *modem = user_data;
> +	struct quectel_data *data = ofono_modem_get_data(modem);
> +
> +	DBG("%p ok %i", modem, ok);
>   
>   	if (ok)
> -		cpin_notify(result, user_data);
> +		data->sim_state = cpin_parse(result);
> +	else
> +		data->sim_state = cme_parse(result);
> +
> +	/* Turn off the radio. */
> +	g_at_chat_send(data->aux, "AT+CFUN=4", none_prefix, NULL, NULL, NULL);
> +
> +	switch (data->sim_state) {
> +	case OFONO_SIM_STATE_LOCKED_OUT:
> +		ofono_modem_set_powered(modem, true);
> +		ofono_sim_inserted_notify(data->sim, true);
> +		data->sim_watch = g_at_chat_register(data->aux, "+CPIN: READY",
> +							sim_watch_cb, FALSE,
> +							modem, NULL);
> +		if (!data->sim_watch) {
> +			ofono_error("failed to create sim watch");
> +			close_serial(modem);
> +			return;
> +		}
> +		break;
> +	case OFONO_SIM_STATE_READY:
> +		data->init_timeout = l_timeout_create_ms(500, init_timer_cb,
> +							modem, NULL);
> +		if (!data->init_timeout) {
> +			ofono_error("failed to create qinitstat timer");
> +			close_serial(modem);
> +			return;
> +		}
> +		break;
> +	case OFONO_SIM_STATE_RESETTING:
> +	case OFONO_SIM_STATE_INSERTED:
> +		g_at_chat_send(data->aux, "AT+CPIN?", cpin_prefix, cpin_query,
> +				modem, NULL);
> +		break;
> +	case OFONO_SIM_STATE_NOT_PRESENT:
> +		ofono_warn("%s: sim not present", ofono_modem_get_path(modem));
> +		ofono_modem_set_powered(modem, true);
> +	}
>   }
>   
>   static void cfun_enable(gboolean ok, GAtResult *result, gpointer user_data)
> @@ -577,8 +734,8 @@ static void cfun_enable(gboolean ok, GAtResult *result, gpointer user_data)
>   		return;
>   	}
>   
> -	data->cpin_ready = g_at_chat_register(data->aux, "+CPIN", cpin_notify,
> -						FALSE, modem, NULL);
> +	dbus_hw_enable(modem);
> +
>   	g_at_chat_send(data->aux, "AT+CPIN?", cpin_prefix, cpin_query, modem,
>   			NULL);
>   }
> @@ -659,67 +816,6 @@ static void cgmm_cb(int ok, GAtResult *result, void *user_data)
>   			NULL);
>   }
>   
> -static void qinistat_cb(gboolean ok, GAtResult *result, gpointer user_data)
> -{
> -	struct ofono_modem *modem = user_data;
> -	struct quectel_data *data = ofono_modem_get_data(modem);
> -	GAtResultIter iter;
> -	int status;
> -
> -	DBG("%p", modem);
> -
> -	g_at_result_iter_init(&iter, result);
> -
> -	if (!g_at_result_iter_next(&iter, "+QINISTAT:"))
> -		return;
> -
> -	if (!g_at_result_iter_next_number(&iter, &status))
> -		return;
> -
> -	DBG("qinistat: %d", status);
> -
> -	if (status != 3) {
> -		l_timeout_modify_ms(data->sms_ready_timer, 500);
> -		return;
> -	}
> -
> -	ofono_sms_create(modem, data->vendor, "atmodem", data->aux);
> -	l_timeout_remove(data->sms_ready_timer);
> -	data->sms_ready_timer = NULL;
> -}
> -
> -static void sms_ready_cb(struct l_timeout *timeout, void *user_data)
> -{
> -	struct ofono_modem *modem = user_data;
> -	struct quectel_data *data = ofono_modem_get_data(modem);
> -
> -	DBG("%p", modem);
> -
> -	g_at_chat_send(data->aux, "AT+QINISTAT", qinistat_prefix, qinistat_cb,
> -			modem, NULL);
> -}
> -
> -static void call_ready_notify(GAtResult *result, void *user_data)
> -{
> -	struct ofono_modem *modem = user_data;
> -	struct quectel_data *data = ofono_modem_get_data(modem);
> -
> -	DBG("%p", modem);
> -
> -	g_at_chat_unregister(data->aux, data->call_ready);
> -	data->call_ready = 0;
> -	data->sms_ready_timer = l_timeout_create_ms(500, sms_ready_cb, modem,
> -							NULL);
> -	if (!data->sms_ready_timer) {
> -		close_serial(modem);
> -		return;
> -	}
> -
> -	ofono_phonebook_create(modem, 0, "atmodem", data->aux);
> -	ofono_voicecall_create(modem, 0, "atmodem", data->aux);
> -	ofono_call_volume_create(modem, 0, "atmodem", data->aux);
> -}
> -
>   static int open_ttys(struct ofono_modem *modem)
>   {
>   	struct quectel_data *data = ofono_modem_get_data(modem);
> @@ -739,19 +835,9 @@ static int open_ttys(struct ofono_modem *modem)
>   		return -EIO;
>   	}
>   
> -	data->call_ready = g_at_chat_register(data->aux, "Call Ready",
> -						call_ready_notify, false,
> -						modem, NULL);
> -	if (!data->call_ready) {
> -		close_serial(modem);
> -		return -ENOTTY;
> -	}
> -
>   	g_at_chat_set_slave(data->modem, data->aux);
>   
> -	g_at_chat_send(data->modem, "ATE0; &C0; +CMEE=1", none_prefix, NULL,
> -			NULL, NULL);
> -	g_at_chat_send(data->aux, "ATE0; &C0; +CMEE=1", none_prefix, NULL, NULL,
> +	g_at_chat_send(data->aux, "ATE0; &C0; +CMEE=1; +QIURC=0", none_prefix, NULL, 

80 chars / line violation?

NULL,
>   			NULL);
>   	g_at_chat_send(data->aux, "AT+CGMM", cgmm_prefix, cgmm_cb, modem,
>   			NULL);
> @@ -1048,10 +1134,7 @@ static void quectel_pre_sim(struct ofono_modem *modem)
>   	DBG("%p", modem);
>   
>   	ofono_devinfo_create(modem, 0, "atmodem", data->aux);
> -	sim = ofono_sim_create(modem, data->vendor, "atmodem", data->aux);
> -
> -	if (sim && data->have_sim == true)
> -		ofono_sim_inserted_notify(sim, TRUE);
> +	data->sim = ofono_sim_create(modem, data->vendor, "atmodem", data->aux);
>   }
>   
>   static void quectel_post_sim(struct ofono_modem *modem)
> 

Regards,
-Denis

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCHv3] quectel: handle sim states
  2019-09-02 21:16 ` [PATCHv2] quectel: handle sim states Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
  2019-09-02 21:37   ` Denis Kenzior
@ 2019-09-05 10:33   ` Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
  2019-09-10 14:10     ` Denis Kenzior
  1 sibling, 1 reply; 15+ messages in thread
From: Martin =?unknown-8bit?q?Hundeb=C3=B8ll?= @ 2019-09-05 10:33 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 13110 bytes --]

The quectel M95 and MC60 modems are picky about when the sim is properly
initialized, so the logic to detect this needs to be in the quectel
plugin.

After doing basic initialization, a CPIN query is issued to detect sim
state.

If the sim is unlocked and ready, a timer is created to wait for the
modem state (AT+QINISTAT) to complete. At this point ofono is notified
about the initialized sim.

If the sim is locked, a listener for "+CPIN: READY" is set up to
know when a pin is entered. Once the indication is received, the timer
is set up as if the sim was unlocked from the beginning.

If the sim is busy/resetting, the CPIN query is issued again.
---
 plugins/quectel.c | 336 ++++++++++++++++++++++++++++++++--------------
 1 file changed, 237 insertions(+), 99 deletions(-)

diff --git a/plugins/quectel.c b/plugins/quectel.c
index dea23bdd..d4947489 100644
--- a/plugins/quectel.c
+++ b/plugins/quectel.c
@@ -84,15 +84,22 @@ enum quectel_model {
 	QUECTEL_MC60,
 };
 
+enum quectel_state {
+	QUECTEL_STATE_INITIALIZING = 0,
+	QUECTEL_STATE_POST_SIM,
+	QUECTEL_STATE_READY,
+	QUECTEL_STATE_INITIALIZED,
+};
+
 struct quectel_data {
 	GAtChat *modem;
 	GAtChat *aux;
-	guint cpin_ready;
-	guint call_ready;
-	bool have_sim;
 	enum ofono_vendor vendor;
 	enum quectel_model model;
-	struct l_timeout *sms_ready_timer;
+	enum quectel_state state;
+	struct ofono_sim *sim;
+	enum ofono_sim_state sim_state;
+	unsigned int sim_watch;
 
 	/* used by quectel uart driver */
 	GAtChat *uart;
@@ -185,9 +192,6 @@ static void quectel_remove(struct ofono_modem *modem)
 
 	DBG("%p", modem);
 
-	if (data->cpin_ready != 0)
-		g_at_chat_unregister(data->aux, data->cpin_ready);
-
 	ofono_modem_set_data(modem, NULL);
 	l_timeout_remove(data->init_timeout);
 	l_gpio_writer_free(data->gpio);
@@ -527,42 +531,211 @@ static void dbus_hw_enable(struct ofono_modem *modem)
 	ofono_modem_add_interface(modem, dbus_hw_interface);
 }
 
-static void cpin_notify(GAtResult *result, gpointer user_data)
+static void qinistat_cb(gboolean ok, GAtResult *result, gpointer user_data)
 {
 	struct ofono_modem *modem = user_data;
 	struct quectel_data *data = ofono_modem_get_data(modem);
-	const char *sim_inserted;
 	GAtResultIter iter;
+	int ready = 0;
+	int status;
 
 	DBG("%p", modem);
 
 	g_at_result_iter_init(&iter, result);
 
-	if (!g_at_result_iter_next(&iter, "+CPIN:"))
+	if (!g_at_result_iter_next(&iter, "+QINISTAT:"))
 		return;
 
-	g_at_result_iter_next_unquoted_string(&iter, &sim_inserted);
+	if (!g_at_result_iter_next_number(&iter, &status))
+		return;
 
-	if (g_strcmp0(sim_inserted, "NOT INSERTED") != 0)
-		data->have_sim = true;
+	DBG("qinistat: %d", status);
 
-	ofono_modem_set_powered(modem, TRUE);
+	switch (data->model) {
+	case QUECTEL_UC15:
+		/* UC15 uses a bitmap of 1 + 2 + 4 = 7 */
+		ready = 7;
+		break;
+	case QUECTEL_M95:
+	case QUECTEL_MC60:
+		/* M95 and MC60 uses a counter to 3 */
+		ready = 3;
+		break;
+	case QUECTEL_UNKNOWN:
+		ready = 0;
+		break;
+	}
 
-	/* Turn off the radio. */
-	g_at_chat_send(data->aux, "AT+CFUN=4", none_prefix, NULL, NULL, NULL);
+	if (status != ready) {
+		l_timeout_modify_ms(data->init_timeout, 500);
+		return;
+	}
 
-	g_at_chat_unregister(data->aux, data->cpin_ready);
-	data->cpin_ready = 0;
+	l_timeout_remove(data->init_timeout);
+	data->init_timeout = NULL;
 
-	dbus_hw_enable(modem);
+	if (data->sim_state == OFONO_SIM_STATE_READY) {
+		/*
+		 * when initializing with a non-locked sim card, the sim atom
+		 * isn't created until now to avoid accessing it before the
+		 * modem is ready.
+		 *
+		 * call ofono_modem_set_powered() to make ofono call
+		 * quectel_pre_sim() where the sim atom is created.
+		 */
+		ofono_modem_set_powered(modem, true);
+	} else {
+		/*
+		 * When initialized with a locked sim card, the modem is already
+		 * powered up, and the inserted signal has been sent to allow
+		 * the pin to be entered. So simply update the state, and notify
+		 * about the finished initialization below.
+		 */
+		data->sim_state = OFONO_SIM_STATE_READY;
+	}
+
+	ofono_sim_initialized_notify(data->sim);
+
+	/*
+	 * If quectel_post_sim() has not yet been called, then postpone atom
+	 * creation until it is called. Otherwise create the atoms now.
+	 */
+	if (data->state != QUECTEL_STATE_POST_SIM) {
+		data->state = QUECTEL_STATE_READY;
+		return;
+	}
+
+	ofono_sms_create(modem, data->vendor, "atmodem", data->aux);
+	ofono_phonebook_create(modem, data->vendor, "atmodem", data->aux);
+	ofono_voicecall_create(modem, data->vendor, "atmodem", data->aux);
+	ofono_call_volume_create(modem, data->vendor, "atmodem", data->aux);
+	data->state = QUECTEL_STATE_INITIALIZED;
+}
+
+static void init_timer_cb(struct l_timeout *timeout, void *user_data)
+{
+	struct ofono_modem *modem = user_data;
+	struct quectel_data *data = ofono_modem_get_data(modem);
+
+	DBG("%p", modem);
+
+	g_at_chat_send(data->aux, "AT+QINISTAT", qinistat_prefix, qinistat_cb,
+			modem, NULL);
+}
+
+static void sim_watch_cb(GAtResult *result, void *user_data)
+{
+	struct ofono_modem *modem = user_data;
+	struct quectel_data *data = ofono_modem_get_data(modem);
+
+	DBG("%p", modem);
+
+	g_at_chat_unregister(data->aux, data->sim_watch);
+	data->sim_watch = 0;
+
+	data->init_timeout = l_timeout_create_ms(500, init_timer_cb, modem, NULL);
+	if (!data->init_timeout) {
+		close_serial(modem);
+		return;
+	}
+}
+
+static enum ofono_sim_state cme_parse(GAtResult *result)
+{
+	struct ofono_error error;
+
+	decode_at_error(&error, g_at_result_final_response(result));
+
+	if (error.type != OFONO_ERROR_TYPE_CME)
+		return OFONO_SIM_STATE_RESETTING;
+
+	switch (error.error) {
+	case 5:
+	case 6:
+	case 7:
+	case 11:
+	case 12:
+	case 17:
+	case 18:
+		return OFONO_SIM_STATE_LOCKED_OUT;
+	case 10:
+		return OFONO_SIM_STATE_NOT_PRESENT;
+	case 13:
+	case 14:
+	case 15:
+		return OFONO_SIM_STATE_RESETTING;
+	default:
+		ofono_error("unknown cpin error: %i", error.error);
+		return OFONO_SIM_STATE_RESETTING;
+	}
+}
+
+static enum ofono_sim_state cpin_parse(GAtResult *result)
+{
+	GAtResultIter iter;
+	const char *cpin;
+
+	g_at_result_iter_init(&iter, result);
+
+	if (!g_at_result_iter_next(&iter, "+CPIN:"))
+		return OFONO_SIM_STATE_RESETTING;
+
+	g_at_result_iter_next_unquoted_string(&iter, &cpin);
+
+	if (g_strcmp0(cpin, "NOT INSERTED") == 0)
+		return OFONO_SIM_STATE_NOT_PRESENT;
+
+	if (g_strcmp0(cpin, "READY") == 0)
+		return OFONO_SIM_STATE_READY;
+
+	return OFONO_SIM_STATE_LOCKED_OUT;
 }
 
 static void cpin_query(gboolean ok, GAtResult *result, gpointer user_data)
 {
-	DBG("%p ok %d", user_data, ok);
+	struct ofono_modem *modem = user_data;
+	struct quectel_data *data = ofono_modem_get_data(modem);
+
+	DBG("%p ok %i", modem, ok);
 
 	if (ok)
-		cpin_notify(result, user_data);
+		data->sim_state = cpin_parse(result);
+	else
+		data->sim_state = cme_parse(result);
+
+	/* Turn off the radio. */
+	g_at_chat_send(data->aux, "AT+CFUN=4", none_prefix, NULL, NULL, NULL);
+
+	switch (data->sim_state) {
+	case OFONO_SIM_STATE_LOCKED_OUT:
+		ofono_modem_set_powered(modem, true);
+		data->sim_watch = g_at_chat_register(data->aux, "+CPIN: READY",
+							sim_watch_cb, FALSE,
+							modem, NULL);
+		if (!data->sim_watch) {
+			ofono_error("failed to create sim watch");
+			close_serial(modem);
+			return;
+		}
+		break;
+	case OFONO_SIM_STATE_READY:
+		data->init_timeout = l_timeout_create_ms(500, init_timer_cb,
+							modem, NULL);
+		if (!data->init_timeout) {
+			ofono_error("failed to create qinitstat timer");
+			close_serial(modem);
+			return;
+		}
+		break;
+	case OFONO_SIM_STATE_RESETTING:
+	case OFONO_SIM_STATE_INSERTED:
+		g_at_chat_send(data->aux, "AT+CPIN?", cpin_prefix, cpin_query,
+				modem, NULL);
+		break;
+	case OFONO_SIM_STATE_NOT_PRESENT:
+		ofono_warn("%s: sim not present", ofono_modem_get_path(modem));
+		ofono_modem_set_powered(modem, true);
+	}
 }
 
 static void cfun_enable(gboolean ok, GAtResult *result, gpointer user_data)
@@ -577,8 +750,8 @@ static void cfun_enable(gboolean ok, GAtResult *result, gpointer user_data)
 		return;
 	}
 
-	data->cpin_ready = g_at_chat_register(data->aux, "+CPIN", cpin_notify,
-						FALSE, modem, NULL);
+	dbus_hw_enable(modem);
+
 	g_at_chat_send(data->aux, "AT+CPIN?", cpin_prefix, cpin_query, modem,
 			NULL);
 }
@@ -659,67 +832,6 @@ static void cgmm_cb(int ok, GAtResult *result, void *user_data)
 			NULL);
 }
 
-static void qinistat_cb(gboolean ok, GAtResult *result, gpointer user_data)
-{
-	struct ofono_modem *modem = user_data;
-	struct quectel_data *data = ofono_modem_get_data(modem);
-	GAtResultIter iter;
-	int status;
-
-	DBG("%p", modem);
-
-	g_at_result_iter_init(&iter, result);
-
-	if (!g_at_result_iter_next(&iter, "+QINISTAT:"))
-		return;
-
-	if (!g_at_result_iter_next_number(&iter, &status))
-		return;
-
-	DBG("qinistat: %d", status);
-
-	if (status != 3) {
-		l_timeout_modify_ms(data->sms_ready_timer, 500);
-		return;
-	}
-
-	ofono_sms_create(modem, data->vendor, "atmodem", data->aux);
-	l_timeout_remove(data->sms_ready_timer);
-	data->sms_ready_timer = NULL;
-}
-
-static void sms_ready_cb(struct l_timeout *timeout, void *user_data)
-{
-	struct ofono_modem *modem = user_data;
-	struct quectel_data *data = ofono_modem_get_data(modem);
-
-	DBG("%p", modem);
-
-	g_at_chat_send(data->aux, "AT+QINISTAT", qinistat_prefix, qinistat_cb,
-			modem, NULL);
-}
-
-static void call_ready_notify(GAtResult *result, void *user_data)
-{
-	struct ofono_modem *modem = user_data;
-	struct quectel_data *data = ofono_modem_get_data(modem);
-
-	DBG("%p", modem);
-
-	g_at_chat_unregister(data->aux, data->call_ready);
-	data->call_ready = 0;
-	data->sms_ready_timer = l_timeout_create_ms(500, sms_ready_cb, modem,
-							NULL);
-	if (!data->sms_ready_timer) {
-		close_serial(modem);
-		return;
-	}
-
-	ofono_phonebook_create(modem, 0, "atmodem", data->aux);
-	ofono_voicecall_create(modem, 0, "atmodem", data->aux);
-	ofono_call_volume_create(modem, 0, "atmodem", data->aux);
-}
-
 static int open_ttys(struct ofono_modem *modem)
 {
 	struct quectel_data *data = ofono_modem_get_data(modem);
@@ -739,20 +851,10 @@ static int open_ttys(struct ofono_modem *modem)
 		return -EIO;
 	}
 
-	data->call_ready = g_at_chat_register(data->aux, "Call Ready",
-						call_ready_notify, false,
-						modem, NULL);
-	if (!data->call_ready) {
-		close_serial(modem);
-		return -ENOTTY;
-	}
-
 	g_at_chat_set_slave(data->modem, data->aux);
 
-	g_at_chat_send(data->modem, "ATE0; &C0; +CMEE=1", none_prefix, NULL,
-			NULL, NULL);
-	g_at_chat_send(data->aux, "ATE0; &C0; +CMEE=1", none_prefix, NULL, NULL,
-			NULL);
+	g_at_chat_send(data->aux, "ATE0; &C0; +CMEE=1; +QIURC=0", none_prefix,
+			NULL, NULL, NULL);
 	g_at_chat_send(data->aux, "AT+CGMM", cgmm_prefix, cgmm_cb, modem,
 			NULL);
 
@@ -1007,6 +1109,8 @@ static int quectel_disable(struct ofono_modem *modem)
 	g_at_chat_send(data->aux, "AT+CFUN=0", cfun_prefix, cfun_disable, modem,
 			NULL);
 
+	data->state = QUECTEL_STATE_INITIALIZING;
+
 	return -EINPROGRESS;
 }
 
@@ -1048,10 +1152,18 @@ static void quectel_pre_sim(struct ofono_modem *modem)
 	DBG("%p", modem);
 
 	ofono_devinfo_create(modem, 0, "atmodem", data->aux);
-	sim = ofono_sim_create(modem, data->vendor, "atmodem", data->aux);
+	data->sim = ofono_sim_create(modem, data->vendor, "atmodem", data->aux);
+	if (!data->sim)
+		return;
 
-	if (sim && data->have_sim == true)
-		ofono_sim_inserted_notify(sim, TRUE);
+	switch (data->sim_state) {
+	case OFONO_SIM_STATE_LOCKED_OUT:
+	case OFONO_SIM_STATE_READY:
+		ofono_sim_inserted_notify(data->sim, true);
+		break;
+	default:
+		break;
+	}
 }
 
 static void quectel_post_sim(struct ofono_modem *modem)
@@ -1068,6 +1180,32 @@ static void quectel_post_sim(struct ofono_modem *modem)
 
 	if (gprs && gc)
 		ofono_gprs_add_context(gprs, gc);
+
+	/*
+	 * the sim related atoms must not be created until the modem is really
+	 * ready, so check the state here
+	 */
+	switch (data->state) {
+	case QUECTEL_STATE_INITIALIZING:
+		/*
+		 * the modem is still initializing, so postpone the atom
+		 * creation until qinistat_cb() determines the modem is
+		 * ready
+		 */
+		data->state = QUECTEL_STATE_POST_SIM;
+		return;
+	case QUECTEL_STATE_READY:
+		/* the modem is ready, so create atoms below */
+		break;
+	default:
+		return;
+	}
+
+	ofono_sms_create(modem, data->vendor, "atmodem", data->aux);
+	ofono_phonebook_create(modem, data->vendor, "atmodem", data->aux);
+	ofono_voicecall_create(modem, data->vendor, "atmodem", data->aux);
+	ofono_call_volume_create(modem, data->vendor, "atmodem", data->aux);
+	data->state = QUECTEL_STATE_INITIALIZED;
 }
 
 static void quectel_post_online(struct ofono_modem *modem)
-- 
2.23.0


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [PATCHv3] quectel: handle sim states
  2019-09-05 10:33   ` [PATCHv3] " Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
@ 2019-09-10 14:10     ` Denis Kenzior
  2019-09-23 22:11       ` Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
  0 siblings, 1 reply; 15+ messages in thread
From: Denis Kenzior @ 2019-09-10 14:10 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 3624 bytes --]

Hi Martin,

On 9/5/19 5:33 AM, Martin Hundebøll wrote:
> The quectel M95 and MC60 modems are picky about when the sim is properly
> initialized, so the logic to detect this needs to be in the quectel
> plugin.
> 
> After doing basic initialization, a CPIN query is issued to detect sim
> state.
> 
> If the sim is unlocked and ready, a timer is created to wait for the
> modem state (AT+QINISTAT) to complete. At this point ofono is notified
> about the initialized sim.
> 
> If the sim is locked, a listener for "+CPIN: READY" is set up to
> know when a pin is entered. Once the indication is received, the timer
> is set up as if the sim was unlocked from the beginning.
> 
> If the sim is busy/resetting, the CPIN query is issued again.
> ---
>   plugins/quectel.c | 336 ++++++++++++++++++++++++++++++++--------------
>   1 file changed, 237 insertions(+), 99 deletions(-)
> 

So what changed in this version?

<snip>

> +	if (data->sim_state == OFONO_SIM_STATE_READY) {
> +		/*
> +		 * when initializing with a non-locked sim card, the sim atom
> +		 * isn't created until now to avoid accessing it before the
> +		 * modem is ready.
> +		 *
> +		 * call ofono_modem_set_powered() to make ofono call
> +		 * quectel_pre_sim() where the sim atom is created.
> +		 */
> +		ofono_modem_set_powered(modem, true);
> +	} else {
> +		/*
> +		 * When initialized with a locked sim card, the modem is already
> +		 * powered up, and the inserted signal has been sent to allow
> +		 * the pin to be entered. So simply update the state, and notify
> +		 * about the finished initialization below.
> +		 */
> +		data->sim_state = OFONO_SIM_STATE_READY;
> +	}
> +
> +	ofono_sim_initialized_notify(data->sim);

I don't know what you're doing here?  So sim_initialized_notify is meant 
to be called after PIN entry by the user, e.g. via +CPIN.  Many modems 
need some time to actually read the SIM file system and perform other 
initializations prior to functioning properly.  So oFono lets the driver 
tell us when this is complete.  Calling this when the PIN is locked 
seems wrong?

Also, it isn't clear whether data->sim is valid here at this point in 
all cases?

> +
> +	/*
> +	 * If quectel_post_sim() has not yet been called, then postpone atom
> +	 * creation until it is called. Otherwise create the atoms now.
> +	 */
> +	if (data->state != QUECTEL_STATE_POST_SIM) {
> +		data->state = QUECTEL_STATE_READY;
> +		return;
> +	}
> +
> +	ofono_sms_create(modem, data->vendor, "atmodem", data->aux);
> +	ofono_phonebook_create(modem, data->vendor, "atmodem", data->aux);
> +	ofono_voicecall_create(modem, data->vendor, "atmodem", data->aux);
> +	ofono_call_volume_create(modem, data->vendor, "atmodem", data->aux);
> +	data->state = QUECTEL_STATE_INITIALIZED;

I'm lost here as well?  How do you even get into this path if we're in 
post_sim?  Is it because you called sim_initialized when you shouldn't 
have and trying to take care of the weirdness?

For a locked SIM you should be doing something like:

ofono_set_powered(modem, TRUE);
ofono_sim_inserted(sim, TRUE);

g_at_chat_register("CPIN: Ready", sim_ready_cb);
sim_ready_cb: poll QINISTAT.  If ready, call ofono_sim_initialized

This last part may or may not need to be synced up with the sim atom driver.

Many modems actually provide a proper unsolicited notification that 
makes logic like this much simpler and can be handled inside the modem 
driver.

Move all the atom creation into post_sim.  Voicecalls probably belong in 
pre_sim.

> +}
> +

Regards,
-Denis

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCHv3] quectel: handle sim states
  2019-09-10 14:10     ` Denis Kenzior
@ 2019-09-23 22:11       ` Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
  2019-09-24  2:50         ` Denis Kenzior
  0 siblings, 1 reply; 15+ messages in thread
From: Martin =?unknown-8bit?q?Hundeb=C3=B8ll?= @ 2019-09-23 22:11 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 6680 bytes --]

Hi Denis,

On 10/09/2019 16.10, Denis Kenzior wrote:
> Hi Martin,
> 
> On 9/5/19 5:33 AM, Martin Hundebøll wrote:
>> The quectel M95 and MC60 modems are picky about when the sim is properly
>> initialized, so the logic to detect this needs to be in the quectel
>> plugin.
>>
>> After doing basic initialization, a CPIN query is issued to detect sim
>> state.
>>
>> If the sim is unlocked and ready, a timer is created to wait for the
>> modem state (AT+QINISTAT) to complete. At this point ofono is notified
>> about the initialized sim.
>>
>> If the sim is locked, a listener for "+CPIN: READY" is set up to
>> know when a pin is entered. Once the indication is received, the timer
>> is set up as if the sim was unlocked from the beginning.
>>
>> If the sim is busy/resetting, the CPIN query is issued again.
>> ---
>>   plugins/quectel.c | 336 ++++++++++++++++++++++++++++++++--------------
>>   1 file changed, 237 insertions(+), 99 deletions(-)
>>
> 
> So what changed in this version?

Sorry, forgot this.

I added the logic to create atoms in or after quectel_post_sim() was caled.

>> +    if (data->sim_state == OFONO_SIM_STATE_READY) {
>> +        /*
>> +         * when initializing with a non-locked sim card, the sim atom
>> +         * isn't created until now to avoid accessing it before the
>> +         * modem is ready.
>> +         *
>> +         * call ofono_modem_set_powered() to make ofono call
>> +         * quectel_pre_sim() where the sim atom is created.
>> +         */
>> +        ofono_modem_set_powered(modem, true);
>> +    } else {
>> +        /*
>> +         * When initialized with a locked sim card, the modem is already
>> +         * powered up, and the inserted signal has been sent to allow
>> +         * the pin to be entered. So simply update the state, and notify
>> +         * about the finished initialization below.
>> +         */
>> +        data->sim_state = OFONO_SIM_STATE_READY;
>> +    }
>> +
>> +    ofono_sim_initialized_notify(data->sim);
> 
> I don't know what you're doing here?  So sim_initialized_notify is meant 
> to be called after PIN entry by the user, e.g. via +CPIN.  Many modems 
> need some time to actually read the SIM file system and perform other 
> initializations prior to functioning properly.  So oFono lets the driver 
> tell us when this is complete.  Calling this when the PIN is locked 
> seems wrong?

In case the sim is locked, two things are done in cpin_query():

1) we can be sure that "+CPIN: READY" appears at some point
    after a pin is entered. So we register sim_watch_cb() to
    initiate the AT+QINISTAT dance after receiving
    "+CPIN: READY".

2) Also, ofono_modem_set_powered() is called to make ofono call
    quctel_pre_sim(), so that the sim atom is created, which
    allows the pin to be entered.

Once the modem reports ready in the AT+QINISTAT response, 
ofono_sim_initialized_notify() is called to finish the initialization.

The other case, where the sim is not locked, the AT+QINISTAT dance is 
started directly from cpin_query(). Once the modem is ready, 
ofono_modem_set_powered() is called to create the sim atom in 
quectel_pre_sim(), and then ofono_sim_initialized_notify() afterwards.

> Also, it isn't clear whether data->sim is valid here at this point in 
> all cases?

I know it a bit of a hack, but I've noticed the pre_sim function is 
called unconditionally when doing ofono_modem_set_powered(true), so I 
exploited that fact here.

>> +
>> +    /*
>> +     * If quectel_post_sim() has not yet been called, then postpone atom
>> +     * creation until it is called. Otherwise create the atoms now.
>> +     */
>> +    if (data->state != QUECTEL_STATE_POST_SIM) {
>> +        data->state = QUECTEL_STATE_READY;
>> +        return;
>> +    }
>> +
>> +    ofono_sms_create(modem, data->vendor, "atmodem", data->aux);
>> +    ofono_phonebook_create(modem, data->vendor, "atmodem", data->aux);
>> +    ofono_voicecall_create(modem, data->vendor, "atmodem", data->aux);
>> +    ofono_call_volume_create(modem, data->vendor, "atmodem", data->aux);
>> +    data->state = QUECTEL_STATE_INITIALIZED;
> 
> I'm lost here as well?  How do you even get into this path if we're in 
> post_sim?  Is it because you called sim_initialized when you shouldn't 
> have and trying to take care of the weirdness?

I've tried to work-around quectel_post_sim() being called after the PIN 
is entered, but before I call ofono_sim_initialized_notify():

../git/drivers/atmodem/sim.c:at_crsm_read_cb() crsm_read_cb: 90, 00, 1
../git/src/simfs.c:sim_fs_op_read_block_cb() bufoff: 0, dataoff: 0, 
tocopy: 1
Aux: > AT+CIMI\r
../git/plugins/quectel.c:init_timer_cb() 0x610000000d40
Aux: < \r\n238013814764391\r\n\r\nOK\r\n
../git/drivers/atmodem/sim.c:at_cimi_cb() cimi_cb: 238013814764391
../git/src/sim.c:call_state_watches()
../git/src/modem.c:modem_change_state() old state: 1, new state: 2
../git/plugins/quectel.c:quectel_post_sim() 0x610000000d40

So after reading the CIMI, the SIM is marked as ready, and 
call_state_watches() is called. (I added a DBG() there.)

Is there a way to avoid that?

> For a locked SIM you should be doing something like:
> 
> ofono_set_powered(modem, TRUE);
> ofono_sim_inserted(sim, TRUE);
> 
> g_at_chat_register("CPIN: Ready", sim_ready_cb);
> sim_ready_cb: poll QINISTAT.  If ready, call ofono_sim_initialized
> 
> This last part may or may not need to be synced up with the sim atom 
> driver.
> 
> Many modems actually provide a proper unsolicited notification that 
> makes logic like this much simpler and can be handled inside the modem 
> driver.

The M95 modem shows "Call Ready" when QINISTAT == 2, but that is not 
enough. The M60 actually does show "SMS Ready" at the right time. I did 
ask Quectel directly to update the firmware to do QINISTAT unsolicited, 
but they are afraid to break exisiting users :(

> Move all the atom creation into post_sim.  Voicecalls probably belong in 
> pre_sim.

I would really like to. But to do so, I need a way to avoid post_sim 
being called after the PIN is entered, but before QINISTAT returns 3. 
Otherwise, sms is broken:

Aux: > AT+CSMS?\r
Aux: < \r\n+CMS ERROR: 3\r\n
SMS not supported by this modem.  If this is an error please submit 
patches to support this hardware
../git/src/sms.c:sms_remove() atom: 0x604000026dd0


// Martin

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCHv3] quectel: handle sim states
  2019-09-23 22:11       ` Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
@ 2019-09-24  2:50         ` Denis Kenzior
  2019-09-24  2:51           ` Denis Kenzior
  2019-09-24 20:44           ` Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
  0 siblings, 2 replies; 15+ messages in thread
From: Denis Kenzior @ 2019-09-24  2:50 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 6637 bytes --]

Hi Martin,

<snip>

>> I don't know what you're doing here?  So sim_initialized_notify is 
>> meant to be called after PIN entry by the user, e.g. via +CPIN.  Many 
>> modems need some time to actually read the SIM file system and perform 
>> other initializations prior to functioning properly.  So oFono lets 
>> the driver tell us when this is complete.  Calling this when the PIN 
>> is locked seems wrong?
> 
> In case the sim is locked, two things are done in cpin_query():
> 
> 1) we can be sure that "+CPIN: READY" appears at some point
>     after a pin is entered. So we register sim_watch_cb() to
>     initiate the AT+QINISTAT dance after receiving
>     "+CPIN: READY".
> 

Yes I'm with you.  I thought it weird to send CPIN: READY uninitialized. 
  But okay, I got this part.

> 2) Also, ofono_modem_set_powered() is called to make ofono call
>     quctel_pre_sim(), so that the sim atom is created, which
>     allows the pin to be entered.

Okay, but why bother calling CPIN? here at all.  Just call 
ofono_modem_set_powered, which will create the sim atom, which will 
issue a CPIN? anyway...

> 
> Once the modem reports ready in the AT+QINISTAT response, 
> ofono_sim_initialized_notify() is called to finish the initialization.

Right, but if you register to +CPIN: READY always, then in case 1 above 
it will fire and you can do the QINISTAT dance as before.  Unless CPIN? 
query response of READY doesn't mean its really ready?  But then you can 
loop over QINISTAT until it is ready.  And this part still seems to 
belong in the sim atom if your vendor doesn't support unsolicited 
QINISTAT events...

> 
> The other case, where the sim is not locked, the AT+QINISTAT dance is 
> started directly from cpin_query(). Once the modem is ready, 
> ofono_modem_set_powered() is called to create the sim atom in 
> quectel_pre_sim(), and then ofono_sim_initialized_notify() afterwards.

This last part is a no-op or even wrong...

> 
>> Also, it isn't clear whether data->sim is valid here at this point in 
>> all cases?
> 
> I know it a bit of a hack, but I've noticed the pre_sim function is 
> called unconditionally when doing ofono_modem_set_powered(true), so I 
> exploited that fact here.
> 

Don't do that.  We provide no such guarantees :)

>>> +
>>> +    /*
>>> +     * If quectel_post_sim() has not yet been called, then postpone 
>>> atom
>>> +     * creation until it is called. Otherwise create the atoms now.
>>> +     */
>>> +    if (data->state != QUECTEL_STATE_POST_SIM) {
>>> +        data->state = QUECTEL_STATE_READY;
>>> +        return;
>>> +    }
>>> +
>>> +    ofono_sms_create(modem, data->vendor, "atmodem", data->aux);
>>> +    ofono_phonebook_create(modem, data->vendor, "atmodem", data->aux);
>>> +    ofono_voicecall_create(modem, data->vendor, "atmodem", data->aux);
>>> +    ofono_call_volume_create(modem, data->vendor, "atmodem", 
>>> data->aux);
>>> +    data->state = QUECTEL_STATE_INITIALIZED;
>>
>> I'm lost here as well?  How do you even get into this path if we're in 
>> post_sim?  Is it because you called sim_initialized when you shouldn't 
>> have and trying to take care of the weirdness?
> 
> I've tried to work-around quectel_post_sim() being called after the PIN 
> is entered, but before I call ofono_sim_initialized_notify():
> 
> ../git/drivers/atmodem/sim.c:at_crsm_read_cb() crsm_read_cb: 90, 00, 1
> ../git/src/simfs.c:sim_fs_op_read_block_cb() bufoff: 0, dataoff: 0, 
> tocopy: 1
> Aux: > AT+CIMI\r
> ../git/plugins/quectel.c:init_timer_cb() 0x610000000d40
> Aux: < \r\n238013814764391\r\n\r\nOK\r\n
> ../git/drivers/atmodem/sim.c:at_cimi_cb() cimi_cb: 238013814764391
> ../git/src/sim.c:call_state_watches()
> ../git/src/modem.c:modem_change_state() old state: 1, new state: 2
> ../git/plugins/quectel.c:quectel_post_sim() 0x610000000d40
> 
> So after reading the CIMI, the SIM is marked as ready, and 
> call_state_watches() is called. (I added a DBG() there.)
> 
> Is there a way to avoid that?
> 

So this is what sim_initialized is for.  After the PIN is entered ofono 
will pause sim initialization until sim_initialized is called.  If 
you've gotten to the point that read_imsi is being executed, then you 
somehow called ofono_sim_initialized too early.

This is why I asked in my previous reply whether you're somehow 
triggering ofono_sim_initialized before it should be triggered?  Or 
maybe there's something else happening.

>> For a locked SIM you should be doing something like:
>>
>> ofono_set_powered(modem, TRUE);
>> ofono_sim_inserted(sim, TRUE);
>>
>> g_at_chat_register("CPIN: Ready", sim_ready_cb);
>> sim_ready_cb: poll QINISTAT.  If ready, call ofono_sim_initialized
>>
>> This last part may or may not need to be synced up with the sim atom 
>> driver.
>>
>> Many modems actually provide a proper unsolicited notification that 
>> makes logic like this much simpler and can be handled inside the modem 
>> driver.
> 
> The M95 modem shows "Call Ready" when QINISTAT == 2, but that is not 
> enough. The M60 actually does show "SMS Ready" at the right time. I did 
> ask Quectel directly to update the firmware to do QINISTAT unsolicited, 
> but they are afraid to break exisiting users :(

That is just a strange argument :) They can always add AT+QINISTATU=1 
(or whatever never-prior-used command) to enable unsolicited QINISTAT 
reporting and no existing user would be affected.

> 
>> Move all the atom creation into post_sim.  Voicecalls probably belong 
>> in pre_sim.
> 
> I would really like to. But to do so, I need a way to avoid post_sim 
> being called after the PIN is entered, but before QINISTAT returns 3. 
> Otherwise, sms is broken:
> 
> Aux: > AT+CSMS?\r
> Aux: < \r\n+CMS ERROR: 3\r\n
> SMS not supported by this modem.  If this is an error please submit 
> patches to support this hardware
> ../git/src/sms.c:sms_remove() atom: 0x604000026dd0

This is actually fairly typical behavior.  There are several drivers 
that initialize sms / phonebook as a result of an unsolicited 
notification.  The xmm7xxx plugin does this.

I do keep meaning to add a way to force bind a particular atom to a 
given state.  To cover the case where you need to create sms/phonebook 
in post_sim but have to rely on some unsolicited notification which 
might result in you calling __ofono_atom_add when the state went to 
online for example.  Something like __ofono_modem_add_atom_offline.

Regards,
-Denis

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCHv3] quectel: handle sim states
  2019-09-24  2:50         ` Denis Kenzior
@ 2019-09-24  2:51           ` Denis Kenzior
  2019-09-24 20:44           ` Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
  1 sibling, 0 replies; 15+ messages in thread
From: Denis Kenzior @ 2019-09-24  2:51 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 201 bytes --]

> Yes I'm with you.  I thought it weird to send CPIN: READY uninitialized. 
>   But okay, I got this part.
> 

And of course I meant 'uninitialized' to be 'unsolicited' :)

Regards,
-Denis


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCHv3] quectel: handle sim states
  2019-09-24 20:56             ` Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
@ 2019-09-24 20:40               ` Denis Kenzior
  2019-09-26 19:26                 ` Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
  0 siblings, 1 reply; 15+ messages in thread
From: Denis Kenzior @ 2019-09-24 20:40 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 1635 bytes --]

Hi Martin,

>> I tried implementing what you suggest - see the attached patch. But I 
>> still get "SMS not supported by this modem.".
>>
>> The attached log shows quectel_post_sim() being called (line 584) way 
>> before QINISTAT returns 3 (line 686).
>>
>> Is this because my SIM isn't locked, and so the 
>> ofono_sim_inserted_notify() call makes it go all the way?
>>
>> I can work around it by calling ofono_sim_inserted_notify() either if 
>> the SIM is locked, or/and when qinistat returns 3.
> 
> It also happens on a locked SIM - log attached.
> 

So in your log:

ofonod[3982107]: ../git/plugins/quectel.c:sim_watch_cb() 0x610000000d40
ofonod[3982107]: ../git/src/sim.c:sim_enter_pin_cb() Waiting for 
ofono_sim_initialized_notify

So we're supposed to be waiting here for a bit.  Somehow we're not or 
you're calling ofono_sim_initialized early.  Perhaps the default sim 
driver is doing this?  Check this first.

ofonod[3982107]: Aux: > AT+CPIN?\r
ofonod[3982107]: Aux: < \r\n+CPIN: READY\r\n\r\nOK\r\n
ofonod[3982107]: Aux: > AT+CPIN?\r
ofonod[3982107]: Aux: < \r\n+CPIN: READY\r\n\r\nOK\r\n

It looks like we get into recheck_pin here somehow...

ofonod[3982107]: ../git/drivers/atmodem/sim.c:at_cpin_cb() crsm_pin_cb: 
READY
ofonod[3982107]: ../git/src/sim.c:sim_pin_query_cb() sim->pin_type: 1, 
pin_type: 0
ofonod[3982107]: ../git/drivers/atmodem/sim.c:at_pin_retries_query()
ofonod[3982107]: Aux: > AT+QTRPIN\r
ofonod[3982107]: Aux: < \r\n+QTRPIN: 3,3,10,10\r\n\r\nOK\r\n
ofonod[3982107]: Aux: > AT+CUAD\r
ofonod[3982107]: Aux: < \r\n+CME ERROR: 100\r\n

Regards,
-Denis

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCHv3] quectel: handle sim states
  2019-09-24  2:50         ` Denis Kenzior
  2019-09-24  2:51           ` Denis Kenzior
@ 2019-09-24 20:44           ` Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
  2019-09-24 20:56             ` Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
  1 sibling, 1 reply; 15+ messages in thread
From: Martin =?unknown-8bit?q?Hundeb=C3=B8ll?= @ 2019-09-24 20:44 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 1861 bytes --]

Hi Denis,

On 24/09/2019 04.50, Denis Kenzior wrote:
>> I've tried to work-around quectel_post_sim() being called after the 
>> PIN is entered, but before I call ofono_sim_initialized_notify():
>>
>> ../git/drivers/atmodem/sim.c:at_crsm_read_cb() crsm_read_cb: 90, 00, 1
>> ../git/src/simfs.c:sim_fs_op_read_block_cb() bufoff: 0, dataoff: 0, 
>> tocopy: 1
>> Aux: > AT+CIMI\r
>> ../git/plugins/quectel.c:init_timer_cb() 0x610000000d40
>> Aux: < \r\n238013814764391\r\n\r\nOK\r\n
>> ../git/drivers/atmodem/sim.c:at_cimi_cb() cimi_cb: 238013814764391
>> ../git/src/sim.c:call_state_watches()
>> ../git/src/modem.c:modem_change_state() old state: 1, new state: 2
>> ../git/plugins/quectel.c:quectel_post_sim() 0x610000000d40
>>
>> So after reading the CIMI, the SIM is marked as ready, and 
>> call_state_watches() is called. (I added a DBG() there.)
>>
>> Is there a way to avoid that?
>>
> 
> So this is what sim_initialized is for.  After the PIN is entered ofono 
> will pause sim initialization until sim_initialized is called.  If 
> you've gotten to the point that read_imsi is being executed, then you 
> somehow called ofono_sim_initialized too early.
> 
> This is why I asked in my previous reply whether you're somehow 
> triggering ofono_sim_initialized before it should be triggered?  Or 
> maybe there's something else happening.

I tried implementing what you suggest - see the attached patch. But I 
still get "SMS not supported by this modem.".

The attached log shows quectel_post_sim() being called (line 584) way 
before QINISTAT returns 3 (line 686).

Is this because my SIM isn't locked, and so the 
ofono_sim_inserted_notify() call makes it go all the way?

I can work around it by calling ofono_sim_inserted_notify() either if 
the SIM is locked, or/and when qinistat returns 3.

// Martin


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-quectel-rework-sim-detection.patch --]
[-- Type: text/x-patch, Size: 12225 bytes --]

>From aff53e97a83947860bfa01e5526a767f360fdb40 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Martin=20Hundeb=C3=B8ll?= <martin@geanix.com>
Date: Tue, 24 Sep 2019 21:36:20 +0200
Subject: [PATCH] quectel: rework sim detection

Simplify sim handling by querying cpin state directly from quectel_pre_sim()
---
 plugins/quectel.c | 376 +++++++++++++++-------------------------------
 1 file changed, 124 insertions(+), 252 deletions(-)

diff --git a/plugins/quectel.c b/plugins/quectel.c
index 1d21d6dd..14b0de32 100644
--- a/plugins/quectel.c
+++ b/plugins/quectel.c
@@ -84,21 +84,12 @@ enum quectel_model {
 	QUECTEL_MC60,
 };
 
-enum quectel_state {
-	QUECTEL_STATE_INITIALIZING = 0,
-	QUECTEL_STATE_POST_SIM,
-	QUECTEL_STATE_READY,
-	QUECTEL_STATE_INITIALIZED,
-};
-
 struct quectel_data {
 	GAtChat *modem;
 	GAtChat *aux;
 	enum ofono_vendor vendor;
 	enum quectel_model model;
-	enum quectel_state state;
 	struct ofono_sim *sim;
-	enum ofono_sim_state sim_state;
 	unsigned int sim_watch;
 
 	/* used by quectel uart driver */
@@ -531,213 +522,6 @@ static void dbus_hw_enable(struct ofono_modem *modem)
 	ofono_modem_add_interface(modem, dbus_hw_interface);
 }
 
-static void qinistat_cb(gboolean ok, GAtResult *result, gpointer user_data)
-{
-	struct ofono_modem *modem = user_data;
-	struct quectel_data *data = ofono_modem_get_data(modem);
-	GAtResultIter iter;
-	int ready = 0;
-	int status;
-
-	DBG("%p", modem);
-
-	g_at_result_iter_init(&iter, result);
-
-	if (!g_at_result_iter_next(&iter, "+QINISTAT:"))
-		return;
-
-	if (!g_at_result_iter_next_number(&iter, &status))
-		return;
-
-	DBG("qinistat: %d", status);
-
-	switch (data->model) {
-	case QUECTEL_UC15:
-		/* UC15 uses a bitmap of 1 + 2 + 4 = 7 */
-		ready = 7;
-		break;
-	case QUECTEL_M95:
-	case QUECTEL_MC60:
-		/* M95 and MC60 uses a counter to 3 */
-		ready = 3;
-		break;
-	case QUECTEL_UNKNOWN:
-		ready = 0;
-		break;
-	}
-
-	if (status != ready) {
-		l_timeout_modify_ms(data->init_timeout, 500);
-		return;
-	}
-
-	l_timeout_remove(data->init_timeout);
-	data->init_timeout = NULL;
-
-	if (data->sim_state == OFONO_SIM_STATE_READY) {
-		/*
-		 * when initializing with a non-locked sim card, the sim atom
-		 * isn't created until now to avoid accessing it before the
-		 * modem is ready.
-		 *
-		 * call ofono_modem_set_powered() to make ofono call
-		 * quectel_pre_sim() where the sim atom is created.
-		 */
-		ofono_modem_set_powered(modem, true);
-	} else {
-		/*
-		 * When initialized with a locked sim card, the modem is already
-		 * powered up, and the inserted signal has been sent to allow
-		 * the pin to be entered. So simply update the state, and notify
-		 * about the finished initialization below.
-		 */
-		data->sim_state = OFONO_SIM_STATE_READY;
-	}
-
-	ofono_sim_initialized_notify(data->sim);
-
-	/*
-	 * If quectel_post_sim() has not yet been called, then postpone atom
-	 * creation until it is called. Otherwise create the atoms now.
-	 */
-	if (data->state != QUECTEL_STATE_POST_SIM) {
-		data->state = QUECTEL_STATE_READY;
-		return;
-	}
-
-	ofono_sms_create(modem, data->vendor, "atmodem", data->aux);
-	ofono_phonebook_create(modem, data->vendor, "atmodem", data->aux);
-	ofono_voicecall_create(modem, data->vendor, "atmodem", data->aux);
-	ofono_call_volume_create(modem, data->vendor, "atmodem", data->aux);
-	data->state = QUECTEL_STATE_INITIALIZED;
-}
-
-static void init_timer_cb(struct l_timeout *timeout, void *user_data)
-{
-	struct ofono_modem *modem = user_data;
-	struct quectel_data *data = ofono_modem_get_data(modem);
-
-	DBG("%p", modem);
-
-	g_at_chat_send(data->aux, "AT+QINISTAT", qinistat_prefix, qinistat_cb,
-			modem, NULL);
-}
-
-static void sim_watch_cb(GAtResult *result, void *user_data)
-{
-	struct ofono_modem *modem = user_data;
-	struct quectel_data *data = ofono_modem_get_data(modem);
-
-	DBG("%p", modem);
-
-	g_at_chat_unregister(data->aux, data->sim_watch);
-	data->sim_watch = 0;
-
-	data->init_timeout = l_timeout_create_ms(500, init_timer_cb, modem, NULL);
-	if (!data->init_timeout) {
-		close_serial(modem);
-		return;
-	}
-}
-
-static enum ofono_sim_state cme_parse(GAtResult *result)
-{
-	struct ofono_error error;
-
-	decode_at_error(&error, g_at_result_final_response(result));
-
-	if (error.type != OFONO_ERROR_TYPE_CME)
-		return OFONO_SIM_STATE_RESETTING;
-
-	switch (error.error) {
-	case 5:
-	case 6:
-	case 7:
-	case 11:
-	case 12:
-	case 17:
-	case 18:
-		return OFONO_SIM_STATE_LOCKED_OUT;
-	case 10:
-		return OFONO_SIM_STATE_NOT_PRESENT;
-	case 13:
-	case 14:
-	case 15:
-		return OFONO_SIM_STATE_RESETTING;
-	default:
-		ofono_error("unknown cpin error: %i", error.error);
-		return OFONO_SIM_STATE_RESETTING;
-	}
-}
-
-static enum ofono_sim_state cpin_parse(GAtResult *result)
-{
-	GAtResultIter iter;
-	const char *cpin;
-
-	g_at_result_iter_init(&iter, result);
-
-	if (!g_at_result_iter_next(&iter, "+CPIN:"))
-		return OFONO_SIM_STATE_RESETTING;
-
-	g_at_result_iter_next_unquoted_string(&iter, &cpin);
-
-	if (g_strcmp0(cpin, "NOT INSERTED") == 0)
-		return OFONO_SIM_STATE_NOT_PRESENT;
-
-	if (g_strcmp0(cpin, "READY") == 0)
-		return OFONO_SIM_STATE_READY;
-
-	return OFONO_SIM_STATE_LOCKED_OUT;
-}
-
-static void cpin_query(gboolean ok, GAtResult *result, gpointer user_data)
-{
-	struct ofono_modem *modem = user_data;
-	struct quectel_data *data = ofono_modem_get_data(modem);
-
-	DBG("%p ok %i", modem, ok);
-
-	if (ok)
-		data->sim_state = cpin_parse(result);
-	else
-		data->sim_state = cme_parse(result);
-
-	/* Turn off the radio. */
-	g_at_chat_send(data->aux, "AT+CFUN=4", none_prefix, NULL, NULL, NULL);
-
-	switch (data->sim_state) {
-	case OFONO_SIM_STATE_LOCKED_OUT:
-		ofono_modem_set_powered(modem, true);
-		data->sim_watch = g_at_chat_register(data->aux, "+CPIN: READY",
-							sim_watch_cb, FALSE,
-							modem, NULL);
-		if (!data->sim_watch) {
-			ofono_error("failed to create sim watch");
-			close_serial(modem);
-			return;
-		}
-		break;
-	case OFONO_SIM_STATE_READY:
-		data->init_timeout = l_timeout_create_ms(500, init_timer_cb,
-							modem, NULL);
-		if (!data->init_timeout) {
-			ofono_error("failed to create qinitstat timer");
-			close_serial(modem);
-			return;
-		}
-		break;
-	case OFONO_SIM_STATE_RESETTING:
-	case OFONO_SIM_STATE_INSERTED:
-		g_at_chat_send(data->aux, "AT+CPIN?", cpin_prefix, cpin_query,
-				modem, NULL);
-		break;
-	case OFONO_SIM_STATE_NOT_PRESENT:
-		ofono_warn("%s: sim not present", ofono_modem_get_path(modem));
-		ofono_modem_set_powered(modem, true);
-	}
-}
-
 static void cfun_enable(gboolean ok, GAtResult *result, gpointer user_data)
 {
 	struct ofono_modem *modem = user_data;
@@ -751,9 +535,8 @@ static void cfun_enable(gboolean ok, GAtResult *result, gpointer user_data)
 	}
 
 	dbus_hw_enable(modem);
-
-	g_at_chat_send(data->aux, "AT+CPIN?", cpin_prefix, cpin_query, modem,
-			NULL);
+	g_at_chat_send(data->aux, "AT+CFUN=4", none_prefix, NULL, NULL, NULL);
+	ofono_modem_set_powered(modem, true);
 }
 
 static void cfun_query(gboolean ok, GAtResult *result, gpointer user_data)
@@ -1109,8 +892,6 @@ static int quectel_disable(struct ofono_modem *modem)
 	g_at_chat_send(data->aux, "AT+CFUN=0", cfun_prefix, cfun_disable, modem,
 			NULL);
 
-	data->state = QUECTEL_STATE_INITIALIZING;
-
 	return -EINPROGRESS;
 }
 
@@ -1144,25 +925,138 @@ static void quectel_set_online(struct ofono_modem *modem, ofono_bool_t online,
 	g_free(cbd);
 }
 
-static void quectel_pre_sim(struct ofono_modem *modem)
+static void qinistat_cb(gboolean ok, GAtResult *result, gpointer user_data)
 {
+	struct ofono_modem *modem = user_data;
 	struct quectel_data *data = ofono_modem_get_data(modem);
+	GAtResultIter iter;
+	int ready = 0;
+	int status;
 
 	DBG("%p", modem);
 
-	ofono_devinfo_create(modem, 0, "atmodem", data->aux);
-	data->sim = ofono_sim_create(modem, data->vendor, "atmodem", data->aux);
-	if (!data->sim)
+	g_at_result_iter_init(&iter, result);
+
+	if (!g_at_result_iter_next(&iter, "+QINISTAT:"))
+		return;
+
+	if (!g_at_result_iter_next_number(&iter, &status))
 		return;
 
-	switch (data->sim_state) {
-	case OFONO_SIM_STATE_LOCKED_OUT:
-	case OFONO_SIM_STATE_READY:
-		ofono_sim_inserted_notify(data->sim, true);
+	DBG("qinistat: %d", status);
+
+	switch (data->model) {
+	case QUECTEL_UC15:
+		/* UC15 uses a bitmap of 1 + 2 + 4 = 7 */
+		ready = 7;
 		break;
-	default:
+	case QUECTEL_M95:
+	case QUECTEL_MC60:
+		/* M95 and MC60 uses a counter to 3 */
+		ready = 3;
+		break;
+	case QUECTEL_UNKNOWN:
+		ready = 0;
 		break;
 	}
+
+	if (status != ready) {
+		l_timeout_modify_ms(data->init_timeout, 500);
+		return;
+	}
+
+	l_timeout_remove(data->init_timeout);
+	data->init_timeout = NULL;
+	ofono_sim_initialized_notify(data->sim);
+}
+
+static void init_timer_cb(struct l_timeout *timeout, void *user_data)
+{
+	struct ofono_modem *modem = user_data;
+	struct quectel_data *data = ofono_modem_get_data(modem);
+
+	DBG("%p", modem);
+
+	g_at_chat_send(data->aux, "AT+QINISTAT", qinistat_prefix, qinistat_cb,
+			modem, NULL);
+}
+
+static void sim_watch_cb(GAtResult *result, void *user_data)
+{
+	struct ofono_modem *modem = user_data;
+	struct quectel_data *data = ofono_modem_get_data(modem);
+	GAtResultIter iter;
+	const char *cpin;
+
+	DBG("%p", modem);
+
+	g_at_result_iter_init(&iter, result);
+
+	if (!g_at_result_iter_next(&iter, "+CPIN:"))
+		return;
+
+	g_at_result_iter_next_unquoted_string(&iter, &cpin);
+
+	if (g_strcmp0(cpin, "NOT INSERTED") == 0) {
+		ofono_warn("%s: sim not present", ofono_modem_get_path(modem));
+		return;
+	}
+
+	ofono_sim_inserted_notify(data->sim, true);
+
+	if (g_strcmp0(cpin, "READY") != 0) {
+		ofono_info("%s: sim locked", ofono_modem_get_path(modem));
+		return;
+	}
+
+	g_at_chat_unregister(data->aux, data->sim_watch);
+	data->sim_watch = 0;
+
+	data->init_timeout = l_timeout_create_ms(500, init_timer_cb, modem, NULL);
+	if (!data->init_timeout) {
+		close_serial(modem);
+		return;
+	}
+}
+
+static void cpin_cb(gboolean ok, GAtResult *result, gpointer user_data)
+{
+	struct ofono_modem *modem = user_data;
+	struct ofono_error error;
+
+	if (ok)
+		return;
+
+	decode_at_error(&error, g_at_result_final_response(result));
+
+	if (error.type == OFONO_ERROR_TYPE_CME && error.error == 10) {
+		ofono_warn("%s: sim not present", ofono_modem_get_path(modem));
+		return;
+	}
+
+	ofono_error("%s: unknown error from cpin: %i",
+			ofono_modem_get_path(modem), error.error);
+}
+
+static void quectel_pre_sim(struct ofono_modem *modem)
+{
+	struct quectel_data *data = ofono_modem_get_data(modem);
+
+	DBG("%p", modem);
+
+	ofono_voicecall_create(modem, data->vendor, "atmodem", data->aux);
+	data->sim = ofono_sim_create(modem, data->vendor, "atmodem", data->aux);
+	data->sim_watch = g_at_chat_register(data->aux, "+CPIN:", sim_watch_cb,
+						FALSE, modem, NULL);
+
+	/*
+	 * unsolicited indications about a missing or locked sim can occur before
+	 * the auto-baud dance open_serial(), so issue a CPIN query here
+	 *
+	 * the callback is only called for CME errors to catch those. The +CPIN
+	 * response is catched by the watch registered above
+	 */
+	g_at_chat_send(data->aux, "AT+CPIN?", none_prefix, cpin_cb, modem, NULL);
 }
 
 static void quectel_post_sim(struct ofono_modem *modem)
@@ -1180,31 +1074,9 @@ static void quectel_post_sim(struct ofono_modem *modem)
 	if (gprs && gc)
 		ofono_gprs_add_context(gprs, gc);
 
-	/*
-	 * the sim related atoms must not be created until the modem is really
-	 * ready, so check the state here
-	 */
-	switch (data->state) {
-	case QUECTEL_STATE_INITIALIZING:
-		/*
-		 * the modem is still initializing, so postpone the atom
-		 * creation until qinistat_cb() determines the modem is
-		 * ready
-		 */
-		data->state = QUECTEL_STATE_POST_SIM;
-		return;
-	case QUECTEL_STATE_READY:
-		/* the modem is ready, so create atoms below */
-		break;
-	default:
-		return;
-	}
-
 	ofono_sms_create(modem, data->vendor, "atmodem", data->aux);
 	ofono_phonebook_create(modem, data->vendor, "atmodem", data->aux);
-	ofono_voicecall_create(modem, data->vendor, "atmodem", data->aux);
 	ofono_call_volume_create(modem, data->vendor, "atmodem", data->aux);
-	data->state = QUECTEL_STATE_INITIALIZED;
 }
 
 static void quectel_post_online(struct ofono_modem *modem)
-- 
2.23.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: ofono.log --]
[-- Type: text/x-log, Size: 82586 bytes --]

ofonod[3979408]: oFono version 1.30
ofonod[3979408]: ../git/src/plugin.c:__ofono_plugin_init() 
ofonod[3979408]: ../git/plugins/push-notification.c:push_notification_init() 
ofonod[3979408]: ../git/plugins/smart-messaging.c:smart_messaging_init() 
ofonod[3979408]: ../git/plugins/emulator_fuzz.c:emulator_fuzz_init() 
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e47b9f7be0, name: stktest
ofonod[3979408]: ../git/src/modem.c:ofono_modem_create() name: stktest, type: stktest
ofonod[3979408]: ../git/src/modem.c:ofono_modem_register() 0x610000000140
ofonod[3979408]: ../git/plugins/stktest.c:stktest_probe() 0x610000000140
ofonod[3979408]: ../git/src/modem.c:emit_modem_added() 0x610000000140
ofonod[3979408]: ../git/src/modem.c:get_modem_property() modem 0x610000000140 property SystemPath
ofonod[3979408]: ../git/src/modem.c:call_modemwatches() 0x610000000140 added:1
ofonod[3979408]: ../git/plugins/smart-messaging.c:modem_watch() modem: 0x610000000140, added: 1
ofonod[3979408]: ../git/plugins/push-notification.c:modem_watch() modem: 0x610000000140, added: 1
ofonod[3979408]: ../git/examples/emulator.c:example_emulator_init() 
ofonod[3979408]: ../git/examples/emulator.c:modem_watch() modem: 0x610000000140, added: 1
ofonod[3979408]: ../git/src/gprs-provision.c:ofono_gprs_provision_driver_register() driver: 0x55e47b9f6a60 name: Example GPRS context provisioning
ofonod[3979408]: ../git/src/nettime.c:ofono_nettime_driver_register() driver: 0x55e47b9f6720 name: Example Network Time
ofonod[3979408]: ../git/src/history.c:ofono_history_driver_register() driver: 0x55e47b9f5d00 name: Example Call History
ofonod[3979408]: ../git/plugins/upower.c:upower_init() upower init
ofonod[3979408]: ../git/src/handsfree-audio.c:ofono_handsfree_card_driver_register() driver: 0x55e47b9f3b60
ofonod[3979408]: ../git/plugins/hfp_ag_bluez5.c:modem_watch() modem: 0x610000000140, added: 1
ofonod[3979408]: ../git/plugins/dun_gw_bluez5.c:dun_gw_init() 
ofonod[3979408]: ../git/plugins/dun_gw_bluez5.c:modem_watch() modem: 0x610000000140, added: 1
ofonod[3979408]: ../git/src/handsfree-audio.c:ofono_handsfree_card_driver_register() driver: 0x55e47b9f1040
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e47b9f0fc0, name: hfp
ofonod[3979408]: ../git/plugins/xmm7xxx.c:xmm7xxx_init() 
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e47b9eea60, name: xmm7xxx
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e47b9edb60, name: ublox
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e47b9eb260, name: quectel
ofonod[3979408]: ../git/plugins/telit.c:telit_init() 
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e47b9e9e80, name: telit
ofonod[3979408]: ../git/plugins/connman.c:connman_init() 
ofonod[3979408]: ../git/src/private-network.c:ofono_private_network_driver_register() driver: 0x55e47b9e94c0, name: ConnMan Private Network
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e47b9e8ca0, name: sim7100
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e47b9e7b60, name: sim900
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e47b9e6e00, name: samsung
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e47b9e65a0, name: speedupcdma
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e47b9e5aa0, name: speedup
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e47b9e5200, name: alcatel
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e47b9e4300, name: icera
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e47b9e38c0, name: linktop
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e47b9e3280, name: nokiacdma
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e47b9e29e0, name: nokia
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e47b9e1320, name: gemalto
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e47b9e0800, name: cinterion
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e47b9dece0, name: ste
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e47b9dd540, name: ifx
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e47b9dcbc0, name: palmpre
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e47b9dbfa0, name: novatel
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e47b9db560, name: sierra
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e47b9d9d80, name: huawei
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e47b9d8ca0, name: zte
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e47b9d7cc0, name: hso
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e47b9d6c20, name: mbm
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e47b9d5880, name: calypso
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e47b9d5040, name: wavecom
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e47b9d4900, name: g1
ofonod[3979408]: ../git/src/cdma-voicecall.c:ofono_cdma_voicecall_driver_register() driver: 0x55e47b981ca0, name: cdmamodem
ofonod[3979408]: ../git/src/modem.c:ofono_devinfo_driver_register() driver: 0x55e47b981d00, name: cdmamodem
ofonod[3979408]: ../git/src/cdma-connman.c:ofono_cdma_connman_driver_register() driver: 0x55e47b981d60, name: cdmamodem
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e47b9d2060, name: phonesim
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e47b9d20e0, name: localhfp
ofonod[3979408]: ../git/src/gprs.c:ofono_gprs_context_driver_register() driver: 0x55e47b9d1f20, name: phonesim
ofonod[3979408]: ../git/src/ctm.c:ofono_ctm_driver_register() driver: 0x55e47b9d2000, name: phonesim
ofonod[3979408]: ../git/src/radio-settings.c:ofono_radio_settings_driver_register() driver: 0x55e47b9d1f80, name: phonesim
ofonod[3979408]: ../git/plugins/phonesim.c:parse_config() filename /usr/local/etc/ofono/phonesim.conf
ofonod[3979408]: Reading of /usr/local/etc/ofono/phonesim.conf failed: No such file or directory
ofonod[3979408]: ../git/src/radio-settings.c:ofono_radio_settings_driver_register() driver: 0x55e47b981b60, name: xmm7modem
ofonod[3979408]: ../git/src/ims.c:ofono_ims_driver_register() driver: 0x55e47b981be0, name: xmm7modem
ofonod[3979408]: ../git/src/netmon.c:ofono_netmon_driver_register() driver: 0x55e47b981c40, name: xmm7modem
ofonod[3979408]: ../git/src/location-reporting.c:ofono_location_reporting_driver_register() driver: 0x55e47b981a40, name: gemaltomodem
ofonod[3979408]: ../git/src/voicecall.c:ofono_voicecall_driver_register() driver: 0x55e47b981aa0, name: gemaltomodem
ofonod[3979408]: ../git/src/gprs.c:ofono_gprs_context_driver_register() driver: 0x55e47b981940, name: ubloxmodem
ofonod[3979408]: ../git/src/network.c:ofono_netreg_driver_register() driver: 0x55e47b989c80, name: ubloxmodem
ofonod[3979408]: ../git/src/netmon.c:ofono_netmon_driver_register() driver: 0x55e47b9819a0, name: ubloxmodem
ofonod[3979408]: ../git/src/lte.c:ofono_lte_driver_register() driver: 0x55e47b981a00, name: ubloxmodem
ofonod[3979408]: ../git/src/ussd.c:ofono_ussd_driver_register() driver: 0x55e47b9817e0, name: speedupmodem
ofonod[3979408]: ../git/src/voicecall.c:ofono_voicecall_driver_register() driver: 0x55e47b981540, name: hfpmodem
ofonod[3979408]: ../git/src/modem.c:ofono_devinfo_driver_register() driver: 0x55e47b9816e0, name: hfpmodem
ofonod[3979408]: ../git/src/network.c:ofono_netreg_driver_register() driver: 0x55e47b981600, name: hfpmodem
ofonod[3979408]: ../git/src/call-volume.c:ofono_call_volume_driver_register() driver: 0x55e47b981680, name: hfpmodem
ofonod[3979408]: ../git/src/handsfree.c:ofono_handsfree_driver_register() driver: 0x55e47b981740, name: hfpmodem
ofonod[3979408]: ../git/src/siri.c:ofono_siri_driver_register() driver: 0x55e47b9817a0, name: hfpmodem
ofonod[3979408]: ../git/src/network.c:ofono_netreg_driver_register() driver: 0x55e47b981460, name: dunmodem
ofonod[3979408]: ../git/src/gprs.c:ofono_gprs_driver_register() driver: 0x55e47b9814e0, name: dunmodem
ofonod[3979408]: ../git/src/voicecall.c:ofono_voicecall_driver_register() driver: 0x55e47b9812c0, name: stemodem
ofonod[3979408]: ../git/src/gprs.c:ofono_gprs_context_driver_register() driver: 0x55e47b981400, name: stemodem
ofonod[3979408]: ../git/src/radio-settings.c:ofono_radio_settings_driver_register() driver: 0x55e47b981380, name: stemodem
ofonod[3979408]: ../git/src/voicecall.c:ofono_voicecall_driver_register() driver: 0x55e47b981020, name: ifxmodem
ofonod[3979408]: ../git/src/audio-settings.c:ofono_audio_settings_driver_register() driver: 0x55e47b9810e0, name: ifxmodem
ofonod[3979408]: ../git/src/radio-settings.c:ofono_radio_settings_driver_register() driver: 0x55e47b981120, name: ifxmodem
ofonod[3979408]: ../git/src/gprs.c:ofono_gprs_context_driver_register() driver: 0x55e47b9811a0, name: ifxmodem
ofonod[3979408]: ../git/src/stk.c:ofono_stk_driver_register() driver: 0x55e47b981200, name: ifxmodem
ofonod[3979408]: ../git/src/ctm.c:ofono_ctm_driver_register() driver: 0x55e47b981260, name: ifxmodem
ofonod[3979408]: ../git/src/gprs.c:ofono_gprs_context_driver_register() driver: 0x55e47b980f40, name: hsomodem
ofonod[3979408]: ../git/src/radio-settings.c:ofono_radio_settings_driver_register() driver: 0x55e47b980fa0, name: hsomodem
ofonod[3979408]: ../git/src/location-reporting.c:ofono_location_reporting_driver_register() driver: 0x55e47b980e80, name: telitmodem
ofonod[3979408]: ../git/src/gprs.c:ofono_gprs_context_driver_register() driver: 0x55e47b980ee0, name: telitncmmodem
ofonod[3979408]: ../git/src/gprs.c:ofono_gprs_context_driver_register() driver: 0x55e47b980d60, name: mbmmodem
ofonod[3979408]: ../git/src/stk.c:ofono_stk_driver_register() driver: 0x55e47b980dc0, name: mbmmodem
ofonod[3979408]: ../git/src/location-reporting.c:ofono_location_reporting_driver_register() driver: 0x55e47b980e20, name: mbmmodem
ofonod[3979408]: ../git/src/voicecall.c:ofono_voicecall_driver_register() driver: 0x55e47b980c40, name: calypsomodem
ofonod[3979408]: ../git/src/stk.c:ofono_stk_driver_register() driver: 0x55e47b980d00, name: calypsomodem
ofonod[3979408]: ../git/src/ussd.c:ofono_ussd_driver_register() driver: 0x55e47b9809c0, name: huaweimodem
ofonod[3979408]: ../git/src/voicecall.c:ofono_voicecall_driver_register() driver: 0x55e47b980a20, name: huaweimodem
ofonod[3979408]: ../git/src/audio-settings.c:ofono_audio_settings_driver_register() driver: 0x55e47b980ae0, name: huaweimodem
ofonod[3979408]: ../git/src/radio-settings.c:ofono_radio_settings_driver_register() driver: 0x55e47b980b80, name: huaweimodem
ofonod[3979408]: ../git/src/gprs.c:ofono_gprs_context_driver_register() driver: 0x55e47b980b20, name: huaweimodem
ofonod[3979408]: ../git/src/cdma-netreg.c:ofono_cdma_netreg_driver_register() driver: 0x55e47b980c00, name: huaweimodem
ofonod[3979408]: ../git/src/gprs.c:ofono_gprs_context_driver_register() driver: 0x55e47b9808e0, name: iceramodem
ofonod[3979408]: ../git/src/radio-settings.c:ofono_radio_settings_driver_register() driver: 0x55e47b980940, name: iceramodem
ofonod[3979408]: ../git/src/radio-settings.c:ofono_radio_settings_driver_register() driver: 0x55e47b980860, name: ztemodem
ofonod[3979408]: ../git/src/gprs.c:ofono_gprs_context_driver_register() driver: 0x55e47b980800, name: swmodem
ofonod[3979408]: ../git/src/radio-settings.c:ofono_radio_settings_driver_register() driver: 0x55e47b980780, name: nwmodem
ofonod[3979408]: ../git/src/voicecall.c:ofono_voicecall_driver_register() driver: 0x55e47b980400, name: atmodem
ofonod[3979408]: ../git/src/modem.c:ofono_devinfo_driver_register() driver: 0x55e47b980560, name: atmodem
ofonod[3979408]: ../git/src/call-barring.c:ofono_call_barring_driver_register() driver: 0x55e47b9804c0, name: atmodem
ofonod[3979408]: ../git/src/call-forwarding.c:ofono_call_forwarding_driver_register() driver: 0x55e47b97fe40, name: atmodem
ofonod[3979408]: ../git/src/call-meter.c:ofono_call_meter_driver_register() driver: 0x55e47b97fea0, name: atmodem
ofonod[3979408]: ../git/src/call-settings.c:ofono_call_settings_driver_register() driver: 0x55e47b97fd00, name: atmodem
ofonod[3979408]: ../git/src/phonebook.c:ofono_phonebook_driver_register() driver: 0x55e47b980520, name: atmodem
ofonod[3979408]: ../git/src/ussd.c:ofono_ussd_driver_register() driver: 0x55e47b9803a0, name: atmodem
ofonod[3979408]: ../git/src/sms.c:ofono_sms_driver_register() driver: 0x55e47b97fd80, name: atmodem
ofonod[3979408]: ../git/src/sim.c:ofono_sim_driver_register() driver: 0x55e47b980140, name: atmodem
ofonod[3979408]: ../git/src/sim.c:ofono_sim_driver_register() driver: 0x55e47b980240, name: atmodem-noef
ofonod[3979408]: ../git/src/stk.c:ofono_stk_driver_register() driver: 0x55e47b980340, name: atmodem
ofonod[3979408]: ../git/src/network.c:ofono_netreg_driver_register() driver: 0x55e47b97ff20, name: atmodem
ofonod[3979408]: ../git/src/cbs.c:ofono_cbs_driver_register() driver: 0x55e47b97fde0, name: atmodem
ofonod[3979408]: ../git/src/call-volume.c:ofono_call_volume_driver_register() driver: 0x55e47b9805c0, name: atmodem
ofonod[3979408]: ../git/src/gprs.c:ofono_gprs_driver_register() driver: 0x55e47b980620, name: atmodem
ofonod[3979408]: ../git/src/gprs.c:ofono_gprs_context_driver_register() driver: 0x55e47b980680, name: atmodem
ofonod[3979408]: ../git/src/gnss.c:ofono_gnss_driver_register() driver: 0x55e47b9806e0, name: atmodem
ofonod[3979408]: ../git/src/lte.c:ofono_lte_driver_register() driver: 0x55e47b980740, name: atmodem
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e47b9aaf00, name: mbim
ofonod[3979408]: ../git/src/modem.c:ofono_devinfo_driver_register() driver: 0x55e47b97fa00, name: mbim
ofonod[3979408]: ../git/src/sim.c:ofono_sim_driver_register() driver: 0x55e47b97fa60, name: mbim
ofonod[3979408]: ../git/src/network.c:ofono_netreg_driver_register() driver: 0x55e47b97fb60, name: mbim
ofonod[3979408]: ../git/src/sms.c:ofono_sms_driver_register() driver: 0x55e47b97fbe0, name: mbim
ofonod[3979408]: ../git/src/gprs.c:ofono_gprs_driver_register() driver: 0x55e47b97fc40, name: mbim
ofonod[3979408]: ../git/src/gprs.c:ofono_gprs_context_driver_register() driver: 0x55e47b97fca0, name: mbim
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e47b9a7240, name: gobi
ofonod[3979408]: ../git/src/modem.c:ofono_devinfo_driver_register() driver: 0x55e47b97f360, name: qmimodem
ofonod[3979408]: ../git/src/network.c:ofono_netreg_driver_register() driver: 0x55e47b97f480, name: qmimodem
ofonod[3979408]: ../git/src/voicecall.c:ofono_voicecall_driver_register() driver: 0x55e47b97f3c0, name: qmimodem
ofonod[3979408]: ../git/src/sim.c:ofono_sim_driver_register() driver: 0x55e47b97f500, name: qmimodem-legacy
ofonod[3979408]: ../git/src/sim.c:ofono_sim_driver_register() driver: 0x55e47b97f600, name: qmimodem
ofonod[3979408]: ../git/src/sms.c:ofono_sms_driver_register() driver: 0x55e47b97f700, name: qmimodem
ofonod[3979408]: ../git/src/ussd.c:ofono_ussd_driver_register() driver: 0x55e47b97f760, name: qmimodem
ofonod[3979408]: ../git/src/gprs.c:ofono_gprs_driver_register() driver: 0x55e47b97f7c0, name: qmimodem
ofonod[3979408]: ../git/src/gprs.c:ofono_gprs_context_driver_register() driver: 0x55e47b97f820, name: qmimodem
ofonod[3979408]: ../git/src/lte.c:ofono_lte_driver_register() driver: 0x55e47b97f880, name: qmimodem
ofonod[3979408]: ../git/src/radio-settings.c:ofono_radio_settings_driver_register() driver: 0x55e47b97f8c0, name: qmimodem
ofonod[3979408]: ../git/src/location-reporting.c:ofono_location_reporting_driver_register() driver: 0x55e47b97f940, name: qmimodem
ofonod[3979408]: ../git/src/netmon.c:ofono_netmon_driver_register() driver: 0x55e47b97f9a0, name: qmimodem
ofonod[3979408]: ../git/drivers/rilmodem/rilmodem.c:rilmodem_init() 
ofonod[3979408]: ../git/src/modem.c:ofono_devinfo_driver_register() driver: 0x55e47b97e620, name: rilmodem
ofonod[3979408]: ../git/drivers/rilmodem/sim.c:ril_sim_init() 
ofonod[3979408]: ../git/src/sim.c:ofono_sim_driver_register() driver: 0x55e47b97e960, name: rilmodem
ofonod[3979408]: ../git/src/voicecall.c:ofono_voicecall_driver_register() driver: 0x55e47b97e700, name: rilmodem
ofonod[3979408]: ../git/src/sms.c:ofono_sms_driver_register() driver: 0x55e47b97ea60, name: rilmodem
ofonod[3979408]: ../git/src/network.c:ofono_netreg_driver_register() driver: 0x55e47b97e680, name: rilmodem
ofonod[3979408]: ../git/src/call-volume.c:ofono_call_volume_driver_register() driver: 0x55e47b97e7c0, name: rilmodem
ofonod[3979408]: ../git/src/gprs.c:ofono_gprs_driver_register() driver: 0x55e47b97e820, name: rilmodem
ofonod[3979408]: ../git/src/gprs.c:ofono_gprs_context_driver_register() driver: 0x55e47b97e880, name: rilmodem
ofonod[3979408]: ../git/src/ussd.c:ofono_ussd_driver_register() driver: 0x55e47b97eac0, name: rilmodem
ofonod[3979408]: ../git/src/call-settings.c:ofono_call_settings_driver_register() driver: 0x55e47b97eb20, name: rilmodem
ofonod[3979408]: ../git/src/call-forwarding.c:ofono_call_forwarding_driver_register() driver: 0x55e47b97eba0, name: rilmodem
ofonod[3979408]: ../git/src/radio-settings.c:ofono_radio_settings_driver_register() driver: 0x55e47b97ec00, name: rilmodem
ofonod[3979408]: ../git/src/call-barring.c:ofono_call_barring_driver_register() driver: 0x55e47b97ec80, name: rilmodem
ofonod[3979408]: ../git/src/netmon.c:ofono_netmon_driver_register() driver: 0x55e47b97ece0, name: rilmodem
ofonod[3979408]: ../git/src/stk.c:ofono_stk_driver_register() driver: 0x55e47b97ed40, name: rilmodem
ofonod[3979408]: ../git/src/cbs.c:ofono_cbs_driver_register() driver: 0x55e47b97eda0, name: rilmodem
ofonod[3979408]: ../git/src/lte.c:ofono_lte_driver_register() driver: 0x55e47b97ee00, name: rilmodem
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e47b995fc0, name: ril_intel
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e47b995c20, name: infineon
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e47b994dc0, name: ril
ofonod[3979408]: ../git/plugins/udevng.c:udev_start() 
ofonod[3979408]: ../git/plugins/udevng.c:enumerate_devices() 
ofonod[3979408]: ../git/plugins/udevng.c:check_usb_device() hub [1d6b:0002]
ofonod[3979408]: ../git/plugins/udevng.c:check_usb_device() usb [1d6b:0002]
ofonod[3979408]: ../git/plugins/udevng.c:check_usb_device() usb [05e3:0610]
ofonod[3979408]: ../git/plugins/udevng.c:check_usb_device() usb [05e3:0610]
ofonod[3979408]: ../git/plugins/udevng.c:check_usb_device() ftdi_sio [0403:6001]
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() /sys/devices/pci0000:00/0000:00:01.1/0000:01:00.0/usb1/1-1/1-1.1/1-1.1.1/1-1.1.1:1.0/ttyUSB2/tty/ttyUSB2
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() /devices/pci0000:00/0000:00:01.1/0000:01:00.0/usb1/1-1/1-1.1/1-1.1.1/1-1.1.1:1.0/ttyUSB2/tty/ttyUSB2
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() /dev/ttyUSB2 (quectel)
ofonod[3979408]: ../git/plugins/udevng.c:check_usb_device() usb [05e3:0610]
ofonod[3979408]: ../git/plugins/udevng.c:check_usb_device() cdc_ether [0525:a4a2]
ofonod[3979408]: ../git/plugins/udevng.c:check_usb_device() cdc_ether [0525:a4a2]
ofonod[3979408]: ../git/plugins/udevng.c:check_usb_device() cdc_ether [0525:a4a2]
ofonod[3979408]: ../git/plugins/udevng.c:check_usb_device() usb [05e3:0610]
ofonod[3979408]: ../git/plugins/udevng.c:check_usb_device() ftdi_sio [0403:6001]
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() /sys/devices/pci0000:00/0000:00:01.1/0000:01:00.0/usb1/1-1/1-1.1/1-1.1.3/1-1.1.3:1.0/ttyUSB0/tty/ttyUSB0
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() /devices/pci0000:00/0000:00:01.1/0000:01:00.0/usb1/1-1/1-1.1/1-1.1.3/1-1.1.3:1.0/ttyUSB0/tty/ttyUSB0
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() /dev/ttyUSB0 (quectel)
ofonod[3979408]: ../git/plugins/udevng.c:check_usb_device() usb [05e3:0610]
ofonod[3979408]: ../git/plugins/udevng.c:check_usb_device() ftdi_sio [0403:6015]
ofonod[3979408]: ../git/plugins/udevng.c:check_usb_device() ftdi_sio [0403:6015]
ofonod[3979408]: ../git/plugins/udevng.c:check_usb_device() hub [05e3:0610]
ofonod[3979408]: ../git/plugins/udevng.c:check_usb_device() hub [05e3:0610]
ofonod[3979408]: ../git/plugins/udevng.c:check_usb_device() usb [1d6b:0002]
ofonod[3979408]: ../git/plugins/udevng.c:check_usb_device() usb-storage [05e3:0732]
ofonod[3979408]: ../git/plugins/udevng.c:check_usb_device() usb [1d6b:0002]
ofonod[3979408]: ../git/plugins/udevng.c:check_usb_device() btusb [8087:0aa7]
ofonod[3979408]: ../git/plugins/udevng.c:check_usb_device() btusb [8087:0aa7]
ofonod[3979408]: ../git/plugins/udevng.c:check_usb_device() hub [1d6b:0003]
ofonod[3979408]: ../git/plugins/udevng.c:check_usb_device() usb [1d6b:0003]
ofonod[3979408]: ../git/plugins/udevng.c:check_usb_device() usb [05e3:0612]
ofonod[3979408]: ../git/plugins/udevng.c:check_usb_device() hub [05e3:0612]
ofonod[3979408]: ../git/plugins/udevng.c:check_usb_device() hub [05e3:0612]
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:check_usb_device() hub [1d6b:0002]
ofonod[3979408]: ../git/plugins/udevng.c:check_usb_device() hub [1d6b:0003]
ofonod[3979408]: ../git/plugins/udevng.c:check_usb_device() hub [1d6b:0002]
ofonod[3979408]: ../git/plugins/udevng.c:check_usb_device() hub [1d6b:0003]
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:create_modem() /sys/devices/pci0000:00/0000:00:01.1/0000:01:00.0/usb1/1-1/1-1.1/1-1.1.1/1-1.1.1:1.0/ttyUSB2/tty/ttyUSB2
ofonod[3979408]: ../git/plugins/udevng.c:create_modem() driver=quectel
ofonod[3979408]: ../git/src/modem.c:ofono_modem_create() name: (null), type: quectel
ofonod[3979408]: ../git/src/modem.c:set_modem_property() modem 0x610000000b40 property RtsCts
ofonod[3979408]: ../git/src/modem.c:set_modem_property() modem 0x610000000b40 property Device
ofonod[3979408]: ../git/src/modem.c:set_modem_property() modem 0x610000000b40 property SystemPath
ofonod[3979408]: ../git/src/modem.c:ofono_modem_register() 0x610000000b40
ofonod[3979408]: ../git/plugins/quectel.c:quectel_probe() 0x610000000b40
ofonod[3979408]: ../git/plugins/quectel.c:quectel_probe_gpio() 0x610000000b40
ofonod[3979408]: ../git/src/modem.c:get_modem_property() modem 0x610000000b40 property GpioChip
ofonod[3979408]: ../git/src/modem.c:emit_modem_added() 0x610000000b40
ofonod[3979408]: ../git/src/modem.c:get_modem_property() modem 0x610000000b40 property SystemPath
ofonod[3979408]: ../git/src/modem.c:call_modemwatches() 0x610000000b40 added:1
ofonod[3979408]: ../git/plugins/dun_gw_bluez5.c:modem_watch() modem: 0x610000000b40, added: 1
ofonod[3979408]: ../git/plugins/hfp_ag_bluez5.c:modem_watch() modem: 0x610000000b40, added: 1
ofonod[3979408]: ../git/examples/emulator.c:modem_watch() modem: 0x610000000b40, added: 1
ofonod[3979408]: ../git/plugins/smart-messaging.c:modem_watch() modem: 0x610000000b40, added: 1
ofonod[3979408]: ../git/plugins/push-notification.c:modem_watch() modem: 0x610000000b40, added: 1
ofonod[3979408]: ../git/plugins/udevng.c:create_modem() /sys/devices/pci0000:00/0000:00:01.1/0000:01:00.0/usb1/1-1/1-1.1/1-1.1.3/1-1.1.3:1.0/ttyUSB0/tty/ttyUSB0
ofonod[3979408]: ../git/plugins/udevng.c:create_modem() driver=quectel
ofonod[3979408]: ../git/src/modem.c:ofono_modem_create() name: (null), type: quectel
ofonod[3979408]: ../git/src/modem.c:set_modem_property() modem 0x610000000d40 property RtsCts
ofonod[3979408]: ../git/src/modem.c:set_modem_property() modem 0x610000000d40 property Device
ofonod[3979408]: ../git/src/modem.c:set_modem_property() modem 0x610000000d40 property SystemPath
ofonod[3979408]: ../git/src/modem.c:ofono_modem_register() 0x610000000d40
ofonod[3979408]: ../git/plugins/quectel.c:quectel_probe() 0x610000000d40
ofonod[3979408]: ../git/plugins/quectel.c:quectel_probe_gpio() 0x610000000d40
ofonod[3979408]: ../git/src/modem.c:get_modem_property() modem 0x610000000d40 property GpioChip
ofonod[3979408]: ../git/src/modem.c:emit_modem_added() 0x610000000d40
ofonod[3979408]: ../git/src/modem.c:get_modem_property() modem 0x610000000d40 property SystemPath
ofonod[3979408]: ../git/src/modem.c:call_modemwatches() 0x610000000d40 added:1
ofonod[3979408]: ../git/plugins/dun_gw_bluez5.c:modem_watch() modem: 0x610000000d40, added: 1
ofonod[3979408]: ../git/plugins/hfp_ag_bluez5.c:modem_watch() modem: 0x610000000d40, added: 1
ofonod[3979408]: ../git/examples/emulator.c:modem_watch() modem: 0x610000000d40, added: 1
ofonod[3979408]: ../git/plugins/smart-messaging.c:modem_watch() modem: 0x610000000d40, added: 1
ofonod[3979408]: ../git/plugins/push-notification.c:modem_watch() modem: 0x610000000d40, added: 1
ofonod[3979408]: ../git/src/private-network.c:ofono_private_network_driver_register() driver: 0x55e47b9f7660, name: Example Private Network Driver
ofonod[3979408]: ../git/plugins/upower.c:upower_connect() upower connect
ofonod[3979408]: ../git/plugins/upower.c:enum_devices_reply() 
ofonod[3979408]: ../git/plugins/upower.c:parse_devices_reply() 
ofonod[3979408]: ../git/plugins/upower.c:enum_devices_reply() parse_devices_reply OK
ofonod[3979408]: enum_devices_reply: no battery detected
ofonod[3979408]: ../git/plugins/quectel.c:quectel_enable() 0x610000000b40
ofonod[3979408]: ../git/src/modem.c:get_modem_property() modem 0x610000000b40 property Device
ofonod[3979408]: ../git/plugins/quectel.c:open_serial() 0x610000000b40
ofonod[3979408]: ../git/src/modem.c:get_modem_property() modem 0x610000000b40 property RtsCts
ofonod[3979408]: ../git/src/modem.c:get_modem_property() modem 0x610000000b40 property Device
ofonod[3979408]: UART: > AT\r
ofonod[3979408]: UART: < \r\nOK\r\n
ofonod[3979408]: ../git/plugins/quectel.c:init_cmd_cb() 0x610000000b40
ofonod[3979408]: ../git/src/modem.c:get_modem_property() modem 0x610000000b40 property RtsCts
ofonod[3979408]: UART: > ATE0\r
ofonod[3979408]: UART: < \r\nOK\r\n
ofonod[3979408]: ../git/plugins/quectel.c:ate_cb() 0x610000000b40
ofonod[3979408]: UART: > AT+CMUX=0,0,5,127,10,3,30,10,2\r
ofonod[3979408]: UART: < \r\nOK\r\n\371\371\371\371\371\003\357\005\301\001\362\371
ofonod[3979408]: ../git/plugins/quectel.c:cmux_cb() 0x610000000b40
ofonod[3979408]: ../git/src/modem.c:set_modem_property() modem 0x610000000b40 property Modem
ofonod[3979408]: ../git/src/modem.c:set_modem_property() modem 0x610000000b40 property Aux
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3979408]: ../git/plugins/quectel.c:mux_ready_cb() 0x610000000b40
ofonod[3979408]: ../git/src/modem.c:get_modem_property() modem 0x610000000b40 property Modem
ofonod[3979408]: ../git/plugins/quectel.c:open_ttys() 0x610000000b40
ofonod[3979408]: ../git/src/modem.c:get_modem_property() modem 0x610000000b40 property Modem
ofonod[3979408]: ../git/src/modem.c:get_modem_property() modem 0x610000000b40 property Aux
ofonod[3979408]: Aux: > ATE0; &C0; +CMEE=1; +QIURC=0\r
ofonod[3979408]: Aux: < \r\nOK\r\n
ofonod[3979408]: Aux: > AT+CGMM\r
ofonod[3979408]: Aux: < \r\nQuectel_M95\r\n\r\nOK\r\n
ofonod[3979408]: ../git/plugins/quectel.c:cgmm_cb() 0x610000000b40 ok 1
ofonod[3979408]: ../git/plugins/quectel.c:cgmm_cb() 0x610000000b40 model M95
ofonod[3979408]: Aux: > AT+CFUN?\r
ofonod[3979408]: Aux: < \r\n+CFUN: 0\r\n
ofonod[3979408]: Aux: < \r\nOK\r\n
ofonod[3979408]: ../git/plugins/quectel.c:cfun_query() 0x610000000b40 ok 1
ofonod[3979408]: Aux: > AT+CFUN=4\r
ofonod[3979408]: Aux: < \r\nOK\r\n
ofonod[3979408]: ../git/plugins/quectel.c:cfun_enable() 0x610000000b40 ok 1
ofonod[3979408]: ../git/plugins/quectel.c:dbus_hw_enable() 0x610000000b40
ofonod[3979408]: ../git/examples/emulator.c:powered_watch() Adding modem 0x610000000b40 to the list
ofonod[3979408]: ../git/examples/emulator.c:create_tcp() Created server_watch: 108
ofonod[3979408]: ../git/examples/emulator.c:create_tcp() Created server_watch: 109
ofonod[3979408]: ../git/src/modem.c:modem_change_state() old state: 0, new state: 1
ofonod[3979408]: ../git/plugins/quectel.c:quectel_pre_sim() 0x610000000b40
ofonod[3979408]: Aux: > AT+CFUN=4\r
ofonod[3979408]: Aux: < \r\nOK\r\n
ofonod[3979408]: Aux: > AT+CRC=1\r
ofonod[3979408]: Aux: < \r\nOK\r\n
ofonod[3979408]: Aux: > AT+CLIP=1\r
ofonod[3979408]: Aux: < \r\nOK\r\n
ofonod[3979408]: Aux: > AT+CDIP=1\r
ofonod[3979408]: Aux: < \r\n+CME ERROR: 14\r\n
ofonod[3979408]: Aux: > AT+CNAP=1\r
ofonod[3979408]: Aux: < \r\n+CME ERROR: 14\r\n
ofonod[3979408]: Aux: > AT+COLP=1\r
ofonod[3979408]: Aux: < \r\nOK\r\n
ofonod[3979408]: Aux: > AT+CSSN=1,1\r
ofonod[3979408]: Aux: < \r\nOK\r\n
ofonod[3979408]: Aux: > AT+VTD?\r
ofonod[3979408]: Aux: < \r\n+VTD: 1,0\r\n\r\nOK\r\n
ofonod[3979408]: Aux: > AT+CCWA=1\r
ofonod[3979408]: Aux: < \r\nOK\r\n
ofonod[3979408]: ../git/drivers/atmodem/voicecall.c:at_voicecall_initialized() voicecall_init: registering to notifications
ofonod[3979408]: Aux: > AT+CLCK=?\r
ofonod[3979408]: Aux: < \r\n+CLCK: ("PS","SC","AO","OI","OX","AI","IR","AB","AG","AC","FD","PF","PN","PU","PP","PC")\r\n\r\nOK\r\n
ofonod[3979408]: ../git/drivers/atmodem/sim.c:at_clck_query_cb() found PS
ofonod[3979408]: ../git/drivers/atmodem/sim.c:at_clck_query_cb() found SC
ofonod[3979408]: ../git/drivers/atmodem/sim.c:at_clck_query_cb() found PF
ofonod[3979408]: ../git/drivers/atmodem/sim.c:at_clck_query_cb() found PN
ofonod[3979408]: ../git/drivers/atmodem/sim.c:at_clck_query_cb() found PU
ofonod[3979408]: ../git/drivers/atmodem/sim.c:at_clck_query_cb() found PP
ofonod[3979408]: ../git/drivers/atmodem/sim.c:at_clck_query_cb() found PC
ofonod[3979408]: ../git/src/sim.c:ofono_sim_add_state_watch() 0x614000000640
ofonod[3979408]: ../git/src/sim.c:ofono_sim_add_state_watch() 0x614000000640
ofonod[3979408]: ../git/src/sim.c:ofono_sim_add_state_watch() 0x614000000640
ofonod[3979408]: ../git/src/sim.c:ofono_sim_add_state_watch() 0x614000000640
ofonod[3979408]: ../git/src/sim.c:ofono_sim_add_state_watch() 0x614000000640
ofonod[3979408]: Aux: > AT+CPIN?\r
ofonod[3979408]: Aux: < \r\n+CME ERROR: 14\r\n
ofonod[3979408]: /quectel_0: unknown error from cpin: 14
ofonod[3979408]: Aux: > AT+CLCC\r
ofonod[3979408]: Aux: < \r\nOK\r\n
ofonod[3979408]: Modem: < \r\n+CPIN: READY\r\n
ofonod[3979408]: Aux: < \r\n+CPIN: READY\r\n
ofonod[3979408]: ../git/plugins/quectel.c:sim_watch_cb() 0x610000000b40
ofonod[3979408]: Interface org.ofono.AllowedAccessPoints not found on the interface_list
ofonod[3979408]: Aux: > AT+CLCK="PS",2\r
ofonod[3979408]: Aux: < \r\n+CLCK: 0\r\n\r\nOK\r\n
ofonod[3979408]: ../git/drivers/atmodem/sim.c:at_lock_status_cb() lock_status_cb: 0
ofonod[3979408]: Aux: > AT+CRSM=192,28599\r
ofonod[3979408]: Aux: < \r\n+CRSM: 144,0,"621D82054221000E0583026FB78A01058B066F060008010880020046880108"\r\n\r\nOK\r\n
ofonod[3979408]: ../git/drivers/atmodem/sim.c:get_response_common_cb() crsm_info_cb: 90, 00, 31
ofonod[3979408]: Requested file structure differs from SIM: 6fb7
ofonod[3979408]: ../git/src/voicecall.c:ecc_g2_read_cb() 0
ofonod[3979408]: Aux: > AT+CLCK="PN",2\r
ofonod[3979408]: Aux: < \r\n+CLCK: 0\r\n\r\nOK\r\n
ofonod[3979408]: ../git/drivers/atmodem/sim.c:at_lock_status_cb() lock_status_cb: 0
ofonod[3979408]: Aux: > AT+CRSM=192,28599\r
ofonod[3979408]: Aux: < \r\n+CRSM: 144,0,"621D82054221000E0583026FB78A01058B066F060008010880020046880108"\r\n\r\nOK\r\n
ofonod[3979408]: ../git/drivers/atmodem/sim.c:get_response_common_cb() crsm_info_cb: 90, 00, 31
ofonod[3979408]: Aux: > AT+CLCK="SC",2\r
ofonod[3979408]: ../git/plugins/udevng.c:check_modem_list() 
ofonod[3979408]: Aux: < \r\n+CLCK: 0\r\n\r\nOK\r\n
ofonod[3979408]: ../git/drivers/atmodem/sim.c:at_lock_status_cb() lock_status_cb: 0
ofonod[3979408]: Aux: > AT+CRSM=178,28599,1,4,14\r
ofonod[3979408]: Aux: < \r\n+CRSM: 144,0,"00F0FFFFFFFFFFFFFFFFFFFFFF00"\r\n\r\nOK\r\n
ofonod[3979408]: ../git/drivers/atmodem/sim.c:at_crsm_read_cb() crsm_read_cb: 90, 00, 14
ofonod[3979408]: ../git/src/voicecall.c:ecc_g3_read_cb() 1
ofonod[3979408]: Aux: > AT+CRSM=178,28599,2,4,14\r
ofonod[3979408]: Aux: < \r\n+CRSM: 144,0,"80FFFFFFFFFFFFFFFFFFFFFFFF00"\r\n\r\nOK\r\n
ofonod[3979408]: ../git/drivers/atmodem/sim.c:at_crsm_read_cb() crsm_read_cb: 90, 00, 14
ofonod[3979408]: ../git/src/voicecall.c:ecc_g3_read_cb() 1
ofonod[3979408]: Aux: > AT+CRSM=178,28599,3,4,14\r
ofonod[3979408]: Aux: < \r\n+CRSM: 144,0,"11F2FFFFFFFFFFFFFFFFFFFFFF00"\r\n\r\nOK\r\n
ofonod[3979408]: ../git/drivers/atmodem/sim.c:at_crsm_read_cb() crsm_read_cb: 90, 00, 14
ofonod[3979408]: ../git/src/voicecall.c:ecc_g3_read_cb() 1
ofonod[3979408]: Aux: > AT+CRSM=178,28599,4,4,14\r
ofonod[3979408]: Aux: < \r\n+CRSM: 144,0,"11F0FFFFFFFFFFFFFFFFFFFFFF00"\r\n\r\nOK\r\n
ofonod[3979408]: ../git/drivers/atmodem/sim.c:at_crsm_read_cb() crsm_read_cb: 90, 00, 14
ofonod[3979408]: ../git/src/voicecall.c:ecc_g3_read_cb() 1
ofonod[3979408]: Aux: > AT+CRSM=178,28599,5,4,14\r
ofonod[3979408]: Aux: < \r\n+CRSM: 144,0,"19F1FFFFFFFFFFFFFFFFFFFFFF00"\r\n\r\nOK\r\n
ofonod[3979408]: ../git/drivers/atmodem/sim.c:at_crsm_read_cb() crsm_read_cb: 90, 00, 14
ofonod[3979408]: ../git/src/voicecall.c:ecc_g3_read_cb() 1
ofonod[3979408]: Aux: > AT+CRSM=192,12258\r
ofonod[3979408]: Aux: < \r\n+CRSM: 144,0,"621A8202412183022FE28A01058B062F06000201028002000A880110"\r\n\r\nOK\r\n
ofonod[3979408]: ../git/drivers/atmodem/sim.c:get_response_common_cb() crsm_info_cb: 90, 00, 28
ofonod[3979408]: Aux: > AT+CRSM=176,12258,0,0,10\r
ofonod[3979408]: ../git/plugins/quectel.c:init_timer_cb() 0x610000000b40
ofonod[3979408]: Aux: < \r\n+CRSM: 144,0,"98543778030000812538"\r\n\r\nOK\r\n
ofonod[3979408]: ../git/drivers/atmodem/sim.c:at_crsm_read_cb() crsm_read_cb: 90, 00, 10
ofonod[3979408]: ../git/src/simfs.c:sim_fs_op_read_block_cb() bufoff: 0, dataoff: 0, tocopy: 10
ofonod[3979408]: Aux: > AT+QINISTAT\r
ofonod[3979408]: Aux: < \r\n+QINISTAT: 1\r\n\r\nOK\r\n
ofonod[3979408]: ../git/plugins/quectel.c:qinistat_cb() 0x610000000b40
ofonod[3979408]: ../git/plugins/quectel.c:qinistat_cb() qinistat: 1
ofonod[3979408]: Aux: > AT+CRSM=192,28421\r
ofonod[3979408]: Aux: < \r\n+CRSM: 144,0,"621A8202412183026F058A01058B066F06000401048002000A880110"\r\n\r\nOK\r\n
ofonod[3979408]: ../git/drivers/atmodem/sim.c:get_response_common_cb() crsm_info_cb: 90, 00, 28
ofonod[3979408]: Aux: > AT+CRSM=176,28421,0,0,10\r
ofonod[3979408]: Aux: < \r\n+CRSM: 144,0,"6461656E64656672FFFF"\r\n\r\nOK\r\n
ofonod[3979408]: ../git/drivers/atmodem/sim.c:at_crsm_read_cb() crsm_read_cb: 90, 00, 10
ofonod[3979408]: ../git/src/simfs.c:sim_fs_op_read_block_cb() bufoff: 0, dataoff: 0, tocopy: 10
ofonod[3979408]: Aux: > AT+CRSM=192,12037\r
ofonod[3979408]: Aux: < \r\n+CRSM: 144,0,"621A8202412183022F058A01058B062F06000501058002000A880128"\r\n\r\nOK\r\n
ofonod[3979408]: ../git/drivers/atmodem/sim.c:get_response_common_cb() crsm_info_cb: 90, 00, 28
ofonod[3979408]: Aux: > AT+CRSM=176,12037,0,0,10\r
ofonod[3979408]: Aux: < \r\n+CRSM: 144,0,"6461656E64656672FFFF"\r\n\r\nOK\r\n
ofonod[3979408]: ../git/drivers/atmodem/sim.c:at_crsm_read_cb() crsm_read_cb: 90, 00, 10
ofonod[3979408]: ../git/src/simfs.c:sim_fs_op_read_block_cb() bufoff: 0, dataoff: 0, tocopy: 10
ofonod[3979408]: Aux: > AT+CPIN?\r
ofonod[3979408]: Aux: < \r\n+CPIN: READY\r\n\r\nOK\r\n
ofonod[3979408]: ../git/drivers/atmodem/sim.c:at_cpin_cb() crsm_pin_cb: READY
ofonod[3979408]: ../git/src/sim.c:sim_pin_query_cb() sim->pin_type: 0, pin_type: 0
ofonod[3979408]: ../git/drivers/atmodem/sim.c:at_pin_retries_query() 
ofonod[3979408]: Aux: > AT+QTRPIN\r
ofonod[3979408]: Aux: < \r\n+QTRPIN: 3,3,10,10\r\n\r\nOK\r\n
ofonod[3979408]: Aux: > AT+CUAD\r
ofonod[3979408]: Aux: < \r\n+CME ERROR: 100\r\n
ofonod[3979408]: Aux: > AT+CRSM=192,28590\r
ofonod[3979408]: Aux: < \r\n+CRSM: 106,130\r\n\r\nOK\r\n
ofonod[3979408]: Aux: > AT+CRSM=192,28589\r
ofonod[3979408]: Aux: < \r\n+CRSM: 144,0,"621A8202412183026FAD8A01058B066F060001010180020004880118"\r\n\r\nOK\r\n
ofonod[3979408]: ../git/drivers/atmodem/sim.c:get_response_common_cb() crsm_info_cb: 90, 00, 28
ofonod[3979408]: Aux: > AT+CRSM=176,28589,0,0,4\r
ofonod[3979408]: Aux: < \r\n+CRSM: 144,0,"00000002"\r\n\r\nOK\r\n
ofonod[3979408]: ../git/drivers/atmodem/sim.c:at_crsm_read_cb() crsm_read_cb: 90, 00, 4
ofonod[3979408]: ../git/src/simfs.c:sim_fs_op_read_block_cb() bufoff: 0, dataoff: 0, tocopy: 4
ofonod[3979408]: Aux: > AT+CRSM=192,28438\r
ofonod[3979408]: Aux: < \r\n+CRSM: 148,4\r\n\r\nOK\r\n
ofonod[3979408]: Aux: > AT+CRSM=192,28472\r
ofonod[3979408]: Aux: < \r\n+CRSM: 144,0,"621A8202412183026F388A01058B066F060007010780020008880120"\r\n\r\nOK\r\n
ofonod[3979408]: ../git/drivers/atmodem/sim.c:get_response_common_cb() crsm_info_cb: 90, 00, 28
ofonod[3979408]: Aux: > AT+CRSM=176,28472,0,0,8\r
ofonod[3979408]: Aux: < \r\n+CRSM: 144,0,"026A1C0CE3764840"\r\n\r\nOK\r\n
ofonod[3979408]: ../git/drivers/atmodem/sim.c:at_crsm_read_cb() crsm_read_cb: 90, 00, 8
ofonod[3979408]: ../git/src/simfs.c:sim_fs_op_read_block_cb() bufoff: 0, dataoff: 0, tocopy: 8
ofonod[3979408]: Aux: > AT+CRSM=192,28502\r
ofonod[3979408]: Aux: < \r\n+CRSM: 144,0,"621A8202412183026F568A01058B066F06000B010B80020003880128"\r\n\r\nOK\r\n
ofonod[3979408]: ../git/drivers/atmodem/sim.c:get_response_common_cb() crsm_info_cb: 90, 00, 28
ofonod[3979408]: Aux: > AT+CRSM=176,28502,0,0,3\r
ofonod[3979408]: Aux: < \r\n+CRSM: 144,0,"000000"\r\n\r\nOK\r\n
ofonod[3979408]: ../git/drivers/atmodem/sim.c:at_crsm_read_cb() crsm_read_cb: 90, 00, 3
ofonod[3979408]: ../git/src/simfs.c:sim_fs_op_read_block_cb() bufoff: 0, dataoff: 0, tocopy: 3
ofonod[3979408]: Aux: > AT+CIMI\r
ofonod[3979408]: ../git/plugins/quectel.c:init_timer_cb() 0x610000000b40
ofonod[3979408]: Aux: < \r\n234500021012528\r\n\r\nOK\r\n
ofonod[3979408]: ../git/drivers/atmodem/sim.c:at_cimi_cb() cimi_cb: 234500021012528
ofonod[3979408]: ../git/plugins/bluez5.c:bt_register_profile() Bluetooth: Registering 0000111f-0000-1000-8000-00805f9b34fb (hfp_ag) profile
ofonod[3979408]: ../git/src/modem.c:modem_change_state() old state: 1, new state: 2
ofonod[3979408]: ../git/plugins/quectel.c:quectel_post_sim() 0x610000000b40
ofonod[3979408]: ../git/drivers/atmodem/gprs-context.c:at_gprs_context_probe() 
ofonod[3979408]: ../git/drivers/atmodem/call-volume.c:at_call_volume_probe() 0x604000029050
ofonod[3979408]: Example History Probe for modem: 0x610000000b40
ofonod[3979408]: Example Network Time Probe for modem: 0x610000000b40
ofonod[3979408]: ../git/src/modem.c:get_modem_property() modem 0x610000000b40 property AlwaysOnline
ofonod[3979408]: Aux: > AT+QINISTAT\r
ofonod[3979408]: RegisterProfile() replied an error: org.freedesktop.DBus.Error.ServiceUnknown, The name org.bluez was not provided by any .service files
ofonod[3979408]: Aux: < \r\n+QINISTAT: 1\r\n\r\nOK\r\n
ofonod[3979408]: ../git/plugins/quectel.c:qinistat_cb() 0x610000000b40
ofonod[3979408]: ../git/plugins/quectel.c:qinistat_cb() qinistat: 1
ofonod[3979408]: Aux: > AT+CGDCONT=?\r
ofonod[3979408]: Aux: < \r\n+CGDCONT: (1-3),"IP",,,(0),(0)\r\n\r\nOK\r\n
ofonod[3979408]: Aux: > AT+CGDATA=?\r
ofonod[3979408]: Aux: < \r\n+CGDATA: "PPP"\r\n\r\nOK\r\n
ofonod[3979408]: ../git/drivers/atmodem/gprs-context.c:at_cgdata_test_cb() use_atd99:0
ofonod[3979408]: Aux: > AT+CSMS=?\r
ofonod[3979408]: Aux: < \r\n+CSMS: (0,128)\r\n\r\nOK\r\n
ofonod[3979408]: ../git/drivers/atmodem/sms.c:at_csms_query_cb() CSMS query parsed successfully
ofonod[3979408]: Aux: > AT+CSCS=?\r
ofonod[3979408]: Aux: < \r\n+CSCS: ("GSM","HEX","IRA","PCCP437","UCS2","8859-1")\r\n\r\nOK\r\n
ofonod[3979408]: Aux: > AT+CMUT?\r
ofonod[3979408]: Aux: < \r\n+CMUT: 0\r\n\r\nOK\r\n
ofonod[3979408]: Aux: > AT+CLVL=?\r
ofonod[3979408]: Aux: < \r\n+CLVL: (0-100)\r\n\r\nOK\r\n
ofonod[3979408]: Aux: > AT+CLVL?\r
ofonod[3979408]: Aux: < \r\n+CLVL: 60\r\n\r\nOK\r\n
ofonod[3979408]: Aux: > AT+CRSM=192,28480\r
ofonod[3979408]: Aux: < \r\n+CRSM: 144,0,"621C8205422100180383026F408A01058B066F0600060106800200488800"\r\n\r\nOK\r\n
ofonod[3979408]: ../git/drivers/atmodem/sim.c:get_response_common_cb() crsm_info_cb: 90, 00, 30
ofonod[3979408]: Aux: > AT+CGREG=?\r
ofonod[3979408]: Aux: < \r\n+CGREG: (0-2)\r\n\r\nOK\r\n
ofonod[3979408]: Aux: > AT+CSMS=128\r
ofonod[3979408]: Aux: < \r\n+CMS ERROR: 3\r\n
ofonod[3979408]: Aux: > AT+CPBS=?\r
ofonod[3979408]: Aux: < \r\n+CPBS: ("MC","RC","DC","LA","ME","BN","SD","VM","FD","LD","ON","SM")\r\n\r\nOK\r\n
ofonod[3979408]: Aux: > AT+CRSM=178,28480,1,4,24\r
ofonod[3979408]: Aux: < \r\n+CRSM: 144,0,"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"\r\n\r\nOK\r\n
ofonod[3979408]: ../git/drivers/atmodem/sim.c:at_crsm_read_cb() crsm_read_cb: 90, 00, 24
ofonod[3979408]: Aux: > AT+CGREG=2\r
ofonod[3979408]: Aux: < \r\nOK\r\n
ofonod[3979408]: Aux: > AT+CGAUTO=0\r
ofonod[3979408]: Aux: < \r\nOK\r\n
ofonod[3979408]: Aux: > AT+CGEREP=2,1\r
ofonod[3979408]: Aux: < \r\nERROR\r\n
ofonod[3979408]: ../git/plugins/bluez5.c:bt_register_profile() Bluetooth: Registering 00001103-0000-1000-8000-00805f9b34fb (dun_gw) profile
ofonod[3979408]: Aux: > AT+CSMS?\r
ofonod[3979408]: RegisterProfile() replied an error: org.freedesktop.DBus.Error.ServiceUnknown, The name org.bluez was not provided by any .service files
ofonod[3979408]: Aux: < \r\n+CMS ERROR: 3\r\n
ofonod[3979408]: SMS not supported by this modem.  If this is an error please submit patches to support this hardware
ofonod[3979408]: ../git/src/sms.c:sms_remove() atom: 0x604000028f90
ofonod[3979408]: Aux: > AT+CRSM=178,28480,2,4,24\r
ofonod[3979408]: Aux: < \r\n+CRSM: 144,0,"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"\r\n\r\nOK\r\n
ofonod[3979408]: ../git/drivers/atmodem/sim.c:at_crsm_read_cb() crsm_read_cb: 90, 00, 24
ofonod[3979408]: Aux: > AT+CPSB=1\r
ofonod[3979408]: Aux: < \r\n+CME ERROR: 100\r\n
ofonod[3979408]: Aux: > AT+CGACT?\r
ofonod[3979408]: Aux: < \r\n+CGACT: 1,0\r\n\r\n+CGACT: 2,0\r\n\r\n+CGACT: 3,0\r\n\r\nOK\r\n
ofonod[3979408]: ../git/src/gprs.c:gprs_list_active_contexts_callback() error = 0
ofonod[3979408]: Aux: > AT+CRSM=178,28480,3,4,24\r
ofonod[3979408]: Aux: < \r\n+CRSM: 144,0,"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"\r\n\r\nOK\r\n
ofonod[3979408]: ../git/drivers/atmodem/sim.c:at_crsm_read_cb() crsm_read_cb: 90, 00, 24
ofonod[3979408]: ../git/plugins/quectel.c:init_timer_cb() 0x610000000b40
ofonod[3979408]: Aux: > AT+QINISTAT\r
ofonod[3979408]: Aux: < \r\n+QINISTAT: 1\r\n\r\nOK\r\n
ofonod[3979408]: ../git/plugins/quectel.c:qinistat_cb() 0x610000000b40
ofonod[3979408]: ../git/plugins/quectel.c:qinistat_cb() qinistat: 1
ofonod[3979408]: ../git/plugins/quectel.c:init_timer_cb() 0x610000000b40
ofonod[3979408]: Aux: > AT+QINISTAT\r
ofonod[3979408]: Aux: < \r\n+QINISTAT: 1\r\n
ofonod[3979408]: Aux: < \r\nOK\r\n
ofonod[3979408]: ../git/plugins/quectel.c:qinistat_cb() 0x610000000b40
ofonod[3979408]: ../git/plugins/quectel.c:qinistat_cb() qinistat: 1
ofonod[3979408]: ../git/plugins/quectel.c:init_timer_cb() 0x610000000b40
ofonod[3979408]: Aux: > AT+QINISTAT\r
ofonod[3979408]: Aux: < \r\n+QINISTAT: 1\r\n\r\nOK\r\n
ofonod[3979408]: ../git/plugins/quectel.c:qinistat_cb() 0x610000000b40
ofonod[3979408]: ../git/plugins/quectel.c:qinistat_cb() qinistat: 1
ofonod[3979408]: ../git/plugins/quectel.c:init_timer_cb() 0x610000000b40
ofonod[3979408]: Aux: > AT+QINISTAT\r
ofonod[3979408]: Aux: < \r\n+QINISTAT: 2\r\n\r\nOK\r\n
ofonod[3979408]: ../git/plugins/quectel.c:qinistat_cb() 0x610000000b40
ofonod[3979408]: ../git/plugins/quectel.c:qinistat_cb() qinistat: 2
ofonod[3979408]: ../git/plugins/quectel.c:init_timer_cb() 0x610000000b40
ofonod[3979408]: Aux: > AT+QINISTAT\r
ofonod[3979408]: Aux: < \r\n+QINISTAT: 2\r\n\r\nOK\r\n
ofonod[3979408]: ../git/plugins/quectel.c:qinistat_cb() 0x610000000b40
ofonod[3979408]: ../git/plugins/quectel.c:qinistat_cb() qinistat: 2
ofonod[3979408]: ../git/plugins/quectel.c:init_timer_cb() 0x610000000b40
ofonod[3979408]: Aux: > AT+QINISTAT\r
ofonod[3979408]: Aux: < \r\n+QINISTAT: 2\r\n\r\nOK\r\n
ofonod[3979408]: ../git/plugins/quectel.c:qinistat_cb() 0x610000000b40
ofonod[3979408]: ../git/plugins/quectel.c:qinistat_cb() qinistat: 2
ofonod[3979408]: ../git/plugins/quectel.c:init_timer_cb() 0x610000000b40
ofonod[3979408]: Aux: > AT+QINISTAT\r
ofonod[3979408]: Aux: < \r\n+QINISTAT: 2\r\n\r\nOK\r\n
ofonod[3979408]: ../git/plugins/quectel.c:qinistat_cb() 0x610000000b40
ofonod[3979408]: ../git/plugins/quectel.c:qinistat_cb() qinistat: 2
ofonod[3979408]: ../git/plugins/quectel.c:init_timer_cb() 0x610000000b40
ofonod[3979408]: Aux: > AT+QINISTAT\r
ofonod[3979408]: Aux: < \r\n+QINISTAT: 3\r\n\r\nOK\r\n
ofonod[3979408]: ../git/plugins/quectel.c:qinistat_cb() 0x610000000b40
ofonod[3979408]: ../git/plugins/quectel.c:qinistat_cb() qinistat: 3
ofonod[3979408]: Terminating
ofonod[3979408]: ../git/src/modem.c:modem_change_state() old state: 2, new state: 0
ofonod[3979408]: ../git/src/modem.c:flush_atoms() 
ofonod[3979408]: Example Network Time Remove for modem: 0x610000000b40
ofonod[3979408]: Example History Remove for modem: 0x610000000b40
ofonod[3979408]: ../git/src/call-volume.c:call_volume_remove() atom: 0x604000029090
ofonod[3979408]: ../git/src/phonebook.c:phonebook_remove() atom: 0x604000028fd0
ofonod[3979408]: ../git/src/gprs.c:gprs_context_unregister() 0x606000031ac0, 0x60e000001460
ofonod[3979408]: ../git/src/gprs.c:gprs_context_remove() atom: 0x604000028f10
ofonod[3979408]: ../git/drivers/atmodem/gprs-context.c:at_gprs_context_remove() 
ofonod[3979408]: ../git/plugins/bluez5.c:bt_unregister_profile() Bluetooth: Unregistering profile /bluetooth/profile/dun_gw
ofonod[3979408]: ../git/src/gprs.c:gprs_unregister() 0x60e000001460
ofonod[3979408]: ../git/src/gprs.c:gprs_remove() atom: 0x604000028ed0
ofonod[3979408]: ../git/plugins/bluez5.c:bt_unregister_profile() Bluetooth: Unregistering profile /bluetooth/profile/hfp_ag
ofonod[3979408]: ../git/src/sim.c:sim_remove() atom: 0x604000028510
ofonod[3979408]: ../git/src/voicecall.c:voicecall_remove() atom: 0x604000028490
ofonod[3979408]: ../git/plugins/quectel.c:quectel_disable() 0x610000000b40
ofonod[3979408]: ../git/plugins/quectel.c:dbus_hw_cleanup() 0x610000000b40
ofonod[3979408]: Aux: > AT+CFUN=0\r
ofonod[3979408]: UnregisterProfile() replied an error: org.freedesktop.DBus.Error.ServiceUnknown, The name org.bluez was not provided by any .service files
ofonod[3979408]: UnregisterProfile() replied an error: org.freedesktop.DBus.Error.ServiceUnknown, The name org.bluez was not provided by any .service files
ofonod[3979408]: Modem: < \r\n+CPIN: NOT READY\r\n
ofonod[3979408]: Aux: < \r\n+CPIN: NOT READY\r\n
ofonod[3979408]: Aux: < \r\nOK\r\n
ofonod[3979408]: ../git/plugins/quectel.c:cfun_disable() 0x610000000b40
ofonod[3979408]: ../git/plugins/quectel.c:close_serial() 0x610000000b40
ofonod[3979408]: ../git/plugins/quectel.c:close_mux_cb() 0x610000000b40
ofonod[3979408]: ../git/examples/emulator.c:powered_watch() Removing modem 0x610000000b40 from the list
ofonod[3979408]: ../git/examples/emulator.c:powered_watch() Removing server watch: 109
ofonod[3979408]: ../git/src/modem.c:modem_change_state() old state: 0, new state: 0
ofonod[3979408]: ../git/src/plugin.c:__ofono_plugin_cleanup() 
ofonod[3979408]: ../git/plugins/push-notification.c:push_notification_exit() 
ofonod[3979408]: ../git/plugins/smart-messaging.c:smart_messaging_exit() 
ofonod[3979408]: ../git/plugins/emulator_fuzz.c:emulator_fuzz_exit() 
ofonod[3979408]: ../git/src/modem.c:ofono_modem_remove() 0x610000000140
ofonod[3979408]: ../git/src/modem.c:modem_unregister() 0x610000000140
ofonod[3979408]: ../git/plugins/stktest.c:stktest_remove() 0x610000000140
ofonod[3979408]: ../git/src/modem.c:emit_modem_removed() 0x610000000140
ofonod[3979408]: ../git/src/modem.c:call_modemwatches() 0x610000000140 added:0
ofonod[3979408]: ../git/plugins/dun_gw_bluez5.c:modem_watch() modem: 0x610000000140, added: 0
ofonod[3979408]: ../git/plugins/hfp_ag_bluez5.c:modem_watch() modem: 0x610000000140, added: 0
ofonod[3979408]: ../git/examples/emulator.c:modem_watch() modem: 0x610000000140, added: 0
ofonod[3979408]: ../git/examples/emulator.c:modem_watch() Removing modem 0x610000000140 from the list
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e47b9f7be0, name: stktest
ofonod[3979408]: ../git/examples/emulator.c:example_emulator_exit() 
ofonod[3979408]: ../git/src/gprs-provision.c:ofono_gprs_provision_driver_unregister() driver: 0x55e47b9f6a60 name: Example GPRS context provisioning
ofonod[3979408]: ../git/src/nettime.c:ofono_nettime_driver_unregister() driver: 0x55e47b9f6720 name: Example Network Time
ofonod[3979408]: ../git/src/history.c:ofono_history_driver_unregister() driver: 0x55e47b9f5d00 name: Example Call History
ofonod[3979408]: ../git/src/handsfree-audio.c:ofono_handsfree_card_driver_unregister() driver: 0x55e47b9f3b60
ofonod[3979408]: ../git/plugins/bluez5.c:bt_unregister_profile() Bluetooth: Unregistering profile /bluetooth/profile/dun_gw
ofonod[3979408]: ../git/plugins/bluez5.c:bt_unregister_profile() Bluetooth: Unregistering profile /bluetooth/profile/hfp_hf
ofonod[3979408]: ../git/src/handsfree-audio.c:ofono_handsfree_card_driver_unregister() driver: 0x55e47b9f1040
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e47b9f0fc0, name: hfp
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e47b9eea60, name: xmm7xxx
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e47b9edb60, name: ublox
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e47b9eb260, name: quectel
ofonod[3979408]: ../git/src/modem.c:modem_unregister() 0x610000000d40
ofonod[3979408]: ../git/plugins/quectel.c:quectel_remove() 0x610000000d40
ofonod[3979408]: ../git/src/modem.c:unregister_property() property 0x60200008f650
ofonod[3979408]: ../git/src/modem.c:unregister_property() property 0x60200008f590
ofonod[3979408]: ../git/src/modem.c:unregister_property() property 0x60200008f5f0
ofonod[3979408]: ../git/src/modem.c:emit_modem_removed() 0x610000000d40
ofonod[3979408]: ../git/src/modem.c:call_modemwatches() 0x610000000d40 added:0
ofonod[3979408]: ../git/src/modem.c:modem_unregister() 0x610000000b40
ofonod[3979408]: ../git/plugins/quectel.c:quectel_remove() 0x610000000b40
ofonod[3979408]: ../git/src/modem.c:unregister_property() property 0x60200008f290
ofonod[3979408]: ../git/src/modem.c:unregister_property() property 0x60200008fdf0
ofonod[3979408]: ../git/src/modem.c:unregister_property() property 0x60200008f1d0
ofonod[3979408]: ../git/src/modem.c:unregister_property() property 0x60200008f230
ofonod[3979408]: ../git/src/modem.c:unregister_property() property 0x60200008fe50
ofonod[3979408]: ../git/src/modem.c:emit_modem_removed() 0x610000000b40
ofonod[3979408]: ../git/src/modem.c:call_modemwatches() 0x610000000b40 added:0
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e47b9e9e80, name: telit
ofonod[3979408]: ../git/src/private-network.c:ofono_private_network_driver_unregister() driver: 0x55e47b9e94c0, name: ConnMan Private Network
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e47b9e8ca0, name: sim7100
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e47b9e7b60, name: sim900
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e47b9e6e00, name: samsung
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e47b9e65a0, name: speedupcdma
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e47b9e5aa0, name: speedup
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e47b9e5200, name: alcatel
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e47b9e4300, name: icera
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e47b9e38c0, name: linktop
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e47b9e3280, name: nokiacdma
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e47b9e29e0, name: nokia
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e47b9e1320, name: gemalto
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e47b9e0800, name: cinterion
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e47b9dece0, name: ste
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e47b9dd540, name: ifx
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e47b9dcbc0, name: palmpre
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e47b9dbfa0, name: novatel
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e47b9db560, name: sierra
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e47b9d9d80, name: huawei
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e47b9d8ca0, name: zte
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e47b9d7cc0, name: hso
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e47b9d6c20, name: mbm
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e47b9d5880, name: calypso
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e47b9d5040, name: wavecom
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e47b9d4900, name: g1
ofonod[3979408]: ../git/src/cdma-voicecall.c:ofono_cdma_voicecall_driver_unregister() driver: 0x55e47b981ca0, name: cdmamodem
ofonod[3979408]: ../git/src/modem.c:ofono_devinfo_driver_unregister() driver: 0x55e47b981d00, name: cdmamodem
ofonod[3979408]: ../git/src/cdma-connman.c:ofono_cdma_connman_driver_unregister() driver: 0x55e47b981d60, name: cdmamodem
ofonod[3979408]: ../git/src/radio-settings.c:ofono_radio_settings_driver_unregister() driver: 0x55e47b9d1f80, name: phonesim
ofonod[3979408]: ../git/src/ctm.c:ofono_ctm_driver_unregister() driver: 0x55e47b9d2000, name: phonesim
ofonod[3979408]: ../git/src/gprs.c:ofono_gprs_context_driver_unregister() driver: 0x55e47b9d1f20, name: phonesim
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e47b9d2060, name: phonesim
ofonod[3979408]: ../git/src/radio-settings.c:ofono_radio_settings_driver_unregister() driver: 0x55e47b981b60, name: xmm7modem
ofonod[3979408]: ../git/src/ims.c:ofono_ims_driver_unregister() driver: 0x55e47b981be0, name: xmm7modem
ofonod[3979408]: ../git/src/netmon.c:ofono_netmon_driver_unregister() driver: 0x55e47b981c40, name: xmm7modem
ofonod[3979408]: ../git/src/voicecall.c:ofono_voicecall_driver_unregister() driver: 0x55e47b981aa0, name: gemaltomodem
ofonod[3979408]: ../git/src/location-reporting.c:ofono_location_reporting_driver_unregister() driver: 0x55e47b981a40, name: gemaltomodem
ofonod[3979408]: ../git/src/gprs.c:ofono_gprs_context_driver_unregister() driver: 0x55e47b981940, name: ubloxmodem
ofonod[3979408]: ../git/src/network.c:ofono_netreg_driver_unregister() driver: 0x55e47b989c80, name: ubloxmodem
ofonod[3979408]: ../git/src/netmon.c:ofono_netmon_driver_unregister() driver: 0x55e47b9819a0, name: ubloxmodem
ofonod[3979408]: ../git/src/lte.c:ofono_lte_driver_unregister() driver: 0x55e47b981a00, name: ubloxmodem
ofonod[3979408]: ../git/src/ussd.c:ofono_ussd_driver_unregister() driver: 0x55e47b9817e0, name: speedupmodem
ofonod[3979408]: ../git/src/voicecall.c:ofono_voicecall_driver_unregister() driver: 0x55e47b981540, name: hfpmodem
ofonod[3979408]: ../git/src/modem.c:ofono_devinfo_driver_unregister() driver: 0x55e47b9816e0, name: hfpmodem
ofonod[3979408]: ../git/src/network.c:ofono_netreg_driver_unregister() driver: 0x55e47b981600, name: hfpmodem
ofonod[3979408]: ../git/src/call-volume.c:ofono_call_volume_driver_unregister() driver: 0x55e47b981680, name: hfpmodem
ofonod[3979408]: ../git/src/handsfree.c:ofono_handsfree_driver_unregister() driver: 0x55e47b981740, name: hfpmodem
ofonod[3979408]: ../git/src/siri.c:ofono_siri_driver_unregister() driver: 0x55e47b9817a0, name: hfpmodem
ofonod[3979408]: ../git/src/network.c:ofono_netreg_driver_unregister() driver: 0x55e47b981460, name: dunmodem
ofonod[3979408]: ../git/src/gprs.c:ofono_gprs_driver_unregister() driver: 0x55e47b9814e0, name: dunmodem
ofonod[3979408]: ../git/src/voicecall.c:ofono_voicecall_driver_unregister() driver: 0x55e47b9812c0, name: stemodem
ofonod[3979408]: ../git/src/gprs.c:ofono_gprs_context_driver_unregister() driver: 0x55e47b981400, name: stemodem
ofonod[3979408]: ../git/src/radio-settings.c:ofono_radio_settings_driver_unregister() driver: 0x55e47b981380, name: stemodem
ofonod[3979408]: ../git/src/stk.c:ofono_stk_driver_unregister() driver: 0x55e47b981200, name: ifxmodem
ofonod[3979408]: ../git/src/gprs.c:ofono_gprs_context_driver_unregister() driver: 0x55e47b9811a0, name: ifxmodem
ofonod[3979408]: ../git/src/radio-settings.c:ofono_radio_settings_driver_unregister() driver: 0x55e47b981120, name: ifxmodem
ofonod[3979408]: ../git/src/audio-settings.c:ofono_audio_settings_driver_unregister() driver: 0x55e47b9810e0, name: ifxmodem
ofonod[3979408]: ../git/src/voicecall.c:ofono_voicecall_driver_unregister() driver: 0x55e47b981020, name: ifxmodem
ofonod[3979408]: ../git/src/ctm.c:ofono_ctm_driver_unregister() driver: 0x55e47b981260, name: ifxmodem
ofonod[3979408]: ../git/src/gprs.c:ofono_gprs_context_driver_unregister() driver: 0x55e47b980f40, name: hsomodem
ofonod[3979408]: ../git/src/radio-settings.c:ofono_radio_settings_driver_unregister() driver: 0x55e47b980fa0, name: hsomodem
ofonod[3979408]: ../git/src/location-reporting.c:ofono_location_reporting_driver_unregister() driver: 0x55e47b980e80, name: telitmodem
ofonod[3979408]: ../git/src/gprs.c:ofono_gprs_context_driver_unregister() driver: 0x55e47b980ee0, name: telitncmmodem
ofonod[3979408]: ../git/src/location-reporting.c:ofono_location_reporting_driver_unregister() driver: 0x55e47b980e20, name: mbmmodem
ofonod[3979408]: ../git/src/stk.c:ofono_stk_driver_unregister() driver: 0x55e47b980dc0, name: mbmmodem
ofonod[3979408]: ../git/src/gprs.c:ofono_gprs_context_driver_unregister() driver: 0x55e47b980d60, name: mbmmodem
ofonod[3979408]: ../git/src/stk.c:ofono_stk_driver_unregister() driver: 0x55e47b980d00, name: calypsomodem
ofonod[3979408]: ../git/src/voicecall.c:ofono_voicecall_driver_unregister() driver: 0x55e47b980c40, name: calypsomodem
ofonod[3979408]: ../git/src/cdma-netreg.c:ofono_cdma_netreg_driver_unregister() driver: 0x55e47b980c00, name: huaweimodem
ofonod[3979408]: ../git/src/gprs.c:ofono_gprs_context_driver_unregister() driver: 0x55e47b980b20, name: huaweimodem
ofonod[3979408]: ../git/src/radio-settings.c:ofono_radio_settings_driver_unregister() driver: 0x55e47b980b80, name: huaweimodem
ofonod[3979408]: ../git/src/audio-settings.c:ofono_audio_settings_driver_unregister() driver: 0x55e47b980ae0, name: huaweimodem
ofonod[3979408]: ../git/src/voicecall.c:ofono_voicecall_driver_unregister() driver: 0x55e47b980a20, name: huaweimodem
ofonod[3979408]: ../git/src/ussd.c:ofono_ussd_driver_unregister() driver: 0x55e47b9809c0, name: huaweimodem
ofonod[3979408]: ../git/src/gprs.c:ofono_gprs_context_driver_unregister() driver: 0x55e47b9808e0, name: iceramodem
ofonod[3979408]: ../git/src/radio-settings.c:ofono_radio_settings_driver_unregister() driver: 0x55e47b980940, name: iceramodem
ofonod[3979408]: ../git/src/radio-settings.c:ofono_radio_settings_driver_unregister() driver: 0x55e47b980860, name: ztemodem
ofonod[3979408]: ../git/src/gprs.c:ofono_gprs_context_driver_unregister() driver: 0x55e47b980800, name: swmodem
ofonod[3979408]: ../git/src/radio-settings.c:ofono_radio_settings_driver_unregister() driver: 0x55e47b980780, name: nwmodem
ofonod[3979408]: ../git/src/stk.c:ofono_stk_driver_unregister() driver: 0x55e47b980340, name: atmodem
ofonod[3979408]: ../git/src/sim.c:ofono_sim_driver_unregister() driver: 0x55e47b980140, name: atmodem
ofonod[3979408]: ../git/src/sim.c:ofono_sim_driver_unregister() driver: 0x55e47b980240, name: atmodem-noef
ofonod[3979408]: ../git/src/sms.c:ofono_sms_driver_unregister() driver: 0x55e47b97fd80, name: atmodem
ofonod[3979408]: ../git/src/ussd.c:ofono_ussd_driver_unregister() driver: 0x55e47b9803a0, name: atmodem
ofonod[3979408]: ../git/src/phonebook.c:ofono_phonebook_driver_unregister() driver: 0x55e47b980520, name: atmodem
ofonod[3979408]: ../git/src/call-settings.c:ofono_call_settings_driver_unregister() driver: 0x55e47b97fd00, name: atmodem
ofonod[3979408]: ../git/src/call-meter.c:ofono_call_meter_driver_unregister() driver: 0x55e47b97fea0, name: atmodem
ofonod[3979408]: ../git/src/call-forwarding.c:ofono_call_forwarding_driver_unregister() driver: 0x55e47b97fe40, name: atmodem
ofonod[3979408]: ../git/src/call-barring.c:ofono_call_barring_driver_unregister() driver: 0x55e47b9804c0, name: atmodem
ofonod[3979408]: ../git/src/network.c:ofono_netreg_driver_unregister() driver: 0x55e47b97ff20, name: atmodem
ofonod[3979408]: ../git/src/modem.c:ofono_devinfo_driver_unregister() driver: 0x55e47b980560, name: atmodem
ofonod[3979408]: ../git/src/voicecall.c:ofono_voicecall_driver_unregister() driver: 0x55e47b980400, name: atmodem
ofonod[3979408]: ../git/src/cbs.c:ofono_cbs_driver_unregister() driver: 0x55e47b97fde0, name: atmodem
ofonod[3979408]: ../git/src/call-volume.c:ofono_call_volume_driver_unregister() driver: 0x55e47b9805c0, name: atmodem
ofonod[3979408]: ../git/src/gprs.c:ofono_gprs_driver_unregister() driver: 0x55e47b980620, name: atmodem
ofonod[3979408]: ../git/src/gprs.c:ofono_gprs_context_driver_unregister() driver: 0x55e47b980680, name: atmodem
ofonod[3979408]: ../git/src/gnss.c:ofono_gnss_driver_unregister() driver: 0x55e47b9806e0, name: atmodem
ofonod[3979408]: ../git/src/lte.c:ofono_lte_driver_unregister() driver: 0x55e47b980740, name: atmodem
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e47b9aaf00, name: mbim
ofonod[3979408]: ../git/src/gprs.c:ofono_gprs_context_driver_unregister() driver: 0x55e47b97fca0, name: mbim
ofonod[3979408]: ../git/src/gprs.c:ofono_gprs_driver_unregister() driver: 0x55e47b97fc40, name: mbim
ofonod[3979408]: ../git/src/sms.c:ofono_sms_driver_unregister() driver: 0x55e47b97fbe0, name: mbim
ofonod[3979408]: ../git/src/network.c:ofono_netreg_driver_unregister() driver: 0x55e47b97fb60, name: mbim
ofonod[3979408]: ../git/src/sim.c:ofono_sim_driver_unregister() driver: 0x55e47b97fa60, name: mbim
ofonod[3979408]: ../git/src/modem.c:ofono_devinfo_driver_unregister() driver: 0x55e47b97fa00, name: mbim
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e47b9a7240, name: gobi
ofonod[3979408]: ../git/src/netmon.c:ofono_netmon_driver_unregister() driver: 0x55e47b97f9a0, name: qmimodem
ofonod[3979408]: ../git/src/location-reporting.c:ofono_location_reporting_driver_unregister() driver: 0x55e47b97f940, name: qmimodem
ofonod[3979408]: ../git/src/radio-settings.c:ofono_radio_settings_driver_unregister() driver: 0x55e47b97f8c0, name: qmimodem
ofonod[3979408]: ../git/src/lte.c:ofono_lte_driver_unregister() driver: 0x55e47b97f880, name: qmimodem
ofonod[3979408]: ../git/src/gprs.c:ofono_gprs_context_driver_unregister() driver: 0x55e47b97f820, name: qmimodem
ofonod[3979408]: ../git/src/gprs.c:ofono_gprs_driver_unregister() driver: 0x55e47b97f7c0, name: qmimodem
ofonod[3979408]: ../git/src/ussd.c:ofono_ussd_driver_unregister() driver: 0x55e47b97f760, name: qmimodem
ofonod[3979408]: ../git/src/sms.c:ofono_sms_driver_unregister() driver: 0x55e47b97f700, name: qmimodem
ofonod[3979408]: ../git/src/sim.c:ofono_sim_driver_unregister() driver: 0x55e47b97f600, name: qmimodem
ofonod[3979408]: ../git/src/sim.c:ofono_sim_driver_unregister() driver: 0x55e47b97f500, name: qmimodem-legacy
ofonod[3979408]: ../git/src/voicecall.c:ofono_voicecall_driver_unregister() driver: 0x55e47b97f3c0, name: qmimodem
ofonod[3979408]: ../git/src/network.c:ofono_netreg_driver_unregister() driver: 0x55e47b97f480, name: qmimodem
ofonod[3979408]: ../git/src/modem.c:ofono_devinfo_driver_unregister() driver: 0x55e47b97f360, name: qmimodem
ofonod[3979408]: ../git/drivers/rilmodem/rilmodem.c:rilmodem_exit() 
ofonod[3979408]: ../git/src/modem.c:ofono_devinfo_driver_unregister() driver: 0x55e47b97e620, name: rilmodem
ofonod[3979408]: ../git/src/sim.c:ofono_sim_driver_unregister() driver: 0x55e47b97e960, name: rilmodem
ofonod[3979408]: ../git/src/voicecall.c:ofono_voicecall_driver_unregister() driver: 0x55e47b97e700, name: rilmodem
ofonod[3979408]: ../git/src/sms.c:ofono_sms_driver_unregister() driver: 0x55e47b97ea60, name: rilmodem
ofonod[3979408]: ../git/src/network.c:ofono_netreg_driver_unregister() driver: 0x55e47b97e680, name: rilmodem
ofonod[3979408]: ../git/src/call-volume.c:ofono_call_volume_driver_unregister() driver: 0x55e47b97e7c0, name: rilmodem
ofonod[3979408]: ../git/src/gprs.c:ofono_gprs_driver_unregister() driver: 0x55e47b97e820, name: rilmodem
ofonod[3979408]: ../git/src/gprs.c:ofono_gprs_context_driver_unregister() driver: 0x55e47b97e880, name: rilmodem
ofonod[3979408]: ../git/src/ussd.c:ofono_ussd_driver_unregister() driver: 0x55e47b97eac0, name: rilmodem
ofonod[3979408]: ../git/src/call-settings.c:ofono_call_settings_driver_unregister() driver: 0x55e47b97eb20, name: rilmodem
ofonod[3979408]: ../git/src/call-forwarding.c:ofono_call_forwarding_driver_unregister() driver: 0x55e47b97eba0, name: rilmodem
ofonod[3979408]: ../git/src/radio-settings.c:ofono_radio_settings_driver_unregister() driver: 0x55e47b97ec00, name: rilmodem
ofonod[3979408]: ../git/src/call-barring.c:ofono_call_barring_driver_unregister() driver: 0x55e47b97ec80, name: rilmodem
ofonod[3979408]: ../git/src/netmon.c:ofono_netmon_driver_unregister() driver: 0x55e47b97ece0, name: rilmodem
ofonod[3979408]: ../git/src/stk.c:ofono_stk_driver_unregister() driver: 0x55e47b97ed40, name: rilmodem
ofonod[3979408]: ../git/src/cbs.c:ofono_cbs_driver_unregister() driver: 0x55e47b97eda0, name: rilmodem
ofonod[3979408]: ../git/src/lte.c:ofono_lte_driver_unregister() driver: 0x55e47b97ee00, name: rilmodem
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e47b995fc0, name: ril_intel
ofonod[3979408]: ../git/plugins/infineon.c:inf_exit() 
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e47b995c20, name: infineon
ofonod[3979408]: ../git/plugins/ril.c:ril_exit() 
ofonod[3979408]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e47b994dc0, name: ril
ofonod[3979408]: ../git/plugins/udevng.c:destroy_modem() /sys/devices/pci0000:00/0000:00:01.1/0000:01:00.0/usb1/1-1/1-1.1/1-1.1.1/1-1.1.1:1.0/ttyUSB2/tty/ttyUSB2
ofonod[3979408]: ../git/src/modem.c:ofono_modem_remove() 0x610000000b40
ofonod[3979408]: ../git/plugins/udevng.c:destroy_modem() /sys/devices/pci0000:00/0000:00:01.1/0000:01:00.0/usb1/1-1/1-1.1/1-1.1.3/1-1.1.3:1.0/ttyUSB0/tty/ttyUSB0
ofonod[3979408]: ../git/src/modem.c:ofono_modem_remove() 0x610000000d40
ofonod[3979408]: ../git/src/private-network.c:ofono_private_network_driver_unregister() driver: 0x55e47b9f7660, name: Example Private Network Driver
ofonod[3979408]: Exit

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [PATCHv3] quectel: handle sim states
  2019-09-24 20:44           ` Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
@ 2019-09-24 20:56             ` Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
  2019-09-24 20:40               ` Denis Kenzior
  0 siblings, 1 reply; 15+ messages in thread
From: Martin =?unknown-8bit?q?Hundeb=C3=B8ll?= @ 2019-09-24 20:56 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 2027 bytes --]

Hi Denis,

On 24/09/2019 22.44, Martin Hundebøll wrote:
> Hi Denis,
> 
> On 24/09/2019 04.50, Denis Kenzior wrote:
>>> I've tried to work-around quectel_post_sim() being called after the 
>>> PIN is entered, but before I call ofono_sim_initialized_notify():
>>>
>>> ../git/drivers/atmodem/sim.c:at_crsm_read_cb() crsm_read_cb: 90, 00, 1
>>> ../git/src/simfs.c:sim_fs_op_read_block_cb() bufoff: 0, dataoff: 0, 
>>> tocopy: 1
>>> Aux: > AT+CIMI\r
>>> ../git/plugins/quectel.c:init_timer_cb() 0x610000000d40
>>> Aux: < \r\n238013814764391\r\n\r\nOK\r\n
>>> ../git/drivers/atmodem/sim.c:at_cimi_cb() cimi_cb: 238013814764391
>>> ../git/src/sim.c:call_state_watches()
>>> ../git/src/modem.c:modem_change_state() old state: 1, new state: 2
>>> ../git/plugins/quectel.c:quectel_post_sim() 0x610000000d40
>>>
>>> So after reading the CIMI, the SIM is marked as ready, and 
>>> call_state_watches() is called. (I added a DBG() there.)
>>>
>>> Is there a way to avoid that?
>>>
>>
>> So this is what sim_initialized is for.  After the PIN is entered 
>> ofono will pause sim initialization until sim_initialized is called.  
>> If you've gotten to the point that read_imsi is being executed, then 
>> you somehow called ofono_sim_initialized too early.
>>
>> This is why I asked in my previous reply whether you're somehow 
>> triggering ofono_sim_initialized before it should be triggered?  Or 
>> maybe there's something else happening.
> 
> I tried implementing what you suggest - see the attached patch. But I 
> still get "SMS not supported by this modem.".
> 
> The attached log shows quectel_post_sim() being called (line 584) way 
> before QINISTAT returns 3 (line 686).
> 
> Is this because my SIM isn't locked, and so the 
> ofono_sim_inserted_notify() call makes it go all the way?
> 
> I can work around it by calling ofono_sim_inserted_notify() either if 
> the SIM is locked, or/and when qinistat returns 3.

It also happens on a locked SIM - log attached.

// Martin


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: ofono-locked.log --]
[-- Type: text/x-log, Size: 74995 bytes --]

ofonod[3982107]: oFono version 1.30
ofonod[3982107]: ../git/src/plugin.c:__ofono_plugin_init() 
ofonod[3982107]: ../git/plugins/push-notification.c:push_notification_init() 
ofonod[3982107]: ../git/plugins/smart-messaging.c:smart_messaging_init() 
ofonod[3982107]: ../git/plugins/emulator_fuzz.c:emulator_fuzz_init() 
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e42d122ba0, name: stktest
ofonod[3982107]: ../git/src/modem.c:ofono_modem_create() name: stktest, type: stktest
ofonod[3982107]: ../git/src/modem.c:ofono_modem_register() 0x610000000140
ofonod[3982107]: ../git/plugins/stktest.c:stktest_probe() 0x610000000140
ofonod[3982107]: ../git/src/modem.c:emit_modem_added() 0x610000000140
ofonod[3982107]: ../git/src/modem.c:get_modem_property() modem 0x610000000140 property SystemPath
ofonod[3982107]: ../git/src/modem.c:call_modemwatches() 0x610000000140 added:1
ofonod[3982107]: ../git/plugins/smart-messaging.c:modem_watch() modem: 0x610000000140, added: 1
ofonod[3982107]: ../git/plugins/push-notification.c:modem_watch() modem: 0x610000000140, added: 1
ofonod[3982107]: ../git/examples/emulator.c:example_emulator_init() 
ofonod[3982107]: ../git/examples/emulator.c:modem_watch() modem: 0x610000000140, added: 1
ofonod[3982107]: ../git/src/gprs-provision.c:ofono_gprs_provision_driver_register() driver: 0x55e42d121a20 name: Example GPRS context provisioning
ofonod[3982107]: ../git/src/nettime.c:ofono_nettime_driver_register() driver: 0x55e42d1216e0 name: Example Network Time
ofonod[3982107]: ../git/src/history.c:ofono_history_driver_register() driver: 0x55e42d120cc0 name: Example Call History
ofonod[3982107]: ../git/plugins/upower.c:upower_init() upower init
ofonod[3982107]: ../git/src/handsfree-audio.c:ofono_handsfree_card_driver_register() driver: 0x55e42d11eb20
ofonod[3982107]: ../git/plugins/hfp_ag_bluez5.c:modem_watch() modem: 0x610000000140, added: 1
ofonod[3982107]: ../git/plugins/dun_gw_bluez5.c:dun_gw_init() 
ofonod[3982107]: ../git/plugins/dun_gw_bluez5.c:modem_watch() modem: 0x610000000140, added: 1
ofonod[3982107]: ../git/src/handsfree-audio.c:ofono_handsfree_card_driver_register() driver: 0x55e42d11c000
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e42d11bf80, name: hfp
ofonod[3982107]: ../git/plugins/xmm7xxx.c:xmm7xxx_init() 
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e42d119a20, name: xmm7xxx
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e42d118b20, name: ublox
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e42d116260, name: quectel
ofonod[3982107]: ../git/plugins/telit.c:telit_init() 
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e42d114e80, name: telit
ofonod[3982107]: ../git/plugins/connman.c:connman_init() 
ofonod[3982107]: ../git/src/private-network.c:ofono_private_network_driver_register() driver: 0x55e42d1144c0, name: ConnMan Private Network
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e42d113ca0, name: sim7100
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e42d112b60, name: sim900
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e42d111e00, name: samsung
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e42d1115a0, name: speedupcdma
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e42d110aa0, name: speedup
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e42d110200, name: alcatel
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e42d10f300, name: icera
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e42d10e8c0, name: linktop
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e42d10e280, name: nokiacdma
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e42d10d9e0, name: nokia
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e42d10c320, name: gemalto
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e42d10b800, name: cinterion
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e42d109ce0, name: ste
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e42d108540, name: ifx
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e42d107bc0, name: palmpre
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e42d106fa0, name: novatel
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e42d106560, name: sierra
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e42d104d80, name: huawei
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e42d103ca0, name: zte
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e42d102cc0, name: hso
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e42d101c20, name: mbm
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e42d100880, name: calypso
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e42d100040, name: wavecom
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e42d0ff900, name: g1
ofonod[3982107]: ../git/src/cdma-voicecall.c:ofono_cdma_voicecall_driver_register() driver: 0x55e42d0acca0, name: cdmamodem
ofonod[3982107]: ../git/src/modem.c:ofono_devinfo_driver_register() driver: 0x55e42d0acd00, name: cdmamodem
ofonod[3982107]: ../git/src/cdma-connman.c:ofono_cdma_connman_driver_register() driver: 0x55e42d0acd60, name: cdmamodem
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e42d0fd060, name: phonesim
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e42d0fd0e0, name: localhfp
ofonod[3982107]: ../git/src/gprs.c:ofono_gprs_context_driver_register() driver: 0x55e42d0fcf20, name: phonesim
ofonod[3982107]: ../git/src/ctm.c:ofono_ctm_driver_register() driver: 0x55e42d0fd000, name: phonesim
ofonod[3982107]: ../git/src/radio-settings.c:ofono_radio_settings_driver_register() driver: 0x55e42d0fcf80, name: phonesim
ofonod[3982107]: ../git/plugins/phonesim.c:parse_config() filename /usr/local/etc/ofono/phonesim.conf
ofonod[3982107]: Reading of /usr/local/etc/ofono/phonesim.conf failed: No such file or directory
ofonod[3982107]: ../git/src/radio-settings.c:ofono_radio_settings_driver_register() driver: 0x55e42d0acb60, name: xmm7modem
ofonod[3982107]: ../git/src/ims.c:ofono_ims_driver_register() driver: 0x55e42d0acbe0, name: xmm7modem
ofonod[3982107]: ../git/src/netmon.c:ofono_netmon_driver_register() driver: 0x55e42d0acc40, name: xmm7modem
ofonod[3982107]: ../git/src/location-reporting.c:ofono_location_reporting_driver_register() driver: 0x55e42d0aca40, name: gemaltomodem
ofonod[3982107]: ../git/src/voicecall.c:ofono_voicecall_driver_register() driver: 0x55e42d0acaa0, name: gemaltomodem
ofonod[3982107]: ../git/src/gprs.c:ofono_gprs_context_driver_register() driver: 0x55e42d0ac940, name: ubloxmodem
ofonod[3982107]: ../git/src/network.c:ofono_netreg_driver_register() driver: 0x55e42d0b4c80, name: ubloxmodem
ofonod[3982107]: ../git/src/netmon.c:ofono_netmon_driver_register() driver: 0x55e42d0ac9a0, name: ubloxmodem
ofonod[3982107]: ../git/src/lte.c:ofono_lte_driver_register() driver: 0x55e42d0aca00, name: ubloxmodem
ofonod[3982107]: ../git/src/ussd.c:ofono_ussd_driver_register() driver: 0x55e42d0ac7e0, name: speedupmodem
ofonod[3982107]: ../git/src/voicecall.c:ofono_voicecall_driver_register() driver: 0x55e42d0ac540, name: hfpmodem
ofonod[3982107]: ../git/src/modem.c:ofono_devinfo_driver_register() driver: 0x55e42d0ac6e0, name: hfpmodem
ofonod[3982107]: ../git/src/network.c:ofono_netreg_driver_register() driver: 0x55e42d0ac600, name: hfpmodem
ofonod[3982107]: ../git/src/call-volume.c:ofono_call_volume_driver_register() driver: 0x55e42d0ac680, name: hfpmodem
ofonod[3982107]: ../git/src/handsfree.c:ofono_handsfree_driver_register() driver: 0x55e42d0ac740, name: hfpmodem
ofonod[3982107]: ../git/src/siri.c:ofono_siri_driver_register() driver: 0x55e42d0ac7a0, name: hfpmodem
ofonod[3982107]: ../git/src/network.c:ofono_netreg_driver_register() driver: 0x55e42d0ac460, name: dunmodem
ofonod[3982107]: ../git/src/gprs.c:ofono_gprs_driver_register() driver: 0x55e42d0ac4e0, name: dunmodem
ofonod[3982107]: ../git/src/voicecall.c:ofono_voicecall_driver_register() driver: 0x55e42d0ac2c0, name: stemodem
ofonod[3982107]: ../git/src/gprs.c:ofono_gprs_context_driver_register() driver: 0x55e42d0ac400, name: stemodem
ofonod[3982107]: ../git/src/radio-settings.c:ofono_radio_settings_driver_register() driver: 0x55e42d0ac380, name: stemodem
ofonod[3982107]: ../git/src/voicecall.c:ofono_voicecall_driver_register() driver: 0x55e42d0ac020, name: ifxmodem
ofonod[3982107]: ../git/src/audio-settings.c:ofono_audio_settings_driver_register() driver: 0x55e42d0ac0e0, name: ifxmodem
ofonod[3982107]: ../git/src/radio-settings.c:ofono_radio_settings_driver_register() driver: 0x55e42d0ac120, name: ifxmodem
ofonod[3982107]: ../git/src/gprs.c:ofono_gprs_context_driver_register() driver: 0x55e42d0ac1a0, name: ifxmodem
ofonod[3982107]: ../git/src/stk.c:ofono_stk_driver_register() driver: 0x55e42d0ac200, name: ifxmodem
ofonod[3982107]: ../git/src/ctm.c:ofono_ctm_driver_register() driver: 0x55e42d0ac260, name: ifxmodem
ofonod[3982107]: ../git/src/gprs.c:ofono_gprs_context_driver_register() driver: 0x55e42d0abf40, name: hsomodem
ofonod[3982107]: ../git/src/radio-settings.c:ofono_radio_settings_driver_register() driver: 0x55e42d0abfa0, name: hsomodem
ofonod[3982107]: ../git/src/location-reporting.c:ofono_location_reporting_driver_register() driver: 0x55e42d0abe80, name: telitmodem
ofonod[3982107]: ../git/src/gprs.c:ofono_gprs_context_driver_register() driver: 0x55e42d0abee0, name: telitncmmodem
ofonod[3982107]: ../git/src/gprs.c:ofono_gprs_context_driver_register() driver: 0x55e42d0abd60, name: mbmmodem
ofonod[3982107]: ../git/src/stk.c:ofono_stk_driver_register() driver: 0x55e42d0abdc0, name: mbmmodem
ofonod[3982107]: ../git/src/location-reporting.c:ofono_location_reporting_driver_register() driver: 0x55e42d0abe20, name: mbmmodem
ofonod[3982107]: ../git/src/voicecall.c:ofono_voicecall_driver_register() driver: 0x55e42d0abc40, name: calypsomodem
ofonod[3982107]: ../git/src/stk.c:ofono_stk_driver_register() driver: 0x55e42d0abd00, name: calypsomodem
ofonod[3982107]: ../git/src/ussd.c:ofono_ussd_driver_register() driver: 0x55e42d0ab9c0, name: huaweimodem
ofonod[3982107]: ../git/src/voicecall.c:ofono_voicecall_driver_register() driver: 0x55e42d0aba20, name: huaweimodem
ofonod[3982107]: ../git/src/audio-settings.c:ofono_audio_settings_driver_register() driver: 0x55e42d0abae0, name: huaweimodem
ofonod[3982107]: ../git/src/radio-settings.c:ofono_radio_settings_driver_register() driver: 0x55e42d0abb80, name: huaweimodem
ofonod[3982107]: ../git/src/gprs.c:ofono_gprs_context_driver_register() driver: 0x55e42d0abb20, name: huaweimodem
ofonod[3982107]: ../git/src/cdma-netreg.c:ofono_cdma_netreg_driver_register() driver: 0x55e42d0abc00, name: huaweimodem
ofonod[3982107]: ../git/src/gprs.c:ofono_gprs_context_driver_register() driver: 0x55e42d0ab8e0, name: iceramodem
ofonod[3982107]: ../git/src/radio-settings.c:ofono_radio_settings_driver_register() driver: 0x55e42d0ab940, name: iceramodem
ofonod[3982107]: ../git/src/radio-settings.c:ofono_radio_settings_driver_register() driver: 0x55e42d0ab860, name: ztemodem
ofonod[3982107]: ../git/src/gprs.c:ofono_gprs_context_driver_register() driver: 0x55e42d0ab800, name: swmodem
ofonod[3982107]: ../git/src/radio-settings.c:ofono_radio_settings_driver_register() driver: 0x55e42d0ab780, name: nwmodem
ofonod[3982107]: ../git/src/voicecall.c:ofono_voicecall_driver_register() driver: 0x55e42d0ab400, name: atmodem
ofonod[3982107]: ../git/src/modem.c:ofono_devinfo_driver_register() driver: 0x55e42d0ab560, name: atmodem
ofonod[3982107]: ../git/src/call-barring.c:ofono_call_barring_driver_register() driver: 0x55e42d0ab4c0, name: atmodem
ofonod[3982107]: ../git/src/call-forwarding.c:ofono_call_forwarding_driver_register() driver: 0x55e42d0aae40, name: atmodem
ofonod[3982107]: ../git/src/call-meter.c:ofono_call_meter_driver_register() driver: 0x55e42d0aaea0, name: atmodem
ofonod[3982107]: ../git/src/call-settings.c:ofono_call_settings_driver_register() driver: 0x55e42d0aad00, name: atmodem
ofonod[3982107]: ../git/src/phonebook.c:ofono_phonebook_driver_register() driver: 0x55e42d0ab520, name: atmodem
ofonod[3982107]: ../git/src/ussd.c:ofono_ussd_driver_register() driver: 0x55e42d0ab3a0, name: atmodem
ofonod[3982107]: ../git/src/sms.c:ofono_sms_driver_register() driver: 0x55e42d0aad80, name: atmodem
ofonod[3982107]: ../git/src/sim.c:ofono_sim_driver_register() driver: 0x55e42d0ab140, name: atmodem
ofonod[3982107]: ../git/src/sim.c:ofono_sim_driver_register() driver: 0x55e42d0ab240, name: atmodem-noef
ofonod[3982107]: ../git/src/stk.c:ofono_stk_driver_register() driver: 0x55e42d0ab340, name: atmodem
ofonod[3982107]: ../git/src/network.c:ofono_netreg_driver_register() driver: 0x55e42d0aaf20, name: atmodem
ofonod[3982107]: ../git/src/cbs.c:ofono_cbs_driver_register() driver: 0x55e42d0aade0, name: atmodem
ofonod[3982107]: ../git/src/call-volume.c:ofono_call_volume_driver_register() driver: 0x55e42d0ab5c0, name: atmodem
ofonod[3982107]: ../git/src/gprs.c:ofono_gprs_driver_register() driver: 0x55e42d0ab620, name: atmodem
ofonod[3982107]: ../git/src/gprs.c:ofono_gprs_context_driver_register() driver: 0x55e42d0ab680, name: atmodem
ofonod[3982107]: ../git/src/gnss.c:ofono_gnss_driver_register() driver: 0x55e42d0ab6e0, name: atmodem
ofonod[3982107]: ../git/src/lte.c:ofono_lte_driver_register() driver: 0x55e42d0ab740, name: atmodem
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e42d0d5f00, name: mbim
ofonod[3982107]: ../git/src/modem.c:ofono_devinfo_driver_register() driver: 0x55e42d0aaa00, name: mbim
ofonod[3982107]: ../git/src/sim.c:ofono_sim_driver_register() driver: 0x55e42d0aaa60, name: mbim
ofonod[3982107]: ../git/src/network.c:ofono_netreg_driver_register() driver: 0x55e42d0aab60, name: mbim
ofonod[3982107]: ../git/src/sms.c:ofono_sms_driver_register() driver: 0x55e42d0aabe0, name: mbim
ofonod[3982107]: ../git/src/gprs.c:ofono_gprs_driver_register() driver: 0x55e42d0aac40, name: mbim
ofonod[3982107]: ../git/src/gprs.c:ofono_gprs_context_driver_register() driver: 0x55e42d0aaca0, name: mbim
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e42d0d2240, name: gobi
ofonod[3982107]: ../git/src/modem.c:ofono_devinfo_driver_register() driver: 0x55e42d0aa360, name: qmimodem
ofonod[3982107]: ../git/src/network.c:ofono_netreg_driver_register() driver: 0x55e42d0aa480, name: qmimodem
ofonod[3982107]: ../git/src/voicecall.c:ofono_voicecall_driver_register() driver: 0x55e42d0aa3c0, name: qmimodem
ofonod[3982107]: ../git/src/sim.c:ofono_sim_driver_register() driver: 0x55e42d0aa500, name: qmimodem-legacy
ofonod[3982107]: ../git/src/sim.c:ofono_sim_driver_register() driver: 0x55e42d0aa600, name: qmimodem
ofonod[3982107]: ../git/src/sms.c:ofono_sms_driver_register() driver: 0x55e42d0aa700, name: qmimodem
ofonod[3982107]: ../git/src/ussd.c:ofono_ussd_driver_register() driver: 0x55e42d0aa760, name: qmimodem
ofonod[3982107]: ../git/src/gprs.c:ofono_gprs_driver_register() driver: 0x55e42d0aa7c0, name: qmimodem
ofonod[3982107]: ../git/src/gprs.c:ofono_gprs_context_driver_register() driver: 0x55e42d0aa820, name: qmimodem
ofonod[3982107]: ../git/src/lte.c:ofono_lte_driver_register() driver: 0x55e42d0aa880, name: qmimodem
ofonod[3982107]: ../git/src/radio-settings.c:ofono_radio_settings_driver_register() driver: 0x55e42d0aa8c0, name: qmimodem
ofonod[3982107]: ../git/src/location-reporting.c:ofono_location_reporting_driver_register() driver: 0x55e42d0aa940, name: qmimodem
ofonod[3982107]: ../git/src/netmon.c:ofono_netmon_driver_register() driver: 0x55e42d0aa9a0, name: qmimodem
ofonod[3982107]: ../git/drivers/rilmodem/rilmodem.c:rilmodem_init() 
ofonod[3982107]: ../git/src/modem.c:ofono_devinfo_driver_register() driver: 0x55e42d0a9620, name: rilmodem
ofonod[3982107]: ../git/drivers/rilmodem/sim.c:ril_sim_init() 
ofonod[3982107]: ../git/src/sim.c:ofono_sim_driver_register() driver: 0x55e42d0a9960, name: rilmodem
ofonod[3982107]: ../git/src/voicecall.c:ofono_voicecall_driver_register() driver: 0x55e42d0a9700, name: rilmodem
ofonod[3982107]: ../git/src/sms.c:ofono_sms_driver_register() driver: 0x55e42d0a9a60, name: rilmodem
ofonod[3982107]: ../git/src/network.c:ofono_netreg_driver_register() driver: 0x55e42d0a9680, name: rilmodem
ofonod[3982107]: ../git/src/call-volume.c:ofono_call_volume_driver_register() driver: 0x55e42d0a97c0, name: rilmodem
ofonod[3982107]: ../git/src/gprs.c:ofono_gprs_driver_register() driver: 0x55e42d0a9820, name: rilmodem
ofonod[3982107]: ../git/src/gprs.c:ofono_gprs_context_driver_register() driver: 0x55e42d0a9880, name: rilmodem
ofonod[3982107]: ../git/src/ussd.c:ofono_ussd_driver_register() driver: 0x55e42d0a9ac0, name: rilmodem
ofonod[3982107]: ../git/src/call-settings.c:ofono_call_settings_driver_register() driver: 0x55e42d0a9b20, name: rilmodem
ofonod[3982107]: ../git/src/call-forwarding.c:ofono_call_forwarding_driver_register() driver: 0x55e42d0a9ba0, name: rilmodem
ofonod[3982107]: ../git/src/radio-settings.c:ofono_radio_settings_driver_register() driver: 0x55e42d0a9c00, name: rilmodem
ofonod[3982107]: ../git/src/call-barring.c:ofono_call_barring_driver_register() driver: 0x55e42d0a9c80, name: rilmodem
ofonod[3982107]: ../git/src/netmon.c:ofono_netmon_driver_register() driver: 0x55e42d0a9ce0, name: rilmodem
ofonod[3982107]: ../git/src/stk.c:ofono_stk_driver_register() driver: 0x55e42d0a9d40, name: rilmodem
ofonod[3982107]: ../git/src/cbs.c:ofono_cbs_driver_register() driver: 0x55e42d0a9da0, name: rilmodem
ofonod[3982107]: ../git/src/lte.c:ofono_lte_driver_register() driver: 0x55e42d0a9e00, name: rilmodem
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e42d0c0fc0, name: ril_intel
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e42d0c0c20, name: infineon
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_register() driver: 0x55e42d0bfdc0, name: ril
ofonod[3982107]: ../git/plugins/udevng.c:udev_start() 
ofonod[3982107]: ../git/plugins/udevng.c:enumerate_devices() 
ofonod[3982107]: ../git/plugins/udevng.c:check_usb_device() hub [1d6b:0002]
ofonod[3982107]: ../git/plugins/udevng.c:check_usb_device() usb [1d6b:0002]
ofonod[3982107]: ../git/plugins/udevng.c:check_usb_device() usb [05e3:0610]
ofonod[3982107]: ../git/plugins/udevng.c:check_usb_device() usb [05e3:0610]
ofonod[3982107]: ../git/plugins/udevng.c:check_usb_device() ftdi_sio [0403:6001]
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() /sys/devices/pci0000:00/0000:00:01.1/0000:01:00.0/usb1/1-1/1-1.1/1-1.1.1/1-1.1.1:1.0/ttyUSB2/tty/ttyUSB2
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() /devices/pci0000:00/0000:00:01.1/0000:01:00.0/usb1/1-1/1-1.1/1-1.1.1/1-1.1.1:1.0/ttyUSB2/tty/ttyUSB2
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() /dev/ttyUSB2 (quectel)
ofonod[3982107]: ../git/plugins/udevng.c:check_usb_device() usb [05e3:0610]
ofonod[3982107]: ../git/plugins/udevng.c:check_usb_device() cdc_ether [0525:a4a2]
ofonod[3982107]: ../git/plugins/udevng.c:check_usb_device() cdc_ether [0525:a4a2]
ofonod[3982107]: ../git/plugins/udevng.c:check_usb_device() cdc_ether [0525:a4a2]
ofonod[3982107]: ../git/plugins/udevng.c:check_usb_device() usb [05e3:0610]
ofonod[3982107]: ../git/plugins/udevng.c:check_usb_device() ftdi_sio [0403:6001]
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() /sys/devices/pci0000:00/0000:00:01.1/0000:01:00.0/usb1/1-1/1-1.1/1-1.1.3/1-1.1.3:1.0/ttyUSB0/tty/ttyUSB0
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() /devices/pci0000:00/0000:00:01.1/0000:01:00.0/usb1/1-1/1-1.1/1-1.1.3/1-1.1.3:1.0/ttyUSB0/tty/ttyUSB0
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() /dev/ttyUSB0 (quectel)
ofonod[3982107]: ../git/plugins/udevng.c:check_usb_device() usb [05e3:0610]
ofonod[3982107]: ../git/plugins/udevng.c:check_usb_device() ftdi_sio [0403:6015]
ofonod[3982107]: ../git/plugins/udevng.c:check_usb_device() ftdi_sio [0403:6015]
ofonod[3982107]: ../git/plugins/udevng.c:check_usb_device() hub [05e3:0610]
ofonod[3982107]: ../git/plugins/udevng.c:check_usb_device() hub [05e3:0610]
ofonod[3982107]: ../git/plugins/udevng.c:check_usb_device() usb [1d6b:0002]
ofonod[3982107]: ../git/plugins/udevng.c:check_usb_device() usb-storage [05e3:0732]
ofonod[3982107]: ../git/plugins/udevng.c:check_usb_device() usb [1d6b:0002]
ofonod[3982107]: ../git/plugins/udevng.c:check_usb_device() btusb [8087:0aa7]
ofonod[3982107]: ../git/plugins/udevng.c:check_usb_device() btusb [8087:0aa7]
ofonod[3982107]: ../git/plugins/udevng.c:check_usb_device() hub [1d6b:0003]
ofonod[3982107]: ../git/plugins/udevng.c:check_usb_device() usb [1d6b:0003]
ofonod[3982107]: ../git/plugins/udevng.c:check_usb_device() usb [05e3:0612]
ofonod[3982107]: ../git/plugins/udevng.c:check_usb_device() hub [05e3:0612]
ofonod[3982107]: ../git/plugins/udevng.c:check_usb_device() hub [05e3:0612]
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:check_usb_device() hub [1d6b:0002]
ofonod[3982107]: ../git/plugins/udevng.c:check_usb_device() hub [1d6b:0003]
ofonod[3982107]: ../git/plugins/udevng.c:check_usb_device() hub [1d6b:0002]
ofonod[3982107]: ../git/plugins/udevng.c:check_usb_device() hub [1d6b:0003]
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:add_serial_device() Device is missing required OFONO_DRIVER property
ofonod[3982107]: ../git/plugins/udevng.c:create_modem() /sys/devices/pci0000:00/0000:00:01.1/0000:01:00.0/usb1/1-1/1-1.1/1-1.1.1/1-1.1.1:1.0/ttyUSB2/tty/ttyUSB2
ofonod[3982107]: ../git/plugins/udevng.c:create_modem() driver=quectel
ofonod[3982107]: ../git/src/modem.c:ofono_modem_create() name: (null), type: quectel
ofonod[3982107]: ../git/src/modem.c:set_modem_property() modem 0x610000000b40 property RtsCts
ofonod[3982107]: ../git/src/modem.c:set_modem_property() modem 0x610000000b40 property Device
ofonod[3982107]: ../git/src/modem.c:set_modem_property() modem 0x610000000b40 property SystemPath
ofonod[3982107]: ../git/src/modem.c:ofono_modem_register() 0x610000000b40
ofonod[3982107]: ../git/plugins/quectel.c:quectel_probe() 0x610000000b40
ofonod[3982107]: ../git/plugins/quectel.c:quectel_probe_gpio() 0x610000000b40
ofonod[3982107]: ../git/src/modem.c:get_modem_property() modem 0x610000000b40 property GpioChip
ofonod[3982107]: ../git/src/modem.c:emit_modem_added() 0x610000000b40
ofonod[3982107]: ../git/src/modem.c:get_modem_property() modem 0x610000000b40 property SystemPath
ofonod[3982107]: ../git/src/modem.c:call_modemwatches() 0x610000000b40 added:1
ofonod[3982107]: ../git/plugins/dun_gw_bluez5.c:modem_watch() modem: 0x610000000b40, added: 1
ofonod[3982107]: ../git/plugins/hfp_ag_bluez5.c:modem_watch() modem: 0x610000000b40, added: 1
ofonod[3982107]: ../git/examples/emulator.c:modem_watch() modem: 0x610000000b40, added: 1
ofonod[3982107]: ../git/plugins/smart-messaging.c:modem_watch() modem: 0x610000000b40, added: 1
ofonod[3982107]: ../git/plugins/push-notification.c:modem_watch() modem: 0x610000000b40, added: 1
ofonod[3982107]: ../git/plugins/udevng.c:create_modem() /sys/devices/pci0000:00/0000:00:01.1/0000:01:00.0/usb1/1-1/1-1.1/1-1.1.3/1-1.1.3:1.0/ttyUSB0/tty/ttyUSB0
ofonod[3982107]: ../git/plugins/udevng.c:create_modem() driver=quectel
ofonod[3982107]: ../git/src/modem.c:ofono_modem_create() name: (null), type: quectel
ofonod[3982107]: ../git/src/modem.c:set_modem_property() modem 0x610000000d40 property RtsCts
ofonod[3982107]: ../git/src/modem.c:set_modem_property() modem 0x610000000d40 property Device
ofonod[3982107]: ../git/src/modem.c:set_modem_property() modem 0x610000000d40 property SystemPath
ofonod[3982107]: ../git/src/modem.c:ofono_modem_register() 0x610000000d40
ofonod[3982107]: ../git/plugins/quectel.c:quectel_probe() 0x610000000d40
ofonod[3982107]: ../git/plugins/quectel.c:quectel_probe_gpio() 0x610000000d40
ofonod[3982107]: ../git/src/modem.c:get_modem_property() modem 0x610000000d40 property GpioChip
ofonod[3982107]: ../git/src/modem.c:emit_modem_added() 0x610000000d40
ofonod[3982107]: ../git/src/modem.c:get_modem_property() modem 0x610000000d40 property SystemPath
ofonod[3982107]: ../git/src/modem.c:call_modemwatches() 0x610000000d40 added:1
ofonod[3982107]: ../git/plugins/dun_gw_bluez5.c:modem_watch() modem: 0x610000000d40, added: 1
ofonod[3982107]: ../git/plugins/hfp_ag_bluez5.c:modem_watch() modem: 0x610000000d40, added: 1
ofonod[3982107]: ../git/examples/emulator.c:modem_watch() modem: 0x610000000d40, added: 1
ofonod[3982107]: ../git/plugins/smart-messaging.c:modem_watch() modem: 0x610000000d40, added: 1
ofonod[3982107]: ../git/plugins/push-notification.c:modem_watch() modem: 0x610000000d40, added: 1
ofonod[3982107]: ../git/src/private-network.c:ofono_private_network_driver_register() driver: 0x55e42d122620, name: Example Private Network Driver
ofonod[3982107]: ../git/plugins/upower.c:upower_connect() upower connect
ofonod[3982107]: ../git/plugins/upower.c:enum_devices_reply() 
ofonod[3982107]: ../git/plugins/upower.c:parse_devices_reply() 
ofonod[3982107]: ../git/plugins/upower.c:enum_devices_reply() parse_devices_reply OK
ofonod[3982107]: enum_devices_reply: no battery detected
ofonod[3982107]: ../git/plugins/quectel.c:quectel_enable() 0x610000000d40
ofonod[3982107]: ../git/src/modem.c:get_modem_property() modem 0x610000000d40 property Device
ofonod[3982107]: ../git/plugins/quectel.c:open_serial() 0x610000000d40
ofonod[3982107]: ../git/src/modem.c:get_modem_property() modem 0x610000000d40 property Device
ofonod[3982107]: ../git/src/modem.c:get_modem_property() modem 0x610000000d40 property RtsCts
ofonod[3982107]: UART: > AT\r
ofonod[3982107]: UART: < \r\nOK\r\n
ofonod[3982107]: ../git/plugins/quectel.c:init_cmd_cb() 0x610000000d40
ofonod[3982107]: ../git/src/modem.c:get_modem_property() modem 0x610000000d40 property RtsCts
ofonod[3982107]: UART: > AT+IFC=0,0; E0\r
ofonod[3982107]: UART: < \r\nOK\r\n
ofonod[3982107]: ../git/plugins/quectel.c:ate_cb() 0x610000000d40
ofonod[3982107]: UART: > AT+CMUX=0,0,5,127,10,3,30,10,2\r
ofonod[3982107]: UART: < \r\nOK\r\n\371\371\371\371\371\003\037\0016\371\371\013s\001\222\371
ofonod[3982107]: ../git/plugins/quectel.c:cmux_cb() 0x610000000d40
ofonod[3982107]: ../git/plugins/quectel.c:create_chat() 0x610000000d40
ofonod[3982107]: ../git/plugins/quectel.c:create_chat() 0x610000000d40
ofonod[3982107]: ../git/plugins/quectel.c:setup_aux() 0x610000000d40
ofonod[3982107]: Aux: > ATE0; &C0\r
ofonod[3982107]: Modem: < \r\nOK\r\n
ofonod[3982107]: Aux: < \r\nOK\r\n
ofonod[3982107]: Aux: > AT+CMEE=1; +QIURC=0\r
ofonod[3982107]: Aux: < \r\nOK\r\n
ofonod[3982107]: Aux: > AT+CGMM\r
ofonod[3982107]: Aux: < \r\nQuectel_MC60\r\n\r\nOK\r\n
ofonod[3982107]: ../git/plugins/quectel.c:cgmm_cb() 0x610000000d40 ok 1
ofonod[3982107]: ../git/plugins/quectel.c:cgmm_cb() 0x610000000d40 model MC60
ofonod[3982107]: Aux: > AT+CFUN?\r
ofonod[3982107]: Aux: < \r\n+CFUN: 0\r\n\r\nOK\r\n
ofonod[3982107]: ../git/plugins/quectel.c:cfun_query() 0x610000000d40 ok 1
ofonod[3982107]: Aux: > AT+CFUN=4\r
ofonod[3982107]: Modem: < \r\n+CPIN: SIM PIN\r\n
ofonod[3982107]: Aux: < \r\nOK\r\n\r\n+CPIN: SIM PIN\r\n
ofonod[3982107]: ../git/plugins/quectel.c:cfun_enable() 0x610000000d40 ok 1
ofonod[3982107]: ../git/plugins/quectel.c:dbus_hw_enable() 0x610000000d40
ofonod[3982107]: ../git/examples/emulator.c:powered_watch() Adding modem 0x610000000d40 to the list
ofonod[3982107]: ../git/examples/emulator.c:create_tcp() Created server_watch: 53
ofonod[3982107]: ../git/examples/emulator.c:create_tcp() Created server_watch: 54
ofonod[3982107]: ../git/src/modem.c:modem_change_state() old state: 0, new state: 1
ofonod[3982107]: ../git/plugins/quectel.c:quectel_pre_sim() 0x610000000d40
ofonod[3982107]: ../git/plugins/quectel.c:sim_watch_cb() 0x610000000d40
ofonod[3982107]: /quectel_1: sim locked
ofonod[3982107]: Aux: > AT+CFUN=4\r
ofonod[3982107]: Aux: < \r\nOK\r\n
ofonod[3982107]: Aux: > AT+CRC=1\r
ofonod[3982107]: Aux: < \r\nOK\r\n
ofonod[3982107]: Aux: > AT+CLIP=1\r
ofonod[3982107]: Aux: < \r\nOK\r\n
ofonod[3982107]: Aux: > AT+CDIP=1\r
ofonod[3982107]: Aux: < \r\n+CME ERROR: 11\r\n
ofonod[3982107]: Aux: > AT+CNAP=1\r
ofonod[3982107]: Aux: < \r\n+CME ERROR: 11\r\n
ofonod[3982107]: Aux: > AT+COLP=1\r
ofonod[3982107]: Aux: < \r\nOK\r\n
ofonod[3982107]: Aux: > AT+CSSN=1,1\r
ofonod[3982107]: Aux: < \r\nOK\r\n
ofonod[3982107]: Aux: > AT+VTD?\r
ofonod[3982107]: Aux: < \r\n+VTD: 1,0\r\n\r\nOK\r\n
ofonod[3982107]: Aux: > AT+CCWA=1\r
ofonod[3982107]: Aux: < \r\nOK\r\n
ofonod[3982107]: ../git/drivers/atmodem/voicecall.c:at_voicecall_initialized() voicecall_init: registering to notifications
ofonod[3982107]: Aux: > AT+CLCK=?\r
ofonod[3982107]: Aux: < \r\n+CLCK: ("PS","SC","AO","OI","OX","AI","IR","AB","AG","AC","FD","PF","PN","PU","PP","PC")\r\n\r\nOK\r\n
ofonod[3982107]: ../git/drivers/atmodem/sim.c:at_clck_query_cb() found PS
ofonod[3982107]: ../git/drivers/atmodem/sim.c:at_clck_query_cb() found SC
ofonod[3982107]: ../git/drivers/atmodem/sim.c:at_clck_query_cb() found PF
ofonod[3982107]: ../git/drivers/atmodem/sim.c:at_clck_query_cb() found PN
ofonod[3982107]: ../git/drivers/atmodem/sim.c:at_clck_query_cb() found PU
ofonod[3982107]: ../git/drivers/atmodem/sim.c:at_clck_query_cb() found PP
ofonod[3982107]: ../git/drivers/atmodem/sim.c:at_clck_query_cb() found PC
ofonod[3982107]: ../git/src/sim.c:ofono_sim_add_state_watch() 0x614000000640
ofonod[3982107]: ../git/src/sim.c:ofono_sim_add_state_watch() 0x614000000640
ofonod[3982107]: ../git/src/sim.c:ofono_sim_add_state_watch() 0x614000000640
ofonod[3982107]: ../git/src/sim.c:ofono_sim_add_state_watch() 0x614000000640
ofonod[3982107]: ../git/src/sim.c:ofono_sim_add_state_watch() 0x614000000640
ofonod[3982107]: Aux: > AT+CPIN?\r
ofonod[3982107]: Aux: < \r\n+CPIN: SIM PIN\r\n\r\nOK\r\n
ofonod[3982107]: ../git/plugins/quectel.c:sim_watch_cb() 0x610000000d40
ofonod[3982107]: /quectel_1: sim locked
ofonod[3982107]: Aux: > AT+CLCC\r
ofonod[3982107]: Aux: < \r\nOK\r\n
ofonod[3982107]: Aux: > AT+CRSM=192,12258\r
ofonod[3982107]: Aux: < \r\n+CRSM: 145,11,"621C8202412183022FE2A5039201008A01058B032F06128002000A880110"\r\n\r\nOK\r\n
ofonod[3982107]: ../git/drivers/atmodem/sim.c:get_response_common_cb() crsm_info_cb: 91, 0b, 30
ofonod[3982107]: Aux: > AT+CRSM=176,12258,0,0,10\r
ofonod[3982107]: Aux: < \r\n+CRSM: 145,11,"98541003911092073294"\r\n\r\nOK\r\n
ofonod[3982107]: ../git/drivers/atmodem/sim.c:at_crsm_read_cb() crsm_read_cb: 91, 0b, 10
ofonod[3982107]: ../git/src/simfs.c:sim_fs_op_read_block_cb() bufoff: 0, dataoff: 0, tocopy: 10
ofonod[3982107]: Aux: > AT+CRSM=192,28421\r
ofonod[3982107]: Aux: < \r\n+CRSM: 145,11,"621C8202412183026F05A5039201008A01058B036F060780020008880110"\r\n\r\nOK\r\n
ofonod[3982107]: ../git/drivers/atmodem/sim.c:get_response_common_cb() crsm_info_cb: 91, 0b, 30
ofonod[3982107]: Aux: > AT+CRSM=176,28421,0,0,8\r
ofonod[3982107]: Aux: < \r\n+CRSM: 145,11,"6461FFFFFFFFFFFF"\r\n\r\nOK\r\n
ofonod[3982107]: ../git/drivers/atmodem/sim.c:at_crsm_read_cb() crsm_read_cb: 91, 0b, 8
ofonod[3982107]: ../git/src/simfs.c:sim_fs_op_read_block_cb() bufoff: 0, dataoff: 0, tocopy: 8
ofonod[3982107]: Aux: > AT+CRSM=192,12037\r
ofonod[3982107]: Aux: < \r\n+CRSM: 145,11,"621C8202412183022F05A5039201008A01058B032F061180020008880128"\r\n\r\nOK\r\n
ofonod[3982107]: ../git/drivers/atmodem/sim.c:get_response_common_cb() crsm_info_cb: 91, 0b, 30
ofonod[3982107]: Aux: > AT+CRSM=176,12037,0,0,8\r
ofonod[3982107]: Aux: < \r\n+CRSM: 145,11,"6461FFFFFFFFFFFF"\r\n\r\nOK\r\n
ofonod[3982107]: ../git/drivers/atmodem/sim.c:at_crsm_read_cb() crsm_read_cb: 91, 0b, 8
ofonod[3982107]: ../git/src/simfs.c:sim_fs_op_read_block_cb() bufoff: 0, dataoff: 0, tocopy: 8
ofonod[3982107]: Aux: > AT+CPIN?\r
ofonod[3982107]: Aux: < \r\n+CPIN: SIM PIN\r\n\r\nOK\r\n
ofonod[3982107]: ../git/drivers/atmodem/sim.c:at_cpin_cb() crsm_pin_cb: SIM PIN
ofonod[3982107]: ../git/src/sim.c:sim_pin_query_cb() sim->pin_type: 0, pin_type: 1
ofonod[3982107]: ../git/drivers/atmodem/sim.c:at_pin_retries_query() 
ofonod[3982107]: Aux: > AT+CRSM=192,28599\r
ofonod[3982107]: Aux: < \r\n+CRSM: 145,11,"621F8205422100120183026FB7A5039201008A01058B036F060380020012880108"\r\n\r\nOK\r\n
ofonod[3982107]: ../git/drivers/atmodem/sim.c:get_response_common_cb() crsm_info_cb: 91, 0b, 33
ofonod[3982107]: Requested file structure differs from SIM: 6fb7
ofonod[3982107]: ../git/src/voicecall.c:ecc_g2_read_cb() 0
ofonod[3982107]: Aux: > AT+QTRPIN\r
ofonod[3982107]: Aux: < \r\n+QTRPIN: 3,3,10,10\r\n\r\nOK\r\n
ofonod[3982107]: Aux: > AT+CRSM=192,28599\r
ofonod[3982107]: Aux: < \r\n+CRSM: 144,0,"621F8205422100120183026FB7A5039201008A01058B036F060380020012880108"\r\n\r\nOK\r\n
ofonod[3982107]: ../git/drivers/atmodem/sim.c:get_response_common_cb() crsm_info_cb: 90, 00, 33
ofonod[3982107]: Aux: > AT+CRSM=178,28599,1,4,18\r
ofonod[3982107]: Aux: < \r\n+CRSM: 145,11,"11F2FF416C61726D63656E7472616C656E1F"\r\n\r\nOK\r\n
ofonod[3982107]: ../git/drivers/atmodem/sim.c:at_crsm_read_cb() crsm_read_cb: 91, 0b, 18
ofonod[3982107]: ../git/src/voicecall.c:ecc_g3_read_cb() 1
ofonod[3982107]: Aux: > AT+CPIN="0137"\r
ofonod[3982107]: Modem: < \r\n+CPIN: READY\r\n
ofonod[3982107]: Aux: < \r\n+CPIN: READY\r\n\r\nOK\r\n
ofonod[3982107]: ../git/plugins/quectel.c:sim_watch_cb() 0x610000000d40
ofonod[3982107]: ../git/src/sim.c:sim_enter_pin_cb() Waiting for ofono_sim_initialized_notify
ofonod[3982107]: Aux: > AT+CPIN?\r
ofonod[3982107]: Aux: < \r\n+CPIN: READY\r\n\r\nOK\r\n
ofonod[3982107]: Aux: > AT+CPIN?\r
ofonod[3982107]: Aux: < \r\n+CPIN: READY\r\n\r\nOK\r\n
ofonod[3982107]: ../git/drivers/atmodem/sim.c:at_cpin_cb() crsm_pin_cb: READY
ofonod[3982107]: ../git/src/sim.c:sim_pin_query_cb() sim->pin_type: 1, pin_type: 0
ofonod[3982107]: ../git/drivers/atmodem/sim.c:at_pin_retries_query() 
ofonod[3982107]: Aux: > AT+QTRPIN\r
ofonod[3982107]: Aux: < \r\n+QTRPIN: 3,3,10,10\r\n\r\nOK\r\n
ofonod[3982107]: Aux: > AT+CUAD\r
ofonod[3982107]: Aux: < \r\n+CME ERROR: 100\r\n
ofonod[3982107]: Aux: > AT+CRSM=192,28590\r
ofonod[3982107]: Aux: < \r\n+CRSM: 106,130\r\n\r\nOK\r\n
ofonod[3982107]: Aux: > AT+CRSM=192,28589\r
ofonod[3982107]: Aux: < \r\n+CRSM: 144,0,"621C8202412183026FADA5039201008A01078B036F060380020004880118"\r\n\r\nOK\r\n
ofonod[3982107]: ../git/drivers/atmodem/sim.c:get_response_common_cb() crsm_info_cb: 90, 00, 30
ofonod[3982107]: Aux: > AT+CRSM=176,28589,0,0,4\r
ofonod[3982107]: Aux: < \r\n+CRSM: 144,0,"00000002"\r\n\r\nOK\r\n
ofonod[3982107]: ../git/drivers/atmodem/sim.c:at_crsm_read_cb() crsm_read_cb: 90, 00, 4
ofonod[3982107]: ../git/src/simfs.c:sim_fs_op_read_block_cb() bufoff: 0, dataoff: 0, tocopy: 4
ofonod[3982107]: Aux: > AT+CRSM=192,28438\r
ofonod[3982107]: Aux: < \r\n+CRSM: 148,4\r\n\r\nOK\r\n
ofonod[3982107]: Aux: > AT+CRSM=192,28472\r
ofonod[3982107]: Aux: < \r\n+CRSM: 144,0,"621C8202412183026F38A5039201008A01058B036F060680020007880120"\r\n\r\nOK\r\n
ofonod[3982107]: ../git/drivers/atmodem/sim.c:get_response_common_cb() crsm_info_cb: 90, 00, 30
ofonod[3982107]: Aux: > AT+CRSM=176,28472,0,0,7\r
ofonod[3982107]: Aux: < \r\n+CRSM: 144,0,"866F1F0C27FE00"\r\n\r\nOK\r\n
ofonod[3982107]: ../git/drivers/atmodem/sim.c:at_crsm_read_cb() crsm_read_cb: 90, 00, 7
ofonod[3982107]: ../git/src/simfs.c:sim_fs_op_read_block_cb() bufoff: 0, dataoff: 0, tocopy: 7
ofonod[3982107]: Aux: > AT+CRSM=192,28502\r
ofonod[3982107]: Aux: < \r\n+CRSM: 144,0,"621C8202412183026F56A5039201008A01058B036F060980020001880128"\r\n\r\nOK\r\n
ofonod[3982107]: ../git/drivers/atmodem/sim.c:get_response_common_cb() crsm_info_cb: 90, 00, 30
ofonod[3982107]: Aux: > AT+CRSM=176,28502,0,0,1\r
ofonod[3982107]: Aux: < \r\n+CRSM: 144,0,"00"\r\n\r\nOK\r\n
ofonod[3982107]: ../git/drivers/atmodem/sim.c:at_crsm_read_cb() crsm_read_cb: 90, 00, 1
ofonod[3982107]: ../git/src/simfs.c:sim_fs_op_read_block_cb() bufoff: 0, dataoff: 0, tocopy: 1
ofonod[3982107]: Aux: > AT+CIMI\r
ofonod[3982107]: Aux: < \r\n238013814764391\r\n\r\nOK\r\n
ofonod[3982107]: ../git/drivers/atmodem/sim.c:at_cimi_cb() cimi_cb: 238013814764391
ofonod[3982107]: ../git/plugins/bluez5.c:bt_register_profile() Bluetooth: Registering 0000111f-0000-1000-8000-00805f9b34fb (hfp_ag) profile
ofonod[3982107]: ../git/src/modem.c:modem_change_state() old state: 1, new state: 2
ofonod[3982107]: ../git/plugins/quectel.c:quectel_post_sim() 0x610000000d40
ofonod[3982107]: ../git/drivers/atmodem/gprs-context.c:at_gprs_context_probe() 
ofonod[3982107]: ../git/drivers/atmodem/call-volume.c:at_call_volume_probe() 0x604000027090
ofonod[3982107]: Example History Probe for modem: 0x610000000d40
ofonod[3982107]: Example Network Time Probe for modem: 0x610000000d40
ofonod[3982107]: ../git/src/modem.c:get_modem_property() modem 0x610000000d40 property AlwaysOnline
ofonod[3982107]: Aux: > AT+CGDCONT=?\r
ofonod[3982107]: RegisterProfile() replied an error: org.freedesktop.DBus.Error.ServiceUnknown, The name org.bluez was not provided by any .service files
ofonod[3982107]: Aux: < \r\n+CGDCONT: (1-3),"IP",,,(0),(0)\r\n\r\nOK\r\n
ofonod[3982107]: Aux: > AT+CGDATA=?\r
ofonod[3982107]: ../git/plugins/quectel.c:init_timer_cb() 0x610000000d40
ofonod[3982107]: Aux: < \r\n+CGDATA: "PPP"\r\n\r\nOK\r\n
ofonod[3982107]: ../git/drivers/atmodem/gprs-context.c:at_cgdata_test_cb() use_atd99:0
ofonod[3982107]: Aux: > AT+CSMS=?\r
ofonod[3982107]: Aux: < \r\n+CSMS: (0,128)\r\n\r\nOK\r\n
ofonod[3982107]: ../git/drivers/atmodem/sms.c:at_csms_query_cb() CSMS query parsed successfully
ofonod[3982107]: Aux: > AT+CSCS=?\r
ofonod[3982107]: Aux: < \r\n+CSCS: ("GSM","HEX","IRA","PCCP437","UCS2","8859-1")\r\n\r\nOK\r\n
ofonod[3982107]: Aux: > AT+CMUT?\r
ofonod[3982107]: Aux: < \r\n+CMUT: 0\r\n\r\nOK\r\n
ofonod[3982107]: Aux: > AT+CLVL=?\r
ofonod[3982107]: Aux: < \r\n+CLVL: (0-100)\r\n\r\nOK\r\n
ofonod[3982107]: Aux: > AT+CLVL?\r
ofonod[3982107]: Aux: < \r\n+CLVL: 60\r\n\r\nOK\r\n
ofonod[3982107]: Aux: > AT+CRSM=192,28480\r
ofonod[3982107]: Aux: < \r\n+CRSM: 144,0,"621E8205422100220583026F40A5039201008A01078B036F0604800200AA8800"\r\n\r\nOK\r\n
ofonod[3982107]: ../git/drivers/atmodem/sim.c:get_response_common_cb() crsm_info_cb: 90, 00, 32
ofonod[3982107]: Aux: > AT+CGREG=?\r
ofonod[3982107]: Aux: < \r\n+CGREG: (0-2)\r\n\r\nOK\r\n
ofonod[3982107]: Aux: > AT+QINISTAT\r
ofonod[3982107]: Aux: < \r\n+QINISTAT: 1\r\n\r\nOK\r\n
ofonod[3982107]: ../git/plugins/quectel.c:qinistat_cb() 0x610000000d40
ofonod[3982107]: ../git/plugins/quectel.c:qinistat_cb() qinistat: 1
ofonod[3982107]: Aux: > AT+CSMS=128\r
ofonod[3982107]: Aux: < \r\n+CMS ERROR: 3\r\n
ofonod[3982107]: Aux: > AT+CPBS=?\r
ofonod[3982107]: Aux: < \r\n+CPBS: ("MC","RC","DC","LA","ME","BN","SD","VM","FD","LD","ON","SM")\r\n\r\nOK\r\n
ofonod[3982107]: Aux: > AT+CRSM=178,28480,1,4,34\r
ofonod[3982107]: Aux: < \r\n+CRSM: 144,0,"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"\r\n\r\nOK\r\n
ofonod[3982107]: ../git/drivers/atmodem/sim.c:at_crsm_read_cb() crsm_read_cb: 90, 00, 34
ofonod[3982107]: Aux: > AT+CGREG=2\r
ofonod[3982107]: Aux: < \r\nOK\r\n
ofonod[3982107]: Aux: > AT+CGAUTO=0\r
ofonod[3982107]: Aux: < \r\nOK\r\n
ofonod[3982107]: Aux: > AT+CGEREP=2,1\r
ofonod[3982107]: Aux: < \r\nERROR\r\n
ofonod[3982107]: ../git/plugins/bluez5.c:bt_register_profile() Bluetooth: Registering 00001103-0000-1000-8000-00805f9b34fb (dun_gw) profile
ofonod[3982107]: Aux: > AT+CSMS?\r
ofonod[3982107]: RegisterProfile() replied an error: org.freedesktop.DBus.Error.ServiceUnknown, The name org.bluez was not provided by any .service files
ofonod[3982107]: Aux: < \r\n+CMS ERROR: 3\r\n
ofonod[3982107]: SMS not supported by this modem.  If this is an error please submit patches to support this hardware
ofonod[3982107]: ../git/src/sms.c:sms_remove() atom: 0x604000026fd0
ofonod[3982107]: Aux: > AT+CRSM=178,28480,2,4,34\r
ofonod[3982107]: Aux: < \r\n+CRSM: 144,0,"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"\r\n\r\nOK\r\n
ofonod[3982107]: ../git/drivers/atmodem/sim.c:at_crsm_read_cb() crsm_read_cb: 90, 00, 34
ofonod[3982107]: Aux: > AT+CPSB=1\r
ofonod[3982107]: Aux: < \r\n+CME ERROR: 100\r\n
ofonod[3982107]: Aux: > AT+CGACT?\r
ofonod[3982107]: Aux: < \r\n+CGACT: 1,0\r\n\r\n+CGACT: 2,0\r\n\r\n+CGACT: 3,0\r\n\r\nOK\r\n
ofonod[3982107]: ../git/src/gprs.c:gprs_list_active_contexts_callback() error = 0
ofonod[3982107]: Aux: > AT+CRSM=178,28480,3,4,34\r
ofonod[3982107]: Aux: < \r\n+CRSM: 144,0,"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"\r\n\r\nOK\r\n
ofonod[3982107]: ../git/drivers/atmodem/sim.c:at_crsm_read_cb() crsm_read_cb: 90, 00, 34
ofonod[3982107]: Aux: > AT+CRSM=178,28480,4,4,34\r
ofonod[3982107]: Aux: < \r\n+CRSM: 144,0,"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"\r\n\r\nOK\r\n
ofonod[3982107]: ../git/drivers/atmodem/sim.c:at_crsm_read_cb() crsm_read_cb: 90, 00, 34
ofonod[3982107]: Aux: > AT+CRSM=178,28480,5,4,34\r
ofonod[3982107]: Aux: < \r\n+CRSM: 144,0,"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"\r\n\r\nOK\r\n
ofonod[3982107]: ../git/drivers/atmodem/sim.c:at_crsm_read_cb() crsm_read_cb: 90, 00, 34
ofonod[3982107]: Aux: > AT+CRSM=192,28489\r
ofonod[3982107]: Aux: < \r\n+CRSM: 148,4\r\n\r\nOK\r\n
ofonod[3982107]: ../git/plugins/quectel.c:init_timer_cb() 0x610000000d40
ofonod[3982107]: Aux: > AT+QINISTAT\r
ofonod[3982107]: Aux: < \r\n+QINISTAT: 1\r\n\r\nOK\r\n
ofonod[3982107]: ../git/plugins/quectel.c:qinistat_cb() 0x610000000d40
ofonod[3982107]: ../git/plugins/quectel.c:qinistat_cb() qinistat: 1
ofonod[3982107]: ../git/plugins/quectel.c:init_timer_cb() 0x610000000d40
ofonod[3982107]: Aux: > AT+QINISTAT\r
ofonod[3982107]: Aux: < \r\n+QINISTAT: 1\r\n\r\nOK\r\n
ofonod[3982107]: ../git/plugins/quectel.c:qinistat_cb() 0x610000000d40
ofonod[3982107]: ../git/plugins/quectel.c:qinistat_cb() qinistat: 1
ofonod[3982107]: ../git/plugins/quectel.c:init_timer_cb() 0x610000000d40
ofonod[3982107]: Aux: > AT+QINISTAT\r
ofonod[3982107]: Aux: < \r\n+QINISTAT: 1\r\n\r\nOK\r\n
ofonod[3982107]: ../git/plugins/quectel.c:qinistat_cb() 0x610000000d40
ofonod[3982107]: ../git/plugins/quectel.c:qinistat_cb() qinistat: 1
ofonod[3982107]: ../git/plugins/quectel.c:init_timer_cb() 0x610000000d40
ofonod[3982107]: Aux: > AT+QINISTAT\r
ofonod[3982107]: Aux: < \r\n+QINISTAT: 1\r\n\r\nOK\r\n
ofonod[3982107]: ../git/plugins/quectel.c:qinistat_cb() 0x610000000d40
ofonod[3982107]: ../git/plugins/quectel.c:qinistat_cb() qinistat: 1
ofonod[3982107]: ../git/plugins/quectel.c:init_timer_cb() 0x610000000d40
ofonod[3982107]: Aux: > AT+QINISTAT\r
ofonod[3982107]: Aux: < \r\n+QINISTAT: 2\r\n\r\nOK\r\n
ofonod[3982107]: ../git/plugins/quectel.c:qinistat_cb() 0x610000000d40
ofonod[3982107]: ../git/plugins/quectel.c:qinistat_cb() qinistat: 2
ofonod[3982107]: ../git/plugins/quectel.c:init_timer_cb() 0x610000000d40
ofonod[3982107]: Aux: > AT+QINISTAT\r
ofonod[3982107]: Aux: < \r\n+QINISTAT: 2\r\n\r\nOK\r\n
ofonod[3982107]: ../git/plugins/quectel.c:qinistat_cb() 0x610000000d40
ofonod[3982107]: ../git/plugins/quectel.c:qinistat_cb() qinistat: 2
ofonod[3982107]: ../git/plugins/quectel.c:init_timer_cb() 0x610000000d40
ofonod[3982107]: Aux: > AT+QINISTAT\r
ofonod[3982107]: Aux: < \r\n+QINISTAT: 2\r\n\r\nOK\r\n
ofonod[3982107]: ../git/plugins/quectel.c:qinistat_cb() 0x610000000d40
ofonod[3982107]: ../git/plugins/quectel.c:qinistat_cb() qinistat: 2
ofonod[3982107]: Modem: < \r\nSMS Ready\r\n
ofonod[3982107]: Aux: < \r\nSMS Ready\r\n
ofonod[3982107]: ../git/plugins/quectel.c:init_timer_cb() 0x610000000d40
ofonod[3982107]: Aux: > AT+QINISTAT\r
ofonod[3982107]: Aux: < \r\n+QINISTAT: 3\r\n
ofonod[3982107]: Aux: < \r\nOK\r\n
ofonod[3982107]: ../git/plugins/quectel.c:qinistat_cb() 0x610000000d40
ofonod[3982107]: ../git/plugins/quectel.c:qinistat_cb() qinistat: 3
ofonod[3982107]: Terminating
ofonod[3982107]: ../git/src/modem.c:modem_change_state() old state: 2, new state: 0
ofonod[3982107]: ../git/src/modem.c:flush_atoms() 
ofonod[3982107]: Example Network Time Remove for modem: 0x610000000d40
ofonod[3982107]: Example History Remove for modem: 0x610000000d40
ofonod[3982107]: ../git/src/call-volume.c:call_volume_remove() atom: 0x6040000270d0
ofonod[3982107]: ../git/src/phonebook.c:phonebook_remove() atom: 0x604000027010
ofonod[3982107]: ../git/src/gprs.c:gprs_context_unregister() 0x60600000ff20, 0x60e000001700
ofonod[3982107]: ../git/src/gprs.c:gprs_context_remove() atom: 0x604000026f50
ofonod[3982107]: ../git/drivers/atmodem/gprs-context.c:at_gprs_context_remove() 
ofonod[3982107]: ../git/plugins/bluez5.c:bt_unregister_profile() Bluetooth: Unregistering profile /bluetooth/profile/dun_gw
ofonod[3982107]: ../git/src/gprs.c:gprs_unregister() 0x60e000001700
ofonod[3982107]: ../git/src/gprs.c:gprs_remove() atom: 0x604000026f10
ofonod[3982107]: ../git/plugins/bluez5.c:bt_unregister_profile() Bluetooth: Unregistering profile /bluetooth/profile/hfp_ag
ofonod[3982107]: ../git/src/sim.c:sim_remove() atom: 0x604000026590
ofonod[3982107]: ../git/src/voicecall.c:voicecall_remove() atom: 0x604000026510
ofonod[3982107]: ../git/plugins/quectel.c:quectel_disable() 0x610000000d40
ofonod[3982107]: ../git/plugins/quectel.c:dbus_hw_cleanup() 0x610000000d40
ofonod[3982107]: Aux: > AT+CFUN=0\r
ofonod[3982107]: UnregisterProfile() replied an error: org.freedesktop.DBus.Error.ServiceUnknown, The name org.bluez was not provided by any .service files
ofonod[3982107]: UnregisterProfile() replied an error: org.freedesktop.DBus.Error.ServiceUnknown, The name org.bluez was not provided by any .service files
ofonod[3982107]: Modem: < \r\n+CPIN: NOT READY\r\n
ofonod[3982107]: Aux: < \r\n+CPIN: NOT READY\r\n
ofonod[3982107]: Aux: < \r\nOK\r\n
ofonod[3982107]: ../git/plugins/quectel.c:cfun_disable() 0x610000000d40
ofonod[3982107]: ../git/plugins/quectel.c:close_serial() 0x610000000d40
ofonod[3982107]: ../git/plugins/quectel.c:close_mux() 0x610000000d40
ofonod[3982107]: ../git/examples/emulator.c:powered_watch() Removing modem 0x610000000d40 from the list
ofonod[3982107]: ../git/examples/emulator.c:powered_watch() Removing server watch: 54
ofonod[3982107]: ../git/src/modem.c:modem_change_state() old state: 0, new state: 0
ofonod[3982107]: ../git/src/plugin.c:__ofono_plugin_cleanup() 
ofonod[3982107]: ../git/plugins/push-notification.c:push_notification_exit() 
ofonod[3982107]: ../git/plugins/smart-messaging.c:smart_messaging_exit() 
ofonod[3982107]: ../git/plugins/emulator_fuzz.c:emulator_fuzz_exit() 
ofonod[3982107]: ../git/src/modem.c:ofono_modem_remove() 0x610000000140
ofonod[3982107]: ../git/src/modem.c:modem_unregister() 0x610000000140
ofonod[3982107]: ../git/plugins/stktest.c:stktest_remove() 0x610000000140
ofonod[3982107]: ../git/src/modem.c:emit_modem_removed() 0x610000000140
ofonod[3982107]: ../git/src/modem.c:call_modemwatches() 0x610000000140 added:0
ofonod[3982107]: ../git/plugins/dun_gw_bluez5.c:modem_watch() modem: 0x610000000140, added: 0
ofonod[3982107]: ../git/plugins/hfp_ag_bluez5.c:modem_watch() modem: 0x610000000140, added: 0
ofonod[3982107]: ../git/examples/emulator.c:modem_watch() modem: 0x610000000140, added: 0
ofonod[3982107]: ../git/examples/emulator.c:modem_watch() Removing modem 0x610000000140 from the list
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e42d122ba0, name: stktest
ofonod[3982107]: ../git/examples/emulator.c:example_emulator_exit() 
ofonod[3982107]: ../git/src/gprs-provision.c:ofono_gprs_provision_driver_unregister() driver: 0x55e42d121a20 name: Example GPRS context provisioning
ofonod[3982107]: ../git/src/nettime.c:ofono_nettime_driver_unregister() driver: 0x55e42d1216e0 name: Example Network Time
ofonod[3982107]: ../git/src/history.c:ofono_history_driver_unregister() driver: 0x55e42d120cc0 name: Example Call History
ofonod[3982107]: ../git/src/handsfree-audio.c:ofono_handsfree_card_driver_unregister() driver: 0x55e42d11eb20
ofonod[3982107]: ../git/plugins/bluez5.c:bt_unregister_profile() Bluetooth: Unregistering profile /bluetooth/profile/dun_gw
ofonod[3982107]: ../git/plugins/bluez5.c:bt_unregister_profile() Bluetooth: Unregistering profile /bluetooth/profile/hfp_hf
ofonod[3982107]: ../git/src/handsfree-audio.c:ofono_handsfree_card_driver_unregister() driver: 0x55e42d11c000
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e42d11bf80, name: hfp
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e42d119a20, name: xmm7xxx
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e42d118b20, name: ublox
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e42d116260, name: quectel
ofonod[3982107]: ../git/src/modem.c:modem_unregister() 0x610000000d40
ofonod[3982107]: ../git/plugins/quectel.c:quectel_remove() 0x610000000d40

(ofonod:3982107): GLib-CRITICAL **: 22:54:10.320: g_io_channel_unref: assertion 'channel != NULL' failed
ofonod[3982107]: ../git/src/modem.c:unregister_property() property 0x60200008f670
ofonod[3982107]: ../git/src/modem.c:unregister_property() property 0x60200008f5b0
ofonod[3982107]: ../git/src/modem.c:unregister_property() property 0x60200008f610
ofonod[3982107]: ../git/src/modem.c:emit_modem_removed() 0x610000000d40
ofonod[3982107]: ../git/src/modem.c:call_modemwatches() 0x610000000d40 added:0
ofonod[3982107]: ../git/src/modem.c:modem_unregister() 0x610000000b40
ofonod[3982107]: ../git/plugins/quectel.c:quectel_remove() 0x610000000b40

(ofonod:3982107): GLib-CRITICAL **: 22:54:10.321: g_io_channel_unref: assertion 'channel != NULL' failed
ofonod[3982107]: ../git/src/modem.c:unregister_property() property 0x60200008f2b0
ofonod[3982107]: ../git/src/modem.c:unregister_property() property 0x60200008f1f0
ofonod[3982107]: ../git/src/modem.c:unregister_property() property 0x60200008f250
ofonod[3982107]: ../git/src/modem.c:emit_modem_removed() 0x610000000b40
ofonod[3982107]: ../git/src/modem.c:call_modemwatches() 0x610000000b40 added:0
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e42d114e80, name: telit
ofonod[3982107]: ../git/src/private-network.c:ofono_private_network_driver_unregister() driver: 0x55e42d1144c0, name: ConnMan Private Network
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e42d113ca0, name: sim7100
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e42d112b60, name: sim900
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e42d111e00, name: samsung
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e42d1115a0, name: speedupcdma
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e42d110aa0, name: speedup
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e42d110200, name: alcatel
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e42d10f300, name: icera
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e42d10e8c0, name: linktop
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e42d10e280, name: nokiacdma
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e42d10d9e0, name: nokia
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e42d10c320, name: gemalto
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e42d10b800, name: cinterion
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e42d109ce0, name: ste
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e42d108540, name: ifx
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e42d107bc0, name: palmpre
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e42d106fa0, name: novatel
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e42d106560, name: sierra
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e42d104d80, name: huawei
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e42d103ca0, name: zte
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e42d102cc0, name: hso
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e42d101c20, name: mbm
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e42d100880, name: calypso
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e42d100040, name: wavecom
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e42d0ff900, name: g1
ofonod[3982107]: ../git/src/cdma-voicecall.c:ofono_cdma_voicecall_driver_unregister() driver: 0x55e42d0acca0, name: cdmamodem
ofonod[3982107]: ../git/src/modem.c:ofono_devinfo_driver_unregister() driver: 0x55e42d0acd00, name: cdmamodem
ofonod[3982107]: ../git/src/cdma-connman.c:ofono_cdma_connman_driver_unregister() driver: 0x55e42d0acd60, name: cdmamodem
ofonod[3982107]: ../git/src/radio-settings.c:ofono_radio_settings_driver_unregister() driver: 0x55e42d0fcf80, name: phonesim
ofonod[3982107]: ../git/src/ctm.c:ofono_ctm_driver_unregister() driver: 0x55e42d0fd000, name: phonesim
ofonod[3982107]: ../git/src/gprs.c:ofono_gprs_context_driver_unregister() driver: 0x55e42d0fcf20, name: phonesim
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e42d0fd060, name: phonesim
ofonod[3982107]: ../git/src/radio-settings.c:ofono_radio_settings_driver_unregister() driver: 0x55e42d0acb60, name: xmm7modem
ofonod[3982107]: ../git/src/ims.c:ofono_ims_driver_unregister() driver: 0x55e42d0acbe0, name: xmm7modem
ofonod[3982107]: ../git/src/netmon.c:ofono_netmon_driver_unregister() driver: 0x55e42d0acc40, name: xmm7modem
ofonod[3982107]: ../git/src/voicecall.c:ofono_voicecall_driver_unregister() driver: 0x55e42d0acaa0, name: gemaltomodem
ofonod[3982107]: ../git/src/location-reporting.c:ofono_location_reporting_driver_unregister() driver: 0x55e42d0aca40, name: gemaltomodem
ofonod[3982107]: ../git/src/gprs.c:ofono_gprs_context_driver_unregister() driver: 0x55e42d0ac940, name: ubloxmodem
ofonod[3982107]: ../git/src/network.c:ofono_netreg_driver_unregister() driver: 0x55e42d0b4c80, name: ubloxmodem
ofonod[3982107]: ../git/src/netmon.c:ofono_netmon_driver_unregister() driver: 0x55e42d0ac9a0, name: ubloxmodem
ofonod[3982107]: ../git/src/lte.c:ofono_lte_driver_unregister() driver: 0x55e42d0aca00, name: ubloxmodem
ofonod[3982107]: ../git/src/ussd.c:ofono_ussd_driver_unregister() driver: 0x55e42d0ac7e0, name: speedupmodem
ofonod[3982107]: ../git/src/voicecall.c:ofono_voicecall_driver_unregister() driver: 0x55e42d0ac540, name: hfpmodem
ofonod[3982107]: ../git/src/modem.c:ofono_devinfo_driver_unregister() driver: 0x55e42d0ac6e0, name: hfpmodem
ofonod[3982107]: ../git/src/network.c:ofono_netreg_driver_unregister() driver: 0x55e42d0ac600, name: hfpmodem
ofonod[3982107]: ../git/src/call-volume.c:ofono_call_volume_driver_unregister() driver: 0x55e42d0ac680, name: hfpmodem
ofonod[3982107]: ../git/src/handsfree.c:ofono_handsfree_driver_unregister() driver: 0x55e42d0ac740, name: hfpmodem
ofonod[3982107]: ../git/src/siri.c:ofono_siri_driver_unregister() driver: 0x55e42d0ac7a0, name: hfpmodem
ofonod[3982107]: ../git/src/network.c:ofono_netreg_driver_unregister() driver: 0x55e42d0ac460, name: dunmodem
ofonod[3982107]: ../git/src/gprs.c:ofono_gprs_driver_unregister() driver: 0x55e42d0ac4e0, name: dunmodem
ofonod[3982107]: ../git/src/voicecall.c:ofono_voicecall_driver_unregister() driver: 0x55e42d0ac2c0, name: stemodem
ofonod[3982107]: ../git/src/gprs.c:ofono_gprs_context_driver_unregister() driver: 0x55e42d0ac400, name: stemodem
ofonod[3982107]: ../git/src/radio-settings.c:ofono_radio_settings_driver_unregister() driver: 0x55e42d0ac380, name: stemodem
ofonod[3982107]: ../git/src/stk.c:ofono_stk_driver_unregister() driver: 0x55e42d0ac200, name: ifxmodem
ofonod[3982107]: ../git/src/gprs.c:ofono_gprs_context_driver_unregister() driver: 0x55e42d0ac1a0, name: ifxmodem
ofonod[3982107]: ../git/src/radio-settings.c:ofono_radio_settings_driver_unregister() driver: 0x55e42d0ac120, name: ifxmodem
ofonod[3982107]: ../git/src/audio-settings.c:ofono_audio_settings_driver_unregister() driver: 0x55e42d0ac0e0, name: ifxmodem
ofonod[3982107]: ../git/src/voicecall.c:ofono_voicecall_driver_unregister() driver: 0x55e42d0ac020, name: ifxmodem
ofonod[3982107]: ../git/src/ctm.c:ofono_ctm_driver_unregister() driver: 0x55e42d0ac260, name: ifxmodem
ofonod[3982107]: ../git/src/gprs.c:ofono_gprs_context_driver_unregister() driver: 0x55e42d0abf40, name: hsomodem
ofonod[3982107]: ../git/src/radio-settings.c:ofono_radio_settings_driver_unregister() driver: 0x55e42d0abfa0, name: hsomodem
ofonod[3982107]: ../git/src/location-reporting.c:ofono_location_reporting_driver_unregister() driver: 0x55e42d0abe80, name: telitmodem
ofonod[3982107]: ../git/src/gprs.c:ofono_gprs_context_driver_unregister() driver: 0x55e42d0abee0, name: telitncmmodem
ofonod[3982107]: ../git/src/location-reporting.c:ofono_location_reporting_driver_unregister() driver: 0x55e42d0abe20, name: mbmmodem
ofonod[3982107]: ../git/src/stk.c:ofono_stk_driver_unregister() driver: 0x55e42d0abdc0, name: mbmmodem
ofonod[3982107]: ../git/src/gprs.c:ofono_gprs_context_driver_unregister() driver: 0x55e42d0abd60, name: mbmmodem
ofonod[3982107]: ../git/src/stk.c:ofono_stk_driver_unregister() driver: 0x55e42d0abd00, name: calypsomodem
ofonod[3982107]: ../git/src/voicecall.c:ofono_voicecall_driver_unregister() driver: 0x55e42d0abc40, name: calypsomodem
ofonod[3982107]: ../git/src/cdma-netreg.c:ofono_cdma_netreg_driver_unregister() driver: 0x55e42d0abc00, name: huaweimodem
ofonod[3982107]: ../git/src/gprs.c:ofono_gprs_context_driver_unregister() driver: 0x55e42d0abb20, name: huaweimodem
ofonod[3982107]: ../git/src/radio-settings.c:ofono_radio_settings_driver_unregister() driver: 0x55e42d0abb80, name: huaweimodem
ofonod[3982107]: ../git/src/audio-settings.c:ofono_audio_settings_driver_unregister() driver: 0x55e42d0abae0, name: huaweimodem
ofonod[3982107]: ../git/src/voicecall.c:ofono_voicecall_driver_unregister() driver: 0x55e42d0aba20, name: huaweimodem
ofonod[3982107]: ../git/src/ussd.c:ofono_ussd_driver_unregister() driver: 0x55e42d0ab9c0, name: huaweimodem
ofonod[3982107]: ../git/src/gprs.c:ofono_gprs_context_driver_unregister() driver: 0x55e42d0ab8e0, name: iceramodem
ofonod[3982107]: ../git/src/radio-settings.c:ofono_radio_settings_driver_unregister() driver: 0x55e42d0ab940, name: iceramodem
ofonod[3982107]: ../git/src/radio-settings.c:ofono_radio_settings_driver_unregister() driver: 0x55e42d0ab860, name: ztemodem
ofonod[3982107]: ../git/src/gprs.c:ofono_gprs_context_driver_unregister() driver: 0x55e42d0ab800, name: swmodem
ofonod[3982107]: ../git/src/radio-settings.c:ofono_radio_settings_driver_unregister() driver: 0x55e42d0ab780, name: nwmodem
ofonod[3982107]: ../git/src/stk.c:ofono_stk_driver_unregister() driver: 0x55e42d0ab340, name: atmodem
ofonod[3982107]: ../git/src/sim.c:ofono_sim_driver_unregister() driver: 0x55e42d0ab140, name: atmodem
ofonod[3982107]: ../git/src/sim.c:ofono_sim_driver_unregister() driver: 0x55e42d0ab240, name: atmodem-noef
ofonod[3982107]: ../git/src/sms.c:ofono_sms_driver_unregister() driver: 0x55e42d0aad80, name: atmodem
ofonod[3982107]: ../git/src/ussd.c:ofono_ussd_driver_unregister() driver: 0x55e42d0ab3a0, name: atmodem
ofonod[3982107]: ../git/src/phonebook.c:ofono_phonebook_driver_unregister() driver: 0x55e42d0ab520, name: atmodem
ofonod[3982107]: ../git/src/call-settings.c:ofono_call_settings_driver_unregister() driver: 0x55e42d0aad00, name: atmodem
ofonod[3982107]: ../git/src/call-meter.c:ofono_call_meter_driver_unregister() driver: 0x55e42d0aaea0, name: atmodem
ofonod[3982107]: ../git/src/call-forwarding.c:ofono_call_forwarding_driver_unregister() driver: 0x55e42d0aae40, name: atmodem
ofonod[3982107]: ../git/src/call-barring.c:ofono_call_barring_driver_unregister() driver: 0x55e42d0ab4c0, name: atmodem
ofonod[3982107]: ../git/src/network.c:ofono_netreg_driver_unregister() driver: 0x55e42d0aaf20, name: atmodem
ofonod[3982107]: ../git/src/modem.c:ofono_devinfo_driver_unregister() driver: 0x55e42d0ab560, name: atmodem
ofonod[3982107]: ../git/src/voicecall.c:ofono_voicecall_driver_unregister() driver: 0x55e42d0ab400, name: atmodem
ofonod[3982107]: ../git/src/cbs.c:ofono_cbs_driver_unregister() driver: 0x55e42d0aade0, name: atmodem
ofonod[3982107]: ../git/src/call-volume.c:ofono_call_volume_driver_unregister() driver: 0x55e42d0ab5c0, name: atmodem
ofonod[3982107]: ../git/src/gprs.c:ofono_gprs_driver_unregister() driver: 0x55e42d0ab620, name: atmodem
ofonod[3982107]: ../git/src/gprs.c:ofono_gprs_context_driver_unregister() driver: 0x55e42d0ab680, name: atmodem
ofonod[3982107]: ../git/src/gnss.c:ofono_gnss_driver_unregister() driver: 0x55e42d0ab6e0, name: atmodem
ofonod[3982107]: ../git/src/lte.c:ofono_lte_driver_unregister() driver: 0x55e42d0ab740, name: atmodem
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e42d0d5f00, name: mbim
ofonod[3982107]: ../git/src/gprs.c:ofono_gprs_context_driver_unregister() driver: 0x55e42d0aaca0, name: mbim
ofonod[3982107]: ../git/src/gprs.c:ofono_gprs_driver_unregister() driver: 0x55e42d0aac40, name: mbim
ofonod[3982107]: ../git/src/sms.c:ofono_sms_driver_unregister() driver: 0x55e42d0aabe0, name: mbim
ofonod[3982107]: ../git/src/network.c:ofono_netreg_driver_unregister() driver: 0x55e42d0aab60, name: mbim
ofonod[3982107]: ../git/src/sim.c:ofono_sim_driver_unregister() driver: 0x55e42d0aaa60, name: mbim
ofonod[3982107]: ../git/src/modem.c:ofono_devinfo_driver_unregister() driver: 0x55e42d0aaa00, name: mbim
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e42d0d2240, name: gobi
ofonod[3982107]: ../git/src/netmon.c:ofono_netmon_driver_unregister() driver: 0x55e42d0aa9a0, name: qmimodem
ofonod[3982107]: ../git/src/location-reporting.c:ofono_location_reporting_driver_unregister() driver: 0x55e42d0aa940, name: qmimodem
ofonod[3982107]: ../git/src/radio-settings.c:ofono_radio_settings_driver_unregister() driver: 0x55e42d0aa8c0, name: qmimodem
ofonod[3982107]: ../git/src/lte.c:ofono_lte_driver_unregister() driver: 0x55e42d0aa880, name: qmimodem
ofonod[3982107]: ../git/src/gprs.c:ofono_gprs_context_driver_unregister() driver: 0x55e42d0aa820, name: qmimodem
ofonod[3982107]: ../git/src/gprs.c:ofono_gprs_driver_unregister() driver: 0x55e42d0aa7c0, name: qmimodem
ofonod[3982107]: ../git/src/ussd.c:ofono_ussd_driver_unregister() driver: 0x55e42d0aa760, name: qmimodem
ofonod[3982107]: ../git/src/sms.c:ofono_sms_driver_unregister() driver: 0x55e42d0aa700, name: qmimodem
ofonod[3982107]: ../git/src/sim.c:ofono_sim_driver_unregister() driver: 0x55e42d0aa600, name: qmimodem
ofonod[3982107]: ../git/src/sim.c:ofono_sim_driver_unregister() driver: 0x55e42d0aa500, name: qmimodem-legacy
ofonod[3982107]: ../git/src/voicecall.c:ofono_voicecall_driver_unregister() driver: 0x55e42d0aa3c0, name: qmimodem
ofonod[3982107]: ../git/src/network.c:ofono_netreg_driver_unregister() driver: 0x55e42d0aa480, name: qmimodem
ofonod[3982107]: ../git/src/modem.c:ofono_devinfo_driver_unregister() driver: 0x55e42d0aa360, name: qmimodem
ofonod[3982107]: ../git/drivers/rilmodem/rilmodem.c:rilmodem_exit() 
ofonod[3982107]: ../git/src/modem.c:ofono_devinfo_driver_unregister() driver: 0x55e42d0a9620, name: rilmodem
ofonod[3982107]: ../git/src/sim.c:ofono_sim_driver_unregister() driver: 0x55e42d0a9960, name: rilmodem
ofonod[3982107]: ../git/src/voicecall.c:ofono_voicecall_driver_unregister() driver: 0x55e42d0a9700, name: rilmodem
ofonod[3982107]: ../git/src/sms.c:ofono_sms_driver_unregister() driver: 0x55e42d0a9a60, name: rilmodem
ofonod[3982107]: ../git/src/network.c:ofono_netreg_driver_unregister() driver: 0x55e42d0a9680, name: rilmodem
ofonod[3982107]: ../git/src/call-volume.c:ofono_call_volume_driver_unregister() driver: 0x55e42d0a97c0, name: rilmodem
ofonod[3982107]: ../git/src/gprs.c:ofono_gprs_driver_unregister() driver: 0x55e42d0a9820, name: rilmodem
ofonod[3982107]: ../git/src/gprs.c:ofono_gprs_context_driver_unregister() driver: 0x55e42d0a9880, name: rilmodem
ofonod[3982107]: ../git/src/ussd.c:ofono_ussd_driver_unregister() driver: 0x55e42d0a9ac0, name: rilmodem
ofonod[3982107]: ../git/src/call-settings.c:ofono_call_settings_driver_unregister() driver: 0x55e42d0a9b20, name: rilmodem
ofonod[3982107]: ../git/src/call-forwarding.c:ofono_call_forwarding_driver_unregister() driver: 0x55e42d0a9ba0, name: rilmodem
ofonod[3982107]: ../git/src/radio-settings.c:ofono_radio_settings_driver_unregister() driver: 0x55e42d0a9c00, name: rilmodem
ofonod[3982107]: ../git/src/call-barring.c:ofono_call_barring_driver_unregister() driver: 0x55e42d0a9c80, name: rilmodem
ofonod[3982107]: ../git/src/netmon.c:ofono_netmon_driver_unregister() driver: 0x55e42d0a9ce0, name: rilmodem
ofonod[3982107]: ../git/src/stk.c:ofono_stk_driver_unregister() driver: 0x55e42d0a9d40, name: rilmodem
ofonod[3982107]: ../git/src/cbs.c:ofono_cbs_driver_unregister() driver: 0x55e42d0a9da0, name: rilmodem
ofonod[3982107]: ../git/src/lte.c:ofono_lte_driver_unregister() driver: 0x55e42d0a9e00, name: rilmodem
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e42d0c0fc0, name: ril_intel
ofonod[3982107]: ../git/plugins/infineon.c:inf_exit() 
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e42d0c0c20, name: infineon
ofonod[3982107]: ../git/plugins/ril.c:ril_exit() 
ofonod[3982107]: ../git/src/modem.c:ofono_modem_driver_unregister() driver: 0x55e42d0bfdc0, name: ril
ofonod[3982107]: ../git/plugins/udevng.c:destroy_modem() /sys/devices/pci0000:00/0000:00:01.1/0000:01:00.0/usb1/1-1/1-1.1/1-1.1.1/1-1.1.1:1.0/ttyUSB2/tty/ttyUSB2
ofonod[3982107]: ../git/src/modem.c:ofono_modem_remove() 0x610000000b40
ofonod[3982107]: ../git/plugins/udevng.c:destroy_modem() /sys/devices/pci0000:00/0000:00:01.1/0000:01:00.0/usb1/1-1/1-1.1/1-1.1.3/1-1.1.3:1.0/ttyUSB0/tty/ttyUSB0
ofonod[3982107]: ../git/src/modem.c:ofono_modem_remove() 0x610000000d40
ofonod[3982107]: ../git/src/private-network.c:ofono_private_network_driver_unregister() driver: 0x55e42d122620, name: Example Private Network Driver
ofonod[3982107]: Exit


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCHv3] quectel: handle sim states
  2019-09-24 20:40               ` Denis Kenzior
@ 2019-09-26 19:26                 ` Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
  0 siblings, 0 replies; 15+ messages in thread
From: Martin =?unknown-8bit?q?Hundeb=C3=B8ll?= @ 2019-09-26 19:26 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 1207 bytes --]

Hi Denis,

On 24/09/2019 22.40, Denis Kenzior wrote:
>>> I tried implementing what you suggest - see the attached patch. But I 
>>> still get "SMS not supported by this modem.".
>>>
>>> The attached log shows quectel_post_sim() being called (line 584) way 
>>> before QINISTAT returns 3 (line 686).
>>>
>>> Is this because my SIM isn't locked, and so the 
>>> ofono_sim_inserted_notify() call makes it go all the way?
>>>
>>> I can work around it by calling ofono_sim_inserted_notify() either if 
>>> the SIM is locked, or/and when qinistat returns 3.
>>
>> It also happens on a locked SIM - log attached.
>>
> 
> So in your log:
> 
> ofonod[3982107]: ../git/plugins/quectel.c:sim_watch_cb() 0x610000000d40
> ofonod[3982107]: ../git/src/sim.c:sim_enter_pin_cb() Waiting for 
> ofono_sim_initialized_notify
> 
> So we're supposed to be waiting here for a bit.  Somehow we're not or 
> you're calling ofono_sim_initialized early.  Perhaps the default sim 
> driver is doing this?  Check this first.

Spot on:
https://git.kernel.org/pub/scm/network/ofono/ofono.git/tree/drivers/atmodem/sim.c?id=93f03865f731fb4b9d368b8e99bd458aa0efca53#n1357

Patches coming up.

// Martin

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2019-09-26 19:26 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-12 20:50 [PATCH] quectel: detect missing sim-cards Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
2019-09-02 21:16 ` [PATCHv2] quectel: handle sim states Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
2019-09-02 21:37   ` Denis Kenzior
2019-09-05 10:33   ` [PATCHv3] " Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
2019-09-10 14:10     ` Denis Kenzior
2019-09-23 22:11       ` Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
2019-09-24  2:50         ` Denis Kenzior
2019-09-24  2:51           ` Denis Kenzior
2019-09-24 20:44           ` Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
2019-09-24 20:56             ` Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
2019-09-24 20:40               ` Denis Kenzior
2019-09-26 19:26                 ` Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
2019-09-02 21:17 ` [PATCHv2] quectel: swap cmuxed ports Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
2019-09-02 21:22   ` Martin =?unknown-8bit?q?Hundeb=C3=B8ll?=
2019-09-02 21:27   ` Denis Kenzior

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.