Adding Support for Buffalo WXR18000BE10P (Mediatek MT7988A)

Hi,

I've picked a Buffalo WXR18000BE10P from Xianyu (Goofish) recently. https://www.buffalo.jp/product/detail/wxr18000be10p.html

According to press release and DT from stock firmware, it looks like the router has an MT7988AV SoC with 1024MiB of RAM and 256MiB SPI NAND Flash. Teardown from the previous owner also supports this.
Both 10G ports are powered by Marvell CUX3410, which appears to be very similar to Aquantia AQR113C. Unfortunately, NMBM is enabled with UBI in stock firmware.

Holding the AOSS button and power on triggers a TFTP request to server 192.168.11.10 for file WXR18000BE10P-initramfs.bin, from 192.168.11.1; the router boots the image, per my observation.

My work is available at GitHub@infiWang/OpenWrt, buffalo-wxr18000be10p. Currently, I have a TFTP bootable initramfs system, with the exception that the LAN1 (10G) interface does not play well when booted, likely firmware loading related. I'm looking for a U-Boot mod to solve the 10G port firmware issue and scrape NMBM entirely.

Also, my machine looks and acts very suspiciously, so I'd love your feedback! If you own a device or have the tools and knowledge to use UART and dump NAND, let's make this port happen.

"My router's behavior"

My machine came with some weird, broken Chinese OpenWrt fork with no proper support for the hardware, so I flashed it back to stock firmware and started porting OpenWrt. I soon noticed that MAC does not match what is printed on the casing, and the ORGDATA partition stores a weak password.

"10G Port Issue"

Aquantia PHY (and our Marvell one on this machine) needs firmware to work correctly. The PHY can either load from a SPI flash attached to it automatically, or the host needs to upload firmware via MDIO. To save costs, vendors like Buffalo usually take the latter route. I've modified the U-Boot and Linux Aquantia driver to load the firmware. If we load fw in U-Boot and don't reset it during Linux boot, everything works fine. If Linux handles loading, LAN1 would be attached with the Generic C45 driver, and later init_config would fail with -ETIMEDOUT; if we disable the reset pin of the PHY, restart the network service, the Aquantia driver would take over, and everything works fine.

Stock Firmware Bootlog
(WIP) OpenWrt Stock U-Boot Layout Initramfs Bootlog

4 Likes

For whatever reason, the current mainline U-Boot Aquantia firmware loader only attempts to load from FS on top of MMC. I want to place firmware in UBIFS, so I've migrated it to use the generic File System Firmware Loader. (UNTESTED).

I've also hacked a command to load firmware from memory (tested).

You can find my U-Boot at GitHub@infiWang/u-boot, aquantia-fsloader. I've also made some ubootmod changes on the OpenWrt side.

I'll send the migration patch to upstream if possible; feedback is appreciated.

1 Like

A full installation is the only method to properly test Aquantia U-Boot fsloader on UBIFS.
I'm now working on the UBI installer...

2 Likes

Okay so my installer works, however Aquantia fsloader doesn't work, and I can't get into U-Boot shell so I'm stuck with recovery initramfs. Hmmm...

I messed up button GPIO level……

Looks like my approach needs some patch to mtk_eth (Thanks HackPascal!). I'll backport and see if it helps.

fsloader works :tada:



4 Likes

I've sent my U-Boot patch to upstream: https://lists.denx.de/pipermail/u-boot/2025-September/598941.html.

What's left now is to clean up my OpenWrt tree……

3 Likes