I’ve had my BPI-R4 a few months now, along with the BE14 module which is still far too buggy to use as my primary WiFi AP. So in the meantime I decided to go to AsiaRF and buy two AW7916-NPD (MT7916) and a single AW7915-BMD (MT7915).
The MT7916E module can’t do 5GHz and 6GHz simultaneously, hence why I bought two of them. I was going to configure one of them for 5GHz and the other for 6GHz…but nothing is ever that simple.
From what I can find the only way to enable 6GHz is through the driver directly which has the undesired effect of enabling 6GHz on both modules which is pretty useless. I have tried looking around for solutions and have mostly found solutions that used to work, but now don’t work anymore.
The whole plan seemed pretty straight forward, until it wasn’t.
MT7916 MiniPCIe: 2.4GHz + 5GHz
MT7916 MiniPCIe: 2.4GHz + 6GHz
MT7915 Top M.2: 2.4GHz + 5GHz
The goal was to have the two MT7916’s be my main network, tuned for maximum performance. While the single MT7915 would be geared more toward compatibility and IoT devices.
Are there any solutions at all? This isn’t just a OpenWRT issue either, it seems to affect all Distros.
At this point im wondering if compiling two separate copies of the mt7915e driver would work? One version would essentially be stock and the other, let’s call it mt7915e_6ghz would basically just have enable_6ghz=1 hardcoded into it. Then using the Hardware ID of only one of the modules try to unbind it from mt7915e and then bind it to mt7915e_6ghz on boot. Similar to using PCIe Passthrough with QEMU when you bind your device to VFIO…But I have no clue what kind of an undertaking it would be to do that and if it would even work. Im mostly Just thinking out loud.
Thanks for sharing the link to the bug tracker, I totally forgot about that issue. Can’t tell what the maintainers had in mind when upversioning the driver to this crappy code
Yet my usecase seems to be different from yours and the solution posted in the bug tracker solves my problem.
MT7915E: 2,4GHz for compatiblity and complete coverage of one floor
MT7916#1: 5 OR 6 GHz for living room
MT7916#2: 5 OR 6 GHz for kitchen
To support this I laid 2 cables in the ceiling of the living room, 2 in the ceiling of the kitchen and 4 centrally in the staircase of this floor and installed respective antennas.
As the MT7915E covers the complete floor with 2,4GHz I deactivate the 2,4GHz provided by DBDC on both MT7916.
For now I still have only a few devices supporting 6GHz which is why I don’t plan to switch to 6GHz frequencies soon. But as soon as I have enough devices so it makes sense, I can do this on both MT7916 simultaneously. For me the band is not too crowded and therefore I do not need to switch timewise.
My question/suggestion: Why do you want to use MT7916 for 5GHz frequency and don’t take a second MT7915E for this purpose instead?
And - out of curiousity - do you really need the 2,4GHz band from DBDCs when installing the MT7915E alongside?
Thats part of the issue with the driver the way it is, a setup like that isn’t possible even though it makes perfect sense.
By default the MT7916’s both show up as 2.4GHz + 5GHz, if you edit the file for the driver and add enable_6ghz=1 then both of the modules will show up as 6GHz only.
I mean, unless I completely missed something, which I would love to be the case.
if (!is_mt7915(&dev->mt76)) {
switch (val) {
case MT_EE_V2_BAND_SEL_5GHZ:
phy->mt76->cap.has_5ghz = true;
return;
case MT_EE_V2_BAND_SEL_6GHZ:
phy->mt76->cap.has_6ghz = true;
return;
case MT_EE_V2_BAND_SEL_5GHZ_6GHZ:
if (enable_6ghz) {
phy->mt76->cap.has_6ghz = true;
u8p_replace_bits(&eeprom[MT_EE_WIFI_CONF + band],
MT_EE_V2_BAND_SEL_6GHZ,
MT_EE_WIFI_CONF0_BAND_SEL);
} else {
phy->mt76->cap.has_5ghz = true;
u8p_replace_bits(&eeprom[MT_EE_WIFI_CONF + band],
MT_EE_V2_BAND_SEL_5GHZ,
MT_EE_WIFI_CONF0_BAND_SEL);
}
/* force to buffer mode */
dev->flash_mode = true;
return;
default:
phy->mt76->cap.has_2ghz = true;
return;
}
} else
It looks like the eeprom is set to MT_EE_V2_BAND_SEL_5GHZ_6GHZ.
The solution would be to set 1 eeprom to MT_EE_V2_BAND_SEL_5GHZ and another eeprom to MT_EE_V2_BAND_SEL_6GHZ. Also would need to set either MT_EE_V2_BAND_SEL_5GHZ or MT_EE_V2_BAND_SEL_6GHZ in the eeprom.
So you would need to find out how the eeprom is loaded (from file, devicetree or physical eeprom) and see how to make the change there…
On mt76xx, if loaded from devicetree, you could setup 2 different eeproms easily. Like it is done here:
So you can have different data on different pcie slots. But on mt79xx not sure if it can load from devicetree, as eeprom loading code uses some of the mt76xx code… Here it is being used on the R3: https://forum.banana-pi.org/t/banana-pi-r3-fan-with-pwm/14406/49
If loaded from file, you could change the (link to) the file, between loading for individual card.
Another option is to use the firmware sysfs fallback mechanism…
Please ignore my post above, as I made some misconception.
What you missed is: the MT7916 card is DBDC, so it will always expose the 2,4GHz frequency + the second frequency chosen (via WiFi config in 23.05.x/driver setting in 24.10.x) 5 OR 6Ghz.
So if you only want to have 2,4GHz+5Ghz+6GHz frequencies, there is no need for two MT7916, as you could create the following setup:
MT7916: 2,4GHz + 6GHz frequencies
MT7915E: 5Ghz frequency
So either forget about the second MT7916 card (and sell it), or use it in a way to lay cables to a separate room (and install 6GHz-capable antennas there) to have 6GHz WiFi in that room as well, as 6GHz frequency poorly penetrates walls. (This is what I did in my setup to bring 6GHz WiFi to my two main common rooms).
Ok i started out with a fresh setup of 24.10.1 and I just cannot seem to get this going.
With enable_6ghz=1 I cant seem to get anything useable. So far I have solely focused on the MT7916 and I have tried two different things;
I disabled all other radios except a single 6GHz radio on a single MT7916, no matter what I do I cannot connect to this SSID. I ensured that WPA3 and Management frame protection is enabled, and still nothing.
I Then tried enabling the 2.4GHz radio on the same MT7916 module and now I can immediately connect, though I appear to be stuck on the 2.4GHz band and speeds never break about 80Mb/s
I have been using my iPhone 15 Pro for all tests which Is capable of using 6GHz and I have achieved speeds of just over 1.5Gb/s on other routers before, including the BPI-BE14.
Maybe you need to report that in the issue you linked above.
I didn’t test 6GHz myself on 24.10.x (just found it is not configurable anymore via luci).