BPI-R4-NIC-BE14 - Power Output. Confused

I have 4 of BPI-R4-NIC-BE14 cards in my possession… and lost on their output capacity. One of them report 20dBm or even 27dBm output, which is excellent, the second 2 report only 6dBm/7dBm max and 4th reports only 3dBm.

All are set to the AP mode on 2.4GHz/5GHz. The same Banana Pi BPI-R4 is used, just moving cards within it. The same config, the same OpenWrt.

How come? Any idea who to get all to 20dBm/27dBm output?

It will be horrible to have only 3 or 6 dBm in AP mode, more like useless piece of hardware.

Here is sample of my 23/27dBm output from iwinfo. I did not include 3dbm or 7dbm as it is useless:

root@OpenWrt:~# iwinfo
phy0.0-ap0 ESSID: "OpenWrt-2g"
          Access Point: 1A:F9:CF:ED:BE:8D
          Mode: Master  Channel: 1 (2.412 GHz)  HT Mode: EHT20
          Center Channel 1: 1 2: unknown
          Tx-Power: 27 dBm  Link Quality: unknown/70
          Signal: unknown  Noise: -65 dBm
          Bit Rate: unknown
          Encryption: WPA3 SAE (CCMP)
          Type: nl80211  HW Mode(s): 802.11ac/ax/b/be/g/n
          Hardware: 14C3:7990 14C3:6639 [MediaTek MT7996E]
          TX power offset: none
          Frequency offset: none
          Supports VAPs: yes  PHY name: phy0

phy0.1-ap0 ESSID: "OpenWrt-5g"
          Access Point: 1A:F9:CF:ED:BE:9D
          Mode: Master  Channel: 44 (5.220 GHz)  HT Mode: HE160
          Center Channel 1: 50 2: unknown
          Tx-Power: 23 dBm  Link Quality: unknown/70
          Signal: unknown  Noise: -66 dBm
          Bit Rate: unknown
          Encryption: WPA3 SAE (CCMP)
          Type: nl80211  HW Mode(s): 802.11ac/ax/b/be/g/n
          Hardware: 14C3:7990 14C3:6639 [MediaTek MT7996E]
          TX power offset: none
          Frequency offset: none
          Supports VAPs: yes  PHY name: phy0

root@OpenWrt:~# iw phy0 info | grep -i dbm
            * 2412.0 MHz [1] (27.0 dBm)
            * 2417.0 MHz [2] (27.0 dBm)
            * 2422.0 MHz [3] (27.0 dBm)
            * 2427.0 MHz [4] (27.0 dBm)
            * 2432.0 MHz [5] (27.0 dBm)
            * 2437.0 MHz [6] (27.0 dBm)
            * 2442.0 MHz [7] (27.0 dBm)
            * 2447.0 MHz [8] (27.0 dBm)
            * 2452.0 MHz [9] (27.0 dBm)
            * 2457.0 MHz [10] (27.0 dBm)
            * 2462.0 MHz [11] (27.0 dBm)
            * 5180.0 MHz [36] (23.0 dBm)
            * 5200.0 MHz [40] (23.0 dBm)
            * 5220.0 MHz [44] (23.0 dBm)
            * 5240.0 MHz [48] (23.0 dBm)
            * 5260.0 MHz [52] (24.0 dBm) (radar detection)
            * 5280.0 MHz [56] (24.0 dBm) (radar detection)
            * 5300.0 MHz [60] (24.0 dBm) (radar detection)
            * 5320.0 MHz [64] (24.0 dBm) (radar detection)
            * 5500.0 MHz [100] (24.0 dBm) (radar detection)
            * 5520.0 MHz [104] (24.0 dBm) (radar detection)
            * 5540.0 MHz [108] (24.0 dBm) (radar detection)
            * 5560.0 MHz [112] (24.0 dBm) (radar detection)
            * 5580.0 MHz [116] (24.0 dBm) (radar detection)
            * 5600.0 MHz [120] (24.0 dBm) (radar detection)
            * 5620.0 MHz [124] (24.0 dBm) (radar detection)
            * 5640.0 MHz [128] (24.0 dBm) (radar detection)
            * 5660.0 MHz [132] (24.0 dBm) (radar detection)
            * 5680.0 MHz [136] (24.0 dBm) (radar detection)
            * 5700.0 MHz [140] (24.0 dBm) (radar detection)
            * 5720.0 MHz [144] (24.0 dBm) (radar detection)
            * 5745.0 MHz [149] (26.0 dBm)
            * 5765.0 MHz [153] (26.0 dBm)
            * 5785.0 MHz [157] (26.0 dBm)
            * 5805.0 MHz [161] (26.0 dBm)
            * 5825.0 MHz [165] (26.0 dBm)
            * 5845.0 MHz [169] (26.0 dBm) (no IR)
            * 5865.0 MHz [173] (26.0 dBm) (no IR)
            * 5885.0 MHz [177] (26.0 dBm) (no IR)
            * 5955.0 MHz [1] (12.0 dBm) (no IR)
            * 5975.0 MHz [5] (12.0 dBm) (no IR)
            * 5995.0 MHz [9] (12.0 dBm) (no IR)
            * 6015.0 MHz [13] (12.0 dBm) (no IR)
            * 6035.0 MHz [17] (12.0 dBm) (no IR)
            * 6055.0 MHz [21] (12.0 dBm) (no IR)
            * 6075.0 MHz [25] (12.0 dBm) (no IR)
            * 6095.0 MHz [29] (12.0 dBm) (no IR)
            * 6115.0 MHz [33] (12.0 dBm) (no IR)
            * 6135.0 MHz [37] (12.0 dBm) (no IR)
            * 6155.0 MHz [41] (12.0 dBm) (no IR)
            * 6175.0 MHz [45] (12.0 dBm) (no IR)
            * 6195.0 MHz [49] (12.0 dBm) (no IR)
            * 6215.0 MHz [53] (12.0 dBm) (no IR)
            * 6235.0 MHz [57] (12.0 dBm) (no IR)
            * 6255.0 MHz [61] (12.0 dBm) (no IR)
            * 6275.0 MHz [65] (12.0 dBm) (no IR)
            * 6295.0 MHz [69] (12.0 dBm) (no IR)
            * 6315.0 MHz [73] (12.0 dBm) (no IR)
            * 6335.0 MHz [77] (12.0 dBm) (no IR)
            * 6355.0 MHz [81] (12.0 dBm) (no IR)
            * 6375.0 MHz [85] (12.0 dBm) (no IR)
            * 6395.0 MHz [89] (12.0 dBm) (no IR)
            * 6415.0 MHz [93] (12.0 dBm) (no IR)
            * 6435.0 MHz [97] (12.0 dBm) (no IR)
            * 6455.0 MHz [101] (12.0 dBm) (no IR)
            * 6475.0 MHz [105] (12.0 dBm) (no IR)
            * 6495.0 MHz [109] (12.0 dBm) (no IR)
            * 6515.0 MHz [113] (12.0 dBm) (no IR)
            * 6535.0 MHz [117] (12.0 dBm) (no IR)
            * 6555.0 MHz [121] (12.0 dBm) (no IR)
            * 6575.0 MHz [125] (12.0 dBm) (no IR)
            * 6595.0 MHz [129] (12.0 dBm) (no IR)
            * 6615.0 MHz [133] (12.0 dBm) (no IR)
            * 6635.0 MHz [137] (12.0 dBm) (no IR)
            * 6655.0 MHz [141] (12.0 dBm) (no IR)
            * 6675.0 MHz [145] (12.0 dBm) (no IR)
            * 6695.0 MHz [149] (12.0 dBm) (no IR)
            * 6715.0 MHz [153] (12.0 dBm) (no IR)
            * 6735.0 MHz [157] (12.0 dBm) (no IR)
            * 6755.0 MHz [161] (12.0 dBm) (no IR)
            * 6775.0 MHz [165] (12.0 dBm) (no IR)
            * 6795.0 MHz [169] (12.0 dBm) (no IR)
            * 6815.0 MHz [173] (12.0 dBm) (no IR)
            * 6835.0 MHz [177] (12.0 dBm) (no IR)
            * 6855.0 MHz [181] (12.0 dBm) (no IR)
            * 6875.0 MHz [185] (12.0 dBm) (no IR)
            * 6895.0 MHz [189] (12.0 dBm) (no IR)
            * 6915.0 MHz [193] (12.0 dBm) (no IR)
            * 6935.0 MHz [197] (12.0 dBm) (no IR)
            * 6955.0 MHz [201] (12.0 dBm) (no IR)
            * 6975.0 MHz [205] (12.0 dBm) (no IR)
            * 6995.0 MHz [209] (12.0 dBm) (no IR)
            * 7015.0 MHz [213] (12.0 dBm) (no IR)
            * 7035.0 MHz [217] (12.0 dBm) (no IR)
            * 7055.0 MHz [221] (12.0 dBm) (no IR)
            * 7075.0 MHz [225] (12.0 dBm) (no IR)
            * 7095.0 MHz [229] (12.0 dBm) (no IR)
            * 7115.0 MHz [233] (12.0 dBm) (no IR)

On some cards the eeprom/internal storage specifies a max of 7 dBm - I guess this is a programming fault on some cards @ Bpi… this has been discussed here: wifi txpower value is very low · Issue #17489 · openwrt/openwrt · GitHub

There exists some workarounds with a new patch in OpenWrt firmware (so if reading eeprom for max dBm value fails and returns 0 - a default value is used). But this patch has not yet been accepted into mainline OpenWrt.

There is also a possible second problem: The noise level for receiving side is quite high, so performance will hurt if you are far away from access point (in your attached output you can see: noise: -65/-66 dBm - most access points have noise levels beyond -90 dBm)

I noticed a difference in behavior between the open-source driver in OpenWrt (including the 24.10 release) and the proprietary driver from the Banana PI image (BPI-R4-BE1350-WIFI_MP4_0-SDK-20240620).

The Banana PI version performs exceptionally well, while the OpenWrt version does not achieve the same level of performance.

Has anyone attempted to port the proprietary driver into the 24.x source tree? I would prefer to use version 24, as it offers some advantages over version 21.

Thank you!

The GitHub thread is quite large :wink: and we figured out there as well: there is a difference between official&old Sinovoip OpenWrt (21…) and mainstream OpenWrt 24. I guess the official&old OpenWrt does not read out the tx-limits from the board.

Unfortunately the drivers are completely different and I don’t remember anymore, but I think the official&old drivers are not opensource and can’t be “ported” to mainline OpenWrt: wifi txpower value is very low · Issue #17489 · openwrt/openwrt · GitHub

That exactly what I came already across. I wish BananaPI folks can comment this out. Silly to produce good-on-paper and expensive piece of hardware and have zero support.

They at least can release binary driver and keep supporting it so it can be easily integrated into main stream sources.

I can compare them with GL.iNET hardware and they support, so some folks want to sell their stuff, some want to keep it as a toy

Amazing how proprietary drive works:

-----------------------------------------------------------
Server listening on 5201 (test #1)
-----------------------------------------------------------
Accepted connection from 192.168.1.100, port 57670
[  5] local 192.168.1.1 port 5201 connected to 192.168.1.100 port 57686
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  95.8 MBytes   803 Mbits/sec    0   3.13 MBytes
[  5]   1.00-2.01   sec   129 MBytes  1.07 Gbits/sec    0   3.13 MBytes
[  5]   2.01-3.01   sec   136 MBytes  1.14 Gbits/sec    0   3.13 MBytes
[  5]   3.01-4.00   sec   149 MBytes  1.25 Gbits/sec    0   3.89 MBytes
[  5]   4.00-5.00   sec   152 MBytes  1.28 Gbits/sec    0   3.89 MBytes
[  5]   5.00-6.00   sec   151 MBytes  1.27 Gbits/sec    0   3.89 MBytes
[  5]   6.00-7.00   sec   159 MBytes  1.33 Gbits/sec    0   3.89 MBytes
[  5]   7.00-8.00   sec   162 MBytes  1.37 Gbits/sec    0   3.89 MBytes
[  5]   8.00-9.01   sec   160 MBytes  1.33 Gbits/sec    0   3.89 MBytes
[  5]   9.01-10.01  sec   161 MBytes  1.35 Gbits/sec    0   3.89 MBytes
[  5]  10.01-11.01  sec   162 MBytes  1.36 Gbits/sec    0   3.89 MBytes
[  5]  11.01-12.00  sec   160 MBytes  1.35 Gbits/sec    0   3.89 MBytes
[  5]  12.00-13.00  sec   161 MBytes  1.35 Gbits/sec    0   3.89 MBytes
[  5]  13.00-14.00  sec   156 MBytes  1.31 Gbits/sec    0   3.89 MBytes
[  5]  14.00-15.01  sec   158 MBytes  1.32 Gbits/sec    0   3.89 MBytes
[  5]  15.01-16.00  sec   159 MBytes  1.34 Gbits/sec    0   3.89 MBytes
[  5]  16.00-17.00  sec   165 MBytes  1.38 Gbits/sec    0   3.89 MBytes
[  5]  17.00-18.00  sec   166 MBytes  1.39 Gbits/sec    0   3.89 MBytes
[  5]  18.00-19.00  sec   160 MBytes  1.34 Gbits/sec    0   3.89 MBytes
[  5]  19.00-20.00  sec   168 MBytes  1.41 Gbits/sec    0   3.89 MBytes
[  5]  20.00-21.00  sec   164 MBytes  1.37 Gbits/sec    0   3.89 MBytes
[  5]  21.00-22.00  sec   165 MBytes  1.39 Gbits/sec    0   3.89 MBytes
[  5]  22.00-23.01  sec   166 MBytes  1.39 Gbits/sec    0   3.89 MBytes
[  5]  23.01-24.01  sec   161 MBytes  1.35 Gbits/sec    0   3.89 MBytes
[  5]  24.01-25.00  sec   162 MBytes  1.37 Gbits/sec    0   3.89 MBytes
[  5]  25.00-26.01  sec   166 MBytes  1.38 Gbits/sec    0   3.89 MBytes
[  5]  26.01-27.00  sec   165 MBytes  1.40 Gbits/sec    0   3.89 MBytes
[  5]  27.00-28.00  sec   161 MBytes  1.35 Gbits/sec    0   3.89 MBytes
[  5]  28.00-29.00  sec   165 MBytes  1.39 Gbits/sec    0   3.89 MBytes
[  5]  29.00-30.00  sec   160 MBytes  1.34 Gbits/sec    0   3.89 MBytes
[  5]  30.00-30.01  sec  1.25 MBytes   922 Mbits/sec    0   3.89 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-30.01  sec  4.60 GBytes  1.32 Gbits/sec    0             sender
-----------------------------------------------------------
Server listening on 5201 (test #2)
-----------------------------------------------------------
Accepted connection from 192.168.1.100, port 34432
[  5] local 192.168.1.1 port 5201 connected to 192.168.1.100 port 34434
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  15.9 MBytes   133 Mbits/sec
[  5]   1.00-2.00   sec  18.2 MBytes   153 Mbits/sec
[  5]   2.00-3.00   sec  18.6 MBytes   156 Mbits/sec
[  5]   3.00-4.00   sec  18.8 MBytes   157 Mbits/sec
[  5]   4.00-5.00   sec  17.5 MBytes   147 Mbits/sec
[  5]   5.00-6.00   sec  18.6 MBytes   156 Mbits/sec
[  5]   6.00-7.00   sec  17.3 MBytes   145 Mbits/sec
[  5]   7.00-8.00   sec  17.8 MBytes   150 Mbits/sec
[  5]   8.00-9.00   sec  17.4 MBytes   146 Mbits/sec
[  5]   9.00-10.00  sec  16.1 MBytes   135 Mbits/sec
[  5]  10.00-11.00  sec  17.7 MBytes   148 Mbits/sec
[  5]  11.00-12.00  sec  15.2 MBytes   127 Mbits/sec
[  5]  12.00-13.00  sec  16.5 MBytes   138 Mbits/sec
[  5]  13.00-14.00  sec  17.8 MBytes   149 Mbits/sec
[  5]  14.00-15.00  sec  15.0 MBytes   126 Mbits/sec
[  5]  15.00-16.00  sec  16.9 MBytes   141 Mbits/sec
[  5]  16.00-17.00  sec  17.3 MBytes   145 Mbits/sec
[  5]  17.00-18.00  sec  15.7 MBytes   131 Mbits/sec
[  5]  18.00-19.00  sec  18.2 MBytes   152 Mbits/sec
[  5]  19.00-20.00  sec  15.3 MBytes   128 Mbits/sec
[  5]  20.00-21.00  sec  17.9 MBytes   150 Mbits/sec
[  5]  21.00-22.00  sec  17.1 MBytes   144 Mbits/sec
[  5]  22.00-23.00  sec  14.8 MBytes   124 Mbits/sec
[  5]  23.00-24.00  sec  18.1 MBytes   152 Mbits/sec
[  5]  24.00-25.00  sec  15.8 MBytes   132 Mbits/sec
[  5]  25.00-26.00  sec  17.9 MBytes   150 Mbits/sec
[  5]  26.00-27.00  sec  17.3 MBytes   145 Mbits/sec
[  5]  27.00-28.00  sec  16.0 MBytes   134 Mbits/sec
[  5]  28.00-29.00  sec  17.9 MBytes   150 Mbits/sec
[  5]  29.00-30.00  sec  17.0 MBytes   143 Mbits/sec
[  5]  30.00-30.19  sec  2.73 MBytes   120 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-30.19  sec   514 MBytes   143 Mbits/sec                  receiver
-----------------------------------------------------------
Server listening on 5201 (test #3)
-----------------------------------------------------------

MT7990_EEPROM_iFEM233.bin (7.5 KB) The above BE14000 wifi 7 module’s driver eeprom file. it will improve the wireless power performance. please add it into your BSP. MT76 will load it.

Do I need to copy this file into /lib/firmware/mediatek? Should I remove any other files in the /lib/firmware/mediatek or /lib/firmware directories? Will this work with the mainstream OpenWrt 24.10?

I have copied the file to /lib/firmware/mediatek, but I haven’t noticed any improvements in signal quality or strength.

root@OpenWrt:~# iwinfo
phy0.0-ap0 ESSID: "OpenWrt-2g"
          Access Point: BA:4F:F9:01:AF:22
          Mode: Master  Channel: 7 (2.442 GHz)  HT Mode: EHT20
          Center Channel 1: 7 2: unknown
          Tx-Power: 6 dBm  Link Quality: unknown/70
          Signal: unknown  Noise: -80 dBm
          Bit Rate: unknown
          Encryption: WPA3 SAE (CCMP)
          Type: nl80211  HW Mode(s): 802.11ac/ax/b/be/g/n
          Hardware: 14C3:7990 14C3:6639 [MediaTek MT7996E]
          TX power offset: none
          Frequency offset: none
          Supports VAPs: yes  PHY name: phy0

phy0.1-ap0 ESSID: "OpenWrt-5g"
          Access Point: BA:4F:F9:01:AF:32
          Mode: Master  Channel: 149 (5.745 GHz)  HT Mode: HE80
          Center Channel 1: 155 2: unknown
          Tx-Power: 7 dBm  Link Quality: unknown/70
          Signal: unknown  Noise: -80 dBm
          Bit Rate: unknown
          Encryption: WPA3 SAE (CCMP)
          Type: nl80211  HW Mode(s): 802.11ac/ax/b/be/g/n
          Hardware: 14C3:7990 14C3:6639 [MediaTek MT7996E]
          TX power offset: none
          Frequency offset: none
          Supports VAPs: yes  PHY name: phy0
root@OpenWrt:/lib/firmware/mediatek# iwinfo phy0.0-ap0 txpowerlist
   0 dBm (   1 mW)
   1 dBm (   1 mW)
   2 dBm (   1 mW)
   3 dBm (   1 mW)
   4 dBm (   2 mW)
   5 dBm (   3 mW)
*  6 dBm (   3 mW)
1 Like

That should be the firmware file called mt7996_eeprom_233.bin There’s only a few bytes of a difference. Where did you get that file from? It’s even more recent than what’s on MTKs git repo.