Update README.md
[oweals/nmrpflash.git] / README.md
1 nmrpflash - Netgear Unbrick Utility
2 ====================================
3
4 This program uses Netgear's [NMRP protocol]
5 (http://www.chubb.wattle.id.au/PeterChubb/nmrp.html)
6 to flash a new firmware image to a compatible device. This utility has been
7 tested with a Netgear EX2700, but is likely to work on many others as well.
8
9 Prebuilt binaries for Linux, OS X and Windows are available
10 [here](https://github.com/jclehner/nmrpflash/releases)
11 ([WinPcap](https://www.winpcap.org/install/default.htm) is required on Windows).
12
13 ````
14 Usage: nmrpflash [OPTIONS...]
15
16 Options (-a, -i and -f are mandatory):
17  -a <ipaddr>     IP address to assign to target device
18  -f <firmware>   Firmware file
19  -i <interface>  Network interface directly connected to device
20  -m <mac>        MAC address of target device (xx:xx:xx:xx:xx:xx)
21  -M <netmask>    Subnet mask to assign to target device
22  -t <timeout>    Timeout (in milliseconds) for regular messages
23  -T <timeout>    Time to wait after successfull TFTP upload
24  -p <port>       Port to use for TFTP upload
25  -U              Test TFTP upload
26  -v              Be verbose
27  -V              Print version and exit
28  -L              List network interfaces
29  -h              Show this screen
30 ````
31
32 ### Using nmrpflash
33
34 Connect your Netgear router to your computer using a network cable.
35 Assign a static IP address to the network adapter that's plugged into
36 the Netgear router.
37
38 For this example, we'll assume that your network interface is `eth0`.
39 First, we have to assign a static IP address to our network interface.
40 In this example, we'll use `192.168.1.2`. All available network interfaces
41 can be listed using
42
43 ````
44 $ nmrpflash -L
45 eth0      192.168.1.2  f2:11:a1:02:03:b1
46 ````
47
48 A firmware image file can usually be downloaded directly from netgear. For
49 details on how to do this, see [here](#obtaining-firmware-images).
50
51 Now we can `nmrpflash`. The argument for the `-a` option needs
52 to be a *free* IP address from the same subnet as the one used by your
53 network interface. We'll use `192.168.1.254`. Power on your device immediately 
54 after starting `nmrpflash`.
55
56 ````
57 $ nmrpflash -i eth0 -a 192.168.1.254 -f EX2700-V1.0.1.8.img
58 Advertising NMRP server on eth0 ... /
59 Received configuration request from a4:2b:8c:00:00:01.
60 Sending configuration: ip 192.168.1.254, mask 255.255.255.0.
61 Uploading EX2700-V1.0.1.8.img ... OK
62 Waiting for remote to respond.
63 Remote finished. Closing connection.
64 ````
65
66 ### Common issues
67 ###### "No suitable network interfaces found."
68
69 If you're *not* on Windows, rerun `nmrpflash -L` using `sudo`. In any case,
70 use `-vvvL` to see more detailed messages, and file a bug report if applicable.
71
72 ###### "No response after 60 seconds. Bailing out."
73
74 The router did not respond. Try running `nmrpflash` with `-m` and specify
75 your router's MAC address. It's also entirely possible that your device does
76 not support the NMRP protocol.
77
78 ###### "Timeout while waiting for 0x04."
79
80 After a successful file upload, `nmrpflash` waits for up to 120 seconds for an
81 answer from your device. You can increase this by specifying a longer timeout
82 using `-T` switch (argument is in seconds).
83
84 It's entirely possible that the image was flashed successfully, but the
85 operation took longer than 120 seconds.
86
87 ### Building and installing
88 ###### Linux, Mac OS X, BSDs
89
90 ````
91 $ make && sudo make install
92 ````
93
94 ###### Windows
95
96 The repository includes a
97 [DevCpp](http://sourceforge.net/projects/orwelldevcpp/)
98 project file (`nmrpflash.dev`). Download the latest
99 [WinPcap Developer Pack](https://www.winpcap.org/devel.htm)
100 and extract it into the root folder of the nmrpflash sources.
101
102 ### Obtaining firmware images
103
104 Firmware images can be downloaded directly from Netgear's FTP servers. 
105 For the Netgear EX2700 for example, download 
106 ftp://updates1.netgear.com/ex2700/ww/fileinfo.txt. At the top there 
107 should be an entry like this:
108
109 ```
110 [Major1]
111 file=EX2700-V1.0.1.8.img
112 ...
113 ```
114
115 The download link for the latest firmware image for this device is thus:
116 ftp://updates1.netgear.com/ex2700/ww/EX2700-V1.0.1.8.img. Substitute 
117 `ex2700` for your device (`wndr4300`, `wndr3700`, `r6100`, etc.). If
118 neccessary, substitute `ww` (world-wide) for a specific region.
119