Builds for Linksys WHW03 V2 + V1

I'd also like to report low power output at both 5GHz and 2.4GHz on my WHW03 v1. However, it's not just that, the Rx sensitivity of the radios is pretty bad.
Curiously, the 2.4GHz radio reports a noise floor of -103 dBm, which is unusually low, I have another AP here and it reports -95dBm. None of my APs have ever reached that low of a noise floor. Maybe there is an attenuation in the Rx path?

Could it be that there is a FEM controlled by GPIO that isn't enabled currently? That would explain the lack of sensitivity as well as the lack of power. There is a documented case here: Asus map-ac2200 low transmit/receive signal 5Ghz - #11 by slh

I took a glance at the source tarball from Belkin and there seems to be nothing obvious.
My unit has a black PCB, just in case this matters. At a glance, it looks identical to the unit shown on the FCC pictures.

Could it be that you have a new model version?
Tried flashing from stock on a V2 several times with no reported errors.
From the log it panics when loading the NAND driver.

That's something I can try to dive deep, as I did found an impact on performance, but unit is usable.

Being the same SoC I'll compare and look for differences

I need your help :slight_smile:
I've messed up the VLAN config on my WHW03 V1 so it is not accessible anymore.
I can reset the node and boot into stock Firmware, but when I reflash your image, the last config is kept. How can I get rid of the config?

No one being able to help me? :frowning:

Assuming you don't have serial access, have you tried flashing stock firmware twice?

I have to check my notes but it might be possible to gain access thru SSH and from there it is possible to clear any OpenWRT settings.

Do let me know or PM me and we'll figure it out.

Yes, I tried without success. One thing I haven't tried is to use a previous stock version.
I also tried to set up static ip, but don't have access via ssh.

@flipy Would it be possible to build a FW taking the reset button into account?
I have a Linksys WRT1200 and there I can reset the OpenWRT FW to factory defaults by pressing the reset button approx. 10sec.
I think the Velop does not official support dual FW handling, as it is not activated in the stock FW like it is for the WRT1200.

That it's actually something that can be implemented.
And Velop does have 2 firmware partitions.

Haven't tried but boot OpenWRT and press the button, otherwise I'll try to make a new build with all recent changes identified.

1 Like

Okay, so after a little investigation today, I noticed that adding one of the board files from the original firmware: /lib/firmware/QCA9888/v1/FCC/boardData_2_0_QCA9888_5G_Y9690_SBS_HB.bin (my unit is from FCC region, hence why I chose this file) as "board.bin" inside the ath10k firmware directory resulted in a massive increase in Tx power (over 20dB) and in Rx sensitivity as well: scanning can pick up networks it simply couldn't previously.
So it seems the problem with the v1 units is simply that their board files are missing in board-2.bin.

Interesting, as I did extract the bin files from my devices -- long time ago though.

I'll try to fetch new ones and replace them to check the performance.

Does someone have a hint how to add VLAN to the WHW03 v1?
Regardless what I try it ends up in a non working configuration as soon as I add a new VLAN via LuCi.

Just to have it somewhere summarized, what are the blocks for PR to master at the moment? Afaik some less tested devices got accepted in the past.

That's something on my to-do list, but I don't know if LuCi supports VLANs thru the new DSA driver. A good starting point is the VLAN wiki: https://openwrt.org/docs/guide-user/network/vlan/switch_configuration

For V2 it might be doable, more testing is needed to iron out the outstanding issues, but once completed it should be fairly easy to PR to master or branch by rebasing and creating a single commit.

V1 is more hackish as it is a eMMC device but treated like a NAND one -- from that perspective another review on the modified processes as well as thoughtful testing will be necessary.

This works generically for all devices running DSA drivers (instead of swconfig), but DSA needs to be set up correctly for the individual devices (device tree, /etc/board.d/02_network, etc.).

1 Like

Can someone check if the below commands make any different in terms of radio signal and strength (valid for both V1 and V2)?

echo 449 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio449/direction 
echo 1 > /sys/class/gpio/gpio449/value
echo 455 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio455/direction 
echo 1 > /sys/class/gpio/gpio455/value
echo 464 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio464/direction 
echo 1 > /sys/class/gpio/gpio464/value

It is taken from the original DTS:

pinctrl wifi1
wifi_0_pins: wifi1_pinmux {
                               mux_1 {
                                       pins = "gpio37";
                                       output-high;
                                       function="wcss0_dbg16";
                                       bias-pull-up;
                                       drive-strength = <6>;
                               };
                               mux_2 {
                                       pins = "gpio43";
                                       function="wifi_wci1";
                                       bias-pull-up;
                                       drive-strength = <6>;
                               };
                               mux_3 {
                                       pins = "gpio52";
                                       output-high;
                                       function="gpio";
                                       bias-pull-up;
                                       drive-strength = <6>;
                               };

For 5 GHz, I tested both radios, by averaging the RSSI of 4 scans, using another AP, with a ath10k radio, inactive, only scanning for networks.
QCA9886, channel 149, 80 MHz BW: All GPIOs off: -28.25 dBm; All GPIOs on: -27.25 dBm.
IPQ4019, channel 40, 80 MHz BW: All GPIOs off: -46.5 dBm; All GPIOs on: -46.75 dBm.

For 2.4 GHz, I used the same procedure, except that the AP has a ath9k for 2.4 GHz.
IPQ4019, channel 5, 20 MHz BW: All GPIOs off: -36.5 dBm; All GPIOs on: -36 dBm.

Seems like the GPIOs don't make any difference, in terms of signal strength.

Hi Victhor,

can you explain how I can get the board file from stock FW?

Best regards
Björn

You can extract these files from a stock firmware image using binwalk. You might have a problem where binwalk extracts all files, but doesn't preserve the directory structure, I don't remember the solution, but it's easy enough to find online.

For the QCA9888, you can copy one of the boardData files inside ./lib/firmware/QCA9888/v1 to /lib/firmware/ath10k/QCA9888/hw2.0/board.bin in your device, using scp or something like that. They are subdivided into various regions, just pick the appropriate one and copy it.

For the IPQ4019, it's a little more involved. First, you have to download these tools: https://github.com/qca/qca-swiss-army-knife/

Create a folder for your IPQ4019 board files, add a text file with the following content in this folder:

[
	{
		"names": ["bus=ahb,bmi-chip-id=0,bmi-board-id=20,variant=linksys-whw03-fcc"],
		"data": "boardData_1_0_IPQ4019_DK04_2G.bin"
	},
	{
		"names": ["bus=ahb,bmi-chip-id=0,bmi-board-id=21,variant=linksys-whw03-fcc"], 
		"data": "boardData_1_0_IPQ4019_DK04_5G.bin"
	}
]

(you may change the "variant" fields according to your region, as needed)

Copy the boardData files from one of the folders (again, there are various regional variants) inside ./lib/firmware/IPQ4019/v1 into this same folder.

Run the qca-swiss-army-knife/tools/scripts/ath10k/ath10k-bdencoder script with the -c <insert text file's name here> argument, it should generate a board-2.bin file, which you can then copy to /lib/firmware/ath10k/QCA4019/hw1.0/board-2.bin in your device.

Reboot your device and your wireless performance should be on par with stock firmware now.

You can find these steps loosely described over the web and various forum posts, this is just a condensed version of that.