{{ImportantMessage|text=This application note has been validated using the '''kit version''' in the History table.}}
==Introduction==
Nowadays IoT services are based on the native connectivity peripherals available on the Edge equipment. Sometimes, a 4G modem (if not already integrated in into the main board) ahs has to be added for increase increasing the connectivity capabilities of the Edge itself.
== Connecting the IoT modem ==
With this adapter any mniPCIe modem (with USB interface) can be easily connected to the SBC Lynx DAVE Embedded System's IoT Edge platform.
In the following example, the [https://www.telit.com/devices/me910c1-series/ Telit ME910C1-WW 4G modem] LTE UE Cat M1/NB1 has been used. [[File:SBCLynx-with-4G-modem.png | 500px| center | thumb | SBC Lynx with Telit ME910C1-WW modem connected to the USB port]]
== Configuration ==
For using the Telit ME910C1-WW 4G modem, the standard [https://en.wikipedia.org/wiki/Qualcomm_MSM_Interface Qualcomm MSM Interface], aka QMI, software interface has to be installed in the root file system. USB-connected LTE modems present newer interfaces like QMI and MBIM. QMI is a Qualcomm proprietary protocol, while MBIM protocol specification is the result of multi-vendor standardization efforts. They present the modem as a real network interface (typically <code>wwan0</code> or similar) and an additional device (e.g. <code>/dev/cdc-wdm0</code>) for command access. The [https://github.com/freedesktop/libqmi libqmi] (glib-based library for talking to WWAN modems and devices which speak the Qualcomm MSM Interface (QMI) protocol) is then installed in the root file system using the DFN <code>dnf</code> package manager (see [[DESK-MX6-AN-0003:_Package_Management_with_Yocto_and_DNF | this Application Note]] for more information)
<pre>
root@desk-mx6ul-lynx:~# qmi
qmi-firmware-update qmi-network qmicli
root@desk-mx6ul-lynx:~#
</pre>
Obviously, the Linux kernel has to be configured adding the proper driver for the QMI WWAN interface.The following <code>CONFIG</code> should be enabled for the kernel to properly recognize the USB modem:<pre>CONFIG_USB_NET_QMI_WWAN=y CONFIG_USB_SERIAL=yCONFIG_USB_SERIAL_QCAUX=yCONFIG_USB_SERIAL_QUALCOMM=y</pre>
If the modem is connected at the boot, the kernel lists the USB peripherals connected and installs the proper drivers; this can be seen via the command:
|__ Port 1: Dev 2, If 2, Class=Vendor Specific Class, Driver=, 480M
|__ Port 1: Dev 2, If 3, Class=Vendor Specific Class, Driver=qmi_wwan, 480M