LSI SAS firmware nonsense

I'm screwing around with storage again. This time I bought a pair of 8-lane 6 gbps SAS adapters: one with two internal SFF-8087 ports, one with two external SFF-8088 ports.

(If you don't know what I'm talking about, that's okay. This post is mostly for Google, in case someone else has a similar problem.)

The first controller was listed as a IBM ServeRAID M1015, which is a rebranded LSI 9240-8i. It offers two 4-lane SAS connectors, hence the -8i suffix. ZFS afficianados will recognize this as the controller of choice. It's cheap (~$90) because it was produced in vast quantities and is now being discarded in vast quantities. What's more, despite normally having onboard RAID functions, it can be cross-flashed into a non-RAID LSI 9211-8i HBA, giving the host direct access to all the drives – perfect for use with ZFS.

My M1015 arrived, and it was visually indistinguishable from a 9240-8i; there's literally no physical evidence of IBM anywhere. It's almost as if someone took an LSI card and flashed it to say "IBM M1015" in the MPT BIOS! Like, maybe… IBM.


It matters not. I followed the standard recipe to turn it into a generic LSI SAS2008 HBA, and life was good.

M1015 crossflash in progress

The second card was listed as an "HP LSI 9207-8e". This card is a straight-up SAS HBA with no RAID functions, which is what I want, and it has two four-lane external ports (-8e), which is what I want. Easy. It would work as-is, except I wanted to flash it to the same firmware level as the other LSI HBA, which is P16 to match the drivers in my target operating system.

On arrival, I noted that it had HP branding all over: the anti-static bag, the PCB silkscreen, everything. I removed the other card just to eliminate all possible confusion and booted up. The card's BIOS identifies it as an "HP 200 Series":


I dug in with sas2flsh -list, which says it's a SAS2308_2(B0) controller on a H221 board, which is definitely an HP part number.

sas2flsh -list output

First things first. I wanted to wipe the BIOS, since no matter what I won't be booting off this card. The SAS2Flash manual said boot support lives in memory region 5, so I wiped it with sas2flsh -o -e 5:


Next I told it to flash the 9207-8e P16 firmware, with sas2flsh -f 9207-8e.bin:

sas2flsh -f 9207-8e.bin NVDATA Image does not match Controller Chip Revision

Huh. NVDATA Image does not match Controller Chip Revision, you say. No compatible NVDATA Image(s) found!, you say.

*go dig around on the internet*

Word on the street is that the HP H221 had a hardware revision, and while it's a rebranded LSI 9207-8e nowadays, some of the older ones floating around are in fact rebranded LSI 9205-8e cards.

So, next, I grabbed the 9205-8e P16 firmware and tried loading it with sas2flsh -f 9205-8e.bin:

sas2flsh -f 9205-8e.bin

NVDATA Device ID and Chip Revision match verified. Hooray!

ERROR: NVDATA Image does not match Controller SubSystem ID! Boo!

*go dig around on the internet some more*

The fact that the device ID and chip revision match means that I definitely have firmware for the right card. In other words, while it was readily apparent that this LSI 9207-8e was first sold as an HP H221, it turns out this HP H221 is really an LSI 9205-8e.

(Why did this change? Easy: the 9205-8e was discontinued and replaced by the 9207-8e. Both cards use the same LSI SAS2308 controller, but the 9207 supports PCI Express 3.0, while the 9205 does not. This limits the 9205 to ~2700 MB/s of throughput, which… seems okay for now.)

(Further aside: why would HP sell both under the same part number? Because they're jerks. If you change something in a way that breaks firmware compatibility without changing the part number, screw you.)

I don't know what the controller subsystem ID mismatch message means exactly, but somebody on the internet made it sound like that's an advisory check performed only by newer versions of the flashing utility. If that's the case, I figured such a mismatch couldn't be significant enough to brick the controller, so why not give it a try? I downloaded the P14 ZIP and pulled out the P14 sas2flsh.exe.

To reiterate: I decided to flash the P16 firmware with P14 utility. Sounds brilliant, right? What can possibly go wrong? Well…

P14 sas2flsh with P16 9205-8e.bin P14 sas2flsh with P16 9205-8e.bin

It worked.