How to flash a LSI SAS 3008 HBA (e.g. IBM M1215) to IT mode


If you are looking to get a new host bus adapter (HBA) the LSI SAS3008 controller is perhaps the most popular 12gbps SAS controller on the market. It supports features such as the LSI DataBolt which lets you utilize higher bandwidth uplinks with compatible SAS expanders and 6gbps drives. It also features significantly better performance than the SAS2008 and SAS2308 generations when using the HBA with 8x SSDs. Although there are many “RAID” enabled (IR) SAS 3008 controllers out there, oftentimes what you want is a simple HBA. For applications with software managing redundancy such as ZFS, md raid, and Ceph you will want IT firmware. IT firmware essentially allows the controller to present attached disks to the system and stops the hardware controller from getting in the way.

For this guide, we are going to use the IBM/ Lenovo M1215 adapter. These are popular OEM SAS HBAs that have SAS 3008 controller chips onboard. They are usually flashed to IR mode so they do need to be updated to the latest firmware. Although they are essentially equivalent to the LSI SAS9340-8i and functionally equivalent to the LSI SAS 9300-8i save for different connector orientation, they are much less expensive. We commonly find the IBM M1215 for under $100 while the SAS 9340-8i and 9300-8i commonly sell for over $260. In systems where you are using three cards per chassis, that is a $450 savings for completing these simple steps that will take under 5 minutes per card. This is very similar to what we saw years ago with the SAS2008 generation and the IBM M1015.

Warning: Before proceeding, do note that this is a risky process. Issues with firmware flashes can render your card “bricked” and unusable/ unrecoverable. We will not be held responsible if this happens to your card. By following this guide, you accept all risks of damaging your card.

Step 1: Getting the Files

Currently, we are using the Broadcom/ Avago/ LSI P13 firmware for our HBAs which is the latest available. Many users prefer P10 firmware due to it being older and better known. You can simply replace P13 with P10 if you want to flash P10 firmware instead. Since LSI was acquired by Avago which merged with Broadcom, the download pages seem to change often. If the download links change, you should look for the SAS 9300-8i downloads. Currently, that is located here.

  • 9300_8i_Package_P13_IR_IT_FW_BIOS_for_MSDOS_Windows

The key files you want to end up with are:

  • sas3flsh.efi or sas3flash.efi
  • SAS9300_8i_IT.bin (you do NOT want to use the IR bin)
  • mptsas3.rom
  • mpt3x64.rom

Take these three files and copy them to a USB thumb drive. We are going to use an UEFI shell to perform the flash so there is no need to use a DOS boot disk. Place that USB thumb drive in a USB port of the server you will use to flash.

Please note, if you have sas3flsh.efi instead of sas3flash.efi remove the “a” from the following commands. You should also be able to utilize tab autocompletion after “sas3f” which will make that difference moot. You can also rename sas3flsh.efi to sas3flash.efi if you want to follow the below exactly.

Step 2: Preparing the Adapter

The first step we need to do is to put a jumper on J6 we want to reset the firmware and ensure we have a successful flash. Here is the jumper you need to connect:

IBM M1215 LSI SAS3008 HBA Jumper On And Off
IBM M1215 LSI SAS3008 HBA Jumper On And Off

One other tip we have is to use your mobile phone to take a picture of the SAS Address sticker usually located on the rear of the card. We will show another way to get the SAS address but this is useful in the event you forget it later.

Example LSI SAS3008 SAS Address Sticker
Example LSI SAS3008 SAS Address Sticker

After this is in place, take the controller and place it in the motherboard. Although we are going to need to access it again, ensure that it has proper cooling.

Step 3: Booting the Server and Resetting the Adapter

Boot the server you are using to an UEFI shell. Most major manufacturers include this option in their BIOS boot menu.

Once in the UEFI shell you will change to the USB drive (in our case “fs1:”). You will likely want to note the SAS address first.

sas3flash.efi -list

That will give you output similar to the following. If it does not, we may suggest using your smartphone for a quick picture as noted in Step 2.

SAS 3008 Flash Sas3flash List Result
SAS 3008 Flash Sas3flash List Result

Note the SAS Address as we will use it later. If you took a picture of the SAS address sticker, you may not need this.

sas3flash.efi -f SAS9300_8i_IT.bin -noreset

UEFI LSI SAS 3008 Reset Adapter
UEFI LSI SAS 3008 Reset Adapter

The process will take a minute or two to complete. When it is done, power down the server.

Now that this is complete, you should remove the J6 jumper installed on Step 2.

Step 4: Flashing the Controller

Again, boot the server to the UEFI shell. Now you can navigate back to the USB drive. The first command we will use is erasing the flash region on the card. Here is the command you will need.

sas3flash.efi -o -e 7

UEFI LSI SAS 3008 Flash Erase Current
UEFI LSI SAS 3008 Flash Erase Current

Now it is time to flash the controller. We are also going to flash the BIOS files in the event we want to boot from the device later.

sas3flash.efi -f SAS9300_8i_IT.bin -b mptsas3.rom -b mpt3x64.rom

UEFI LSI SAS 3008 Flash Firmware And Bios
UEFI LSI SAS 3008 Flash Firmware

Finally, you will likely want to add the SAS address back to the controller. If you were to do sas3flash.efi -list now you would see the SAS address represented as all zeros. To do this we use the SAS address from the photo in Step 2 or using the old -list output in Step 3. Replace the address string without dashes or spaces:

sas3flash.efi -o -sasadd 50060XXXXXXXXXXXX

UEFI LSI SAS 3008 Sasadd
UEFI LSI SAS 3008 Sasadd

After this is complete, you can do sas3flash.efi -list and see the card is reported as a SAS 9300-8i with the proper address. Congratulations, you are ready to go after a reboot.

LSI SAS 3008 IT Mode Success!

Final Words

Now that the controller is ready to go, it is suitable to be used for ZFS storage platforms such as FreeNAS, ZFS on Linux, napp-it plus OmniOS or others. This is also the preferred mode if you are using scale-out storage systems such as Ceph. Overall, this is a great way to save money on HBAs which can get quite expensive across many nodes and in large single nodes. With the current pricing of SAS3 HBAs we are starting to recommend them over their SAS2 counterparts. They are better able to handle the IOPS of several SSDs and provide more host bandwidth as well as more bandwidth to attached drives and drives located on expanders.

We will note that depending on your distribution, you may want to start with P10 firmware. It is much easier to upgrade firmware than it is to downgrade firmware. Check with the distribution of your choice and find the recommended LSI firmware version.

Our current pick of the IBM M1215 for under $100 is based on the fact that they are readily available, inexpensive, basically identical to the 9340-8i and are straightforward to flash. There are some other options out there but this is a good bet given those factors. If you have a more generic card such as a LSI brand 9300-8i or 9340-8i in IR mode you can skip steps 2 and 3.


  1. Great walk through prompted me to re-flash mine _properly_ sadly smart still doesn’t work 🙁 Any suggestions or will my m1215 not do smart regardless?

  2. If I wanted to flash a 16 or 24 port version to the IT firmware, would I just sub the correct files, or is the process more complex than that?

  3. Any reason I can’t use these same steps to flash one to IR? Also it looks like the P15 firmware is out now.

  4. Worked but had to power cycle a few times after the first flash as it kept locking up my system, certainly raised my heart rate :). On my system the adapter was not seen by sas3flash.efi until I put the jumper on, so I believe that is why the jumper is suggested.

  5. When I try the second command ‘sas3flash.efi -f SAS9300_8i_IT.bin -noreset’ I am getting an ERROR: Cannot flash IT Firmware over IR Firmware.

    Any ideas?


Please enter your comment!
Please enter your name here