[Banana BPI-R4] all related to MTK-SDK

[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.

GitHub: https://github.com/woziwrt/luci-app-wifi7
Release (APK): https://github.com/woziwrt/luci-app-wifi7/releases/tag/v1.0.0-alpha


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 root@192.168.1.1:/tmp/
ssh root@192.168.1.1 "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.


:warning: Requirements

This module requires OpenWrt with MTK SDK (e.g. woziwrt/bpi-r4-deploy).

It is specifically designed for the MTK SDK WiFi stack and will not work correctly with mainline OpenWrt — the interface naming, MLD configuration and hostapd parameters differ significantly.

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!

5 Likes

@woziwrt Always surprise us with interesting things
Amazing work :ok_hand:

Its a great package , I hope if it can be also for Offical OpenWRT

Thank you! :slightly_smiling_face: Mainline support would be great — contributions are welcome!

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: https://github.com/woziwrt/luci-app-wifi7 Release (APK): https://github.com/woziwrt/luci-app-wifi7/releases/tag/v2.1.0-luci


Install (one command):

ssh root@192.168.1.1 "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:

6 Likes

I’m wondering, are these improvements only for devices with a Wi-Fi module? Or can I also use them on my device, which doesn’t have Wi-Fi?

luci-app-wifi7 is a WiFi management interface — it requires at least one WiFi radio to be useful. If your device has no WiFi module, there would be nothing to manage. You might want to check your device specifications first :wink:

Hi! I have a CC2652P1 Zigbee dongle with CH341 USB-Serial chip (ID 1a86:7523). Product: https://pl.aliexpress.com/item/1005010114175044.html

Could you add kmod-usb-serial-ch341 to the build? Or is it not possible with the current kernel config?

If not, will Sonoff ZBDongle Plus-P work natively on your build via USB?

Thank you!

Hi,

Due to the custom MTK SDK kernel, standard OpenWrt kmod packages are not compatible — they must be compiled as part of the build.

You can add any package to your own build by following Part C — Fork and customize in the README. Add CONFIG_PACKAGE_kmod-usb-serial-ch341=y to my_defconfig-universal, trigger the workflow, and you get your own release with the module included.

Thanks for the quick response! I'll try to fork and build it myself

Hello! I’ve been actively following the r4-deploy repository and would like to contribute by adding a configuration for the Fibocom FM350. I used wifimgr_universal as a base and added the following supplementary packages:

CONFIG_PACKAGE_atc-fib-fm350_gl=y
CONFIG_PACKAGE_luci-proto-atc=y
CONFIG_PACKAGE_kmod-nft-compat=y
CONFIG_PACKAGE_mwan3=y `

I managed to get it running, but unfortunately, I can't receive data from the modem to access the internet. I can see the modem transmitting data (TX), but the RX data remains at zero. I’m almost certain the issue lies in some missing packages and resulting routing problems.

Could you please share what other changes you made to get the FM350 working? I tried your BPI-R4-25.12-MLO-RC4_FM-350GL firmware, and it worked perfectly.

For your module to work properly, you need to make all the changes described here

I haven’t heard a single word from the master "BRUDA" since March 24... Doesn’t anyone wonder where he is? Even just a quick “hello” from my friend would make me happy.

Good day, woziwrt.
I did it according to your instructions: I added the necessary packages to my_defconfig-universal: kmod-nf-conntrack-netlink, kmod-nft-queu, kmod-nft-nat, kmod-nft-compat, kmod-nft-tproxy, kmod-nft-socket, then I created my own release, but the necessary there are no packages in it, how to add them correctly/Create it?
Your description of the "DIP switch reference" does not correctly specify the position for the "SD card" - 1 1

Thank you for pointing out the issues in the README. Since the git repository is currently undergoing constant development, the README is out of date and contains errors that will be fixed gradually as development progresses. If you are using a fork of the latest commits, you must apply custom configuration changes in the my_defconfig-wifimgr-universal file before running the GitHub runner.I apologize for any inconvenience or inaccuracies.