Benutzer-Werkzeuge

Webseiten-Werkzeuge


wi-fi-7-network-interface-card-nic-wireless-linux-raspberry

Wi-Fi 7 unter Linux (Raspberry Pi 5)

Der Einsatz von Wi-Fi 7 unter Linux hält ein paar Überraschungen und Unwegbarkeiten bereit, die Akzeptanz und Unterstützung durch die Hersteller scheint sich aber zu verbessern. Diese Seite soll die Ergebnisse meiner Tests dokumentieren und auch die Fortschritte der Treiberentwicklung festhalten.

Diese Seite befindet sich noch im Aufbau!

Testaufbau

  • Es ist zu berücksichtigen dass der PCIe-Bus des Raspberry Pi 5 lediglich x1 zur Verfügung stellt
  • Der Einsatz des MikroTik Switches ist einer möglichst hohen Neutralität dieser Tests geschuldet
  • Beim verwendeten PCIe E-Key Moduls des Raspberry Pi 5 handelt es sich um dieses Modell: ThePiHut: 52Pi - M.2 2242 E-Key Top for Raspberry Pi 5

Übersicht/Ergebnisse

Wi-Fi 7 Funktion Intel BE200 Qualcomm NCM865 / WCN7850 MediaTek 7925 Realtek 8922AE
Bild
Maximale Kanalbreite 320 MHz 320 MHz 160 MHz 160 MHz
Multi-Link Operation (Hardware/Funktion) ja/ja ja/nein ja/nein ja/ja (mit viel Arbeit)
MLO-Details eMLSR mit STR - - STR
Gemessener iPerf3 Durchsatz (TCP) ~4.2 Gbps - - ~830 Mbps
Verwendete Firmware - - - 0.35.71.0 (78c29b95)
Verwendeter Kernel - - - 6.14.7-v8-16k+
Distribution Raspberry Pi OS (Debian/testing) Raspberry Pi OS (Debian/testing) Raspberry Pi OS (Debian/testing) Raspberry Pi OS (Debian/testing)
wpa_supplicant v2.11 - - v2.12-devel-hostap_2_11-868-g4b8ac10cb
Wireshark/PCAP intel_be200_emlsr.pcap.zip #681 - - rtw89_git.pcap.zip #717
Verwendeter Access Point Stellar Wireless AP1521 Stellar Wireless AP1521 Stellar Wireless AP1521 Stellar Wireless AP1521
Verwendete AWOS Version 5.0.2.11 5.0.2.11 5.0.2.11 5.0.2.11

Wi-Fi 7 NICs

Intel BE200

  • Mit weitem Abstand die beste Unterstützung unter Linux
  • MLO funktioniert mit wpa_supplicant v2.11

Qualcomm NCM865 / WCN7850

  • Funktion bisher eher mittelmäßig
  • MLO-Unterstützung funktioniert bisher nicht

MediaTek 7925

  • Funktion bisher eher mittelmäßig
  • MLO-Unterstützung funktioniert nicht
  • iPerf3 TCP-Durchsatz sehr schwach (~150 Mbps) ⇒ braucht weitere Tests

Realtek 8922AE

  • Funktion bisher eher mittelmäßig
  • MLO-Unterstützung funktioniert nicht ⇒ siehe: Issue-RTW89-4
  • Die Wireless-Verbindung wird regelmäßig getrennt und bleibt in 2.4 GHz ebenfalls eher instabil ⇒ siehe: Issue-RTW89-2

Issue-RTW89-1 - Schwierigkeiten beim Start des Moduls

[    8.102386] rtw89_8922ae 0001:01:00.0: loaded firmware rtw89/rtw8922a_fw-3.bin
[    8.102503] rtw89_8922ae 0001:01:00.0: quirks=00 00 00 00 00 00 00 00 custid=0
[    8.102555] rtw89_8922ae 0001:01:00.0: full firmware has been early requested
[    8.102574] rtw89_8922ae 0001:01:00.0: enabling device (0000 -> 0002)
[    8.102709] rtw89_8922ae 0001:01:00.0: failed to alloc txwd ring of txch 0
[    8.102712] rtw89_8922ae 0001:01:00.0: failed to alloc tx ring 0
[    8.102713] rtw89_8922ae 0001:01:00.0: failed to alloc dma tx rings
[    8.102714] rtw89_8922ae 0001:01:00.0: failed to alloc pci trx rings
[    8.102718] rtw89_8922ae 0001:01:00.0: failed to setup pci resource
[    8.102748] rtw89_8922ae 0001:01:00.0: probe with driver rtw89_8922ae failed with error -12

Lösung: /etc/firmware/config.txt entsprechend anpassen

# Wi-Fi 7 Test
dtparam=pciex1
dtparam=pciex1_gen=3

# ath12k / mt7925e / rtw89_8922ae
dtoverlay=pcie-32bit-dma
dtoverlay=pciex1-compat-pi5,no-mip

Issue-RTW89-2 - Regelmäßige Trennung von 5 & 6 GHz Frequenz/Band

Lösung/Workaround:

sudo vi /etc/modprobe.d/rtw89.conf
options rtw89_core disable_ps_mode=y

Issue-RTW89-3 - Geringer iPerf3 TCP-Durchsatz

Derzeit keine Lösung/Workaround.

pi@wifitux:~ $ iperf3 -c 192.168.2.1
Connecting to host 192.168.2.1, port 5201
[  5] local 192.168.2.115 port 52984 connected to 192.168.2.1 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   110 MBytes   926 Mbits/sec    4   1.00 MBytes       
[  5]   1.00-2.00   sec   111 MBytes   935 Mbits/sec    0   1.08 MBytes       
[  5]   2.00-3.00   sec  91.6 MBytes   768 Mbits/sec    0   1.14 MBytes       
[  5]   3.00-4.00   sec   109 MBytes   911 Mbits/sec    0   1.21 MBytes       
[  5]   4.00-5.00   sec  95.2 MBytes   799 Mbits/sec    0   1.26 MBytes       
[  5]   5.00-6.00   sec  96.0 MBytes   805 Mbits/sec    0   1.32 MBytes       
[  5]   6.00-7.00   sec  97.0 MBytes   814 Mbits/sec    0   1.37 MBytes       
[  5]   7.00-8.00   sec  76.9 MBytes   645 Mbits/sec    0   1.41 MBytes       
[  5]   8.00-9.00   sec   109 MBytes   912 Mbits/sec    0   1.47 MBytes       
[  5]   9.00-10.00  sec   101 MBytes   848 Mbits/sec    0   1.52 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   997 MBytes   836 Mbits/sec    4            sender
[  5]   0.00-10.06  sec   995 MBytes   829 Mbits/sec                  receiver

iperf Done.
pi@wifitux:~ $ 
pi@wifitux:~ $ sudo iw wlan0 station dump
Station 88:3c:93:01:ce:60 (on wlan0)
	inactive time:	15564 ms
	rx bytes:	67023875
	rx packets:	273868
	tx bytes:	6014843719
	tx packets:	795329
	tx retries:	0
	tx failed:	2
	beacon loss:	0
	rx drop misc:	118464
	signal:  	-38 [-36, -44] dBm
	signal avg:	-38 [-36, -44] dBm
	tx bitrate:	1441.1 MBit/s 160MHz EHT-MCS 13 EHT-NSS 1 EHT-GI 0
	tx duration:	0 us
	rx bitrate:	2593.5 MBit/s 160MHz EHT-MCS 12 EHT-NSS 2 EHT-GI 0
	rx duration:	0 us
	authorized:	yes
	authenticated:	yes
	associated:	yes
	preamble:	long
	WMM/WME:	yes
	MFP:		yes
	TDLS peer:	no
	DTIM period:	1
	beacon interval:100
	short slot time:yes
	connected time:	3126 seconds
	associated at [boottime]:	1918.054s
	associated at:	1748180174973 ms
	current time:	1748183300666 ms

Issue-RTW89-4 - MLO funktioniert nur mit deaktivierten PS_MODE

Lösung/Workaround:

options rtw89_core_git disable_ps_mode=y

Tracking: https://github.com/morrownr/rtw89/issues/7

Hinweis: Damit das Debugging via debug_mask funktionieren kann, muss das Modul mit Debug-Unterstützung kompiliert werden.

Prüfen lässt sich dies via

pi@wifitux:~ $ sudo systool -vm rtw89_core
Module = "rtw89_core"

  Attributes:
    coresize            = "720896"
    initsize            = "0"
    initstate           = "live"
    refcnt              = "2"
    srcversion          = "FA6FA77364F961BBE42F1D1"
    taint               = ""
    uevent              = <store method only>

  Parameters:
    debug_mask          = "65535"
    disable_ps_mode     = "N"

  Sections:
    .altinstructions    = "0xffffd06f7bc40640"
    .bss                = "0xffffd06f7b916300"
    .data               = "0xffffd06f7b916310"
    .gnu.linkonce.this_module= "0xffffd06f7b917d00"
    .init.plt           = "0xffffd06f7b798000"
    .note.Linux         = "0xffffd06f7bc5b6b4"
    .note.gnu.build-id  = "0xffffd06f7bc5b690"
    .note.gnu.property  = "0xffffd06f7bc5b670"
    .plt                = "0xffffd06f7bc38980"
    .rodata             = "0xffffd06f7bc40ba8"
    .rodata.str         = "0xffffd06f7bc59991"
    .rodata.str1.8      = "0xffffd06f7bc47658"
    .strtab             = "0xffffd06f7b9dd668"
    .symtab             = "0xffffd06f7b9d0000"
    .text.ftrace_trampoline= "0xffffd06f7bc390b8"
    .text               = "0xffffd06f7bbc8000"
    __bug_table         = "0xffffd06f7b914000"
    __kcrctab           = "0xffffd06f7bc404b0"
    __ksymtab           = "0xffffd06f7bc40000"
    __ksymtab_strings   = "0xffffd06f7bc5b6e4"
    __param             = "0xffffd06f7bc5b620"
    __patchable_function_entries= "0xffffd06f7b914828"
pi@wifitux:~ $ sudo modinfo rtw89_core
filename:       /lib/modules/6.14.7-v8-16k+/kernel/drivers/net/wireless/realtek/rtw89/rtw89_core.ko.xz
license:        Dual BSD/GPL
description:    Realtek 802.11ax wireless core module
author:         Realtek Corporation
srcversion:     FA6FA77364F961BBE42F1D1
depends:        mac80211,cfg80211,rfkill
intree:         Y
name:           rtw89_core
vermagic:       6.14.7-v8-16k+ SMP preempt mod_unload modversions aarch64
parm:           debug_mask:Debugging mask (uint)
parm:           disable_ps_mode:Set Y to disable low power mode (bool)

Für das Realtek 8922AE Modul gibt es drei Projekte

Eigenes Kernelmodul aus neueren Quellen bauen: (Header/Quellcode des laufenden Kernels sind dafür notwendig)

pi@wifitux:~/may25 $ git clone https://github.com/morrownr/rtw89
Cloning into 'rtw89'...
remote: Enumerating objects: 6244, done.
remote: Counting objects: 100% (27/27), done.
remote: Compressing objects: 100% (21/21), done.
remote: Total 6244 (delta 12), reused 16 (delta 6), pack-reused 6217 (from 2)
Receiving objects: 100% (6244/6244), 14.97 MiB | 28.24 MiB/s, done.
Resolving deltas: 100% (4884/4884), done.
pi@wifitux:~/may25 $ cd rtw89/
pi@wifitux:~/may25/rtw89 $ make clean modules
make -C /lib/modules/`uname -r`/build M=$PWD clean
make[1]: Entering directory '/home/pi/may25/linux'
make[2]: Entering directory '/home/pi/may25/rtw89'
make[2]: Leaving directory '/home/pi/may25/rtw89'
make[1]: Leaving directory '/home/pi/may25/linux'
make -j`nproc --ignore=1` -C /lib/modules/`uname -r`/build M=$PWD modules
make[1]: Entering directory '/home/pi/may25/linux'
make[2]: Entering directory '/home/pi/may25/rtw89'
warning: the compiler differs from the one used to build the kernel
  The kernel was built by: gcc (Debian 12.2.0-14) 12.2.0
  You are using:           gcc (Debian 14.2.0-19) 14.2.0
  CC [M]  core.o
  CC [M]  mac80211.o
  CC [M]  mac.o
  CC [M]  mac_be.o
  CC [M]  phy.o
  CC [M]  phy_be.o
  CC [M]  fw.o
  CC [M]  cam.o
  CC [M]  efuse.o
  CC [M]  efuse_be.o
  CC [M]  regd.o
  CC [M]  sar.o
  CC [M]  coex.o
  CC [M]  ps.o
  CC [M]  chan.o
  CC [M]  ser.o
  CC [M]  acpi.o
  CC [M]  util.o
  CC [M]  debug.o
  CC [M]  wow.o
  CC [M]  rtw8851b.o
  CC [M]  rtw8851b_table.o
  CC [M]  rtw8851b_rfk.o
  CC [M]  rtw8851b_rfk_table.o
  CC [M]  rtw8851be.o
  CC [M]  rtw8851bu.o
  CC [M]  rtw8852a.o
  CC [M]  rtw8852a_table.o
  CC [M]  rtw8852a_rfk.o
  CC [M]  rtw8852a_rfk_table.o
  CC [M]  rtw8852ae.o
  CC [M]  rtw8852b_common.o
  CC [M]  rtw8852b.o
  CC [M]  rtw8852b_table.o
  CC [M]  rtw8852b_rfk.o
  CC [M]  rtw8852b_rfk_table.o
  CC [M]  rtw8852be.o
  CC [M]  rtw8852bu.o
  CC [M]  rtw8852bt.o
  CC [M]  rtw8852bt_rfk.o
  CC [M]  rtw8852bt_rfk_table.o
  CC [M]  rtw8852bte.o
  CC [M]  rtw8852c.o
  CC [M]  rtw8852c_table.o
  CC [M]  rtw8852c_rfk.o
  CC [M]  rtw8852c_rfk_table.o
  CC [M]  rtw8852ce.o
  CC [M]  rtw8922a.o
  CC [M]  rtw8922a_rfk.o
  CC [M]  rtw8922ae.o
  CC [M]  pci.o
  CC [M]  pci_be.o
  CC [M]  usb.o
  LD [M]  rtw89_core_git.o
  LD [M]  rtw89_8851b_git.o
  LD [M]  rtw89_8851be_git.o
  LD [M]  rtw89_8851bu_git.o
  LD [M]  rtw89_8852a_git.o
  LD [M]  rtw89_8852ae_git.o
  LD [M]  rtw89_8852b_common_git.o
  LD [M]  rtw89_8852b_git.o
  LD [M]  rtw89_8852be_git.o
  LD [M]  rtw89_8852bu_git.o
  LD [M]  rtw89_8852bt_git.o
  LD [M]  rtw89_8852bte_git.o
  LD [M]  rtw89_8852c_git.o
  LD [M]  rtw89_8852ce_git.o
  LD [M]  rtw89_8922a_git.o
  LD [M]  rtw89_8922ae_git.o
  LD [M]  rtw89_usb_git.o
  LD [M]  rtw89_pci_git.o
  MODPOST Module.symvers
  CC [M]  rtw89_core_git.mod.o
  CC [M]  .module-common.o
  CC [M]  rtw89_8851b_git.mod.o
  CC [M]  rtw89_8851be_git.mod.o
  CC [M]  rtw89_8851bu_git.mod.o
  CC [M]  rtw89_8852a_git.mod.o
  CC [M]  rtw89_8852ae_git.mod.o
  CC [M]  rtw89_8852b_common_git.mod.o
  CC [M]  rtw89_8852b_git.mod.o
  CC [M]  rtw89_8852be_git.mod.o
  CC [M]  rtw89_8852bu_git.mod.o
  CC [M]  rtw89_8852bt_git.mod.o
  CC [M]  rtw89_8852bte_git.mod.o
  CC [M]  rtw89_8852c_git.mod.o
  CC [M]  rtw89_8852ce_git.mod.o
  CC [M]  rtw89_8922a_git.mod.o
  CC [M]  rtw89_8922ae_git.mod.o
  CC [M]  rtw89_pci_git.mod.o
  CC [M]  rtw89_usb_git.mod.o
  LD [M]  rtw89_core_git.ko
  LD [M]  rtw89_8851b_git.ko
  LD [M]  rtw89_8851be_git.ko
  LD [M]  rtw89_8851bu_git.ko
  LD [M]  rtw89_8852a_git.ko
  LD [M]  rtw89_8852ae_git.ko
  LD [M]  rtw89_8852b_common_git.ko
  LD [M]  rtw89_8852b_git.ko
  LD [M]  rtw89_8852be_git.ko
  LD [M]  rtw89_8852bu_git.ko
  LD [M]  rtw89_8852bt_git.ko
  LD [M]  rtw89_8852bte_git.ko
  LD [M]  rtw89_8852c_git.ko
  LD [M]  rtw89_8852ce_git.ko
  LD [M]  rtw89_8922a_git.ko
  LD [M]  rtw89_8922ae_git.ko
  LD [M]  rtw89_pci_git.ko
  LD [M]  rtw89_usb_git.ko
make[2]: Leaving directory '/home/pi/may25/rtw89'
make[1]: Leaving directory '/home/pi/may25/linux'
pi@wifitux:~/may25/rtw89 $ sudo make install
install: creating directory '/lib/modules/6.14.7-v8-16k+/extra'
install: creating directory '/lib/modules/6.14.7-v8-16k+/extra/rtw89'
'rtw89_8851b_git.ko' -> '/lib/modules/6.14.7-v8-16k+/extra/rtw89/rtw89_8851b_git.ko'
'rtw89_8851be_git.ko' -> '/lib/modules/6.14.7-v8-16k+/extra/rtw89/rtw89_8851be_git.ko'
'rtw89_8851bu_git.ko' -> '/lib/modules/6.14.7-v8-16k+/extra/rtw89/rtw89_8851bu_git.ko'
'rtw89_8852a_git.ko' -> '/lib/modules/6.14.7-v8-16k+/extra/rtw89/rtw89_8852a_git.ko'
'rtw89_8852ae_git.ko' -> '/lib/modules/6.14.7-v8-16k+/extra/rtw89/rtw89_8852ae_git.ko'
'rtw89_8852b_common_git.ko' -> '/lib/modules/6.14.7-v8-16k+/extra/rtw89/rtw89_8852b_common_git.ko'
'rtw89_8852b_git.ko' -> '/lib/modules/6.14.7-v8-16k+/extra/rtw89/rtw89_8852b_git.ko'
'rtw89_8852be_git.ko' -> '/lib/modules/6.14.7-v8-16k+/extra/rtw89/rtw89_8852be_git.ko'
'rtw89_8852bt_git.ko' -> '/lib/modules/6.14.7-v8-16k+/extra/rtw89/rtw89_8852bt_git.ko'
'rtw89_8852bte_git.ko' -> '/lib/modules/6.14.7-v8-16k+/extra/rtw89/rtw89_8852bte_git.ko'
'rtw89_8852bu_git.ko' -> '/lib/modules/6.14.7-v8-16k+/extra/rtw89/rtw89_8852bu_git.ko'
'rtw89_8852c_git.ko' -> '/lib/modules/6.14.7-v8-16k+/extra/rtw89/rtw89_8852c_git.ko'
'rtw89_8852ce_git.ko' -> '/lib/modules/6.14.7-v8-16k+/extra/rtw89/rtw89_8852ce_git.ko'
'rtw89_8922a_git.ko' -> '/lib/modules/6.14.7-v8-16k+/extra/rtw89/rtw89_8922a_git.ko'
'rtw89_8922ae_git.ko' -> '/lib/modules/6.14.7-v8-16k+/extra/rtw89/rtw89_8922ae_git.ko'
'rtw89_core_git.ko' -> '/lib/modules/6.14.7-v8-16k+/extra/rtw89/rtw89_core_git.ko'
'rtw89_pci_git.ko' -> '/lib/modules/6.14.7-v8-16k+/extra/rtw89/rtw89_pci_git.ko'
'rtw89_usb_git.ko' -> '/lib/modules/6.14.7-v8-16k+/extra/rtw89/rtw89_usb_git.ko'
depmod -a `uname -r`
wi-fi-7-network-interface-card-nic-wireless-linux-raspberry.txt · Zuletzt geändert: von benny

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki