[PATCH] telit: support QMI and MBIM modems

Daniele Palmas dnlplm at gmail.com
Fri Mar 24 14:33:49 UTC 2017


Hi Aleksander,

2017-03-24 14:48 GMT+01:00 Aleksander Morgado <aleksander at aleksander.es>:
> Vendor specific plugins that support QMI or MBIM based devices need to
> handle the creation of these modems themselves.
>
> https://bugs.freedesktop.org/show_bug.cgi?id=100372
> ---
>
> Hey Carlo and Daniele,
>
> This patch makes the Telit plugin accept QMI and MBIM modems. Can any of you test it with such modems to make sure the Telit plugin is the one grabbing them?
>

Sure, I can give it a try on Monday.

> I have a LN930 that I can switch to MBIM mode, but it exposes Intel's VID, not the Telit VID. Do you know if this would be something happening to all MBIM-capable Telit modems?
>

So LN930 was a "special" modem, in the sense that was never produced
with Telit VID.

All the others available MBIM based modems expose Telit VID, such as
LE910 V2 (PID 0x0032), LE922A6 (PID 0x1041), LE920A4 (PID 0x1204)

MBIM composition is not usually the default, but it can be changed
with the #USBCFG command.

Thanks,
Daniele

> Cheers!
>
> ---
>  plugins/telit/77-mm-telit-port-types.rules |  3 ---
>  plugins/telit/mm-plugin-telit.c            | 33 +++++++++++++++++++++++++++++-
>  2 files changed, 32 insertions(+), 4 deletions(-)
>
> diff --git a/plugins/telit/77-mm-telit-port-types.rules b/plugins/telit/77-mm-telit-port-types.rules
> index 36a4f99f..1b58a3d9 100644
> --- a/plugins/telit/77-mm-telit-port-types.rules
> +++ b/plugins/telit/77-mm-telit-port-types.rules
> @@ -51,7 +51,4 @@ ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="0022", ENV{ID_MM_TELIT_PORTS_TAGGED}
>  ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="0036", ENV{ID_MM_TELIT_TAGGED}="1"
>  ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="0036", ENV{ID_MM_TELIT_PORTS_TAGGED}="1"
>
> -# NOTE: Qualcomm Gobi-based devices like the LE920 should not be handled
> -# by this plugin, but by the Gobi plugin.
> -
>  LABEL="mm_telit_port_types_end"
> diff --git a/plugins/telit/mm-plugin-telit.c b/plugins/telit/mm-plugin-telit.c
> index ec3c024f..abb87e4f 100644
> --- a/plugins/telit/mm-plugin-telit.c
> +++ b/plugins/telit/mm-plugin-telit.c
> @@ -28,6 +28,15 @@
>  #include "mm-common-telit.h"
>  #include "mm-broadband-modem-telit.h"
>
> +
> +#if defined WITH_QMI
> +# include "mm-broadband-modem-qmi.h"
> +#endif
> +
> +#if defined WITH_MBIM
> +# include "mm-broadband-modem-mbim.h"
> +#endif
> +
>  G_DEFINE_TYPE (MMPluginTelit, mm_plugin_telit, MM_TYPE_PLUGIN)
>
>  MM_PLUGIN_DEFINE_MAJOR_VERSION
> @@ -44,6 +53,28 @@ create_modem (MMPlugin *self,
>                GList *probes,
>                GError **error)
>  {
> +#if defined WITH_QMI
> +    if (mm_port_probe_list_has_qmi_port (probes)) {
> +        mm_dbg ("QMI-powered Telit modem found...");
> +        return MM_BASE_MODEM (mm_broadband_modem_qmi_new (uid,
> +                                                          drivers,
> +                                                          mm_plugin_get_name (self),
> +                                                          vendor,
> +                                                          product));
> +    }
> +#endif
> +
> +#if defined WITH_MBIM
> +    if (mm_port_probe_list_has_mbim_port (probes)) {
> +        mm_dbg ("MBIM-powered Telit modem found...");
> +        return MM_BASE_MODEM (mm_broadband_modem_mbim_new (uid,
> +                                                           drivers,
> +                                                           mm_plugin_get_name (self),
> +                                                           vendor,
> +                                                           product));
> +    }
> +#endif
> +
>      return MM_BASE_MODEM (mm_broadband_modem_telit_new (uid,
>                                                          drivers,
>                                                          mm_plugin_get_name (self),
> @@ -56,7 +87,7 @@ create_modem (MMPlugin *self,
>  G_MODULE_EXPORT MMPlugin *
>  mm_plugin_create (void)
>  {
> -    static const gchar *subsystems[] = { "tty", NULL };
> +    static const gchar *subsystems[] = { "tty", "net", "usb", NULL };
>      /* Vendors: Telit */
>      static const guint16 vendor_ids[] = { 0x1bc7, 0 };
>      static const gchar *vendor_strings[] = { "telit", NULL };
> --
> 2.12.0


More information about the ModemManager-devel mailing list