Another Velop Openwrt install

I got a second Velop WHW03 V1 running OpenWrt

This project went better than my first time around, where I had to fiddle a lot to get the third radio working.

  1. Download the correct files from OpenWrt.org for a Linksys WHW03 V1, openwrt-ipq40xx-generic-linksys_whw03-squashfs-factory.bin for the initial firmware load, openwrt-24.10.0-ipq40xx-generic-linksys_whw03-squashfs-sysupgrade.bin for the final release.
  2. Factory reset the factory firmware
    • Because I had been controlling my velop’s with “The App”, I had to reset to get OpenWrt loaded.
    • Cable left side ethernet port to my laptop (this is important, it’s the “LAN” side)
    • Turn it off, turn it on, wait until it rebooted, hold down the “reset” button for 10 seconds
    • Wait until my laptop’s ethernet port got a new IPv4 address in 192.168.1.0/16, then get Firefox to show me https://192.168.1.1/fwupdate.html
    • Had to use admin/admin as user name and password. I don’t know if this is Velop default, I was just guessing.
    • Do the “Browse” thing to find openwrt-ipq40xx-generic-linksys_whw03-squashfs-factory.bin , click Upgrade
    • Wait nervously until you see some JSON that includes “OK”
  3. Re-cable: the “LAN” port is now the right hand ethernet port, and the “WAN” port is on the left.
  4. Wait a few seconds for my laptop to re-acquire a 192.168.1.0/24 IPv4 address.
  5. SSH to the Velop from my laptop: ssh root@192.168.1.1
  6. Get a copy of the release firmware: scp bediger@192.168.1.127:zzzz/openwrt-24.10.0-ipq40xx-generic-linksys_whw03-squashfs-sysupgrade.bin /tmp
  7. Load the factory firmware: sysupgrade -v -n /tmp/openwrt-24.10.0-ipq40xx-generic-linksys_whw03-squashfs-sysupgrade.bin

At this point, the Velop is running Linux. You have to be connected to its network via cable, OpenWrt defaults to non-working radios. Further, you have to be connected to the “LAN” port. The WHW03 V1 has 2 RJ-45 sockets on the bottom. The factory firmware has the left side (when the labels are right side up) socket as the “LAN” port, but OpenWrt has the right side socket as the “LAN” port.

Make the WHW03 V1 into a bridge

I hand edited the file /etc/config/network

config device
        option name 'br-lan'
        option type 'bridge'
        list ports 'lan'
        list ports 'wan'  <- Added this line
...
config interface 'lan'                    
        option device 'br-lan'            
        option proto 'dhcp'    <- changed to 'dhcp' from 'static'
        #option ipaddr '192.168.1.1'      <- comment out
        #option netmask '255.255.255.0'   <- comment out
        #option ip6assign '60'            <- comment out

That makes both RJ-45 ethernet ports and the radios into a “bridge”. Access to the WHW03 will be via an IP address it obtains from my server via DHCP. These changes will be made to take effect after the next steps.

Turn off OpenWrt services

I did my usual ritual of turning off OpenWrt services so they don’t conflict with what my main server offers. I issued these commands:

root@OpenWrt:~# /etc/init.d/dnsmasq disable
root@OpenWrt:~# /etc/init.d/dnsmasq stop
root@OpenWrt:~# /etc/init.d/odhcpd disable
root@OpenWrt:~# /etc/init.d/odhcpd stop
root@OpenWrt:~# /etc/init.d/firewall disable
root@OpenWrt:~# /etc/init.d/firewall stop
# Pause, take a deep breath.
root@OpenWrt:~# /etc/init.d/network reload

I think I set a root password before issuing these commands.

The network reload command makes the changes to /etc/config/network take effect. All network connections drop.

I had to turn the Velop off and back on to get ssh access. You may want to wait a few minutes after the network reload to cycle the power.

Turn the radios on

After cycling the power and re-establishing ssh access, I configured the radios and WiFi with LuCi, the web interface that the OpenWrt organization has created.

I had my Kea DHCP4 daemon giving out a set IPv4 address for this WHW03’s “WAN” MAC address, so I knew what URL to use to access LuCi. Depending on how your network functions, you may have to grope around to find your Velop’s IPv4 address at this juncture.

I used the URL http://10.0.0.77. OpenWrt’s web server does not have TLS configured, and that’s the IPv4 address from Kea.

I entered “root” and the root password I set earlier, then hovered my mouse pointer over “Network” and clicked on the “Wireless” menu entry to bring up a screen looking like this:

web browser showing LuCi wireless networking display

I clicked the “Edit” buttons, I did not click “Restart”, “Scan” or “Add”. After each “Edit” button click, I modified several things:

  1. Clicked the “Enable” button, which I believe turns the radio on, and triggered a 60 second LuCi wait.
  2. Set the “Channel” pulldown in the “operating frequency” row to “Auto”
  3. Set country code to “US”
  4. Changed ESSID - I named each one something different so I could identify non-working radios.
  5. Clicked the “Wireless Security” tab
    • chose “WPA2-PSK” encryption
    • set a WiFi password, filling in the “Key” field.
  6. Clicked “Save”, which took me back to the main “Wireless” page.
  7. Clicked “Save & Apply”. I think this caused a reboot.

I used my phone to verify that all 3 radios (different SSIDs!) showed up.

Notes

I did not change out the ath10k-ct firmware. I haven’t exercised this particular WHW03 enough to decide if I need to. I also used the official “factory” OpenWrt firmware, instead of some sketchy out-of-tree build some member of the OpenWrt forums did. This worked fine, no reason to not do the official “factory” firmware for the initial load.