What is DD-WRT

DD-WRT is a Linux based open-source firmware designed to run on a bunch of different routers. The firmware basically replaces the original manufacturer firmware.

Why would I install this? Well manufacturer firmware comes with a host of problems, including:

  • Missing major features
  • Lack of customization
  • Security issues due to slow or missing patches

Issues with DD-WRT

While most hardware works exceptionally well with DD-WRT, the Netgear R8300 (from Costco) and R8500 had continuous issues, where the Wi-Fi channels would just randomly stop working and would require a reboot of the router. It was so bad, that I would often revert back to Netgear firmware, to just get frustrated with the limitation to then seek out newer firmware that solved the issues.

In the past, Kong firmware was the most reliable, however the last version of this was released in 2019, so this is no longer a viable solution.

The problem

The problem appeared to stem from the NTP Client that's provided with DD-WRT, which is responsible for keeping the router time up to date. The default provided service will simply snap the time to the remote server on a fixed interval. The result of this is that the time could jump by relatively large deltas during any of these periodic time syncs. The Wi-Fi chip appears to not like these time jumps and will stop functioning correctly whenever this happens.

DD-WRT NTP settings

The solution

After a lot of trial and error, I have finally landed on a solution that has provided me with flawless Wi-Fi across my entire household on both the 2.4GHz and 5GHz networks.

There are three parts to the solution:

  1. Disable the inbuilt NTP service
  2. Install Entware
  3. Install the NTPD package

A typical NTP daemon will constantly monitor the time of remote servers, and then gradually nudge the time to match over a period of time. This provides an extremely stable and continuous time.

Disable NTP

You could just disable the inbuilt NTP service and just accept the fact the time will slowly drift. I haven't tested this to understand if the time is important for DD-WRT to operate correctly.

Disable DD-WRT NTP

First step is to disable the inbuilt NTP service. Navigate to the Basic Setup page and at the bottom select Disable and then press Save.

Install Entware

  1. Enable SSHD:
  1. Open an SSH session using a program such as Putty or the Windows built in SSH client:
> ssh [email protected]
[email protected]'s password:
==========================================================
     ___  ___     _      _____  ______       ____  ___
    / _ \/ _ \___| | /| / / _ \/_  __/ _  __|_  / / _ \
   / // / // /___/ |/ |/ / , _/ / /   | |/ //_ <_/ // /
  /____/____/    |__/|__/_/|_| /_/    |___/____(_)___/

                       DD-WRT v3.0
                   https://www.dd-wrt.com
==========================================================
BusyBox v1.35.0 (2022-10-05 03:22:51 +07) built-in shell (ash)

root@router:~#
  1. Install Entware following the DD-WRT guide which will provide instructions on the following steps:
    • Enable USB support
    • Prepare a USB drive with ext2fs
    • Plug in the USB port of the router
    • Install Entware (ARMv7)
    • Add the startup script
> cd /opt
> wget http://bin.entware.net/armv7sf-k3.2/installer/generic.sh
> sh generic.sh

Install and configure NTPD

  1. Install the NTPD package:
> opkg install ntpd
  1. Close the SSH session and restart the router
  2. Open another SSH session and check the NTPD status:
> ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+time.cloudflare 10.29.8.4        3 u  245 1024  377    8.004   +0.927   2.729
-129.146.193.200 132.163.97.4     2 u  670 1024  377   44.610   +1.474   1.217
+ntp05.cymru.com 172.18.56.13     2 u  283 1024  377   80.455   +3.514  19.856
+38.229.57.9     172.18.54.10     2 u  600 1024  377  331.860   +2.282   3.029
*usnyc3-ntp-003. .GPSs.           1 u  124   64  172   70.864   -0.933   2.723

Conclusion

And we are done. Since doing this I haven't had a single Wi-Fi issue in over 2 weeks, where previously my Wi-Fi would stop working properly every couple of days.

If you would be interested to see what Wi-Fi settings I use which give me the best performance, let me know in the comments.