ASUS RT-N66U/CFE bootloader update

From WikiDevi.Wi-Cat.RU
Jump to navigation Jump to search

SmallNetBuilder Forums (SNB Forums)

CFE bootloader update

02-12-2012. A bug fixed, please download archive and repeat update again.
04-12-2012. Another bug fixed. For now, no PC is needed, you may update CFE right on the router.


This archive is for a CFE bootloader upgrade on Asus RT-N66U router from factory version to version The goal is to return CFE possibility to read variables from NVRAM which is lost while NVRAM been upgraded 64Кб in recent stock firmware releases.


If you don't need restoration of the this possibility or you just don't know what it is, then better do not to touch the bootloader. Damaged CFE will bricks the router! You should represent consequences of the actions and you should understand what you are doing in the update process because only you take responsibility for update success. Or fail.

Problem diagnostics

It's enough to set any the NVRAM variable used by CFE and make sure that CFE ignores it. For example, remember the current BogoMIPS value:

# cat /proc/cpuinfo | grep BogoMIPS

then try to change CPU frequency and reboot router:

# nvram set clkfreq=300 && nvram commit && reboot

If CFE ignores your settings, BogoMIPS value will remain the same because CFE didn't set new CPU frequency.

Updating CFE

Update works only on original ASUS firmware or Merlin's mod, please follow this steps:

1. Download and unpack update script Get access to the RT-N66U console via Telnet/SSH/Serial and type:

# wget
# tar -xzf ./cfe_n66u-

2a. Update current CFE If you did not update before, then type:

# ./ /dev/mtd0ro

and watch the progress of the update. The script will ask your final decision before update. Please, proceed if only two differencies will shown between old and new versions of CFE:

--- nvram_orig.txt 2012-12-04 13:49:51.000000000 +0400
+++ nvram_updated.txt 2012-12-04 13:49:51.000000000 +0400
@@ -1 +1 @@
@@ -16,0 +17 @@

2b. Update CFE, using previously saved CFE backup image If you already done update before, you may fix it with saved CFE image this way:

# ./ ./cfe.old

3. Saving old CFE image Please consider saving your old CFE. A ./cfe.old file will be placed in the same dir with update script, save it to some safe place.

Here is original stock CFE for those who never make a backups

The Entware. A modern Optware replacement.

Example script output

Here is an example of the entire output when all went well. The script checks current CFE version before update to prevent CFE re-update.

admin@RT-N66U:/tmp/mnt/SDCARD/tmp# wget --no-check-certificate
admin@RT-N66U:/tmp/mnt/SDCARD/tmp# tar -xf ./cfe_n66u-
admin@RT-N66U:/tmp/mnt/SDCARD/tmp# ./
'./ /dev/mtd0ro' - upgrade current CFE on RT-N66U
'./ ./cfe.old' - upgrade CFE using a backup CFE image cfe.old
Update works only on original ASUS firmware or Merlin's mod.
admin@RT-N66U:/tmp/mnt/SDCARD/tmp# ./ /dev/mtd0ro
Original CFE is already updated! Exiting...
admin@RT-N66U:/tmp/mnt/SDCARD/tmp# ./ ./
[1/4] Dumping default NVRAM settings from original CFE...
nvram header found:
start   0x400
end     0x1374
len     3956
crc     0xe8
ver     0x01
[2/4] Preparing new CFE...
nvram header created:
start   0x400
end     0x137c
len     3964
crc     0xc3
ver     0x01
[4/5] Checking differences between NVRAM from old and new CFE's
--- nvram_orig.txt      2012-12-04 13:49:51.000000000 +0400
+++ nvram_updated.txt   2012-12-04 13:49:51.000000000 +0400
@@ -1 +1 @@
@@ -16,0 +17 @@
If you see only two differences: one is for 'bl_version' variable change
and second is a new 'odmpid=ASUS' variable then all goes well!
[5/5] Flashing new CFE...
Do you want to flash a new CFE bootloader that? [y,n]y...flashing...
Update completed. Old CFE is stored to cfe.old file, a new one - to
It's strongly recommended to store them, just in case.
Please note, your personal MAC addresses in there, do not distribute them.