142 lines
		
	
	
	
		
			5.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			142 lines
		
	
	
	
		
			5.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| nmrpflash - Netgear Unbrick Utility
 | |
| ====================================
 | |
| 
 | |
| This program uses Netgear's [NMRP protocol]
 | |
| (http://www.chubb.wattle.id.au/PeterChubb/nmrp.html)
 | |
| to flash a new firmware image to a compatible device. This utility has been
 | |
| tested with a Netgear EX2700, but is likely to work on many others as well.
 | |
| 
 | |
| Prebuilt binaries for Linux, OS X and Windows are available
 | |
| [here](https://github.com/jclehner/nmrpflash/releases)
 | |
| ([WinPcap](https://www.winpcap.org/install/default.htm) is required on Windows).
 | |
| 
 | |
| ```
 | |
| Usage: nmrpflash [OPTIONS...]
 | |
| 
 | |
| Options (-a, -i and -f and/or -c are mandatory):
 | |
|  -a <ipaddr>     IP address to assign to target device
 | |
|  -c <command>    Command to run before (or instead of) TFTP upload
 | |
|  -f <firmware>   Firmware file
 | |
|  -F <filename>   Remote filename to use during TFTP upload
 | |
|  -i <interface>  Network interface directly connected to device
 | |
|  -m <mac>        MAC address of target device (xx:xx:xx:xx:xx:xx)
 | |
|  -M <netmask>    Subnet mask to assign to target device
 | |
|  -t <timeout>    Timeout (in milliseconds) for regular messages
 | |
|  -T <timeout>    Time (seconds) to wait after successfull TFTP upload
 | |
|  -p <port>       Port to use for TFTP upload
 | |
|  -v              Be verbose
 | |
|  -V              Print version and exit
 | |
|  -L              List network interfaces
 | |
|  -h              Show this screen
 | |
| ```
 | |
| 
 | |
| ### Using nmrpflash
 | |
| 
 | |
| Connect your Netgear router to your computer using a network cable.
 | |
| Assign a static IP address to the network adapter that's plugged into
 | |
| the Netgear router.
 | |
| 
 | |
| For this example, we'll assume that your network interface is `eth0`.
 | |
| First, we have to assign a static IP address to our network interface.
 | |
| In this example, we'll use `192.168.1.2`. All available network interfaces
 | |
| can be listed using
 | |
| 
 | |
| ```
 | |
| $ nmrpflash -L
 | |
| eth0      192.168.1.2  f2:11:a1:02:03:b1
 | |
| ```
 | |
| 
 | |
| Now we can `nmrpflash`. The argument for the `-a` option needs
 | |
| to be a *free* IP address from the same subnet as the one used by your
 | |
| network interface. We'll use `192.168.1.254`. Firmware images can usually 
 | |
| be downloaded directly from netgear. For details on how to do this, see
 | |
| [here](#obtaining-firmware-images). Power on your device immediately 
 | |
| after starting `nmrpflash`.
 | |
| 
 | |
| ```
 | |
| $ nmrpflash -i eth0 -a 192.168.1.254 -f EX2700-V1.0.1.8.img
 | |
| Advertising NMRP server on eth0 ... /
 | |
| Received configuration request from a4:2b:8c:00:00:01.
 | |
| Sending configuration: ip 192.168.1.254, mask 255.255.255.0.
 | |
| Uploading EX2700-V1.0.1.8.img ... OK
 | |
| Waiting for remote to respond.
 | |
| Remote finished. Closing connection.
 | |
| ```
 | |
| 
 | |
| ### Common issues
 | |
| ###### "No suitable network interfaces found."
 | |
| 
 | |
| If you're *not* on Windows, rerun `nmrpflash -L` using `sudo`. In any case,
 | |
| use `-vvvL` to see more detailed messages, and file a bug report if applicable.
 | |
| 
 | |
| ###### "No response after 60 seconds. Bailing out."
 | |
| 
 | |
| The router did not respond. Try rebooting the device and run `nmrpflash` again.
 | |
| You could also try running `nmrpflash` with `-m` and specify your router's
 | |
| MAC address. It's also possible that your device does not support the NMRP protocol.
 | |
| 
 | |
| ###### "Timeout while waiting for CLOSE_REQ."
 | |
| 
 | |
| After a successful file upload, `nmrpflash` waits for up to 120 seconds for an
 | |
| answer from your device. You can increase this by specifying a longer timeout
 | |
| using `-T` switch (argument is in seconds).
 | |
| 
 | |
| It's entirely possible that the image was flashed successfully, but the
 | |
| operation took longer than 120 seconds.
 | |
| 
 | |
| ###### "Address X/Y cannot be used on interface Z."
 | |
| 
 | |
| `nmrpflash` refuses to use an IP address / subnet mask combination that would
 | |
| make the remote device unreachable from the device running `nmrpflash`. For
 | |
| example, if the IP address of your computer is 192.168.0.1/255.255.255.0, assigning
 | |
| 192.168.2.1/255.255.255.0 to the router makes no sense, because the TFTP upload will
 | |
| fail.
 | |
| 
 | |
| ###### "IP address of X has changed. Please assign a static IP to the interface."
 | |
| 
 | |
| This can happen if the network interface in question automatically detects that
 | |
| the network cable has been connected, and your computer tries to reconfigure that
 | |
| interface (NetworkManager on Linux does this for example) - this can usually be
 | |
| disabled.
 | |
| 
 | |
| An alternative would be to add `-c 'ifconfig <interface> <ip>'` to the command line,
 | |
| for example:
 | |
| 
 | |
| `nmrpflash -i eth0 -a 192.168.1.1 -f firmware.bin -c 'ifconfig eth0 192.168.1.2'`
 | |
| 
 | |
| This will execute the command specified by `-c` prior to starting the TFTP upload (in
 | |
| this case setting the IP address to 192.168.1.2).
 | |
| 
 | |
| ### Building and installing
 | |
| ###### Linux, Mac OS X, BSDs
 | |
| 
 | |
| ```
 | |
| $ make && sudo make install
 | |
| ```
 | |
| 
 | |
| ###### Windows
 | |
| 
 | |
| The repository includes a
 | |
| [DevCpp](http://sourceforge.net/projects/orwelldevcpp/)
 | |
| project file (`nmrpflash.dev`). Download the latest
 | |
| [WinPcap Developer Pack](https://www.winpcap.org/devel.htm)
 | |
| and extract it into the root folder of the nmrpflash sources.
 | |
| 
 | |
| ### Obtaining firmware images
 | |
| 
 | |
| Firmware images can be downloaded directly from Netgear's FTP servers. 
 | |
| For the Netgear EX2700 for example, download 
 | |
| ftp://updates1.netgear.com/ex2700/ww/fileinfo.txt. At the top there 
 | |
| should be an entry like this:
 | |
| 
 | |
| ```
 | |
| [Major1]
 | |
| file=EX2700-V1.0.1.8.img
 | |
| ...
 | |
| ```
 | |
| 
 | |
| The download link for the latest firmware image for this device is thus:
 | |
| ftp://updates1.netgear.com/ex2700/ww/EX2700-V1.0.1.8.img. Substitute 
 | |
| `ex2700` for your device (`wndr4300`, `wndr3700`, `r6100`, etc.). If
 | |
| neccessary, substitute `ww` (world-wide) for a specific region.
 | |
| 
 |