Re: 1199:6832 Sierra Wireless, Inc. MC8780 not working with NetworkManager 0.8.3.998 / ModemManager 0.4
- From: Aleksander Morgado <aleksander lanedo com>
- To: Pantelis Koukousoulas <pktoss gmail com>
- Cc: networkmanager-list gnome org
- Subject: Re: 1199:6832 Sierra Wireless, Inc. MC8780 not working with NetworkManager 0.8.3.998 / ModemManager 0.4
- Date: Fri, 20 May 2011 11:51:19 +0200
> >> > From a cursory reading of the bug reports you cited it seems like some
> >> > sierra modems crash when ModemManager sends CFUN=1 to them.
> >> >
> >> > Can you help verify if this is indeed the case with yours as well?
> >> >
> >
> > So it really seems that not only Wavecom modems get a whole software
> > restart (including USB stack) when they get AT+CFUN=1. The thing is, is
> > removing the power-up command a solution for *all* Sierra modems or are
> > there any Sierra modems that really need the power-up command? If so,
> > we'll probably need to disable the power-up only for specific models,
> > like the one reported in the bug; or the other way around, enable it
> > only for only some specific models.
>
> >From reading the cited bug reports and from general "instict" I would think
> that probably some of them need CFUN=1 and others crash when they get it
> so the best thing to do is enable it selectively. (We can start from this
> USBID and expand).
>
> Unfortunately I don't have the device myself, so I can't test.
>
>
> > Wasn't that patch already applied to Ubuntu's MM? According to the logs
> > in https://bugs.launchpad.net/ubuntu/+source/modemmanager/+bug/459052
> > that was written by Alexander Sack long ago, and possibly applied in
> > Ubuntu... (comment #7?)
>
> It was probably applied to ubuntu once but somehow it got dropped (I think
> during the karmic -> lucid transition if I read well).
>
> In the current version (natty) there is no such patch from what I could see.
>
> In any case, a distro-local patch is really a bad idea for solving this type
> of problems, especially when you have such a friendly and responsive
> upstream like in this case.
>
> Unfortunately I don't have any modemmanager experience or time to
> implement the quirk "the right way", so if someone can start from
> the previous attached patch and fix the problem correctly, it would be
> great :)
>
Attached a patch which should do AT+CFUN=1 only if product ID is not
0x6832. Can you guys test it?
Cheers!
--
Aleksander
>From a91835798a7d7a5fffddb905e71b45178ef05ebf Mon Sep 17 00:00:00 2001
From: Aleksander Morgado <aleksander lanedo com>
Date: Fri, 20 May 2011 11:46:32 +0200
Subject: [PATCH] sierra: avoid sending power-up command to MC8780
Fixes LP#459052
Based on a patch developed by Alexander Sack
---
plugins/mm-modem-sierra-gsm.c | 41 +++++++++++++++++++++++++++++++++++++++++
1 files changed, 41 insertions(+), 0 deletions(-)
diff --git a/plugins/mm-modem-sierra-gsm.c b/plugins/mm-modem-sierra-gsm.c
index d4636d7..163263d 100644
--- a/plugins/mm-modem-sierra-gsm.c
+++ b/plugins/mm-modem-sierra-gsm.c
@@ -609,6 +609,44 @@ simple_connect (MMModemSimple *simple,
/*****************************************************************************/
static void
+set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ /* Do nothing... see set_property() in parent, which also does nothing */
+}
+
+static void
+get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ switch (prop_id) {
+ case MM_GENERIC_GSM_PROP_POWER_UP_CMD: {
+ guint16 product_id = 0;
+
+ g_object_get (object,
+ MM_MODEM_HW_PID, &product_id,
+ NULL);
+
+ /* Some Sierra modems do a full software reset (including
+ * USB stack) with AT+CFUN=1, so try to avoid that.
+ * - MC8780 (0x6832)
+ * */
+ if (product_id == 0x6832)
+ g_value_set_string (value, "");
+ else
+ g_value_set_string (value, "+CFUN=1");
+ break;
+ }
+ default:
+ break;
+ }
+}
+
+static void
modem_init (MMModem *modem_class)
{
modem_class->grab_port = grab_port;
@@ -646,6 +684,9 @@ mm_modem_sierra_gsm_class_init (MMModemSierraGsmClass *klass)
mm_modem_sierra_gsm_parent_class = g_type_class_peek_parent (klass);
g_type_class_add_private (object_class, sizeof (MMModemSierraGsmPrivate));
+ object_class->get_property = get_property;
+ object_class->set_property = set_property;
+
object_class->dispose = dispose;
gsm_class->do_enable_power_up_done = real_do_enable_power_up_done;
gsm_class->set_allowed_mode = set_allowed_mode;
--
1.7.4.1
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]