Adding OpenWrt support for Xiaomi AX3600 (Part 1)

bild

Use this for visualisation. If you configure your router WiFi across UNII-bounds might or might not have issues depending on which country profile you are using. Basically, only four (4) 80MHz channels are practically usable (if you slot them into right places, otherwise the trample on each other) and even then, only two of them are guaranteed not to be kicked off air by DFS. 160MHz, picking odd channels etc. is fun but not really usable beyond experimentation.

Basically, everything that is gray might get kicked off the air. And you still need to slot it right or it might get even worse.

1 Like

Is anyone ese having issues connecting devices via Ethernet when running IPQ807x-5.10-backports branch (latest commit)? When connected to WiFi everything works fine but when connecting via Ethernet the packets seem to get lost.

Make sure you use the WAN port as uplink. I have no issues with the latest build, both LAN and WAN (PPPoE) works with gigabit speed.

This is LAN-LAN:

C:\Users\Administrator\Desktop\Iperf_3.9>iperf3.exe -c 192.168.2.200
Connecting to host 192.168.2.200, port 5201
[  5] local 192.168.2.2 port 51416 connected to 192.168.2.200 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec   115 MBytes   965 Mbits/sec
[  5]   1.00-2.00   sec   113 MBytes   950 Mbits/sec
[  5]   2.00-3.00   sec   113 MBytes   949 Mbits/sec
[  5]   3.00-4.00   sec   113 MBytes   948 Mbits/sec
[  5]   4.00-5.00   sec   113 MBytes   949 Mbits/sec
[  5]   5.00-6.00   sec   113 MBytes   949 Mbits/sec
[  5]   6.00-7.00   sec   112 MBytes   940 Mbits/sec
[  5]   7.00-8.00   sec   113 MBytes   949 Mbits/sec
[  5]   8.00-9.00   sec   112 MBytes   939 Mbits/sec
[  5]   9.00-10.00  sec   113 MBytes   949 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.00  sec  1.10 GBytes   949 Mbits/sec                  sender
[  5]   0.00-10.05  sec  1.10 GBytes   943 Mbits/sec                  receiver

iperf Done.

C:\Users\Administrator\Desktop\Iperf_3.9>iperf3.exe -c 192.168.2.200 -R
Connecting to host 192.168.2.200, port 5201
Reverse mode, remote host 192.168.2.200 is sending
[  5] local 192.168.2.2 port 51420 connected to 192.168.2.200 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec   114 MBytes   956 Mbits/sec
[  5]   1.00-2.00   sec   113 MBytes   946 Mbits/sec
[  5]   2.00-3.00   sec   113 MBytes   946 Mbits/sec
[  5]   3.00-4.00   sec   113 MBytes   945 Mbits/sec
[  5]   4.00-5.00   sec   113 MBytes   945 Mbits/sec
[  5]   5.00-6.00   sec   113 MBytes   948 Mbits/sec
[  5]   6.00-7.00   sec   113 MBytes   948 Mbits/sec
[  5]   7.00-8.00   sec   113 MBytes   948 Mbits/sec
[  5]   8.00-9.00   sec   113 MBytes   947 Mbits/sec
[  5]   9.00-10.00  sec   113 MBytes   948 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.05  sec  1.11 GBytes   945 Mbits/sec    0             sender
[  5]   0.00-10.00  sec  1.10 GBytes   948 Mbits/sec                  receiver

iperf Done.

I had SSL errors and lost packets on Ethernet when using build with kmod-qca-nss-drv enabled. After reading this post Adding OpenWrt support for Xiaomi AX3600 - #3874 by hgblob I tried to disable it and since then I don't have such issues

I am using eth0.6 as uplink since my ISP uses VLAN tagging for the PPPoE connection. Maybe that is the issue. I could try untagging on another router to see if that solves the problem.

That is the exact issue I am having...

$ curl -vv https://www.google.com
* Expire in 0 ms for 6 (transfer 0x5573e38f30)
* Expire in 1 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 1 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 1 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 1 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 1 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 1 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 1 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 1 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 1 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 1 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 2 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 2 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 2 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 2 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 2 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 2 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 2 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 2 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 2 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 2 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 2 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 2 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 2 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 2 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 2 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 2 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 2 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 2 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 2 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 2 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 2 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 2 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 2 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 2 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 2 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 2 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 2 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 2 ms for 1 (transfer 0x5573e38f30)
* Expire in 0 ms for 1 (transfer 0x5573e38f30)
* Expire in 1 ms for 1 (transfer 0x5573e38f30)
* Expire in 2 ms for 1 (transfer 0x5573e38f30)
* Expire in 1 ms for 1 (transfer 0x5573e38f30)
* Expire in 1 ms for 1 (transfer 0x5573e38f30)
* Expire in 4 ms for 1 (transfer 0x5573e38f30)
* Expire in 1 ms for 1 (transfer 0x5573e38f30)
* Expire in 1 ms for 1 (transfer 0x5573e38f30)
* Expire in 2 ms for 1 (transfer 0x5573e38f30)
*   Trying 216.58.215.132...
* TCP_NODELAY set
* Expire in 149995 ms for 3 (transfer 0x5573e38f30)
* Expire in 200 ms for 4 (transfer 0x5573e38f30)
* Connected to www.google.com (216.58.215.132) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: none
  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to www.google.com:443 
* Closing connection 0
curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to www.google.com:443 

I am using pure PPPoE as WAN, so no tagging here. It seems tagging is likely the issue. Do you use IPv6? On my end its V4 only.

1 Like

I am also using IPv4 only.
I tried untagging the traffic outside the router and the issues are gone. So we can confirm that the problem was with the VLAN uplink. Thanks!

3 Likes

does anyone know why i got 'QMI FW ready timeout'

qdf_assert_always(0); -> lead to system crash or kernel panic

Just to confirm, you did try without NSS, and it produced the same issue?

@robimarko I know you are going to hate me, but it seems we will need to pull those updates for your NSS repo... There are some large scale changes, especially in the DP and NSS-DRV parts. VLAN tagging is not some fancy acceleration feature we can live without :slight_smile:

1 Like

Which updates?

1 Like

He's probably referring to updates to your nss-packages from the qsdk oss repos.

I understand that, but update to which version?

Latest code from the same NHSS.QSDK.11.5.0.5.r511 branches your using for all supported packages?

You cant just move to 11.5 until there is 11.5 NSS FW available

2 Likes

Gotcha, didn't realize that they push the same commit id to various branches.

So maybe the latest updates from the NHSS.QSDK.11.4 branches, I assume this is the one your pulling from?

Yeah, only that can be done if there is a newer version

But there have been some updates pushed since April for the different packages you are using.

Ok, they can be updated to the latest commit as they pushed 11.4.1 out so some stuff was updated.
I know that NSS-DP hasn't seen an update for sure, not sure about the others

1 Like

they probably fixed ipv6 as it caused kernel panic with some packet (for example with my network at times the router crashed... probably related to ipv6 rd)