Table of Contents

Upgrade Supermicro IPMI firmware with Linux shell

A quick checklist on how you upgrade your Supermicro IPMI firmware correctly and simply using Linux shell. This is suitable for some models but may be different. This was tested with X10DRL-* models so please read the documentation from your firmware zip package first. Then try the config / firmware dumps and go from there.

Update mode

I put the IPMI to update mode with web browser IPMI page Maintenance → firmware upgrade but I think this is not needed.

If your BIOS will not let you upload the file after this go to command line, use Supermicro IPMICFG package and reset IPMI with command:

ipmicfg -r

Backup config and firmware

Make sure you don't have existing files with same name. It seemed to have an effect on the outcome.

mv config-backup.bin config-backup.bin.old
mv firmware-backup.bin firmware-backup.bin.old
./AlUpdate -c -d config-backup.bin -i lan -h <host> -u admin -p <password> -r y
./AlUpdate -d firmware-backup.bin -i lan -h <host> -u admin -p <password> -r y

Upgrade firmware

./AlUpdate -f <firmware.bin> -i lan -h <host> -u <user> -p <password> -r y

Scripts for lazy / memory impaired people

To avoid doing the same drill over again here are scripts to narrow your options. Make sure you have AlUpdate downloaded with your latest Supermicro firmware file and in your path.

Backup

#!/bin/sh
host=$1
user=$2
password=$3

config="configuration_backup.bin"
firmware="firmware_backup.bin"

if ! [[ $host == "" ]] || [[ $user == "" ]] || [[ $password == "" ]]; then
        echo 'Usage: backup-IPMI-firmware <host> <username> <password>'
        exit
fi

echo Backup config host $host IPMI config to $config
if [[ -f $config ]]; then
	mv $config $config.old
fi
if [[ -f $firmware ]]; then
	mv $firmware $firmware.old
fi

AlUpdate -c -d $config -i lan -h $host -u admin -p $password -r y
echo Backup firmware host $host IPMI config to $firmware
AlUpdate -d $firmware -i lan -h $host -u admin -p $password -r y

Upgrade

#!/bin/sh
firmware=$1
host=$2
user=$3
password=$4

if ! [[ -f $firmware ]] || [[ $host == "" ]] || [[ $user == "" ]] || [[ $password == "" ]]; then
	echo 'Usage: upgrade-IPMI-firmware <file> <host> <username> <password>'
	exit
fi

echo Upgrading $firmware to host $host, preserving config
AlUpdate -f $firmware -i lan -h $host -u $user -p $password -r y