Skip to main content
Background Background

Updating LSI HBA on TrueNAS Scale

Navigating Broadcom and LSI HBA updates on TrueNAS Scale.

All of the references I was able to find for updating LSI firmware was outdated, and since this took me longer than I would like, I thought I would share my experience as a guide to others.

Find your hardware information: #

lspci -vvv | grep -A 20 -B 5 "LSI\|Broadcom"
65:00.0 Serial Attached SCSI controller: Broadcom / LSI SAS3224 PCI-Express Fusion-MPT SAS-3 (rev 01)
        Subsystem: Broadcom / LSI SAS9305-16i
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR+ FastB2B- DisINTx+
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0, Cache Line Size: 32 bytes
        Interrupt: pin A routed to IRQ 73
        NUMA node: 0
        IOMMU group: 4
        Region 0: I/O ports at b000 [size=256]
        Region 1: Memory at e0e00000 (64-bit, non-prefetchable) [size=64K]
        Expansion ROM at e0d00000 [disabled] [size=1M]
        Capabilities: [50] Power Management version 3
                Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [68] Express (v2) Endpoint, MSI 00
                DevCap: MaxPayload 4096 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us
                        ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset+ SlotPowerLimit 0W
                DevCtl: CorrErr- NonFatalErr- FatalErr+ UnsupReq-
                        RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+ FLReset-
                        MaxPayload 256 bytes, MaxReadReq 512 bytes
                DevSta: CorrErr+ NonFatalErr- FatalErr- UnsupReq+ AuxPwr- TransPend-
                LnkCap: Port #0, Speed 8GT/s, Width x8, ASPM not supported

If we look under Subsystem, we can see the model number of the HBA, in my case: LSI SAS9305-16i. If you have multiple HBAs, they should all be listed in similar entries.

Now we can find out what firmware version we are currently running by using the sas3flash command.

sas3flash -listall

Avago Technologies SAS3 Flash Utility Version 16.00.00.00 (2017.05.02) Copyright 2008-2017 Avago Technologies. All rights reserved.

    Adapter Selected is a Avago SAS: SAS3224(A1)

Num Ctlr FW Ver NVDATA x86-BIOS PCI Addr #

0 SAS3224(A1) 16.00.01.00 10.00.00.05 08.27.00.00 00:17:00:00 1 SAS3224(A1) 16.00.01.00 10.00.00.05 08.27.00.00 00:65:00:00

    Finished Processing Commands Successfully.
    Exiting SAS3Flash.

# Download the firmware:
Navigate to the [Broadcom website](https://www.broadcom.com/support/download-search?pg=&pf=Host+Bus+Adapters&pn=&pa=Firmware&po=&dk=&pl=&l=false) and search for your HBA model number. Broadcom does not make it easy to get direct links to the downloads, so hit F12 in your browser, and go to the `Network` tab. When you click on the download link you will see a GET request, copy the URL. In my case, the URL is: https://docs.broadcom.com/docs-and-downloads/host-bus-adapters/host-bus-adapters-common-files/sas_sata_12g_p16.12_cutlass_point_release/9305_16i_Pkg_P16.12_IT_FW_BIOS_for_MSDOS_Windows.zip

Now in our TrueNAS Scale shell, we can download the firmware using wget.
```bash
wget https://docs.broadcom.com/docs-and-downloads/host-bus-adapters/host-bus-adapters-common-files/sas_sata_12g_p16.12_cutlass_point_release/9305_16i_Pkg_P16.12_IT_FW_BIOS_for_MSDOS_Windows.zip

unzip 9305_16i_Pkg_P16.12_IT_FW_BIOS_for_MSDOS_Windows.zip

cd 9305_16i_Pkg_P16.12_IT_FW_BIOS_for_MSDOS_Windows
cd Firmware
cd SAS9305_16i_IT_P

Backup the current firmware: #

For each HBA, we should backup our current firmware in case something goes wrong.

sas3flash -c 0 -ufirmware backup_card0_fw.bin
sas3flash -c 1 -ufirmware backup_card1_fw.bin

Update the firmware: #

Warning! I was able to update my firmware on a live system with no restart or issues, but this may not be the case for you. It is a good idea to make sure that your arrays are not in use, and that you have good backups before proceeding.

Lets flash the firmware!

sas3flash -c 0 -f SAS9305_16i_IT_P.bin
sas3flash -c 1 -f SAS9305_16i_IT_P.bin

Clean up #

We are all done!

Once you have verified that things are working the way you want them to, you can remove the firmware download and the backup files.