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