[BPI-R64] OpenWRT kernel 5.4.40 running from eMMC

So there seems already a way to load eeprom from file…but this image seems to have no public sourcecode yet

OpenWRT creates this folder in build_dir. Based on the folder name I think it’s the latest mt76 version.

./build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mt76-2020-05-30-85c51608

I’ve gone further into testing WiFi performance. I still can’t call 5 GHz WiFi operational.

mt7615 constantly causes a system crash and reboot after about 30-50 sec. of iperf3 operation.

[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  74.9 MBytes   625 Mbits/sec                  
[  5]   1.00-2.00   sec  77.3 MBytes   650 Mbits/sec                  
[  5]   2.00-3.00   sec  72.2 MBytes   606 Mbits/sec                  
[  5]   3.00-4.00   sec  72.4 MBytes   607 Mbits/sec                  
[  5]   4.00-5.00   sec  73.3 MBytes   616 Mbits/sec                  
[  5]   5.00-6.00   sec  50.1 MBytes   419 Mbits/sec                  
[  5]   6.00-7.00   sec  21.2 MBytes   178 Mbits/sec                  
[  5]   7.00-8.00   sec  27.2 MBytes   228 Mbits/sec                  
[  5]   8.00-9.00   sec  17.5 MBytes   147 Mbits/sec                  
[  5]   9.00-10.00  sec  30.7 MBytes   258 Mbits/sec                  
[  5]  10.00-11.00  sec  51.6 MBytes   433 Mbits/sec                  
[  5]  11.00-12.00  sec  56.9 MBytes   477 Mbits/sec                  
[  5]  12.00-13.00  sec  77.7 MBytes   653 Mbits/sec                  
[  5]  13.00-14.00  sec  97.2 MBytes   816 Mbits/sec                  
[  5]  14.00-15.00  sec  99.0 MBytes   830 Mbits/sec                  
[  5]  15.00-16.00  sec  97.8 MBytes   821 Mbits/sec                  
[  5]  16.00-17.00  sec  99.4 MBytes   833 Mbits/sec                  
[  5]  17.00-18.00  sec  55.7 MBytes   468 Mbits/sec                  
[  5]  18.00-19.00  sec   994 KBytes  8.13 Mbits/sec                  
[  5]  19.00-20.00  sec  8.22 MBytes  68.9 Mbits/sec                  
[  5]  20.00-21.00  sec  12.0 MBytes   101 Mbits/sec                  
[  5]  21.00-22.00  sec  17.0 MBytes   143 Mbits/sec                  
[  5]  22.00-23.00  sec  32.4 MBytes   272 Mbits/sec                  
[  5]  23.00-24.00  sec  46.2 MBytes   387 Mbits/sec                  
[  5]  24.00-25.00  sec  47.7 MBytes   399 Mbits/sec                  
[  5]  25.00-26.01  sec  59.8 MBytes   501 Mbits/sec                  
[  5]  26.01-27.00  sec  53.9 MBytes   453 Mbits/sec                  
[  5]  27.00-28.00  sec  60.6 MBytes   509 Mbits/sec                  
[  5]  28.00-29.00  sec  72.4 MBytes   608 Mbits/sec                  
[  5]  29.00-30.00  sec  61.6 MBytes   516 Mbits/sec                  
[  5]  30.00-31.00  sec  66.6 MBytes   558 Mbits/sec                  
[  5]  31.00-32.00  sec  67.0 MBytes   563 Mbits/sec                  
[  5]  32.00-33.00  sec  78.1 MBytes   655 Mbits/sec                  
[  5]  33.00-34.00  sec  68.9 MBytes   578 Mbits/sec                  
[  5]  34.00-35.00  sec  67.4 MBytes   565 Mbits/sec                  
[  5]  35.00-36.00  sec   106 MBytes   885 Mbits/sec                  
[  5]  36.00-37.00  sec  25.0 MBytes   210 Mbits/sec                  
[  5]  37.00-38.00  sec  0.00 Bytes  0.00 Mbits/sec                  
[  5]  38.00-39.01  sec  0.00 Bytes  0.00 Mbits/sec                  
[  5]  39.01-40.01  sec  0.00 Bytes  0.00 Mbits/sec                  
[  5]  40.01-41.00  sec  0.00 Bytes  0.00 Mbits/sec                  
[  5]  41.00-42.00  sec  0.00 Bytes  0.00 Mbits/sec                  
[  5]  42.00-43.00  sec  0.00 Bytes  0.00 Mbits/sec                  
[  5]  43.00-44.00  sec  0.00 Bytes  0.00 Mbits/sec                  
[  5]  44.00-45.00  sec  0.00 Bytes  0.00 Mbits/sec       

mt7622 seems more stable, but it too has some instability once in a while.

[  5] 460.00-461.00 sec  15.2 MBytes   127 Mbits/sec                  
[  5] 461.00-462.01 sec  4.04 MBytes  33.7 Mbits/sec                  
[  5] 462.01-463.00 sec  0.00 Bytes  0.00 Mbits/sec                  
[  5] 463.00-464.01 sec  0.00 Bytes  0.00 Mbits/sec                  
[  5] 464.01-465.01 sec  0.00 Bytes  0.00 Mbits/sec                  
[  5] 465.01-466.01 sec  0.00 Bytes  0.00 Mbits/sec                  
[  5] 466.01-467.00 sec  5.00 MBytes  42.2 Mbits/sec                  
[  5] 467.00-468.00 sec  16.4 MBytes   137 Mbits/sec                  
[  5] 468.00-469.00 sec  16.3 MBytes   137 Mbits/sec                  
[  5] 469.00-470.00 sec  15.9 MBytes   133 Mbits/sec

At least my mt7615 works fine ~1h. Where did you get this board? I think you should contact you board manufacturer.

It’s a BPI-MT7615 module. Should I contact @sinovoip?

I have issues on official LEDE image too: when I bring up mt7615 module system goes in reboot.

please send mail to 肖 [email protected]

Hi, @svintuss
Would you please create a github repo for all patches and firmware bin. I can’t follow your approach. Thanks.

Sure, will do that soon. I just want to find out how to make OpenWRT patches from manually modified files. I don’t like a “compile - install - make changes - recompile again - replace modules on working system” approach.

I’ve got some progress here.

After several hours of load testing with iperf3 I found out that mt7615 makes system crash if TX power exceeds 21 dBm. That means that in ‘AU’ or ‘US’ regional domains one have to manually limit TX power to 21 dBm.

I don’t know yet whether it’s my unit’s or a general BPI-MT7615 board/driver problem.

I also have that problem. I got a solution from BPI. If you want use BPI-MT7615 module on BPI-R64 board, The R64 board must modify a resistance to provide more power to the pci-e slot.

Which slot (pcie0,cn25?), which resistant and to which value?

You’re right.

Thanks to the assistance of 肖 [email protected] from @sinovoip I’ve managed to solve the TX power crash problem.

BPI-R64’s mPCIe slot current is limited to 1.5A (1.44A to be precise). When TX power of mt7615e board exceeds 22 dBm it starts to draw too much current and the whole system crashes.

This 1.5A limit is managed by SY6280 programmable switch. There are two solutions:

  1. Short circuit pins 1 and 5 and remove the current limit.
  2. Increase current limit by replacing R217 resistor to 3K one. This will give 2,27A current limit. The resistor is 0402 (1 mm x 0.5 mm)

I tried method 1, I can confirm that it works. Board is stable with 23 dBm TX power. Maybe the same procedure could be done to CN8 slot too.

UPD: There seems to be an issue with method 1: mt7615e goes up only after initial power on. If one reboots the board or presses reset button there comes up this message in kernel log:

[   12.231122] mt7615e 0000:01:00.0: Firmware is not ready for download

UPD2: Can confirm that method 2 works without issue. After changing R217 to 3KOhm the board is working fine on 23 dBm.

2 Likes

Cn8 has additional problem with missing capacitors on tx-lines

Is there any new state using eeprom from file? In Mainline i see only mtd version (which conflicts with mt7622), and mtd in 5.4 is broken (at least in openwrt)

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/net/wireless/mediatek/mt76/eeprom.c

And also mt76 git

hi svintuss,

I encounter this problem too. when I use MT7615 5g wifi, the board will be stuck then reboot. don’t have any log output. I hard to debug with my less knowledge of it without any log output in console.

i am remove the paython,when make it ,get this error:

–without-pymalloc CONFIG_SITE= ; fi )

configure: error: Please install autoconf-archive package and re-run autoreconf
Makefile:352: recipe for target '/home/neo/BPI_R64_OpenWRT/openwrt/build_dir/hostpkg/Python-3.9.4/.configured' failed
make[3]: *** [/home/neo/BPI_R64_OpenWRT/openwrt/build_dir/hostpkg/Python-3.9.4/.configured] Error 1
make[3]: Leaving directory '/home/neo/BPI_R64_OpenWRT/openwrt/feeds/packages/lang/python/python3'
time: package/feeds/packages/python3/host-compile#5.97#0.40#8.36
package/Makefile:111: recipe for target 'package/feeds/packages/python3/host/compile' failed
make[2]: *** [package/feeds/packages/python3/host/compile] Error 2
make[2]: Leaving directory '/home/neo/BPI_R64_OpenWRT/openwrt'
package/Makefile:107: recipe for target '/home/neo/BPI_R64_OpenWRT/openwrt/staging_dir/target-aarch64_cortex-a53_musl/stamp/.package_compile' failed
make[1]: *** [/home/neo/BPI_R64_OpenWRT/openwrt/staging_dir/target-aarch64_cortex-a53_musl/stamp/.package_compile] Error 2
make[1]: Leaving directory '/home/neo/BPI_R64_OpenWRT/openwrt'
/home/neo/BPI_R64_OpenWRT/openwrt/include/toplevel.mk:218: recipe for target 'world' failed
make: *** [world] Error 2
copying kernel,dt, rootfs
cp: cannot stat 'build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/bpi_bananapi-r64-kernel.bin': No such file or directory
cp: cannot stat 'build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/image-mt7622-bananapi-bpi-r64.dtb': No such file or directory
cp: cannot stat 'build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/root.ext4': No such file or directory
done. Copy folder r64-boot into root folder of USB drive (at least 4GB needed)

Have you tried this?

The R64 is fully supported by mainline OpenWrt by now, no need to start off with outdated vendor-modified version of OpenWrt. You can follow the documentation on Build system setup regarding the prerequisites.

Then clone OpenWrt and launch menuconfig

git clone https://git.openwrt.org/openwrt/openwrt.git/
cd openwrt
scripts/feeds update
scripts/feeds install -a
make menuconfig

Then select R64 board and packages you would like:

Then trigger build using make -j$(nproc) and wait for a long time :wink:

1 Like

A third option, like option 1 is to disable the current limiting by shorting pins 2 and 3. i.e. using a 0 ohm Resistor for R217 the ISET. This leaves the EN pin still functional so the reboot works. I was successful with this approach.

My ugly solder job:

1 Like

Hello guys. It’s been some time since I tried to make use of BPI R64 and I fell off track. Could somebody fast forward me on recent updates regarding OpenWRT support?

  1. Does mainline OpenWRT produce complete images for both SD and eMMC? Or I still need to extract the preloader, ATF and UBoot from BPI repository and then take compiled kernel and rootfs from OpenWRT and flash them manually?
  2. Is it possible now to use squashfs or it’s still necessary to choose ext4 rootfs?
  3. Are EEPROM patches for MT7615 and MT7622 still needed or you have found a way to place EEPROM in a file/on a partition?
  4. Does Bluetooth work with MT7615?