Showing results for 
Search instead for 
Did you mean: 


Introducing the next generation of Cisco Small and Medium Business Switches. Cisco is refreshing its SMB Switch portfolio. Click here  to learn more.


Upgrade IOS on Mixed Stack

I have a Switch Stack that is mixed between 2960S and 2960X switches.  As you can see from the table below, there are 3 different models.


SwitchPortsModelSW VersionSW Image



I am looking to upgrade the firmware from 15.0(2)EX5 to 15.2.2E9.  I am told that when you upgrade a stack, each switch will be upgraded.  But, how does that work when there are 2 different IOS files needed?  The filenames and sizes are different between the S and X series:


WC-C2960S-48TD-Lc2960s-universalk9-mz.152-2.E9.bin16.02 MB
WS-C2960S-48TS-Lc2960s-universalk9-mz.152-2.E9.bin16.02 MB
WS-C2960X-48LPS-Lc2960x-universalk9-mz.152-2.E9.bin20.16 MB


Am I overlooking something at the basic level here?  I assume there is some method that I am not aware of that will make my life of this so much easier.  Any help would be appreciated.

Hall of Fame Community Legend

You will need two IOS (TAR) files: One for a 2960S and another for a 2960X.
Use the command "archive download-sw tftp://TFTP_IP_ADDRESS/IOS_FILENAME.TAR" to unpack the IOS. The automated command will only unpack the IOS into the supported platform.

I have the tar files as well, so that is a non-issue.  But, which tar file do I point to in the archive command?  As you said, there are 2 tar files:





If I console into the switch and run "archive download-sw tftp://", it will have no affect on the X, so does that mean I have to run the command twice?  


And what about setting the boot system command?  How do I differentiate what the image name is for each switch?  (or do I not have to?)


You need to use - c2960x-universalk9-tar.152-2.E9.tar


The 2960X FlexStack-Plus stacking technology is backward compatible with the 2960S FlexStack technology. To stack both devices you need to meet the following:

  • Both must have LAN BASE IOS License.

  • Both must have the exact same IOS software release.

  • Configure the switch stack speed through configuration mode with the following command %u201Cswitch stack port-speed 10%u201D on Cisco Catalyst 2960X switch to stack with Cisco Catalyst 2960-S switch.

  • Both running "default" SDM templates.

Note: If you replace the 2960S with a 2960X in the future remember to implement the following command "no switch stack port-speed 10%u201D.
here is reference guide :
if you install with archive mode, you do not required to change, and you can verify after install show boot, it set automatically on all switches.
*** Rate All Helpful Responses ***
Hall of Fame Community Legend

@jmhecker wrote:

But, which tar file do I point to in the archive command? 

You don't. 

The "archive download-sw" will have the necessary smarts to unpack the file only to the supported appliance.  

For example, if you "point" the TAR file to the 2960X, the automation will unpack only into the 2960X (and not the 2960S).  


Here's a method that worked for me today (8/18/20.) 


Similar scenario - 1 2960X and 2 2960S's.  Since the 2960S's stop at 15.2.2E9, that's what we chose, even though there are newer releases for the 2960X models.  We don't use the web-enabled features of the IOS on either, so for us, only the .bin files are in play.  c2960x-universalk9-mz.152-2.E9.bin, and c2960s-universalk9-mz.152-2.E9.bin.


Issue a 'show version' and note the layout of the stack:

1 52 WS-C2960X-48FPS-L 
2 52 WS-C2960S-48FPS-L 
3 52 WS-C2960S-48FPS-L

So in my scenario, switch 1 is the X and switches 2 & 3 are the S's.  Issue a 'dir flash:' command and in my case it lists files in flash for switch number 1.  Issue a 'dir flash1:' command and you'll also get a listing of files in flash for switch number 1.  Now issue a 'dir flash2:' and dir flash3:' to see what's in flash for switches 2 and 3.


Since I'm just dealing with .bin files, in my case I just did an ftp transfer of c2960x-universalk9-mz.152-2.E9.bin to switch 1, and an ftp transfer of c2960s-universalk9-mz.152-2.E9.bin to switch 2.  Cheated a little bit and did a copy flash2:c2960s-universalk9-mz.152-2.E9.bin flash3: to get the file over to switch 3.


Now we go down the rabbit hole a little bit. In my scenario, switch 1 is the master, and that's where the SSH sessions lands.  Need to upgrade all 3 switches.  In a common-model stack, you'd enter config mode, issue 'boot system flash:filename.bin', save your config and reload.  Except that won't work in a mixed stack.  Well, the command will take but the only switch that will upgrade is the one that can actually run the designated IOS.


So you have to issue multiple boot system commands.  And there's semantics involved that can cross you up.  You'd think you'd issue 'boot system switch 1 flash1:c2960x-universalk9-mz.152-2.E9.bin' and 'boot system switch 2 flash2:c2960s-universalk9-mz.152-2.E9.bin' and 'boot system switch 3 flash3:c2960s-universalk9-mz.152-2.E9.bin.'  Again, this command will take but it probably won't work.


Why?  Well, the flash1:, flash2:, etc. commands work when viewing the whole stack holistically.  However, when an individual member of the stack references it's flash 'natively' (for lack of the proper term) it doesn't know it's flash2:, it's just flash:


So the proper commands are actually 'boot system switch 1 flash:c2960x-universalk9-mz.152-2.E9.bin' and 'boot system switch 2 flash:flash3:c2960s-universalk9-mz.152-2.E9.bin' and 'boot system switch 2 flash:flash3:c2960s-universalk9-mz.152-2.E9.bin'.


Once those are set properly, verify with a 'show boot.'  Now you can reload the stack and have them all update correctly.  Or you can optionally reload individual switches if you need to for some reason 'reload slot 2', etc.  


If all goes well you should wind up with what you're expecting to see:

Switch Ports Model SW Version SW Image
------ ----- ----- ---------- ----------
* 1 52 WS-C2960X-48FPS-L 15.2(2)E9 C2960X-UNIVERSALK9-M
2 52 WS-C2960S-48FPS-L 15.2(2)E9 C2960S-UNIVERSALK9-M
3 52 WS-C2960S-48FPS-L 15.2(2)E9 C2960S-UNIVERSALK9-M