Before you begin
- Stack health:
show switch— every member should readReadybefore you start. - Current version:
show version— your baseline to diff against after the reload. - Flash space, on every member:
dir flash:/show install summary. The image plus extraction headroom has to fit on each one, not just the active switch. - Config backup:
copy running-config tftp://10.200.20.163/backups/9300-preupgrade.cfg - Upgrade path supported: check the release notes for your current version — some jumps need an intermediate hop.
- Console access for the activate/reload step, in case the mgmt interface doesn't come back cleanly over SSH.
- Maintenance window —
install activatereloads the whole stack regardless of how clean the upgrade is.
Remove unwanted packages
Clears inactive/uncommitted packages left from previous installs, freeing flash before the new image lands.
Switch# install remove inactiveCopy the image to flash
Pulls the target image onto the active switch's flash over TFTP before it's added to the stack.
Switch# copy tftp://10.200.20.163/9300-24UX-A/cat9k_iosxe.17.09.05.SPA.bin flash:Verify before trusting it: verify /md5 flash:cat9k_iosxe.17.09.05.SPA.bin, checked against the hash on Cisco's download page. Cheaper to catch here than mid-install add.
Add the image to the stack
Syncs the image to every stack member over StackWise via install add.
Switch# install add file flash:cat9k_iosxe.17.09.05.SPA.binActivate the new software
Unpacks the .bin, updates the boot config, reloads the stack into the new image.
Switch# install activateReloads the entire stack. Confirm the maintenance window and console access before running this.
Commit the changes
Finalizes the upgrade so it survives the next reload.
Switch# install commitinstall commit must run within 2 hours of activation or the switch auto-rolls-back on its next reload. If you find a problem before that window closes, use install rollback to committed to revert immediately — don't wait on the timer if the issue is urgent.
Verify the upgrade
show version— every member on the new IOS-XE version.show switch— all members rejoined, allReady.show install summary— package stateC(committed), notI.- Spot-check access ports came back and AAA/NTP/syslog reconnected.
Downgrade back to the old IOS
Catalyst 9300 stacks default to install mode; some legacy devices still run bundle boot mode. Check which one you have, then use the matching method below.
show version | include mode — INSTALL_MODE → Method A. BUNDLE_MODE → Method B.
7.1 — Method A — install mode (default on 9300 stacks)
| Step | Command |
|---|---|
| confirm image on flash | dir flash: |
| back up running-config | copy running-config tftp://10.200.20.163/backups/9300-predowngrade.cfg |
| add / activate / commit older image | install add file flash:<OldIOSImageName>.bin activate commit |
7.2 — Method B — bundle boot mode (legacy devices only)
Switch# dir flash: # confirm the older image is present; TFTP/USB it in if not
Switch# copy running-config tftp://10.200.20.163/backups/9300-predowngrade.cfg
Switch(config)# boot system flash:<YourIOSImageName>.bin # global config mode
Switch# copy running-config startup-config # save the boot statement
Switch# reloadRun show version to confirm the switch booted the expected image before handing it back.