Cannot ping or access Internet on wwan0 (LTE Base Hat + Boost Mobile + Telit LE910C4-NF in ECM Mode)

Hello,

I have been attempting to use the LTE Base Hat on a Raspberry Pi 3 to set up a hotspot by following this guide: Setting up a Raspberry Pi as an LTE Hotspot

The cell module is the Telit LE910C4-NF, and I able to connect to the Internet using the provided Sixfab SIM. However, the pricing for my use case (working from home + streaming) is way too high, which I found out the hard way (charged $125+ for the first day of use). In an attempt to find a better data plan, I purchased a pre-paid unlimited data SIM from Boost Mobile.

After switching the firmware to be compatible with T-Mobile (at#fwswitch=2), and verifying with ModemManager CLI, the module seems to register to the network with no issue and receive an IP. However, the exposed wwan0 interface cannot ping any websites or connect to the Internet. Here is my setup:

Output of mmcli -m 0 after enabling modem with --enable flag:

--------------------------------
General  |            dbus path: /org/freedesktop/ModemManager1/Modem/0
         |            device id: 495e735e3976c0d137907c239bca0729703c44b1
--------------------------------
Hardware |         manufacturer: Telit
         |                model: LE910C4-NF
         |    firmware revision: M0F.660012
         |            supported: gsm-umts, lte
         |              current: gsm-umts, lte
         |         equipment id: ***************
--------------------------------
System   |               device: /sys/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2
         |              drivers: option1, cdc_ether
         |               plugin: telit
         |         primary port: ttyUSB2
         |                ports: ttyUSB2 (at), ttyUSB3 (at), wwan0 (net)
--------------------------------
Numbers  |                  own: ***********
--------------------------------
Status   |       unlock retries: sim-pin (5), sim-puk (10), sim-pin2 (10), sim-puk2 (10)
         |                state: registered
         |          power state: on
         |          access tech: lte
         |       signal quality: 64% (recent)
--------------------------------
Modes    |            supported: allowed: 2g; preferred: none
         |                       allowed: 3g; preferred: none
         |                       allowed: 2g, 3g; preferred: none
         |                       allowed: 4g; preferred: none
         |                       allowed: 2g, 4g; preferred: none
         |                       allowed: 3g, 4g; preferred: none
         |                       allowed: 2g, 3g, 4g; preferred: none
         |              current: allowed: 3g, 4g; preferred: none
--------------------------------
IP       |            supported: ipv4, ipv6, ipv4v6
--------------------------------
3GPP     |                 imei: ***************
         |          operator id: 310260
         |        operator name: Boost Mobile
         |         registration: home
--------------------------------
3GPP EPS | ue mode of operation: csps-1
--------------------------------
SIM      |            dbus path: /org/freedesktop/ModemManager1/SIM/0

(Redacted some fields with *** for privacy.)

Output of ifconfig:

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 192.168.0.29  netmask 255.255.255.0  broadcast 192.168.0.255
    inet6 2603:6011:3301:ee00:e93:916c:bacc:a3f4  prefixlen 64  scopeid 0x0<global>
    inet6 fe80::b15e:637e:18d8:295c  prefixlen 64  scopeid 0x20<link>
    ether b8:27:eb:66:57:16  txqueuelen 1000  (Ethernet)
    RX packets 2417  bytes 960337 (937.8 KiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 914  bytes 112550 (109.9 KiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
    inet 127.0.0.1  netmask 255.0.0.0
    inet6 ::1  prefixlen 128  scopeid 0x10<host>
    loop  txqueuelen 1000  (Local Loopback)
    RX packets 23  bytes 2495 (2.4 KiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 23  bytes 2495 (2.4 KiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 192.168.1.1  netmask 255.255.255.0  broadcast 192.168.1.255
    inet6 fe80::6cfb:996b:e157:ca2e  prefixlen 64  scopeid 0x20<link>
    ether b8:27:eb:33:02:43  txqueuelen 1000  (Ethernet)
    RX packets 0  bytes 0 (0.0 B)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 85  bytes 13040 (12.7 KiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wwan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 192.168.225.40  netmask 255.255.255.0  broadcast 192.168.225.255
    inet6 fe80::ef4b:da1a:a520:c0d3  prefixlen 64  scopeid 0x20<link>
    ether 7e:ea:a1:2a:85:25  txqueuelen 1000  (Ethernet)
    RX packets 60  bytes 3972 (3.8 KiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 108  bytes 10458 (10.2 KiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Output of ping -I wwan0 google.com (before manually enabling ECM mode):

PING  (142.250.191.238) from 192.168.225.40 wwan0: 56(84) bytes of data.
From 192.168.225.1 (192.168.225.1) icmp_seq=1 Destination Net Unreachable
From 192.168.225.1 (192.168.225.1) icmp_seq=2 Destination Net Unreachable
From 192.168.225.1 (192.168.225.1) icmp_seq=3 Destination Net Unreachable
From 192.168.225.1 (192.168.225.1) icmp_seq=4 Destination Net Unreachable
^C
---  ping statistics ---
5 packets transmitted, 0 received, +4 errors, 100% packet loss, time 4003ms

The fifth packet never returns, so I end it with Ctrl+C. After enabling ECM mode in minicom, here is the output of the same command:

PING google.com(ord37s34-in-x0e.1e100.net (2607:f8b0:4009:80a::200e)) from 
2607:fb90:b5a2:e2d:9410:1f2c:3506:b30e wwan0: 56 data bytes
^C
--- google.com ping statistics ---
204 packets transmitted, 0 received, 100% packet loss, time 207665ms

This time, no pings are displayed, and I end it after a few minutes with Ctrl+C. It appears to be using IPv6, so if I force it to use IPv4 with the -4 flag, it gives the same output as the first ping command.

Here are the outputs of the AT commands for troubleshooting (from this article):

at#fwswitch?
#FWSWITCH: 2,0,0
OK

at#usbcfg?
#USBCFG: 4
OK

at#ecm?
#ECM: 0,1
OK

at+cpin?
+CPIN: READY
OK

at+creg?
+CREG: 2,1,"A082","1D2D316",7
OK

at+cgdcont?
+CGDCONT: 1,"IP","fast.t-mobile.com","",0,0,0,0
+CGDCONT: 2,"IPV4V6","ims","",0,0,0,0
+CGDCONT: 3,"IPV4V6","sos","",0,0,0,1

at+cgcontrdp=1
+CGCONTRDP: 1,5,fast.t-mobile.com,"38.7.251.144.181.53.133.175.172.57.155.113.128.129.16.97.255.255.255.255.255.255."
OK

Would really appreciate some support on this. I have seen similar topics with my setup from a few years ago, but none of them seem to have been resolved. I can attach system logs or other command outputs if needed, just didn’t want to make the post too long.

Thanks,
Micah

My first thought is to setup as ATT instead…I am pretty sure boost uses ATT

also check this thread: 3G/4G & LTE Base HAT, Telit modem ERROR on configure APN for inet connection with ECM - #18 by AShriki

Finally revisiting this,

I switched the firmware to ATT and was able to get an Internet connection in PPP mode. ECM mode still does not work though…any ideas as to why? PPP mode is not ideal for my setup because it doesn’t play well with hostapd (brctl claims ppp0 is an invalid interface).

In regards to that thread, I checked the SW version, and it is not one affected by the AT&T sunset. I also tried the series of commands from AShriki, but running the AT+CGCLASS=CG command fails with CME ERROR 4 (and still no ECM Internet access).

More help would be greatly appreciated…

Some additional info: ECM mode appears to be receiving some packets:

image

But pinging the outside world still times out.

I also tried using QMI mode, but that results in no RX packets over the interface (only TX). PPP mode still seems to be the only way I can get an Internet connection.

Hi @Tornadocraver ,

Which Raspberry Pi OS version are you using? 32 or 64 bit? Do you use NetworkManager?

Can you share the following command outputs?

Linux commands:

  • cat /etc/os-release
  • uname -a
  • lsusb
  • lsusb -t
  • usb-devices

AT commands:

AT+CGMR
AT#USBCFG?
AT+COPS?
AT+CPIN?
AT+CREG?
AT+CGREG?
AT+CFUN?
AT#SWPKGV
AT#FWSWITCH?
AT+CGDCONT?
AT+CSQ

Hello @ensar,

I am using the default 32-bit version of Raspberry Pi OS, and NetworkManager/dhcpcd is installed but not in use (to my knowledge). Here are the linux commands:

root@PiSpot:/home/anon# cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 11 (bullseye)"
NAME="Raspbian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
root@PiSpot:/home/anon# uname -a
Linux PiSpot 6.1.21-v7+ #1642 SMP Mon Apr  3 17:20:52 BST 2023 armv7l GNU/Linux
root@PiSpot:/home/anon# lsusb
Bus 001 Device 004: ID 1bc7:1206 Telit Wireless Solutions LE910C4-NF
Bus 001 Device 003: ID 0424:ec00 Microchip Technology, Inc. (formerly SMSC) SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Microchip Technology, Inc. (formerly SMSC) SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
root@PiSpot:/home/anon# lsusb -t
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/5p, 480M
        |__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=smsc95xx, 480M
        |__ Port 2: Dev 4, If 0, Class=Vendor Specific Class, Driver=option, 480M
        |__ Port 2: Dev 4, If 7, 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 3, Class=CDC Data, Driver=cdc_ether, 480M
        |__ Port 2: Dev 4, If 1, Class=Vendor Specific Class, Driver=, 480M
        |__ Port 2: Dev 4, If 6, 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 2, Class=Communications, Driver=cdc_ether, 480M
root@PiSpot:/home/anon# usb-devices

T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480 MxCh= 1
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev=06.01
S:  Manufacturer=Linux 6.1.21-v7+ dwc_otg_hcd
S:  Product=DWC OTG Controller
S:  SerialNumber=3f980000.usb
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
I:  If#=0x0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub

T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480 MxCh= 5
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=02 MxPS=64 #Cfgs=  1
P:  Vendor=0424 ProdID=9514 Rev=02.00
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=2mA
I:  If#=0x0 Alt= 1 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=02 Driver=hub

T:  Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#=  3 Spd=480 MxCh= 0
D:  Ver= 2.00 Cls=ff(vend.) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=0424 ProdID=ec00 Rev=02.00
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=2mA
I:  If#=0x0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=ff Driver=smsc95xx

T:  Bus=01 Lev=02 Prnt=02 Port=01 Cnt=02 Dev#=  4 Spd=480 MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1bc7 ProdID=1206 Rev=03.18
S:  Manufacturer=Android
S:  Product=LE910C4-NF
S:  SerialNumber=0123456789ABCDEF
C:  #Ifs= 8 Cfg#= 1 Atr=a0 MxPwr=500mA
I:  If#=0x0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
I:  If#=0x1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)
I:  If#=0x2 Alt= 0 #EPs= 1 Cls=02(commc) Sub=06 Prot=00 Driver=cdc_ether
I:  If#=0x3 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
I:  If#=0x4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
I:  If#=0x5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
I:  If#=0x6 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
I:  If#=0x7 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option

And here are the AT commands:

at+cgmr
M0F.660012

OK
at#usbcfg?
#USBCFG: 4

OK
at+cops?
+COPS: 0,0,"Boost Mobile",7

OK
at+cpin?
+CPIN: READY

OK
at+creg?
+CREG: 0,1

OK
at+cgreg?
+CGREG: 0,1

OK
at+cfun?
+CFUN: 1

OK
at#swpkgv
25.21.662-P0F.662900
M0F.660012
P0F.662900
A0F.660012

OK
at#fwswitch?
#FWSWITCH: 0,0,0

OK
at+cgdcont?
+CGDCONT: 1,"IP","nxtgenphone","",0,0,0,0
+CGDCONT: 2,"IPV4V6","ims","",0,0,0,0
+CGDCONT: 3,"IPV4V6","sos","",0,0,0,1
+CGDCONT: 4,"IPV4V6","attm2mglobal","",0,0,0,0

OK
at+csq
+CSQ: 13,5

OK

Can you check the NetworkManager/dhcpcd services with systemctl?

Here is the systemctl output:

root@PiSpot:/home/anon# systemctl status NetworkManager
● NetworkManager.service - Network Manager
     Loaded: loaded (/lib/systemd/system/NetworkManager.service; disabled; vendor preset: enabled)
    Drop-In: /usr/lib/systemd/system/NetworkManager.service.d
             └─10-dhcpcd.conf
     Active: inactive (dead)
       Docs: man:NetworkManager(8)
root@PiSpot:/home/anon# systemctl status dhcpcd
● dhcpcd.service - DHCP Client Daemon
     Loaded: loaded (/lib/systemd/system/dhcpcd.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2024-02-03 21:55:35 GMT; 10min ago
       Docs: man:dhcpcd(8)
    Process: 496 ExecStart=/usr/sbin/dhcpcd -b -q (code=exited, status=0/SUCCESS)
   Main PID: 522 (dhcpcd)
      Tasks: 2 (limit: 1595)
        CPU: 1.613s
     CGroup: /system.slice/dhcpcd.service
             ├─522 /usr/sbin/dhcpcd -b -q
             └─663 wpa_supplicant -B -c/etc/wpa_supplicant/wpa_supplicant.conf -iwlan0

Feb 03 21:55:44 PiSpot dhcpcd[522]: eth0: leased 192.168.0.29 for 86400 seconds
Feb 03 21:55:44 PiSpot dhcpcd[522]: eth0: adding route to 192.168.0.0/24
Feb 03 21:55:44 PiSpot dhcpcd[522]: eth0: adding default route via 192.168.0.1
Feb 03 21:55:46 PiSpot dhcpcd[522]: wwan0: leased 192.168.225.32 for 43200 seconds
Feb 03 21:55:46 PiSpot dhcpcd[522]: wwan0: adding route to 192.168.225.0/24
Feb 03 21:55:46 PiSpot dhcpcd[522]: wwan0: adding default route via 192.168.225.1
Feb 03 21:55:49 PiSpot dhcpcd[522]: wlan0: using IPv4LL address 169.254.69.67
Feb 03 21:55:49 PiSpot dhcpcd[522]: wlan0: adding route to 169.254.0.0/16
Feb 03 21:55:51 PiSpot dhcpcd[522]: wwan0: no IPv6 Routers available
Feb 03 21:55:52 PiSpot dhcpcd[522]: wlan0: no IPv6 Routers available

Sounds like it might actually be doing something…I’ll try disabling dhcpcd for wwan0.

Seems like I may still need dhcpcd in some way. Here is the interface after adding denyinterfaces wwan0 to /etc/dhcpcd.conf:

root@PiSpot:/home/anon# ifconfig wwan0
wwan0: flags=4098<BROADCAST,MULTICAST>  mtu 1500
        ether 36:ab:f3:e3:e0:59  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

If you are going with QMI, AT#USBCFG? should return 0, otherwise,send AT#USBCFG=0 then reboot the module after 10 seconds , AT#REBOOT. Also do not disable the dhcpcd service.

Ideally, I want to use ECM, and not QMI or PPP. I did that the one time I tried QMI, but still to no avail.

Do you have any idea why I’m getting TX and RX packets on wwan0 in ECM mode, yet still cannot ping or access anything on the Internet?

So can you then perform the following checks:

Check the ECM with AT#ECM? Should return 0,1

Is the PDP context active with AT+CGACT? and if so, do you have an IP address when you check with AT+CGPADDR=1

Can you ping from the module: AT#PING="www.sixfab.com"

Here are the outputs of those commands. It looks like it’s getting an IP address, but it’s different than the one wwan0 has:

at#ecm=1,0
OK

at#ecm?
#ECM: 0,1
OK

at+cgact?
+CGACT: 1,1
+CGACT: 2,1
+CGACT: 3,0
+CGACT: 4,1
OK

at+cgpaddr=1
+CGPADDR: 1,"*.*.*.*"
OK

AT#PING="www.sixfab.com"
ERROR

at#ping="www.google.com"
ERROR

Have you seen this type of behavior before @ensar ? Is there something wrong with the interface/DHCP configuration?

  • Verify that the default gateway for the wwan0 interface is correctly set. You can use the following command to check the routing table:
ip route show

Ensure that there is a default route pointing to the gateway associated with the wwan0 interface.

  • Confirm that the DNS servers are correctly configured. You can check the /etc/resolv.conf file to see if it contains the correct DNS server entries.

  • Check if there are any firewall rules that might be blocking outgoing traffic on the wwan0 interface. Ensure that the firewall allows necessary traffic.

  • Use network monitoring tools such as tcpdump or Wireshark to inspect network traffic on the wwan0 interface. This can help identify any issues with communication.

After performing these checks, if the issue persists, there might be specific details in the logs or additional diagnostics that could provide more insight into the problem. Reviewing system logs (/var/log/syslog or /var/log/messages ) and cellular module logs may reveal relevant information.