[ALPHA] luci-app-wifi7 — Custom LuCI module for WiFi 7 / MT7996 / BPI-R4

Hi all,

I’ve been working on a custom LuCI module specifically for the MT7996 tri-band WiFi 7 chip on BPI-R4. It adds a dedicated Network > WiFi 7 page with tabs designed around the MT7996/MLD specifics that the standard LuCI wireless page doesn’t handle well.

:warning: Important: This module requires OpenWrt with MTK SDK (e.g. woziwrt/bpi-r4-deploy build). It is specifically designed for the MTK SDK WiFi stack — the interface naming, MLD configuration and hostapd parameters differ significantly from mainline OpenWrt and it will not work correctly without MTK SDK.

GitHub: GitHub - woziwrt/luci-app-wifi7 · GitHub Release (APK): Release v1.0.0-alpha — WiFi 7 MT7996 LuCI module for BPI-R4 · woziwrt/luci-app-wifi7 · GitHub


What it does:

  • Overview — Live MLD link cards showing channel, bandwidth, TX power, channel utilization per link. SKU regulation status banner.
  • MLD config — Edit MLD SSID/password/encryption. MLO enable/disable with reboot warning. Per-link addresses and TX max.
  • Radio — Channel, HT mode, vif_txpower per radio. Country + sku_idx always written together (as they should be). DFS channel labels, lpi_enable, background_radar.
  • Networks — Add/Remove legacy networks with smart defaults per band (6G enforces SAE automatically). Advanced settings expandable.
  • Stations — Live client list showing both MLD clients (ap_mld_1) and legacy clients per band (phy0.0/1/2-ap0). WiFi mode badges (BE/AX/AC/N/G).
  • Diagnostics — Firmware version, sku_disable status, txpower_info per band, per-link current TX power, DFS status, MAT table.

Install (one command):

scp luci-app-wifi7-0.apk [email protected]:/tmp/
ssh [email protected] "apk add --allow-untrusted /tmp/luci-app-wifi7-0.apk && /etc/init.d/rpcd restart"

Then open Network > WiFi 7. Hard reload (Ctrl+Shift+R) if menu doesn’t appear.


Hardware tested:

  • BPI-R4 (MT7988A / Filogic 880)
  • MT7996 tri-band (2.4G + 5G + 6G)
  • OpenWrt 25.12-SNAPSHOT
  • LuCI 26.118.65222~15aabe7

This is alpha — works on my hardware but needs broader testing. Especially interested in:

  • Does it work on your BPI-R4?
  • What’s missing or broken?
  • UI suggestions?

Feedback via GitHub Issues or here in the thread. Thanks!

whats the difference to network->wireless in luci? screenshots would be nice

Hardware

  • BPI-R4 Pro 8X(MT7988A / Filogic 880)
  • MT7996 tri-band (2.4G + 5G + 6G)
  • OpenWrt SNAPSHOT r34136+2-8ef7b4ee4b
  • LuCI Master 26.115.45124~15b8288

Can’t enable MLO. Setup from MLD config page - not works = resets to blank. Reboot - same effect Also 6ghz interface configured 6ghz be 320mhz - drop connected clients to AX 160mhz ** probs not related for this 5ghz also too

Diagnostics tab = blank

Please first reboot the router (full power cycle recommended), then run these commands and paste the output:

bash

uci show wireless | grep mlo
hostapd_cli -i ap-mld-1 stat | head -10

This will tell us whether the MLO setting survived the reboot and whether hostapd is running correctly.

:warning: Important: This module requires OpenWrt with MTK SDK (e.g. woziwrt/bpi-r4-deploy build). It is specifically designed for the MTK SDK WiFi stack — the interface naming, MLD configuration and hostapd parameters differ significantly from mainline OpenWrt and it will not work correctly without MTK SDK.

Please confirm you are running a MTK SDK based build before troubleshooting further.

Pin it in first post, I’m using mainline, so that’s the problem. Thx

Will do, thanks for confirming!

1 Like

luci-app-wifi7 — v2.1.0 Release Candidate | MT7996 / WiFi 7 LuCI module

After the alpha release and valuable community feedback, I’m happy to announce v2.1.0 RC of luci-app-wifi7.

This is a significant update — the module has grown from a basic MLD overview into a comprehensive MT7996 management interface covering nearly everything the MTK SDK exposes to userspace.

:warning: Requires MTK SDK (e.g. woziwrt/bpi-r4-deploy). Will not work on mainline OpenWrt.


GitHub: GitHub - woziwrt/luci-app-wifi7 · GitHub Release (APK): Release v2.1.0 RC — WiFi 7 MT7996 LuCI module · woziwrt/luci-app-wifi7 · GitHub


Install (one command):

ssh [email protected] "wget -O /tmp/luci-app-wifi7.apk https://github.com/woziwrt/luci-app-wifi7/releases/download/v2.1.0-luci/luci-app-wifi7-1.0.0-r20260503.apk && apk add --allow-untrusted /tmp/luci-app-wifi7.apk && /etc/init.d/rpcd restart"

Then open Network > WiFi 7. Hard reload (Ctrl+Shift+R) if menu doesn’t appear.


What’s new in v2.1.0

Overview tab

  • Live MLD link cards with UP/DOWN status (real-time radio state)
  • SKU regulation 3-state banner — inactive (red) / partially configured (orange) / active (green)
  • ACS selected channel displayed live when channel=auto
  • Multiple MLD networks displayed dynamically — all configured MLD SSIDs with full link cards

MLD config tab

  • Add MLD network wizard — create additional MLD networks (mlo0, mlo1…) with SSID, password, encryption, radio selection
  • Per-link info hidden automatically when MLO is disabled
  • EMLSR status display
  • Country change reboot warning

Radio tab

  • he_twt_responder (TWT) per radio — IoT power saving toggle
  • legacy_rates — 2.4G legacy rate support toggle
  • Advanced shared section (single wiphy): sr_enable (Spatial Reuse / BSS Coloring), etxbfen (TX beamforming)
  • noscan warning — explains slow restart risk
  • Radio disable confirm dialog — warns about MLO link ID renumbering
  • DFS enhanced — distinguishes standard DFS (CAC 60s) from weather radar channels (CAC 10 min ETSI)
  • ACS selected channel display

Networks tab

  • Network bridge assignment — lan / wan / guest / iot / custom per interface
  • Hidden SSID, Client isolation, Max clients (maxassoc), WMM toggles
  • OWE Transition mode — Open + Enhanced Open simultaneously
  • Remove network warning — warns if MLD uses the same radio

Stations tab

  • Signal quality color coding — green ≥ -65 dBm / orange ≥ -75 dBm / red < -75 dBm
  • Dynamic display of all MLD networks and legacy interfaces — no hardcoded interface names
  • Real station data for all configured networks including additional MLD networks

Diagnostics tab

  • Kernel version dynamic from /proc/version (was hardcoded 6.12)
  • Thermal monitoring — named zones
  • Collapsible txpower_info sections — state persists across auto-refresh
  • mt76_links_info — MLO internal topology (master link id, valid links bitmap, per-link bss_idx/wcid/channel/BW)
  • Per-link TX power in dBm
  • Log collection button — downloads dmesg WiFi + logread as .txt

Confirmed hardware

Device Chip Status
BPI-R4 MT7988A + MT7996 :white_check_mark: Primary (4GB + 8GB)
W1700K MT7996 :white_check_mark: Confirmed working

Development continues — feedback and testing welcome.

WOZIWRT :banana: