Update README.md
[oweals/nmrpflash.git] / README.md
index bddac08972a071cb005feccf4bae7995203fa3fb..7b129fab91901fe7e69578d8132bc13dd85d34b8 100644 (file)
--- a/README.md
+++ b/README.md
@@ -3,26 +3,27 @@ nmrpflash - Netgear Unbrick Utility
 
 `nmrpflash` uses Netgear's [NMRP protocol](http://www.chubb.wattle.id.au/PeterChubb/nmrp.html)
 to flash a new firmware image to a compatible device. It has been successfully used on a Netgear
-EX2700, DNG3700v2 and R6220, R7000, D7000, WNR3500L, R6800, but is likely to be compatible with many
-other Netgear devices.
+EX2700, EX6120, EX6150v2, DNG3700v2, R6220, R7000, D7000, WNR3500, R6400 and R6800, WNDR3800, but is likely to be compatible
+with many other Netgear devices.
 
 Prebuilt binaries for Linux, ~OS X~ macOS and Windows are available
 [here](https://github.com/jclehner/nmrpflash/releases)
-([WinPcap](https://www.winpcap.org/install/default.htm) is required on Windows).
+([Npcap](https://nmap.org/npcap/) is required on Windows).
 
 ```
 Usage: nmrpflash [OPTIONS...]
 
-Options (-i and -f and/or -c are mandatory):
+Options (-i, and -f or -c are mandatory):
  -a <ipaddr>     IP address to assign to target device
- -A <ipaddr>     IP address to assign to interface
+ -A <ipaddr>     IP address to assign to selected interface
+ -B              Blind mode (don't wait for response packets)
  -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>    Timeout (in milliseconds) for NMRP packets
  -T <timeout>    Time (seconds) to wait after successfull TFTP upload
  -p <port>       Port to use for TFTP upload
  -R <region>     Set device region (NA, WW, GR, PR, RU, BZ, IN, KO, JP)
@@ -53,9 +54,10 @@ immediately after starting `nmrpflash`.
 # nmrpflash -i eth0 -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 10.164.183.252, mask 255.255.255.0.
+Sending configuration: 10.164.183.252/24
 Received upload request: filename 'firmware'.
-Uploading EX2700-V1.0.1.8.img ... OK
+Uploading EX2700-V1.0.1.8.img ...
+Upload successful.
 Waiting for remote to respond.
 Remote finished. Closing connection.
 Reboot your device now.
@@ -74,8 +76,10 @@ packages (exact names will vary depending on your distribution).
 
 ###### "The program can't start because wpcap.dll is missing" (Windows)
 
-On Windows 8.1 and older, install [WinPcap](https://www.winpcap.org/install/default.htm).
-On Windows 10, install [Npcap](https://nmap.org/npcap/) (be sure to select "WinPcap Compatibility").
+Install [Npcap](https://nmap.org/npcap/). For `nmrpflash` versions prior
+to 0.9.14, install Npcap with "WinPcap Compatibility" enabled.
+
+Version 0.9.13 is the last version to support Windows XP.
 
 ###### "No suitable network interfaces found."
 
@@ -90,9 +94,20 @@ C:\> net start npf
 
 ###### "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.
+The router did not respond. Always run `nmrpflash` in the following
+manner:
+
+* Turn off the router.
+* Run `nmrpflash`.
+* Turn on the router.
+
+If that still doesn't work, you can try "blind mode", which can be
+invoked using `-B`. Note that you also have to specify your router's
+mac address using `-m xx:xx:xx:xx:xx:xx`. Also beware that in this mode,
+careful timing between running `nmrpflash` and turning on the router may
+be required!
+
+It's also possible that your device does not support the NMRP protocol.
 
 ###### "Timeout while waiting for ACK(0)/OACK."
 
@@ -143,6 +158,36 @@ for example:
 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).
 
+###### "Received keep-alive request."
+
+This usually means that flashing is in progress. On some devices, you may get a few
+hundred keep-alive requests before it eventually finishes!
+
+###### "TFTP block rollover. Upload might fail!"
+
+By default, file transfers using TFTP are limited to `65535 * 512` bytes
+(almost 32 MiB). Uploading files exceeding this limit might fail, depending
+on the device.
+
+###### "Ignoring extra upload request."
+
+Extraneous upload requests are usually sent by the device if the image validation
+failed. Some possible causes are:
+
+* If you downloaded a firmware that's contained in an archive (a `.zip` for
+example), you must extract this file, and then use the contained firmware file
+as the argument to the `-f` parameter. Some examples for file extensions used
+for firmware: `.chk`, `.bin`, `.trx`, `.img`.
+
+* Some devices prevent you from downgrading the firmware. See if it works with
+the latest version available for your device. If you're already using the latest
+version, it might be possible to patch the version info of the firmware file. A
+future version of `nmrpflash` might incorporate an auto-patch feature for these
+cases.
+
+* Your device might expect a different image format for `nmrpflash` than when
+flashing via the web interface. 
+
 ### Building and installing
 ###### Linux, Mac OS X, BSDs
 
@@ -155,8 +200,13 @@ $ make && sudo make install
 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.
+[Npcap SDK](https://nmap.org/npcap/)
+and extract it into the root folder of the `nmrpflash` sources.
+
 
+### Donate
 
+You can [buy me a coffee](https://www.buymeacoffee.com/jclehner) if you want, but please consider
+donating the money for charity instead - [Médecins Sans Frontiers](https://www.msf.org/donate) comes to mind,
+but any other organization, local or international, that you think deserves support will do. Thank you!