BPI-R4 (MT7988A): soft reboot hangs when mt7915_rom_patch.bin is loaded

Hardware: Banana Pi BPI-R4, MediaTek MT7988A (Filogic 880), 8GB RAM variant, WiFi card AW7915-NP1 (MT7915)

Affected versions:

  • OpenWrt 24.10.5 (r29087), kernel 6.6.119 — confirmed affected
  • OpenWrt 25.12.0 (r32713), kernel 6.12.71 — confirmed affected
  • OpenWrt snapshots (Mar 2026), kernel 6.12.71 — confirmed affected

This is a persistent issue across all tested versions and kernel versions (6.6.x and 6.12.x).

Problem description: After loading mt7915_rom_patch.bin firmware into the MT7915 WiFi coprocessor, soft reboot stops working completely. The system shuts down normally — all interfaces go down, kernel prints “reboot: Restarting system” — but then hangs permanently. No BL2 output appears on UART, LEDs go dark, physical power cycle is required to recover.

Root cause narrowed down to specific file: /lib/firmware/mediatek/mt7915_rom_patch.bin (from package kmod-mt7915-firmware) causes soft reboot to hang on MT7988A SoC when loaded into MT7915 WiFi card.

Verified:

  • Without mt7915_rom_patch.bin: soft reboot works, WiFi does not work
  • With mt7915_rom_patch.bin: soft reboot hangs, WiFi works
  • Other firmware files (mt7915_wa.bin, mt7915_wm.bin) do NOT trigger the issue
  • kmod-mt7915e driver alone without firmware — soft reboot works

Other modules tested — do NOT trigger the issue:

  • kmod-gre — works correctly
  • kmod-vxlan — works correctly
  • kmod-usb-net-cdc-mbim — works correctly
  • kmod-wireguard with full wg0 interface and peer configuration — works correctly

Reproduction steps:

  1. Fresh install of OpenWrt on BPI-R4 eMMC
  2. Verify reboot works
  3. apk add kmod-mt7915e kmod-mt7915-firmware
  4. reboot — system hangs after “reboot: Restarting system”
  5. rm /lib/firmware/mediatek/mt7915_rom_patch.bin — does NOT help, power cycle required
  6. After power cycle without mt7915_rom_patch.bin — reboot works again

Attempted fixes that did NOT work:

  • Removing mt7915_rom_patch.bin after loading — requires power cycle to take effect
  • rmmod mt7915e before reboot
  • procd stop script (STOP=01) calling rmmod
  • sysrq sequence: echo s > /proc/sysrq-trigger; echo b > /proc/sysrq-trigger
  • Different BL2/FIP versions (stable 25.12.0, snapshot Mar 14 2026, 8GB preloader)

Workaround: None found. Physical power cycle is the only way to recover.

Analysis: mt7915_rom_patch.bin patches the MT7915 coprocessor ROM. When loaded, it apparently leaves state in the MT7915/MT7988A that prevents the MT7988A reset sequence from completing. This suggests the MT7915 coprocessor is not properly reset during the MT7988A soft reboot sequence. The MT7988A SoC and MT7915 WiFi chip are both MediaTek products and this interaction during reset should be handled at ATF/BL31 level.

UART output on hanging reboot:

reboot: Restarting system [system hangs here, no further output, no BL2 messages]

UART output on working reboot (without mt7915_rom_patch.bin):

reboot: Restarting system NOTICE: BL2: WDT: [40000000] Software reset (reboot) NOTICE: EMI: DDR4 4BG mode NOTICE: EMI: Detected DRAM size: 8192 MB NOTICE: BL2: Booting BL31 U-Boot 2025.10-OpenWrt-r32713-f919e7899d

Additional context: Router is used in film production as a mobile network hub with WireGuard VPN, VXLAN L2 tunnels, WiFi access point 2x(AW7915-NP1 / MT7915) and 5G modem (Quectel RM530N-GL). Reliable remote reboot is critical. The root cause is specific enough that it should be fixable at the ATF/BL31 level by properly resetting the MT7915 coprocessor during MT7988A soft reboot sequence.

Any difference when enabling/disabling WED?