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?

Try community builds of MediaTek’s latest official firmware. See if you can reproduce the issue.

Hi Eric, thanks for the suggestion.

Tested with echo “options mt7915e wed_enable=0” > /etc/modules.d/mt7915e-nowed and then modprobe mt7915e wed_enable=0. WiFi stopped working completely with WED disabled, and soft reboot still hung. So unfortunately WED doesn’t seem to be related to the issue.

Hi, thanks for the tip. I tried to track down the community builds you mentioned but wasn’t sure exactly which ones to test.

I ended up downloading the latest mt7915_rom_patch.bin from linux-firmware.git on kernel.org and compared it with the one from the OpenWrt package:

  • OpenWrt package: md5 42836293223d5cebbd62a06102107cb3 (144544 bytes)
  • linux-firmware.git: md5 ed5b820b2eb5bd569cebdb107c724225 (144544 bytes)

Different MD5 so it is genuinely a newer file. Unfortunately soft reboot still hangs with it too.

I also found the mtk-openwrt-feeds repo on git01.mediatek.com and there is a Filogic 880 MP4.3 release from December 2025 which explicitly lists BPI-R4 support. The documentation mentions that the latest U-Boot and ATF source code is available via DCC login, but I wasn’t able to log in — looks like it requires a MediaTek partner account.

At this point I’m starting to think the issue might be in ATF/BL31 rather than in the MT7915 firmware itself - the MT7915 coprocessor doesn’t seem to be properly reset during MT7988A soft reboot regardless of which firmware version is loaded.

Hi, sorry for the belated response:

One of the community build of MediaTek’s official firmware that I had in mind:

I think it’s unlikely to do with ATF/BL31. It’s likely an issue in MediaTek’s various drivers. Its official firmware should have the latest. Stock OpenWrt is very much a laggard in this regard. Give the community build a try.

Cheers.