It took me a while to figure out how to setup 802.11n in OpenWrt on Asus RT-N16 so I figured I'd share the process, hopefully to save somebody's time.
BackgroundI've used dd-wrt for a long time (on 4 wireless routers over the years). However, my network setup is getting more and more complex. While dd-wrt allows some customization, the inconsistency between GUI and the command-line configuration made it very hard for me to maintain. For example, editing the DHCP static address table from the GUI is a tedious process because it doesn't sort so it's very hard to detect duplication. I could edit the configuration file directly but the GUI does not reflect my changes correctly. Saving from the GUI can easily overwrite my manually edited config files.
Choosing AlternativesTherefore, I started to look for an alternative. Besides dd-wrt, Tomato and it's family, and OpenWrt are the other two high-profile router firmware development efforts. And both lineages provide very customizable environment.
However, there are two things I'm looking for.
1. I am looking for a project that's still actively maintained, especially after Heart Bleed, Shell Shock, and Poodle. (Note that these vulnerabilities don't necessarily compromise home routers, but in my environment, I'd rather not take the chance.) While a repository system allows individual package upgrade, I want the base developers to still be around.
2. I'm looking for a project that's owned by a team rather than individuals. In the WRT history, there have been many brilliant individuals that made crucial advances for everyone. However, it has happened a few times when these individuals moved on, their projects died, too.
Therefore, I ended up choosing OpenWrt.
InstallationIt was quite straightforward to switch to OpenWrt from dd-wrt, as instructed in the official guide.
Securing the admin access was obvious. However, it took me a while to realize that I also needed to reboot my Cable Modem for it to reset its DHCP. If you are also doing this, I suggest you open all installation guides in the browser first before you flash your new firmware. I had to use my phone to check the guides before my internet was up.
802.11nThis took me a while because the guide is not very obvious. Anyway, after some trials and errors, broadcom-wl was the only one that worked for me (thanks to Stratos about the dependency nas. I already had that so I didn't realize that dependency).
- # opkg update
- # opkg install kmod-brcm-wl wl wlc
- # rm /etc/config/wireless
- # opkg install nas
- # reboot
Then login to shell again to edit /etc/config/wireless . This is mine.
config wifi-device wl0
option type broadcom
option channel 1
option txantenna 3
option rxantenna 3
option txpower '20'
option plcphdr 'auto'
option frameburst 1
option disabled 0
option device wl0
option network lan
option mode ap
option ssid YOUR_SSID
option key YOUR_KEY
option wmm 1
option encryption 'psk2'
option disabled '0'
I added plcphdr and frameburst after reading this discussion thread.
Another strange thing to work around is that after reboot, while a client can connect to the router with 802.11n, the DHCP failed to issue IPs. I had to turn the wifi off and on for it to work properly.
Update: badineu in the comment mentioned that he also needed to manually select the wifi frequency. You may also have to do so if, for some reason, it's not already properly set.
I did not spend time debugging. Instead, as a temporary workaround, I added that to /etc/rc.local, which now looks like this:
# wifi down
# wifi up
# Put your custom commands here that should be executed once # the system init finished. By default this file does nothing. # workaround for Broadcom proprietary driver problem /sbin/wifi down /bin/sleep 1 /sbin/wifi up exit 0