Microsoft MN-700 v3

Links of Interest

 * Linux on a Windows CE Device
 * Microsoft MN700 hack project

Introduction
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:

*Jozerworx version of LiamM's 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.
 * LiamM.com
 * Microsoft MN700 Hack Project AsusForums
 * TechIMO.com version of LiamM's hack 404 Error

Flashing
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.


 * 1) Follow one (or a combination) of the hardware hack guides listed in the Introduction section above to get the WL500G Stock Firmware, Oleg's Custom Firmware, or OpenWRT installed and running on the MN-700.
 * 2) Download a compatible version of DD-WRT here (SVN 3953).
 * 3) Put the WRT in hardware restoration mode (hold down the reset button while powering on the WRT and wait until the the power light steadily alternates between green and amber).
 * 4) Upload the DD-WRT firmware with the Asus Firmware Restoration Utility. (Available under "Utilities")

DD-WRT Firmware Restoration Mode
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.

Asus Firmware Restoration Utility
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.

Pictures
Images FCCID C3K-MN700

Resetting Defaults
There are several ways the MN-700's NVRAM can be reset.
 * 1) Using the Administration -> Factory Defaults web interface.
 * 2) Selecting the option to reset to Default Settings when upgrading the firmware through the Administration -> Firmware Upgrade web interface.
 * 3) Pressing the reset button while booting (see Reset Button below for MN-700 reset button quirks).
 * 4) Last, non-hardware based, resort when the unit won't boot due to a bad setting—see this forum post.
 * 5) Last resort—use the JTAG connection that originally allowed custom firmware to be installed on the MN-700 to reset NVRAM.

Reset Button
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. When the WRT is booting
 * 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.

* Holding the reset button during the boot sequence will reset the unit to its defaults. 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.
 * 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.


 * 1) Unplug the WRT
 * 2) Plug in the WRT
 * 3) The power light will blink, then glow amber
 * 4) As soon as the power light turns off, press and hold the reset button
 * 5) Hold the reset button until the power and wireless buttons glow green.
 * 6) The WRT should now be reset to its defaults

Hardware Notes
This section covers observations made about working with the MN-700 hardware. Certian behaviors of this device are different than other WRTs (especially the Linksys).

NVRAM Protection
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.

Hardware Modification

 * MN-700 and MMC/SD mod