FN980MMWW01T310100COO VIETNAM
Supplier number:
Telit FN980m is a 5G M.2 module with fallback on LTE and WCDMA.
Enabling a new generation of 5G state of the art data cards featuring both Sub-6 and mmWave technologies with LTE, WCDMA and GNSS support. This card lay the foundation for businesses worldwide to future-proof IoT, enterprise applications and video while leveraging all 5G's and Gigabit LTE's benefits immediately.
Industrial-grade M.2 form factor is for many high-performance and bandwidth-intensive enterprise and industrial applications for example;
High Power Fixed Wireless access, enterprise routers and gateways, indoor/outdoor CPE, video broadcasting and surveillance. Support for Qualcomm QTM525 and QTM527 mmWave antennas.
Key benefits
• 5G sub-6 FDD and TDD + mmWave support
• Two-in-one mmWave antenna connectors
• Support for SA and NSA operations
• 4G Cat-20 up to 7CA
• Standard M.2 (NGFF) form factor
Also available in sub-6 only version;
11163 - Telit FN980 5G M.2 sub-6
Telit Linux PCIe EP Drivers User Guide
This document describes the QUALCOMM® MSM™ Interface (QMI) architecture and framework. The QMI allows applications on attached Terminal Equipment (TE) devices to access various Services provided by devices based on QUALCOMM’s MSM chipsets and AMSS software.
User Guide for the Telit WHQL Windows 11 Drivers Installer version 11.02.0001 installation
User Guide for the Telit WHQL Windows 10 Drivers Installer version 2.20.0001 installation
This document provides a technical description of AT Command set to manage eUICC
Delta SW Release Notes
This archive contains the Windows 11 WHQL certified Telit module drivers for x64 system platforms.
Microsoft Windows 11
WHQL certified
This archive contains the Windows 11 WHQL certified Telit module drivers for x64 system platforms.
Microsoft Windows 11
WHQL certified
This archive contains the Windows 10 WHQL certified Telit module drivers for both x86 and x64 system platforms.
Microsoft Windows 10
WHQL certified
Firmware update tool archive for Windows systems and Telit FN980 & Telit FN980m modules.
Release Notes version: R7.
Microsoft Windows 10 desktop system
Telit WHQL drivers installed
Windows 10:
Telit Windows host system drivers installed and loaded correctly.
Update using the TFI one-click console update application.
Linux:
Telit kernel driver modules installed according to Telit Linux integration guide.
Telit UXFP firmware update tool compiled in your Linux system build.
Please check the readme file in the archive when upgrading from early engineering firmware versions.
How to configure and save a "User Profile" using AT-commands on selected Telit modems.
Sometimes you might want to store some settings to be automatically loaded on startup, without having to configure your modem or make a script.
Fortunately Telit has made it easy to do this, by creating a "User Profile", and this FAQ will guide you through on how to set this up.
For this example, we'll make some configurations to the GPS settings of the module, but you can choose whichever settings you like.
First, send the AT command:
AT&V0?
You will get a long list with info, but the one I want you to check is the last one:
DEFAULT PROFILE : &Y0=user profile 1
Make note of the "Y0" - This might be different on your setup, but don't worry, we'll change this in the next step.
Send the following AT command:
AT&P0
This sets the modem to a custom user profile. (There are 2 user profiles available, "0" and "1". We are using "0" here.)
Now check that we have updated the profile with the AT command:
AT&V0?
And now it should say at the bottom:
DEFAULT PROFILE : &P0=user profile 1
Great! Now we're editing our user profile, so go ahead and type your settings:
AT$GPSP=1
AT$GPSANTPORT=3
AT$GPSACP
AT$GPSNMUN=1
AT$GPSNMUN=1,1,1,1,1,1,1
AT$GPSSAV
To save these settings, it's not enough to only type "AT$GPSSAV", we need to save some of the settings to our profile!
Type the following AT command to do a "save profile":
AT&W
Now do a reboot with:
AT#REBOOT
And when it's up and running again type:
AT$GPSNMUN?
And it should say:
$GPSNMUN: 1,1,1,1,1,1,1
More info regarding the different modes and settings can be found in the AT Command Guide here.
How do we connect to a 5G NR network?
To be able to connect to a 5G network both the module and SIM card need to have 5G technology support. If you have problems with NSA or SA for a specific band make sure that your module actually supports this as well. Read through your product’s hardware guide which can be found on the product’s page.
Support for 5G NSA/SA on a specific band can also be firmware dependent. Make sure that you have the latest firmware installed on your module.
This FAQ includes many different AT commands, both 3GPP standard and vendor specific commands, so it’s recommended to have your module’s AT guide with you while troubleshooting.
Perform a network scan with AT+COPS=? and check if your module can find any 5G networks. You can see if it’s a 5G network by looking at the last value in the quadruple. Depending on which technology you use this should be set to:
11 - NR_5GCN (NR connected to a 5G core Network)
12 - NGRAN (NG-RAN access technology)
13 - EUTRA_NR (Dual connectivity of LTE with NR)
If your module can find the 5G network, check your current network configuration with the read command AT+COPS? to make sure it’s set to the correct value. Similarly you can check the NR5G network registration status with the following AT command sequence (note this command only applies for 5G SA) :
AT+C5GREG=2
AT+C5GREG?
You can select the Wireless Data Service with AT+WS46:
36 - NG-RAN only
37 - NG-RAN and E-UTRAN
38 - NG-RAN, E-UTRAN and UTRAN
40 - NG-RAN and UTRAN
Telit 5G related AT commands:
Enable your 5G band with AT#BND
To enable/disable only the 5G bands AT#5GCTL can be used
Check that you're connected to a 5G band with AT#SERVINFO or AT#RFSTS
Check that your network supports 5G NSA with AT#5GLINKSTAT?
FN980 does not have SA enabled by default. To enable it run the following commands:
AT#FWSWITCH=0
AT#BND=(Fill in you bands here, see AT guide)
AT#REBOOT
If you are using a Windows PC change the USBCFG to option 2
AT#USBCFG=2
SIMCom 5G related AT commands:
Enable both SA and NSA with AT+CSYSSEL=”nr5g_disable”,0
Disable SA with AT+CSYSSEL="nr5g_disable",1
Disable NSA with AT+CSYSSEL=”nr5g_disable”,2
Configure 5G NSA bands with AT+CSYSSEL=”nsa_nr5g_band”
Configure 5G SA bands with AT+CSYSSEL=”nr5g_band”
Set your preferred mode with AT+CNMP
55 - WCDMA+LTE+NR5G
71 - NR5G
109 - LTE+NR5G
Sierra Wireless 5G related AT commands:
Display your 5GNR information with AT!NRINFO?
Enable/disable ENDC (NSA) and SA with AT!RTCA (note that these settings are not persistent across power cycles)
AT!GSTATUS not responding with NR5G fields and looks similar to:
NR5G RSRP (dBm): --- NR5G RSRQ (dB): ---
NR5G SINR (dB): —
The response details are dependent on the network providing the necessary information to the modem. To be sure you get these values the modem has to be in a data call in SA mode
Fibocom 5G related AT commands:
Select RAT with AT+GTRAT or RAT and Bands with AT+GTACT
14 - NR-RAN
16 - NR-RAN/WCDMA
17 - NR-RAN/LTE
20 - NR-RAN/WCDMA/LT
For more general information about 5G see FAQ “What is 5G NR?”.
If you are still encountering problems connecting to a 5G network you can create a support ticket: https://techship.com/page/support/technical_support/. Please describe your problem and set up thoroughly and include the logs from this troubleshooting.
Which antenna ports should I connect antennas to on the LTE or 5G module?
It is important to understand the functionality of the different antenna ports on the cellular module when deciding which ports to use. There is a risk of underutilizing the module by not connecting antennas to the right ports. This guide aims to explain some general terms and abbreviations used to label and describe antenna ports and their different functionalities.
Some antenna port labels that are commonly used on cellular modules are listed below:
MAIN – Primary transmit and receive antenna port. Required for basic functionality.
DIV – Diversity receive port. This port is used to receive the same signal as the primary port, but at a different spatial point. By receiving the same signal at two different spatial points, the module can mitigate destructive effects that might be present on one of the different spatial points. The diversity receive functionality is especially useful in urban environments where the interference environments may be radically different between two spatial points. It is always recommended to use the diversity receive port as this functionality improves the quality and reliability of the overall link.
GNSS – GNSS receive port. GNSS stands for Global Navigation Satellite System, examples of such systems are GPS, Galileo, GLONASS and BeiDou. The available systems may differ between different modules. To see what systems are available for a specific module, please consult the modules hardware documentation. As this antenna port is used for positioning applications, a suitable GNSS antenna needs to be connected to this port in order to utilize this functionality.
MIMO – MIMO port. MIMO stands for Multiple Input Multiple Output and refers to the amount of antennas used at each side of the link. For example, 4x4 DL MIMO means that the base station and the module each use 4 antennas for the modules downlink. Usually, the MIMO label is used to denote antenna ports that are used for spatial multiplexing which is a technique used for increasing the bitrate. This is achieved by splitting the signal into different streams that are transmitted and received on spatially separated antennas on each side of the link. For the majority of cellular modules, spatial multiplexing is only available for the module's downlink.
AUX – Auxiliary antenna port. The available functions on this port may differ between modules. Examples of functionalities that can be present on this port are diversity receive, DL-MIMO and GNSS. Please consult the module's hardware documentation to see which functionalities are present on this port.
Some cellular modules have numeric, non-descriptive labels on their antenna ports. These modules can have different functionalities for different frequency intervals/bands, on one single antenna port. For these modules, consult the hardware documentation to find what functionalities are present for which frequency intervals/bands one the different antenna ports. Please note that antenna ports with transmit functionality for certain frequency bands need to have a antenna connected in order to utilize these frequency bands.
If you have further inquiries regarding antenna ports on cellular modules, please create a Support Ticket by visiting the following link: https://techship.com/support/new/
How to collect initial diagnostics data and logs from Telit 5G cellular modules necessary when creating a Techship technical support ticket?
In order to troubleshoot and solve a technical problem, we ask you to please provide information about your host system and logs from the related Telit 5G module when creating a technical support ticket.
This allows us to get a better understanding of what could relate to the experienced behaviour.
Please provide a detailed problem description and in what situations the problem is present or how it can be reproduced. Please also attach pictures showing the module assembled in your host device with RF interface cables connected between cellular module and the casing and provide datasheets for the antennas used if the problem appears to be a RF related problem such as no network registrations seen, or data throughputs not meeting your expectations etc.
Describe the host system:
-Hardware (system board, peripherals...)
-Operating system and detailed versions (E.g. Windows, Linux release, kernel version...)
-Drivers and driver versions
Identify the precise details of cellular module found on label (if not visible in attached picture)
-Model
-P/N code
-Serial / IMEI number
If your system is Linux based, please capture the terminal logs bellow:
uname -a
lsusb
lsusb -t
usb-devices
ifconfig -a
ls -l /dev/serial/by-id
ls -l /sys/bus/usb-serial/devices
dmesg
The log outputs from AT commands below can be collected from the cellular module by accessing the USB enumerated serial interfaces that accept AT commands. These are typically found as Modem or Serial type of interfaces in Window device manager, check their related COM port numbers from device manager and use a terminal software like Teraterm, Sscom or similar to communicate with the cellular module using AT commands. typically the default 115200 bitrate and 8N1 parity settings works well for collecting these log details.
In Linux systems the USB serial ports are typically found in path /dev/ and named ttyUSB0, ttyUSB1, ttyUSB2, not all serial ports accept AT commands so you might have to check which of them are the correct ones. Please note that if you have Modemmanager process running in your Linux system, it likely already communicate on the USB serial interfaces so you should stop the Modemmanager service prior to attempting to collect the diagnostic logs. Minicom or other terminal software can be used to communicate with the cellular module with AT commands.
Start by sending an plain AT command followed by enter key to confirm that you get a OK reply and knowing that the AT communication is working.
Now start sending the following AT commands to the module and capture the output into a log text file and include them when creating the technical support ticket at Techship.com. If possible, provide the logs with a SIM card inserted and PIN unlocked, to allow the module to be in normal operational mode and registered in network.
Test that you have a working AT interface opened:
AT
Enabled AT command echo:
ATE1
Basic module info:
AT#CGMI
AT#CGMF
Display V.25TER configurations
AT&V
Detailed module firmware version and active carrier config info:
AT#SWPKGV
AT#FWSWITCH?
AT#FIRMWARE
AT#FWSWITCH
AT#FWAUTOSIM?
Verbose error reporting:
AT+CMEE=2
Hardware & firmware version:
AT#HWREV
AT#CGMR
Serial number / IMEI:
AT#CGSN
Host interface configurations:
AT#USBCFG?
AT#USBSWITCH?
AT#USBPCISWITCH?
AT#PCIERCMODE?
Operational mode:
AT+CFUN?
SIM card interface, SIM card detect signal:
AT#HSEN?
AT#SIMDET?
AT#SIMINCFG
Pin status:
AT+CPIN?
Cellular RF path and MIMO configurations:
AT#RXTOGGLE?
AT#NRRXTOGGLE?
AT#RXDIV?
AT#LRXDIV?
AT#4RXDIS?
AT#DPT?
Active technologies, RF bands, and scan orders:
AT#5GCTL?
AT#5GCTL=?
AT#BND?
AT#BND=?
AT+CEMODE?
AT+CEUS?
AT#ENS?
AT+WS46?
AT#NETWORKCFG?
AT#CACTL?
Request UE network system info:
AT#5GLINKSTAT?
AT#SERVINFO
AT#RFSTS
AT#LAPS
AT#MONI=0
AT#ENWCAUSE?
AT#CEERNET
AT#NRDS
AT#CAINFO?
AT#LTEDS
AT#MIMOSTS
List network operator info:
AT+COPS?
AT+COPS=?
Network survey:
AT#CSURV
Network registration status:
AT+CREG=2
AT+CREG?
Network GPRS registration status:
AT+CGREG=2
AT+CGREG?
Network (4G/LTE) EPS registration status:
AT+CEREG=2
AT+CEREG?
Network 5G SA
AT+C5GREG=2
AT+C5GREG?
IMS registration state:
AT+CIREG=2
AT+CIREG?
Signal strength:
AT+CSQ
AT+CESQ
List APN details/PDP profiles:
AT+CGDCONT?
AT#PDPAUTH?
Packet domain attach status:
AT+CGATT?
PDP profiles attach status:
AT+CGACT?
Show PDP IP address:
AT+CGPADDR
AT+CGCONTRDP
Device temperature:
AT#TEMPSENS=2
Supply voltage:
AT#CBC
Last reset reason:
AT#RESETINFO
List supported LTE carrier aggregation for active configuration:
AT#LCFC?
Customized features activation status:
AT#GETCUSTFEAT=?
AT#GETCUSTFEAT="GPSSEL"
The support ticket can be created after login at Techship.com: https://techship.com/technical_support/
How do we detect an inserted SIM card using the FN980 module?
Please note that we do not recommend generic adapters for 5G modules as there might be pin conflicts. This can, in a worst case scenario, damage the module and/or the connected USB port. Therefore, always ensure that the adapter is pin compatible with the 5G module.
Firstly, determine which SIM interface you are using. The FN980 is equipped with 2 SIM interfaces, one for a physical SIM and one for eSIM (please note that eSIM is only available on specific SKUs) where one interface is active and the other one is in standby. The SIM interface that you want to use is selected by the following command:
AT#SIMDET=y
Where y is either 0 or 1. Here, 0 represents SIM interface 1 (physical SIM) and 1 represents SIM interface 2 (eSIM). Please note that further configuration is needed in order to use SIM interface 2. To use SIM interface 2, please refer to the necessary commands in the AT Command reference guide.
One common issue when trying to detect an inserted SIM card is that the adapter with the SIM card holder doesn't support the SIM hot-swap feature. This feature can be turned off in order to detect the SIM, if this is the underlaying issue. The hot-swap feature can be disabled by using the following command:
AT#HSEN=0,y
Where y is either 0 or 1. Here, 0 represents SIM interface 1 and 1 represents SIM interface 2.
Another common issue is the polarity of the SIMIN pin. The polarity of this pin is dependent on the SIM slot manufacturer and sometimes differ depending on the SIM card size the slot is designed for. Usually, an inserted SIM card sets the SIMIN pin LOW when the SIM card size is normal. Similarly, an inserted SIM card usually sets the SIMIN pin HIGH when the SIM card size is micro. However, there are some exceptions so is is usually best to test both. The polarity of the SIMIN pin can be changed with the following command:
AT#SIMINCFG=x,y
Where y is either 1 or 2. Here, 1 represents SIM interface 1 and 2 represents SIM interface 2.
Similarly, x is either 0 or 1. 0 means that the SIMIN pin should be LOW when a SIM card is inserted and 1 means that the SIMIN pin should be HIGH when a SIM card is inserted.
A good way to determine if the module correctly detect the SIM card it to request the IMSI (International mobile subscriber identity) stored in the SIM card. The IMSI will only be reported if the module can read the SIM card which makes it a great method to determine if the module can read the SIM card. The IMSI can be requested by the following command:
AT+CIMI
Here, an error means that the SIM card can't be accessed and a string of numbers means that the SIM card is correctly read by the module.
Make sure that the module is power cycled between the different attempts and check if SIM card is detected by requesting the IMSI for each attempt!
Please refer to the FN980 AT Command Reference Guide for more information about these commands. This document can be found on the product's page, under the Technical Documentation tab, or by accessing the following link: https://techship.com/downloads/telit-fn980-family-at-commands-guide
Example on how to establish a data connection with Telit FN980 series in Linux using MBIM mode over USB interface
Example on how to establish a data connection with Telit FN980 series in Linux using MBIM network interface over USB
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 Telit FN980 series modules when connected over USB to the host system.
The cdc_mbim kernel driver module and libmbim library is used.
Ensure that you have the Telit module in MBIM usb mode and cdc_mbim network kernel driver and option usb-serial driver properly loaded to the module interfaces.
It can be checked e.g. through dmesg, usb-devices or lsusb -t commands.
usb-devices
T: Bus=02 Lev=01 Prnt=01 Port=02 Cnt=01 Dev#= 10 Spd=5000 MxCh= 0
D: Ver= 3.20 Cls=ef(misc ) Sub=02 Prot=01 MxPS= 9 #Cfgs= 1
P: Vendor=1bc7 ProdID=1051 Rev=04.14
S: Manufacturer=Telit Wireless Solutions
S: Product=FN980m
S: SerialNumber=
C: #Ifs= 8 Cfg#= 1 Atr=a0 MxPwr=896mA
I: If#=0x0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=techship_serial
I: If#=0x1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=usbfs
I: If#=0x2 Alt= 0 #EPs= 1 Cls=02(commc) Sub=0e Prot=00 Driver=cdc_mbim
I: If#=0x3 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
I: If#=0x4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=techship_serial
I: If#=0x5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=techship_serial
I: If#=0x6 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=techship_serial
I: If#=0x7 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=techship_serial
If the option serial drivers are not correctly loaded in your current system build and kernel version, please refer to Telit Linux integration guide for details on the integration.
You can try compile our modified option kernel driver module techship_serial from git link below and load them into your system build instead also.
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 device details and capabilities:
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 --no-open=##
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.68.254.241/30 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:1011:b001:5fc:6a67:296c:8852/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.70.103.209 wwan0: 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=119 time=224 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=119 time=42.7 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=119 time=30.7 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=119 time=38.4 ms
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3006ms
rtt min/avg/max/mdev = 30.657/84.031/224.373/81.140 ms
ping -6 -I wwan0 2600:: -c 4
PING 2600::(2600::) from 2a02:aa1:1021:b9d1:8847:afd4:e35a:aa29 wwan0: 56 data bytes
64 bytes from 2600::: icmp_seq=1 ttl=52 time=173 ms
64 bytes from 2600::: icmp_seq=2 ttl=52 time=153 ms
64 bytes from 2600::: icmp_seq=3 ttl=52 time=152 ms
64 bytes from 2600::: icmp_seq=4 ttl=52 time=208 ms
--- 2600:: ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 152.108/171.523/208.073/22.623 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.
Example on how to establish a data connection with Telit FN980 series in Linux using QMI Rmnet and USB interface.
Example on how to establish a data connection with Telit FN980 series in Linux using QMI Rmnet and USB interface
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.
Early devices and engineering samples came with a older Qualcomm baseline firmware versions and need to be update in Windows systems using the Telit TFI updater tool and cannot be updated with Telit XFP firmware update procedure.
This guide specifically only describes how to establish the QMUX data connection part of the QMI Rmnet USB interface for the Telit FN980 module.
The qmi_wwan kernel driver module and libqmi library is used.
Ensure that you have the module in QMI Rmnet usb mode and qmi_wwan network kernel driver and option usb-serial driver properly loaded to the module interfaces.
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#= 4 Spd=5000 MxCh= 0
D: Ver= 3.20 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs= 1
P: Vendor=1bc7 ProdID=1050 Rev=04.14
S: Manufacturer=Telit Wireless Solutions
S: Product=FN980m
S: SerialNumber=
C: #Ifs= 7 Cfg#= 1 Atr=80 MxPwr=896mA
I: If#=0x0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=techship_serial
I: If#=0x1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=usbfs
I: If#=0x2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
I: If#=0x3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=techship_serial
I: If#=0x4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=techship_serial
I: If#=0x5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=techship_serial
I: If#=0x6 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=techship_serial
If the qmi_wwan and option drivers do not get correctly loaded in your current system build and kernel version, please refer to the manufacturer Linux integration guide.
Alternatively you can try compile our modified out-of-kernel driver module variants: techship_qmi_wwan and techship_serial and load them in your system.
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/src/master/
Once you have drivers correctly loaded, start by disabling the related qmi_wwan network interface name:
ip link set dev wwan0 down
Ensure RAW IP configuration is enabled:
sh -c "echo 'Y' > /sys/class/net/wwan0/qmi/raw_ip"
(observe the path name including the network interface name, update to match the interface name used in your system)
Create a virtual mux interface for the qmi network interface:
sh -c "echo '1' > /sys/class/net/wwan0/qmi/add_mux"
(observe the path name including the network interface name, update to match the interface name used in your system)
Configure the data format on module side:
qmicli -p -d /dev/cdc-wdm0 --device-open-qmi --wda-set-data-format=link-layer-protocol=raw-ip,ul-protocol=qmap,dl-protocol=qmap,dl-max-datagrams=32,dl-datagram-max-size=31744,ep-type=hsusb,ep-iface-number=2
Here in-between you should perform necessary operations to the module prior to having the cellular network data connection established.
Things like SIM state and PIN code entry, module device registration in the cellular network, APN profile management etc.
Once module is ready and registered in cellular network we can proceed to configure and set up the data connection.
Bind the virtual mux network interface to the CID that gets opened, the CID id is given back in the reply:
qmicli -p -d /dev/cdc-wdm0 --device-open-qmi --wds-bind-mux-data-port=mux-id=1,ep-iface-number=2 --client-no-release-cid
It is important to use the --client-no-release-cid attribute here to keep the tunnel open all the time while data connection is established.
If the CID is closed, the data connection on the qmux virtual network interface will close also.
Start the cellular network data connection in the normal way, include the --client-no-release-cid attribute and use the already open CID ID you got back from previous command reply. E.g. like this:
qmicli -p -d /dev/cdc-wdm0 --device-open-qmi --wds-start-network=apn=data.tre.se,ip-type=4 --client-no-release-cid --client-cid=##
Store the packet data handle id from the command reply, to use when stopping network.
Request the cellular connections IP details from the module:
qmicli -p -d /dev/cdc-wdm0 --device-open-qmi --wds-get-current-settings --client-no-release-cid --client-cid=##
Bring up the main QMI RMNET network interface:
ip link set dev wwan0 up
Apply the IP address to the qmux interface that you acquired through qmicli --wds-get-current-settings above, e.g.:
ip addr add 2.64.116.145 dev qmimux0
Apply the given MTU size to the qmux interface that you acquired through qmicli --wds-get-current-settings above, e.g.:
ip link set mtu 1500 dev qmimux0
Bring up the QMUX virtual network interface:
ip link set dev qmimux0 up
You should now have a working cellular network data connection.
Test it e.g. by sending a ping over the qmux interface:
ping -I qmimux0 8.8.8.8 -c 4
PING 8.8.8.8 (8.8.8.8) from 2.68.152.91 qmimux0: 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=57 time=31.5 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=57 time=29.8 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=57 time=36.7 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=57 time=36.0 ms
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 8ms
rtt min/avg/max/mdev = 29.821/33.494/36.690/2.911 ms
Apply appropriate network interface routing suitable for your use-case, e.g:
ip route add default dev qmimux0
the qmicli --wds-get-current-settings give back DNS server addresses also if they are defined by the cellular network.
Depending on how your Linux distribution handle DNS servers you can add them or instead use a public DNS server.
To stop the cellular data network connection:
Bring down the virtual mux interface:
ip link set qmimux0 down
Flush the ip addresses:
ip -4 -6 address flush dev qmimux0
Use the --wds-stop-network attribute to stop the data connection in module, include the packet data handle and the client ID from when establishing the connection.
qmicli -p -d /dev/cdc-wdm0 --device-open-qmi --wds-stop-network=########## --client-cid=##
Note: by not adding the --client-no-release-cid attribute this client ID will be closed after command execution.
It is up to the host application to manage and poll the connection state of the cellular module.
E.g. it 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.