The Microsoft MN-700 is essentially a rebadged Asus WL500G WRT. Out-of-the-box it runs a WinCE based firmware with a crippled bootloader that does not support Linux based firmwares (like DD-WRT). To run DD-WRT, a new bootloader must be installed through a hardware hack (until someone comes up with a WinCE killer like the vxworks killer for the Linksys WRT54G v5). The following links provide details regarding this hack:
For those who are wondering, the MN-500 has completely different hardware than the MN-700, so the instructions provided by the links above work for the MN-700 but not the MN-500. To date, it does not appear a similar hack for the MN-500 has been discovered yet.
Note: Support for the MN-700 was officially added after the release of DD-WRT v.23 SP2. Therefore v.23 SP2 and eariler are not supported on the MN-700. Please use build SVN 3953 (link below) or higher. Earlier builds will brick the router, you will have to clear NVRAM through JTAG (recovery mode will NOT work).
A compatible build (SVN 3953) of DD-WRT is available here.
Set your computer to a static IP of 192.168.1.7. (or to whatever subnet the router is on) Disable all firewalls and security. Disable wireless on your computer and only have the router connected to the flashing computer by the ethernet cable between the two.
Hard reset or 30/30/30 (If the router supports it, if not, reset to defults in the GUI) prior to flashing. Wait. Check for password page on re-login and change password.
Flash firmware. You can use the webgui except if you have a belkin router. (For belkin use tftp.exe to flash)
Wait...at least three minutes. Lights should return to normal. See important2, below. Failing to wait is how most people brick their routers.
Do a power cycle of the router. (Unplug the cord, count to 30 and plug it back in.)
Wait for the lights to return to normal usually about 2 minutes.
Hard reset or 30/30/30 again (If the router supports it, if not, reset to defults in the GUI). Wait. Check for the password page and re-login to change the password. Then you can reconfigure your settings manually.
Once configured set your computer back to autoIP and autoDNS.
Important1: This Hard reset or 30/30/30 works fine for Asus router, but you do have to power cycle after the reset.
Important2: After you flash the firmware, and before you do the hard reset, the router will be building some nvram settings. YOU MUST WAIT FOR THIS TO FINISH PRIOR TO DOING ANYTHING WITH THE ROUTER INCLUDING A HARD RESET. Usually, you can tell when this process is completed by the WAN light coming on, but it does take several minutes. Go have a beer. There are starting to be more and more people who BRICK their routers by not waiting until the nvram is rebuilt, PRIOR to doing a hard reset. YOU NEED TO WAIT!
The MN-700 (and Asus WL500G AFAIK) has a special pre-boot state that makes it extremely easy to upload new firmware images, even when the current firmware is corrupt (infact the WRT automatically drops into this mode when a corrupt firmware is detected during boot). Either applying a new firmware through the Asus Firmware Restoration Utility (see section below) or a hard reboot (removing the power) is required to exit this state (Note that entering this state does not negatively effect the current settings or firmware so it is not especially dangerous to accidentially enter firmware restoration mode -- although it does get in the way of performing a "reset button" based reset of the WRTs settings as noted in the section above).
To enter firmware restoration mode, simply press the reset button while powering on the WRT and wait until the power LED alternates between green and amber. The reset button can then be released and the WRT will stay in this state until the next power cycle or a new firmware has been uploaded.
In this state, the Asus Firmware Restoration Utility (see below) can/should be used to upload new firmware images.
It does not appear that any particular IP address range is needed to upload firmware in this mode. However, a valid IP address is required. Since no DHCP server is available in this mode, either the host computer needs a static IP address or one simply needs to wait for Windows (Win2k and later) to assign an automatic private IP address in the 169.254.0.0/16 range.
The Asus Firmware Restoration Utility is available from the Asus support site under "Utilities." This is the preferred utility for uploading new firmware distributions since many firmwares reject a different distribution's firmware if one attempts to use the web interface.
It appears this utility operates at layer 2 of the OSI model, because it is able to detect WRTs in Firmware Recovery Mode regardless of the host computer's IP address. I recommend statically assigning an IP address in the 192.168.1.x range when working with DD-WRT because this is the range DD-WRT defaults to and WRTs can only be detected once the host has an IP address (DHCP works, but takes longer because the DHCP client must first time-out and assign an automatic private IP address before the WRT will be detected -- and this happens every time the WRT is power cycled because the network connection is lost).
Sometimes the Windows firewall interfers with the Asus Firmware Restoration Utility. When it does, the utility is not able to find the WRT, but the WRT power LED stops alternating colors and displays a solid green when one attempts to upload a new firmware file. Either disabling the firewall or making a firewall exception for the Asus Firmware Restoration Utility solves this problem.
In Windows XP, Click Start Button - All Programs - Accessories -
Communication - HyperTerminal
Enter a name for the connection, Click ok
Choose com port you adapter is plugged into, Click ok
Bits per second = 115200
Data Bits = 8
Parity = none
Stop bits = 1
Flow control = none
Click File - Save As, and select a place to save it to so you
don't have to enter the settings again.
After installing putty, run it
Serial line = The COM port your using for serial (ie. COM3)
Speed = 115200
Click on Serial under Connection
Serial line to connect to = same as above (Serial line)
Speed (baud) = 115200
Data bits = 8
Stop bits = 1
Parity = None
Flow control = None
Enter a name for your connection under saved sessions
SVN 3953 and later builds support the reset button. However, the "firmware restoration" mode requires a change to the standard Linksys "hold reset button for 30 seconds" procedure for resetting the WRT to its defaults. The following is how the reset button works on the MN-700:
When the WRT is powered on
* Holding the reset button for 15-20 seconds will cause the WRT to reboot.
Upon reboot, a pressed reset button causes the WRT to go into firmware restoration mode. This does NOT reset the defaults (see the section below for more information on the firmware restoration mode).
Since there is little to no warning of the exact instant the WRT will reboot when holding the reset button, chances are extremely good that the reset button will still be depressed and cause the WRT to go into firmware restoration mode. Hard booting the WRT will get the WRT back, but settings will NOT be reset.
When the WRT is booting
* Holding the reset button during the boot sequence will reset the unit to its defaults.
Care must be taken to press the reset button right after the (amber) power light turns off immidiately after powering on the WRT and not before, to avoid going into firmware restoration mode.
Based on the above, it should be fairly self-evident that the following procedure is recommended for using the reset button on the MN-700.
# Unplug the WRT
Plug in the WRT
The power light will blink, then glow amber
As soon as the power light turns off, press and hold the reset button
Hold the reset button until the power and wireless buttons glow green.
DD-WRT SP2 and earlier do not work with the MN-700 because some NVRAM variables (namely filter_services1-7) were too long. NVRAM variables >1024 characters in length cause the MN-700 to reset the NVRAM every reboot. Excessively long NVRAM variables actually brick the MN-700 (the power light is solid amber when powered on and the unit never boots) and can only be unbricked by resetting NVRAM through a JTAG connector. I can't define excessively long because I discovered this when working with some SP2 alpha builds and never calculated the maximum limit (I was just happy to be able to debrick my WRT and moved on).
This issue manifests itself when changes to the WRT do not survive a reboot.
SP2 and most of the previous versions of DD-WRT exibited this symptom and can technically be made to work with the MN-700 by manually clearing the filter_services variable (only filter_services2 for SP2) and commiting nvram after the intial installation of DD-WRT. But doing so is not recommended or supported because this may cause problems later (especially relating to DD-WRT filters).
The information above is provided to explain the NVRAM protection feature of the MN-700 to aid in troubleshooting potential future problems should a >1024 NVRAM variable creep back into the DD-WRT firmware.