WWAN modem integration and support

Being the main developer of ModemManager, libmbim and libqmi, I have extensive experience in WWAN modems (e.g. GSM, UMTS, LTE, 5GNR…) and protocols (e.g. AT, QMI, MBIM…), how they work, how they’re integrated in the Linux kernel (option, qmi_wwan, cdc-mbim, mhi-wwan….), how userspace services interact with them, and how to best use them from client applications.

Since I started freelancing, I have helped multiple companies all over the world integrating WWAN modems in their custom systems, either using the standard tools I have helped create, or writing completely new tools when needed.

During this kind of work, I have also been able to work closely with the WWAN modem manufacturers themselves to solve problems, usually with email or public forum discussions, but also with teleconferences or on-site discussions in the manufacturer’s offices. I have direct contact to key developers of major WWAN modem manufacturers, which sometimes is extremely useful to quickly resolve issues without involving the (usually) slower local field application engineers or Tier 1 support.

New WWAN modem enablement (for manufacturers)

I have worked for several WWAN manufacturers that approached me to give support to their new devices in ModemManager and libqmi/libmbim before they are even released in production. By starting the module integration early in the manufacturing process, we also ensure the support is available in the major GNU/Linux distributions by the time the product reaches the market.

The kind of work involved would include making sure they work properly in the whole software stack (from kernel to user interface), adding support for new features, integrating firmware upgrade support in the Linux Vendor Firmware Service, and maintaining them through a long period of time (several stable release cycles).

In order to fully test the different features and behaviors that the WWAN modems have, I maintain my own office test LTE network, powered by srsLTE, Open5GS, a USRP B210 and sysmoUSIM-SJS1 SIM cards. I use this fully functional network to periodically run a collection of black-box tests on the specific modules I’ve been hired to support.