Skip to content
Website under migration: We are moving to a new design. Some pages may look different or load slowly for a few days. Thank you for your patience.
SwitchFirewall
IPv4 Detecting…
IPv6 Detecting…

How to Upgrade Cisco Catalyst 2960 Switch IOS: Complete Step-by-Step Guide

Last updated:

Introduction

Upgrading the IOS firmware on Cisco Catalyst 2960 switches is essential for accessing new features, security patches, bug fixes, and performance improvements. Whether you're addressing security vulnerabilities, adding functionality, or resolving known issues, performing IOS upgrades correctly ensures minimal downtime and prevents configuration loss.

This comprehensive guide covers the complete IOS upgrade process for Cisco Catalyst 2960, 2960-X, 2960-XR, 2960-Plus, and 2960-L series switches. We'll walk through prerequisites, backup procedures, two upgrade methods (TFTP and USB), verification steps, and troubleshooting common issues.

Important: This guide applies to Catalyst 2960 series switches running IOS software. The upgrade process is similar across all 2960 models, though specific IOS image files differ by model and feature set.

Prerequisites and Planning

General Requirements

Hardware Requirements

Catalyst 2960 Series Flash Memory:

Model Series Flash Memory Typical IOS Size Free Space Needed
2960 (Original) 64 MB ~13 MB 15-20 MB
2960-S 64 MB ~13 MB 15-20 MB
2960-Plus 64 MB ~15 MB 18-22 MB
2960-X/XR 128 MB ~18 MB 20-25 MB
2960-L 256 MB ~20 MB 25-30 MB

Software Requirements

Network Requirements

For TFTP Upgrade Method:

For USB Upgrade Method:

Pre-Upgrade Checklist

Critical: Always verify you have the correct IOS image for your specific switch model. Installing an incompatible IOS image can render the switch unbootable, requiring console-based recovery procedures.

Step 1: Verify Current Configuration

Check Current IOS Version

Switch# show version

Cisco IOS Software, C2960 Software (C2960-LANBASEK9-M), Version 15.0(2)SE11
Copyright (c) 1986-2016 by Cisco Systems, Inc.

System image file is "flash:c2960-lanbasek9-mz.150-2.SE11.bin"
  

Check Flash Memory

Switch# show flash:

Directory of flash:/

    2  -rwx    13832704   Jan 1 2020 00:00:01  c2960-lanbasek9-mz.150-2.SE11.bin
    3  -rwx        2072   Jan 1 2020 00:00:02  config.text
    4  -rwx        5632   Jan 1 2020 00:00:03  vlan.dat

64016384 bytes total (50180096 bytes free)
  

Check Boot Configuration

Switch# show boot

BOOT path-list      : flash:c2960-lanbasek9-mz.150-2.SE11.bin
Config file         : flash:/config.text
Private Config file : flash:/private-config.text
Enable Break        : no
Manual Boot         : no
HELPER path-list    :
Auto upgrade        : yes
  

Note: Ensure you have at least 20-30 MB of free flash space. If flash is nearly full, delete old IOS images or unnecessary files before proceeding.

Step 2: Backup Current Configuration

Backup to TFTP Server

! Backup running configuration
Switch# copy running-config tftp:
Address or name of remote host []? 192.168.1.100
Destination filename [switch-confg]? 2960-backup-config.txt

Writing running-config...!!
[OK - 2072 bytes]

! Backup startup configuration
Switch# copy startup-config tftp:
Address or name of remote host []? 192.168.1.100
Destination filename [switch-confg]? 2960-startup-config.txt

Writing startup-config...!!
[OK - 2072 bytes]
  

Backup to USB Drive (2960-X/XR/L Only)

! Insert USB drive into switch

! Verify USB detection
Switch# dir usbflash0:

Directory of usbflash0:/

No files in directory

15998959616 bytes total (15998959616 bytes free)

! Backup configuration to USB
Switch# copy running-config usbflash0:2960-backup-config.txt
Destination filename [2960-backup-config.txt]? 

Writing running-config...!!
[OK - 2072 bytes]
  

Backup Current IOS Image (Optional)

! Copy current IOS to TFTP server as backup
Switch# copy flash:c2960-lanbasek9-mz.150-2.SE11.bin tftp:
Address or name of remote host []? 192.168.1.100
Destination filename [c2960-lanbasek9-mz.150-2.SE11.bin]? 

Writing c2960-lanbasek9-mz.150-2.SE11.bin...
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[OK - 13832704 bytes]
  

Step 3: Download and Verify IOS Image

Download IOS from Cisco.com

  1. Log in to Cisco.com with valid credentials
  2. Navigate to Support > Downloads
  3. Search for your switch model (e.g., "Catalyst 2960-X")
  4. Select IOS Software
  5. Choose the appropriate IOS version and feature set
  6. Download the .bin file
  7. Note the MD5 checksum provided on the download page

Understanding IOS Image Naming

Example: c2960x-universalk9-mz.152-7.E6.bin

Common Feature Sets

Important: The "k9" suffix indicates strong encryption support. Choose the appropriate feature set based on your licensing and requirements.

Method 1: IOS Upgrade via TFTP Server

Step 1: Setup TFTP Server

Install and configure TFTP server software on your computer (Tftpd64 for Windows or tftpd-hpa for Linux). Place the downloaded IOS image in the TFTP server root directory.

Step 2: Verify Network Connectivity

Switch# ping 192.168.1.100

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.100, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms
  

Step 3: Copy IOS Image to Flash

Switch# copy tftp: flash:
Address or name of remote host []? 192.168.1.100
Source filename []? c2960x-universalk9-mz.152-7.E6.bin
Destination filename [c2960x-universalk9-mz.152-7.E6.bin]? 

Accessing tftp://192.168.1.100/c2960x-universalk9-mz.152-7.E6.bin...
Loading c2960x-universalk9-mz.152-7.E6.bin from 192.168.1.100 (via Vlan1):
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[OK - 18653184 bytes]

18653184 bytes copied in 145.236 secs (128456 bytes/sec)
  

Step 4: Verify Copied Image

Switch# dir flash:

Directory of flash:/

    2  -rwx    13832704   Jan 1 2020 00:00:01  c2960-lanbasek9-mz.150-2.SE11.bin
    3  -rwx        2072   Jan 1 2020 00:00:02  config.text
    4  -rwx        5632   Jan 1 2020 00:00:03  vlan.dat
    5  -rwx    18653184   Jan 31 2026 10:30:15 c2960x-universalk9-mz.152-7.E6.bin

64016384 bytes total (31525376 bytes free)
  

Step 5: Verify MD5 Checksum

Switch# verify /md5 flash:c2960x-universalk9-mz.152-7.E6.bin

.....................................Done!
verify /md5 (flash:c2960x-universalk9-mz.152-7.E6.bin) = a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6
  

Critical: Compare this MD5 hash with the one provided on Cisco's download page. If they don't match, the file is corrupted and must be re-downloaded.

Method 2: IOS Upgrade via USB Flash Drive

Note: This method only works on switches with USB ports (Catalyst 2960-X, 2960-XR, and 2960-L series).

Step 1: Prepare USB Flash Drive

  1. Format USB drive as FAT32 (not exFAT or NTFS)
  2. Copy the downloaded IOS .bin file to the root directory of the USB drive
  3. Safely eject the USB drive from your computer

Step 2: Insert USB Drive

! Insert USB drive into switch USB port

! Verify USB detection
Switch# dir usbflash0:

Directory of usbflash0:/

    1  -rw-    18653184   Jan 31 2026 10:15:20 c2960x-universalk9-mz.152-7.E6.bin

15998959616 bytes total (15980306432 bytes free)
  

Step 3: Copy IOS from USB to Flash

Switch# copy usbflash0:c2960x-universalk9-mz.152-7.E6.bin flash:
Destination filename [c2960x-universalk9-mz.152-7.E6.bin]? 

Copy in progress...
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

18653184 bytes copied in 98.456 secs (189456 bytes/sec)
  

Step 4: Verify Copied Image

Switch# dir flash: | include c2960x-universalk9-mz.152-7.E6.bin
    5  -rwx    18653184   Jan 31 2026 10:30:15 c2960x-universalk9-mz.152-7.E6.bin

Switch# verify /md5 flash:c2960x-universalk9-mz.152-7.E6.bin

.....................................Done!
verify /md5 (flash:c2960x-universalk9-mz.152-7.E6.bin) = a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6
  

Step 4: Configure Boot System

Set Boot Variable to New IOS

Switch# configure terminal
Switch(config)# boot system flash:c2960x-universalk9-mz.152-7.E6.bin
Switch(config)# exit

Switch# write memory
Building configuration...
[OK]
  

Verify Boot Configuration

Switch# show boot

BOOT path-list      : flash:c2960x-universalk9-mz.152-7.E6.bin
Config file         : flash:/config.text
Private Config file : flash:/private-config.text
Enable Break        : no
Manual Boot         : no
HELPER path-list    :
Auto upgrade        : yes
  

Important: The boot system command tells the switch which IOS image to load on startup. Always verify this is set correctly before rebooting.

Step 5: Delete Old IOS Image (Optional)

To free up flash space, you can delete the old IOS image after confirming the new one works. However, it's recommended to keep the old IOS temporarily as a rollback option.

Wait Until After Successful Reboot

! After verifying new IOS works properly, delete old image
Switch# delete flash:c2960-lanbasek9-mz.150-2.SE11.bin
Delete filename [c2960-lanbasek9-mz.150-2.SE11.bin]? 
Delete flash:c2960-lanbasek9-mz.150-2.SE11.bin? [confirm]

! Permanently remove deleted files
Switch# squeeze flash:
Squeeze flash: All deleted files will be removed. Continue? [confirm]
Squeeze operation may take a while. Continue? [confirm]

Squeeze of flash complete
  

Best Practice: Keep the old IOS image until you've verified the new version for at least 24-48 hours in production. This allows easy rollback if issues arise.

Step 6: Reload the Switch

Initiate Reload

Switch# reload
Proceed with reload? [confirm]

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

Reload requested by console. Reload Reason: Reload Command.
  

Monitor Boot Process

Watch the console output during reload to ensure the switch boots successfully with the new IOS image. The boot process typically takes 2-5 minutes.

Loading "flash:c2960x-universalk9-mz.152-7.E6.bin"...
###############################################################################
###############################################################################
###############################################################################

              Restricted Rights Legend

Use, duplication, or disclosure by the Government is
subject to restrictions as set forth in subparagraph
(c) of the Commercial Computer Software - Restricted
Rights clause at FAR sec. 52.227-19 and subparagraph
(c) (1) (ii) of the Rights in Technical Data and Computer
Software clause at DFARS sec. 252.227-7013.

           cisco Systems, Inc.
           170 West Tasman Drive
           San Jose, California 95134-1706


Cisco IOS Software, C2960X Software (C2960X-UNIVERSALK9-M), Version 15.2(7)E6
  

Step 7: Verify Successful Upgrade

Check New IOS Version

Switch# show version

Cisco IOS Software, C2960X Software (C2960X-UNIVERSALK9-M), Version 15.2(7)E6
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2020 by Cisco Systems, Inc.
Compiled Wed 09-Sep-20 17:13 by prod_rel_team

ROM: Bootstrap program is C2960X boot loader
BOOTLDR: C2960X Boot Loader (C2960X-HBOOT-M) Version 15.2(5r)E1

Switch uptime is 2 minutes
System returned to ROM by reload
System image file is "flash:c2960x-universalk9-mz.152-7.E6.bin"
  

Verify Boot Configuration

Switch# show boot

BOOT path-list      : flash:c2960x-universalk9-mz.152-7.E6.bin
Config file         : flash:/config.text
Private Config file : flash:/private-config.text
Enable Break        : no
Manual Boot         : no
HELPER path-list    :
Auto upgrade        : yes
  

Check Flash Memory

Switch# show flash:

Directory of flash:/

    2  -rwx    13832704   Jan 1 2020 00:00:01  c2960-lanbasek9-mz.150-2.SE11.bin
    3  -rwx        2072   Jan 31 2026 10:45:02  config.text
    4  -rwx        5632   Jan 31 2026 10:45:03  vlan.dat
    5  -rwx    18653184   Jan 31 2026 10:30:15  c2960x-universalk9-mz.152-7.E6.bin

64016384 bytes total (31525376 bytes free)
  

Verify Switch Functionality

! Check interface status
Switch# show ip interface brief

! Verify VLANs
Switch# show vlan brief

! Check port status
Switch# show interfaces status

! Verify spanning-tree
Switch# show spanning-tree summary

! Check CDP neighbors
Switch# show cdp neighbors
  

Success! If all verification steps pass and the switch is functioning normally, the IOS upgrade is complete. Monitor the switch for the next 24-48 hours to ensure stability.

Troubleshooting Common Issues

Issue 1: Insufficient Flash Memory

Symptoms: Error message "Not enough space on device" during copy

Solution:

! Check flash space
Switch# show flash:

! Delete unnecessary files
Switch# delete flash:old-ios-image.bin
Switch# delete /recursive flash:old-directory

! Permanently remove deleted files
Switch# squeeze flash:
  

Issue 2: TFTP Transfer Fails

Symptoms: "Error opening tftp://..." or timeout errors

Solutions:

Issue 3: Switch Won't Boot After Upgrade

Symptoms: Switch stuck at ROMMON prompt or boot loop

Recovery Steps:

! At ROMMON prompt
rommon 1 > dir flash:

! Boot old IOS manually
rommon 2 > boot flash:c2960-lanbasek9-mz.150-2.SE11.bin

! After booting, check boot variable
Switch# show boot

! Set correct boot system
Switch(config)# boot system flash:c2960-lanbasek9-mz.150-2.SE11.bin
Switch(config)# exit
Switch# write memory
  

Issue 4: MD5 Checksum Mismatch

Symptoms: MD5 hash doesn't match Cisco's published value

Solution:

Issue 5: Configuration Lost After Upgrade

Symptoms: Switch boots with default configuration

Recovery:

! Restore from backup
Switch# copy tftp: startup-config
Address or name of remote host []? 192.168.1.100
Source filename []? 2960-backup-config.txt

! Or from USB
Switch# copy usbflash0:2960-backup-config.txt startup-config

! Reload to apply
Switch# reload
  

Issue 6: Incompatible IOS Image

Symptoms: Error "Bad file magic number" or switch refuses to boot

Solution:

Best Practices for IOS Upgrades

Planning and Preparation

Backup Strategy

During Upgrade

Post-Upgrade

Security Considerations

Example: Complete Upgrade Scenario

Scenario Details

! Step 1: Check current status
Switch# show version | include Software
Cisco IOS Software, C2960X Software (C2960X-LANBASEK9-M), Version 15.0(2)SE11

Switch# show flash:
Directory of flash:/
    2  -rwx    13832704   c2960-lanbasek9-mz.150-2.SE11.bin
    3  -rwx        2072   config.text
128016384 bytes total (114181632 bytes free)

Switch# show boot
BOOT path-list      : flash:c2960-lanbasek9-mz.150-2.SE11.bin

! Step 2: Verify network connectivity
Switch# ping 192.168.1.100
Success rate is 100 percent (5/5)
        
! Step 3: Backup configuration to TFTP
Switch# copy running-config tftp:
Address or name of remote host []? 192.168.1.100
Destination filename [switch-confg]? 2960X-backup-20260131.txt
Writing running-config...!!
[OK - 2072 bytes]

! Step 4: Backup to USB as well
Switch# copy running-config usbflash0:2960X-backup-20260131.txt
Writing running-config...!!
[OK - 2072 bytes]

! Verify backups
Switch# dir usbflash0:
    1  -rw-        2072   2960X-backup-20260131.txt
        
! Step 5: Copy new IOS from TFTP
Switch# copy tftp: flash:
Address or name of remote host []? 192.168.1.100
Source filename []? c2960x-universalk9-mz.152-7.E6.bin
Destination filename [c2960x-universalk9-mz.152-7.E6.bin]? 

Accessing tftp://192.168.1.100/c2960x-universalk9-mz.152-7.E6.bin...
Loading c2960x-universalk9-mz.152-7.E6.bin from 192.168.1.100:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[OK - 18653184 bytes]

! Step 6: Verify MD5
Switch# verify /md5 flash:c2960x-universalk9-mz.152-7.E6.bin
.....................................Done!
verify /md5 = a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6

! Step 7: Set boot system
Switch(config)# boot system flash:c2960x-universalk9-mz.152-7.E6.bin
Switch(config)# exit
Switch# write memory
[OK]

! Step 8: Reload
Switch# reload
Proceed with reload? [confirm]
        
! Step 9: Verify after reload
Switch# show version | include Software
Cisco IOS Software, C2960X Software (C2960X-UNIVERSALK9-M), Version 15.2(7)E6

Switch# show version | include System image
System image file is "flash:c2960x-universalk9-mz.152-7.E6.bin"

Switch# show boot
BOOT path-list      : flash:c2960x-universalk9-mz.152-7.E6.bin

! Step 10: Verify functionality
Switch# show interfaces status
Switch# show vlan brief
Switch# show ip interface brief

! All interfaces operational - Upgrade successful!
        

Rollback Procedure

If the new IOS version causes issues, you can quickly rollback to the previous version:

Emergency Rollback Steps

! If old IOS is still in flash
Switch# configure terminal
Switch(config)# boot system flash:c2960-lanbasek9-mz.150-2.SE11.bin
Switch(config)# exit
Switch# write memory
Switch# reload

! If old IOS was deleted, restore from TFTP
Switch# copy tftp: flash:
Address or name of remote host []? 192.168.1.100
Source filename []? c2960-lanbasek9-mz.150-2.SE11.bin

! Then set boot system and reload
Switch(config)# boot system flash:c2960-lanbasek9-mz.150-2.SE11.bin
Switch# write memory
Switch# reload
  

ROMMON Recovery (Last Resort)

If the switch won't boot normally, you can manually boot from ROMMON:

! At ROMMON prompt
rommon 1 > dir flash:

! Boot old IOS manually
rommon 2 > boot flash:c2960-lanbasek9-mz.150-2.SE11.bin

! After boot, fix boot configuration
Switch# configure terminal
Switch(config)# no boot system
Switch(config)# boot system flash:c2960-lanbasek9-mz.150-2.SE11.bin
Switch(config)# exit
Switch# write memory
  

Frequently Asked Questions

Q: How long does a Catalyst 2960 IOS upgrade take?

A: Typically 15-30 minutes including file transfer, configuration, and reboot. TFTP transfers take 2-5 minutes, USB transfers are faster (1-2 minutes), and the reload process takes 2-5 minutes.

Q: Will I lose my configuration during upgrade?

A: No, your configuration is stored separately from the IOS image. As long as you don't erase the startup-config, your settings will remain intact after upgrade.

Q: Can I upgrade from any version to any version?

A: Not always. Some major version upgrades require intermediate steps. Check Cisco's upgrade documentation for your specific source and target versions.

Q: Do I need to upgrade all switches in a stack simultaneously?

A: For switch stacks, Cisco recommends using the "install" command which handles stack upgrades automatically. All stack members should run the same IOS version.

Q: What's the difference between LAN Base, IP Base, and Universal?

A: LAN Base provides Layer 2 features only. IP Base adds basic Layer 3 routing. Universal includes all features but requires licenses to activate advanced capabilities.

Q: Can I downgrade to an older IOS version?

A: Yes, the procedure is identical to upgrading. Simply use the older IOS image file and follow the same steps.

Conclusion

Upgrading the IOS on Cisco Catalyst 2960 switches is a straightforward process when following proper procedures. The key to success is thorough preparation, comprehensive backups, careful verification at each step, and post-upgrade testing. Whether using TFTP or USB methods, the fundamental process remains consistent: backup, copy, verify, configure boot system, and reload.

Regular IOS upgrades are essential for maintaining network security, accessing new features, and resolving known issues. By following the procedures and best practices outlined in this guide, you can perform IOS upgrades confidently with minimal risk and downtime.

Remember to always test upgrades in a lab environment when possible, maintain current configuration backups, and keep the previous IOS version available for quick rollback if needed. With proper planning and execution, IOS upgrades become routine maintenance tasks rather than high-risk operations.