I noticed a drive failed in my NAS recently. I have a SuperMicro 826 chassis with the SAS backplane that has activity and failure lights. Rather than checking all of the drives manually, I wanted to activate the failure light for that slot and pull a single drive.

Long story short, I ended up breaking the onboard firmware plus had to pull all of the drives to check the serial manually. Check the end for the solution.

I followed Dan Langille’s guide to flashing the firmware using mpsutil. The flashing succeeded but no change in the ability to activate any failure lights. I tried again using sas2flash and it went poorly as it finished. The flashing again went okay but when sas2flash tried to reset the LSI controller, the kernel crashed. The controller was attached to the front SAS enclosure that contained all of the drives for the system, including for /. That in retrospect wasn’t a good idea.

Once the system rebooted, I was greeted with this alarming message:

Unable to load LSI Corporation MPT BIOS
MPT BIOS Fault 05h encountered at adapter PCI(02h,00h,00h)
Press any key to continue...

The megarec utility couldn’t find the controller at all so I feared I had bricked it. Turned out I was simply using the wrong tools to find and flash the controller. The Mega* utilities are for the MegaRAID firmware while the onboard controller always had the basic IT firmware. Instead I needed sas2flash the entire time.

I tried flashing with other LSI firmware files for the 2116 but they never fully succeeded. sas2flsh.exe (I was running in FreeDOS now) always ended with an error like this:

Chip is in RESET state.  Attempting Host Boot...
ERROR: Firmware Host Boot Failed !
Due to error remaining commands will not be executed.
Unable to Process Commands.
Exiting SAS2Flash.

Solution

SuperMicro’s site has the P19 firmware but someone at ServeTheHome got the P20 firmware from SuperMicro and posted it on the site. The format of the files is a bit different but the ROM files worked perfectly with sas2flsh.exe. I copied the extracted files from the zip to a FreeDOS live CD and followed the commands from the BAT file. One of the commands (sas2flsh -e 7) cleared the entire firmware, including the SAS address. I had written down the SAS address before so I could recover the original one but the erasing wasn’t necessary in the first place. I wrote the firmware then the BIOS and rebooted. The LSI BIOS loaded successfully and FreeBSD was able to use the controller once again.