Skip to content

feat: add MT7925 Wi-Fi performance guide - #137

Merged
Stensel8 merged 11 commits into
mainfrom
docs/mt7925-wifi-performance
Sep 12, 2026
Merged

Stensel8 merged 11 commits into
mainfrom
docs/mt7925-wifi-performance

Conversation

@Stensel8

@Stensel8 Stensel8 commented Sep 10, 2026

Copy link
Copy Markdown
Member

Summary

Adds a new Networking guide for the MT7925 Wi-Fi 7 chip covering drops, slow mesh roaming, and mediocre throughput — three separate causes (NetworkManager powersave, the mt7925e driver's own powersave, and PCIe ASPM), each with its own fix and before/after check commands.

Verified on this G16, not just theory. Tested with iperf3 against a local server on a 2.5GbE UniFi network:

  • Stock: ~300 Mbit/s
  • Baseline fix (ASPM disabled + NM powersave off): 410-450 Mbit/s
  • Full tuning (+ AQL, Bluetooth off, AP roam-threshold): stable 598-608 Mbit/s

That's roughly double the out-of-the-box throughput — matching a phone on the same network.

Also added:

  • src/static/scripts/mt7925-tune.sh — an enable/disable/status script for the tuning steps beyond the baseline fix, so readers can A/B test rather than take the numbers on faith
  • A hardware-ceiling section (160MHz/2×2 MIMO — confirmed via iw phy phy0 info, no amount of tuning changes this)
  • A "should you replace the card" section covering MT7927 and Qualcomm's WiFi 7 options, and why neither is a clear win yet
  • How to check your own driver/firmware version, and where to follow active upstream development

Type of change

  • feat: new page or feature

Checklist

  • PR title follows the commit convention
  • Both EN and NL versions updated
  • Media is in AVIF format (not PNG/JPG) — n/a, no media added
  • No broken image references — n/a, no images added
  • Tested locally with Hugo (hugo --gc --minify, verified both pages render, callouts show correctly, and the new script is served at /scripts/mt7925-tune.sh)

Documents three independent power-management layers that can each cause
the drops/slow-roaming/mediocre-throughput symptoms reported on this
chip elsewhere (NetworkManager's own powersave, the mt7925e driver's
powersave, and PCIe ASPM), with fix commands and before/after checks
for each.

Based on well-documented community reports for the same MT7925 chip on
other hardware, not on testing done on this G16 yet -- flagged with a
warning callout at the top of the page pending verification.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JUQVuW3dB2PoHYYQicq9TP
@Stensel8 Stensel8 self-assigned this Sep 10, 2026
…ript

- Confirm the ASPM+powersave fix on this G16: 300 -> 410-450 Mbit/s
- Add AQL/Bluetooth tuning: stable 598-608 Mbit/s
- Add mt7925-tune.sh (enable/disable/status) for easy A/B testing
- Document the hardware ceiling (160MHz/2x2 MIMO) and why it can't be tuned away
- Add driver/firmware version check and upstream development links
- Cover upgrade path (MT7927, Qualcomm) and why it's not worth it yet
- Both EN and NL versions
@Stensel8 Stensel8 changed the title feat: add MT7925 Wi-Fi performance guide (untested) feat: add MT7925 Wi-Fi performance guide Sep 12, 2026
Was three causes, one of which doesn't apply on this kernel and
doesn't need a paragraph explaining why not.
- One table of fixes instead of manual-steps-then-script split
- Script is the recommended way to apply them, no manual walkthrough
- Cut em dashes and trim padding throughout
Re-ran with and without the script (3x each). Tuned runs varied
509-608 Mbit/s back to back with nothing changed, so the old
598-608 range overstated how tight the numbers actually are.
3 more iperf3 runs from the phone: 439-811 Mbit/s on the same AP,
average ~545. One extra run on a stronger AP hit 1.24 Gbit/s, a
good concrete illustration of the MT7925's 160MHz ceiling.
- {{% steps %}} for the core download+apply action, like eduroam does
- Secondary/background info (upgrade path, driver check, dev links)
  moved into collapsed {{% details %}} blocks instead of the main flow
- Matching Source/SHA-256 line format
- Section headings and flow now consistent with the eduroam page
Band, channel width, signal range, AP model, and physical setup
(distance, wall, cabinet) were never stated. Numbers mean little
without knowing what conditions produced them.
@Stensel8
Stensel8 marked this pull request as ready for review September 12, 2026 10:28
Copilot AI lite review requested due to automatic review settings September 12, 2026 10:29
@Stensel8
Stensel8 enabled auto-merge (squash) September 12, 2026 10:29
@Stensel8
Stensel8 disabled auto-merge September 12, 2026 10:29
@Stensel8
Stensel8 merged commit 5e645fe into main Sep 12, 2026
14 checks passed

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The tuning script has unresolved moderate issues involving state restoration, device targeting, and AQL persistence.

Get a fresh assessment by requesting another Copilot review.

Pull request overview

Adds bilingual MT7925 Wi-Fi 7 performance guidance and a downloadable tuning script.

Changes:

  • Adds troubleshooting, benchmarking, hardware, and upgrade documentation.
  • Adds enable/disable/status tuning automation.
  • Updates English and Dutch navigation links.
File summaries
File Summary and review notes
src/static/scripts/mt7925-tune.sh Adds tuning automation. Moderate findings remain around preserving configuration files (3 votes), restoring Bluetooth state (2), restoring AQL defaults (2), accurate AQL reporting (1), interface selection (2), AQL persistence across reboot (2), and scoping Bluetooth rfkill changes (1).
src/content/docs/networking/mt7925-wifi-performance.md Adds the English guide. Two minor findings concern describing hardware limits as observed results and qualifying the Arch/CachyOS-specific firmware command (1 vote each).
src/content/docs/networking/mt7925-wifi-performance.nl.md Adds the Dutch guide. Two minor findings concern the hardware-limit wording and distro-specific firmware command (1 vote each).
src/content/docs/networking/eduroam-network-installation.nl.md Updates Dutch navigation.
src/content/docs/networking/eduroam-network-installation.md Updates English navigation.
src/content/docs/virtualization/vm-setup.nl.md Updates Dutch navigation.
src/content/docs/virtualization/vm-setup.md Updates English navigation.
Review details

Suppressed comments (7)

src/content/docs/networking/mt7925-wifi-performance.md:63

  • 160 MHz/2×2 is not a hard ceiling below 1.24 Gbit/s; a 2×2 160 MHz link can exceed that depending on MCS and conditions. The phone's stronger-AP result only compares this test setup and does not establish the MT7925's theoretical maximum, while the nearby hardware-ceiling text repeats the same unsupported conclusion. Reword this as an observed result rather than a hardware limit.
For reference, a phone (Samsung Galaxy S24 Ultra) on the same AP measured 439-811 Mbit/s across several runs, average around 545 Mbit/s, so the tuned G16 is now in the same range as a modern phone's Wi-Fi radio here. On a stronger/closer AP the same phone hit 1.24 Gbit/s, well above what the MT7925's 160MHz ceiling can ever reach regardless of signal quality (see [hardware ceiling](#the-hardware-ceiling) below).

src/content/docs/networking/mt7925-wifi-performance.md:115

  • This firmware-package check is hard-coded to Arch/CachyOS (pacman and linux-firmware-mediatek), but the general networking page does not qualify it. On Fedora/Bazzite users the command fails even though the rest of the guide is presented as applicable to the G16; label it as distro-specific or provide a distro-neutral alternative.
pacman -Qi linux-firmware-mediatek | grep Version                  # firmware package version

src/content/docs/networking/mt7925-wifi-performance.nl.md:63

  • 160 MHz/2×2 is not a hard ceiling below 1.24 Gbit/s; a 2×2 160 MHz link can exceed that depending on MCS and conditions. The phone's stronger-AP result only compares this test setup and does not establish the MT7925's theoretical maximum, while the nearby hardware-ceiling text repeats the same unsupported conclusion. Reword this as an observed result rather than a hardware limit.
Ter referentie: een telefoon (Samsung Galaxy S24 Ultra) op dezelfde AP mat 439-811 Mbit/s over meerdere runs, gemiddeld rond de 545 Mbit/s, dus de getunede G16 zit nu in hetzelfde bereik als de wifi-radio van een moderne telefoon hier. Op een sterkere/dichterbije AP haalde diezelfde telefoon 1,24 Gbit/s, ruim boven wat het 160MHz-plafond van de MT7925 ooit kan bereiken, ongeacht signaalkwaliteit (zie [hardware-plafond](#het-hardware-plafond) hieronder).

src/content/docs/networking/mt7925-wifi-performance.nl.md:115

  • Deze controle van het firmwarepakket is hard-coded voor Arch/CachyOS (pacman en linux-firmware-mediatek), maar de algemene netwerkpagina vermeldt die beperking niet. Op Fedora/Bazzite faalt het commando terwijl de rest van de handleiding wel op de G16 van toepassing wordt gepresenteerd; markeer het als distributiespecifiek of geef een distro-onafhankelijk alternatief.
pacman -Qi linux-firmware-mediatek | grep Version                  # firmware-packageversie

src/static/scripts/mt7925-tune.sh:89

  • If debugfs/AQL is unavailable, the earlier branch reports that AQL was skipped, but this unconditional summary still claims AQL is live. Track whether the write succeeded before reporting it as applied, otherwise enable gives a misleading success message.
	echo "Done. LIVE now: NM powersave, Bluetooth, AQL."

src/static/scripts/mt7925-tune.sh:70

  • This tee also unconditionally truncates a user-managed NetworkManager drop-in. If the file already contains other settings, enable loses them and disable deletes the whole file, so the script cannot reliably restore the prior configuration; preserve/backup the existing file and remove only the setting it owns.
	printf '[connection]\nwifi.powersave = 2\n' | pkexec tee "$NM_CONF" >/dev/null

src/static/scripts/mt7925-tune.sh:75

  • rfkill block bluetooth applies to the Bluetooth type globally, not specifically to the MT7925 combo controller. On a system with an external Bluetooth adapter this can disconnect unrelated peripherals, while the unconditional unblock on line 110 also changes any pre-existing block; scope the operation to the intended controller or save and restore its prior state.
	pkexec rfkill block bluetooth
  • Files reviewed: 7/7 changed files
  • Comments generated: 5
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

# --- helpers -----------------------------------------------------------

wlan_iface() {
iw dev | awk '/Interface/{print $2; exit}'
echo "=== Enabling MT7925 performance tuning ==="

echo "[1/4] PCIe ASPM disable (mt7925e module param)"
printf 'options mt7925e disable_aspm=1\n' | pkexec tee "$MODPROBE_CONF" >/dev/null
aql="$(aql_path)"
if pkexec test -e "$aql" 2>/dev/null; then
pkexec bash -c "echo '2 ${AQL_TUNED_LOW} ${AQL_TUNED_HIGH}' > '${aql}'"
echo " -> live (resets on reboot/module reload — this script re-applies it every run)"
echo " -> live"

echo "[3/4] Bluetooth back on"
pkexec rfkill unblock bluetooth
local aql
aql="$(aql_path)"
if pkexec test -e "$aql" 2>/dev/null; then
pkexec bash -c "echo '2 ${AQL_STOCK_LOW} ${AQL_STOCK_HIGH}' > '${aql}'"
@Stensel8
Stensel8 deleted the docs/mt7925-wifi-performance branch September 12, 2026 10:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants