<!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>