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

109 lines
4.8 KiB
Markdown
Raw Normal View History

2025-06-19 01:05:03 -04:00
+++
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.
<!--more-->
{{< 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:
```bash
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.
```bash
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.
```bash
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!
```bash
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.