This guide covers:
- Checking HBA firmware & mode
- Updating firmware (IT mode)
- Enabling PCI passthrough in Proxmox
- Migrating HDDs from motherboard SATA to HBA
- Setting up VFIO bindings
- Verifying PCIe lanes per chip
- Listing disks per HBA chip
Resources
- Broadcom 9300-16i Downloads
- LSI 9300-xx Firmware Update | TrueNAS Community
- Secure Boot support for UEFI BSD mpt3x64.rom · GitHub
- edk2/ShellBinPkg/UefiShell/X64/Shell.efi at UDK2018 · tianocore/edk2
Downloaded files
bootx64.efi– UEFI shell boot fileSAS9300_16i_IT.bin– IT-mode firmwaremptsas3.rom– Legacy BIOS ROMmpt3x64.rom– UEFI BIOS ROMsas3flash/sas3flash.efi– Firmware flashing toolsas3ircu– Integrated RAID Configuration Utility
After installing the 9300-16i, confirm both chips are detected:
lspci | grep -i sasExample (dual-chip):
19:00.0 Serial Attached SCSI controller: Broadcom / LSI SAS3008 PCI-Express Fusion-MPT SAS-3 (rev 02)
1b:00.0 Serial Attached SCSI controller: Broadcom / LSI SAS3008 PCI-Express Fusion-MPT SAS-3 (rev 02)
Check firmware & mode:
./sas3flash -listall
./sas3flash -c 0 -list
./sas3flash -c 1 -listSample output:
Adapter Selected is a LSI SAS: SAS3008
Firmware Product ID: 0x2221 (IT)
Firmware Version: 16.00.12.00✅ IT mode required (not IR)
✅ Firmware version e.g. 16.00.12.00
./sas3flash -c 0 -o -e 6
./sas3flash -c 1 -o -e 6-e 6→ clean flash (preserves manufacturing data)-e 7→ full erase (use with caution)
Without BIOS ROM (recommended for TrueNAS/Proxmox):
./sas3flash -c 0 -o -f SAS9300_16i_IT.bin
./sas3flash -c 1 -o -f SAS9300_16i_IT.binWith BIOS ROM (optional):
./sas3flash -c 0 -o -f SAS9300_16i_IT.bin -b mptsas3.rom -b mpt3x64.rom
./sas3flash -c 1 -o -f SAS9300_16i_IT.bin -b mptsas3.rom -b mpt3x64.romFlags explained:
-c <num>→ target controller (0 or 1)-o→ perform operation-f <file>→ firmware file-b <file>→ BIOS ROM file
Verify:
./sas3flash -listallConfirm both controllers show IT mode and the latest firmware.
- Format a USB stick as FAT32.
- Place
bootx64.efion it under/efi/boot/. - Disable Secure Boot temporarily.
- Boot to the UEFI Shell.
- Identify and switch to the USB drive:
You should see your
fs0: dir
.efiand.romfiles. - Run the same
sas3flash.eficommands as above.
Reference:
Follow Proxmox-passthrough-PCI.
This step is optional: Proxmox VE 7+ typically binds PCI devices to vfio-pci automatically when they are assigned to a VM.
lspci -nn | grep -i sasExample:
19:00.0 Serial Attached SCSI controller [0107]: Broadcom / LSI SAS3008 PCI-Express Fusion-MPT SAS-3 [1000:0097] (rev 02)
1b:00.0 Serial Attached SCSI controller [0107]: Broadcom / LSI SAS3008 PCI-Express Fusion-MPT SAS-3 [1000:0097] (rev 02)
🔹 Quick verification:
lspci -k | grep -A3 -E "19:00.0|1b:00.0"If it shows Kernel driver in use: vfio-pci, the passthrough is ready.
Modify /etc/modprobe.d/vfio.conf, add:
options vfio-pci ids=1000:0097 disable_vga=1
Modify or create /etc/modprobe.d/blacklist.conf, add:
blacklist mpt3sas
blacklist ahci
update-initramfs -u -k all rebootlspci -k | grep -A3 -E "19:00.0|1b:00.0"Expected:
Kernel driver in use: vfio-pci
- Disable Start at boot for the TrueNAS VM.
- Power off the host.
- Move SATA cables from motherboard ports to HBA (Mini-SAS → SATA).
- Power on the host.
- Verify HBA is detected:
lspci | grep -i sas - In the Proxmox GUI:
- VM → Hardware → Add → PCI Device
- Select
Raw device - Select the desired SAS controller(s)
- Options:
- ✅ All Functions
- ⬜️ ROM-Bar Off (only if passthrough issues)
- ✅ PCIe (for Q35 machine type)
- Remove any old SATA passthrough entries.
- Boot the VM — drives should appear under the HBA.
- Go to Storage → Pools → Import if pools are not detected automatically.
- Verify datasets, shares, and SMART.
lspci -nn | grep -i sas
# Find your 9300-16i chips (usually 19:00.0 and 1b:00.0)
# Check current negotiated link width/speed per chip
lspci -s 19:00.0 -vv | grep -i "LnkSta:"
lspci -s 1b:00.0 -vv | grep -i "LnkSta:"
# Optional: check maximum capability
lspci -s 19:00.0 -vv | grep -i "LnkCap:"
lspci -s 1b:00.0 -vv | grep -i "LnkCap:"- Negotiated Width = lanes currently active (x4/x8)
- Capable Width = maximum the slot/controller supports (x8/x16)
sas3ircu list
sas3ircu 0 display # Chip 0
sas3ircu 1 display # Chip 1- No need to export/import ZFS pools when reusing the same TrueNAS VM.
- Back up TrueNAS config: System → General → Save Config.
- 9300-16i runs hot — maintain good airflow; keep temps < 70 °C.
- Lane requirements:
- PCIe 3.0 ×8 = full bandwidth
- Works in ×4 slots but reduced throughput
- Fine for HDDs; use ×8 for SSD arrays