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[edit | edit source]

Flashing OpenWRT from DD-WRT was very straight forward. There is an issue with getting USB working however.

Links:

Flashing from stock dd-wrt firmware[edit | edit source]

# 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[edit | edit source]

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[edit | edit source]

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[edit | edit source]

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[edit | edit source]

Setup a print server using p910nd[edit | edit source]

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[edit | edit source]

USB Issues[edit | edit source]

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

See also[edit | edit source]