NETGEAR is aware of a growing number of phone and online scams. To learn how to stay safe click here.

Forum Discussion

kryptonix's avatar
Sep 26, 2018
Solved

How to unbrick the Nighthawk R7000 using OS X and TFTP

Hi,

 

After spending a night on unbricking my R7000 and how I struggled to work with all the manuals out there but none of them actually worked. I thought I should share what actually worked for me using a MacBook instead of a W10/8/7 operating system. Below you will find a step by step aproach using OS X and what has worked for me.

 

Prerequisites:

- Default network cable (Cat5/5e/6)

- USB to Network dongle for MacBook pro's (starting 2015/2016 and up) 

  Example: https://www.apple.com/nl/shop/product/HJKF2ZM/A/belkin-usb-c-naar-gigabit-ethernet-adapter?fnode=58 

- Downloaded stable/latest firmware version unpacked your desktop, use a mobile hotspot if you need to download after the brick 

  https://www.netgear.com/support/product/r7000.aspx#download

- Admin rights on the MacBook

- Keep your router close to you to see results using the lights on the router

 

Situation to start from:

Somewhere my router bricked during a firmware upgrade. The crash happend whille installing and the router was showing a blinking white light when the router was reset and rebooted. The router was still operating and showing white and orange light on the LAN ports so I knew I should be able to acces the router. I was not able to acces the router via Safari using 192.168.1.1 of www.routerlogin.net. 

 

If you experience this above situatie this has worked for me to unbrick the router;

 

Step 1:

Remove any other network cables (including the WAN cable) from the router except the cable that is directly connected to your laptop. I used port 1 to conenct to my laptop, it should not matter but I just like to use the first port. 

 

Step 2:

Open up your network preferences and use the admin rights to unlock your configuration settings. 

 

When you connected your USB network adapter and cable you will see that your MacBook will self-assign an ip-address which probably will start 192.169.*.* or 169.*.*.* and an exclamation mark that there is no internet connection. It will look roughly like this.



In the red dropdown is where we are going to make some changes: Clicking on it opens up the following choices:

 

 

At this point we will be starting to assign a manual ipadres to our Mac to we need to choose Manual (Handmatig). When you choose manual you have to fill in the following data

 

IP-adres:

192.168.1.10

 

Subnetmask:

255.255.255.0

Router:

Leave empty.

 

The result will be that the USB Network dongle will directly connect with the router and if succesful it should will also state that it's connected. The reason why do manually assign an ip-adres to make sure that your Mac doesn't get the same ip-adres as the host/router. If everything went ok you will get the following screen:

 

Status: Connected (Verbonden)

Apple USB Ether wil get the assigned ip-adres that you have given in, in this case 192.168.1.10

 

Step 3:

We will first check if we are able to ping the router in the network to and to see the status of the router. We quickly check if our router is still blinking. If it is open up your terminal os OSX, use cmd + space and type terminal and press enter) this will open the following screen:

 

Default color white background and black text

 

First we define where we are, normally you are in your home directory. type the following command:

ls

 

You will see an overview of you home folder including a directory desktop. We will navigate towards that directory using the following commando:

cd Desktop

 

Now you press cmd + t to open a new terminal tab. This will make it easier to ping and use commando's. Use the second tab to ping the router and see the results use the following:

ping 192.168.1.1

 

If succesful the results will look like this:

 

 

 

 

 

 The orange part is where you need to look to see if the router is in the right state to upload the firmware manually. ttl=100 is the state that worked for me.

 

Step 4:

If you haven't done it already you unpack the zip file to your desktop and move the R7000-V1.0.*.**_**.*.*.chk on the desktop where the asterix state the version you want to put on the router. When writing this article the latest version is: R7000-V1.0.9.34_10.2.36.chk

 

Confirm you see the file in the desktop directory using terminal ls command in the desktop directory, in terminal you are already in your desktop directory so only using ls should work.

 

Step 5

Go to terminal and see if the router is still up on the ping tab and check te status of the ping. When the router is still up we will start the manual upload of the firmware

 

In terminal type the following code:

tftp

 

You will see that your computername and user are gone and will be replaced by tftp. First we are going to connect to our router using the following :

connect 192.168.1.1

 

When succesful nothing happens and you will be shown a new tftp line. To make sure we have the right settings to upload the file you use the following command:

status

This will display the current status of the router:

 

 

 

 

To use the transfer we need to set the mode to binary otherwise it will not accept the file. This is where I struggled for more then a two hours to find this. Changing the mode to binary every step after that worked. To change the mode type:

 

binary

You can if the change worked by using status, when succesful you will see mode: octet.

 

Now we will upload the file to the router by using the following commando:

 

put R7000-V1.0.9.34_10.2.36.chk

Remember to replace all the version number to the version you are uploading.

 

This will take some time, when I was uploading it took me around the 110 seconds to complete. You will get a notification when it's done. From this point you will see your router rebooting and a lot of lights flashing and starting your router. It may take up to roughly 7 minutes to fully reboot and install etc. 

 

By some reason all my settings where still intact and everything was up and running on the router. Then connect the WAN cable and the other cables and login in to your router using Safari to see if everything is ok, just to be sure everything is working again and clear some caches etc reboot the router.

 

When your router is working again in terminal just use:

quit

 I hope this guide will help you in the future when using a Mac because the steps are actually different then using a Windows operated machine. The put -l 192.168.1.1 R7000-V1.0.9.34_10.2.36.chk by example will not work when you use a Mac.

 

Cheers

Kryptonix

 

  • brunomartorella's avatar
    brunomartorella
    Sep 27, 2021

    HOLY COW IT WORKED!!!

     

    nmrpflash worked!!! Switching to a Static IP address and turning my Wifi off did the trick!!

     

    Also, recommend using -vvv to double check when it works. Took me two tries to nail the timing because the router has to finish restarting for the packet transfer to begin before the command times out.

74 Replies

  • Hi kryptonix  thanks for your step by step instructions, but that did not work for my device, my Macbook is late 2011 and has an ethernet port so i can connect the router throuh the cable , however i have tried the steps thrugh my terminal which showing ttl-64 (not 100) like urs, when i have typed the command tftp>EX6120-V1.0.0.40_1.0.30.chk after a while it replied Request timed out.what elase can i do? 

     

    thanks

    • antinode's avatar
      antinode
      Guru

      > [...] when i have typed the command tftp>EX6120-V1.0.0.40_1.0.30.chk
      > [...]

       

         Presumably, there was a "put" command in there?

       

      > [...] after a while it replied Request timed out.

       

         With my weak psychic powers, I can't see what else you did, but
      "Request timed out" suggests that no one is listening at the (invisible)
      IP address which you gave to the TFTP client program.

       

         The TFTP recovery scheme is a multi-step procedure which offers
      multiple opportunities for user input, hence user error.  By itself,
      saying that you tried it doesn't say much.  Especially when
      using a command-line program, copy+paste is your friend.

       

      > [...] i can connect the router [...]

       

      > Model: EX6120|AC1200 Dual Band WiFi Range Extender

       

         That's your target/failing device?  That's not a router.

       

         I don't know that TFTP is supposed to work with an extender, or, if
      it did, what the extender's default IP address would be.  And you're
      connected to it how?

       

      > [...] what elase can i do?

       

         Start your own thread for your own problem in some more appropriate
      forum?

       

            https://community.netgear.com/t5/x/bd-p/home-wifi-range-extenders

  • kryptonix 

    hi thanks for your intellect description, let me write down a little in details i have uploaded exactly what it happend on my macbook please have a look and provide me a solution, i have followed all the steps you stated. in the ping tab i have got ttl=64 and after tftp>binary i didnt get any OCTET

     

    thanks

     

     
    • antinode's avatar
      antinode
      Guru

      > [...] i have followed all the steps you stated. [...]

       

         Not very well.

       

      > tftp> connect 192.168.1.10

       

         "192.168.1.10" is (or should be) the address of your computer.  Your
      computer is not running a TFTP server, so you get a time-out when you
      try to talk to it that way.

       

         You want to connect to the router/other-device at _its_ default IP
      address (which, I gather, is that same as for a router: "192.168.1.1").
      For example (without the wasted time/steps):

       

            $ tftp 192.168.1.1
            tftp> binary
            tftp> put <your_file_name_here>

      • JMGV's avatar
        JMGV
        Aspirant

        I have completed all the process until 

         

        PUT firmware.chk

         

        and keep getting "transfer timed out" message.. (see attached image)

         

         

         

         

  • Thank you, I can ping it but my transfer times out.  Any ideas appreciated.

    • antinode's avatar
      antinode
      Guru

      > Thank you, I can ping it but my transfer times out. Any ideas
      > appreciated.

       

         Instead of posting a terse/useless problem description in multiple
      years-old threads, you might get better results if you started your own
      thread for your own problem, and included a few details, such as what
      your router does, what you did, and what happened when you did it.

  • Hi guys, fantastic summary. It works perfectly until the very last point. When i type put _ name of the file after few second i receive the message "transfer timed out".

    The shell with the ping repietely have the following lines:

     

    Request timeout for icmp_seq 1874

    Request timeout for icmp_seq 1875

    Request timeout for icmp_seq 1876

    64 bytes from 192.168.1.1: icmp_seq=1877 ttl=63 time=1.824 ms

    64 bytes from 192.168.1.1: icmp_seq=1878 ttl=63 time=1.571 ms

    64 bytes from 192.168.1.1: icmp_seq=1879 ttl=63 time=1.780 ms

    Request timeout for icmp_seq 1880

    Request timeout for icmp_seq 1881

    Request timeout for icmp_seq 1882

    Request timeout for icmp_seq 1883

    ping: sendto: No route to host

    Request timeout for icmp_seq 1884

    ping: sendto: Host is down

    Request timeout for icmp_seq 1885

    ping: sendto: Host is down

    Request timeout for icmp_seq 1886

    ping: sendto: Host is down

    Request timeout for icmp_seq 1887

    ping: sendto: Host is down

     

     

    anyone would be able to advise how i can get the last step done? it seems to me that the router keeps rebooting so that there is no enough time to transfer the new firmware?

  • Apologies for the multiple messages, diregard the previous one. 

     

    Some context first:

     

    I have a r8000 which i understand is very similar to r8000 in terms of troubleshooting. I was trying to flash the router with Advance tomato. The firmware seemed to be correctly installed but clearly this was not the case as after the installation was completed the router got stuck in what i believe is a reboot loop. after spending pratically all night trying to resolve it I came across this post. I followed all the steps mentioned and i got until the last one where after i send the command to install the latest version of original netgear firmware i receive the message, like many others above, "request timed out". 

     

    I diligently read the advise that antinode gave to previous users and therefore see below the copy and paste from the two shells i have used to type the commands.  

     

    Shell with commands:

     

     

    Last login: Tue Nov 24 01:48:43 on ttys001

    diego@Dies-Air ~ % ls

    Applications

    Creative Cloud Files

    Desktop

    Documents

    Downloads

    Library

    Movies

    Music

    OneDrive

    Pictures

    Public

    iCloud Drive (Archive)

    diego@Dies-Air ~ % cd desktop

    diego@Dies-Air desktop % ls

    Accounts.xlsx TFTP Client 2.app

    DS_Store.txt TFTP Client.app

    Documents Transfer_1.3.dmg

    FOTO (EXPORT) Worksheet 2019:2020v1.xls

    R8000-V1.0.4.62_10.1.74 nmrpflash

    R8000-V1.0.4.62_10.1.74.chk nmrpflash-0.9.14-macos.zip

    R8000-V1.0.4.62_10.1.74.zip tftp_client_122_intel.zip

    diego@Dies-Air desktop % tftp

    tftp> connect 192.168.1.1

    tftp> status

    Connected to 192.168.1.1.

    Mode: netascii Verbose: off Tracing: off

    Rexmt-interval: 5 seconds, Max-timeout: 25 seconds

    tftp> binary

    tftp> put R8000-V1.0.4.62_10.1.74.chk

    Transfer timed out.

     

     

    SHELL WITH PING

    Last login: Tue Nov 24 01:54:42 on ttys001

    diego@Dies-Air desktop % ping 192.168.1.1

    PING 192.168.1.1 (192.168.1.1): 56 data bytes

    64 bytes from 192.168.1.1: icmp_seq=0 ttl=100 time=25.285 ms

    64 bytes from 192.168.1.1: icmp_seq=1 ttl=100 time=2.573 ms

    64 bytes from 192.168.1.1: icmp_seq=2 ttl=100 time=2.495 ms

    64 bytes from 192.168.1.1: icmp_seq=3 ttl=100 time=2.499 ms

    Request timeout for icmp_seq 4

    Request timeout for icmp_seq 5

    Request timeout for icmp_seq 6

    Request timeout for icmp_seq 7

    Request timeout for icmp_seq 8

    Request timeout for icmp_seq 9

    Request timeout for icmp_seq 10

    Request timeout for icmp_seq 11

    Request timeout for icmp_seq 12

    Request timeout for icmp_seq 13

    Request timeout for icmp_seq 14

    Request timeout for icmp_seq 15

    Request timeout for icmp_seq 16

    Request timeout for icmp_seq 17

    Request timeout for icmp_seq 18

    Request timeout for icmp_seq 19

    Request timeout for icmp_seq 20

    Request timeout for icmp_seq 21

    Request timeout for icmp_seq 22

    Request timeout for icmp_seq 23

    Request timeout for icmp_seq 24

    Request timeout for icmp_seq 25

    Request timeout for icmp_seq 26

    Request timeout for icmp_seq 27

    Request timeout for icmp_seq 28

    Request timeout for icmp_seq 29

    Request timeout for icmp_seq 30

    Request timeout for icmp_seq 31

    Request timeout for icmp_seq 32

    Request timeout for icmp_seq 33

    Request timeout for icmp_seq 34

    Request timeout for icmp_seq 35

    Request timeout for icmp_seq 36

    ping: sendto: No route to host

    Request timeout for icmp_seq 37

    ping: sendto: No route to host

    Request timeout for icmp_seq 38

    ping: sendto: No route to host

    Request timeout for icmp_seq 39

    ping: sendto: No route to host

    Request timeout for icmp_seq 40

    Request timeout for icmp_seq 41

    Request timeout for icmp_seq 42

    Request timeout for icmp_seq 43

    Request timeout for icmp_seq 44

    Request timeout for icmp_seq 45

    Request timeout for icmp_seq 46

    Request timeout for icmp_seq 47

    Request timeout for icmp_seq 48

    Request timeout for icmp_seq 49

    Request timeout for icmp_seq 50

    Request timeout for icmp_seq 51

    64 bytes from 192.168.1.1: icmp_seq=49 ttl=100 time=3631.749 ms

    64 bytes from 192.168.1.1: icmp_seq=50 ttl=100 time=2630.577 ms

    64 bytes from 192.168.1.1: icmp_seq=53 ttl=100 time=2.544 ms

    64 bytes from 192.168.1.1: icmp_seq=54 ttl=100 time=2.523 ms

    64 bytes from 192.168.1.1: icmp_seq=55 ttl=100 time=2.076 ms

    64 bytes from 192.168.1.1: icmp_seq=56 ttl=100 time=2.541 ms

    Request timeout for icmp_seq 58

    Request timeout for icmp_seq 59

    Request timeout for icmp_seq 60

    Request timeout for icmp_seq 61

    Request timeout for icmp_seq 62

    Request timeout for icmp_seq 63

    Request timeout for icmp_seq 64

    Request timeout for icmp_seq 65

    Request timeout for icmp_seq 66

    Request timeout for icmp_seq 67

    Request timeout for icmp_seq 68

    Request timeout for icmp_seq 69

    Request timeout for icmp_seq 70

    Request timeout for icmp_seq 71

    Request timeout for icmp_seq 72

    Request timeout for icmp_seq 73

    Request timeout for icmp_seq 74

    Request timeout for icmp_seq 75

    Request timeout for icmp_seq 76

    Request timeout for icmp_seq 77

    Request timeout for icmp_seq 78

    Request timeout for icmp_seq 79

    Request timeout for icmp_seq 80

    Request timeout for icmp_seq 81

    Request timeout for icmp_seq 82

    Request timeout for icmp_seq 83

    Request timeout for icmp_seq 84

    Request timeout for icmp_seq 85

    ping: sendto: No route to host

    Request timeout for icmp_seq 86

    ping: sendto: No route to host

    Request timeout for icmp_seq 87

    ping: sendto: No route to host

    Request timeout for icmp_seq 88

    Request timeout for icmp_seq 89

    Request timeout for icmp_seq 90

    Request timeout for icmp_seq 91

    Request timeout for icmp_seq 92

    Request timeout for icmp_seq 93

    Request timeout for icmp_seq 94

    Request timeout for icmp_seq 95

    ping: sendto: No route to host

    Request timeout for icmp_seq 96

    ping: sendto: Host is down

    Request timeout for icmp_seq 97

    ping: sendto: Host is down

    Request timeout for icmp_seq 98

    ping: sendto: Host is down

    Request timeout for icmp_seq 99

    ping: sendto: Host is down

    Request timeout for icmp_seq 100

    ping: sendto: Host is down

    Request timeout for icmp_seq 101

    ping: sendto: Host is down

    Request timeout for icmp_seq 102

    ping: sendto: Host is down

    Request timeout for icmp_seq 103

    Request timeout for icmp_seq 104

    64 bytes from 192.168.1.1: icmp_seq=105 ttl=100 time=5.389 ms

    64 bytes from 192.168.1.1: icmp_seq=106 ttl=100 time=2.545 ms

    64 bytes from 192.168.1.1: icmp_seq=107 ttl=100 time=2.514 ms

    64 bytes from 192.168.1.1: icmp_seq=108 ttl=100 time=2.599 ms

    Request timeout for icmp_seq 109

     

    it seems to me that there is no enough time to install the firmare as the router keeps re-booting?

     

    techtherapy kryptonix antinode  any guidance much appreciated -

    • kryptonix's avatar
      kryptonix
      Guide
      Quick reply - when you LS your desktop, the file is not listed. Unpack the zip file with the chk, put the chk on the desktop then try again;)
      • antinode's avatar
        antinode
        Guru

        > it seems to me that there is no enough time to install the firmare as
        > the router keeps re-booting?

         

           That can be a problem.  I'd try fiddling with power-on and Reset
        timing, hoping to get lucky.

         

           If you can't find a time window when it works, then you might need to
        bring out the big guns, like opening the box and attaching a serial port
        adapter, and using that to interrupt whatever it's doing.  A Web search
        for terms like, say:
              netgear serial port
        should find more information.

         


        > Quick reply - when you LS your desktop, the file is not listed. [...]

         

           Try a slower reply?  I see it there.  Did the program complain about
        "No such file or directory"?  "ls" and "ls -1" are different.  (So is
        "LS".)  File names which include spaces can cause confusion, too.

    • vijay_amrit's avatar
      vijay_amrit
      Tutor

      seethelight just proceed with next step. i got request timout message during ping too. however rest of the steps worked well.


      it seems to me that there is no enough time to install the firmare as the router keeps re-booting?

       

      techtherapy kryptonix antinode  any guidance much appreciated -


       

    • brunomartorella's avatar
      brunomartorella
      Tutor

      I have an R6700 and this is the closest thread I've found to mirror my issue. After getting to the last page, I notice I'm having the same exact problem as seethelight . My router keeps rebooting constantly and, via the ping command, I notice that it's only on for 4 seconds, and then restarts again, running through the restart loop for 93 seconds, at which point it's connected again for 4 seconds and back to restart.

       

      Seems like this is not enough time to execute the TFTP command.. Wondering if anyone found a solution to this? I tried using a different power adapter and problem persists, so the power source is not the issue. Tried hard resets but also doesn't help.

       

      PS: this happened after I set the router to repeater mode.

      PS2: not sure if I should open a new thread?

       

      Here's the file in my desktop, using an old one because it was the one that ran more stable before this mess:

      Last login: Sun Jan 10 11:04:46 on ttys000

      Brunos-MacBook-Air-2:~ bruno$ cd desktop

      Brunos-MacBook-Air-2:desktop bruno$ ls

      R6700-V1.0.1.20_10.0.32.chk

      Brunos-MacBook-Air-2:desktop bruno$

       

      Here is the reboot pattern. I leave the router on and it does this forever:

      Last login: Sun Jan 10 11:06:38 on ttys001

      Brunos-MacBook-Air-2:~ bruno$ ping 192.168.1.1

      PING 192.168.1.1 (192.168.1.1): 56 data bytes

      Request timeout for icmp_seq 0

      Request timeout for icmp_seq 1

      Request timeout for icmp_seq 2

      Request timeout for icmp_seq 3

      Request timeout for icmp_seq 4

      Request timeout for icmp_seq 5

      Request timeout for icmp_seq 6

      Request timeout for icmp_seq 7

      Request timeout for icmp_seq 8

      Request timeout for icmp_seq 9

      Request timeout for icmp_seq 10

      Request timeout for icmp_seq 11

      ping: sendto: No route to host

      Request timeout for icmp_seq 12

      ping: sendto: Host is down

      Request timeout for icmp_seq 13

      Request timeout for icmp_seq 14

      64 bytes from 192.168.1.1: icmp_seq=15 ttl=100 time=3.081 ms

      64 bytes from 192.168.1.1: icmp_seq=16 ttl=100 time=1.577 ms

      64 bytes from 192.168.1.1: icmp_seq=17 ttl=100 time=1.630 ms

      64 bytes from 192.168.1.1: icmp_seq=18 ttl=100 time=1.417 ms

      Request timeout for icmp_seq 19

      Request timeout for icmp_seq 20

      Request timeout for icmp_seq 21

      Request timeout for icmp_seq 22

      Request timeout for icmp_seq 23

      Request timeout for icmp_seq 24

      Request timeout for icmp_seq 25

      Request timeout for icmp_seq 26

       

      And here is the TFTP command I'm running. I'm doing the put exactly when I get the first ttl=100 response from the separate terminal window where I'm pinging the router:

      Last login: Sun Jan 10 11:07:33 on ttys001

      Brunos-MacBook-Air-2:~ bruno$ cd desktop

      Brunos-MacBook-Air-2:desktop bruno$ ls

      R6700-V1.0.1.20_10.0.32.chk

      Brunos-MacBook-Air-2:desktop bruno$ tftp

      tftp> connect 192.168.1.1

      tftp> status

      Connected to 192.168.1.1.

      Mode: netascii Verbose: off Tracing: off

      Rexmt-interval: 5 seconds, Max-timeout: 25 seconds

      tftp> binary

      tftp> status

      Connected to 192.168.1.1.

      Mode: octet Verbose: off Tracing: off

      Rexmt-interval: 5 seconds, Max-timeout: 25 seconds

      tftp> put R6700-V1.0.1.20_10.0.32.chk

      Transfer timed out.

       

      tftp>

       

       

      • seethelight's avatar
        seethelight
        Aspirant

        unfortunately i wasnt able to resolve it. Still hoping that someone pops up here with a solution. I also tried with the 4 pins cable but to no avail. If someone could post here all the steps to follow with the 4 pins and mac would be great but to date i have no solution to offer. 

  • Wow, i was trying to unbrick my router and came across this. The other solutions i found needed a client that is not compatible with newer versions of MacOS. This has very clear istructions one can follow. One thing i noticed was that while trying to ping, i only got 'Request timeout' message. However there was no problem in connecting and uploading the firmware. Thanks a lot

  • Hi ,

     

    Followed the commands and unable to transfer the file.

     

    Receiving - Transfer timed out

  • Hi 

    Thanks for the detailed steps. I have tried your method.

     

    1. I get ping from the router only for few seconds and then it keeps getting timed out

    2. When I use the Put command to transfer the firmware, I keep getting "Transfer timed out". I'm guessing that is because of step 1. 

     

    I am also noticing that my router is in a constant restart cycle on its own. Pressing the RESET button is not doing anything either. Please let me know if you have any suggestions?

    • itsmevgupta's avatar
      itsmevgupta
      Aspirant

      Did you find any resolution to this? I am running into the same issue and my router is in a constant restart loop.