109 lines
4.8 KiB
Markdown
109 lines
4.8 KiB
Markdown
|
+++
|
||
|
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.
|