1S40999 - IK41VE1-AALNL1
Supplier number:The Alcatel IK41 LTE USB Dongle is an IOT-specified product that provides you with a secure and reliable high-speed internet connection. It allows integration into several operating systems including Linux via a USB type A connector. Internal antennas are available but it also has two external antenna ports supporting MIMO. The IK41 can further be controlled via AT-commands to be customized for your application - A true IOT-workhorse if you want a faster and easier integration than an integrated module.
CE RED Declaration of Conformity (DoC) for Alcatel IK41VE1
UKCA Declaration of Conformity (DoC) for Alcatel IK41VE1
Alcatel TPST flash tool for firmware flashing IK41 series dongles.
Windows OS
Alcatel dongle
Windows drivers for Alcatel IK41 series
Windows
This archive contains the Alcatel IK41 series firmware V15 and related release notes.
How-to guide: How can we control, configure and establish a simple data connection for a cellular module in Linux systems using the open source ModemManager tool for modem control and connection management.
ModemManager is a open source tool for Linux that can be used to communicate with cellular devices for configuration, status check, connection triggering etc. It is capable of communicate over several types of device control channels such as QMI/RMNET, MBIM, MODEM / AT command etc.
It is hosted by the Freedesktop.org community and driven by Aleksander Morgado and other contributors, please visit https://www.freedesktop.org/wiki/Software/ModemManager/ for latest information, source code, API reference manuals, debugging tips, contribution, mailing list etc.
Keep in mind that ModemManager is not directly developed or driven by cellular device vendors and the compatibility cannot be guaranteed for the specific device you aim to use. Some vendors contribute with code to make their devices fully compatible, while others don't. However 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.
Before continuing with ModemManager, a good thing to ensure is that you have common Linux driver modules available in your kernel build.
You can compare your own systems kernel config with the ones listed in the following FAQ:
Common Linux kernel modules and configs necessary for communicating with cellular modules over USB interface
Selections of these are commonly used by cellular devices and need to be available in order to have device drivers correctly loaded when devices are detected.
Start by installing ModemManager and its dependencies to your Linux system.
You can build it from source code release tarball found at freedesktop.org (install instructions included in the archive)
If you have a package manager in your Linux distribution, it can usually be installed through them also.
E.g. on Ubuntu using apt to install it and related dependencies:
apt install modemmanager libmbim-utils libqmi-utils
Keep in mind that Linux distributions sometimes rely on fairly old releases in their repositories and the development of ModemManager, libqmi and libmbim are on-going continuously. So is also the development of the cellular devices when the cellular technologies evolve. It is therefore recommended that you have a fairly recent version of ModemManager, libqmi and libmbim running in your system as well as when it comes to kernel version since the driver modules sometimes acquire patch fixes to be compatible with new chipset features etc.
Check Freedesktop.org pages for details on the latest ModemManager, NetworkManager, Libqmi and Libmbim releases.
Once you've installed ModemManager and rebooted your system, the service daemon should be running already in background.
Mmcli is the related command line interface tool which can be used to interact with ModemManager daemon through command line commands.
Check the version by command:
mmcli -V
<< mmcli 1.13.0
<< Copyright (2011 - 2020) Aleksander Morgado
<< License GPLv2+: GNU GPL version 2 or later
<< This is free software: you are free to change and redistribute it.
<< There is NO WARRANTY, to the extent permitted by law.
Print general mmcli help message:
mmcli --help
ModemManager normally listen, probes and detects cellular devices automatically when operating correctly but a forced scan can be triggered with command:
mmcli --scan-modems
<< successfully requested to scan devices
To list detected cellular devices use command:
mmcli --list-modems
<< /org/freedesktop/ModemManager1/Modem/0 [Sierra Wireless, Incorporated] MC7455
Here ModemManager have detected a Sierra Wireless cellular device and it has here been given the the identifier number 0 by ModemManager.
To acquire more device information and status use the --modem command and identifier value.
mmcli --modem=0
<< -----------------------------
<< General | dbus path: /org/freedesktop/ModemManager1/Modem/0
<< | device id: 3a2f5fad8e91dbf417694f23165017c1f8a6e061
<< -----------------------------
<< Hardware | manufacturer: Sierra Wireless, Incorporated
<< | model: MC7455
<< | firmware revision: SWI9X30C_02.32.11.00 r8042 CARMD-EV-FRMWR2 2019/05/15 21:52:20
<< | carrier config: default
<< | h/w revision: 1.0
<< | supported: gsm-umts, lte
<< | current: gsm-umts, lte
<< | equipment id: 359072066171840
<< -----------------------------
<< System | device: /sys/devices/pci0000:00/0000:00:14.0/usb3/3-2
<< | drivers: qcserial, qmi_wwan
<< | plugin: sierra
<< | primary port: cdc-wdm0
<< | ports: cdc-wdm0 (qmi), wwan1 (net), ttyUSB2 (at), wwan0 (net),
<< | cdc-wdm1 (qmi), ttyUSB1 (gps), ttyUSB0 (qcdm)
<< -----------------------------
<< Status | lock: sim-pin
<< | unlock retries: sim-pin (3), sim-puk (10), sim-pin2 (0), sim-puk2 (10)
<< | state: locked
<< | power state: on
<< | signal quality: 0% (cached)
<< -----------------------------
<< Modes | supported: allowed: 3g; preferred: none
<< | allowed: 4g; preferred: none
<< | allowed: 3g, 4g; preferred: 4g
<< | allowed: 3g, 4g; preferred: 3g
<< | current: allowed: 3g, 4g; preferred: 4g
<< -----------------------------
<< Bands | supported: utran-1, utran-3, utran-4, utran-5, utran-8, utran-2,
<< | eutran-1, eutran-2, eutran-3, eutran-4, eutran-5, eutran-7, eutran-8,
<< | eutran-12, eutran-13, eutran-20, eutran-25, eutran-26, eutran-29,
<< | eutran-30, eutran-41
<< | current: utran-1, utran-3, utran-4, utran-5, utran-8, utran-2,
<< | eutran-1, eutran-2, eutran-3, eutran-4, eutran-5, eutran-7, eutran-8,
<< | eutran-12, eutran-13, eutran-20, eutran-25, eutran-26, eutran-29,
<< | eutran-30, eutran-41
<< -----------------------------
<< IP | supported: ipv4, ipv6, ipv4v6
<< -----------------------------
<< SIM | dbus path: /org/freedesktop/ModemManager1/SIM/0
A detailed summary of device status, configs and system drivers, paths and IDs are returned.
Currently the device status indicates that inserted SIM card is PIN locked, so a unlock by --pin command is necessary:
mmcli --modem=0 --sim=0 --pin=****
<< successfully sent PIN code to the SIM
Now we can change device state to enabled using command:
mmcli --modem=0 --enable
<< successfully enabled the modem
if we're check device status again we can see that device:
mmcli --modem=0
…
<< --------------------------------
<< Status | lock: sim-puk2
<< | unlock retries: sim-pin (3), sim-puk (10), sim-pin2 (0), sim-puk2 (10)
<< | state: registered
<< | power state: on
<< | access tech: lte
<< | signal quality: 96% (recent)
…
<< 3GPP | imei: 359072066171840
<< | operator id: 24002
<< | operator name: 3
<< | registration: home
<< --------------------------------
<< 3GPP EPS | ue mode of operation: csps-2
<< --------------------------------
<< SIM | dbus path: /org/freedesktop/ModemManager1/SIM/0
The status output shows that devices is registered in network using LTE technology with a good signal strength.
It is now time to activate the data connection with --simple-connect command.
ModemManager will tie the data bearer for our given subscription APN to the qmi_wwan network interface, typically named wwan0 (unless renamed by Linux distribution or user)
Fill in the details as below but for your modem number, subscription APN and the IP type it can work with (ipv4 / ipv6 ipv4v6)
mmcli -m 0 --simple-connect='apn=data.tre.se,ip-type=ipv4v6'
<< successfully connected the modem
if we check modem status again we can see that a bearer have been established.
mmcli --modem=0
…
<< --------------------------------
<< Bearer | dbus path: /org/freedesktop/ModemManager1/Bearer/0
…
The bearer have got identifier number 0 so we can request more details for it to acquire the IP details:
mmcli --modem=0 --bearer=0
<< ------------------------------------
<< General | dbus path: /org/freedesktop/ModemManager1/Bearer/0
<< | type: default
<< ------------------------------------
<< Status | connected: yes
<< | suspended: no
<< | interface: wwan1
<< | ip timeout: 20
<< ------------------------------------
<< Properties | apn: data.tre.se
<< | roaming: allowed
<< | ip type: ipv4v6
<< ------------------------------------
<< IPv4 configuration | method: static
<< | address: 2.68.206.100
<< | prefix: 29
<< | gateway: 2.68.206.101
<< | dns: 80.251.201.177, 80.251.201.178
<< | mtu: 1500
<< ------------------------------------
<< IPv6 configuration | method: static
<< | address: 2a02:aa1:1010:b6bb:6d12:d0dc:978e:3982
<< | prefix: 64
<< | gateway: 2a02:aa1:1010:b6bb:21ea:c721:62c3:9760
<< | dns: 2a02:aa0::55, 2a02:aa0::56
<< | mtu: 1500
<< ------------------------------------
<< Statistics | duration: 450
<< | bytes rx: 6693
<< | attempts: 1
<< | total-duration: 450
<< | total-bytes rx: 6693
From here we can see the IP details we've been assigned by the cellular network.
ModemManager does not assign IPv4 address details to the cellular modules network interface in Linux by itself.
When ModemManager is used in conjunction with NetworkManager and the cellular connection is managed by it, then the IPv4 address details will be collected by NetworkManager through ModemManager and automatically assigned to network interface when connection is established.
If the system does not implement NetworkManager, then the IP and routing configuration needs to be handled by user software/scripting.
Example:
Enable network interface in Linux:
ip link set wwan0 up
Set the IPv4 address acquired from bearer information above, the CIDR subnet mask can always be set to 32:
ip addr add 2.68.206.100/32 dev wwan0
Disable ARP:
ip link set dev wwan0 arp off
Set MTU value acquired from network:
ip link set dev wwan0 mtu 1500
Add a default or other type of route to the cellular network device (e.g. with a metric to set which route to prefer)
ip route add default dev wwan0 metric 200
Add the DNS servers reported by cellular network or use other public/desired ones.
DNS server addresses are handled in different ways depending on the Linux distribution and network manager used. Therefore please refer to related dist documentation for best practice to add / maintain DNS server addresses in your specific system.
sh -c "echo 'nameserver 80.251.201.177' >> /etc/resolv.conf"
sh -c "echo 'nameserver 80.251.201.178' >> /etc/resolv.conf"
We should now have a network interface passing data successfully, we can try it out by doing ping requests:
IPv4 data:
ping -4 -c 4 -I wwan0 8.8.8.8
PING 8.8.8.8 (8.8.8.8) from 2.68.206.100 wwan0: 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=57 time=50.8 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=57 time=48.8 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=57 time=24.0 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=57 time=44.8 ms
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 23.979/42.115/50.840/10.694 ms
IPv6 data:
ping -6 -c 4 -I wwan0 2600::
PING 2600::(2600::) from 2a02:aa1:1010:b6bb:8962:7405:b81c:7627 wwan0: 56 data bytes
64 bytes from 2600::: icmp_seq=1 ttl=47 time=179 ms
64 bytes from 2600::: icmp_seq=2 ttl=47 time=176 ms
64 bytes from 2600::: icmp_seq=3 ttl=47 time=175 ms
64 bytes from 2600::: icmp_seq=4 ttl=47 time=177 ms
--- 2600:: ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 175.411/176.935/179.268/1.446 ms
How to collect initial diagnostics data and logs for Alcatel USB dongles, needed when requesting Techship technical support?
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 Alcatel USB dongles when creating a technical support ticket.
Detailed problem description and in what situations it present or can be reproduced.
Describe the host system:
-Hardware (system board, peripherals...)
-Operating system and detailed versions (E.g. Windows, Linux 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 mandatory)
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 logs from the cellular module firmware can be acquired by accessing the USB enumerated serial (COM) interfaces accepting AT commands. They can be named modem, AT, PC UI etc. (In Windows device manager, found under modem or serial interfaces). Send the following AT commands bellow to module and capture the output and include them when creating the the technical support ticket.
Test that you get a reply with command:
AT
Command echo enabled:
ATE1
Basic module info:
ATI
Verbose error reporting:
AT+CMEE=2
Last error report:
AT+CEER
Firmware version:
AT+GMR
IMEI Code:
AT+CGSN
USB endpoint configuration:
AT+USBMODE?
List current configuration:
AT&V
Operational mode:
AT+CFUN?
Pin status:
AT+CPIN?
Request extended system info:
AT^SYSINFOEX
AT^SYSCFGEX?
Preferred PLMN list:
AT+CPOL?
Request resident Band:
AT+CNBP?
List network operator info:
AT+COPS?
Network registration status:
AT+CREG?
Network EPS registration status:
AT+CEREG?
Signal strength:
AT+CSQ
Packet domain attach status
AT+CGATT?
List APN details/PDP profiles:
AT+CGDCONT?
AT$QCPDPP?
PDP profiles attach status:
AT+CGACT?
Show PDP IP address:
AT+CGPADDR
AT+CGCONTRDP
The support ticket can be created after login at: https://techship.com/technical_support/
How-to use the Alcatel IK41 series LTE data sticks in RNDIS USB mode with always-on automated connection establishment and management
Both Windows and Linux systems can support RNDIS interface drivers for the Alcatel IK41 series LTE data sticks, this guide demonstrates how it can be done in a Linux environment.
There is a open source Linux in-kernel driver supporting RNDIS USB network interfaces called rndis_host.
Make sure to have the kernel config for rndis host driver support enabled.
Read more about the kernel configs in this FAQ:
Common Linux kernel modules and configs necessary for communicating with cellular modules over USB interface
By default the Alcatel IK41 series LTE data sticks are delivered with MBIM network interface USB mode enabled, so you will need to change the mode through a AT command on the Modem/AT serial port, exposed over the USB interface.
lsusb output can look like following:
Bus 001 Device 005: ID 1bbb:00b6 T & A Mobile Phones Mobilebroadband
usb-devices
T: Bus=01 Lev=01 Prnt=01 Port=03 Cnt=01 Dev#= 5 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=1bbb ProdID=00b6 Rev=10.00
S: Manufacturer=Alcatel
S: Product=Mobilebroadband
S: SerialNumber=1234567890ABCDE
C: #Ifs= 5 Cfg#= 1 Atr=80 MxPwr=500mA
I: If#=0x0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
I: If#=0x1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
I: If#=0x2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
I: If#=0x3 Alt= 0 #EPs= 1 Cls=02(commc) Sub=0e Prot=00 Driver=cdc_mbim
I: If#=0x4 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
Switch the module from USB PID 00b6 to USB PID 01aa mode for RNDIS interface throuh command:
AT+USBMODE=1
The module will now restart automatically and re-enumerate with a new USB ID.
Check dmesg or with lsusb that you have the Simcom SIM7600 module detected with VID: 1e0e PID: 9011
lsusb
Bus 001 Device 006: ID 1bbb:01aa T & A Mobile Phones Mobilebroadband
Verify with lsusb -t that the Linux in-kernel driver rndis_host driver is loaded correctly for interface 0 and 1.
It can look e.g. like this:
lsusb -t
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/8p, 480M
|__ Port 4: Dev 7, If 0, Class=Wireless, Driver=rndis_host, 480M
|__ Port 4: Dev 7, If 1, Class=CDC Data, Driver=rndis_host, 480M
|__ Port 4: Dev 7, If 2, Class=Vendor Specific Class, Driver=option, 480M
|__ Port 4: Dev 7, If 3, Class=Vendor Specific Class, Driver=option, 480M
If your system do not load the option serial interfaces correctly, then they can be forcefully loaded as bellow: (not reboot persistent)
modprobe option
sh -c "echo '1bbb 01aa' > /sys/bus/usb-serial/drivers/option1/new_id"
Relate to the Alcatel IK41 Series Software Integration Guide for details on how to modify the usb serial option driver source code in order to auto load the option serial usb driver.
In order to enable the automatic network connection establishment, the SIM card should have PIN code check disabled. If it is not disabled, the Linux host system need to provide the PIN code over AT commands to module after each modem restart.
Refer to AT command: AT+CPIN=xxxx for further details.
The Access Point Name (APN) related to your cellular subscription needs to be configured once to the module so the automatic connection establishment can be established on the correct data bearer.
Defining an empty string as value on the AT+CGDCONT profile, will make the module try to subscribe for a APN, however this may not always work e.g. in roaming conditions, so best procedure is to always configure the correct APNs for the network and your subscription.
Check the currently configured APN profiles:
AT+CGDCONT?
If you do not know the correct APN for your network and subscription, you should at least have profile 1 defined to empty strings ("") so the module will try to subscribe for the correct APN details from network:
AT+CGDCONT=1,"IPV4V6",""
+CGDCONT Profile 1 is used for the cellular network registration process and will also be tied to the RNDIS network interface for the data connection to host system.
Define the APN profile according to the details you have obtained for your cellular subscription.
AT+CGDCONT=1,"IPV4V6","MY-SUBSCRIPTION-APN"
Some APN names require additional authentication also, please use the AT command: AT$QCPDPP in the AT commands guide for details on how to define auth details correctly.
Current auth configurations can be checked with AT command:
AT$QCPDPP?
AT$QCPDPP=apn_profile_index, auth_type, password, username
(Auth types: 0 None, 1 PAP, 2 CHAP)
Most often no auth details are needed for the profiles and they should be empty, profiles can be cleared by defining the profile number in question and zero in the second parameter:
AT$QCPDPP=1,0
If you have modified the APN information, username and passwords it is necessary to disconnect and reconnect to cellular network and packet data service to activate the new settings.
It can easily be done with toggling AT+CFUN=0 command followed by AT+CFUN=1 to switch modules operation mode (SIM card will also be re-initialized, so PIN code have to be given again if the PIN code check is activated).
The module will now try to establish and maintain the data connection automatically with the new settings.
Check that the RNDIS connection is toggled active through AT command:
AT+CONN?
Typically this reports 1 and is automatically active, but if not please set it by command:
AT+CONN=1
You should now have the cellular module correctly configured.
The Linux RNDIS host system drivers should have been detected now also and network interface available.
The interface name given can be checked e.g. from dmesg out:
dmesg | grep "RNDIS device"
rndis_host 1-4:1.0 usb0: register 'rndis_host' at usb-0000:00:15.0-4, RNDIS device, 16:c5:81:16:4a:b4
Typically it is named usb0 and might be disabled by default, activate the interface with command:
ip link set usb0 up
To acquire an NAT IP address from the module, please activate a dhcp client on the network interface (if not already running), example:
dhclient -v usb0
Listening on LPF/usb0/56:60:ac:31:fb:5f
Sending on LPF/usb0/56:60:ac:31:fb:5f
Sending on Socket/fallback
DHCPDISCOVER on usb0 to 255.255.255.255 port 67 interval 3 (xid=0x43893e46)
DHCPOFFER of 192.168.1.176 from 192.168.1.1
DHCPREQUEST for 192.168.1.176 on usb0 to 255.255.255.255 port 67 (xid=0x463e8943)
DHCPACK of 192.168.1.176 from 192.168.1.1 (xid=0x43893e46)
bound to 192.168.1.176 -- renewal in 3297 seconds.
If everything was configured correctly and the connection established successfully on the APN, the host system will have internet access on the RNDIS network interface now:
It can be tested e.g. by pinging a remote host over the RNDIS network interface:
ping -4 -I usb0 8.8.8.8
PING 8.8.8.8 (8.8.8.8) from 192.168.225.46 usb0: 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=52 time=167 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=52 time=37.6 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=52 time=44.4 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=52 time=33.6 ms
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 8ms
rtt min/avg/max/mdev = 33.600/70.635/166.972/55.753 ms
If your APN supports IPV6 also, you can test it also by IPV6 ping:
ping -6 -I usb0 2600::
PING 2600::(2600::) from 2a02:aa1:1021:2c5e:552b:a8cb:532c:bcac usb0: 56 data bytes
64 bytes from 2600::: icmp_seq=1 ttl=51 time=179 ms
64 bytes from 2600::: icmp_seq=2 ttl=51 time=171 ms
64 bytes from 2600::: icmp_seq=3 ttl=51 time=171 ms
--- 2600:: ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 170.776/173.535/178.854/3.761 ms
Tested on:
Alcatel IK41 VE with firmware version IK41_01_02.00_01
How to use NetworkManager and ModemManager in Linux to automatically establish a cellular data connection and configure IP details?
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.
How to integrate the Alcatel IK41 series M2M LTE USB sticks in Linux using MBIM USB mode?
The Alcatel IK41 series M2M LTE Cat4 USB stick connects to the host system using USB2 data interface and will appear in the system with USB Vendor ID: 1bbb and Product ID: 00b6 in default USB mode.
The device expose a USB MBIM network interface (Mobile Broadband Interface Model) and three usb serial interfaces. It is commonly used by Windows 8/10 for connecting mobile broadband devices, but can also be used in Linux environments.
(The device can also be set to a USB mode exposing the RNDIS network interface instead of MBIM interface. This is what Alcatel recommends for Linux systems. See the attached Alcatel software integration guide document below or find it at the Techship product pages.)
This FAQ describes the USB mode where MBIM type of network interface is used.
Typically the IK41 series USB VID and PID ID and interfaces are already automatically detected by the correct Linux in-kernel driver modules cdc_mbim for network and option for serial interfaces, if a fairly recent version of the kernel is used.
Checking in the Linux diagnostic messages output you should find the following rows if device is detected correctly:
dmesg
usb 3-1: new high-speed USB device number 5 using xhci_hcd
usb 3-1: New USB device found, idVendor=1bbb, idProduct=00b6, bcdDevice=10.00
usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 3-1: Product: Mobilebroadband
usb 3-1: Manufacturer: Alcatel
usb 3-1: SerialNumber: 1234567890ABCDE
option 3-1:1.0: GSM modem (1-port) converter detected
usb 3-1: GSM modem (1-port) converter now attached to ttyUSB0
option 3-1:1.1: GSM modem (1-port) converter detected
usb 3-1: GSM modem (1-port) converter now attached to ttyUSB1
option 3-1:1.2: GSM modem (1-port) converter detected
usb 3-1: GSM modem (1-port) converter now attached to ttyUSB2
cdc_mbim 3-1:1.3: cdc-wdm0: USB WDM device
cdc_mbim 3-1:1.3 wwan0: register 'cdc_mbim' at usb-0000:00:14.0-1, CDC MBIM, 12:60:3d:ac:e9:2f
Usb-devices tool should show the following details for the IK41 series:
usb-devices
T: Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 5 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=1bbb ProdID=00b6 Rev=10.00
S: Manufacturer=Alcatel
S: Product=Mobilebroadband
S: SerialNumber=1234567890ABCDE
C: #Ifs= 5 Cfg#= 1 Atr=80 MxPwr=500mA
I: If#=0x0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
I: If#=0x1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
I: If#=0x2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
I: If#=0x3 Alt= 0 #EPs= 1 Cls=02(commc) Sub=0e Prot=00 Driver=cdc_mbim
I: If#=0x4 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
If no driver modules are tied to the interfaces, relate to the following general FAQ for details about the Linux kernel configs to have enabled at build to support most common wwan driver modules:
Common Linux kernel modules and configs necessary for communicating with cellular modules over USB interface
MBIM type of network interfaces allow for both data and control messages to be passed between host system and cellular device. For example the open source library libmbim and command line interface mbimcli can be used to parse the raw MBIM protocol messages.
The open source NetworkManager and ModemManager tools are capable of controlling the cellular devices over MBIM and establish and maintain the data connections.
For more details on NetworkManager and ModemManager usage, refer to FAQ:
Using NetworkManager and ModemManager in Linux to automatically establish and maintain a connection