ANNOUNCEMENT - The community will be down for maintenace this Thursday August 13 from 12:00 AM PT to 02:00 AM PT. As a precaution save your work.
Showing results for 
Search instead for 
Did you mean: 

3850 switch - IOS XE upgrade Detailed (standalone)


There are 2 methods of booting and running IOS XE software in 3850 switch/stack.

By default, the switches are shipped in Install mode.

Bundle mode: Bundle mode is where we boot the switch/stack using the .bin file. This is the traditional method of booting the switch where the switch extracts the .bin file to the RAM of the switch and run from there.

Install Mode: Install mode is where we pre-extract the .bin file in the flash and boot the witch/stack using the packages.conf file created during the extraction.


Install mode is the recommended mode of running the switch. Not all features may be available in this Bundle mode

IOS XE installation and software rollback are supported only when the switch is running in “Install” mode. (ie: The commands “software install” and “software rollback”.)

Use “software expand” command to convert the switch into Install mode from Bundle mode. The steps are mentioned below.

Upgrading a stand-alone switch:

The packages and provisioning file used to boot in installed mode must reside in the flash.

Booting in installed mode from usbflash0: or TFTP is not supported.

Booting a bundle in bundle mode is just like booting a monolithic IOS image.

For example: boot flash:cat3k_caa-universalk9.SSA.03.08.83.EMD.150-8.83.EMD.bin

Hence, the boot variable should not be pointing to the .bin file. If so, the switch will boot in Bundle mode. The boot variable should be pointing to the “packages.conf” file in order for the switch to boot in Install mode.

Before doing the upgrade, we need to check the mode in which the switch is currently booted in.

C3850#show version | begin Switch Port

Switch Ports Model              SW Version        SW Image              Mode

------ ----- -----              ----------        ----------            ----

*    1 32    WS-C3850-24T       03.03.01SE        cat3k_caa-universalk9 INSTALL •ß Install mode

Upgrading from Install mode:

By default, switches are shipped in Install mode.

In order to upgrade the switch from Install mode, please follow the below-mentioned procedure.

  • •1.       Download the new image from the TFTP server to the flash / USB on the switch. (optional)

Copy tftp: flash:


Copy tftp: usbflash0:

  • •2.       Use the command “software install” to install the newly downloaded image (or) the image present in the network.

C3850-01#software install file <source>:<filename.bin> new

The “new” keyword is used so that that the post-install package set should contain only the packages being installed. The old packages file will be renamed for future rollback purpose.  Without this option, the post-install package set is a merged set of the currently installed software and the new packages being installed.

The source can be

  • flash:  or usbflash0: (or a sub-directory of these)
  • The network via tftp, ftp or http

NOTE:  When performing ‘software install’ on a switch with a source bundle that resides in the network, the source bundle is first downloaded to RAM on switch.  The source bundle is deleted from RAM when the operation completes.

Refer to the configuration guide to know about the other optional parameters of this command,


C3850#dir flash:

Directory of flash:/


29511  -rwx   220716072  Oct 15 2012 12:57:59 +00:00  cat3k_caa-universalk9.SSA.03.08.88.EMP.150-8.88.EMP.bin

C3850#software install file flash:cat3k_caa-universalk9.SSA.03.08.88.EMP.150-8.88.EMP.bin


[1 ]: Creating pending provisioning file

[1 ]: Finished installing software.  New software will load on reboot.

[1 ]: Committing provisioning file

[1 ]: Do you want to proceed with reload? [yes/no]: n


Once the installation is completed, reload the switch and it will boot into the newly installed IOS XE image.

From Bundle mode:

                If the switch is currently running in “Bundle” mode, then we need to use the “software expand” command to convert the switch into the Install mode first and then install the new IOS XE.

The ‘software expand’ exec command is used to extract the package files and the provisioning file (packages.conf) from a source bundle (possibly the running bundle) and copy them to the specified destination directory in a local storage device.

This command will typically be used to convert from the bundle running mode to the installed running mode.

NOTE:  When performing ‘software expand’ on a switch with a source bundle that resides in local storage, the source bundle is first copied to the corresponding local storage device on the switch.  The source bundle used for the expand operation is left intact after it is expanded.

NOTE:  When performing ‘software expand’ on a switch with a source bundle that resides in the network, the source bundle is first downloaded to RAM of the switch.  The source bundle is deleted from RAM on the switch when the operation completes.

This example uses the following steps to prepare a switch for booting in installed mode, i.e., booting a package provisioning file (packages.conf)

  1. Boot      in bundle mode using ‘boot flash:<bundle name>’

Can also boot from usbflash0: or via tftp

  1. Use the      ‘software clean file flash:’ command to remove any unused package, bundle      and provisioning files from flash:
  2. Use      the ‘software expand running to flash:’ command to expand the running      bundle to flash:
  3. Reload      the switch
  4. Boot      the installed packages using ‘boot flash:packages.conf’

Software Rollback:

The 'software rollback' exec command can be used to revert to a previous version of the installed software package set (i.e., an older packages.conf file)

This functionality relies on the existence of one or more 'rollback provisioning files’ in flash:, along with all of the .pkg files listed in the rollback provisioning file(s)

  • The rollback provisioning files are visible in flash: as packages.conf.00-, packages.conf.01-, etc.
  • packages.conf.00- is a snapshot of the packages.conf file as it looked prior to the last installation operation
  • packages.conf.01- is a snapshot of the packages.conf file as it looked two installations ago
  • And so on

When the 'software rollback' command is used, packages.conf.00- becomes packages.conf.  packages.conf.01- becomes packages.conf.00-.  And so on

Note:  If the 'software clean' command is used, future attempts to do a software rollback are likely to fail

Community Member

Nice post, please resolve my below query also.

If i use the 'new' keyword then could you please confirm that the switch will boot with the new IOS or we need to put, boot system flash:<new IOS> to reboot with new version after software install file command.


Hi Devraj,


if we use "new" keyword, it will create a new package file and rename the old package file to packages.conf_old . This will be helpful if we want to Rollback the version to the previous version.


At any point of time, the file we use to boot the switch is packages.conf. so, we dont need to modify the boot variable if we already have the boot variable pointing to packages.conf.

Community Member

Got it now.

Thanks a lot for your quick response and resolving my query.


I have used the "new" keyword on my upgrades but I am wondering why this isn't documented in any of the online documents showing the steps to upgrade the image.  All the example show without using "new".   Is there some benefit in not using "new" and getting a combined packages.conf file?


Not using the word "new" will create a combined image file that you can then reduce the size of using the "software clean" command.  The only advantage to doing this instead of using "new" and creating multiple image files, is for reduced flash memory usage.  You can free up room if needed with the software cleaning.  However, you will lose the old code and cannot use the rollback function to the previous code if there is a bug or issues arise with the new code.  Using the "new" command keeps them separate and allows you to rollback to the older code if the new code isn't working correctly with your applications.


hi!! thanks you for your information..!!


but i have a problem..


you might say Note:  If the 'software clean' command is used, future attempts to do a software rollback are likely to fail


yes, i agree!! so if i want to use software rollback command after use 'sosftware clean' command, how do i do??   


you cant use "rollback" if you already used "clean". you would have to downgrade using normal procedure.



I recently upgraded all my 3850's in a stack to the latest cat3k_caa-universalk9.16.01.02.SPA.bin software. All the switch's are in bundle mode and I am unable to change the mode to Install mode. I have an "error" saying that " %PLATFORM-4-ELEMENT_WARNING:Switch 1 R0/0: smand: 1/RP/0: Committed Memory value 96% exceeds warning level 95% "  Which files can be deleted after the upgrade to the new software? Thank you..

Can you issue the following command so that we see what you have on your flash




Community Member

mmccullum  -

Are you still having this issue?  I'm running that same code version, but in INSTALL mode, and my committed memory keeps creeping up above that 95% threshold.  Just wondering if you found a solution.


I have this issue too with running 16.1.1 code on my Catalyst 3850 Stack.

Looks like we are hitting this bug:




are you all seeing this issue when in Install mode? This occurs if you boot the switch using Bundle mode.

Community Member

I was initially seeing the behavior while running 16.1.1 BUNDLE mode.  I upgrade to 16.1.2 INSTALL mode and the behavior continued.  Cisco has opened up the following bug for it on my TAC case: CSCuz39079

My case is still open but I've recently rolled half my switches back to 03.07.03E.  I haven't noticed a problem yet, but if I'm not mistaken the memory architecture is different on that code train.  

I tried to recreate the issue on 16.2.1 INSTALL mode but my lab switched needed to be deployed and I didn't have time to see if the memory grew over 95%.  

One thing I noticed - while the committed memory would slowly grew (show platform software status control-processor brief), only the backup switch would ultimately get up over 95%.  Just a warning - at about 103% committed memory my switch crashed.  It happened in the middle of the night so I don't exactly know the impact, but I believe it caused a full reboot.


CSCuz39079 is related to memory leak. the actual issue with Bundle mode is, it consumes more memory due to new feature.

if you run the switch in Install mode, the first issue shouldnt be there.

Community Member

I can assure you I was seeing the same issue in both INSTALL and BUNDLE mode.