Cellular Internet Connection in ECM Mode

ECM (Ethernet Control Model) is one of the easiest method for enabling internet connection to your single-board computer such as Raspberry Pi. It allows the cellular module to present itself as a standard USB Ethernet device, supported natively by the Linux kernel without requiring additional driver installation.

This tutorial walks through the steps to configure cellular modules to operate in ECM mode and establish a stable internet connection.

This tutorial is divided into two sections—Telit and Quectel—to reflect the specific setup instructions for each module type. Users should follow the tab corresponding to their module brand to ensure proper configuration and optimal results.

Compatible Modules

The ECM mode has been successfully tested and confirmed to work with the following Telit modules:

  • LE910C4-NF
  • LE910C4-EU
  • LE910C4-AP
  • ME910C1-WW

These modules support ECM functionality out-of-the-box or with minimal AT command configuration, allowing them to expose a virtual Ethernet interface wwan0 to the host system(Raspberry Pi OS).

Prepare Hardware

It is important to properly setup the hardware before getting started. To setup the hardware the following guide should be followed:


Note 1: Make sure the USB is connected.

Disabling ModemManager Service (if installed)

On Raspberry Pi OS (Bookworm and later), the ModemManager service is typically installed by default. While useful for managing cellular modems, it can interfere with ECM mode by attempting to take control of the modem ports.

To ensure a smooth ECM connection, it is recommended to stop and disable ModemManager service:

sudo systemctl stop ModemManager.service
sudo systemctl disable ModemManager.service

Alternatively, if one prefers to completely remove it, the service can be uninstalled instead:

sudo apt purge modemmanager -y

If ModemManager is not installed on the system, this step can be safely skipped.

Configuration

First, ensure that the Telit cellular module is correctly detected in Raspberry Pi OS. Telit modules are most often automatically detected in recent Linux kernels, this can be verified in different ways by the commands below.

The lsusb command is used to display the information about USB buses and the devices connected to them.

lsusb

It can look e.g. like this:

Verify that the LE910C4-XX module is detected. The lsusb command should show the Telit module with vendor ID 1bc7 and product ID 1201, which operates in RMNet (QMI) mode by default before ECM configuration:

pi@raspberrypi:~ $ lsusb Bus 001 Device 004: ID 1bc7:1201 Telit Wireless Solutions LE910 / LE920

The lsusb -t command shows the USB endpoints with the current driver configuration. Note that in this output, the module shows multiple interfaces with option driver on If 0 and If 3-6, while If 2 uses qmi_wwan driver, which indicates the module is detected:

pi@raspberrypi:~ $ lsusb -t /: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 5000M /: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 480M /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 5000M /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 480M |__ Port 2: Dev 4, If 0, Class=Vendor Specific Class, Driver=option, 480M |__ Port 2: Dev 4, If 1, Class=Vendor Specific Class, Driver=, 480M |__ Port 2: Dev 4, If 2, Class=Vendor Specific Class, Driver=qmi_wwan, 480M |__ Port 2: Dev 4, If 3, Class=Vendor Specific Class, Driver=option, 480M |__ Port 2: Dev 4, If 4, Class=Vendor Specific Class, Driver=option, 480M |__ Port 2: Dev 4, If 5, Class=Vendor Specific Class, Driver=option, 480M |__ Port 2: Dev 4, If 6, Class=Vendor Specific Class, Driver=option, 480M

Communication with the cellular module over AT commands can now be started. There are different implementations on Linux that enable communication with serial interfaces. The Sending AT Commands tutorial can be checked for reference.

Configure APN

Note: APN is super when using Sixfab SIM. If the APN is unknown, the SIM provider should be contacted.

In this case, the command should be:

AT+CGDCONT=1,"IPV4V6","super"

Configure Module for ECM Mode

The modem can now be configured for ECM mode. Execute the following command for the LE910Cx series module:

AT#USBCFG=4

The modem will automatically reboot after the execution of the command.

Reboot the Module (Optional - Only if the module does not reboot automatically)

Then reboot the modem using the following command.

AT#REBOOT

Wait for the modem to boot again. It may take 30 seconds.

Verify Network Status

Use the following commands to verify the network status and configuration:

Command Description Expected Response
AT+CPIN? Check SIM card status
+CPIN: READY
AT+CSQ Check signal quality
+CSQ: 25,99
AT+COPS? Check network operator
+COPS: 0,0,"T-Mobile"
AT+CREG? Verify network registration
+CREG: 0,1 or +CREG: 0,5
AT+CGDCONT? Check APN details
+CGDCONT: 1,IPV4V6,super,0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0,0,0,0,0
+CGDCONT: 2,IPV4V6,ims,0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0,0,0,0,0
+CGDCONT: 3,IPV4V6,SOS,0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0,0,0,0,1

Verify ECM Mode

After the reboot, verify that the ECM drivers are properly loaded. Check the USB device detection to confirm successful ECM configuration.

The lsusb command should show the module with the updated product ID (1206), indicating ECM mode activation:

pi@raspberrypi:~ $ lsusb Bus 001 Device 112: ID 1bc7:1206 Telit Wireless Solutions LE910 / LE920

The lsusb -t command shows the USB endpoints with ECM drivers properly loaded. Verify that the cdc_ether driver is now active on interfaces If 2 and If 3, indicating successful ECM activation:

pi@raspberrypi:~ $ lsusb -t /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M |__ Port 1: Dev 112, If 0, Class=Vendor Specific Class, Driver=option, 480M |__ Port 1: Dev 112, If 1, Class=Vendor Specific Class, Driver=, 480M |__ Port 1: Dev 112, If 2, Class=Communications, Driver=cdc_ether, 480M |__ Port 1: Dev 112, If 3, Class=CDC Data, Driver=cdc_ether, 480M |__ Port 1: Dev 112, If 4, Class=Vendor Specific Class, Driver=option, 480M |__ Port 1: Dev 112, If 5, Class=Vendor Specific Class, Driver=option, 480M |__ Port 1: Dev 112, If 6, Class=Vendor Specific Class, Driver=option, 480M |__ Port 1: Dev 112, If 7, Class=Vendor Specific Class, Driver=option, 480M

Establish Internet Connection

Once ECM drivers are active, start the internet connection using the following command:

AT#ECM=1,0

Note: When the system reboots or the internet connection is lost, only the AT#ECM=1,0 command needs to be repeated. All previous configuration steps (Configure APN, Configure Module & Verify Network Status) are one-time setup procedures.

Important: This command activates a context, so all necessary setup must be completed beforehand (SIM detection, network registration, APN configuration). If the module is not properly registered to the network or APN is not configured, the command will return ERROR.

Enable Network Interface

After successful ECM activation, the network interface must be configured. If the wwan0 interface appears in ip addr but not in ifconfig, run:

sudo dhclient -v wwan0

If required, add a DNS server to /etc/resolv.conf:

echo "nameserver 8.8.8.8" | sudo tee -a /etc/resolv.conf

Test Internet Connection

To verify that the connection is working correctly, users can check the network interface status, routing table, and test connectivity:

Note: Interface name can be different based on the OS and Kernel. OS can modify the interface name.
pi@raspberrypi:~ $ ifconfig wwan0 wwan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.225.45 netmask 255.255.255.0 broadcast 192.168.225.255 inet6 fe80::ee84:31a0:e65d:c5c3 prefixlen 64 scopeid 0x20 ether f2:0a:30:b7:9c:73 txqueuelen 1000 (Ethernet) RX packets 391 bytes 19933 (19.4 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 438 bytes 30915 (30.1 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
pi@raspberrypi:~ $ route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.225.1 0.0.0.0 UG 0 0 0 wwan0 192.168.225.0 0.0.0.0 255.255.255.0 U 0 0 0 wwan0
pi@raspberrypi:~ $ ip addr show wwan0 3: wwan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether f2:0a:30:b7:9c:73 brd ff:ff:ff:ff:ff:ff inet 192.168.225.45/24 brd 192.168.225.255 scope global dynamic wwan0 valid_lft 86398sec preferred_lft 86398sec inet6 fe80::ee84:31a0:e65d:c5c3/64 scope link valid_lft forever preferred_lft forever
pi@raspberrypi:~ $ ping -I wwan0 -c 5 sixfab.com PING sixfab.com (172.67.75.126) from 100.67.114.164 wwan0: 56(84) bytes of data. 64 bytes from 172.67.75.126 (172.67.75.126): icmp_seq=1 ttl=29 time=247 ms 64 bytes from 172.67.75.126 (172.67.75.126): icmp_seq=2 ttl=29 time=205 ms 64 bytes from 172.67.75.126 (172.67.75.126): icmp_seq=3 ttl=29 time=207 ms 64 bytes from 172.67.75.126 (172.67.75.126): icmp_seq=4 ttl=29 time=204 ms 64 bytes from 172.67.75.126 (172.67.75.126): icmp_seq=5 ttl=29 time=216 ms --- sixfab.com ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 8ms rtt min/avg/max/mdev = 204.050/215.839/247.004/16.201 ms

Troubleshooting

If the wwan0 interface is not visible, reboot the whole system and check the SIM, antenna, module and USB.

After issuing the AT#ECM command to the Telit module, if the wwan0 interface doesn't appear under the ifconfig or route -n but available under ip addr command, run sudo dhclient -v wwan0. Later add nameserver 8.8.8.8 in /etc/resolv.conf.

Check the configuration of the module.

AT#USBCFG? # Should return 3 or 4

Check the TCP context is activated.

AT#ECM? # Should return 0,1. If return is 0,0 run the AT#ECM=1,0,"","",0 command in minicom.

Check the SIM is detected by the module.

AT+CPIN? # Should return READY

Check if the module is registered to the network.

AT+CREG? # Should return 0,1 or 0,5

Check the APN is right and have an IP.

AT+CGDCONT? # Should return the APN details and IP address

The output below shows the ME910C1-WW module detected as a USB device before ECM configuration. The module appears with vendor ID 1bc7 and product ID 0036 (Telit Wireless Solutions), which operates in RMNet (QMI) mode by default before ECM configuration:

pi@raspberrypi:~ $ lsusb Bus 001 Device 022: ID 1bc7:0036 Telit Wireless Solutions ME910

The lsusb -t command shows the USB endpoints of detected USB devices and related drivers. Below, the ME910C1-WW module shows multiple interfaces with option driver on If 0, If 3-6, and qmi_wwan driver on If 2, indicating the module is detected but needs ECM activation:

pi@raspberrypi:~ $ lsusb -t /: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 5000M /: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 480M /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 5000M /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 480M |__ Port 2: Dev 4, If 0, Class=Vendor Specific Class, Driver=option, 480M |__ Port 2: Dev 4, If 1, Class=Vendor Specific Class, Driver=, 480M |__ Port 2: Dev 4, If 2, Class=Vendor Specific Class, Driver=qmi_wwan, 480M |__ Port 2: Dev 4, If 3, Class=Vendor Specific Class, Driver=option, 480M |__ Port 2: Dev 4, If 4, Class=Vendor Specific Class, Driver=option, 480M |__ Port 2: Dev 4, If 5, Class=Vendor Specific Class, Driver=option, 480M |__ Port 2: Dev 4, If 6, Class=Vendor Specific Class, Driver=option, 480M

Communication with the cellular module over AT commands can now be started. There are different implementations on Linux that enable communication with serial interfaces. The Sending AT Commands tutorial can be checked for reference.

Configure APN

Note: APN is super when using Sixfab SIM. If the APN is unknown, the SIM provider should be contacted.

In this case, the command should be:

AT+CGDCONT=1,"IPV4V6","super"

Configure Module

For the ME910C1-WW module, the following should be done:

AT#USBCFG=3

The modem will automatically reboot after the execution of the command.

Reboot the Module (Optional - Only if the module does not reboot automatically)

Then reboot the modem using the following command.

AT#REBOOT

Wait for the modem to boot again. It may take 30 seconds.

Verify Network Status

Use the following commands to verify the network status and configuration:

Command Description Expected Response
AT+CPIN? Check SIM card status
+CPIN: READY
AT+CSQ Check signal quality
+CSQ: 25,99
AT+COPS? Check network operator
+COPS: 0,0,"T-Mobile"
AT+CREG? Verify network registration
+CREG: 0,1 or +CREG: 0,5
AT+CGDCONT? Check APN details
+CGDCONT: 1,IPV4V6,super,0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0,0,0,0,0
+CGDCONT: 2,IPV4V6,ims,0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0,0,0,0,0
+CGDCONT: 3,IPV4V6,SOS,0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0,0,0,0,1

After the configuration and reboot, the USB output should show the ECM driver properly loaded:

Verify the ME910C1-WW module is detected after ECM configuration. The lsusb command should show the Telit module with vendor ID 1bc7 and product ID 1102:

pi@raspberrypi:~ $ lsusb Bus 001 Device 024: ID 1bc7:1102 Telit Wireless Solutions Telit ME910

The lsusb -t command shows the USB endpoints with ECM drivers properly loaded. Verify that the cdc_ether driver is now active on interfaces If 2 and If 3, indicating successful ECM activation:

pi@raspberrypi:~ $ lsusb -t /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M |__ Port 1: Dev 112, If 0, Class=Vendor Specific Class, Driver=option, 480M |__ Port 1: Dev 112, If 1, Class=Vendor Specific Class, Driver=, 480M |__ Port 1: Dev 112, If 2, Class=Communications, Driver=cdc_ether, 480M |__ Port 1: Dev 112, If 3, Class=CDC Data, Driver=cdc_ether, 480M |__ Port 1: Dev 112, If 4, Class=Vendor Specific Class, Driver=option, 480M |__ Port 1: Dev 112, If 5, Class=Vendor Specific Class, Driver=option, 480M |__ Port 1: Dev 112, If 6, Class=Vendor Specific Class, Driver=option, 480M |__ Port 1: Dev 112, If 7, Class=Vendor Specific Class, Driver=option, 480M

Internet Connection

Then start the internet connection using the following command. If an ERROR is received, the same command should be tried again.

AT#ECM=1,0

Note: When the system reboots or the internet connection is lost, only the AT#ECM=1,0 command needs to be repeated. All previous configuration steps (Configure APN, Configure Module & Verify Network Status) are one-time setup procedures.

Note 3: The response to all AT commands should be OK.

Test Internet Connection

To verify that the connection is working correctly, users can check the network interface status, routing table, and test connectivity:

Note: Interface name can be different based on the OS and Kernel. OS can modify the interface name.
pi@raspberrypi:~ $ ifconfig wwan0 wwan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.225.45 netmask 255.255.255.0 broadcast 192.168.225.255 inet6 fe80::ee84:31a0:e65d:c5c3 prefixlen 64 scopeid 0x20 ether f2:0a:30:b7:9c:73 txqueuelen 1000 (Ethernet) RX packets 391 bytes 19933 (19.4 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 438 bytes 30915 (30.1 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
pi@raspberrypi:~ $ route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.225.1 0.0.0.0 UG 0 0 0 wwan0 192.168.225.0 0.0.0.0 255.255.255.0 U 0 0 0 wwan0
pi@raspberrypi:~ $ ip addr show wwan0 3: wwan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether f2:0a:30:b7:9c:73 brd ff:ff:ff:ff:ff:ff inet 192.168.225.45/24 brd 192.168.225.255 scope global dynamic wwan0 valid_lft 86398sec preferred_lft 86398sec inet6 fe80::ee84:31a0:e65d:c5c3/64 scope link valid_lft forever preferred_lft forever
pi@raspberrypi:~ $ ping -I wwan0 -c 5 sixfab.com PING sixfab.com (172.67.75.126) from 100.67.114.164 wwan0: 56(84) bytes of data. 64 bytes from 172.67.75.126 (172.67.75.126): icmp_seq=1 ttl=29 time=247 ms 64 bytes from 172.67.75.126 (172.67.75.126): icmp_seq=2 ttl=29 time=205 ms 64 bytes from 172.67.75.126 (172.67.75.126): icmp_seq=3 ttl=29 time=207 ms 64 bytes from 172.67.75.126 (172.67.75.126): icmp_seq=4 ttl=29 time=204 ms 64 bytes from 172.67.75.126 (172.67.75.126): icmp_seq=5 ttl=29 time=216 ms --- sixfab.com ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 8ms rtt min/avg/max/mdev = 204.050/215.839/247.004/16.201 ms

Troubleshooting

If the wwan0 interface is not visible, reboot the whole system and check the SIM, antenna, module and USB.

After issuing the AT#ECM command to the Telit module, if the wwan0 interface doesn't appear under the ifconfig or route -n but available under ip addr command, run sudo dhclient -v wwan0. Later add nameserver 8.8.8.8 in /etc/resolv.conf.

Check the configuration of the module.

AT#USBCFG? # Should return 3 or 4

Check the TCP context is activated.

AT#ECM? # Should return 0,1. If return is 0,0 run the AT#ECM=1,0,"","",0 command in minicom.

Check the SIM is detected by the module.

AT+CPIN? # Should return READY

Check if the module is registered to the network.

AT+CREG? # Should return 0,1 or 0,5

Check the APN is right and have an IP.

AT+CGDCONT? # Should return the APN details and IP address

Compatible Modules

The ECM mode has been successfully tested and confirmed to work with the following Quectel modules:

  • EC25-A
  • EC25-E
  • EC25-AU
  • EG25-G

Note: The EC25-AF variant does not support ECM mode. Other variants have not been tested.

Prepare Hardware

It is important to properly setup the hardware before getting started. To setup the hardware the following guide should be followed:


Note 1: Make sure the USB is connected.

Disabling ModemManager Service (if installed)

On Raspberry Pi OS (Bookworm and later), the ModemManager service is typically installed by default. While useful for managing cellular modems, it can interfere with ECM mode by attempting to take control of the modem ports.

To ensure a smooth ECM connection, it is recommended to stop and disable ModemManager service:

sudo systemctl stop ModemManager.service
sudo systemctl disable ModemManager.service

Alternatively, if one prefers to completely remove it, the service can be uninstalled instead:

sudo apt purge modemmanager -y

If ModemManager is not installed on the system, this step can be safely skipped.

Configuration

First, ensure that the Quectel cellular module is correctly loaded in Linux. Quectel modules are most often automatically detected in recent Linux kernels, this can be verified in different ways by the commands below:

The lsusb command is used to display the information about USB buses and the devices connected to them.

lsusb

It can look e.g. like this:

The output below shows the Quectel EC25 module detected as a USB device. The module appears with vendor ID 2c7c and product ID 0125 (Quectel Wireless Solutions Co., Ltd.) and is assigned to Bus 001 Device 002.

pi@raspberrypi:~ $ lsusb Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 004: ID 09da:c10a A4Tech Co., Ltd. USB Mouse Bus 001 Device 006: ID 2c7c:0125 Quectel Wireless Solutions Co., Ltd. EC25 LTE modem Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

The lsusb -t command shows the USB endpoints of detected USB devices and related drivers. The EC25 module shows multiple interfaces with option driver on If 0-3 for serial communication, and cdc_ether driver on interfaces If 4 and If 5 for ECM functionality:

pi@raspberrypi:~ $ lsusb -t /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 480M |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M |__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=option, 480M |__ Port 1: Dev 3, If 1, Class=Vendor Specific Class, Driver=option, 480M |__ Port 1: Dev 3, If 2, Class=Vendor Specific Class, Driver=option, 480M |__ Port 1: Dev 3, If 3, Class=Vendor Specific Class, Driver=option, 480M |__ Port 1: Dev 3, If 4, Class=Vendor Specific Class, Driver=qmi_wwan, 480M |__ Port 2: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M

Communication with the cellular module over AT commands can now be started. There are different implementations on Linux that enable communication with serial interfaces. The Sending AT Commands tutorial can be checked for reference.

Configure APN

Note: APN is super when using Sixfab SIM. If the APN is unknown, the SIM provider should be contacted.

In this case, the command should be:

AT+CGDCONT=1,"IPV4V6","super"

Configure Module for ECM Mode

The modem can now be configured for ECM mode.

AT+QCFG="usbnet",1

The modem will automatically reboot after the execution of the command.

Reboot the Module (Optional - Only if the module does not reboot automatically)

Then reboot the modem using the following command.

AT+CFUN=1,1

Wait for the modem to boot again. It may take 30 seconds.

Note: Unlike Telit modules, Quectel EC25 modules show the same USB output before and after ECM configuration. The cdc_ether drivers are visible from the initial detection and do not change after the AT+QCFG="usbnet",1 command and reboot.

Verify Network Status

Use the following commands to verify the network status and configuration:

Command Description Expected Response
AT+CPIN? Check SIM card status
+CPIN: READY
AT+CSQ Check signal quality
+CSQ: 25,99
AT+COPS? Check network operator
+COPS: 0,0,"T-Mobile"
AT+CREG? Verify network registration
+CREG: 0,1 or +CREG: 0,5
AT+CGDCONT? Check APN details
+CGDCONT: 1,IPV4V6,super,0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0,0,0,0,0
+CGDCONT: 2,IPV4V6,ims,0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0,0,0,0,0
+CGDCONT: 3,IPV4V6,SOS,0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0,0,0,0,1
Note 2: It may take a few minutes to establish the connection depending on the network.
Note 3: The response to all AT commands should be OK.

Test Internet Connection

To verify that the connection is working correctly, users can check the network interface status, routing table, and test connectivity:

Note: Interface name can be different based on the OS and Kernel. OS can modify the interface name.
pi@raspberrypi:~ $ ifconfig usb0 usb0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.225.57 netmask 255.255.255.0 broadcast 192.168.225.255 inet6 fe80::4ace:c5eb:c4e1:bc92 prefixlen 64 scopeid 0x20 ether 6e:a6:1a:53:e6:e8 txqueuelen 1000 (Ethernet) RX packets 32 bytes 2727 (2.6 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 61 bytes 6202 (6.0 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
pi@raspberrypi:~ $ route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.225.1 0.0.0.0 UG 100 0 0 usb0 0.0.0.0 192.168.68.1 0.0.0.0 UG 600 0 0 wlan0 192.168.68.0 0.0.0.0 255.255.255.0 U 600 0 0 wlan0 192.168.225.0 0.0.0.0 255.255.255.0 U 100 0 0 usb0
pi@raspberrypi:~ $ ip addr show usb0 6: usb0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 6e:a6:1a:53:e6:e8 brd ff:ff:ff:ff:ff:ff inet 192.168.225.57/24 brd 192.168.225.255 scope global dynamic noprefixroute usb0 valid_lft 42918sec preferred_lft 42918sec inet6 fe80::4ace:c5eb:c4e1:bc92/64 scope link noprefixroute valid_lft forever preferred_lft forever
pi@raspberrypi:~ $ ping -I usb0 sixfab.com -c 5 PING sixfab.com (104.26.9.221) from 192.168.225.60 usb0: 56(84) bytes of data. 64 bytes from 104.26.9.221 (104.26.9.221): icmp_seq=1 ttl=52 time=209 ms 64 bytes from 104.26.9.221 (104.26.9.221): icmp_seq=2 ttl=52 time=202 ms 64 bytes from 104.26.9.221 (104.26.9.221): icmp_seq=3 ttl=52 time=192 ms 64 bytes from 104.26.9.221 (104.26.9.221): icmp_seq=4 ttl=52 time=193 ms 64 bytes from 104.26.9.221 (104.26.9.221): icmp_seq=5 ttl=52 time=195 ms --- sixfab.com ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 9ms rtt min/avg/max/mdev = 191.895/198.244/209.463/6.636 ms

Troubleshooting

If usbX interface is not visible, reboot the whole system and check the SIM, antenna, module and USB.

Check the configuration of the module.

AT+QCFG="usbnet" # Should return 1

Check the SIM is detected by the module.

AT+CPIN? # Should return READY

Check if the module is registered to the network.

AT+CREG? # Should return 0,1 or 0,5

Check the APN is right and have an IP.

AT+CGCONTRDP # Should return the APN details and IP address.