Crossflashing an IBM M1015 RAID controller to IT firmware

Note: This stuff worked for me. If you’re afraid you’ll brick your card, maybe you should just stick with the default firmware.

I just bought an IBM M1015 RAID controller for my ZFS server, as the old Intel SASUC8I did not support drives bigger than 2 TB. This IBM controller is usually available really cheaply on ebay.

It comes with a fairly basic RAID firmware that’ll do mirrors or stripes, but no RAID5. Supposedly, it should hand off non-raid drives transparently to the OS, but i wanted to load the LSI IT firmware that turns it into a dumb HBA instead. This is my process.

You’ll need the megarec and sas2flsh tools, the newest firmware for the LSI 9211-8I chipset and a DOS bootable USB stick.

The good people at http://www.servethehome.com/ibm-serveraid-m1015-part-4/ have created a .zip file with most of what you need, namely megacli.exe, megarec.exe, sbrempty.bin and sas2flsh.exe. You can get the latest firmware from http://www.lsi.com/support/Pages/download-search.aspx by searching for the “Host Bus Adapter” 9211-8I, which should get you 2118it.bin. You may want to grab Installer_P15_for_UEFI.zip while you’re there, if you’re using a UEFI based motherboard. More about that one later.

VERY IMPORTANT (i think): Before you touch the controller, you have to note the SAS address of the card. You can do this by looking at a label on the card or you can find it with the following command: megacli -AdpAllInfo -aAll

Somewhere a little down the wall of text you’ll see something like: HW Configuration ================ SAS Address : 500605b0046c5b90

Note this address for a few steps down the line.

When you boot off the USB stick, you first have to wipe the flash memory of the controller with the following commands: megarec -writesbr 0 sbrempty.bin megarec -cleanflash 0

After that you reboot and boot back on the USB stick.

To load the actual firmware, you run these commands: sas2flsh -o -f 2118it.bin -b mptsas2.rom (You can omit the “-b mptsas2.rom” if you’re not going to boot from the controller and the computer will boot a bit faster) sas2flsh -o -sasadd 500605b0046c5b90 (replace this address with what you got from megacli earlier)

Now, the fun part for those with UEFI motherboards. If sas2flsh reports “ERROR: Failed to initialize PAL. Exiting program.” when you try to flash the card, it is unable to do this from DOS. You have to get a UEFI shell (https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2/EdkShellBinPkg/FullShell/X64/Shell_Full.efi worked for me on my 64 bit CPU) and put it on your usb stick. Then you have to load that shell, which on my Asus board was done by entering the BIOS settings, going into advanced mode, then from the exit menu loading the shell.

Once you’ve figured that out, you load the firmware in almost the same way as from DOS. First you have to change to the directory the files are in, in my case with the command “fs0:”. Then, the commands are: sas2flash.efi -o -f 2118it.bin -b mptsas2.rom sas2flash.efi -o -sasadd 500605b0046c5b90 (replace this address with what you got from megacli earlier)

If all goes well, when you reboot the card should report something like “LSI2008-IT” during startup.