• How to Upgrade IOS on a Cisco Router


    When would you need this: The upgrade is required when you plan to add more duties to the router or new hardware. The installation is required when the IOS image you have on the router is corrupted.

    Special Requirements: The router’s flash size should be enough for the new IOS image.

    Before starting the procedure of IOS upgrade or installation, you will need to install TFTP server software on a PC connected to the router Ethernet interface. There are many free downloadable TFTP servers’ software on the Internet, however, our recommendation is Free TFTP Server 6.0.

    Afterwards, you make sure to direct the TFTP server to the folder containing the new IOS image that you have.

    We will put down two procedures for two different type of routers; a procedure for routers having Internal Flash (ex: 2600), and a slightly different procedure for routers with PCMCIA flash cards (ex: 3600).


    Upgrade Procedure for Cisco Routers with Internal Flash:

    1. Create a console connection with the default settings (9600 baud, 8 databits, 0 parity bits, 1 stop bit, no flow control).

    2. Verify the connectivity between the router and the TFTP server using ‘ping’. Make sure that the router interface and the TFTP server IP addresses are in the same range and the ping is responding well.

    3. Although the upgrade will be happening in the flash and the configuration is saved in the NVRAM, make a backup of the configuration. This is recommended in case something goes wrong in the upgrade. Also, make a backup copy of the IOS you already have on the router. In case the new IOS image is corrupted, you will be on the safe side. For the backup process, please refer to the IOS backup procedure and configuration backup procedure.

    4. Start the upgrade by the command:

    Router#copy tftp flash

    Now you will be prompted for the IP address of the TFTP server:

    Address or name of remote host []? XXX.XXX.XXX.XXX

    Afterwards, you will be asked for the name of the new IOS file being copied from the TFTP server:

    Source filename []? cXXXX-X-XX.XXX-XX.bin

    Please note that the file name is case sensitive, so be %100 sure of what you are writing.

    Now you will be asked for the destination file name on your router,

    Destination filename []? cXXXX-X-XX.XXX-XX.bin

    It is preferred to keep it as the source file name, to be able to easily identify the files on the TFTP servers as compared to the ones on the routers.

    Now you will be asked whether to erase the existing file(s) in the flash or not. If you have enough free space on the flash, don’t erase the old IOS image, you might need it.

    Erase flash: before copying? [confirm]

    Afterwards, the router starts copying the new IOS file to the router, or start erasing the flash and then copying.

    Erasing the flash filesystem will remove all files! Continue? [confirm]y

    Erasing device… eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee

    eeeeeeeeee …erased

    Erase of flash: complete

    Loading cXXXX-X-XX.XXX-XX.bin from XXX.XXX.XXX.XXX (via Ethernet0/0): !!!!!!!!













    [OK – xxxxx/yyyyyyy bytes]


    Verifying checksum…  OK (0xAC8A)

    xxxxxx bytes copied in xx.xx secs (yyyy bytes/sec)

    The copying process takes several minutes; the time differs from network to network. During the copy process, messages are displayed to indicate which file has been accessed.

    The exclamation point “!” indicates that the copy process is taking place. Each exclamation point indicates that ten packets have been transferred successfully. A checksum verification of the image occurs after the image is written to flash memory.

    5. Before reloading the router, you need to make sure of two things. The first is that the configuration register value is 0x2102. You can check that wit the ‘show version’ command. If the configuration register’s value is not 0x2102, you will need to set it to that value with the following command:

    Router(config)#config-register 0x2102

    The second thing is needed to be checked if you did not erase the contents of the flash. You will need to setup the router to boot from the new IOS file with the following commands:

    Router(config)#no boot system

    Router(config)#boot system flash cXXXX-X-XX.XXX-XX.bin

    [sniplet adsense]

    6. If you type the reload command, the router asks you if you want to save the configuration. You should be very cautious here. The reason is that if the router is in boot mode for instance, it is a subset of the full Cisco IOS software which is running and there is no routing functionality. Therefore, all the routing configuration is gone in the running configuration and if you save the configuration at this time, then you erase the good startup-configuration in NVRAM and replace it by the incomplete running-configuration. Save the configuration only if you are sure that you have the full configuration in the output of show run. It is NOT necessary to save the configuration to take into account the new config-register if this one has been changed previously. That is done automatically.


    System configuration has been modified. Save? [yes/no]: y 

    Building configuration…


    Proceed with reload? [confirm]y

    7. To verify that the new image is loaded after the ‘reload’, use ‘show version’ command.

    00:22:25: %SYS-5-CONFIG_I: Configured from console by console

    Cisco Internetwork Operating System Software 

    IOS ™ CXXXX Software (CXXXX-X-X), Version XX.X(XX), RELEASE SOFTWARE (fc1)

    Copyright (c) 1986-2002 by cisco Systems, Inc.

    Compiled Mon 25-Mar-02 20:33 by xxxxx

    Image text-base: 0x80008088, data-base: 0x80828788


    ROM: System Bootstrap, Version xx.x(x)XA4, RELEASE SOFTWARE (fc1)


    XXXX uptime is 22 minutes

    System returned to ROM by reload

    System image file is “flash: cXXXX-X-XX.XXX-XX.bin “     <<< Check it here


    Note: In step 1 or after the upgrade, if the router boots into rommon mode or boot mode and you have one of the following case:

    rommon 1 > dir flash: 

    device does not contain a valid magic number 

    dir: cannot open device “flash:” 

    rommon 2 >



    device does not contain a valid magic number

    boot: cannot open “flash:”

    boot: cannot determine first file name on device “flash:”

    This means that the flash is empty or the file system is corrupted. In this case, you have to consider using the procedure of Upgrading or Installing the IOS from ROMmon mode .


    Upgrade Procedure for Cisco Routers with PCMCIA Flash:

    1. Create a console connection with the default settings (9600 baud, 8 databits, 0 parity bits, 1 stop bit, no flow control). If your router does not boot regularly, refer to the note above.

    2. Check if you have enough space in the flash card for the new IOS file:

    Router#dir slot1:

    If you find that there is not enough space, you can delete one or more files from the flash:

    Router#delete slot1: FILENAME.bin

    If you delete on or more files from the flash DO NOT reload or powercycle the router until you finish this procedure. The flash image you are working on is currently loaded into RAM, so you can keep working properly until you reload or powercycle the router.

    3. Verify the connectivity to the TFTP sever with the ‘ping’ command. And make sure that the TFTP server software is running and the working directory of the TFTP server contains the new IOS file. It is also adviced that you backup the configuration and old IOS file before proceeding. For this purpose, you can refer to IOS backup procedure and configuration backup procedure.

    4. Copy the new IOS file from the TFTP server to the router:

    Router#copy tftp slot1:

    Address or name of remote host []? XXX.XXX.XXX.XXX

    Source filename []? cXXXX-X-XX.XXX-XX.bin

    Destination filename [cXXXX-X-XX.XXX-XX.bin]?

    Accessing tftp://XXX.XXX.XXX.XXX/cXXXX-X-XX.XXX-XX.bin…

    Erase slot1: before copying? [confirm]n     <<< You can say ‘no’ here because you have already emptied space for the new IOS file

    Loading cXXXX-X-XX.XXX-XX.bin from XXX.XXX.XXX.XXX (via Ethernet1/0): 









    [OK – xxxxxxx/yyyyyyy bytes]


    Verifying checksum…  OK (0x13F0)

    xxxxxxx bytes copied in 67.708 secs (zzzz bytes/sec)


    5. Verify the new IOS file in the flash car:

    Router#dir slot1:

    6. Direct the router to load the new IOS file in the next boot:

    Router(config)#no boot system

    Router(config)#boot system flash slot1:cXXXX-X-XX.XXX-XX.bin

    7. Make sure that the configuration register has the value of 0x2102. This is verified by the ‘show version’ command. If the configuration register has a value other than 0x2102, use the following command to change it:

    Router(config)#config-register 0x2102

    8. Save the configuration with one of the two following commands:

    Router#write memory


    Router#copy run start

    9. Reload the router with ‘reload’ command. And after the reload, verify the new IOS version with the ‘show version’ command. This command will also show you the name of the IOS file that has been loaded.



    • Thanks for the proceedure. I used it on my Cisco 2524 that had a bad checksum on the existing IOS file. Once I got TFTP running properly, trransferring the new IOS file was a breeze! Thanks again.

    • Thanks for the excellent write up. Worked great.

    • was updating my ios and suddenly i had electricity outage. What can i do to bring back the router to life?

    • Dear all ,

      I want to upload IOS of an router but before uploading the same i want to check that downloaded IOS is fine or not corrupted ,
      Please help to to understand how to test the IOS file without interrupting our existing network .

      Thanks in advance .

    • Hi,

      I changed the boot system to new IOs image in flash, but its still booting on old ios after reload.. plz advise.
      Router – Cisco 2911

      • First do a “show flash” in the privileged mode to see if you have both images in flash. Next you will need to setup the router to boot from the new IOS file with the following commands:

        Router(config)#no boot system

        Router(config)#boot system flash cXXXX-X-XX.XXX-XX.bin

    • Hi,

      I am trying to upgrade a Cisco 3745 to version 15 and have copied the image across to the flash but when I reloaded I got the following error:

      Readonly ROMMON initialized
      program load complete, entry point: 0x80008000, size: 0xac80
      program load complete, entry point: 0x80008000, size: 0xac80
      loadprog: error – Invalid image for platform
      e_machine = 135, cpu_type = 105
      boot: cannot load “flash:”

      System Bootstrap, Version 12.2(8r)T2, RELEASE SOFTWARE (fc1)
      TAC Support: http://www.cisco.com/tac
      Copyright (c) 2002 by cisco Systems, Inc.
      c3745 processor with 262144 Kbytes of main memory
      Main memory is configured to 64 bit mode with parity disabled

      Readonly ROMMON initialized
      rommon 1 >

      I have tried the steps you mentioned but I still can’t get it to read the image.

      Can you please help?


    Write a comment