Asuswrt-Merlin - custom build of the Asus RT-N66U firmware
about:
This is a customized version of Asuswrt, the firmware developed and used by Asus on many of their routers.
Currently supported: RT-N66U, RT-AC66U, RT-N16 (Experimental)
The primary goals of this project are to fix bugs, add a few basic features and tweaks to the original firmware. This firmware will try to remain as close as possible to the original firmware. If you are looking for a slew of advanced features, then this project is not for you. Look at TomatoUSB or DD-WRT, two excellent products that might suit your needs better.
If however you prefer something as close as possible to the manufacturer's firmware, then this is for you
Latest release: 3.0.0.3.178.15
Asuswrt-merlin provides the following changes over the original firmware:
64KB NVRAM
WakeOnLan web interface (with user-entered preset targets)
JFFS persistent partition
User scripts executed at init, services startup, WAN up, firewall up and shutdown.
SSHD (through dropbear)
HTTPS support
OUI (MAC address) lookup if you click on a MAC on the Client list (ported from DD-WRT)
Optionally turn the WPS button into a radio on/off switch
Saving your traffic history to disk (USB or JFFS)
Displaying monthly traffic history
Cron jobs
Monitor your router's temperature (under Administration -> Performance Tuning)
Since I got my RT-N66U, I have been tinkering with its firmware. After managing to get the GPL sources to compile, I started applying a few minor changes to it.
As some people might be interested in such a tweaked version, I have been making them available for download from my website. These builds are currently based on 3.0.0.3.108 (build 112 is way too buggy to be used at this point, as they broke radvd in it).
The latest release is 3.0.0.3.108.2 (the last digit denotes my revision number). This build provides the following changes over stock 108:
Added Tools menu to the web interface, with a page that lets you send a wakeonlan packet to a specified MAC address
I have no intention of doing any major changes in the future - there is no way I could provide anything remotely close to the level of features provided by Tomato or DD-WRT anyway. However, if you want something that remains as close as possible to the original Asus firmware, then these builds might suit you.
I have been wanting to do that but you did it , one word: AWESOME. Will check it out. My gripe with asus firmware was the inability to launch custom scripts or startup commands similar to dd-wrt's rc-startup. I have been experimenting with the builtin wl command to get better control on the wireless performace. Atleast try and see what the driver provides. The frustrating part was that it didn't survive a reboot. So, my question is could you provide a way to start custom startup script/command ?
Very much obliged.
-sri
Custom scripts (like DD-WRT does) are definitely something I want to implement. Myself, I have to manually run two custom scripts: one to update my 6in4 tunnel, and another to setup the IPv6 firewall, as by default the router routes everything.
I'm trying to hold off any real source-level change until at least the next stable release from Asus, but with the issues of recent betas, I might stop waiting and start working on implementing these.
The Following User Says Thank You to RMerlin For This Useful Post:
Just curious if you have read thru ASUS's licence agreement ? If enough people take interest in this thread, I am considering a github.com posting/account. What do you think ?
-sri
I haven't read it, so I'm unsure what would be the legal implications of setting up a git repo with all the files they distribute in their GPL archive, and customizing it. I would assume it would be fine (especially considering their own firmware is based on Tomato), provided we make it clear that this is unofficial, unsupported by Asus, and so on. However, IANAL, so who knows for sure.
At this point, my personal wish-list for this enhanced firmware are:
MiniDLNA update (done)
WakeOnLan with web integration (done)
JFFS2 support (almost done, working out web integration, and will require thorough tests)
Custom scripts (almost done, need more thorough tests)
SSH support (I only quickly looked at it, the code is there but Asus took out bits needed for this to work - yet should be doable)
Actually giving this a name, beside "Merlin's custom builds"
Only the most obvious bugfixes to the original firmware (because sometime, fixing one thing can break something else - there might be a reason why a specific bug hasn't been fixed by Asus yet)
A few things I definitely do NOT want to do with this project:
So-called "performance tweaks" (as they typically open the door to stability issues - I trust engineers with the actual HW datasheets in hand to know better than me in their design decisions)
Re-working of any of the current inner workings (same reason)
Re-working of the WebUI
I want it to remain as close as possible to the original firmware, to ensure it remains as stable and reliable as the stock firmware is. And also to make it as easy as possible to upgrade to any new code base released by Asus (considering they make 1-2 of them every month so far). People willing to go with more "experimental" or radical changes can find that with the other existing projects (IMHO).
The Following 2 Users Say Thank You to RMerlin For This Useful Post:
Awesome stuff, Eric. I was looking to modify the code for the same things as yours (custom scripts at startup, jffs) when I saw this page. Looks like you've got it pretty much wrapped up
For ssh, You can use the ssh.c file from rc.orig folder and then add start_sshd and stop_sshd calls in rc.c file (with checking a nvram variable for ssh enablement). SSH enablement option can be added to advanced_system_content.asp file in www folder.
I've done this and will test in morning and let you know.
Waiting for your build with jffs and scripts support
The Following User Says Thank You to shantanugoel For This Useful Post:
For ssh, You can use the ssh.c file from rc.orig folder and then add start_sshd and stop_sshd calls in rc.c file (with checking a nvram variable for ssh enablement). SSH enablement option can be added to advanced_system_content.asp file in www folder.
Thanks for the tip (I was going to grab the Tomato sources to recover that missing code). Got SSH working and integrated in the web interface I just need to test out pubkey authentication, and the sshd_forwarding option.
The Following User Says Thank You to RMerlin For This Useful Post: