Reflashing an LSI disk controller


  • Tue 05 July 2016
  • misc

Avago (formerly LSI Corp) is the manufacturer of the preferred disk controllers for use with ZFS, whether under FreeBSD or Solaris derivatives such as OmniOS or SmartOS. In no small part this is because LSI supports an alternate firmware image called IT (for Initiator-Target), which turns the controller into the mother of all host bus adaptors (HBAs), which via a SAS multiplier can often connect hundreds of drives to a single controller card.

Unlike IR (Integrated RAID) firmware which presents the host computer with a small number of virtualized devices (the components of which are hidden behind the RAID controller), IT software exposes every SAS or SATA drive directly to the host operating system, typically by WWN, like so:

{% raw %} [root@80-c1-6e-64-9b-24 ~]# ls -l /dev/dsk/c0t50014EE6ACED7A78d0 lrwxrwxrwx 1 root root 49 Jun 30 11:47 /dev/dsk/c0t50014EE6ACED7A78d0 -> ../../devices/scsi_vhci/disk@g50014ee6aced7a78:wd [root@80-c1-6e-64-9b-24 ~]#

ZFS really really likes to see disks directly. It doesn't need a second lieutenant in the form of hardware RAID; it's an integrated RAID controller, volume manager, and more.

Anyway, reflashing represented a bit of gymnastics to make the Right Thing happen. This was mostly due to my naivete.

I got a few SAS3801E-R (LSI 1068E) boards to practice on a couple of months ago. They're cheap enough (< $15 apiece in the used market) to not have a cow if I managed to brick them while learning to reflash. They're reasonably performant for anything less than SSDs (or big port multiplier deployments) but don't support drives > 2TB, which is reflected in the cheap price.

I had success reflashing, and even a vague idea that I might use them for something, but then Santa brought me a couple of systems with SAS9211-8i controllers (SAS2008 chipset). Naturally I wasted no time in reflashing to IT mode so I could use it with SmartOS.

These are my raw notes from the upgrade.

I used the FreeDOS-1.1-memstick-2-256M.img.bz2 image from https://www.chtaube.eu/computers/freedos/bootable-usb/ and 9211-8i_Package_P20_IR_IT_FW_BIOS_for_MSDOS_Windows.zip from http://www.avagotech.com/products/server-storage/host-bus-adapters/sas-9211-8i.

Wrote these out from a Mac just fine. No drama.

Booted FreeDOS with no drivers (option 4). No idea whether this is important or not.

In the firmware package, find the version of sas2flash or sasflash that is intended for DOS. They give you Windows 32 bit and 64 bit versions too, all in the same zip file.

Don't be tricked into setting up Windows just to reflash controllers. First off that's a rabbit hole you don't want to go down, and second off it only works for upgrading the same type (IT vs IR) of software. If you want to swap software types, you need to erase the controller completely and then flash the naked controller - and it only works from DOS.

Reflash-to-IT-mode commands for LSI 1068e: {% raw %} cd \SAS3081

SASFLA~1\SASFLASH -listall

(remember rev number - like B3 etc, install proper software)

SASFLA~1\SASFLASH -o -e 6

SASFLA~1\SASFLASH -f 3081ETB3.fw -b MPTSAS.ROM

{% endraw %}

Reflash-to-IT-mode commands for LSI 9211-8i {% raw %} cd 9211-8i

sasflash\sas2flsh -listall

sasflash\sas2flsh -o -e 6

cd FIRMWARE\HBA_92~2

\9211-8i\sasflash\sas2flsh -o -f 2118IT.BIN -b \9211-8i\sasbio~1\MPTSAS2.ROM

{% endraw %}

Some other folks have a more comprehensive write-up of this exercise at http://brycv.com/blog/2012/flashing-it-firmware-to-lsi-sas9211-8i/.