Brought up Telit LE910C4 in ECM Mode as wwan0. Turned off system, now wwan0 has disappeared

Yesterday I got a new Base HAT up with a Telit modem. Biggest issue was that I had to use dhclient -v wwan0 to get wwan0 added and visible. Connect.sixfab.com show the unit was up and operable. End of day came so I shut things down. Today I came in, turned things on and wwan0 is nowhere to be found. minicom sees the modem just fine but ip addr doesn’t show it, nor does ifconfig. dhclient -v wwan0 returns wwan0 not found. Multiple reboots get same results. Any suggestion on how to resolve this are welcome!

Hello,

Could you please share the details according the template here?

Here’s info based on the template.

Problem Description:
Yesterday I got a new Base HAT up with a Telit modem. Biggest issue was that I had to use dhclient -v wwan0 to get wwan0 added and visible. Connect.sixfab.com show the unit was up and operable. End of day came so I shut things down. Today I came in, turned things on and wwan0 is nowhere to be found. minicom sees the modem just fine but ip addr doesn’t show it, nor does ifconfig. dhclient -v wwan0 returns wwan0 not found. Multiple reboots get same results. Any suggestion on how to resolve this are welcome!

Use Case Scenario:
I’m developing a system which includes an underwater power generator, charge controller/inverter, and cloud based server for data and as a portal for smartphone control. I’m using Eth0 to connect to the underwater unit, wlan0 to connect to the controller/inverter, and wwan0 to connect to the cloud, all on an RPI 3B+.

Environment:

RPI 3B+ with RPI OS, HAT is SixFab 3G/4G/LTE using Telit LE910C4-NF with Sixfab supplied antennae and sim. SIM ID is 8988307000002659XXXX.

Connection Type: ECM

Script:
Here’s a template of the software approach:
import socket
import ctypes
import struct

Constant for SO_BINDTODEVICE

SO_BINDTODEVICE = 25 # On Linux

def connect_via_interface(interface: str, target_ip: str, port: int):
“”“Connect to a target IP using a specific network interface”“”
print(f"Connecting to {target_ip}:{port} via {interface}")
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# Bind the socket to the specific interface (requires root)
s.setsockopt(socket.SOL_SOCKET, SO_BINDTODEVICE, interface.encode() + b'\0')

try:
    s.connect((target_ip, port))
    print(f"Connected to {target_ip} via {interface}")
    # You can send/recv here
    s.send(b"GET / HTTP/1.0\r\nHost: " + target_ip.encode() + b"\r\n\r\n")
    print(s.recv(1024))
except Exception as e:
    print(f"Connection failed: {e}")
finally:
    s.close()

Route specific targets via specific interfaces

connect_via_interface(“wlan0”, “10.0.0.5”, 80) # Local device on wlan0
connect_via_interface(“wwan0”, “1.1.1.1”, 80) # Public IP via cellular
connect_via_interface(“eth0”, “192.168.50.6”, 80) # Local device on ethernet

Linux Command Outputs:

pi@raspberrypi:~ $ cat /etc/os-release
PRETTY_NAME=“Debian GNU/Linux 12 (bookworm)”
NAME=“Debian GNU/Linux”
VERSION_ID=“12”
VERSION=“12 (bookworm)”
VERSION_CODENAME=bookworm
ID=debian
HOME_URL=“https://www.debian.org/
SUPPORT_URL=“Debian -- User Support
BUG_REPORT_URL=“https://bugs.debian.org/

Linux raspberrypi 6.12.25+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.12.25-1+rpt1 (2025-04-30) aarch64 GNU/Linux

pi@raspberrypi:~ $ lsusb
Bus 001 Device 006: ID 3554:fc03 CX 2.4G Receiver
Bus 001 Device 004: ID 090c:1000 Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.) Flash Drive
Bus 001 Device 005: ID 1bc7:1206 Telit Wireless Solutions LE910C4-NF
Bus 001 Device 007: ID 0424:7800 Microchip Technology, Inc. (formerly SMSC)
Bus 001 Device 003: ID 0424:2514 Microchip Technology, Inc. (formerly SMSC) USB 2.0 Hub
Bus 001 Device 002: ID 0424:2514 Microchip Technology, Inc. (formerly SMSC) USB 2.0 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

pi@raspberrypi:~ $ 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/4p, 480M
|__ Port 1: Dev 3, If 0, Class=Hub, Driver=hub/3p, 480M
|__ Port 2: Dev 5, If 4, Class=Vendor Specific Class, Driver=option, 480M
|__ Port 2: Dev 5, If 2, Class=Communications, Driver=cdc_ether, 480M
|__ Port 2: Dev 5, If 0, Class=Vendor Specific Class, Driver=option, 480M
|__ Port 2: Dev 5, If 7, Class=Vendor Specific Class, Driver=option, 480M
|__ Port 2: Dev 5, If 5, Class=Vendor Specific Class, Driver=option, 480M
|__ Port 2: Dev 5, If 3, Class=CDC Data, Driver=cdc_ether, 480M
|__ Port 2: Dev 5, If 1, Class=Vendor Specific Class, Driver=, 480M
|__ Port 2: Dev 5, If 6, Class=Vendor Specific Class, Driver=option, 480M
|__ Port 1: Dev 7, If 0, Class=Vendor Specific Class, Driver=lan78xx, 480M
|__ Port 2: Dev 4, If 0, Class=Mass Storage, Driver=usb-storage, 480M
|__ Port 3: Dev 6, If 0, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 3: Dev 6, If 1, Class=Human Interface Device, Driver=usbhid, 12M

pi@raspberrypi:~ $ 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.12
S: Manufacturer=Linux 6.12.25+rpt-rpi-v8 dwc_otg_hcd
S: Product=DWC OTG Controller
S: SerialNumber=3f980000.usb
C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=256ms

T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=480 MxCh= 4
D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=02 MxPS=64 #Cfgs= 1
P: Vendor=0424 ProdID=2514 Rev=0b.b3
C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=2mA
I: If#= 0 Alt= 1 #EPs= 1 Cls=09(hub ) Sub=00 Prot=02 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=256ms

T: Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#= 3 Spd=480 MxCh= 3
D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=02 MxPS=64 #Cfgs= 1
P: Vendor=0424 ProdID=2514 Rev=0b.b3
C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=2mA
I: If#= 0 Alt= 1 #EPs= 1 Cls=09(hub ) Sub=00 Prot=02 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=256ms

T: Bus=01 Lev=03 Prnt=03 Port=00 Cnt=01 Dev#= 7 Spd=480 MxCh= 0
D: Ver= 2.10 Cls=ff(vend.) Sub=00 Prot=ff MxPS=64 #Cfgs= 1
P: Vendor=0424 ProdID=7800 Rev=03.00
C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=2mA
I: If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=ff Driver=lan78xx
E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=83(I) Atr=03(Int.) MxPS= 16 Ivl=1ms

T: Bus=01 Lev=03 Prnt=07 Port=01 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=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#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I: If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)
E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I: If#= 2 Alt= 0 #EPs= 1 Cls=02(commc) Sub=06 Prot=00 Driver=cdc_ether
E: Ad=84(I) Atr=03(Int.) MxPS= 16 Ivl=32ms
I: If#= 3 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I: If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=86(I) Atr=03(Int.) MxPS= 10 Ivl=32ms
I: If#= 5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E: Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=88(I) Atr=03(Int.) MxPS= 10 Ivl=32ms
I: If#= 6 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E: Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=89(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=8a(I) Atr=03(Int.) MxPS= 10 Ivl=32ms
I: If#= 7 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E: Ad=07(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=8b(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=8c(I) Atr=03(Int.) MxPS= 10 Ivl=32ms

T: Bus=01 Lev=02 Prnt=05 Port=01 Cnt=01 Dev#= 4 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=090c ProdID=1000 Rev=11.00
S: Manufacturer=USB
S: Product=USB Flash Disk
S: SerialNumber=FBL1606140200292
C: #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=300mA
I: If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=31875us
E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

T: Bus=01 Lev=02 Prnt=04 Port=02 Cnt=01 Dev#= 6 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=3554 ProdID=fc03 Rev=07.90
S: Manufacturer=CX
S: Product=2.4G Receiver
C: #Ifs= 2 Cfg#= 1 Atr=a0 MxPwr=100mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=01 Driver=usbhid
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=2ms
I: If#= 1 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=02 Driver=usbhid
E: Ad=82(I) Atr=03(Int.) MxPS= 8 Ivl=2ms

pi@raspberrypi:~ $ dmesg |grep tty
[ 0.000000] Kernel command line: coherent_pool=1M 8250.nr_uarts=0 snd_bcm2835.enable_headphones=0 cgroup_disable=memory snd_bcm2835.enable_headphones=1 snd_bcm2835.enable_hdmi=1 snd_bcm2835.enable_hdmi=0 vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000 console=ttyS0,115200 console=tty1 root=PARTUUID=0d003022-02 rootfstype=ext4 fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles cfg80211.ieee80211_regdom=US
[ 0.000415] printk: legacy console [tty1] enabled
[ 3.074689] 3f201000.serial: ttyAMA1 at MMIO 0x3f201000 (irq = 99, base_baud = 0) is a PL011 rev2
[ 3.074853] serial serial0: tty port ttyAMA1 registered
[ 6.039860] systemd[1]: Created slice system-getty.slice - Slice /system/getty.
[ 8.659978] usb 1-1.1.2: GSM modem (1-port) converter now attached to ttyUSB0
[ 8.665774] usb 1-1.1.2: GSM modem (1-port) converter now attached to ttyUSB1
[ 8.667058] usb 1-1.1.2: GSM modem (1-port) converter now attached to ttyUSB2
[ 8.668018] usb 1-1.1.2: GSM modem (1-port) converter now attached to ttyUSB3
[ 8.669470] usb 1-1.1.2: GSM modem (1-port) converter now attached to ttyUSB4

pi@raspberrypi:~ $ ls -l /sys/bus/usb-serial/devices
total 0
lrwxrwxrwx 1 root root 0 May 22 17:08 ttyUSB0 → …/…/…/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.1/1-1.1.2/1-1.1.2:1.0/ttyUSB0
lrwxrwxrwx 1 root root 0 May 22 17:08 ttyUSB1 → …/…/…/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.1/1-1.1.2/1-1.1.2:1.4/ttyUSB1
lrwxrwxrwx 1 root root 0 May 22 17:08 ttyUSB2 → …/…/…/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.1/1-1.1.2/1-1.1.2:1.5/ttyUSB2
lrwxrwxrwx 1 root root 0 May 22 17:08 ttyUSB3 → …/…/…/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.1/1-1.1.2/1-1.1.2:1.6/ttyUSB3
lrwxrwxrwx 1 root root 0 May 22 17:08 ttyUSB4 → …/…/…/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.1/1-1.1.2/1-1.1.2:1.7/ttyUSB4

pi@raspberrypi:~ $ ls -l /dev/serial/by-id
total 0
lrwxrwxrwx 1 root root 13 May 22 15:13 usb-Android_LE910C4-NF_0123456789ABCDEF-if00-port0 → …/…/ttyUSB0
lrwxrwxrwx 1 root root 13 May 22 15:13 usb-Android_LE910C4-NF_0123456789ABCDEF-if04-port0 → …/…/ttyUSB1
lrwxrwxrwx 1 root root 13 May 22 15:13 usb-Android_LE910C4-NF_0123456789ABCDEF-if05-port0 → …/…/ttyUSB2
lrwxrwxrwx 1 root root 13 May 22 15:13 usb-Android_LE910C4-NF_0123456789ABCDEF-if06-port0 → …/…/ttyUSB3
lrwxrwxrwx 1 root root 13 May 22 15:13 usb-Android_LE910C4-NF_0123456789ABCDEF-if07-port0 → …/…/ttyUSB4

AT Responses:
Telit Modules
AT OK
ATI 332, OK
AT+CGMR M0F.660012, OK
AT+CPIN? +CPIN: READY
AT+CPAS +CPAS: 0, OK
AT+CFUN? +CFUN: 1, OK
AT+COPS? +COPS: 0,0,”T-Mobile”,7, OK
AT#USBCFG? #USBCFG: 4, OK
AT#BND? #BND: ,10,80800000000381A, OK
AT+CREG? +CREG: 0,5, OK
AT+CGDCONT?
-CGDCONT: 1,”IPV4V6”,”super”,””,0,0,0,0
-CGDCONT: 2,”IPV4V6”,”ims”,””,0,0,0,0
-CGDCONT: 3,”IPV4V6”,”sos”,””,0,0,0,0
-CGDCONT: 4,”IPV4V6”,”attm2mglobal”,””,0,0,0,0
OK
AT+CSQ -CSQ: 20,4 , OK
AT+CGATT? -CGATT: 1 , OK
AT+GMMnLE910-NF
AT#SWPKGV
25.21.662-P0F.662900
M0F.660012
P0F.662900
A0F.66012
OK
AT#FWSWITCH? FWSWITCH: 0,0,0 ,OK
AT+CGREG? -CGREG: 0,5 ,OK
AT#CGPADDR=
#CGPADDR: 1,”100.74.196.78”
#CGPADDR: 2,””
#CGPADDR: 3,””
#CGPADDR: 4,””
OK

Any suggestions as to how to get wwan0 back up are most appreciated!!