Cisco ACI - Upgrade-Downgrade Nexus Without APIC

Hello and welcome back to my blog! In this post we’ll see how to upgrade/downgrade a Nexus running ACI firmware without using APIC 😊

Why?

Yeah… I know what you are thinking… You have APIC, why are you doing an upgrade/downgrade without it? Well, it’s simple and this is just an example:
Some SFP (e.g. the QSFP-100G-DR-S) requires a minimum release to work with some Nexus properly. If you don’t have that particular release (or higher) the SFP could not work on the Nexus and, if it’s the SFP used for the fabric discovery you are not able to add this Nexus to the fabric. And no fabric… no APIC… no party 😊
So here we go, you now understand my issue 😉

Tools

This is what you need:

  • USB, formatted as FAT32 (I’ve done the activity with 32GB USB)
  • Console Cable
  • Cisco Nexus with ACI firmware

Disclaimer

This procedure will clean up the configuration of the Nexus. Do it only with new Nexus and not production switch.
During this guide I’ll upgrade a Nexus to the following release: 15.2(6e), if you don’t want this release please replace the file name with your target firmware.

Variable

If during the procedure you see the following message:

Powercycle required due to Bios upgrade.

The switch will automatically reboot after a couple of seconds and you probably return to the “loader>” and you have to start the procedure again (it happens just once, after the first reboot)

Conversion

Prepare you USB by formatting it to FAT32 and copying the new image file.
Now, attach the USB to the Nexus and power on it.

During the initial phase of the boot, stop it by pressing with “CRTL+C”. You should now you see “loader>” in the prompt

By typing “dir” you should be able to see the files into USB and BOOTFLASH:

loader > dir

usb1::
 System Volume Information
 aci-n9000-dk9.15.2.6e.bin

bootflash::
  aci-n9000-dk9.14.1.2m.bin
  nxos.7.0.3.I7.3.bin
  CpuUsage.Log
  lost+found
  auto-s
  lxc
  disk_log.txt
  mts_buffer_log.log
  mem_log.txt
  libmon.logs
  diag_bootup

Boot the device with the image inside the USB by typing:

boot usb1:aci-n9000-dk9.15.2.6e.bin

Here is the full output:

loader > boot usb1:aci-n9000-dk9.15.2.6e.bin

Security Lock
Booting usb1:aci-n9000-dk9.15.2.6e.bin
Trying diskboot
 Filesystem type is fat, partition type 0xc
Image valid


Image Signature verification was Successful.

Boot Time: 5/9/2023  9:16:32

During the boot you should see the following messages:

*** Running INXOS PE IFC image  ***
@@@ Copying image from /usb/usb1/aci-n9000-dk9.15.2.6e.bin to /bootflash ...
@@@ Done copying /usb/usb1/aci-n9000-dk9.15.2.6e.bin to /bootflash

The device should now boot with the new image and after several minutes (10/15m as per my experience) you should see the login prompt.

User Access Verification
(none) login:

The default username is “admin” and there is no password. Now verify that the new firmware has been copied into the bootflash:

User Access Verification
(none) login: admin
********************************************************************************
     Fabric discovery in progress, show commands are not fully functional
     Logout and Login after discovery to continue to use show commands.
     Run show discoveryissues for more details.
********************************************************************************
(none)#
(none)# dir bootflash
CpuUsage.Log                     disk_log.txt  mem_log.txt.old.gz
aci-n9000-dk9.15.2.6e.bin        libmon.logs   mts_buffer_log.log
auto-s                           lost+found    nxos.7.0.3.I7.3.bin
bios_bootup_scratch_not_cleared  lxc
(none)#

Now delete the “auto-s” file:

(none)# delete bootflash/auto-s
delete: remove write-protected regular file 'bootflash/auto-s'? y

Change the active directory to the “bootflash” and launch the “setup-bootvars.sh” script following by the new image file name

(none)# cd /bootflash
(none)# setup-bootvars.sh aci-n9000-dk9.15.2.6e.bin
In progress
In progress
In progress
In progress
In progress
In progress
In progress
In progress
Done

Great! Now, the last thing to do is to clean up the switch configuration. We don’t want to boot the device with some old/strange configuration on it:

(none)# setup-clean-config.sh
In progress
In progress
In progress
In progress
In progress
In progress
In progress
In progress
In progress
In progress
Done

Now, we can reload the switch:

(none)# reload
This command will reload the chassis, Proceed (y/n)? [n]: y

Congratulation, you successfully upgrade/downgrade your nexus without APIC!

Thanks for your time I hope that you’re enjoying my blog!
If you have some questions, please drop me a message through social networks!😊
👈 You can find the relative icons here on the left of the page

Riccardo