TECHSHIP IS A GLOBAL SUPPLIER OF WIRELESS COMPONENTS
The Telit LM960 Mini PCIe (mPCIe) data card delivers high speed data rates via Advanced LTE and offers a cellular connection for products in network appliance environments. This data card is well-suited for products that demand high throughput such as routers, mobile gateways and access points, to provide the most advanced 4G LTE connectivity, ensuring a rich and seamless user experience.
Based on LTE Category 18, the LM960 mPCIe data card achieves download rates up to 1.2 Gbps. It supports 4x4 MIMO, 5x downlink carrier aggregation and 2x uplink carrier aggregation. The product supports multiple RF frequency bands and band combinations to accommodate
For design-in and new integrations, please refer to the Telit LM960A18 module:
Telit LM960A18 LTE CAT-18, GPS, mPCIe
Certified for North America target region with firmware 32.00.041 and Frequency bands:
LTE: B2, B4, B5, B12, B14, B29, B30, B46, B66, UMTS/HSPA: 850, 1900 MHz.
FCC, IC, GCF and PTCRB certification plus AT&T operator approval completed.
This guide describes the Telit LM940 and LM960 series cellular modules accepted (raw) QMI commands.
This document describes the integration steps of the cellular modules USB endpoints in Linux systems.
This archive contains the Telit XFP Firmware Update Tool installer used to update the firmware on Telit Cellular modules over USB-serial interface.
This archive contains the Windows 10 WHQL certified Telit module drivers for both x86 and x64 system platforms.
Zip archive with Telit cellular modules USB drivers installers for Windows 7, 8.x, 10 both x86 and x64 system architectures.
(Non WHQL certified drivers).
This archive contains the Telit AT controller tool as well as XFP firmware update tool for Microsoft Windows systems.
It can be used to troubleshoot, test and command the Telit cellular module in a graphical interface.
Windows based multi image firmware updater tool for the Telit LM960 cellular module.
Use AT command AT#FIRMWARE to list loaded firmware images and select active firmware image with: AT#FIRMWARE=(LIST ORDER ID)
How to collect initial diagnostics data and logs for Telit cellular modules needed when requesting Techship technical support?
In order to ease the troubleshooting of technical problems and understand your end-product or application and its usage scenario we ask you to please provide the following information when creating a technical support ticket at: techship.com/technical_support/
Please give a detailed problem description and in what precise circumstances it is present.
Describe the host system:
-Hardware (system board, processor architecture, other peripheral devices...)
-Operating system with detailed versions (E.g. Windows version and build, Linux distribution, kernel version)
-Drivers used and versions (Linux: out-of-tree vendor drivers or in-kernel drivers?)
Details from the cellular module label:
-SKU/BOM or P/N code
For Linux systems, capture terminal logs from commands:
ls -l /dev/serial/by-id
ls -l /sys/bus/usb-serial/devices
The cellular module logs can be acquired by accessing one of the USB enumerated serial (COM) interfaces or physical UART serial interfaces accepting AT commands. In Windows device manager they are generally found as modem infterface or serial and ports interface types).
Send AT commands to module and capture the text output:
Test that you get a OK reply:
Enable AT command echo:
Verbose error reporting:
USB endpoint configuration:
Serial port configuration:
Selected network access techniques:
List network operator info:
Network registration status:
Last serving cell network information:
Current network status:
List APN details:
List Packet switch enable/disable status:
List PDP profiles status:
List default data connection details:
List bearers and IP addresses:
Additional test commands for Telit LM940/LM960:
How-to change the cellular modulesUSB composition mode to Mobile Broadband Interface Model (MBIM) used by Windows 8 and 10 systems for controlling and establishing data connectivity through the built-in connection manager in Windows?
This is done by sending a set of AT commands to the cellular modules Modem or AT serial interface found in Windows Device Manager. Please see list below for associated AT commands.
(For additional details, refer to the product specific software, ports, and AT commands guides found on the Techship product web pages under technical documentation tab).
After the AT commands have been received by the module and has restarted, the USB interface endpoint composition should have changed to include MBIM interface as well.
You can find the correct Serial COM port number by checking Windows Device Manager, under the Modems drop down -> (right click and see properties for selected COM port info) or under the Ports (COM & LPT) drop down.
Vendor specific commands to use:
Sierra Wireless EM75xx series module:
Sierra Wireless EM74xx, MC74xx series module:
Sierra Wireless EM73xx, MC73xx series module:
Simcom SIM7100, SIM7500 and SIM7600 series modules:
ZTE Welink ME3630 series:
Telit LE910C1 and LE910C4 series:
Telit LM940 and LM940A11:
Telit LM960 and LM960A18:
Telit LE910 V2 series:
On Huawei and Telit LN94x series modules the USB mode changing is done automatically by the modules Windows drivers based on current Windows version.
Please be aware that some USB mode configurations do not include any serial interfaces, making it impossible to revert the changes using AT commands.
How can we establish data connection for cellular modules in Windows 8 and Windows 10 systems?
Microsoft Windows desktop versions starting from Windows 8 and newer have built in data connection manager for WWAN, Wifi etc. that can be used to configure, control and establish the data connection of cellular module that support MBIM interface, which most cellular modules do.
The connection managers settings and controls can be found and accessed on Windows desktop start menu through the network icon (see picture).
The Cellular tab can be found in Windows system settings and if needed the connection APN details can be manually entered through "Advanced options".
What Linux kernel modules and configs are commonly used for communicating with cellular modules over their USB interface?
Most cellular modules can be supported in Linux by using som of the in-kernel drivers. The physical data interface to the host Linux system is usually done over USB which enumerates a set of different endpoints/interfaces. A set of serial interfaces for Modem/PPP, AT commands, NMEA location data and chipset debug information are almost always available in all configurations.
In addition some type of network endpoint/interface are also available and exposed. This can vary between manufacturers and chipset vendors and can also commonly be configurable by using USB configuration mode switching or through vendor specific AT commands.
Recommended kernel configurations to enable are listed bellow. Many cellular modules base their Linux support on these modules and drivers. Once included in the kernel build, the USB interfaces will be detected and bound correctly out-of-the-box or after applying source code patches to the driver modules.
Configs for USB serial drivers:
Configs for Modem/PPP support:
Configs for USB network drivers:
Please relate to the Techship product specific web pages for vendor specific Linux integration guides.
Below is a selection of kernel commits relating to cellular module support in Linux kernels:
qmi_wwan: Add support for Fibocom NL678 series
qmi_wwan: Added support for Telit LN940 series
qmi_wwan: Added support for Fibocom NL668 series
USB: serial: option: add support for GosunCn ME3630 RNDIS mode
USB: serial: option: add support for Simcom SIM7500/SIM7600 RNDIS mode
USB: serial: option: add Simcom SIM7500/SIM7600 (MBIM mode)
USB: serial: option: add Fibocom NL678 series
USB: serial: option: add Telit LN940 series
USB: serial: option: add Fibocom NL668 series
USB: serial: option: add GosunCn ZTE WeLink ME3630
qmi_wwan: apply SET_DTR quirk to the SIMCOM shared device ID
If you use any of the listed cellular modules, drivers and specified USB modes in the commits above, ensure that your kernel version already include the patch or apply it to your build.
We cannot acquire an DHCP address over qmi_wwan driver when using Raspbian Linux OS?
Raspbian uses dhcpd to probe all available network interfaces found in the system, which is problematic for the qmi_wwan driver interface, if it is done before being configured properly when using cellular modules supporting only Raw-IP.
This can be avoided by setting dhcpd to deny the related cellular module network interface (most often named wwan0 by the system).
Add to the /etc/dhcpcd.conf file in Raspbian the following line (in the end):
Now, restart the system (preferably re-power it) so cellular module fully restarts also.
At next startup, the settings should be applied and you can now configure and use the qmi interface as described in some of the others faq's, found on the Techship webpage.
MiniPCIe based cellular modules supporting both USB2 and USB3 are not detected in the host system? Such as Sierra Wireless MC74** series, and Telit LM940/LM960 series modules.
From start the PCI-SIG miniPCIe form factor standard only included support for PCIe + USB2 data interface and had designated signal lines for these between host system and the miniPCIe module. Since revision 2.1 of the PCI-SIG miniPCIe standard it is defined that the PCIe data lanes can be shared/used for USB3 also.
Cellular modules mainly rely on USB2 interface but as the cellular throughput speeds have increased, the USB2 can become a bottleneck on LTE Cat 6 modules and higher. To address this, USB3 data interface was introduced on the higher data throughput mobile broadband cellular modules and made available in parallel to USB2 interface. However due to limited amount of pin lanes available in the miniPCIe socket they share location with the PCIe data interface pin lanes.
When the host system and module are powered on, the cellular module will try to probe if USB3 interface is present on the pin lanes and if communication can be established, otherwise the module will revert to using the USB2 data interface instead.
However, in some host systems where PCIe data interface also is implemented on the shared pin lanes, the signals will interfere with the cellular modules probing for USB3 interface making it not fall back to USB2 data interface. This usually result in the cellular module not being detected at all in the host operating system.
The USB3 auto-sensing functionality is enabled by default but can be disabled by using AT commands to write the memory changes to the internal NV memory which is stored between restarts. After the module is restarted it will use only the USB2 pin lanes for data interface. Please also check and validate if the host system BIOS support disabling of the PCIe interface in the miniPCIe socket.
Related AT commands for configuring USB3/USB2 modes:
Telit LM940/LM960 modules:
For Sierra Wireless MC74 series: (firmware version dependent)
For troubleshooting this issue in hardware, you can try isolating the USB3 data interface pins #23, 25, 31, 33 on the top side of the miniPCIe data cards card socket so no signalling to and from the hosts can occur. This could be done in the board design or with adapter.
How to step by step set up a data connection over QMI interface using qmicli and in-kernel driver qmi_wwan in Linux?
Several cellular modules based on Qualcomm chipsets implements the Qualcomm Qualcomm MSM (QMI) Interface.
There is a open source Linux in-kernel driver supporting this interface and it is called qmi_wwan. This driver can be used together with ModemManager and NetworkManager to automate connection establishment and as a connection manager.
The library libqmi which ModemManager uses can also be used to communicate in a more direct way with the cellular devices over the QMI interface and to step by step do necessary configurations and trigger the data connection over the cellular network.
A selection of cellular modules can be supported:
Using RAW IP kernel configuration:
Sierra Wireless MC74 series, EM74 series, EM75** series
Telit LM940, LM960
Telit LN94x series (requires USB mode switch)
Simcom SIM7500 series, SIM7600 series, SIM7600 -H series
(can be supported in qmi_wwan driver from kernel 4.18 or by applying the following one line qmi_wwan source code patch on previous kernel builds: qmi_wwan: apply SET_DTR quirk to the SIMCOM shared device ID)
Using 802.3 IP framing kernel configuration:
Simcom SIM7100 series
Sierra Wireless MC73**/EM73** series
ModemManager combined with NetworkManager will detect the cellular modules automatically in most cases, please refer to their respective documentations on how to establish a data connection using them.
Example on how to set up the data connection step by step manually with libqmi:
First install the libqmi Linux library e.g. by using your system package manager like apt or preferably latest version from source on the Freedesktop pages for libqmi project: https://www.freedesktop.org/wiki/Software/libqmi/
Verify that you have the Linux in-kernel qmi_wwan driver installed and attached for the cellular modules QMI interface over USB:
Can look e.g. like this:
|__ Port 1: Dev 3, If 2, Class=Vendor Specific Class, Driver=qmi_wwan, 480M
If the driver is not correctly loaded, please verify that the module is set to expose the correct USB endpoints configuration toward the host system and that you have followed the provided guides from the cellular module vendors, regarding how to implement the module in Linux.
Libqmi expose a command line interface that can be used to communication with the module over QMI interface.
The qmicli help will output information about all commands available:
The cellular modules QMI control interface are usually named cdc-wdm* e.g.:
In order to allow parallel commands to be execute on the module over QMI interface, it is recommended to use the libqmi proxy function. This can be done by including the attribute -p or --device-open-proxy in every qmicli command.
If a SIM pin is required for the SIM card, use command bellow:
qmicli --device=/dev/cdc-wdm0 -p --dms-uim-verify-pin=PIN,1234
The name of the related network interface to QMI control channel can be acquired with the command:
qmicli --device=/dev/cdc-wdm0 --device-open-proxy --get-wwan-iface
The most recent Qualcomm based cellular modules only expose QMI interfaces that can support Raw-IP mode. Sierra Wireless EM/MC74 and EM75 series modules, Telit LM940 and LN940 series for example require this.
Check what IP-mode the host system is configured for:
qmicli --device=/dev/cdc-wdm0 --get-expected-data-format
Check what IP-mode the cellular module require:
qmicli --device=/dev/cdc-wdm0 --device-open-proxy --wda-get-data-format
to change qmi_wwan driver to use Raw-IP.
Disable the network interfaces exposed by the cellular module:
ip link set dev wwan0 down
Trigger the Raw-IP support:
echo Y > /sys/class/net/wwan0/qmi/raw_ip
Enable the network interfaces again:
ip link set dev wwan0 up
Now the data connection in the cellular module can be activated e.g. with a IPv4 type configuration on the specified APN:
qmicli --device=/dev/cdc-wdm0 --device-open-proxy --wds-start-network="ip-type=4,apn=data.tre.se" --client-no-release-cid
Once "Network started" is displayed, you can send a DHCP request on the network interface.
Please note that not all DHCP clients in Linux can support Raw-IP format, udhcpc however support this for IPv4 over Raw-IP.
udhcpc -q -f -n -i wwan0
Disconnect the data bearer and data connection over QMI by command bellow and providing the network handle and CID returned at connection activation:
qmicli --device=/dev/cdc-wdm0 --device-open-proxy --wds-stop-network=NETWORK_HANDLE --client-cid=CID
Additional useful commands:
Request module manufacturer:
qmicli --device=/dev/cdc-wdm0 --device-open-proxy --dms-get-manufacturer
Get module model:
qmicli --device=/dev/cdc-wdm0 --device-open-proxy --dms-get-model
Get firmware version:
qmicli --device=/dev/cdc-wdm0 --device-open-proxy --dms-get-revision
Get module IDs (IMEI etc.):
qmicli --device=/dev/cdc-wdm0 --device-open-proxy --dms-get-ids
Get SIM card status:
qmicli --device=/dev/cdc-wdm0 --device-open-proxy --uim-get-card-status
Recent cellular modules like Sierra Wireless EM7565 require at least libqmi V1.20. Check version with command:
If the connection was successfully set up established, you now have data connectivity. A ping to a remote server using the cellular network interface can for example prove this:
ping -I wwan0 18.104.22.168
The ifconfig Linux tool can show the current details for the network interface:
libqmi is well integrated and supported in ModemManager tool for Linux. ModemManager again is well integrated and supported when using NetworkManager tool in Linux. Please note however that these two tools expect the cellular module interfaces to only be used by them so if you manually want to use the libqmi library or AT commands interfaces, please turn off/disable ModemManager and NetworkManager first.
The libqmi is a generic open source library for Linux systems and QMI protocol from Qualcomm, therefor there are commands only working on selected devices and not necessarily supported on the device you use, resulting in an error message.