TECHSHIP IS A GLOBAL SUPPLIER OF WIRELESS COMPONENTS

Register

Sierra Wireless EM7690 LTE CAT-20

Article Number: 11189
Brand: Sierra Wireless
Supplier number: 1104628

The Sierra Wireless EM7690 is a LTE CAT-20 module offering global deployments with approvals from multiple NAM, EMEA, and APAC carriers. Supporting USB 3.1 and PCIe gen 3 single lane interfaces, the EM7690 offers an easy upgrade path to next-generation cellular technologies and global access to LTE-Advanced Pro high speed cellular networks.

This Cat-20 embedded module delivers up to 2 Gbps downlink and 211 Mbps uplink high speed connectivity. With automatic 3G fallback network and integrated GNSS receiver (GPS, GLONASS, BeiDou, and Galileo satellite systems supported), the EM7690 is ideal for a wide range of industrial M2M and mobile computing solutions.

To speed up development, we recommend you also buy a developer kit
11131, Sierra Wireless M.2 Developer Kit EM9/EM76 Series

End-of-life

This product has reached
end-of-life and can not be
ordered any more.

Quantity Price

No prices available

For more information
please contact us at
sales-americas@techship.com

For larger quantities and complete pricing, please sign in or register

Subscribe to stay up to date with the latest about this product.

Subscribe to updates
Region
Europe
North America
Australia
Japan
Africa
APAC
Primary Technology
LTE - cat 20
Fallback
3G
Form Factor
M.2 3052
LTE Bands
B1 (FDD 2100)
B2 (FDD 1900)
B3 (FDD 1800)
B4 (FDD 1700 / AWS)
B5 (FDD 850)
B7 (FDD 2600)
B8 (FDD 900)
B12 (FDD 700ac)
B13 (FDD 700c)
B14 (FDD 700PS)
B18 (FDD 800)
B19 (FDD 800)
B20 (FDD 800DD)
B21 (FDD 1500)
B25 (FDD 1900)
B26 (FDD 850)
B28 (FDD 700)
B29 (SDL 700)
B30 (FDD 2300)
B32 (SDL 1500)
B34 (TDD 2000)
B38 (TDD 2600)
B39 (TDD 1900)
B40 (TDD 2300)
B41 (TDD 2500)
B42 (TDD 3500)
B43 (TDD 3600)
B48 (TDD 3600)
B66 (FDD 1700 / AWS-3)
B71 (FDD 600)
UMTS Bands
B1 (2100)
B2 (1900)
B8 (900)
B4 (AWS)
B3 (1800)
B5 (850)
B9 (1700)
Max DL Speed
2000 Mbps
Max UL Speed
211 Mbps
GNSS
Yes
GNSS technology
GPS
GLONASS
Galileo
BeiDou
Antenna Connectors
IPEX MHF-4
Certification
PTCRB
CE RED
FCC
IC
GCF
Carrier Certification
Verizon
T-Mobile
NTT DOCOMO
AT&T
Chipset
Qualcomm
SDX55
Data Interface
PCIe
USB 3.1
Driver Support
Linux
MIMO (Multiple-Input Multiple-Output)
Yes
Size
30x52x2.38 mm
Product technical specification for the Sierra Wireless AirPrime EM919x series 5G cellular module series and the EM7690 4G LTE-A cat 20 cellular module.

Download

Uploaded at
2020-09-28 15:23:31
Last updated
2020-12-08 09:04:03
Version
Rev. 2
Related products
Sierra Wireless EM9190 5G NR M.2
Sierra Wireless EM9191 5G sub-6 M.2
Sierra Wireless EM7690 LTE CAT-20
AT commands guide for the Sierra Wireless AirPrime EM919x series 5G cellular module series and the EM7690 4G LTE-A cat 20 cellular module.

Download

Uploaded at
2020-09-28 15:29:06
Last updated
2022-09-29 12:25:01
Version
Rev6
Requirements

Related products
Sierra Wireless EM9190 5G NR M.2
Sierra Wireless EM9191 5G sub-6 M.2
Sierra Wireless EM7690 LTE CAT-20
Sierra Wireless M.2 Developer Kit EM9/EM76 Series
User guide for the Sierra Wireless AirPrime EM919x - EM7690 series modules development kit.

Download

Uploaded at
2020-09-28 15:34:27
Last updated
2021-08-16 14:09:08
Version
Rev2
Related products
Sierra Wireless EM9190 5G NR M.2
Sierra Wireless EM9191 5G sub-6 M.2
Sierra Wireless EM7690 LTE CAT-20
Sierra Wireless M.2 Developer Kit EM9/EM76 Series
Thermal mitigation guide for Sierra Wireless AirPrime EM919x-EM7690 series M.2 key B modules.

Download

Uploaded at
2020-09-28 15:38:56
Last updated
2021-11-01 16:39:14
Version
Rev2
Requirements

Related products
Sierra Wireless EM9190 5G NR M.2
Sierra Wireless EM9191 5G sub-6 M.2
Sierra Wireless EM7690 LTE CAT-20
Current consumption application note Sierra Wireless AirPrime EM9190 - EM7690 Series modules.

Download

Uploaded at
2020-09-28 15:45:34
Last updated
2021-07-12 11:57:30
Version
Rev1.1
Related products
Sierra Wireless EM9190 5G NR M.2
Sierra Wireless EM9191 5G sub-6 M.2
Sierra Wireless EM7690 LTE CAT-20
Application note for the Sierra Wireless AirPrime EM919x - EM7690 series sleep modes.

Download

Uploaded at
2020-09-28 15:54:33
Last updated
2021-07-12 11:56:16
Version
Rev1.1
Related products
Sierra Wireless EM9190 5G NR M.2
Sierra Wireless EM9191 5G sub-6 M.2
Sierra Wireless EM7690 LTE CAT-20
Customer production test mode application note for Sierra Wireless AirPrime EM919x - EM7690 series cellular modules.

Download

Uploaded at
2020-09-28 15:59:33
Last updated
2020-11-11 10:36:14
Version
Rev1.4
Related products
Sierra Wireless EM9190 5G NR M.2
Sierra Wireless EM9191 5G sub-6 M.2
Sierra Wireless EM7690 LTE CAT-20
Non-mmWave smart transmit application note for Sierra Wireless AirPrime EM919x - EM7690 series cellular modules.

Download

Uploaded at
2020-09-28 15:57:09
Last updated
2020-09-28 15:57:09
Version
Rev1.0
Related products
Sierra Wireless EM9190 5G NR M.2
Sierra Wireless EM9191 5G sub-6 M.2
Sierra Wireless EM7690 LTE CAT-20

Contains the following certification approvals, listed below for the Sierra Wireless AirPrime EM7690 module:

-USA (FCC)
-Canada (IC)
-EU (CE)
-Taiwan (NCC)
-Japan

Download

Uploaded at
2022-11-28 15:41:25
Last updated
2022-11-28 15:41:25
Related products
Sierra Wireless EM7690 LTE CAT-20
Microsoft Windows desktop driver installer for the Sierra Wireless AirPrime EM91xx/EM7690 series cellular modules.

Download

Uploaded at
2021-06-21 15:21:51
Last updated
2021-06-21 15:21:51
Version
5154
Requirements
Microsoft Windows 10 desktop system.
Related products
Sierra Wireless EM9190 5G NR M.2
Sierra Wireless EM9191 5G sub-6 M.2
Sierra Wireless EM7690 LTE CAT-20
Question

How do I set USB-interface modes on my Sierra Wireless module?

Solution

Sierra Wireless modules can expose different USB interfaces, like MBIM, MODEM, NMEA or RMNET. The different interfaces can be combined or used individually, depending on the specific need for your project.
Here is how to set the different USB interface configurations. (In this example we use a Sierra Wireless EM7421, but it will be similar for many other Sierra Wireless modules.)

Make sure you get an OK after every AT command sent.
We start by typing:
AT
To be able to view what we just sent to the module we type:
ATE1
Since this feature is password protected we need to type:
AT!ENTERCND=”A710”
To see what USB interface we are currently using, just type AT!USBCOMP? and you should receive something like this:

Config Index: 1
Config Type: 3 (Generic)
Interface bitmask: 0000010D (diag,nmea,modem,rmnet0)
OK

Config index is what the type applies to and should be set to 1.
The config type means what USB composition is used. For this module USBIF-MBIM (1), PCIE USBIF (2), Legacy Generic (3) or RNDIS (4) are available.
Interface bitmask is the part where we see what USB interface our module is set to.

Now, to see what our USB interface options are we need to type:
AT!USBCOMP=?
Here we can see that for this module we have the following options:
DIAG - 0x00000001
NMEA - 0x00000004
MODEM - 0x00000008
RMNET0 - 0x00000100
MBIM - 0x00001000
These values are hexadecimal. So, for an example, if we wanted to activate all the options (DIAG, NMEA, MODEM and MBIM) we just add these values together.
If we open the Windows Calculator in Programmer mode (and make sure you have “HEX” selected!) and add all the values together like this 1 + 4+ 8 +1000, we will get 100D. (Please note, RMNET0 and MBIM cannot be used simultaneous for this module. Refer to the manual of your specific module to when setting up the USB interface.)
If we then send the following AT command to the module, we will set it to DIAG, NMEA, MODEM and MBIM:
AT!USBCOMP=1,3,100D

Again, type AT!USBCOMP? to confirm we have the new settings selected, it should look like this:

Config Index: 1
Config Type: 3 (Generic)
Interface bitmask: 0000100D (diag,nmea,modem,mbim)
OK

For further information please take a look at the AT command user guide available on the product's specific page under "technical documentation", which is available for download once logged in.

Question


How do I select specific bands on my Sierra Wireless module?

Solution

The AT command AT!BAND can be used to select what specific GSM and LTE bands that you want to be active on your module.

If you are experiencing poor DL or UL speeds, one solution may be to only select the bands that you know are available, which can increase the transfer speeds.

(Please note that the following examples are when using a Sierra Wireless EM7421)

First, see that you get an “OK” with command:
AT
Then, to make sure you can see what command has been sent, type:
ATE1

Since what we are about to do is password protected, we need to type:
AT!ENTERCND="A710"

When entering AT!BAND? it will return a reply looking like (for example):
AT!BAND?
Index, Name, GW Band Mask L Band Mask 1 TDS Band Mask L Band Mask 2 L Band Mask 3 L Band Mask 4
00, All Bands 000200000C400000 000007A0880800C5 0000000000000000 0000000000000000 0000000000000000 0000000000000000
OK


The "00" is referring to the selected preset, "All Bands" to the preset name, "000200000C400000" to GSM bands and "000007A0880800C5" to selected LTE bands in hexadecimal.

To get information on all available bands, we need to type:
AT!BAND=?

Starting at the GSM band (at chapter "AT!BAND - Select/return frequency band set" in the AT command reference manual) we can see that 000200000C400000 corresponds to “0002000000000000 - B8 (900) + 0000000008000000 - B6 (800) + 0000000004000000 - B5 (850) + 0000000000400000 - B1 (2100) = 000200000C400000 (All GSM Bands)”

Now for LTE, which is probably what is a little tricky to understand. Let’s start the Windows Calculator and change it to Programmer mode. If you copy the "000007A0880800C5" into the calculator window it should convert it to binary.
HEX: 0000 07A0 8808 00C5
BIN: 0111 1010 0000 1000 1000 0000 1000 0000 0000 1100 0101

If you look at the line of BIN above you can see what bands are active (1) and which are not (0). Looking from right to left, the first bit corresponds to B1, second bit to B2, third bit B3, and so on…

HEX: 0000 07A0 8808 00C5
BIN: 0111 1010 0000 1000 1000 0000 1000 0000 0000 1100 0101
Selected bands: B1+B3+B7+B8+B20+B28+B32+B38+B40+B41+B42+B43

So if I, for example, only want the GSM bands "GSM 900MHz + GSM 850MHz", and LTE bands "B3, B4, B7, B28" we enter the following:
AT!BAND= 11,"Custom User Preset",0002000004000000,000000000800004C

Now we have created a new preset slot “11”, a name for the preset “Custom User Preset” and selected bands for GSM “GSM 900MHz + GSM 850MHz” and also selected bands for LTE "B3, B4, B7, B28", see explanation below:

Bands: B3, B4, B7, B28
Binary: 1000 0000 0000 0000 0000 0100 1100
Hexadecimal: 800 004C

Now we want to make sure our newly created preset is selected, so we type:
AT!BAND=11

And finally to check that we have selected the preset we again type AT!BAND? and should get the following response:
Index, Name, GW Band Mask L Band Mask 1 TDS Band Mask L Band Mask 2 L Band Mask 3 L Band Mask 4
11, Custom User Preset 0002000004000000 000000000800004C 0000000000000000 0000000000000000 0000000000000000 000000000000000
OK

For further information please take a look at the AT command user guide available on the product's specific page under "technical documentation", which is available for download once logged in.

Question

How to collect initial diagnostics data for Sierra Wireless EM919x and EM7690 series cellular modules when requesting technical support?

Solution

In order to troubleshoot and solve a technical problem, we ask you to please provide information about your system and logs from the related module when creating a technical support ticket.

Please provide a problem description of what exact problem is and in what precise situations it is present.

Describe the host system:
-Hardware (system board, peripherals...)
-Operating system and detailed versions (E.g. Windows, Linux dist, release, kernel...)
-Drivers and driver versions

Identify the precise details of cellular module found on label:
-Model
-SKU/BOM or P/N code
(For RMA returns the IMEI number is required also)

If you are running on a Linux based system, please capture the terminal logs bellow:
uname -a
lsusb
lsusb -t
ifconfig -a
ls -l /dev/serial/by-id
ls -l /sys/bus/usb-serial/devices
dmesg

The log output requested from the commands bellow, can be acquired from the module by accessing one of the USB enumerated serial (COM) interfaces accepting AT commands. (In Windows this is generally found listed as a Modem interface or AT commands serial interface in the device manager and in Linux it is usually found on /dev/ttyUSB2 interface). Send the following commands to the module and capture the text output and include them when creating the the technical support ticket.

Sierra Wireless :
AT
ATE1
ATI
AT!ENTERCND="A710"
AT!PRIID?
AT!IMPREF?
AT!IMAGE?
AT+CFUN?
AT!UIMS?
AT+CPIN?
AT+CREG?
AT+CGREG?
AT+CEREG?
AT+COPS?
AT!GSTATUS?
AT+CGDCONT?
AT$QCPDPP?
AT+CGATT?
AT+CGACT?
AT+CGCONTRDP
AT+CGPADDR
AT!BAND?
AT!BAND=?
AT!LTEINFO?
AT!LTECA?
AT!RXDEN?
AT!PCINFO?
AT!USBCOMP?
AT!USBCOMP=?
AT!SELRAT?
AT!SELRAT=?
AT!USBSPEED?
AT!PCOFFEN?
AT!CUSTOM?
AT!CUSTOM=?
AT!PCTEMP?
AT!PCVOLT?
AT!PCVOLTLIMITS?
AT!HWID?
AT!ERR
AT!BCFWUPDATESTATUS
AT!TMSTATUS?
AT!RATCA?

The support ticket can be created after login at: https://techship.com/technical_support/

Question

Why does not our EM9190/EM9091/EM7690 appear in our system when connected to our host board?

Solution

The Sierra 5G (EM919x) modules and EM7690 has the PCIe host interface as default, as compared to the USB interface. This differs from most other modules on today's market and can be a reason as to why the module is not appearing in your system.

First, make sure that there are no pin-conflicts between the adapter/host board and the module. To avoid any incompatibilities we recommend the Sierra Wireless development Kit (11131) or the Techship MU201 adapter.

To change the host interface from PCIe to USB using the development kit please do the following;
Slide SW201 to the USB connector (CN204).
Change CN203 jumper from 2-3 to 1-2.

To change the host interface from PCIe to USB using the MU201 adapter please do the following;
Connect the 1.27 mm jumper at AS20.
Connect the 1.27 mm jumper at AS22.

What happens when slide SW201 is switched (or jumper placed at AS20) is that pin #20 (PCIE_DIS) is set to high (1.8V) and selects USB as host interface. Changing the jumper on the CN203 (or placing a jumper or AS22) sets pin #22 (VBUS_SENSE) to high (3.135 - 4.2 V) which is used to detect USB during USB connection.

This is further explained in the Sierra Development Kit User Guide and the EM919X-EM7690 Product Technical Specification. These documents are linked to this FAQ and can also be found on the product pages under the "technical documentation" tab.

Question

How to establish a data connection with Sierra Wireless EM9190, EM9191 and EM7690 in Linux using MBIM network interface over USB

Solution

5G technology introduces new requirements on the interface links between the host systems and cellular modules.
The Linux community continuously commit necessary changes to the kernel drivers and interface management tools to improve the compatibility and performance.
Because of this, it is important that you base your Linux system builds on up-to-date kernel versions, avoiding many problems already solved.

Ensure that you have up-to-date firmware version in the cellular module. Check the dedicated product page here at Techship and the firmware downloads tab or open a technical support ticket.

Early devices and engineering samples came with a older baseline firmware version and typically need to be updated in a Windows system.

This guide describes how to establish a MBIM data connection in Linux using libmbim library and mbimcli command line interface for Sierra Wireless EM919x series modules when connected over USB to the host system.
The cdc_mbim kernel driver module and libmbim library is used.

Ensure that the cdc_mbim network kernel driver and qcserial usb-serial driver is properly loaded to the module interfaces, refer to Sierra Wireless Mobile broadband package for Linux for more details. Binary version and guide linked below.
It can be checked e.g. through dmesg, usb-devices or lsusb -t commands.

usb-devices
T: Bus=02 Lev=01 Prnt=01 Port=03 Cnt=01 Dev#= 2 Spd=5000 MxCh= 0
D: Ver= 3.20 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs= 1
P: Vendor=1199 ProdID=90d3 Rev=00.06
S: Manufacturer=Sierra Wireless, Incorporated
S: Product=Sierra Wireless EM9190
S: SerialNumber=
C: #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=896mA
I: If#=0x0 Alt= 0 #EPs= 1 Cls=02(commc) Sub=0e Prot=00 Driver=cdc_mbim
I: If#=0x1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
I: If#=0x3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=techship_serial
I: If#=0x4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=techship_serial
I: If#=0x5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)

Should you not have the qcserial drivers loaded correctly, you can try compile our modified option usb-serial kernel driver module techship_serial from git link below and load them into your system build, it is however always recommended that you use the vendor provided or recommended drivers.

See the git readme files for details on pre-requirements, how to clone, compile and use the make file options to install the drivers.

They are available in the following git repository:
https://bitbucket.org/storjor/techship_linux_drivers/

Refer to the mbimcli manual pages for details on the control commands that can be supported by the libmbim library and mbimcli command line interface. Note however that not all mbim commands are supported by all cellular module vendors and might be dependant on chipset families, firmware versions and additional vendor specific command etc.
https://www.freedesktop.org/wiki/Software/libmbim/

Example of how to set up a cellular data connection:
Note! A working MBIM network interface data connection requires that the MBIM control message tunnel is kept open at all time also.
To keep it open, start a new session with a mbimcli command, and keep the session open after the command execution by the --no-close attribute.
The Session ID / Transaction ID number (TRID) that is opened with the mbimcli command will be given back in the reply, save it for use in the next mbimcli command.
If the session ID linked to the network data connection is closed, then the data connection on the network interface will also be closed.

Check cellular module device version and capability details:
mbimcli -p -d /dev/cdc-wdm0 --query-device-caps --no-close

Check cellular RF radio status:
mbimcli -p -d /dev/cdc-wdm0 --query-radio-state --no-close
If not enabled, set it active:
mbimcli -p -d /dev/cdc-wdm0 --set-radio-state=on --no-close --no-open=##

Check SIM card subscriber state:
mbimcli -p -d /dev/cdc-wdm0 --query-subscriber-ready-status --no-close --no-open=##
If pin is needed, enter it using --enter-pin command:
mbimcli -p -d /dev/cdc-wdm0 --enter-pin=#### --no-close --no-open=##

Check cellular network registration state:
mbimcli -p -d /dev/cdc-wdm0 --query-registration-state --no-close --no-open=##

If not registered already, try using register automatic:
mbimcli -p -d /dev/cdc-wdm0 --register-automatic --no-close --no-open=##

Check the packet data service state:
mbimcli -p -d /dev/cdc-wdm0 --query-packet-service-state --no-close --no-open=##

If packet service state is not attached, use attach command:
mbimcli -p -d /dev/cdc-wdm0 --attach-packet-service --no-close --no-open=##

To to start a data connection use the connect command, with the desired parameters for PDP APN, IP type, auth details, etc.
mbimcli -p -d /dev/cdc-wdm0 --connect=apn='data.tre.se',ip-type='ipv4v6' --no-close --no-open=##

Bring down the MBIM network interface:
ip link set dev wwan0 down

Clear any existing IP address and routes:
ip -4 -6 address flush dev wwan0
ip -4 -6 route flush dev wwan0

The mbimcli connect command returns the IP, gateway, DNS, and MTU details for the data connection if established successfully.
Enter the IPv4 details to the network interface in the Linux host system, e.g.:
ip address add 2.67.32.120/28 dev wwan0
ip link set mtu 1500 dev wwan0

Enter the IPv6 details to the network interface in the Linux host system, e.g.:
ip -6 addr add 2a02:aa1:1019:50b6:a5b0:ade:8531:b178/64 dev wwan0
ip -6 link set mtu 1500 dev wwan0

Enable the network interface:
ip link set dev wwan0 up

Apply appropriate network interface routing suitable for your use-case, e.g:
ip route add default dev
ip -6 route add default dev wwan0

You should now have a working cellular network data connection.

Test it e.g. by sending ping requests over the interface:
ping -I wwan0 8.8.8.8 -c 4
PING 8.8.8.8 (8.8.8.8) from 2.67.32.120 wwan0: 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=57 time=38.5 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=57 time=36.4 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=57 time=43.5 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=57 time=41.5 ms

--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3006ms
rtt min/avg/max/mdev = 36.374/39.975/43.500/2.728 ms

ping -6 -I wwan0 2600:: -c 4
PING 2600::(2600::) from 2a02:aa1:1019:50b6:e59e:4d4a:e778:f24e wwan0: 56 data bytes
64 bytes from 2600::: icmp_seq=1 ttl=52 time=156 ms
64 bytes from 2600::: icmp_seq=2 ttl=52 time=171 ms
64 bytes from 2600::: icmp_seq=3 ttl=52 time=169 ms
64 bytes from 2600::: icmp_seq=4 ttl=52 time=167 ms

--- 2600:: ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3006ms
rtt min/avg/max/mdev = 156.153/165.508/170.577/5.576 ms

To stop the cellular data network connection use mbimcli disconnect command.
Use the Session ID from the previous mbimcli command reply in --no-open=## attribute, but do not include the --no-close attribute, doing so closes the session afterwards.
mbimcli -p -d /dev/cdc-wdm0 --disconnect --no-open=##

Bring down the interface:
ip link set dev wwan0 down

Clear any remaining IP address and routes:
ip -4 -6 address flush dev wwan0
ip -4 -6 route flush dev wwan0

It is up to the host application to manage and poll the connection state of the cellular module.
E.g. if the connection is lost temporarily due to no network coverage in the current location, the host application should tear down and re-establish the data connection when cellular module is registered in network again.

If the data connection fails for some reason several times, ensure that the connect retry attempts do not take place continuously without some extended delays in-between.
Depending on the cellular network operator, they can enforce lock-out on your subscription/device for certain time periods in order to protect the network from being flooded by requests.

Question

How to use NetworkManager and ModemManager in Linux to automatically establish a cellular data connection and configure IP details?

Solution

Using NetworkManager and ModemManager in Linux to automatically establish a connection and configure IP details

In this FAQ we will show how to set up NetworkManager to automatically configure, establish the cellular data connection in your system.

NetworkManager and ModemManager are open source tool for Linux to manage several types of networks and interfaces such as ethernet, wifi, etc. It can also manage cellular WWAN interfaces through the ModemManager tool.
It is hosted by the Freedesktop.org community and driven by Aleksander Morgado and other contributors. please visit https://wiki.gnome.org/Projects/NetworkManager and https://www.freedesktop.org/wiki/Software/ModemManager/ for latest information, source code, API reference manuals, debugging tips, contribution, mailing list etc.

ModemManager is capable of communicating over several types of device control channels such as QMI/RMNET, MBIM, MODEM / AT command etc. But support for vendor proprietary or out-of-kernel drivers are none or very limited. Such drivers are gobinet, simcom_wwan and other drivers provided by the vendors directly.

Many Linux distributions have NetworkManager and ModemManager pre-installed or they can typically easily be installed through the systems package manager.
In Ubuntu for example apt can install it for you by command if not already installed:
apt install network-manager

Check with commands below that you have both tools installed in system and their versions.
NetworkManager -V
ModemManager -V

ModemManager (and NetworkManager) are continuously developed for better compatibility with the cellular devices, therefore it is recommend to use a recent version of the tools and in case of problem situations, evaluate the latest versions from source and check the mailing list archives for possible discussions on the problem experienced.

Keep in mind that NetworkManager and ModemManager projects are not directly developed or driven by the cellular device vendors and the compatibility with the device you aim to use can be limited. Some vendors contribute with code to make their devices fully compatible, while others don't. Many cellular devices can be set to expose standardized types of USB network interface and control channel such as MBIM interface by USB-IF or the Qualcomm proprietary interface QMI that ModemManager will try to identify, and often manage to work successfully with but there are exceptions also.

Both NetworkManager and ModemManager have command line interfaces (nmcli and mmcli respectively) where you can interact with the management tools.

Relate to the following FAQ if you want more details for using ModemManager only to configure and control the cellular device but manually establish, maintain the connection and network interface IP address details.
How-to guide: control and set up a data connection in Linux using ModemManager as connection manager?

Have ModemManager list all the cellular device it has detected. Here we use the Alcatel IK41 series with MBIM interface in this example:
mmcli --list-modems
/org/freedesktop/ModemManager1/Modem/0 [Alcatel] Mobilebroadband

General details and status of them modem can be listed with "--modem" option.
mmcli --modem=0
-----------------------------
General | dbus path: /org/freedesktop/ModemManager1/Modem/0
| device id: 998e478c5b14c75e16bffe6abaacabef22fb2f5b
-----------------------------
Hardware | manufacturer: Alcatel
| model: Mobilebroadband
| firmware revision: MPSS.JO.2.0.2.c1.7-00004-9607_
| carrier config: default
| h/w revision: 0
| supported: gsm-umts, lte
| current: gsm-umts, lte
| equipment id:
-----------------------------
System | device: /sys/devices/pci0000:00/0000:00:14.0/usb3/3-1
| drivers: option1, cdc_mbim
| plugin: Generic
| primary port: cdc-wdm0
| ports: cdc-wdm0 (mbim), ttyUSB0 (at), ttyUSB2 (at), wwan0 (net),
| ttyUSB1 (qcdm)
-----------------------------
Status | lock: sim-pin
| unlock retries: sim-pin (3)
| state: locked
| power state: on
| signal quality: 0% (cached)
-----------------------------
Modes | supported: allowed: 2g; preferred: none
| allowed: 3g; preferred: none
| allowed: 4g; preferred: none
| allowed: 2g, 3g; preferred: 3g
| allowed: 2g, 3g; preferred: 2g
| allowed: 2g, 4g; preferred: 4g
| allowed: 2g, 4g; preferred: 2g
| allowed: 3g, 4g; preferred: 3g
| allowed: 3g, 4g; preferred: 4g
| allowed: 2g, 3g, 4g; preferred: 4g
| allowed: 2g, 3g, 4g; preferred: 3g
| allowed: 2g, 3g, 4g; preferred: 2g
| current: allowed: 2g, 3g, 4g; preferred: 2g
-----------------------------
Bands | supported: egsm, dcs, pcs, g850, utran-1, utran-8, eutran-1, eutran-3,
| eutran-7, eutran-8, eutran-20, eutran-28
| current: egsm, dcs, pcs, g850, utran-1, utran-8, eutran-1, eutran-3,
| eutran-7, eutran-8, eutran-20, eutran-28
-----------------------------
IP | supported: ipv4, ipv6, ipv4v6
-----------------------------
SIM | dbus path: /org/freedesktop/ModemManager1/SIM/0

Check that the cellular device is managed by NetworkManager by not having state "unmanaged" listed for it.
nmcli device status
DEVICE TYPE STATE CONNECTION
cdc-wdm0 gsm disconnected --
enp3s0 ethernet unmanaged --
lo loopback unmanaged --

Now you should create a connection profile in NetworkManager for your specific network carrier and SIM card with the "nmcli connection add" command:
For example:
nmcli connection add type gsm ifname '*' con-name '3-sweden' apn 'data.tre.se' connection.autoconnect yes gsm.pin 0000

- type is gsm for all typical cellular connections unless it is of cdma type.
- ifname is the control interface name, in this case cdc-wdm0, wildcard can be used also to have it autoselect.
- con-name is the profile name you want to give it.
- apn is provided by your network carrier and tells the modem what attach point it should use for the data connection.
- connection.autoconnect set to yes will make NetworkManager always try to auto connect and maintain this profile connection.
- gsm.pin lets you provide a pin code for the SIM card, that NetworkManager will try to use if PIN check is enabled for SIM card.

There are several additional commands and attributes available such as username and password settings for the APNs etc. Refer to the NetworkManager help and manual pages for full details on the commands.

If successful you should receive a reply similar to this one:
Connection '3-sweden' (cad6fcbf-2cb1-4796-b7e6-67b9f9635aef) successfully added.

You can check the status now by command:
nmcli device status
DEVICE TYPE STATE CONNECTION
cdc-wdm0 gsm connected 3-sweden
enp3s0 ethernet unmanaged --
lo loopback unmanaged --

Where connected should be listed as state if the connection establishment was successful.

If the connection is not successful or you want more details about the device and connection you can check commands:

You can list the current status with command:
nmcli radio
WIFI-HW WIFI WWAN-HW WWAN
enabled enabled enabled enabled

nmcli device show cdc-wdm
GENERAL.DEVICE: cdc-wdm0
GENERAL.TYPE: gsm
GENERAL.HWADDR: (unknown)
GENERAL.MTU: 1500
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: 3-sweden
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/18
IP4.ADDRESS[1]: 2.68.73.130/30
IP4.GATEWAY: 2.68.73.129
IP4.ROUTE[1]: dst = 2.68.73.128/30, nh = 0.0.0.0, mt = 700
IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 2.68.73.129, mt = 700
IP4.DNS[1]: 80.251.201.177
IP4.DNS[2]: 80.251.201.178
IP6.ADDRESS[1]: 2a02:aa1:1017:6d11:1060:3dff:feac:e92f/64
IP6.ADDRESS[2]: 2a02:aa1:1017:6d11:6474:7254:7b72:eb09/64
IP6.GATEWAY: 2a02:aa1:1017:6d11:21e6:9049:6cfb:8ac3
IP6.ROUTE[1]: dst = ff00::/8, nh = ::, mt = 256, table=255
IP6.ROUTE[2]: dst = 2a02:aa1:1017:6d11::/64, nh = ::, mt = 700
IP6.ROUTE[3]: dst = ::/0, nh = fe80::21e6:9049:6cfb:8ac3, mt = 1024
IP6.ROUTE[4]: dst = 2a02:aa1:1017:6d11::/64, nh = ::, mt = 256
IP6.ROUTE[5]: dst = ::/0, nh = 2a02:aa1:1017:6d11:21e6:9049:6cfb:8ac3, mt = 700
IP6.DNS[1]: 2a02:aa0::55
IP6.DNS[2]: 2a02:aa0::56

nmcli connection show
NAME UUID TYPE DEVICE
3-sweden e946017f-2e9c-477b-89ad-4c31e7331d65 gsm cdc-wdm0

Ifconfig should now show the related IP address details already set to the network interface by NetworkManager:
ifconfig
wwan0: flags=4291 mtu 1500
inet 2.68.73.130 netmask 255.255.255.252 broadcast 2.68.73.131
inet6 2a02:aa1:1017:6d11:6474:7254:7b72:eb09 prefixlen 64 scopeid 0x0
inet6 2a02:aa1:1017:6d11:1060:3dff:feac:e92f prefixlen 64 scopeid 0x0
ether 12:60:3d:ac:e9:2f txqueuelen 1000 (Ethernet)
RX packets 186 bytes 10886 (10.8 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 5 bytes 480 (480.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

You can now for example test the connection over the network interface by sending ping requests.
Testing IPV4 connection:
ping -4 -I wwan0 8.8.8.8
PING 8.8.8.8 (8.8.8.8) from 2.68.73.130 wwan0: 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=118 time=55.8 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=118 time=45.4 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=118 time=42.9 ms
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 42.918/48.053/55.845/5.601 ms

Testing IPV6 connection: (if your cellular device, network subscription and APN supports it)
ping -6 -I wwan0 2600::
PING 2600::(2600::) from 2a02:aa1:1017:6d11:1060:3dff:feac:e92f wwan0: 56 data bytes
64 bytes from 2600::: icmp_seq=1 ttl=46 time=172 ms
64 bytes from 2600::: icmp_seq=2 ttl=46 time=171 ms
64 bytes from 2600::: icmp_seq=3 ttl=46 time=169 ms
64 bytes from 2600::: icmp_seq=4 ttl=46 time=168 ms
--- 2600:: ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 167.921/170.037/172.272/1.651 ms

The connection is successful and automatic reconnect is working when testing to unplug and plug in the device again.
For additional configurations, commands and available attributes, please relate to the manual pages for NetworkManager and ModemManager.

Troubleshooting logs:
NetworkManager and ModemManager write log messages to the Linux syslog file /var/log/syslog.
In case of problems with establishing a cellular data connection, please copy the logfile after the problem have appeared and include it in a Techship technical support ticket.

In some situations more detailed debug logs are needed, these can be acquired by changing the log levels for NetworkManager and ModemManager and run them manually.

To capture debug logs, please first disable and stop the normal services:
systemctl stop NetworkManager ModemManager
systemctl disable NetworkManager ModemManager

Run them manually in background with debug level set:
/usr/sbin/ModemManager --log-level=DEBUG &> /dev/null &
/usr/sbin/NetworkManager --log-level=DEBUG &

Reproduce the cellular data connection problem.
Once completed, kill the processes:
killall -TERM NetworkManager ModemManager

Copy the relate messages in syslog to a mm-nm-sys-debug.log logfile:
grep -E 'ModemManager|NetworkManager|systemd|dbus-daemon|dhclient' /var/log/syslog > mm-nm-sys-debug.log

Activate and start the services again:
systemctl enable NetworkManager ModemManager
systemctl start NetworkManager ModemManager

Include the mm-nm-sys-debug.log in a technical support ticket at Techship.com where you describe the issue in details and include other relevant information also such as kernel version, ModemManager and NetworkManager versions, dmesg log etc.

Related products
Huawei ME909u-521 - EU/ASIA
Huawei ME909u-521 Mini PCI Express - EU/ASIA
Huawei ME909u-523D Mini PCI Express - US - AT&T
Huawei MS2131i-8 USB-stick
Huawei ME909s-821 mPCIe
Huawei ME909s-821 LGA
Huawei ME909s-120 mPCIe EU
Huawei ME909s-120 LGA EU
SimCom SIM7100E LTE SMT EU
SIMCom SIM7100A LTE SMT US
SimCom SIM7100E LTE mPCIe EU
SimCom SIM7100A LTE mPCIe US
SimCom SIM7100C LTE mPCIe China
SimCom SIM7230 LTE mPCIe EU
SimCom SIM7100E LTE mPCIe SIM
SIMCom SIM7500A LTE SMT US
SIMCom SIM7500E LTE SMT EU
SIMCom SIM7500E LTE mPCIe EU
SIMCom SIM7500SA LTE mPCIe Audio
Telit HE910-D-SIM HSPA+, miniPCIe, SIM card holder
Telit LM940A11 LTE CAT-11, GPS, mPCIe
Telit LE910-EU V2 LTE CAT-4, mPCIe
Telit LE910-SV V2 LTE CAT-4, Verizon, mPCIe
Telit LE910-NA V2 LTE CAT-4, AT T, TM, mPCIe
Telit LE910-AU V2 LTE CAT-4, Telstra, mPCIe
Telit HE910-GL SIM UMTS, miniPCIe, SIM card holder
Telit LE910-NA1 LTE CAT-1 LGA
Telit LE910-EU1 LTE CAT-1 LGA
Telit LE910-SV1 LTE CAT-1 LGA
Telit LE910-EU V2 LTE CAT-4 LGA
Telit LE910-NA V2 LTE CAT-4 LGA
Huawei MS2372h-153 LTE USB Dongle EU
SIMCom SIM7600E-H LTE SMT EU
SIMCom SIM7600E-H LTE CAT-4 mPCIe EU
SIMCom SIM7600E-H LTE CAT-4 mPCIe SIM
Huawei MS2372h-517 LTE USB Dongle US
SIMCom SIM7600A-H LTE CAT-4 mPCIe Audio
Huawei MS2372h-607 LTE USB Dongle Asia
Telit LE910-NA V2 LTE CAT-4, S.SKU, mPCIe
SIMCom SIM7600SA-H LTE CAT-4 mPCIe
Simcom SIM7600JC-H LTE CAT-4 mPCIe
SIMCom SIM7600A-H LTE CAT-4 mPCIe US
SIMCom SIM7600V-H LTE CAT-4 mPCIe Audio Verizon
Fibocom NL668-EAU mPCIe LTE CAT-4
SIMCom SIM7600SA-H LTE CAT-4 mPCIe with SIM holder
SIMCom SIM7600E LTE CAT-1 mPCIe
SIMCom SIM7600SA LTE CAT-1 mPCIe
SIMCom SIM7600E-H LTE CAT 4 -mPCIE with Audio
Fibocom NL678-E mPCIe LTE CAT-6
SIMCom SIM7600A-H LTE CAT-4 mPCIe-SIM
SIMCom SIM7600CE-T LTE CAT-4 mPCIe CN
Sierra Wireless MC-WP7607 LTE CAT-4 mPCIe
Telit LE910C4-NF LTE CAT-4 mPCIe
Telit LE910-NA V2 LTE CAT-4, S.SKU LGA
Telit LE910B1-NA S.SKU LTE Cat-1 LGA
Telit LE910C1-NS LTE CAT-1 Sprint mPCIe
Telit LE910-SVL LTE CAT-1
Telit HE910-GL HSPA+ LGA
SIMCom SIM7906E LTE CAT-6 M.2
SIMCom SIM7906E LTE CAT-6 mPCIe
Telit LE910-SVG LTE CAT-3 LGA
Telit HE910-D HSPA+ LGA
Telit LE910C1-NA LTE CAT-1 AT&T LGA
Telit LE910C1-NS LTE CAT-1 Sprint LGA
Telit LE910-NAG LTE CAT-3 AT&T LGA
Telit LE910-SVG LTE CAT-3 mPCIe
Telit LE910-NVG LTE CAT-3 LGA
SIMCom SIM7600G-H LTE CAT-4 mPCIe
Telit LE910-NA1 S.SKU LTE Cat-1 LGA
Telit LE910-JN1 LTE Cat-1 LGA
Telit LE910C1-AP
Telit LE910C1-EU LTE CAT-1 LGA
Telit LE910B1-NA
Telit LE910B1-SA
Telit LE910-AU V2
Telit LE910-SV V2
Telit LE910B4-NA
Telit LE910C4-NF LTE Cat-4 LGA
Telit LE910-SV1 LTE Cat-1 mPCIe
Telit LE910-EU1 LTE Cat-1 mPCIe
Telit LE910-JN1 LTE Cat-1 mPCIe
Telit LE910-NA1 LTE Cat-1 mPCIe
Telit LE910C1-AP LTE CAT-1 mPCIe
Telit LE910C1-EU LTE CAT-1 mPCIe
Telit LE910C4-EU LTE CAT-4 mPCIe
Telit LE910C4-EU LTE CAT-4 mPCIe SIM
Telit LE910C1-NF S.SKU LTE CAT-1 LGA
Telit LM940A11, HW Rev. 2, LTE CAT-11, GPS, mPCIe
Telit LE910C4-NF LTE CAT-4 mPCIe SIM
SIMCom SIM7912G LTE CAT-12 M.2
Telit LM960A18 LTE CAT-18 mPCIe
Telit LE910C1-EU LTE CAT-1 mPCIe SIM
Telit LE910C1-AP LTE CAT-1 mPCIe SIM
Telit LE910C1-NF LTE CAT-1 mPCIe
Telit LE910C4-AP LTE CAT-4 mPCIe SIM
Telit LE910C4-CN LTE CAT-4 mPCIe
Telit LE910C4-CN LTE CAT-4 mPCIe SIM
SIMCom SIM7600V-H LTE CAT-4 M.2 Verizon
Sierra Wireless EM7411 NAM
Sierra Wireless MC7411 NAM
Sierra Wireless EM7421 EMEA/APAC
Sierra Wireless MC7421 EMEA/APAC
Sierra Wireless EM7431 Japan
Sierra Wireless MC7431 Japan
Huawei MS2372h-158 LTE USB Dongle EU
Huawei MS2372h-518 LTE USB Dongle US
Huawei MS2372h-608 LTE USB Dongle Asia
Huawei ME909s-120p V2 mPCIe
Huawei ME909s-120 V2 LGA
Telit LE910C1-SA CAT-1 LGA
SIMCom SIM7600E LTE CAT-1 SMT
Telit LE910C1-NF S.SKU LTE CAT-1 mPCIe SIM
Sierra Wireless MC-WP7610 LTE CAT-4 mPCIe
SIMCom SIM7600G-H R2 LTE Cat-4 mPCIe
SIMCom SIM7600NA-H LTE Cat-4 mPCIe
Telit LE910C1-LA LTE CAT-1 mPCIe
Telit LE910C4-EU LTE CAT-4 LGA
Sierra Wireless EM7690 LTE CAT-20
Sierra Wireless MC7455 mPCIe
Sierra Wireless MC7430
Sierra Wireless EM7565 M.2
Sierra Wireless EM7430 M.2
Sierra Wireless EM7511 M.2
Telit LE910C1-EUX LTE CAT-1 mPCIe
SIMCom SIM7600G-H R2 LTE CAT-4 SMT
Sierra Wireless, EM7455 M.2
SIMCom SIM7600G R2 LTE CAT-1 SMT
SIMCom SIM7600SA LTE CAT-1 SMT
Alcatel IK41VE1 LTE USB Dongle EU
Alcatel IK41CQ LTE USB Dongle APAC
Alcatel IK41UD LTE USB Dongle LATAM
Alcatel IK41UC LTE USB Dongle NA
Telit LE910C4-LA LTE CAT-4 mPCIe
Telit LE910C4-AP LTE CAT-4 LGA
SIMCom SIM7600G-H R2 LTE CAT-4 M.2
Telit LE910C1-EUX LTE Cat-1 LGA
Telit LE910C1-SAX LTE Cat-1 LGA
Telit LE910C1-SVX LTE Cat-1 LGA
SIMCom SIM7600G-H R2 mPCIe SIM
Telit LE910C4-LA LTE CAT-4 mPCIe w/ Simholder
Telit LE910C1-WWX LTE Cat-1 mPCIe
Telit LE910C4-WWX LTE Cat-4 mPCIe
Telit LE910C1-WWX LTE Cat-1 LGA
Telit LE910C4-WWX LTE Cat-4 LGA

You might also be interested in