Builds for Linksys WHW03 V2 + V1

Well on my side I compiled and installed openwrt, no problem, I will see afterwards to remove the remaining screws thanks to the instructions of @wowthur.

I will check that the drivers are not missing during the compilation for the second wifi chipset, because luci displays "Generic".

The IPQ4019 drivers are listed as generic since I extracted the firmware blob from a stock factory image.

The QCA are used on the stock firmware to establish a mesh network.

1 Like

Have to say I broke the plastic wraps both times opening V1 and V2 models...

That's for sure, I stopped before I broke to ask, but I was already bending the edges a bit.

Thanks for the info.
You're answering a question I was wondering about which one is best suited for the backhault.

I've never been so happy to connect a serial plug, your instructions for dismantling helped me a lot, I didn't break anything!

In case anyone hesitates:

Okay, I've done some speed tests with iperf3 and I'm encountering performance problems. Let me explain.

Router WRT1900ACS iperf3 -s

Velop connected in 5GHz via QCA9886
iperf3 -c wrt1900acs :

And with the pc wired to the Velop :

Connecting to host 10.0.254.1, port 5201
[  4] local 10.0.248.2 port 1090 connected to 10.0.254.1 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.01   sec  18.6 MBytes   155 Mbits/sec
[  4]   1.01-2.01   sec  19.8 MBytes   166 Mbits/sec
[  4]   2.01-3.00   sec  21.6 MBytes   182 Mbits/sec
[  4]   3.00-4.00   sec  21.6 MBytes   181 Mbits/sec
[  4]   4.00-5.00   sec  20.6 MBytes   173 Mbits/sec
[  4]   5.00-6.00   sec  20.4 MBytes   171 Mbits/sec
[  4]   6.00-7.00   sec  21.8 MBytes   183 Mbits/sec
[  4]   7.00-8.01   sec  21.8 MBytes   182 Mbits/sec
[  4]   8.01-9.00   sec  19.9 MBytes   168 Mbits/sec
[  4]   9.00-10.00  sec  19.6 MBytes   165 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-10.00  sec   206 MBytes   172 Mbits/sec                  sender
[  4]   0.00-10.00  sec   206 MBytes   172 Mbits/sec                  receiver

iperf Done.

Performance halved
Do you have the same results?

PS: With the option enabled in the firewall Software flow offloading, speed rate rises to 195Mb/s
PS2: Velop (iperf3 -s) (eth0) -> PC (lan) : speed 902 Mbits/sec

Quick update: I am having concerning results as well -- although the wireless chip on my laptop is not the best and might introduce more errors.

I'll have to do some tests and get back with results -- apologies as this past weeks I've been busy and could not work on WHW03 v1 or v2, especially when kids are using the network.

There is no problem, it is already very nice to take care of this support.
I'm available if you ever need to do some tests.

Concerning my test from above, just in case, here are the test conditions in more detail, I didn't use the wifi of my laptop, the config was :

  1. WRT1900ACS (iperf -s) "wifi AP 5GHz" to
  2. Velop ("wifi Client QCA9886") to
  3. PC from Ethernet.

1 <-> 2 : 338Mb/s that's good (max of my wrt1900acs)
2 <-> 3 : 902Mb/s which I think is good there, too.
1 <-> 3 : 172Mb/s

I don't remember the results of connecting the PC in wifi to the velop via IPQ4019, it seems to me that the speed is similar to cable. I feel like that CPU is bottleneck WAN <-> LAN (it is at 100% during the test), but I'm not sure.

Hi,
It seems I have a small problem, I tried to reinstall the manufacturer firmware on one unit, except that after the sysupgrade, I'm wandering from one openwrt partition to another. There I try to find the right command to flash the image directly by tftp at boot time (maybe with tftpboot, but without too much success)

@Pro_info if you can boot into OpenWRT, try to use the following commands to restore to a factory firmware.

Summary of commands, assuming you are using a V2 model and OpenWRT was boot using boot_part 1.

ssh $routerIP
wget $factoryFirmware // additionally you can download it on your computer and SCP to the router
fw_printenv | grep boot_part // make sure we are using boot_part 1
dd if=$FirmwareImage of=/dev/mmcblk0p14 bs=4M count=1
dd if=$FirmwareImage of=/dev/mmcblk0p15 bs=4M skip=2
fw_setenv boot_part 2
reboot

If you do not have access to OpenWRT, I'd recommend booting from an OpenWRT's initramfs and flashing from there.

Feel free to contact me if you need more information!

Thanks, I'm using the original firmware until you find a solution to the performance problems.

However, this command :
dd if=/tmp/FW_WHW03_2.1.13.200506_prod.img of=/dev/mmcblk0p14 bs=4M count=1
return

dd: error writing '/dev/mmcblk0p14': No space left on device
1+0 records in
0+0 records out

Looks like I made a mistake in my previous post.

Was that run from an installed OpenWRT partition or from an initramfs?

If the former, try to write to mmcblk0p16 and mmcblk0p17, which correspond to the boot_part 2 firmware location.

Same problems with mmcblk0p16 and mmcblk0p17.
I try from an installed OpenWRT boot_part 1.
I don't really see how I can be more useful, because when I make an ls -la /dev or with df, I don't see anything starting with mmc*, which is normal I guess.

I'm connected in serial on it, so if you have a more radical way requiring it, it's possible.

Is your model a V1?

The label clearly indicates version 2 :thinking:

On boot :

U-Boot 2012.07 [Chaos Calmer 15.05.1,r35193] WNC_VELOP_V2_20180718_V1.4 (Jul 18 2018 - 11:26:52)

smem ram ptable found: ver: 1 len: 3
DRAM:  512 MiB
machid : 0x8010006
NAND:  ID = 9590dcc2
Vendor = c2
Device = dc
ONFI device found
SF NAND unsupported id:ff:ff:ff:ffSF: Unsupported manufacturer ff
ipq_spi: SPI Flash not found (bus/cs/speed/mode) = (0/0/48000000/0)
512 MiB
MMC:   qca_mmc: 0
[devinfo_relocate] devinfo_relocate[146] malloced DEVINFO at 86ff11c0
[devinfo_relocate_spec] ret: 0 , total: 262144 , CONFIG_DEVINFO_SIZE: 262144
PCI0 Link Intialized
In:    serial
Out:   serial
Err:   serial
machid: 8010006
flash_type: 2
#### auto_recovery ####
enabled:1, boot_part:1, maxpartialboots:3
boot_count_buffer_size = 2048, total number = 128
i=116, offset = 0x6ba000, last_offset = 0x6b9800
Updating boot_count...
boot->Count:1 ,boot->CheckSum:20110812, offset:0x6ba000
#### ~~~~~~~~~~~~~ ####
#### auto_recovery check ####
Hit any key to stop autoboot:  0

NAND read: device 0 offset 0x700000, size 0xd00000
 13631488 bytes read: OK
## Booting kernel from FIT Image at 81000000 ...
   Using 'config@1' configuration
   Trying 'kernel@1' kernel subimage
     Description:  ARM OpenWrt Linux-5.4.52
     Type:         Kernel Image
     Compression:  uncompressed
     Data Start:   0x810000e4
     Data Size:    2644728 Bytes = 2.5 MiB
     Architecture: ARM
     OS:           Linux
     Load Address: 0x80208000
     Entry Point:  0x80208000
     Hash algo:    crc32
     Hash value:   efdd3143
     Hash algo:    sha1
     Hash value:   1af6fa635f424728ac73a9d94263be164d256fef
   Verifying Hash Integrity ... crc32+ sha1+ OK
## Flattened Device Tree from FIT Image at 81000000
   Using 'config@1' configuration
   Trying 'fdt@1' FDT blob subimage
     Description:  ARM OpenWrt linksys_whw03v2 device tree blob
     Type:         Flat Device Tree
     Compression:  uncompressed
     Data Start:   0x81285d18
     Data Size:    19337 Bytes = 18.9 KiB
     Architecture: ARM
     Hash algo:    crc32
     Hash value:   fdc516c8
     Hash algo:    sha1
     Hash value:   b72434432cf99a28f8a06b90766f6bf2a164827b
   Verifying Hash Integrity ... crc32+ sha1+ OK
   Booting using the fdt blob at 0x81285d18
   Loading Kernel Image ... OK
OK
   Loading Device Tree to 86fe7000, end 86feeb88 ... OK
Andrew: mtdparts="mtdparts=nand0:1024K@0x0(0:SBL1),1024K@0x100000(0:MIBIB),1024K@0x200000(0:QSEE),512K@0x300000(0:CDT),2M@0x380000(0:APPSBL),512K@0x580000(0:ART),512K@0x600000(u_env),256K@0x680000(s_env),256K@0x6c0000(devinfo),161M@0x700000(kernel),155M@0xd00000(rootfs),161M@0xa800000(alt_kernel),155M@0xae00000(alt_rootfs),2M@0x14900000(sysdiag),181M@0x14b00000(syscfg),"
Device nand2 not found!
Using machid 0x8010006 from environment

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 5.4.52 (user@user-virtual-machine) (gcc version 8.4.0 (OpenWrt GCC 8.4.0 r13943-fbb6ec1)) #0 SMP Tue Jul 21 15:29:34 2020
[    0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c5387d
[    0.000000] CPU: div instructions available: patching division code
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] OF: fdt: Machine model: Linksys WHW03 V2 (Velop)
[    0.000000] Memory policy: Data cache writealloc
[    0.000000] percpu: Embedded 15 pages/cpu s30028 r8192 d23220 u61440
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 129408
[    0.000000] Kernel command line: init=/sbin/init rootfstype=ubifs ubi.mtd=rootfs root=ubi0:ubifs rootwait rw root=/dev/ubiblock0_0 rootfstype=squashfs ro

Here is a list of steps to flash a factory image into a V2 model:

  1. Check from which partition you have booted.
    You could either check which boot_part variable was used to boot
    fw_printenv boot_part.
    or get the current partition in use
    cat /sys/class/ubi/ubi0_0/device/mtd_num
  2. Let's save the partition of the kernel and image into a variable.
    If you booted from the primary partition or boot_part is 1, we'll write to the alternate partition.
    FIRMWARE_BLKDEV=`cat /proc/mtd | grep "alt_rootfs" | cut -d':' -f1`
    KERNEL_BLKDEV=`cat /proc/mtd | grep "alt_kernel" | cut -d':' -f1`
    If you booted from the alternate or boot_part is 2, let's write to the primary partition.
    FIRMWARE_BLKDEV=`cat /proc/mtd | grep "rootfs" | grep -v "alt_" | cut -d':' -f1`
    KERNEL_BLKDEV=`cat /proc/mtd | grep "kernel" | grep -v "alt_" | cut -d':' -f1`
  3. Let's download or copy to the device the factory image.
    At the time of writing the latest factory image is 2.1.13 and can be found here.
    We will save the path of the factory image into a variable
    FIRMWARE_IMAGE=/tmp/FW_WHW03_2.1.13.200506_prod.img
  4. We will erase the partitions and flash the new firmware image.
    mtd erase $FIRMWARE_BLKDEV
    mtd write $FIRMWARE_IMAGE $FIRMWARE_BLKDEV
    mtd erase $KERNEL_BLKDEV
    mtd write $FIRMWARE_IMAGE $KERNEL_BLKDEV

I have tested that this steps successfully work but I have not tested booting from the factory image due to not having spare devices to do so.

I do apologize if my lack of availability has impacted you.

UPDATE: To manually flash a firmware you should load the CA Support page of the Linksys Factory Firmware: http:///ui/1.0.99.192419/dynamic/home.html#casupport

2 Likes

Thanks @flipy, this procedure worked for me.

I do apologize if my lack of availability has impacted you.

No problem, don't worry.
If you need someone to test future builds when you will have a little more time, do not hesitate

@flipy I'd also be interested in testing the your image build when it is available.

I'm really interested in getting this firmware working. I've cloned @flipy git repo and built an image, but it will not boot on my WHW03v2.

The binary firmwares that @flipy posted here are no longer available to download. The links have expired. If anyone (@Pro_info ?) has a copy of the firmware and can repost it, this would really help.

Thanks

No, I didn't keep the compiled binaries.
Did you clone the whw03v2 branch and not the master branch?