How to Flash an LSI HBA into IT Mode (with UEFI Shell v1 and Other Gotchas)
Flashing an LSI HBA to IT Mode in 2025: the Real-World, Hands-On Guide I Wish I’d Had
TL;DR: If your LSI/Avago/Broadcom SAS2308 (e.g., 9207-8i/9208-8i/9211-8i) card refuses to see drives or shows “0 B” ghosts, you probably need IT mode P20. The gotcha: the classic
sas2flash.efi
only works from a UEFI Shell v1, not v2—boot a TianoCore UEFI Shell v1 (link below) as\EFI\BOOT\BOOTX64.EFI
and the flasher will finally run. Also, don’t trust passive VGA→HDMI “converters” during setup—use real VGA or an active adapter so you can see the shell.
Why I ended up here (and why you might, too)
I was adding new large SATA HDDs (20 TB Ultrastar HC560) to a TrueNAS box with a freshly acquired LSI 9208-8i HBA (SAS2308) in IT mode… or so the listing claimed. The OS saw the controller, but the drives either didn’t show or appeared as 0 B. Classic signs that:
- The card is on IR firmware (RAID) instead of IT (initiator/“HBA” mode), or
- The firmware is too old for modern drives, or
- Cabling/power quirks are interfering.
I decided to (re)flash the card to a known-good P20 (20.00.07.00) IT mode… and discovered a pile of gotchas:
- Passive VGA→HDMI dongles don’t actually convert analog to digital; some UEFI screens just stayed black. A plain VGA monitor made the shell visible again.
- Even with a proper
sas2flash.efi
, launching it from UEFI Shell v2 produces
InitShellApp: Application not started from Shell
.
You need UEFI Shell v1.
Working UEFI Shell v1 binary:
- TianoCore (EDK2 UDK2014) “MinimumShell” x64:
https://github.com/tianocore/edk2/blob/UDK2014/ShellBinPkg/UefiShell/X64/Shell.efi
(Rename toBOOTX64.EFI
and place at\EFI\BOOT\
.)
Helpful forum walk-through (notes the v1 requirement):
- TrueNAS community:
https://www.truenas.com/community/threads/how-to-flash-lsi-9211-8i-using-efi-shell.50902/
What you’ll need
- An LSI/Avago/Broadcom SAS2308 HBA (e.g., 9207-8i/9208-8i/9211-8i).
- A USB stick formatted FAT32.
- A UEFI Shell v1 binary (
BOOTX64.EFI
) — see link above. - A good
sas2flash.efi
(the actual UEFI flasher; not DOS; not Linux). - The IT firmware for your card (e.g.,
9208IT.bin
or9207-8.bin
). - (Optional)
mptsas2.rom
if you want the card to be bootable. For TrueNAS data HBAs, you can skip the ROM.
⚠️ Risk disclaimer: Flashing firmware always has risk. Power the machine from a UPS, disconnect other HBAs, and make sure you’re flashing the correct controller.
Step 0 — Sanity checks before you flash
- Cabling: If using SATA drives, you need forward SFF-8087→4×SATA breakout cables (controller→drives). Reverse cables won’t work.
- Drive type: SAS ↔ SATA mismatches need the right cables (SAS drives need SFF-8482).
- Power/PWDIS: New enterprise SATA drives often implement PWDIS on SATA power pin 3. If your PSU supplies 3.3 V on pin 3, the drive won’t spin. Use Molex→SATA (no 3.3 V), PWDIS-safe cables, or cover pin 3 with Kapton tape.
Step 1 — Prepare a bootable UEFI Shell v1 USB
- Format the USB FAT32. On older boards, MBR + FAT32 tends to be the least fussy.
- Create the path
\EFI\BOOT\
and place the UEFI Shell v1 binary there as:\EFI\BOOT\BOOTX64.EFI
- Copy these to the root of the USB:
\sas2flash.efi (UEFI version) \9208IT.bin (or 9207-8.bin, depending on your card) \mptsas2.rom (optional)
If you boot and see UEFI Shell v2.x, you grabbed the wrong shell. Use the v1 shell from the link above.
Step 2 — BIOS settings & display caveat
- In BIOS, set Launch Storage OpROM Policy to UEFI (or “UEFI first”) so the system will run
BOOTX64.EFI
. - Use a real VGA monitor or an active VGA→HDMI converter. Passive adapters often yield a black screen in UEFI graphics modes.
Step 3 — Boot into the UEFI Shell v1 and verify you can run the flasher
- Boot from the USB’s UEFI entry (e.g., “UEFI:
”). - At the shell prompt:
(Tryfs0: dir
fs1:
,fs2:
if needed until you see your files.) - Test the flasher:
You should see controller info.sas2flash.efi -list
If you getInitShellApp: Application not started from Shell
, you’re not in Shell v1 (or you have the wrongsas2flash.efi
).
Step 4 — Flash to IT mode P20
If your card is OEM-locked (Dell/IBM/HP), you might need an extra erase step (
-e 6
) before flashing. Don’t interrupt power during any step.
Typical clean sequence:
# See current state
sas2flash.efi -list
# (Optional but common) Erase flash regions
sas2flash.efi -o -e 6
# Flash IT firmware (choose the right .bin for your card)
sas2flash.efi -o -f 9208IT.bin
# (Optional) Also flash BIOS ROM if you need to boot from the HBA
# sas2flash.efi -o -f 9208IT.bin -b mptsas2.rom
# Verify
sas2flash.efi -list
You want to see:
- Firmware Product ID: IT
- Firmware Version: 20.00.07.00
If you have multiple LSI controllers installed, add -c 0
(or -c 1
) to target the right one, e.g. sas2flash.efi -c 0 -list
.
Step 5 — Reboot and confirm in your OS
Back in TrueNAS (or Linux):
dmesg | grep -i mpt3sas
lsblk
# or on SCALE, check /dev/disk/by-id/
You should see your SATA/SAS drives with full capacity (no more 0 B ghosts). If you don’t:
- Re-check cables (forward breakout vs reverse).
- Re-check power/PWDIS (use Molex→SATA, or tape pin 3).
- Try a single drive directly on the HBA to isolate cabling/backplane issues.
Troubleshooting nuggets I learned the hard way
-
UEFI Shell v1 is non-negotiable for
sas2flash.efi
. The v2 shell will throw the dreaded
InitShellApp: Application not started from Shell
.
Use this v1 shell:
https://github.com/tianocore/edk2/blob/UDK2014/ShellBinPkg/UefiShell/X64/Shell.efi -
Passive VGA→HDMI ≠ converter. It can show some text modes but blank others (like the shell). Use real VGA or an active converter.
-
PWDIS (SATA power pin 3) can make brand-new enterprise SATA disks look dead. If a drive doesn’t even spin, block 3.3 V on pin 3 (tape), or power it from Molex.
-
Forward vs reverse breakout matters. For HBA → drives you need forward SFF-8087→SATA. A reverse cable will not enumerate drives.
Alternative paths (if UEFI Shell v1 is too fussy)
- FreeDOS method: Create a FreeDOS USB and use
sas2flsh.exe
(DOS). It works on many systems, but can be finicky on machines with lots of RAM. - Another host: Pop the HBA into a newer UEFI PC or server, flash there (using Shell v1), then move it back.
Closing thoughts
Flashing an LSI HBA in 2025 is still totally doable—but the “secret sauce” is booting a UEFI Shell v1 and using a proper UEFI sas2flash.efi
. Once you’ve got those two right, the rest is straightforward. From there, TrueNAS + ZFS will treat your HBA like the dumb, reliable pipe it’s supposed to be.