Sierra Wireless MC7354: Why all the interfaces?

Einar Jón tolvupostur at gmail.com
Mon Oct 23 11:21:19 UTC 2017


Hey.

Thanks a lot. Blacklisting solves most of my issues,
A couple of questions inline.

On 23 October 2017 at 11:05, Aleksander Morgado
<aleksander at aleksander.es> wrote:
> Hey
>
>>
>> We are in the process of testing Sierra Wireless MC7354.. It has 3
>> wwan<N> interfaces (wwan0, wwan1, wwan2), with the corresponding
>> /dev/cdc-wdm<N> devices.
>>
>> We are using ModemManager 1.6 with libQMI 1.16.0 and a custom python
>> script that hooks into D-Bus messages to do the needful.
>> The modem usually connects on wwan1, but has also connected on wwan0.
>> The connection seems fine and stable.
>> We have a lot of script that expect the modem connection to be on wwan0.
>>
>> So some basic questions:
>> 1) Why multiple interfaces? What do they mean? Are they different
>> bands (3G/LTE/etc)? Where can I read up on this?
>
> You're probably using an old kernel as well, because the 3rd interface
> (wwan2) shouldn't be exposed. I removed it from qmi_wwan a while ago
> because it was non-functional.

It's ancient (3.x). We don't even have raw IP support in qmi_wwan.  I
really would like to get to 4.9.
We were also considering Sierra Wireless MC7455, but that's Raw IP
only so it didn't register in ModemManager after I patched qmi_wwan to
add it.

> Regarding the other two, one comes with 802.3 link layer protocol
> configured by default (ethernet packets) and the other one comes with
> raw-ip link layer protocol by default (raw IP packets). ModemManager
> can use either of them; in your case it probably is switching the
> raw-ip one to 802.3 before connecting, as that old kernel version only
> worked with 802.3 mode.

That makes sense. But I don't have raw IP support (that's kernel 4.5 and later).
Which one is supposed to be Raw IP?
How come both wwan0 and wwan1 give me a connection (I didn't test
extensively, but ping, ssh works on both)?

I have these in the kernel:
drivers/net/usb/qmi_wwan.c:832: {QMI_FIXED_INTF(0x1199, 0x68c0, 8)},
 /* Sierra Wireless MC73xx */  <-- wwan0 / USBIFNUM=="08"
drivers/net/usb/qmi_wwan.c:833: {QMI_FIXED_INTF(0x1199, 0x68c0, 10)},
 /* Sierra Wireless MC73xx */ <-- wwan1 / USBIFNUM=="0a"
drivers/net/usb/qmi_wwan.c:834: {QMI_FIXED_INTF(0x1199, 0x68c0, 11)},
 /* Sierra Wireless MC73xx */ <-- wwan2 / USBIFNUM=="0b"
I guess I could comment out lines 833-834 if I really want wwan1/wwan2 out.

> You can have multiple WWAN interfaces if e.g. you want to connect to
> different APNs at the same time, that is one recurring use case I see.
> You may want to have an APN for "corporate network" and an APN for
> "public internet" or some other setup.

Interesting, but I don't need that at all.

>
>> 2) Can I limit the number of interfaces to one? Otherwise I need to
>> change a lot of things from a "static wwan0" interface to a dynamic
>> one that checks wwan0, wwan1 and wwan2.
>
> In ModemManager 1.6.x you can also try to blacklist the other
> interfaces explicitly with ID_MM_PORT_IGNORE.
> E.g.:
>
> $ vim /lib/udev/rules.d/77-mm-sierra-mc73xx.rules
>   ACTION!="add|change|move", GOTO="mm_sierra_mc73xx_end"
>
>   SUBSYSTEMS=="usb", ATTRS{idVendor}=="1199",
> ATTRS{idProduct}=="68c0", GOTO="mm_sierra_mc73xx_check"
>   GOTO="mm_sierra_mc73xx_end"
>
>   LABEL="mm_sierra_mc73xx_check"
>
>   SUBSYSTEMS=="usb", ATTRS{bInterfaceNumber}=="?*",
> ENV{.ID_MM_SIERRA_MC73XX_USBIFNUM}="$attr{bInterfaceNumber}"
>
>   # Sierra Wireless MC73xx device, interfaces #10 (cdc-wdm1, wwan1)
> and #11 (cdc-wdm2, wwan2)
>   ENV{.ID_MM_SIERRA_MC73XX_USBIFNUM}=="0a", ENV{ID_MM_PORT_IGNORE}="1"
>   ENV{.ID_MM_SIERRA_MC73XX_USBIFNUM}=="0b", ENV{ID_MM_PORT_IGNORE}="1"
>
>   LABEL="mm_sierra_mc73xx_end"

That works brilliantly. I'm connecting on wwan0 now, and it seems to
work. I can't access all IP addresses (ping), but I'm not sure if
that's the fault of the modem.
I still have the wwan1/wwan2 interfaces, but they are not used.
So by adding a single file, all my old scripts just work. That makes
everything easier.

>> 3) It seems to work fine with qmi_wwan+cdc_wdm kernel modules (and
>> friends). Would cdc-mbim (and libMBIM) add anything of value?
>
> Not really. If you're happy with QMI, I would stick with it.

Sounds good. Thanks for the info.

>
> --
> Aleksander
> https://aleksander.es



-- 
Regards
Einar Jón
+31 610 957234


More information about the libqmi-devel mailing list