The documentation set for this product strives to use bias-free language. For the purposes of this documentation set, bias-free is defined as language that does not imply discrimination based on age, disability, gender, racial identity, ethnic identity, sexual orientation, socioeconomic status, and intersectionality. Exceptions may be present in the documentation due to language that is hardcoded in the user interfaces of the product software, language used based on RFP documentation, or language that is used by a referenced third-party product. Learn more about how Cisco is using Inclusive Language.
This document describes how to convert between the different types of installation modes on a Catalyst 9800 Wireless Controller (WLC) through the Command Line Interface (CLI). This procedure can be also used in order to upgrade the 9800 WLC.
Cisco recommends that you have knowledge of these topics:
Catalyst 9800 Wireless LAN Controllers and Access Points (APs) platforms
The information in this document is based on these software and hardware versions:
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, ensure that you understand the potential impact of any command.
There are two ways in which you can run IOS®-XE on a Catalyst 9800 WLC, bundle and install mode.
The install mode uses pre-extracted files from the binary file into the flash in order to boot the controller. The controller uses the packages.conf file that was created from the extraction as boot variable.
The system works in bundle mode if the controller boots with the binary image (.bin) as boot variable. In this mode the controller extracts the .bin file into the RAM and runs from there. This mode uses more memory than install mode since the packages extracted from boot up are copied to the RAM.
Tip: Install mode is the recommended mode to run the WLC.
Note: Before High Availability (HA SSO) configuration on the 9800 WLC ensure that both devices have the same installation mode, otherwise you can face a V-Mismatch error: "%BOOT-3-BOOTTIME_INCOMPATIBLE_SW_DETECTED: R0/0: issu_stack: Incompatible software detected."
Verify the operation mode of the 9800 WLC in order to determine which procedure you have to follow in order to convert between modes. Run show version | include Installation mode command to see the current installation mode.
9800-40#show version | include Installation mode
Installation mode is INSTALL
Step 1. Ensure that you have enough of space in flash in order to expand a new image.
9800-40#show flash:
...
277 42838080 Oct 08 2018 14:22:06.0000000000 +00:00 wlc9500C-rpboot.2018-10-05_08.14_prabhask.SSA.pkg
278 10633472 Oct 09 2018 20:58:55.0000000000 +00:00 system-report_20181009-205853-Universal.tar.gz
279 19921673 Dec 13 2018 19:27:45.0000000000 +00:00 system-report_20181213-192546-Pacific.tar.gz
235937792 bytes available (5746528256 bytes used)
Step 2. Clean up old installation files in case of insufficient space and in order to discard added packages.
9800-40#install remove inactive Cleaning up unnecessary package files Scanning boot directory for packages ... done. Preparing packages list to delete ... C9800-CL-universalk9.2019-12-28_15.32_saurasi3.SSA.bin File is in use, will not delete. done. The following files will be deleted: [chassis 2]: /bootflash/C9800-CL-mono-universalk9.16.10.01.SPA.pkg /bootflash/C9800-CL-rpboot.16.10.01.SPA.pkg /bootflash/C9800-CL-universalk9.16.10.01.SPA.conf /bootflash/packages.conf /bootflash/wlc9500C-mono-universalk9.2018-10-05_08.14_prabhask.SSA.pkg /bootflash/wlc9500C-mono-universalk9.BLD_POLARIS_DEV_LATEST_20180812_104316_V16_10_0_83.SSA.pkg /bootflash/wlc9500C-rpboot.2018-10-05_08.14_prabhask.SSA.pkg /bootflash/wlc9500C-rpboot.BLD_POLARIS_DEV_LATEST_20180812_104316_V16_10_0_83.SSA.pkg /bootflash/wlc9500C-universalk9.2018-10-05_08.14_prabhask.SSA.bin /bootflash/wlc9500C-universalk9.2018-10-05_08.14_prabhask.SSA.conf Do you want to remove the above files? [y/n]yes [chassis 2]: Deleting file bootflash:C9800-CL-mono-universalk9.16.10.01.SPA.pkg ... done. Deleting file bootflash:C9800-CL-rpboot.16.10.01.SPA.pkg ... done. Deleting file bootflash:C9800-CL-universalk9.16.10.01.SPA.conf ... done. Deleting file bootflash:packages.conf ... done. Deleting file bootflash:wlc9500C-mono-universalk9.2018-10-05_08.14_prabhask.SSA.pkg ... done. Deleting file bootflash:wlc9500C-mono-universalk9.BLD_POLARIS_DEV_LATEST_20180812_104316_V16_10_0_83.SSA.pkg ... done. Deleting file bootflash:wlc9500C-rpboot.2018-10-05_08.14_prabhask.SSA.pkg ... done. Deleting file bootflash:wlc9500C-rpboot.BLD_POLARIS_DEV_LATEST_20180812_104316_V16_10_0_83.SSA.pkg ... done. Deleting file bootflash:wlc9500C-universalk9.2018-10-05_08.14_prabhask.SSA.bin ... done. Deleting file bootflash:wlc9500C-universalk9.2018-10-05_08.14_prabhask.SSA.conf ... done. SUCCESS: Files deleted. --- Starting Post_Remove_Cleanup --- Performing Post_Remove_Cleanup on all members [2] Post_Remove_Cleanup package(s) on chassis 2 [2] Finished Post_Remove_Cleanup on chassis 2 Checking status of Post_Remove_Cleanup on [2] Post_Remove_Cleanup: Passed on [2] Finished Post_Remove_Cleanup SUCCESS: install_remove Fri Feb 14 15:06:14 Pacific 2020 9800-40#show flash: ... 297 30983948 Jan 07 2019 04:46:03.0000000000 +00:00 system-report_20190107-044600-Pacific.tar.gz 298 10633472 Oct 09 2018 20:58:55.0000000000 +00:00 system-report_20181009-205853-Universal.tar.gz 299 19921673 Dec 13 2018 19:27:45.0000000000 +00:00 system-report_20181213-192546-Pacific.tar.gz 2931425280 bytes available (3051040768 bytes used)
Step 3. Copy new image to flash.
9800-40#copy tftp: flash:
Address or name of remote host []? 10.152.200.238
Source filename []? C9800-40-universalk9_wlc.16.11.01c.SPA.bin
Destination filename [C9800-40-universalk9_wlc.16.11.01c.SPA.bin]?
Accessing tftp://10.152.200.238/C9800-40-universalk9_wlc.16.11.01c.SPA.bin...
Loading C9800-40-universalk9_wlc.16.11.01c.SPA.bin from 10.152.200.238 (via Vlan210): !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Step 4. Run this command in order to confirm that the image has been successfully copied to flash.
9800-40#dir flash:*.bin
Directory of bootflash:/*.bin
Directory of bootflash:/
16 -rw- 884905681 Aug 13 2019 22:29:34 +00:00 C9800-40-universalk9_wlc.16.11.01c.SPA.bin
Step 5. Check current boot variable, if it uses packages.conf , delete it and set image.bin as new boot variable. It is important to delete previous boot variable and save, for the new variable you have to save the new configuration as well, otherwise the change does not take place.
9800-40# show boot
BOOT variable = bootflash:packages.conf,12;
CONFIG_FILE variable =
BOOTLDR variable does not exist
Configuration register is 0x2102
9800-40(config)#no boot system
9800-40(config)#do write
9800-40(config)#boot system bootflash:C9800-40-universalk9_wlc.16.11.01c.SPA.bin
9800-40(config)#do write
Step 6. Run this command in order to verify the boot variable is set to bootflash:<image.bin>
The output displays BOOT variable = bootflash:<image.bin>
9800-40#show boot
BOOT variable = bootflash:C9800-40-universalk9_wlc.16.11.01c.SPA.bin,12;
CONFIG_FILE variable =
BOOTLDR variable does not exist
Configuration register is 0x2102
Step 7. Reload the controller in order to boot in bundle mode.
9800-40#reload
Step 1. Ensure that you have enough of space in flash in order to expand a new image.
9800-40#dir flash:
Step 2. Clean up old installation files in case of insufficient space and in order to discard added packages.
9800-40#install remove inactive Cleaning up unnecessary package files Scanning boot directory for packages ... done. Preparing packages list to delete ... C9800-CL-universalk9.2019-12-28_15.32_saurasi3.SSA.bin File is in use, will not delete. done. The following files will be deleted: [chassis 2]: /bootflash/C9800-CL-mono-universalk9.16.10.01.SPA.pkg /bootflash/C9800-CL-rpboot.16.10.01.SPA.pkg /bootflash/C9800-CL-universalk9.16.10.01.SPA.conf /bootflash/packages.conf /bootflash/wlc9500C-mono-universalk9.2018-10-05_08.14_prabhask.SSA.pkg /bootflash/wlc9500C-mono-universalk9.BLD_POLARIS_DEV_LATEST_20180812_104316_V16_10_0_83.SSA.pkg /bootflash/wlc9500C-rpboot.2018-10-05_08.14_prabhask.SSA.pkg /bootflash/wlc9500C-rpboot.BLD_POLARIS_DEV_LATEST_20180812_104316_V16_10_0_83.SSA.pkg /bootflash/wlc9500C-universalk9.2018-10-05_08.14_prabhask.SSA.bin /bootflash/wlc9500C-universalk9.2018-10-05_08.14_prabhask.SSA.conf Do you want to remove the above files? [y/n]yes [chassis 2]: Deleting file bootflash:C9800-CL-mono-universalk9.16.10.01.SPA.pkg ... done. Deleting file bootflash:C9800-CL-rpboot.16.10.01.SPA.pkg ... done. Deleting file bootflash:C9800-CL-universalk9.16.10.01.SPA.conf ... done. Deleting file bootflash:packages.conf ... done. Deleting file bootflash:wlc9500C-mono-universalk9.2018-10-05_08.14_prabhask.SSA.pkg ... done. Deleting file bootflash:wlc9500C-mono-universalk9.BLD_POLARIS_DEV_LATEST_20180812_104316_V16_10_0_83.SSA.pkg ... done. Deleting file bootflash:wlc9500C-rpboot.2018-10-05_08.14_prabhask.SSA.pkg ... done. Deleting file bootflash:wlc9500C-rpboot.BLD_POLARIS_DEV_LATEST_20180812_104316_V16_10_0_83.SSA.pkg ... done. Deleting file bootflash:wlc9500C-universalk9.2018-10-05_08.14_prabhask.SSA.bin ... done. Deleting file bootflash:wlc9500C-universalk9.2018-10-05_08.14_prabhask.SSA.conf ... done. SUCCESS: Files deleted. --- Starting Post_Remove_Cleanup --- Performing Post_Remove_Cleanup on all members [2] Post_Remove_Cleanup package(s) on chassis 2 [2] Finished Post_Remove_Cleanup on chassis 2 Checking status of Post_Remove_Cleanup on [2] Post_Remove_Cleanup: Passed on [2] Finished Post_Remove_Cleanup SUCCESS: install_remove Fri Feb 14 15:06:14 Pacific 2020 9800-40#show flash: ... 297 30983948 Jan 07 2019 04:46:03.0000000000 +00:00 system-report_20190107-044600-Pacific.tar.gz 298 10633472 Oct 09 2018 20:58:55.0000000000 +00:00 system-report_20181009-205853-Universal.tar.gz 299 19921673 Dec 13 2018 19:27:45.0000000000 +00:00 system-report_20181213-192546-Pacific.tar.gz 2931425280 bytes available (3051040768 bytes used)
Step 3. Copy new image to flash.
9800-40#copy tftp: flash:
Address or name of remote host []? 10.152.200.238
Source filename []? C9800-40-universalk9_wlc.16.11.01c.SPA.bin
Destination filename [C9800-40-universalk9_wlc.16.11.01c.SPA.bin]?
Accessing tftp://10.152.200.238/C9800-40-universalk9_wlc.16.11.01c.SPA.bin...
Loading C9800-40-universalk9_wlc.16.11.01c.SPA.bin from 10.152.200.238 (via Vlan210): !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Step 4. Run this command in order to confirm that the image has been successfully copied to flash.
9800-40#dir flash:*.bin
Directory of bootflash:/*.bin
Directory of bootflash:/
16 -rw- 884905681 Aug 13 2019 22:29:34 +00:00 C9800-40-universalk9_wlc.16.11.01c.SPA.bin
Step 5. Check current boot variable, if it shows the image.bin file, delete it and set packages.conf as new boot variable. It is important to delete previous boot variable and save, for the new variable you have to save the new configuration as well, otherwise the change does not take place.
9800-40#show boot
BOOT variable = bootflash:C9800-40-universalk9_wlc.16.11.01c.SPA.bin,12;
CONFIG_FILE variable =
BOOTLDR variable does not exist
Configuration register is 0x2102
9800-40(config)#no boot system
9800-40(config)#do write
9800-40(config)#boot system bootflash:packages.conf
9800-40(config)#do write
Step 6. Run this command in order to verify the boot variable is set to bootflash:packages.conf .
The output displays BOOT variable = flash:packages.conf .
9800-40# show boot
BOOT variable = bootflash:packages.conf,12;
CONFIG_FILE variable =
BOOTLDR variable does not exist
Configuration register is 0x2102
Step 7. Software install image to flash. The install add file bootflash:<image.bin> activate commit command moves the switch from bundle-mode to install-mode.
9800-40#install add file bootflash:C9800-40-universalk9_wlc.16.11.01c.SPA.bin activate commit
Step 8. Type yes for all the prompts. Once the install is completed the controller proceeds to reload.
install_add_activate_commit: START Tue Aug 13 23:10:24 Central 2019
Aug 13 23:10:25.685: %INSTALL-5-INSTALL_START_INFO: Chassis 1 R0/0: install_engine: Started install one-shot bootflash:C9800-40-universalk9_wlc.16.11.01c.SPA.bininstall_add_activate_commit: Adding PACKAGE
This operation requires a reload of the system. Do you want to proceed?
Please confirm you have changed boot config to bootflash:packages.conf [y/n]y
--- Starting initial file syncing ---
Info: Finished copying bootflash:C9800-40-universalk9_wlc.16.11.01c.SPA.bin to the selected chassis
Finished initial file syncing
--- Starting Add ---
Performing Add on all members
[1] Add package(s) on chassis 1
[1] Finished Add on chassis 1
Checking status of Add on [1]
Add: Passed on [1]
Finished Add
Image added. Version: 16.11.1c.0.503
install_add_activate_commit: Activating PACKAGE
Following packages shall be activated:
/bootflash/C9800-rpboot.16.11.01c.SPA.pkg
/bootflash/C9800-mono-universalk9_wlc.16.11.01c.SPA.pkg
/bootflash/C9800-hw-programmables.16.11.01c.SPA.pkg
This operation may require a reload of the system. Do you want to proceed? [y/n]y
--- Starting Activate ---
Performing Activate on all members
[1] Activate package(s) on chassis 1
[1] Finished Activate on chassis 1
Checking status of Activate on [1]
Activate: Passed on [1]
Finished Activate
--- Starting Commit ---
Performing Commit on all members
Aug 13 23:14:12.122: %INSTALL-5-INSTALL_AUTO_ABORT_TIMER_PROGRESS: Chassis 1 R0/0: rollback_timer: Install auto abort timer will expire in 21600 seconds
Aug 13 23:14:13.350: %IGMP_QUERIER-4-SAME_SRC_IP_ADDR: An IGMP General Query packet with the same source IP address (172.16.76.83) is received in VLAN 1 on port Te0/0/1.
Aug 13 23:14:16.635: %IGMP_QUERIER-4-SAME_SRC_IP_ADDR: An IGMP General Query packet with the same source IP address (172.16.76.83) is received in VLAN 1 on port Te0/0/1. [1] Commit package(s) on chassis 1
[1] Finished Commit on chassis 1
Checking status of Commit on [1]
Commit: Passed on [1]
Finished Commit
/usr/binos/conf/install_util.sh: line 594: /bootflash/.installer/install_add_pkg_list.txt: No such file or directory
Install will reload the system now!
SUCCESS: install_add_activate_commit Tue Aug 13 23:14:49 Central 2019
Aug 13 23:14:49.485: %INSTALL-5-INSTALL_COMPLETED_INFO: Chassis 1 R0/0: install_engine: Completed install one-shot PACKAGE bootflash:C9800-40-universalk9_wlc.16.11.01c.SPA.bin
Chassis 1 reloading, reason - Reload command
Aug 13 23:14:51.994: %PMAN-5-EXITACTION: F0/0: pvp: Process manager is exiting:
Aug 13 23:14:52.000: %PMAN-5-EXITACTION: C0/0: pvp: Process manager is exiting:
Aug 13 23:14:53.100: %PMAN-5
Initializing Hardware ...
Use this section to confirm that your configuration works properly.
After the controller reboot you can verify the current installation mode of the controller. Run the show version command in order to confirm that conversion is succesful.
9800-40#show version | include System image|Installation mode
System image file is "bootflash:packages.conf"
Installation mode is INSTALL
9800-40#show version | include System image|Installation mode
System image file is "bootflash:/C9800-40-universalk9_wlc.16.11.01c.SPA.bin"
Installation mode is BUNDLE
There is currently no specific troubleshooting information available for this configuration.