Buffalo WZR-HP-G300NH

From DD-WRT Wiki

(Difference between revisions)
Jump to: navigation, search
Revision as of 17:31, 7 April 2013 (edit)
Buddee (Talk | contribs)
m (DD-WRT on Buffalo WZR-HP-G300NH - add file server links)
← Previous diff
Revision as of 17:34, 7 April 2013 (edit) (undo)
Buddee (Talk | contribs)
(remove outdated infos, wireless driver is much different now)
Next diff →
Line 186: Line 186:
If your network has any device that uses a static IP address, find the WINS section and point to DD-WRT LAN IP address (If you use Windows, choose properties of you adapter, click Advanced, goto WINS tag. If you use Linux, add <code>wins server = xxx.xxx.xxx.xxx</code> in <code>[global]</code> section of samba) If your network has any device that uses a static IP address, find the WINS section and point to DD-WRT LAN IP address (If you use Windows, choose properties of you adapter, click Advanced, goto WINS tag. If you use Linux, add <code>wins server = xxx.xxx.xxx.xxx</code> in <code>[global]</code> section of samba)
-==Fix for WiFi Dropouts== 
-Many users of Buffalo DD-WRT (v24SP2) routers, like me, experience frequent WiFi dropouts, even after tweaking WiFi settings for strong reliable signals. 
-This startup script monitors a WiFi-connected device on your network that is always on to monitor WiFi dropouts. If there are two missed pings, then it restarts the WiFi interface to restore the connection. The script has been modified [http://www.dd-wrt.com/wiki/index.php/Useful_Scripts#Reset_Wireless_Radio from this one for Broadcom hardware], to get it to work on Atheros hardware. 
-[http://www.dd-wrt.com/wiki/index.php/Startup_Scripts To get startup scripts to run, you will first need to follow these instructions]. I prefer the shell script method which, as the prerequisites list, requires that you you are set up for SSH (or Telnet) and SCP connections to the router. It also requires that you [http://www.dd-wrt.com/wiki/index.php/Jffs set up the jffs flash file system], so that you have somewhere permanent to store and run the script after reboots. 
-If you can't use JFFS (ie, it's not available from the GUI the default DD-WRT Pro firmware on this router), you can save the script below as a "Custom Script" in the Administration>Commands tab of the GUI. This will make it available at /tmp/custom.sh . You can then execute '''/tmp/custom.sh > /dev/null &''' to run it in the background, until next reboot. I prefer to do this via an SSH session. 
-As with all startup scripts, you should first run this manually from a temporary location to make sure it is working correctly. Once you have it working properly, you can then make it a startup script (by giving it a '.startup' extension, making it executable (chmod to '700'), and placing it in /jffs/etc/config/ ([http://www.dd-wrt.com/wiki/index.php/Script_Execution#General_Information or other auto startup directory])). 
-# This script fixes problems with intermittent dropouts of the WiFi radio. 
-# It pings a Wifi client to monitor when the connection has dropped (2 missed pings) 
-# It then closes and restarts the WiFi interface to restore WiFi connections. 
-# Modified (for Atheros chips, e.g., Buffalo DD-WRT WZR-HP-G300NH) from: 
-# http://www.dd-wrt.com/wiki/index.php/Useful_Scripts#Reset_Wireless_Radio 
-# (Original script was for Broadcom chip, but Atheros has no 'wl' command) 
-# A wireless client that should always be up, to monitor (modify this for your own network) 
-# Wireless interface that disappears 
-# (The command below will generate this automatically 
-# Should return 'atho' for Atheros hardware) 
-INTERFACE=`nvram get wl0_ifname` 
-# seconds between checks 
-# seconds to wait after failed ping to try again 
-# after cycling, wait this many seconds (limits excessive refreshes if the monitored device is off) 
-# Client must be up before starting main loop 
-while true 
- if ping -c 1 ${CLIENT_IP} >/dev/null 
- then 
- echo "${CLIENT_UP} ok - begining main loop" 
- break 
- fi 
-# main script to restart wireless interface 
-while sleep ${CHECK_EVERY} 
- if ping -c 1 ${CLIENT_IP} >/dev/null 
- then 
- echo "${CLIENT_IP} ok" 
- else 
- echo "${CLIENT_IP} dropped one" 
- sleep ${FAIL_AGAIN} 
- if ! ping -c 1 ${CLIENT_IP} >/dev/null 
- then 
- echo "${CLIENT_IP} dropped two, restarting ${INTERFACE} (WiFi)" 
- # wl -i ${INTERFACE} down **** NO wl command for Atheros hardware, replace 
- ifconfig ${INTERFACE} down 
- sleep 3 
- # wl -i ${INTERFACE} up 
- ifconfig ${INTERFACE} up 
- sleep ${AFTER_CYCLE} 
- fi 
- fi 
-done 2>&1 
-==Alternate WiFi Dropout Fix== 
-My WiFi dropouts are always preceded by the following message in /var/log/messages 
-user.warn kernel: Sending cwmmode action frame to ff:ff:ff:ff:ff:ff 
-I wrote a simple script to look for this string in the logs and restart the WiFi interface. It looks for the string every 56 seconds in the current 10 minute interval of logs. For example, when run at 11:47, it will look for the string from 11:40 on. If found, it will restart the interface and sleep for 10 minutes before checking again. I find this triggers around every other day.  
-After enabling Syslogd under Services->Services->System Log, with no remote server specified 
-With ssh or telnet access, run the following command and then reboot the router 
-nvram set rc_startup='while sleep 57; do if grep ^"`date +"%b %e %H:%M"|cut -c1-11`" /var/log/messages|fgrep ff:ff:ff:ff:ff:ff > /dev/null ; then ifconfig ath0 down; sleep 4; ifconfig ath0 up; logger "wifi hang, restarting"; sleep 542; fi; done' 
-Please read the previous WiFi fix for more details on scripting options. 
== Optware on Atheros == == Optware on Atheros ==

Revision as of 17:34, 7 April 2013


Specifications: Buffalo WZR-HP-G300NH


CPU Atheros AR9132 rev 2 (0xb9)
CPU Speed 400 MHz
Flash ROM 32 MB
Radio 2.4 GHz
WLAN Support B/G/N
WLAN Max Speed 300 mbps
Antenna Location 2x fixed external
Switch 4x GigE + 1 WAN
USB 1x USB 2.0

DD-WRT on Buffalo WZR-HP-G300NH

Buffalo provides a re-branded version of DD-WRT specifically for this router. It can be flashed from the GUI and is available on the Buffalo website:


Go to that site and type in WZR-HP-G300NH and it should point you to the appropriate download for the buffalo dd-wrt professional firmware. As of Aug.2012 - the buffalo dd-wrt builds for this unit currently come in 2 builds only, which are 14998 and 19484

As of Feb 2010, the WZR-HP-G300NH can be flashed with DD-WRT directly from the Buffalo web GUI. To do this, go to http://www.dd-wrt.com/site/support/router-database, look up Buffalo WZR-HP-G300NH, and download the firmware file you need (just one file).

Newer or older builds can be found in the DD-WRT file server


DD-WRT on Buffalo WZR-HP-G300NH (Japanese version)

The official DD-WRT release cannot be pushed by web upload onto the Japanese WZR-HP-G300NH original Buffalo firmware. Buffalo Japan added a "safeguard" that checks for Japanese firmware and rejects western firmware. For people with a Japanese router, see the following two sites for details.

Samba Configuration

The latest build has already include simple UI to configure Samba
DD-WRT already includes a built-in Samba server. These instructions provide a simple way to setup Samba. They are based on instructions from http://g300nh.blogspot.com/2010/06/samba-sharing-in-dd-wrt.html, but have been modified for users not familiar with Linux. All setup can be done from within the DD-WRT interface without requiring the use of a remote shell.

Pre Requirements

DD-WRT doesn't have any tools to format an HDD, so you must have an preformatted HDD in a format that DD-WRT can understand (FAT32, EXT3, etc.)

Go to Services/USB within DD-WRT and change the settings as indicated below:

Core USB Support: Enable
USB 2.0 Support: Enable 
USB Storage Support: Enable 
ext2 / ext3 File System Support: Enable
FAT File System Support: Enable
Automatic Drive Mount: Enable 
Disk Mount Point: /mnt

After apply the changes, if you have already plugged in an HDD, you should see its information in the UI.

Anonymous Sharing Setup

These step will share a disk that is already mounted at /mnt. It will be publicly available to everyone on the network and won't require a username or password to connect.

Go to Administrators/Commands in DD-WRT and copy the script below into the textbox then choose Save Startup

# Stop samba service
killall smbd
killall nmbd
sleep 2

# Configure samba
mkdir -p /tmp/etc/samba
echo "
	netbios name = DD-WRT
	workgroup = WORKGROUP
	server string = DD-WRT
	syslog = 10
	obey pam restrictions = yes
	socket options = TCP_NODELAY
	preferred master = no
	os level = 20
	security = share
	guest account = nobody
	invalid users = root, mail, deamon, reboot
	null passwords = yes
	guest only = yes	
	map to guest = Bad User

	private dir = /tmp/etc/samba/
	lock directory = /var/lock/
	pid directory = /var/run/

	unix charset = UTF-8
	dos charset = UTF-8
	map archive = No
	map hidden = No
	map system = No

	path = /mnt/
	read only = no
	create mask = 0700
	directory mask = 0700
" > /tmp/etc/samba/smb.conf

# Add user for samba
# guest user
grep -q nobody /etc/passwd || echo 'nobody:x:65534:65534:nobody:/mnt:/bin/false' >> /etc/passwd

# Start samba service
SMBOPTIONS="-s /tmp/etc/samba/smb.conf"
/usr/sbin/smbd $SMBOPTIONS
/usr/sbin/nmbd $SMBOPTIONS

Setup Sharing with Username/Password

Because smbpasswd program build-in DD-WRT always treats /etc/samba/smbpasswd as the samba password file, and /etc is a readonly file system, we must temporary bind /tmp/etc to /etc when adding a user. Change # Add user for samba section like below:

# Add user for samba
mount -o bind /tmp/etc /etc

# clear samba user if exists
echo "" > /tmp/etc/samba/smbpasswd

# guest user
grep -q nobody /etc/passwd || echo 'nobody:x:65534:65534:nobody:/mnt:/bin/false' >> /etc/passwd

# add user: username=share, password=sharepassword
grep -q share /etc/passwd || echo 'share:x:65534:65534:nobody:/mnt/:/bin/false' >> /etc/passwd
smbpasswd share sharepassword

umount /etc

If you need add more users, you can repeat these lines with the desired usernames and passwords

# add user: username=share, password=sharepassword
grep -q share /etc/passwd || echo 'share:x:65534:65534:nobody:/mnt/:/bin/false' >> /etc/passwd
smbpasswd share sharepassword

In the [global] section of Samba configuration, update the config value as indicated below:

	encrypt passwords = true
	passdb backend = smbpasswd
	security = user
	null passwords = no
	guest only = no	
	smb passwd file = /tmp/etc/samba/smbpasswd

Configuration Share Folder

add later

Setup DD-WRT as Windows Name Server

If your network has more than one subnet, you might need to setup a Windows Name Server (WINS server), You can make you router become a WINS server even if you don't have a USB HDD or you don't need a sharing setup. Just user script like Anonymous Sharing Setup but change the below setting in the [global] section:

wins support = yes

Go to Setup/Basic section in DD-WRT and set WINS server in DHCP group to your LAN IP address (ex:

If your network has any device that uses a static IP address, find the WINS section and point to DD-WRT LAN IP address (If you use Windows, choose properties of you adapter, click Advanced, goto WINS tag. If you use Linux, add wins server = xxx.xxx.xxx.xxx in [global] section of samba)

Optware on Atheros

Running Optware on Atheros is somewhat different than broadcom. This post explains how to install and setup Optware on Atheros.


Debricking Info using TFTP

There have been a few guides out that have reports of success when de-bricking the WZR-HP-G300NH. This however, has been explained by Brainslayer in this post, please use it for referencing info you may need to de-brick your unit, should the occasion arise.


It has been asked about on how to de-brick this unit in the case that a flash goes wrong or how you can switch back and forth between Buffalo dd-wrt builds and community dd-wrt builds.

This method is if you are using Windows XP OS. I also always use a 10/100 or Gigabit hardware switch in-between the router and the PC, this way - Windows doesn't have to wait for the router switch to initialize, which can make you loose your TFTP timing window.

Power the router off for now. Make sure you are wired into the switch. Do not use the WAN port, use switch ports only.

1) Set a static ip on the pc of / Gateway:

2) Open a command prompt and type this: arp -s 02-AA-BB-CC-DD-1A [enter]

3) After entering the static arp have the command line ready with this command (and you'll have to be in the dir where the firmware image is at or it won't work): tftp -i put wzrhpg300nh-pro-v24sp2-17798-alpha.enc

4) Do not enter the TFTP command, just having it waiting for now, With the router still powered down, Plug in the power for the router and count to 10 seconds or use a stopwatch, then enter the TFTP command that you should have waiting in the command prompt. This is an important timing step for TFTP to work

5) You'll know if it transferred by the command prompt telling you so, give it about 5-6 minutes after if transfer was successful, it'll reset/program itself in this time. Once it is complete the Red Diag LED should go off and then you can access it at

  • Please note that the above method is performed using the Buffalo Branded DD-WRT .enc builds, to use a community DD-WRT build you will need to browse the FTP and choose which build number you want to use and get the file with the naming format of 'buffalo_to_ddwrt_webflash-MULTI.bin' and substitute the above .enc file. Please also note that if you use the community dd-wrt build to flash with, the IP access for webgui using community builds will be @ instead of So once the red diag led goes off you will need to use for webgui access but all the other steps stay the same.
  • Also i am noticing alot of people trying to TFTP to - this will not work, no place in this guide does it say TFTP to - The IP for buffalo's bootloader is so you must follow the steps above carefully in order for this to work.