[Guide] Updating your LSI SAS Controller with a UEFI Motherboard

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 someone can assist you before going any further.

PLEASE NOTE this specific process will only work with LSI branded cards, and only if you are updating a controller with firmware for the same chipset (like from the SAS2008 IR mode to IT mode). There are more advanced methods for cross-flashing cards from another manufacturer like Dell, IBM, HP, etc., as well as methods for cross-flashing from one LSI chipset to another (like from the SAS2208 chipset to the SAS2308 chipset), but they are not covered in this guide. If you are unsure what chipset your card uses, post info about the card in here or in Discord before you proceed.

0. 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

2. 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.

3. 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

4. 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

  • If you get an error about no boot device or something similar, you may need to disable secure boot in your BIOS, or update the boot order to include the USB stick. These steps vary from motherboard to motherboard, so consult your manual for the exact process.

  • 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.

5. 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.

6. 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.

12/26/2019 Update - I reformatted this post slightly with collapsible steps to make it easier to track your progress, and re-worded the warnings at the top for clarity about which cards will and won’t work with this guide.

17 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!

1 Like

This worked brilliantly for me. The only thing I had to do was turn off secure boot in my BIOS so it would load this UEFI shell. Might be worth noting in the guide somewhere as a quick point.

1 Like

Is there a way to figure out if a card is already flashed in IT mode in Unraid?

dmesg | grep LSI
[ 22.699876] mpt2sas_cm0: LSISAS2116: FWVersion(05.95.02.00), ChipRevision(0x02), BiosVersion(00.00.00.00)

I purchased a LSI 9200-16e and it seems to run fine but based on what I’m seeing it’s on some old firmware.

Well, the 9200-16e only comes in IT mode, but you’re on a super old firmware version. The latest is P20 (20.00.07.00), and you really should update to the latest before you use the card. There were some bugs in earlier versions that could cause data loss.

Ok…yeah I’m not using it in “production” just yet so I’ll get around to flashing it when I get some time.

TLDR: semi-related

I was toying with using it in this Advantech motherboard I got a few months ago (AIMB-272). It’s a very quirky board that seems to lose it’s cmos when there is no power…I’ve replaced the battery with one I believe was good but I guess I’ll go buy a new one to be sure. It’s not giving me battery errors anymore but it’s still losing it’s memory with no ac power.

On POST it will fire up for about 10 seconds…then stop, then restart and take off and go…sometimes it gives a screen and sometimes not. The beeps sometimes seem normal…sometimes more pronounced suggesting some kind of erratic problem. It’s weird. It’s as if it thinks it’s got new hardware changes every time it boots but the cmos reset jumper is set correctly. At this point I’ve just been tinkering with it to determine if it’s usable/sellable, or just put it away in a drawer. It’s 2nd gen intel and I wouldn’t mind putting a i7-2710qe in it if I could get into one cheap. It would be a low power 4c/8t Unraid at that point…just bat $hit crazy.

Edit: flashed successfully…thanks for the detailed instructions

omg i was so frustrated with this, thanks so much man! I bought these off amazon and was able to find the bios stuff and installed one on an older machine after a ton of headache but couldnt get them to work on my newer machines…thanks so much!

1 Like

Just to confirm, I have the SAS9201-8i so I need to download the SAS2008 Firmware linked above?

It’s bit confusing because that download link says it’s firmware for 9210-8i.

Yes, that’s the correct firmware. Anything that uses the SAS2008 chipset, including the 9201-8i, 9210-8i and 9211-8i, can use that same firmware image.

1 Like

9206-16e Firmware Link
https://docs.broadcom.com/docs/12354745

Are you saving this for later?

1 Like

Hello all,

I’m building my first NAS and I’m having problems with the LSI 9207-8i card I got from amazon.
The green led is flashing so I know it’s getting power. It doesn’t show in bios. Tried the FreeDOS bootstick with sas2flsh. When I try the -listall command I get PAL error. I then tried it with the efi shell and it says the following: “ShellApp: Application not started from Shell”. I’m at my wit’s end now.

Does this mean the card is a dud and I got ripped off?

Noob looking for help :slight_smile:

Edit: figured it out. Apparently needs a specific branch version of the shellx64

This guide saved me from getting an aneurysm. Can’t express my gratitude enough, thanks!

Also small note: my card’s sas address started with ‘56C’, not 500.

I post in this thread because some people looks to know about firmware and flashing.
Sorry if I am hijacking the thread.

I have a DELL T7910 with a built in LSI 3008 controller.
I use UEFI, No legacy bios and secure boot.
I found a new Firmware in the for this computer relevant download on DELL Support, marked as valid for this computer according to service tag.,
I updated the firmware, without checking what version was alrady on it. Sorry…
It is a Ph15 relase I flashed now
No errormessages, the command to flash was:
sas3flash_x64.exe -o -f T7910_LSISAS3008.fw -b mptsas3.rom -b mpt3x64.rom
However it took very long time to reset the adapter.
After a reboot I can no longer boot into windows. It cannot find any HDD.
I have from UEFI choises to go to BIOD or device setup. I tried device setup but it only led me to Intel NIC. Not to the SAS controller.
DELL dignose report it cannot find my HDD’s
After I went to BIOS and found it cannot find any hardrive there. I then turned of secure boot.
After a reboot, the adapter is there, working. Diagnose now find my harddrive.
Rebooting and windows boots.
Rebooting, inte BIOS and turn on secure boot.
Once again UEFI do not accept the 3008 controller.
Turning off secure boot, it works.
What am I missing here? Is this firmware not certified for UEFI? Is there a way to tell UEFI it is valid, to enable secure boot? Or, is it a fault firmware package DELL have?
Info about the firmware as follow.

I hope some of you know more about this issue. And, yes I am not familiar with UEFI, nor the new SAS controllers.
Many years ago I worked with SCSI, so my knowledge is a bit old.
Sorry if I missed something elementary here.

Yes it is IR. I do not understand what I would gain with reflash it to IT. Currently I do not use the RAID. All drives is unconfiguered. So I want it to work as a HBA and report drives to my motherboard.
I plan on buying a SAS 9361-8i to the day I begin configure drives for RAID.
I bought this computer as second hand some weeks ago, hence my efforts to update BIOS and firmware, it was untouched and I have a habit of updating things like this when I buy a second hand computer. This time, it almost worked.
Is there a newer recomended firmware for this? On DELL support pages I found no newer.
And yes, DELL claim on their support site that they have dropped the support for this model from this year.
Also, the T7910 do not have a choise for UEFI shell when I boot.

Edit:
After spent some time on Broadcom firmware page. Is it as simple as DELL copy the non-signed UEFI firmware into its package? They have repackage the archive and do not have the folders Broadcom have in their relase.
Is it safe to asume DELL do not modify somthing else? Is it possible to downgrade if I try Broadcoms own and something goes wrong?
Lots of question, sorry.

An update to my previous post.
I tried the latest Broadcom firmware.
I selected the signed version and now my secure boot works as it should. Good.
Now it present itself as SAS9311-8i and not LSISAS3008IR, I can live with that :wink:
There was only two versions in broadcom package: SAS9300IT and SAS9311IR and I wanted to keep the IR funtionality. I belevie this is why it now present as 9311-8i
But it no longer understand it is an Internal (Integrated) board. And the computers own Diagnose cannot find any harddrives, despite computers BIOS list them. Not a big issue, I do not use computers diagnose other then in this case when it refuses to start the computer after the first firmware flash.
Also as a sidenote, sas3flash -sasaddhi is not needed, it retains the adress trough the flash process.
So, I consider my computer as working.
Is there any knowledge about a internal LSISAS3008 for Integrated use in existance (For this version)?
It does not really matter becasue the computer works, that is what matters.
But it would be nice to have the feeling of a 100% factory working computer.
How about HIjacking the 3008IR Firmware (3008_FW_PH16.00.10.00.zip) from Sumpermicro? Bad idea?
I do not know if they use signed firmware or not.

Current (after flash) version.

On the 9200-8e I found the firmware that was dated May 2016. I couldn’t find anything newer but just wondered if there is anything I was missing. It took the update to P20.

P20 is the latest firmware for the 2008/2308-based cards, and it has been out for a few years now so that date sounds accurate.