ME910G1 Integration

Aleksander Morgado aleksander at
Mon Jul 26 09:50:01 UTC 2021


> I've been working on integrating the Telit ME910G1 into our platform and have found some interesting behavior that I wanted to share and ask for some feedback:
> USB Composition
> The USB composition for the device is:
>       0x110a: 3 reduced ACM devices. The composition also 1 rmnet adapter, but it can’t be used for data calls, just for controlling the device
> The kernel I am running does not have support for the qmi_wwan driver for this ID, so by default I only got the ttyUSBX devices. As a result, ModemManager defaulted to using PPP for setting up the connection. This worked perfectly fine. I haven't used PPP much since our other modems support qmi. We are using OpenWRT and I did find that the pppd setup scripts create a default route with no metric when the interface comes up. Since the ModemManager Luci page supports metrics, I wanted to have this functionality. I created a custom ppp-up script to get called by pppd that gets the metric via uci get and adds that via json_add_int. It's not the cleanest approach, so I would be curious if anyone else has faced an issue like this?
> I then wanted to have the cdc-wdm interface available for getting signal info while the interface is up. Adding support in runtime with:
>  echo "1bc7 110a" > /sys/bus/usb/drivers/qmi_wwan/new_id
> worked, and I was able to use qmicli to query the modem. The issue is, however, that ModemManager then wanted to use the qmi interface for setting up the interface. I think I would like to force ModemManager to use PPP in this specific instance (maybe I can change the primary port to ttyUSB?). I haven't experienced a modem with this "partial" rmnet adapter, I'm assuming it's not very common, so I'm not exactly sure what an ideal ModemManager behavior would be but it seems like an interesting problem to solve.

If you want ModemManager to use the TTY ports exclusively, and ignore
the QMI port, you can flag the QMI ports with the ID_MM_PORT_IGNORE
udev tag (in OpenWRT ModemManager ships with a minimal udev rules

Something like this (untested):
# vim /lib/udev/rules.d/78-mm-custom.rules
ACTION!="add|change|move|bind", GOTO="mm_custom_rules_end"
ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="110a",


More information about the ModemManager-devel mailing list