Updating your LSI SAS Controller with a UEFI Motherboard

THIS POST IS CURRENTLY A WORK IN PROGRESS. PROCEED WITH CAUTION IF YOU SEE THIS MESSAGE

If you have a motherboard that uses UEFI instead of a legacy BIOS, use the following process to update the firmware on your LSI controller. These steps will work for both an onboard controller or an add-in card. If you run into issues with any of the steps, please post a message here or in the Discord so one of us can assist you before going any further.

PLEASE NOTE this specific process will only work with LSI branded cards. If you have a card from Dell, HP, IBM or another vendor, there is different process you will need to follow instead here.

  1. Download the firmware and other files
  • There are three separate files you will need to download from Broadcom; the EFI flashing tool, the UEFI ROM, and the firmware image. The tool and ROM are universal, but there are different firmware images depending on which specific card you have. If you don’t know the model of your card, go here for tips on identifying your card.
File Description File Link
UEFI Flashing Utility https://docs.broadcom.com/docs/12350820
UEFI ROM Image https://docs.broadcom.com/docs/12348628
SAS2008 Firmware (9201-8i/9211-8i Cards) https://docs.broadcom.com/docs/12350504
SAS2116 Firmware (9201-16e Cards) https://docs.broadcom.com/docs/12350418
SAS2308 Firmware (9207-8i Cards) https://docs.broadcom.com/docs/12350493
  • In addition to the files from Broadcom, you might need a UEFI shell if your motherboard doesn’t have a built-in shell. You can download the shell from GitHub here
  1. Obtain and format your USB thumb drive
  • You will need a thumb drive 32GB or smaller. If you don’t already have one, I recommend the Kingston Data Traveler SE9 https://amzn.to/2PlvOhH
  • Insert the drive into your computer, and format it to FAT32. The process will wipe anything that’s currently on your drive, so make sure you back up anything on the drive you want to keep
  1. Add firmware files to the USB thumb drive
  • From the Installer_P20_for_UEFI.zip file, copy the file sas2flash.efi from the Installer_P20_for_UEFI\sas2flash_efi_ebc_rel folder to the root folder of the thumb drive
  • From the UEFI_BSD_P20.zip file, copy the x64sas2.rom from the folder UEFI_BSD_P20\uefi_bsd_rel\Signed into the root folder of the thumb drive
  • For the firmware, the filename will differ, but it will always be in a subfolder of the Firmware folder. Look for the folder name that ends in IT. Inside that folder there should only be one file with a .bin extension. Copy that file to the root folder of the thumb drive. Also, make a note of the name of this firmware image, you will need to remember it for later.
  • Also, in the same download as the firmware file, copy the file mptsas2.rom from the sasbios_rel folder to the root folder of the thumb drive.
  1. Add UEFI Shell to flash
  • Finally, if you need the UEFI shell, you’ll need to copy it to a few locations. The articles I researched when writing this guide had some conflicting information about where the shell needs to go, so it’s easiest to just copy it to all of the locations, unless you know for sure which specific file and folder your motherboard looks for.
  • Create the folders boot\efi and efi\boot on your flash drive.
  • Copy the file Shell_full.efi to both folders, as well as to the root folder of the thumb drive, and rename it to BootX64.efi
  • Copy the file Shell_full.efi to both folders and the root folder again, and this time rename it to ShellX64.efi
  • Just to clarify - when you’re done you will have copied the same file to the thumb drive 6 times, in 3 folders, named both BootX64.efi and ShellX64.efi
  1. Boot to the UEFI shell
  • If you have any hard drives or other bootable devices plugged into the system you will be using to flash your controller, unplug them temporarily. Plug in the thumb drive and turn on the computer. It should boot to the UEFI shell and you should see something similar to this screenshot:

image

  • You should see a list of all the drives the UEFI shell can detect, including your thumb drive. Change to the drive’s path by typing in the mapped name including the colon and pressing Enter (example BLK0: in the image). If you entered it correctly, the prompt will change from Shell> to fs0: (or whatever name your system mapped for the drive).

  • Type dir and hit Enter again, you should see a listing of the files you copied onto the thumb drive. If you don’t see the files, double-check the map and try changing to any other mapped drives and repeating the dir command until you find the correct path.

  1. Flashing a single card with the latest firmware
  • First we need to double-check that the card is showing up properly. Run sas2flash.efi -listall. You should see a table similar to this:

  • If you get an error that no controllers could be found, make sure the controller was completely enabled in the BIOS (for onboard controllers) or power down and reseat the controller (for add-in cards). If the list shows more than one controller, jump to step 6 for specific instructions
  • Next you’ll need to get the address of the SAS controller. Run sas2flash.efi -list and write down the full 16 digit SAS Address (highlighted in red).

image

  • Run sas2flash.efi -o -e 7 to erase the current firmware from the card.
  • Run sas2flash.efi -o -f <firmware name>.bin -b x64sas2.rom -b mptsas2.rom, substituting the name of the firmware image you wrote down in step 3
  • Run sas2flash.efi -o -sasaddhi XXXXXXX replacing XXXXXXX with the first seven digits of the SAS address, which should start with 500. The system should prompt you to enter the remaining 9 digits of the address (the portion highlighted in green), go ahead and enter it.
  • Your card should be fully flashed now. You can shut down, remove the flash drive, and proceed with the rest of your build.
  1. Flashing multiple cards
  • If you have multiple SAS controllers installed, you will need to add one parameter to the flashing commands, and repeat the process for every controller. It’s best to do all the steps for a single controller before moving on to the next.
  • Get the SAS address of the controller you are working on. Run sas2flash.efi -c X -list, replacing the X with the card number from above (example sas2flash.efi -c 0 -list). Write down the full 16-digit number (highlighted in red)

image

  • Run sas2flash.efi -c X -o -e 7, again replacing the X with the card number, to erase the current firmware from the card.
  • Run sas2flash.efi -c X -o -f <firmware name>.bin -b x64sas2.rom -b mptsas2.rom, substituting X with the card number, and replacing <firmware name> with the name of the firmware image you wrote down in step 3
  • Run sas2flash.efi -c X -o -sasaddhi YYYYYYY, with X as the card number and YYYYYYY the first seven digits of the SAS address, which should start with 500. The system should prompt you to enter the remaining 9 digits of the address (the portion highlighted in green), go ahead and enter it.
  • The card is now fully flashed. Repeat these steps for the other controller(s) in your system. Once all controllers have been flashed, you can power down, remove the USB stick, and proceed with the build.
8 Likes

sas2flash.efi -sasaddhi needs to be sas2flash.efi -o -sasaddhi XXXXXXX

at least for the new board build

Great Success!
Managed to work to a T after following said instructions.
I had to copy my 2108it.bin to both the /boot/efi/ and /efi/boot/ folders as well as the root folder for it to detect the firmware during the flash step (step 7).

Hoorah!