Table of Contents
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 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.
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:
- Disable the inbuilt NTP service
- Install Entware
- 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 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
- Enable SSHD:
> ssh email@example.com firstname.lastname@example.org'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:~#
- 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
- Install the NTPD package:
> opkg install ntpd
- Close the SSH session and restart the router
- 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 -22.214.171.124 126.96.36.199 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 +188.8.131.52 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
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.