<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p data-start="0" data-end="417">After creating a usbmon trace and
letting ChatGPT-5 analyze it:</p>
<p data-start="0" data-end="417">Short answer: your pings stopped
working because you told the modem to <strong data-start="71"
data-end="93">expect QMAP frames</strong>, but the host is still
sending <strong data-start="125" data-end="152">plain raw‑IP on <code
data-start="143" data-end="150">wwan0</code></strong>. With
WDA set to <code data-start="170" data-end="206">ul-protocol=qmap,
dl-protocol=qmap</code>, the device will drop raw‑IP uplink
packets as “incorrectly received”, which matches the counter
you’re seeing. On Linux, adding the 4‑byte QMAP header on TX (and
stripping it on RX) only happens if you either:</p>
<ul data-start="419" data-end="567">
<li data-start="419" data-end="495">
<p data-start="421" data-end="495">create a <strong
data-start="430" data-end="442"><code data-start="432"
data-end="440">qmimux</code></strong> interface (kernel’s
built‑in QMAP multiplexer), or</p>
</li>
<li data-start="496" data-end="567">
<p data-start="498" data-end="567">put the device into <strong
data-start="518" data-end="534">pass‑through</strong> and
let <strong data-start="543" data-end="554"><code
data-start="545" data-end="552">rmnet</code></strong>
handle QMAP.</p>
</li>
</ul>
<p data-start="569" data-end="692">If you enable QMAP in the modem
but keep using <code data-start="616" data-end="623">wwan0</code>
directly without <code data-start="641" data-end="649">qmimux</code>/<code
data-start="650" data-end="657">rmnet</code>, uplink traffic
won’t be accepted.</p>
<p data-start="569" data-end="692"><br>
</p>
<p><br>
</p>
<div class="moz-cite-prefix">Am 18.08.2025 um 08:35 schrieb Martin
Maurer:<br>
</div>
<blockquote type="cite"
cite="mid:115b3805-a16e-4e65-94ec-c424404a69c5@mmeacs.de">Here is
an additional note:
<br>
<br>
I was missing
<br>
<br>
ip route replace default dev wwan0
<br>
<br>
but this does not make it going.
<br>
<br>
I tried:
<br>
<br>
root@test-phyboard-pollux-imx8mp-3:~# qmicli
--device=/dev/cdc-wdm0 --device-open-proxy
--wds-get-packet-statistics
<br>
[/dev/cdc-wdm0] Connection statistics:
<br>
TX packets OK: 1
<br>
RX packets OK: 2
<br>
TX packets dropped: 0
<br>
RX packets dropped: 0
<br>
TX bytes OK: 79
<br>
RX bytes OK: 223
<br>
root@test-phyboard-pollux-imx8mp-3:~# ping -4 -I wwan0 8.8.8.8
<br>
PING 8.8.8.8 (8.8.8.8): 56 data bytes
<br>
^C
<br>
--- 8.8.8.8 ping statistics ---
<br>
19 packets transmitted, 0 packets received, 100% packet loss
<br>
root@triorail-phyboard-pollux-imx8mp-3:~# qmicli
--device=/dev/cdc-wdm0 --device-open-proxy
--wds-get-packet-statistics
<br>
[/dev/cdc-wdm0] Connection statistics:
<br>
TX packets OK: 1
<br>
RX packets OK: 2
<br>
TX packets dropped: 0
<br>
RX packets dropped: 0
<br>
TX bytes OK: 79
<br>
RX bytes OK: 223
<br>
root@test-phyboard-pollux-imx8mp-3:~#
<br>
<br>
Packet statistics does not see my sent "TX packets"...
<br>
<br>
I see the outgoing packets on
<br>
<br>
root@test-phyboard-pollux-imx8mp-3:~# tcpdump -i wwan0
<br>
tcpdump: verbose output suppressed, use -v[v]... for full protocol
decode
<br>
listening on wwan0, link-type RAW (Raw IP), snapshot length 262144
bytes
<br>
06:09:34.870791 IP 192.0.0.2 > dns.google: ICMP echo request,
id 29726, seq 0, length 64
<br>
06:09:35.871287 IP 192.0.0.2 > dns.google: ICMP echo request,
id 29726, seq 1, length 64
<br>
06:09:36.871728 IP 192.0.0.2 > dns.google: ICMP echo request,
id 29726, seq 2, length 64
<br>
06:09:37.871891 IP 192.0.0.2 > dns.google: ICMP echo request,
id 29726, seq 3, length 64
<br>
06:09:38.872373 IP 192.0.0.2 > dns.google: ICMP echo request,
id 29726, seq 4, length 64
<br>
06:09:39.872843 IP 192.0.0.2 > dns.google: ICMP echo request,
id 29726, seq 5, length 64
<br>
06:09:40.873290 IP 192.0.0.2 > dns.google: ICMP echo request,
id 29726, seq 6, length 64
<br>
06:09:41.873740 IP 192.0.0.2 > dns.google: ICMP echo request,
id 29726, seq 7, length 64
<br>
06:09:59.055705 IP 0.0.0.0.bootpc > 255.255.255.255.bootps:
BOOTP/DHCP, Request from b6:39:cb:24:ba:d2 (oui Unknown), length
318
<br>
06:11:03.278826 IP 0.0.0.0.bootpc > 255.255.255.255.bootps:
BOOTP/DHCP, Request from b6:39:cb:24:ba:d2 (oui Unknown), length
318
<br>
06:12:06.785606 IP 0.0.0.0.bootpc > 255.255.255.255.bootps:
BOOTP/DHCP, Request from b6:39:cb:24:ba:d2 (oui Unknown), length
318
<br>
06:13:10.620266 IP 0.0.0.0.bootpc > 255.255.255.255.bootps:
BOOTP/DHCP, Request from b6:39:cb:24:ba:d2 (oui Unknown), length
318
<br>
06:14:14.162927 IP 0.0.0.0.bootpc > 255.255.255.255.bootps:
BOOTP/DHCP, Request from b6:39:cb:24:ba:d2 (oui Unknown), length
318
<br>
06:15:17.190064 IP 0.0.0.0.bootpc > 255.255.255.255.bootps:
BOOTP/DHCP, Request from b6:39:cb:24:ba:d2 (oui Unknown), length
318
<br>
06:15:55.451557 IP 192.0.0.2 > dns.google: ICMP echo request,
id 30052, seq 0, length 64
<br>
06:15:56.452021 IP 192.0.0.2 > dns.google: ICMP echo request,
id 30052, seq 1, length 64
<br>
06:15:57.452453 IP 192.0.0.2 > dns.google: ICMP echo request,
id 30052, seq 2, length 64
<br>
06:15:58.452888 IP 192.0.0.2 > dns.google: ICMP echo request,
id 30052, seq 3, length 64
<br>
06:15:59.453035 IP 192.0.0.2 > dns.google: ICMP echo request,
id 30052, seq 4, length 64
<br>
06:16:00.453468 IP 192.0.0.2 > dns.google: ICMP echo request,
id 30052, seq 5, length 64
<br>
06:16:01.453912 IP 192.0.0.2 > dns.google: ICMP echo request,
id 30052, seq 6, length 64
<br>
06:16:02.454560 IP 192.0.0.2 > dns.google: ICMP echo request,
id 30052, seq 7, length 64
<br>
06:16:03.455017 IP 192.0.0.2 > dns.google: ICMP echo request,
id 30052, seq 8, length 64
<br>
06:16:04.455342 IP 192.0.0.2 > dns.google: ICMP echo request,
id 30052, seq 9, length 64
<br>
^C
<br>
24 packets captured
<br>
24 packets received by filter
<br>
0 packets dropped by kernel
<br>
root@test-phyboard-pollux-imx8mp-3:~#
<br>
<br>
Checking again:
<br>
<br>
root@test-phyboard-pollux-imx8mp-3:~# qmicli -d /dev/cdc-wdm0
--wda-get-data-format
<br>
[/dev/cdc-wdm0] Successfully got data format
<br>
QoS flow header: no
<br>
Link layer protocol: 'raw-ip'
<br>
Uplink data aggregation protocol: 'qmap'
<br>
Downlink data aggregation protocol: 'qmap'
<br>
NDP signature: '0'
<br>
Downlink data aggregation max datagrams: '1'
<br>
Downlink data aggregation max size: '8192'
<br>
root@test-phyboard-pollux-imx8mp-3:~# cat
/sys/class/net/wwan0/qmi/raw_ip
<br>
Y
<br>
root@test-phyboard-pollux-imx8mp-3:~#
<br>
<br>
<br>
Do I need a call to
<br>
<br>
--wds-bind-data-port
<br>
<br>
?
<br>
<br>
<br>
So I assume routing of data packet to radio module is working,
outgoing packets arrive at radio module, but radio module is still
in some mode,
<br>
<br>
where it assumes a different packet format than the host sends?
<br>
<br>
<br>
Best regards,
<br>
<br>
Martin
<br>
<br>
<br>
Am 17.08.2025 um 21:12 schrieb Martin Maurer:
<br>
<blockquote type="cite">Hello,
<br>
<br>
due to a bug with USB3 and default settings, I am currently
trying to establish a connection with QMAP enabled.
<br>
<br>
(see my previous message here in this mailing list)
<br>
<br>
I don't need multiple connections, one fast stable connection is
enough for the moment.
<br>
<br>
It looks like qmimux is not enabled in my used Linux kernel(s).
I hope my current test work also without it?
<br>
<br>
I can set QMAP mode, able to establish an Internet connection,
<br>
<br>
but ping is not working.
<br>
<br>
See here what I am doing:
<br>
<br>
(I repeated some command, just to be sure, the settings are
still there like I set before)
<br>
<br>
<br>
root@test-phyboard-pollux-imx8mp-3:~# qmicli --version
<br>
<br>
qmicli 1.36.0
<br>
Copyright (C) 2012-2023 Aleksander Morgado
<br>
License GPLv2+: GNU GPL version 2 or later
<a class="moz-txt-link-rfc2396E" href="http://gnu.org/licenses/gpl-2.0.html"><http://gnu.org/licenses/gpl-2.0.html></a>
<br>
This is free software: you are free to change and redistribute
it.
<br>
There is NO WARRANTY, to the extent permitted by law.
<br>
<br>
root@test-phyboard-pollux-imx8mp-3:~#
<br>
<br>
root@test-phyboard-pollux-imx8mp-3:~# cat
/sys/class/net/wwan0/qmi/raw_ip
<br>
N
<br>
root@test-phyboard-pollux-imx8mp-3:~# echo Y | tee
/sys/class/net/wwan0/qmi/raw_ip
<br>
Y
<br>
tee: /sys/class/net/wwan0/qmi/raw_ip: Device or resource busy
<br>
root@test-phyboard-pollux-imx8mp-3:~# ip link set wwan0 down
<br>
root@test-phyboard-pollux-imx8mp-3:~# cat
/sys/class/net/wwan0/qmi/raw_ip
<br>
N
<br>
root@test-phyboard-pollux-imx8mp-3:~# echo Y | tee
/sys/class/net/wwan0/qmi/raw_ip
<br>
Y
<br>
root@test-phyboard-pollux-imx8mp-3:~# cat
/sys/class/net/wwan0/qmi/raw_ip
<br>
Y
<br>
root@test-phyboard-pollux-imx8mp-3:~# ip link set wwan0 up
<br>
root@test-phyboard-pollux-imx8mp-3:~# cat
/sys/class/net/wwan0/qmi/raw_ip
<br>
Y
<br>
root@test-phyboard-pollux-imx8mp-3:~# qmicli -d /dev/cdc-wdm0
--wda-get-data-format
<br>
error: couldn't create client for the 'wda' service: CID
allocation failed in the CTL client: Transaction timed out
<br>
<br>
=> First QMI transaction seems to be always timeout out (but
not relevant for my question, just doing command again...)
<br>
<br>
root@test-phyboard-pollux-imx8mp-3:~# qmicli -d /dev/cdc-wdm0
--wda-get-data-format
<br>
[/dev/cdc-wdm0] Successfully got data format
<br>
QoS flow header: no
<br>
Link layer protocol: 'raw-ip'
<br>
Uplink data aggregation protocol: 'disabled'
<br>
Downlink data aggregation protocol: 'disabled'
<br>
NDP signature: '0'
<br>
Downlink data aggregation max datagrams: '0'
<br>
Downlink data aggregation max size: '0'
<br>
root@test-phyboard-pollux-imx8mp-3:~# qmicli -d /dev/cdc-wdm0
--wda-set-data-format="link-layer-protocol=raw-ip,ul-protocol=qmap,dl-protocol=qmap,dl-datagram-max-size=8192,ep-type=hsusb,ep-iface-number=4,ul-datagram-max-size=8192"<br>
[/dev/cdc-wdm0] Successfully set data format
<br>
QoS flow header: no
<br>
Link layer protocol: 'raw-ip'
<br>
Uplink data aggregation protocol: 'qmap'
<br>
Downlink data aggregation protocol: 'qmap'
<br>
NDP signature: '0'
<br>
Downlink data aggregation max datagrams: '1'
<br>
Downlink data aggregation max size: '8192'
<br>
Uplink data aggregation max datagrams: '1'
<br>
Uplink data aggregation max size: '8192'
<br>
root@test-phyboard-pollux-imx8mp-3:~# qmicli -d /dev/cdc-wdm0
--wda-get-data-format
<br>
[/dev/cdc-wdm0] Successfully got data format
<br>
QoS flow header: no
<br>
Link layer protocol: 'raw-ip'
<br>
Uplink data aggregation protocol: 'qmap'
<br>
Downlink data aggregation protocol: 'qmap'
<br>
NDP signature: '0'
<br>
Downlink data aggregation max datagrams: '1'
<br>
Downlink data aggregation max size: '8192'
<br>
<br>
<br>
=> I have set downlink and uplink parameter. They are
outputted with "set", but "get" does not display "uplink". Just
printing missing? Error in libqmi?
<br>
<br>
<br>
root@test-phyboard-pollux-imx8mp-3:~# qmicli -d /dev/cdc-wdm0
--wda-get-data-format
<br>
[/dev/cdc-wdm0] Successfully got data format
<br>
QoS flow header: no
<br>
Link layer protocol: 'raw-ip'
<br>
Uplink data aggregation protocol: 'qmap'
<br>
Downlink data aggregation protocol: 'qmap'
<br>
NDP signature: '0'
<br>
Downlink data aggregation max datagrams: '1'
<br>
Downlink data aggregation max size: '8192'
<br>
root@test-phyboard-pollux-imx8mp-3:~# cat
/sys/class/net/wwan0/qmi/raw_ip
<br>
Y
<br>
root@test-phyboard-pollux-imx8mp-3:~#
<br>
<br>
Some queries just to be sure, the parameters are now like they
were set...
<br>
<br>
root@test-phyboard-pollux-imx8mp-3:~# ./connection_up.sh
<br>
CID=15
<br>
[/dev/cdc-wdm0] Network started
<br>
Packet data handle: '3800235120'
<br>
[/dev/cdc-wdm0] Client ID not released:
<br>
Service: 'wds'
<br>
CID: '15'
<br>
<br>
<br>
=> Shell script which gets a WMD-CID, start-network, and
printing some commands which could be the next commands
<br>
<br>
but must be manually entered -> just for testing!
<br>
<br>
<br>
rem qmicli --device=/dev/cdc-wdm0 --device-open-proxy
--wds-get-current-settings
<br>
rem ip link set dev wwan0 down
<br>
rem ip addr add 192.0.0.2 dev wwan0
<br>
rem ip link set mtu 1472 dev wwan0
<br>
rem ip link set dev wwan0 up
<br>
rem ping -4 -I wwan0 8.8.8.8
<br>
root@test-phyboard-pollux-imx8mp-3:~# qmicli
--device=/dev/cdc-wdm0 --device-open-proxy
--wds-get-current-settings
<br>
[/dev/cdc-wdm0] Current settings retrieved:
<br>
IP Family: IPv4
<br>
IPv4 address: 192.0.0.2
<br>
IPv4 subnet mask: 255.255.255.224
<br>
IPv4 gateway address: 192.0.0.1
<br>
IPv4 primary DNS: 192.0.0.30
<br>
MTU: 1472
<br>
Domains: none
<br>
<br>
=> seems to be correct, parameters like I have seen earlier
<br>
<br>
<br>
root@test-phyboard-pollux-imx8mp-3:~# cat
/sys/class/net/wwan0/qmi/raw_ip
<br>
Y
<br>
<br>
=> still ok, good!
<br>
<br>
root@test-phyboard-pollux-imx8mp-3:~# qmicli -d /dev/cdc-wdm0
--wda-get-data-format
<br>
[/dev/cdc-wdm0] Successfully got data format
<br>
QoS flow header: no
<br>
Link layer protocol: 'raw-ip'
<br>
Uplink data aggregation protocol: 'qmap'
<br>
Downlink data aggregation protocol: 'qmap'
<br>
NDP signature: '0'
<br>
Downlink data aggregation max datagrams: '1'
<br>
Downlink data aggregation max size: '8192'
<br>
<br>
=> still ok
<br>
<br>
root@test-phyboard-pollux-imx8mp-3:~# ip link set dev wwan0 down
<br>
root@test-phyboard-pollux-imx8mp-3:~# ip addr add 192.0.0.2 dev
wwan0
<br>
root@test-phyboard-pollux-imx8mp-3:~# ip link set mtu 1472 dev
wwan0
<br>
root@test-phyboard-pollux-imx8mp-3:~# ip link set dev wwan0 up
<br>
root@test-phyboard-pollux-imx8mp-3:~# ping -4 -I wwan0 8.8.8.8
<br>
PING 8.8.8.8 (8.8.8.8): 56 data bytes
<br>
^C
<br>
--- 8.8.8.8 ping statistics ---
<br>
22 packets transmitted, 0 packets received, 100% packet loss
<br>
<br>
<br>
=> This is my current problem. Ping is not working with
"qmap" enabled.
<br>
<br>
Without qmap, I have an error with USB3 under certain (rare)
circumstances.
<br>
<br>
root@test-phyboard-pollux-imx8mp-3:~# cat
/sys/class/net/wwan0/qmi/raw_ip
<br>
Y
<br>
<br>
=> still ok
<br>
<br>
root@test-phyboard-pollux-imx8mp-3:~# ping -4 -I wwan0 8.8.8.8
<br>
PING 8.8.8.8 (8.8.8.8): 56 data bytes
<br>
^C
<br>
--- 8.8.8.8 ping statistics ---
<br>
14 packets transmitted, 0 packets received, 100% packet loss
<br>
<br>
=> Also second try it not working
<br>
<br>
root@test-phyboard-pollux-imx8mp-3:~#
<br>
<br>
<br>
Is QMAP perhaps needing qmimux for sure, and I must then add
qmimux1 and work over this?
<br>
<br>
So wwan0 is then not working anymore when activating QMAP?
<br>
<br>
As far as I remember there are different ul/dl-protocols. Is
"qmap" the right one? Or do I need "qmapv5"? What is the
difference?
<br>
<br>
ul-protocol (disabled|tlp|qc-ncm|mbim|rndis|qmap|qmapv5),
dl-protocol (disabled|tlp|qc-ncm|mbim|rndis|qmap|qmapv5)
<br>
<br>
/: Bus 002.Port 001: Dev 001, Class=root_hub,
Driver=xhci-hcd/1p, 5000M
<br>
|__ Port 001: Dev 002, If 0, Class=[unknown], Driver=option,
5000M
<br>
|__ Port 001: Dev 002, If 1, Class=[unknown], Driver=option,
5000M
<br>
|__ Port 001: Dev 002, If 2, Class=[unknown], Driver=option,
5000M
<br>
|__ Port 001: Dev 002, If 3, Class=[unknown], Driver=option,
5000M
<br>
|__ Port 001: Dev 002, If 4, Class=[unknown],
Driver=qmi_wwan, 5000M
<br>
<br>
I use a Quectel RM520N-GL for this test. If is 4.
Is ep-iface-number=4 correct? "ep" for it is I think higher like
0x07 or even 0x14???
<br>
<br>
Are my used numbers (sizes and datagrams dl/up) useable for my
use case? Or do I need to take different ones?
<br>
<br>
Many thank!
<br>
<br>
Best regards,
<br>
<br>
Martin
<br>
<br>
<br>
<br>
</blockquote>
</blockquote>
</body>
</html>