Libqmi setup fails on Telit LE910C4-NF: pdn-ipv4-call-disallowed

I’ve been struggling to make a connection with my Pi Hat for a while now, and I can’t seem to find another remedy online, so I’m hoping that I can receive some help on here. I’m just a student, so I’m new to all of this Linux and 4G LTE stuff.

Essentially, I’m trying to get a Mint Mobile (T-Mobile network) SIM working with the Telit LE910C4-NF using libqmi. I follow all of the commands to a tee, and everything seems to work great until I get to sudo qmicli -p -d /dev/cdc-wdm0 --device-open-net='net-raw-ip|net-no-qos-header' --wds-start-network="apn='Wholesale',ip-type=4" --client-no-release-cid. I’ve verified that the APN is correct and that there is no username or password required. The error that command gives me is this:

error: couldn't start network: QMI protocol error (14): 'CallFailed'
call end reason (1): generic-unspecified
verbose call end reason (2,208): [internal] pdn-ipv4-call-disallowed
[/dev/cdc-wdm0] Client ID not released:
        Service: 'wds'
            CID: '17'

I tried leaving ip-type=4 out of the command, and that gave no error, but I still couldn’t make an internet connection and I think that it changed the IP mode to IPv6 only. I really couldn’t figure out how to fix that, so I just factory reset the Telit and started over.

Below are the outputs to the commands listed in the troubleshooting guide. Can anyone lend a hand? Thanks!

sparty@sr22:~$ uname -sr
Linux 5.13.0-1020-raspi

sparty@sr22:~$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 1bc7:1201 Telit Wireless Solutions LE910 / LE920
Bus 001 Device 003: ID 413c:2005 Dell Computer Corp. RT7D50 Keyboard
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

sparty@sr22:~$ 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=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 3: Dev 5, If 0, Class=Vendor Specific Class, Driver=option, 480M
|__ Port 3: Dev 5, If 1, Class=Vendor Specific Class, Driver=, 480M
|__ Port 3: Dev 5, If 2, Class=Vendor Specific Class, Driver=qmi_wwan, 480M
|__ Port 3: Dev 5, If 3, Class=Vendor Specific Class, Driver=option, 480M
|__ Port 3: Dev 5, If 4, Class=Vendor Specific Class, Driver=option, 480M
|__ Port 3: Dev 5, If 5, Class=Vendor Specific Class, Driver=option, 480M
|__ Port 3: Dev 5, If 6, Class=Vendor Specific Class, Driver=option, 480M

sparty@sr22:~$ ls /dev/ttyUSB*
/dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2 /dev/ttyUSB3 /dev/ttyUSB4

sparty@sr22:~$ sudo dmesg | grep tty
[ 0.000000] Kernel command line: coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1 bcm2708_fb.fbwidth=1280 bcm2708_fb.fbheight=1024 bcm2708_fb.fbswap=1 smsc95xx.macaddr=DC:A6:32:DB:1A:7F vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000 dwc_otg.lpm_enable=0 console=ttyS0,115200 console=tty1 root=LABEL=writable rootfstype=ext4 elevator=deadline rootwait fixrtc quiet splash
[ 0.001175] printk: console [tty1] enabled
[ 2.348637] fe201000.serial: ttyAMA0 at MMIO 0xfe201000 (irq = 36, base_baud = 0) is a PL011 rev2
[ 2.355763] printk: console [ttyS0] disabled
[ 2.355832] fe215040.serial: ttyS0 at MMIO 0xfe215040 (irq = 38, base_baud = 62500000) is a 16550
[ 2.355961] printk: console [ttyS0] enabled
[ 7.914465] systemd[1]: Created slice system-serial\x2dgetty.slice.
[ 9.368065] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB0
[ 9.383937] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB1
[ 9.384667] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB2
[ 9.394135] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB3
[ 9.396240] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB4
[ 402.315695] option1 ttyUSB0: GSM modem (1-port) converter now disconnected from ttyUSB0
[ 402.336208] option1 ttyUSB1: GSM modem (1-port) converter now disconnected from ttyUSB1
[ 402.338394] option1 ttyUSB2: GSM modem (1-port) converter now disconnected from ttyUSB2
[ 402.339722] option1 ttyUSB3: GSM modem (1-port) converter now disconnected from ttyUSB3
[ 402.340930] option1 ttyUSB4: GSM modem (1-port) converter now disconnected from ttyUSB4
[ 415.977403] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB0
[ 415.979453] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB1
[ 415.979940] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB2
[ 415.980424] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB3
[ 415.980892] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB4

sparty@sr22:~$ 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=05.13
S: Manufacturer=Linux 5.13.0-1020-raspi xhci-hcd
S: Product=xHCI Host Controller
S: SerialNumber=0000:01:00.0
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= 4
D: Ver= 2.10 Cls=09(hub ) Sub=00 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=2109 ProdID=3431 Rev=04.21
S: Product=USB2.0 Hub
C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=100mA
I: If#=0x0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub

T: Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#= 3 Spd=1.5 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=413c ProdID=2005 Rev=01.04
S: Manufacturer=DELL
S: Product=DELL USB Keyboard
C: #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=100mA
I: If#=0x0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=01 Driver=usbhid

T: Bus=01 Lev=02 Prnt=02 Port=02 Cnt=02 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=1201 Rev=03.18
S: Manufacturer=Android
S: Product=LE910C4-NF
S: SerialNumber=0123456789ABCDEF
C: #Ifs= 7 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= 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=option
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

T: Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=5000 MxCh= 4
D: Ver= 3.00 Cls=09(hub ) Sub=00 Prot=03 MxPS= 9 #Cfgs= 1
P: Vendor=1d6b ProdID=0003 Rev=05.13
S: Manufacturer=Linux 5.13.0-1020-raspi xhci-hcd
S: Product=xHCI Host Controller
S: SerialNumber=0000:01:00.0
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

sparty@sr22:~$ ifconfig
eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether dc:a6:32:db:1a:7f 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

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

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 35.12.210.100 netmask 255.255.255.0 broadcast 35.12.210.255
inet6 fe80::dea6:32ff:fedb:1a81 prefixlen 64 scopeid 0x20
ether dc:a6:32:db:1a:81 txqueuelen 1000 (Ethernet)
RX packets 2776 bytes 235075 (235.0 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2070 bytes 622184 (622.1 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

wwan0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500
inet6 fe80::abae:28c6:42a7:edc2 prefixlen 64 scopeid 0x20
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 8 bytes 384 (384.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

sparty@sr22:~$ sudo minicom -b 115200 -D /dev/ttyUSB2

Welcome to minicom 2.8

OPTIONS: I18n
Port /dev/ttyUSB2, 02:11:45

Press CTRL-A Z for help on special keys

AT
OK

ATI
332

OK

AT+CGMR
M0F.660010

OK

AT+CPIN?
+CPIN: READY

OK

AT+CPAS
+CPAS: 0

OK

AT+CFUN?
+CFUN: 1

OK

AT+COPS?
+COPS: 0,0,“Mint”,7

OK

AT#USBCFG?
#USBCFG: 0

OK

AT#BND?
#BND: ,10,80800000000381A

OK

AT+CREG?
+CREG: 0,1

OK

AT+CGDCONT?
+CGDCONT: 1,“IP”,“Wholesale”,"",0,0,0,0
+CGDCONT: 2,“IPV4V6”,“ims”,"",0,0,0,0
+CGDCONT: 3,“IPV4V6”,“sos”,"",0,0,0,1

OK

AT+CSQ
+CSQ: 22,3

OK

AT+CGATT?
+CGATT: 1

OK

AT+GMM
LE910C4-NF

OK

AT#SWPKGV
25.21.690-P0F.661803
M0F.660010
P0F.661803
A0F.660010

OK

Hi @TheYonkk ,

Thanks for the detailed logs describing the issue.

This says you can’t use IPv4 on this APN. Try setting the IP family to v6 only with ip-type=6.
Other than that all other log output looks fine.

Yes, I tried using ip-type=6. The problem with that, however, is that udhcpc only supports ipv4 leasing. So, no cigar.

After pulling my hair out trying to find a replacement for udhcpc, I tried modem-manager which was a godsend. It handles pretty much all of the configuration for you. Here’s the Ubuntu docs for it: Configure Cellular Connections | Ubuntu

The only difference that I ran into, for other people in the same situation as me, is that the cellular hat isn’t automatically recognized as a modem, so sudo modem-manager.mmcli -L won’t work. That’s fine, however, because you can still register the modem through it’s interface cdc-wdm0. Or, even easier, you can use a wildcard to register all potential interfaces:

sudo nmcli c add type gsm ifname '*' con-name <name> apn <operator_apn>

Good stuff. Thank you for the suggestion, @ensar. I don’t use raspberry pi OS, so I’m not certain of modem-manager’s compatibility with it, but it seems like it greatly simplifies the modem setup. It reduces the setup to just a few commands. Perhaps a tutorial should be made for it.

1 Like