Hi Denis,

On 12/05/2021 09:40, Bing Jupiter wrote:

A comment along these lines might be appropriate:

Unlike other uBlox, the SARA R4 is actually a Qualcomm part and supports the QMI protocol mostly as implemented in ofono. The AT command set for this modem does not correspond to that used by other uBlox modems; furthermore, it is quirky to a degree that it doesn't really play well with ofono.

This patch adds support for the uBlox SARA R4 modem as a QMI device.

/Jonas


---
  plugins/udevng.c | 42 ++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 42 insertions(+)

diff --git a/plugins/udevng.c b/plugins/udevng.c
index 34ac1cc0..46bf5532 100644
--- a/plugins/udevng.c
+++ b/plugins/udevng.c
@@ -1194,6 +1194,46 @@ static gboolean setup_ublox(struct modem_info *modem)
        return TRUE;
  }
+static gboolean setup_ubloxqmi(struct modem_info *modem) {
+       const char *qmi = NULL, *net = NULL, *gps = NULL, *aux = NULL;
+       GSList *list;
+
+       DBG("%s", modem->syspath);
+
+       for (list = modem->devices; list; list = g_slist_next(list)) {
+               struct device_info *info = list->data;
+
+               DBG("%s %s %s %s %s", info->devnode, info->interface,
+                               info->number, info->label, info->subsystem);
+
+               if (g_strcmp0(info->interface, "255/255/255") == 0 &&
+                               g_strcmp0(info->number, "03") == 0) {
+                       if (g_strcmp0(info->subsystem, "net") == 0)
+                               net = info->devnode;
+                       else if (g_strcmp0(info->subsystem, "usbmisc") == 0)
+                               qmi = info->devnode;
+               }
+       }
+
+       DBG("qmi=%s net=%s", qmi, net);
+
+       if (qmi == NULL || net == NULL)
+               return FALSE;
+
+       DBG("qmi=%s net=%s", qmi, net);
+
+       ofono_modem_set_string(modem->modem, "Device", qmi);
+       ofono_modem_set_string(modem->modem, "NetworkInterface", net);
+    ofono_modem_set_string(modem->modem, "Quirk", "SARAR4");
+
+
+       DBG("gps=%s aux=%s", gps, aux);
+
+       ofono_modem_set_driver(modem->modem, "gobi");
+
+       return TRUE;
+}
+
  static gboolean setup_gemalto(struct modem_info* modem)
  {
        const char *app = NULL, *gps = NULL, *mdm = NULL,
@@ -1441,6 +1481,7 @@ static struct {
        { "quectel",  setup_quectel   },
        { "quectelqmi",       setup_quectelqmi},
        { "ublox",    setup_ublox     },
+    { "ubloxqmi",   setup_ubloxqmi  },
        { "gemalto",  setup_gemalto   },
        { "xmm7xxx",  setup_xmm7xxx   },
        { "mbim",     setup_mbim      },
@@ -1850,6 +1891,7 @@ static struct {
        { "ublox",    "cdc_ncm",    "1546", "110a"      },
        { "ublox",    "rndis_host", "1546", "1146"      },
        { "ublox",    "cdc_acm",    "1546", "1146"      },
+    { "ubloxqmi",   "qmi_wwan", "05c6", "90b2"  },
        { "gemalto",  "option",     "1e2d",       "0053"        },
        { "gemalto",  "cdc_wdm",    "1e2d",       "0053"        },
        { "gemalto",  "qmi_wwan",   "1e2d",       "0053"        },

_______________________________________________
ofono mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to