Firmware Update of IBM ServeRaid BR10i with Ubuntu

system x, x3550 m3, LSI SAS 1068E, ibm 7944

I have just got a used IBM x3550 M3 server as development machine and ran into some trouble when trying to add some SSDs: the throughput was pretty slow (~100MB/s). Generally the BR10i controller supports 3G SATA2 and therefore i expected a throughput of ~250MB. I’ve figured out, that this behaviour is caused by the firmware of the LSI based RAID Controller BR10i which is fixed in v1.30.10.00. You can get the latest firmware package from IBM Fix Central (requires a developer account) but in case you are running ubuntu, you cannot install it directly, because this OS is not officially supported and the IBM tools are designed for Windows or RHEL.

But there is a simple solution out there: you can use the LSI OEM tools to update the firmware on Ubuntu!

Step 1: Download the LSI Tools#

For example Supermicro provides the required linux tools. You can download the package without registration.

root@ubuntu:/home/test# wget ftp://ftp.supermicro.com/driver/SAS/LSI/1064_1068/IT/Firmware/B3/LP-L8i/1.30.00/L8iLP_IT.zip

root@ubuntu:/home/test# unzip L8iLP_IT.zip
Archive:  L8iLP_IT.zip
   creating: L8iLP_IT/
   creating: L8iLP_IT/DOS/
 extracting: L8iLP_IT/DOS/L8iLP_IT.bat
  inflating: L8iLP_IT/DOS/L8iLP_IT.fw
  inflating: L8iLP_IT/DOS/mptsas.rom
  inflating: L8iLP_IT/DOS/sasflash.exe
   creating: L8iLP_IT/Linux_i686_x86-64/
 extracting: L8iLP_IT/Linux_i686_x86-64/L8iLP_IT.bat
 extracting: L8iLP_IT/Linux_i686_x86-64/L8iLP_IT.bat~
  inflating: L8iLP_IT/Linux_i686_x86-64/L8iLP_IT.fw
 extracting: L8iLP_IT/Linux_i686_x86-64/L8i_IT.bat~
  inflating: L8iLP_IT/Linux_i686_x86-64/mptsas.rom
  inflating: L8iLP_IT/Linux_i686_x86-64/sasflash.exe
  inflating: L8iLP_IT/readme.txt
   creating: L8iLP_IT/Win_x86/
 extracting: L8iLP_IT/Win_x86/L8iLP_IT.bat
  inflating: L8iLP_IT/Win_x86/L8iLP_IT.fw
  inflating: L8iLP_IT/Win_x86/mptsas.rom
  inflating: L8iLP_IT/Win_x86/sasflash.exe
root@ubuntu:/home/test# chmod +x L8iLP_IT/Linux_i686_x86-64/sasflash.exe

This may look weird – a .exe file on linux ? but of course, it is a executable binary which is compiled for linux!

Step 2: Extract the Firmware from Update Package#

I recommend to use the official IBM firmware – it is possible to extract the firmware + uefi rom from the update package mentioned above.

root@ubuntu:/home/test# unzip ibm_fw_sraidbr_10i-2.75_linux_32-64.bin
Archive:  ibm_fw_sraidbr_10i-2.75_linux_32-64.bin
warning [ibm_fw_sraidbr_10i-2.75_linux_32-64.bin]:  74943 extra bytes at beginning or within zipfile
  (attempting to process anyway)
  inflating: Linux_verAny_UP0_xAny.wrapcfg
  inflating: image/0394_b3_02d28_1.30.10.fw
  inflating: image/0394_c0_02d28_1.30.10.fw
  inflating: image/ExtractToHDD.txt
  inflating: image/bios_6.30.02.rom
  inflating: image/ctlr-info.txt
  inflating: image/install.sh
  inflating: image/lsiIRupdate
  inflating: image/mindrv
  inflating: image/readme.txt
  inflating: image/sasflash
  inflating: image/uefi_3.16.00.06.rom
  inflating: linwrap

There are 3 important files in this package: uefi_3.16.00.06.rom, 0394_b3_02d28_1.30.10.fw, 0394_c0_02d28_1.30.10.fw – pay attention to the controller revision C0 or B3. The update tool will also check the revision before uploading, so it is not possible to break the card with a wrong firmware!

Step 3: Run the Firmware Update Tool#

Finally you can start the firmware update by providing the firmware as well as uefi bios files:

root@ubuntu:/home/test# ./L8iLP_IT/Linux_i686_x86-64/sasflash.exe -o -f image/0394_b3_02d28_1.30.10.fw -b image/bios_6.30.02.rom

 ****************************************************************************
    LSI Corporation SAS FLASH Utility.

    SASFlash Version 1.24.00.00 (2009.11.13)

    Copyright (c) 2006-2007 LSI Corporation. All rights reserved.
 ****************************************************************************

        Advanced Mode Set

        Adapter Selected is a LSI SAS 1068E(B3):

        Executing Operation: Flash Firmware Image

                Checksum Passed: 00000000

                Verifying NVDATA Compatibility. . .
                NVDATA Versions Compatible

                Product ID and Vendor ID match verified.

                Valid BootLoader Image verified.

                Beginning Firmware Download

                Firmware Download: SUCCESSFUL!

                Verifying the image flashed correctly. . .

                Firmware Flash: SUCCESSFUL!

                Resetting Adapter:
                Adapter Successfully reset.

        Executing Operation: Flash BIOS Image

                Validating BIOS Image. . .

                BIOS Header Signature Valid.

                Checksum Passed: 00000000

                BIOS Image compatible with the SAS Controller.

                Attempting to Flash BIOS Image. . .

                BIOS Flash: SUCCESSFUL!


Finished Processing Commands Successfully.
        Exiting SASFlash.