WZR-600DHP
The Buffalo WZR-600DHP is a 802.11n router. This router is based on the Atheros AR7161 SoC with 128MB memory and 32MB flash.
The last firmware that Buffalo provided for this unit is DD-WRT v3.0-r30356 std (11/30/17). This version of dd-wrt is based on Linux 3.10.102, built on November 30, 2017. For continued support, use OpenWRT which still continues to build recent revisions for this unit.
I purchased this unit back in February 2014 from NewEgg for $80.
Flashing OpenWRT on the WZR-600DHP
Flashing OpenWRT from DD-WRT was very straight forward. There is an issue with getting USB working however.
Links:
- Installation: https://wiki.openwrt.org/toh/buffalo/wzr-600dhp#installation_using_the_remote_shell_method
- Firmware: https://downloads.openwrt.org/releases/18.06.1/targets/ar71xx/generic/openwrt-18.06.1-ar71xx-generic-wzr-600dhp-squashfs-sysupgrade.bin
Flashing from stock dd-wrt firmware
# cd /tmp
# scp foo@host:~/openwrt-18.06.1-ar71xx-generic-wzr-600dhp-squashfs-sysupgrade.bin .
# mtd -r write openwrt-18.06.1-ar71xx-generic-wzr-600dhp-squashfs-sysupgrade.bin linux
## This may take about 1-2 minutes, and the -r will automatically reboot the device
Flashing using the TFTP bootloader method
The unit will start a TFTP server for a few seconds as part of the boot sequence. During this short window, it will accept a file via TFTP from 192.168.11.2.
You will need to prepare a Linux system on the network on this IP address. Use the following commands to set up the IP address and ARP entry (the bootloader fakes this MAC address). Use Curl to push the file via tftp
.
# ip address add 192.168.11.2/24 dev ens33
# arp -s 192.168.11.1 02:aa:bb:cc:dd:20
# curl -T openwrt-tftp.bin tftp//192.168.11.1
Power cycle the router and then run the curl
command. After a few seconds, you should see curl transmitting the file. Once the curl finishes, it will take the unit a few more minutes to finish flashing. The diagnostic red LED should be blinking until this process is done.
Once you're done, you might want to clear the ARP entry using: arp -d 192.168.11.1
Accessing OpenWRT
With OpenWRT loaded, you should be able to access it at 192.168.1.1 (not 192.168.11.1 which was the previous default).
Reverting to the stock firmware
After being unable to get this router working with a USB printer, I decided to revert from OpenWRT back to the stock dd-wrt based firmware. This can be accomplished using the TFTP bootloader method.
# ip address add 192.168.11.2/24 dev ens33
# arp -s 192.168.11.1 02:aa:bb:cc:dd:20
## Use either curl or tftp
# curl -T wzr600dhp-pro-v3.0-r30356.enc tftp//192.168.11.1
## OR use tftp
## Run every command blow except the PUT command. Run the PUT command only when you have power cycled the device and the router's link light beings blinking.
# tftp 192.168.11.1
tftp> binary
tftp> rexmt 1
tftp> timeout 60
tftp> trace
Packet tracing on.
tftp> put wzr600dhp-pro-v3.0-r30356.enc
## The transfer took about 33 seconds and the diagnostic light will blink rapidly initially, then followed by a slightly slower blink. It took another 5 or so minutes for it to come online afterwards.
## Clear the ARP table:
arp -d 192.168.11.1
The router will be accessible at 192.168.11.1 with the new stock firmware. Log in as 'admin' using 'password' as the password.
Tasks
Setup a print server using p910nd
On the stock dd-wrt firmware, you can enable USB printer support which starts a p910nd service that exposes the USB printer on port 9100.
On OpenWRT, this can also be set up by installing the p910nd
, luci-app-p910nd
, and kmod-usb-printer
packages. Refresh the luci web interface and navigate to Services -> "p910nd - Print Server". Enable the service for /dev/usb/lp0
on port 9100.
Troubleshooting
USB Issues
Update: Testing this again on OpenWRT 21 shows the USB issue described below has been resolved.
The following applied to OpenWRT / LEDE 17.01:
USB support doesn't appear to work for this model. I installed the USB drivers with the following packages opkg install kmod-usb-printer usbutils kmod-usb-ohci kmod-usb2
. However, OpenWRT does not seem to detect the USB devices. A printer should exist at /dev/usb/lp
, but nothing shows up. LEDE 17.01 was unable to detect any USB devices at all.
root@buffalo:/dev/bus/usb/001# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
root@buffalo:/dev# lsmod | grep usb
ledtrig_usbport 2160 0
nls_base 4736 1 usbcore
usb_common 1312 1 usbcore
usbcore 118528 4 usblp,ledtrig_usbport,ehci_platform,ehci_hcd
usblp 8480 0
root@buffalo:/dev# dmesg | grep -i usb
[ 6.651469] usbcore: registered new interface driver usbfs
[ 6.657039] usbcore: registered new interface driver hub
[ 6.662464] usbcore: registered new device driver usb
[ 6.671682] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[ 6.690631] ehci-platform ehci-platform: new USB bus registered, assigned bus number 1
[ 6.727198] ehci-platform ehci-platform: USB 2.0 started, EHCI 1.00
[ 6.734199] hub 1-0:1.0: USB hub found
[ 12.263746] usbcore: registered new interface driver usblp
root@buffalo:~# uname -a
Linux buffalo 4.9.120 #0 Thu Aug 16 07:51:15 2018 mips GNU/Linux
Using the stock dd-wrt firmware, the AR7100 EHCI USB controller is found and devices are also discovered:
root@DD-WRT:~# lsmod | grep usb
usblp 8996 0
usbcore 118161 4 usblp,ohci_hcd,ehci_hcd
usb_common 1146 1 usbcore
root@DD-WRT:~# lsusb
-sh: lsusb: not found
root@DD-WRT:~# uname -a
Linux DD-WRT 3.10.102 #28624 Thu Nov 30 14:01:34 CET 2017 mips DD-WRT
root@DD-WRT:~# dmesg | grep -i usb
<6>[ 552.770000] usbcore: registered new interface driver usbfs
<6>[ 552.780000] usbcore: registered new interface driver hub
<6>[ 552.790000] usbcore: registered new device driver usb
<6>[ 552.880000] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
<7>[ 552.880000] drivers/usb/host/ehci-ar71xx.c: starting AR7100 EHCI USB Controller...done. reset 0x40 usb config 0x30000
<6>[ 554.800000] ar71xx-ehci ar71xx-ehci.0: new USB bus registered, assigned bus number 1
<6>[ 554.850000] ar71xx-ehci ar71xx-ehci.0: USB 2.0 started, EHCI 1.00
<6>[ 554.850000] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
<6>[ 554.860000] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
<6>[ 554.870000] usb usb1: Product: Atheros AR71xx built-in EHCI controller
<6>[ 554.870000] usb usb1: Manufacturer: Linux 3.10.102 ehci_hcd
<6>[ 554.880000] usb usb1: SerialNumber: platform
<6>[ 554.880000] hub 1-0:1.0: USB hub found
<6>[ 555.100000] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
<7>[ 555.100000] drivers/usb/host/ohci-ar71xx.c: starting AR7100 OHCI USB Controller...
<6>[ 555.110000] ar71xx-ohci ar71xx-ohci.0: new USB bus registered, assigned bus number 2
<6>[ 555.180000] usb usb2: New USB device found, idVendor=1d6b, idProduct=0001
<6>[ 555.190000] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
<6>[ 555.190000] usb usb2: Product: Atheros AR71xx built-in OHCI controller
<6>[ 555.200000] usb usb2: Manufacturer: Linux 3.10.102 ohci_hcd
<6>[ 555.210000] usb usb2: SerialNumber: platform
<6>[ 555.210000] hub 2-0:1.0: USB hub found
<6>[ 555.500000] usbcore: registered new interface driver usblp
Is the WAN port actually gigabit?
I recently had to use the WZR-600DHP as my gateway between my home network and the Shaw modem (because Shaw's new modem doesn't let you change its IP address or netmask to a /22). After setting everything in place, I noticed the link speed between the WAN port and the modem was only 100mbit.
On OpenWRT using ethtool
, I can see that eth0
(the interface to the internal switch) is gigabit while eth1
(the WAN port) is limited to 100mbit:
root@OpenWrt:~# ethtool -I eth0
Settings for eth0:
Supported ports: [ TP MII ]
Supported link modes: 1000baseT/Full
Supported pause frame use: Symmetric Receive-only
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 1000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Link partner advertised link modes: 1000baseT/Full
Link partner advertised pause frame use: No
Link partner advertised auto-negotiation: No
Link partner advertised FEC modes: Not reported
Speed: 1000Mb/s
Duplex: Full
Port: MII
PHYAD: 0
Transceiver: external
Auto-negotiation: on
Current message level: 0x000000ff (255)
drv probe link timer ifdown ifup rx_err tx_err
Link detected: yes
root@OpenWrt:~# ethtool -I eth1
Settings for eth1:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Supported pause frame use: Symmetric Receive-only
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 100baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Link partner advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Link partner advertised pause frame use: No
Link partner advertised auto-negotiation: Yes
Link partner advertised FEC modes: Not reported
Speed: 100Mb/s
Duplex: Full
Port: MII
PHYAD: 4
Transceiver: external
Auto-negotiation: on
Current message level: 0x000000ff (255)
drv probe link timer ifdown ifup rx_err tx_err
Link detected: yes
root@OpenWrt:~# cat /proc/cpuinfo
system type : Atheros AR7161 rev 2
machine : Buffalo WZR-HP-AG300H
processor : 0
cpu model : MIPS 24Kc V7.4
BogoMIPS : 451.58
wait instruction : yes
microsecond timers : yes
tlb_entries : 16
extra interrupt vector : yes
hardware watchpoint : yes, count: 4, address/irw mask: [0x0ffc, 0x0ffc, 0x0ffb, 0x0ffb]
isa : mips1 mips2 mips32r1 mips32r2
ASEs implemented : mips16
Options implemented : tlb 4kex 4k_cache prefetch mcheck ejtag llsc dc_aliases perf_cntr_intr_bit perf
shadow register sets : 1
kscratch registers : 0
package : 0
core : 0
VCED exceptions : not available
VCEI exceptions : not available
root@OpenWrt:~# cat /etc/os-release
NAME="OpenWrt"
VERSION="21.02.0"
ID="openwrt"
ID_LIKE="lede openwrt"
PRETTY_NAME="OpenWrt 21.02.0"
VERSION_ID="21.02.0"
HOME_URL="https://openwrt.org/"
BUG_URL="https://bugs.openwrt.org/"
SUPPORT_URL="https://forum.openwrt.org/"
BUILD_ID="r16279-5cc0535800"
OPENWRT_BOARD="ath79/generic"
OPENWRT_ARCH="mips_24kc"
OPENWRT_TAINTS=""
OPENWRT_DEVICE_MANUFACTURER="OpenWrt"
OPENWRT_DEVICE_MANUFACTURER_URL="https://openwrt.org/"
OPENWRT_DEVICE_PRODUCT="Generic"
OPENWRT_DEVICE_REVISION="v0"
OPENWRT_RELEASE="OpenWrt 21.02.0 r16279-5cc0535800"
All the spec sheets for the device says it is a gigabit capable device on all LAN and WAN ports. 🤔
I then did a sysupgrade from OpenWRT 21.02.0 to the latest OpenWRT release (23.05.0) and.... lo and behold the interface came up with gigabit:
root@OpenWrt:~# ethtool -I eth1
Settings for eth1:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supported pause frame use: Symmetric Receive-only
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: Symmetric Receive-only
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Link partner advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Link partner advertised pause frame use: No
Link partner advertised auto-negotiation: Yes
Link partner advertised FEC modes: Not reported
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 4
Transceiver: external
Auto-negotiation: on
MDI-X: Unknown
Current message level: 0x000000ff (255)
drv probe link timer ifdown ifup rx_err tx_err
Link detected: yes
OpenWRT's great 🎉