How to Update Firmware on Cisco Catalyst 1000 Series Switches from the Command Line

You’ll have no issues configuring and managing Cisco’s new Catalyst 1000 Series campus LAN access switches if you’re familiar with Cisco’s old Catalyst 2900 series switches, such as the ubiquitous 2960x.

The Catalyst 1000 series runs classic IOS and shares almost all of the same commands.

One thing the Catalyst 1000 series brings to the table is a much improved web interface that is actually useful for low level troubleshooting or one off configuration changes.

To maintain this web interface we need to update our switch using the .tar file which will unpack all the html files and other dependencies that the web interface needs.

This is likely a departure from the methods most are familiar with which is just dropping the .bin file on the flash and rebooting the switch.

Have no fear, this is actually a really simple upgrade process. It also comes with the added benefit of being able to do things such as cleaning up the old install files on the fly so you don’t have to come back around to manually (or programattically) clean the flash.

How to Update a Cisco c1000 Switch Using ‘archive download-sw’

To simplify downloading, unpacking, and installing our firmware image we will make use of the ‘archive download-sw‘ command. This command has several options which you can view by entering a question mark after the command like so:

LAB1000#archive download-sw ?
  /allow-feature-upgrade  Allow installation of image with different feature sets
  /directory              Specify a directory for images
  /force-reload           Unconditionally reload system after successful sw upgrade
  /force-ucode-reload     Upgrade UCODE after successful sw upgrade and before an unconditional reload
  /imageonly              Load only the IOS image(s)
  /leave-old-sw           Leave old sw installed after successful sw upgrade
  /no-set-boot            Don't set BOOT -- leave existing boot config alone
  /no-version-check       skip version check that prevents incompatible image install
  /overwrite              OK to overwrite an existing image
  /reload                 Reload system (if no unsaved config changes) after successful sw upgrade
  /safe                   Always load before deleting old version
  /upgrade-ucode          Upgrade UCODE after successful sw upgrade (no reload)
  flash1:                 Image file
  flash:                  Image file
  ftp:                    Image file
  http:                   Image file
  https:                  Image file
  rcp:                    Image file
  scp:                    Image file
  sftp:                   Image file
  tftp:                   Image file

I personally prefer to use the /safe command switch instead of /overwrite to ensure that the new firmware loads before the system deletes the old version from the flash. In my example, I will also use tftp but you can use any of the protocols listed above to accomplish the same task on more secure networks. I can personally recommend (because it’s what I use) Solarwinds free TFTP and SFTP/SCP server downloads if you don’t already have one of those file transfer servers deployed.

Enough chit chat, lets update our switch!

1. Download the .tar package for your desired software version and place it on your tftp root share.
2. Log into your switch and enter enable mode


3. Enter your desired archive download-sw string. I’m going to use:

LAB1000#archive download-sw /safe /reload tftp://

This command string tells the switch to download my new software from my tftp server at and then unpack and load the software before removing the prior version and then reboot.

4. Watch as the switch prints to the screen the steps it is taking to unpack, install, and clean up your software before finally reloading:

Loading c1000-universalk9-tar.152-7.E2.tar from (via Vlan10): !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[OK - 34519040 bytes]

Loading c1000-universalk9-tar.152-7.E2.tar from (via Vlan10): !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
examining image stack version...
extracting info (106 bytes)
Read major stacking number 1.
Read minor stacking number 1.
examining image...
extracting info (106 bytes)
extracting c1000-universalk9-mz.152-7.E2/info (958 bytes)
extracting info (106 bytes)

Stacking Version Number: 1.1

System Type:             0x00000001
  Ios Image File Size:   0x00FA7A00
  Total Image File Size: 0x020EBA00
  Minimum Dram required: 0x08000000
  Image Suffix:          universalk9-152-7.E2
  Image Directory:       c1000-universalk9-mz.152-7.E2
  Image Name:            c1000-universalk9-mz.152-7.E2.bin
  Image Feature:         IP|LAYER_2|SSH|3DES|MIN_DRAM_MEG=128

Old image for switch 1: flash:/c1000-universalk9-mz.152-7.E1
  Old image will be deleted after download.

Extracting images from archive into flash...
Installing (renaming): `flash:update/c1000-universalk9-mz.152-7.E2' ->
New software image installed in flash:/c1000-universalk9-mz.152-7.E2

Removing old image: flash:/c1000-universalk9-mz.152-7.E1

Deleting old files from dc profile dir "flash:/dc_profile_dir"

extracting dc profile file from "flash:/c1000-universalk9-mz.152-7.E2/dc_default_profiles.txt" to "flash:/dc_profile_dir/dc_default_profiles.txt"

extracting day0 file from "flash:/c1000-universalk9-mz.152-7.E2/day0.cfg" to "flash:/dc_profile_dir/day0.cfg"
All software images installed.
Requested system reload in progress...

5. Log back into your switch and verify you are running the newest version of your software by entering ‘show version‘:

LAB1000#show version | i Cisco IOS
Cisco IOS Software, C1000 Software (C1000-UNIVERSALK9-M), Version 15.2(7)E2, RELEASE SOFTWARE (fc3)

6. Run the command ‘dir flash:‘ to see that the switch has created a new directory for your new software version and deleted the old version:

LAB1000#dir flash:
Directory of flash:/

  516  -rwx        3096  Jun 12 2020 10:51:58 -05:00  multiple-fs
  259  -rwx        5705  Jun 12 2020 10:51:58 -05:00  private-config.text
  258  -rwx       11405  Jun 12 2020 10:51:58 -05:00  config.text
  514  -rwx         104  Jan 12 2020 11:12:06 -06:00  express_setup.debug
  515  -rwx         856  Jan 13 2020 18:48:18 -06:00  vlan.dat.renamed
  513  -rwx          34   Jun 8 2020 21:44:05 -05:00  pnp-tech-time
  770  -rwx       52114   Jun 8 2020 21:44:07 -05:00  pnp-tech-discovery-summary
  262  -rwx        1036   Jun 8 2020 22:13:59 -05:00  vlan.dat
  520  drwx        2048  Jun 12 2020 10:50:35 -05:00  c1000-universalk9-mz.152-7.E2
  518  drwx        2048  Jun 12 2020 10:50:35 -05:00  dc_profile_dir
    2  drwx        2048  Feb 28 1993 18:00:02 -06:00  lost+found

And that’s the nuts and bolts of it. Feel free to use the other options available under the archive download-sw command to suit your environment and preferences. The nice thing about updating these switches using this command is it’s a one liner which makes it super easy to script and push out to multiple devices.

I personally use Solarwinds NCM (Network Configuration Manager) to push out mass changes to my Cisco devices (as well as back up configs, detect config changes, monitor for vulnerabilities, search through configs, and a plethora of other great features). If you haven’t tried I highly recommend it. It’s very easy to use and very powerful.

Recommended for You: Solarwinds Network Configuration Manager (NCM)

What would you do if one of your pieces of networking equipment failed? Could you rebuild it quickly? Do you know exactly what configuration it had? What ports were on what vlan? What about port channels?

You get the point.

Automate backing up configurations and updating of all your switching, routing, and firewall equipment without needing to know a single line of code with Solarwinds Network Configuration Manager.

This is one of those tools that pays for itself in man hours the first time you need to rely on it. Plus, you’ll sleep easier knowing you really have backed up all the things.

Chase Smith, CCNP

Chase Smith, CCNP is a Network Engineer III who has spent the last decade elbow deep in enterprise system administration and networking. He can usually be found trying to warm up behind the storage in the datacenter.

2 thoughts on “How to Update Firmware on Cisco Catalyst 1000 Series Switches from the Command Line

  • July 26, 2020 at 2:27 AM

    Could you show the full output of show version (excluding serial numbers)?

    • August 27, 2020 at 8:12 AM

      Sorry for the late reply. Here is the ‘show version’ for one of my Catalyst 1000 8 port switches with the external power supply:

      LAB1000#show version
      Cisco IOS Software, C1000 Software (C1000-UNIVERSALK9-M), Version 15.2(7)E2, RELEASE SOFTWARE (fc3)
      Technical Support:
      Copyright (c) 1986-2020 by Cisco Systems, Inc.
      Compiled Sat 14-Mar-20 15:28 by prod_rel_team
      ROM: Bootstrap program is c1000 boot loader
      BOOTLDR: C1000 Boot Loader (C1000-HBOOT-M), Version 15.2(7r)E RELEASE SOFTWARE (fc1)
      LAB1000 uptime is 7 weeks, 1 day, 20 hours, 3 minutes
      System returned to ROM by power-on
      System restarted at 11:25:28 CDT Tue Jul 7 2020
      System image file is "flash:/c1000-universalk9-mz.152-7.E2/c1000-universalk9-mz.152-7.E2.bin"
      Last reload reason: power-on
      This product contains cryptographic features and is subject to United
      States and local country laws governing import, export, transfer and
      use. Delivery of Cisco cryptographic products does not imply
      third-party authority to import, export, distribute or use encryption.
      Importers, exporters, distributors and users are responsible for
      compliance with U.S. and local country laws. By using this product you
      agree to comply with applicable laws and regulations. If you are unable
      to comply with U.S. and local laws, return this product immediately.
      A summary of U.S. laws governing Cisco cryptographic products may be found at:
      If you require further assistance please contact us by sending email to
      cisco C1000-8P-E-2G-L (Marvell PJ4B (584) v7 (Rev 2)) processor (revision A0) with 524288K bytes of memory.
      Processor board ID **redacted**
      Last reset from Reload
      2 Virtual Ethernet interfaces
      10 Gigabit Ethernet interfaces
      The password-recovery mechanism is enabled.
      512K bytes of flash-simulated non-volatile configuration memory.
      Base ethernet MAC Address       : **redacted**
      Motherboard assembly number     : **redacted**
      Power supply part number        : 341-101090-01
      Motherboard serial number       : **redacted**
      Model revision number           : A0
      Motherboard revision number     : 2
      Model number                    : C1000-8P-E-2G-L
      System serial number            : **redacted**
      Top Assembly Part Number        : 74-122906-01
      Top Assembly Revision Number    : A0
      Version ID                      : V01
      Hardware Board Revision Number  : 0x01
      Switch Ports Model                     SW Version            SW Image
      ------ ----- -----                     ----------            ----------
      *    1 10    C1000-8P-E-2G-L           15.2(7)E2             C1000-UNIVERSALK9-M
      Configuration register is 0xF

      I have some 8 port internal power supply and 16 port internal power supply catalyst 1000 switches deployed that I can gather info from as well if it helps.


Leave a Reply

Your email address will not be published. Required fields are marked *