Upgrading IOS on a Cisco Router

This How To explains the process of upgrading IOS on a Cisco Router.

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.

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

Below are two procedures for two different type of routers:

  • a procedure for routers having Internal Flash (ex: 2600)
  • a 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.

4. Start the upgrade by the command:

Cell_Router#copy tftp flash

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

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

6. 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

Replace the cXXXX… with the binary you have.  Please note that the file name is case sensitive, so be %100 sure of what you are writing.

7. 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.

8. 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]

9. 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.

10. 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:

Cell_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:

Cell_Router(config)#no boot system

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

11. 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

12. 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.

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:

Cell_Router#dir slot1:

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

Cell_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.

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

Cell_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:

Cell_Router#dir slot1:

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

Cell_Router(config)#no boot system

Cell_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:

Cell_Router(config)#config-register 0x2102

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

Cell_Router#write memory


Cell_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.

We hope this How To helps you to understand some of the reload options.

Leave a Comment

Contact Us Here

Please verify.
Validation complete :)
Validation failed :(
Your contact request has been received. We usually respond within an hour, but please be patient. We will get back to you very soon.
Scroll to Top