karsttech.com/content/personal-blog/updating-lsi-hba-truenas-scale/index.md

4.8 KiB

+++ title = 'Updating LSI HBA on TrueNAS Scale' description = 'Navigating Broadcom and LSI HBA updates on TrueNAS Scale' date = 2025-05-29T07:11:45-05:00 draft = false categories = ['references'] tags = ['LSI', 'TrueNAS Scale', 'Broadcom', 'Update', 'SAS3Flash', 'HBA'] +++

Navigating Broadcom and LSI HBA updates on TrueNAS Scale.

{{< lead >}} Navigating Broadcom and LSI HBA updates on TrueNAS Scale. {{< /lead >}}

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:

{{< alert >}} 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. {{< /alert >}}

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.