How to flash a LSI SAS 3008 HBA (e.g. IBM M1215) to IT mode
IBM M1215 LSI SAS3008 HBA
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.
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)
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
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
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.
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
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
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
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
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
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!
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.