Skip to content

Instantly share code, notes, and snippets.

@buswedg
Created August 2, 2024 22:55
Show Gist options
  • Save buswedg/f94a7978b07c1976e81e6d456ec37853 to your computer and use it in GitHub Desktop.
Save buswedg/f94a7978b07c1976e81e6d456ec37853 to your computer and use it in GitHub Desktop.

Lenovo 430-x HBA Firmware/BIOS Update

What?

Guide on how to update the firmware and BIOS of a Lenovo ThinkSystem 430-x SAS/SATA 12Gb HBA.

References

Steps

  1. Download the latest STORCLI utility for LSI SAS3.5 Controllers per the reference above.
  2. Download the latest HBA (Windows) driver package per the reference above.
  3. Extract the packages to a folder on your local (Windows) machine.
  4. Copy the relevant files to a FAT32 formatted USB, for example:
    • storcli.efi
    • 16i_24_00_07_00.fw
    • mpt35sas_x64_24_00_05_00.rom
    • mpt35sas_legacy_9_47_03_00.rom
  5. Boot to the USB via EFI shell.
  6. Identify the relevant (cX) HBA:
    storcli.efi show all
  7. Confirm the relevant HBA:
    storcli.efi /c0 show
  8. Backup STORCLI output to the USB:
    storcli.efi /c0 show all > backup\output.txt
  9. Backup current controller bios, firmware etc. to the USB:
    storcli.efi /c0 get bios file=backup\bios
    storcli.efi /c0 get firmware file=backup\firmware
    storcli.efi /c0 get mpb file=backup\mpb
    storcli.efi /c0 get fwbackup file=backup\fwbackup
    storcli.efi /c0 get nvdata file=backup\nvdata
    storcli.efi /c0 get flash file=backup\flash
  10. Update the firmware:
    storcli.efi /c0 download file=16i_24_00_07_00.fw
  11. Update the EFI BIOS:
    storcli.efi /c0 download efibios file=mpt35sas_x64_24_00_05_00.rom
  12. Update the BIOS:
    storcli.efi /c0 download bios file=mpt35sas_legacy_9_47_03_00.rom
  13. Check HBA versions have updated:
    storcli.efi /c0 show
  14. Power cycle the machine.
@WarmWelcome
Copy link

@dgaglioni Glad we could help :)

@jenesuispasbavard
Copy link

jenesuispasbavard commented Sep 28, 2024

Thanks @buswedg and @WarmWelcome !

Based on what you guys shared I could crossflash my 430-16i with 9400 firmware and now it supports NVME (with the compatible cable (link)).

Before:

Capabilities :

Supported Drives = SAS, SATA Enable JBOD = Yes Max Parallel Commands = 9216 Max SGE Count = 128 Max Data Transfer Size = 32 sectors Max Strips PerIO = 0 Max Configurable CacheCade Size = 0 Min Strip Size = 512Bytes Max Strip Size = 512Bytes

After:

Capabilities :

Supported Drives = SAS, SATA, NVMe Enable JBOD = Yes Max Parallel Commands = 6144 Max SGE Count = 128 Max Data Transfer Size = 32 sectors Max Strips PerIO = 0 Max Configurable CacheCade Size = 0 Min Strip Size = 512Bytes Max Strip Size = 512Bytes

Hey, I'm also interested in enabling NVMe support on my Lenovo 430-16i; just curious what firmware and BIOS you flashed?

Right now I have, from Lenovo's lnvgy_fw_storehba_mpt3.5.430-24.05.00.00-2-a_windows_x86-64.exe driver package and Broadcom/LSI's 9400_16i_Pkg_P24_SAS_SATA_NVMe_FW_BIOS_UEFI.zip firmware package:

  • 16i_24_00_07_00.fw from Lenovo
  • HBA_9400-16i_Mixed_Profile.bin from Broadcom/LSI
  • mpt35sas_x64_24_00_05_00.rom and mpt35sas_legacy_9_47_03_00.rom from Lenovo
  • mpt35sas_x64.rom (one signed and one unsigned) and mpt35sas_legacy.rom from Broadcom/LSI

Just wondering which firmware and .rom's you used.

Edited 10 hours later: I used HBA_9400-16i_Mixed_Profile.bin, mpt35sas_x64.rom (unsigned), and mpt35sas_legacy.rom all from Broadcom/LSI's 9400_16i_Pkg_P24_SAS_SATA_NVMe_FW_BIOS_UEFI.zip firmware package, and I now see "SAS, SATA, NVMe" instead of just "SAS, SATA" under Supported Drives at the end of storcli.efi /c0 show all! Now we wait for the U.2 enabler cable and hope it works lol.

@ForsakenRei
Copy link

Mine just arrived today, will give it a try probably tomorrow. Glad to see it's actually cross flashable with 9400 firmware even NVMe drive is not what I'm planning to use for now.

@dgaglioni
Copy link

Edited 10 hours later: I used HBA_9400-16i_Mixed_Profile.bin, mpt35sas_x64.rom (unsigned), and mpt35sas_legacy.rom all from Broadcom/LSI's 9400_16i_Pkg_P24_SAS_SATA_NVMe_FW_BIOS_UEFI.zip firmware package, and I now see "SAS, SATA, NVMe" instead of just "SAS, SATA" under Supported Drives at the end of storcli.efi /c0 show all! Now we wait for the U.2 enabler cable and hope it works lol.

Correct I just used the latest firmware from Broadcom using mixed profile and booted EDK2 uefi shell (link) to run the storcli.efi and execute the commands above to crossflash.

@jenesuispasbavard glad you figured it out.

@jenesuispasbavard
Copy link

Edited 10 hours later: I used HBA_9400-16i_Mixed_Profile.bin, mpt35sas_x64.rom (unsigned), and mpt35sas_legacy.rom all from Broadcom/LSI's 9400_16i_Pkg_P24_SAS_SATA_NVMe_FW_BIOS_UEFI.zip firmware package, and I now see "SAS, SATA, NVMe" instead of just "SAS, SATA" under Supported Drives at the end of storcli.efi /c0 show all! Now we wait for the U.2 enabler cable and hope it works lol.

Correct I just used the latest firmware from Broadcom using mixed profile and booted EDK2 uefi shell (link) to run the storcli.efi and execute the commands above to crossflash.

@jenesuispasbavard glad you figured it out.

Success! Thanks for the instructions @buswedg and the cross-flashing experimentation @WarmWelcome and @dgaglioni

image

@suicidaleggroll
Copy link

I just used this process to update the firmware on my 430-16i. Some notes:

  1. The STORCLI utility is not necessary if you want to update the card from within Windows, everything needed can be found in the package from Lenovo
  2. When trying to download the "Payload Package" from Lenovo (thank you VERY much for that link BTW), the first time you click the Download button it will pop up a "Check Compatibility" window. This will not work, I think Lenovo is looking for the serial number of their all-in-one storage server, it does not recognize the serial number of the 430-16i card itself, so don't bother trying. Instead, just click Cancel and then click the Download button again, the second time it should download the file without popping up that window.
  3. When you open the .exe package from Lenovo, just tell it to extract the contents to a directory.
  4. Open a Windows Command Prompt with Administrator privileges, and cd into the directory where you extracted the Lenovo package. From here, all of the commands in the original post will work verbatim, just swap storcli.efi for storcli64.exe. Everything else is the same.

I used this process to upgrade the firmware on my 430-16i from 09.00.07.00 to 24.00.07.00, which fixed the numerous I/O errors I was getting on all connected drives when I first tried using the HBA. Thank you very much for this post.

@incith
Copy link

incith commented Oct 25, 2024

For the life of me I could not get an efi shell to start on an older asrock b365m pro4 consumer board.

So I used lsi storage authority...hit update firmware in there and selected the 24.x file, it said it failed, I rebooted, it did not fail, I can use my ssds now. Many thanks to you all the same.

Edit: I also just used storcli64.exe /c0 download file=blahblah.fw right from windows to change to a fw that lsi storage authority wouldn't install.

@bitpushr
Copy link

Just wanted to pop in here and say a massive thank you to everyone in this thread, OP and alike.

I bought a new 9400-16i and unknowingly got the Lenovo variant on an ancient firmware and had spent over 4 hours attempting to either at least get it updated or (preferably) cross-flashed to be a regular 9400-16i. After trawling through Reddit posts, TrueNAS Forum links, ServeTheHome posts and various other parts of the internet I had a go at some trial and error with the UEFI Shell methods, failed, and resolved to just installing LSI Storage Authority and managed to get it updated to the very latest Lenovo firmware, BIOS and EFI, which I was happy and resolved to doing. I wasn't able to flash non-Lenovo firmware onto the drive via LSI SA as it'd fail with an error, but I was mostly happy to no longer be running 11.x firmware on the card (especially considering how much newer the latest version is).

I did one more search and came across this thread, gave it a read, and using the bootable/ISO UEFI Shell provided above by dgaglioni I was able to cross-flash it to the latest 9400-16i 24.x firmware, the latest 9.47 BIOS version and the latest EFI version as well. After reinstalling it back into my NAS and confirming it's also running the latest/correct driver version (43.1), I now have "Supported Drives = SAS, SATA, NVMe" listed under the 'Capabilities' section when running storcli /c0 show all.

Much thanks!

@webermar
Copy link

Hello,
just wanted to add to this nice post about flashing the 430-16i card.

Because I had no luck finding the official Broadcom(ex Avago) Firmware anywhere (If anyone has a link, it would be very much appreciated!), I'll share how I did it:

First: As already explained, only the storcli utility is needed, it is freely available on broadcom's site and works under linux/windows and in an efi shell.
For firmware, I used the one from Intel for my Lenovo 430 card. Search for "Intel® Storage Adapter RSP3QD160J". It is (optically) the same card as the 430-16i/9400-16i. Downloads are here under "Intel® Storage Controllers (JBOD only)". The actual firmware is here.

But storcli won't let you update the firmware and prints error: "firmware is invalid" when I tried to do so.
To circumenvent this (I DO NOT RECOMMEND THIS!), one can append the "force" parameter like so:
storcli /c0 download file=/path/to/file.bin force
Same procedure for downgrades btw, use:
storcli /c0 download file=/path/to/file.bin noverchk

I still have to test if there are any issues with using mixed firmware and mixed devices, but server boots normal and storcli /c0 show all output seems to be ok, reports NVMe capability.

@bitpushr
Copy link

Because I had no luck finding the official Broadcom(ex Avago) Firmware anywhere (If anyone has a link, it would be very much appreciated!)

https://forums.servethehome.com/index.php?threads/just-got-a-new-lsi-9400-16i-how-to-flash-firmware.37003/

This thread pointed me to this downloads page: https://www.broadcom.com/support/download-search?pg=Storage+Adapters,+Controllers,+and+ICs&pf=Legacy+Host+Bus+Adapters&pn=HBA+9400-16i+Tri-Mode+Storage+Adapter&pa=&po=&dk=&pl=&l=true

Make sure the "Include Legacy Products" box is checked so it appears.

@webermar
Copy link

Make sure the "Include Legacy Products" box is checked so it appears.
Man, this is embarrassing! Now I found it, thank you very much!

INFO: Even with Broadcom 9400-16i (P24) Firmware flashed, I couldn't get a Samsung NVMe drive via SFF8643->SFF8639 (U.2) cable and M.2 to U.2 PCIe Adpater to work. Don't know why, even got strange errors with other PCIe devices in my MoBo (AsRock B450M Pro4).
Maybe it works with other setups.

@dgaglioni
Copy link

Make sure the "Include Legacy Products" box is checked so it appears.
Man, this is embarrassing! Now I found it, thank you very much!

INFO: Even with Broadcom 9400-16i (P24) Firmware flashed, I couldn't get a Samsung NVMe drive via SFF8643->SFF8639 (U.2) cable and M.2 to U.2 PCIe Adpater to work. Don't know why, even got strange errors with other PCIe devices in my MoBo (AsRock B450M Pro4). Maybe it works with other setups.

As I stated above you need to connect the NVMEs with a compatible cable, these cards do not work with generic SFF8643 to SFF8639 cables due to Broadcom proprietary cable, anyway you can buy a compatible one on Aliexpress, link on my comment above:

https://gist.github.com/buswedg/f94a7978b07c1976e81e6d456ec37853?permalink_comment_id=5208888#gistcomment-5208888

Broadcom genuine:
05-50064-00 or 05-50065-00

https://docs.broadcom.com/doc/12354774

@68kdmd
Copy link

68kdmd commented Nov 18, 2024

@dgaglioni

does the "capability - NVME" not even show up if the NVME is not connected even after a successful flash?

I wasn't sure if my flashing was successful due to showing only sata and sas.

Screenshot 2024-11-17 at 11 37 47 PM Screenshot 2024-11-17 at 11 39 23 PM

@dgaglioni
Copy link

dgaglioni commented Nov 18, 2024

@dgaglioni

does the "capability - NVME" not even show up if the NVME is not connected even after a successful flash?

I wasn't sure if my flashing was successful due to showing only sata and sas.

You need to cross-flash your 430-16i with 9400-16i firmware in order to have NVME support, for some stupid reason Lenovo removed this feature in their firmware.

@68kdmd
Copy link

68kdmd commented Nov 18, 2024

@dgaglioni
does the "capability - NVME" not even show up if the NVME is not connected even after a successful flash?
I wasn't sure if my flashing was successful due to showing only sata and sas.

You need to cross-flash your 430-16i with 9400-16i firmware in order to have NVME support, for some stupid reason Lenovo removed this feature in their firmware.

ah gotcha, i'll give lsi one a go, and report back.

Thanks!

@zenxedo
Copy link

zenxedo commented Nov 20, 2024

But storcli won't let you update the firmware and prints error: "firmware is invalid" when I tried to do so. To circumenvent this (I DO NOT RECOMMEND THIS!), one can append the "force" parameter like so: storcli /c0 download file=/path/to/file.bin force Same procedure for downgrades btw, use: storcli /c0 download file=/path/to/file.bin noverchk

I still have to test if there are any issues with using mixed firmware and mixed devices, but server boots normal and storcli /c0 show all output seems to be ok, reports NVMe capability.

Any issues so far? I'm tempted to do the force flash. I was able to update using the Lenovo firmware but get the firmware image invalid with the (P24) version

Notes for others:
Simply running storcli.efi /c0 download file=HBA_9400-16i_Mixed_Profile.bin on Linux will give you an error saying it can’t read the .bin file.

You have to use the efi mode or

storcli /c0 download file=HBA_9400-16i_Mixed_Profile.bin force

@webermar
Copy link

Any issues so far? I'm tempted to do the force flash. I was able to update using the Lenovo firmware but get the firmware image invalid with the (P24) version

Notes for others: Simply running storcli.efi /c0 download file=HBA_9400-16i_Mixed_Profile.bin on Linux will give you an error saying it can’t read the .bin file.

You have to use the efi mode or

storcli /c0 download file=HBA_9400-16i_Mixed_Profile.bin force

I had no issue so far with a crossflashed Lenovo 430-16i with latest P24 Broadcom/LSI firmware. But as mentioned above, presumably because of the missing right/genuine cable couldn't get NVMe drives to work.

NOTE: For force flashing, you need to use a more recent version of storcli. I had the same issue using storcli P24 and could get it force flashed (via Linux shell on host) using storcli P32.

@hasechris
Copy link

@dgaglioni

do you maybe have a newer, still functioning link to a broadcom cable on ali? your old links are not working anymore and i could not find any on ali.

@dgaglioni
Copy link

@dgaglioni

do you maybe have a newer, still functioning link to a broadcom cable on ali? your old links are not working anymore and i could not find any on ali.

For me it still works (link)

@hasechris
Copy link

hm

@dgaglioni
do you maybe have a newer, still functioning link to a broadcom cable on ali? your old links are not working anymore and i could not find any on ali.

For me it still works (link)

Opening this link gives me this image for a second, then the second image after loading properly. Sad.
image

image

@dgaglioni
Copy link

Opening this link gives me this image for a second, then the second image after loading properly. Sad.

aliexpress.com/item/4000758187693.html

try only this url.

@hasechris
Copy link

hasechris commented Nov 28, 2024

hm sad. Thats also not working for me. Also tried it while being logged into my account. @dgaglioni how much do these cables cost on ali?

@incith
Copy link

incith commented Nov 28, 2024

Why are you all making this so hard. Search 8643 sas cable on Amazon.

@dgaglioni
Copy link

Why are you all making this so hard. Search 8643 sas cable on Amazon.

It won't work

@incith
Copy link

incith commented Nov 28, 2024

https://a.co/d/fe6ulfi

Literally the same thing but using sata instead of molex. Good reviews. I am curious why you think it wouldn't work?

@incith
Copy link

incith commented Nov 28, 2024

Based on the product information, CableDeconn SFF-8643 Internal Mini SAS HD to (4) 29pin SFF-8482 connectors with SAS 15pin power port 12GB/S Cable supports Broadcom controllers. Customers use this cable with LSI Broadcom SAS 9300-8i SATA/SAS Host Bus Adapter and 12G LSI cards.

@webermar
Copy link

https://a.co/d/fe6ulfi

Literally the same thing but using sata instead of molex. Good reviews. I am curious why you think it wouldn't work?

I tried it with no-noname (Delock) cables and Startech adapter. I don't know why exactly but it won't work. Presumably something to do with how the pcie-lanes are handed over.

The "cheap" cables are meant for non-raid cards which essentially are adapters from pcie-slot -> sff-8643 and similar. This way, no pcie-lanes must be negotiated with a controller.

@incith
Copy link

incith commented Nov 28, 2024

It's $13. Just try it. Return it if it doesn't work?

Seems like you could potentially save yourself a lot of hassle here.

Anyway, good luck.

@dgaglioni
Copy link

aliexpress.com/item/4000758187693.html

27 USD

Try googling:

2SFF8643 to 2SFF8639 12Gb/NVMe MiniSAS HD to U.2 80CM Cable Length 20CM Large 4Pin PowerLine For Broadcom 94xx HBA/RAID Card

Try other browser than Chrome as well.

@dgaglioni
Copy link

https://a.co/d/fe6ulfi

Literally the same thing but using sata instead of molex. Good reviews. I am curious why you think it wouldn't work?

With the cables I mentioned above you can connect U.2 NVMEs on a 94XX controller, the ones you mentioned are for SATA/SAS disks.

https://www.broadcom.com/support/knowledgebase/1211219217821/nvme-cables-and-information-

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment