How-to Guide Rescue bricked LSI/Oracle F80/F40 WarpDrive and flash them to IR/IT mode

I was flashing my Oracle F80 WarpDrive today and suddenly the drive disconnected and my the SSD raid controller was locked inside the update mode, so I have to get it out from it. After many hours of forum searching and USB boot drive later I was able to rescue my drive(or the controller) and I'm now going to share with everyone my experience.

Before we go further in, just a bit of disclaimer, I'm not a professional at this and everything I done here involves losing your data, so be very careful what you are doing as many of the tool that we'll be using are interfacing with the low level hardware.

If you suspect your drive(controller) is bricked, here's the symptom you need to check for(this is how my drive were):
  • lsiutil, ddcli and sas2flash does not recognize the controller
  • lspci show your card online and lsirec can interact with your card
  • No LED light on the card
And if you tried to do the following with lsirec, the following error report:
>./lsirec 0000:xx:00.0 reset
IOC failed to become ready
If these symptom matches your drive, then your rescue rate are very high since is just a bricked SAS controller, not the SSD itself.

Here's some tools you'll need:
- LSIUtil, LSIRec, DDCli and IR/IT firmware (I'll assume you have those since this is probably how you bricked your SSD, i don't know about you but that's how I did it :( .)
- LSI 9211-8i firmware (both for IR and IT)
- Next door neighbor shnax's post from serverbuilds.net on how to flash them into IR/IT. Post Here

I'm running all the tools on Ubuntu 20.04, I can't find a way to get LSIRec run on Windows, if you are a Windows admin you might need to find your linux live usb to do this.

You also need to disable IOMMU during the rescue process and enable HugeTLB.

To check if you have IOMMU enabled, if the directory /sys/kernel/iommu_groups is not empty that means you have it enabled.

To enable HugeTLB, run this command:
echo 16 > /proc/sys/vm/nr_hugepages
Rescue Time!

1. First by checking your PCI ID using lspci | grep LSI, mine is 0000:03:00.0 so this will be the PCI ID I'll be using for the reset of the guide. Be sure to change it to yours when you run it!

2. Extract 9211's IT/IR firmware, the file you extracted should named something like 2118ir.bin/2118it.bin

3. Use the host to boot the controller using LSIRec:
./lsirec 0000:03:00.0 hostboot 2118ir.bin
If you receive message like IOC is FAULT, that means you have loaded the wrong firmware.

If you do not see a error, your SSD's LED should be flashing again, but one of them should be red, telling you the drive have an error, this is normal, we will be fixing it next.

4. Use LSIRec, flash the IR/IT firmware patch and the new patched SBR file onto the SSD (Shnax's post has more in-depth instruction on this. Order is important, firmware first, sbr file second.)

5. Reboot

6. Once rebooted, the SSD should still have an red LED indicating the drive have a problem, but this time lsiutil and ddcli should be able to see them.
Run ddcli, your drive should appear:
   Seagate WarpDrive Management Utility
   Version (2015.11.09)
   Copyright (c) 2015 Seagate Technologies LLC. All Rights Reserved.

ID    WarpDrive     Package Version    PCI Address   
--    ---------     ---------------    -----------   
1     NWD-BLP4-800        00:03:00:00
select your drive(in this case I type 1) and format it(operation number 5):
Perform-overprovisioning? Yes
Select 2. Nominal over provisioning
Enable Flash Media Erase? No
7. Reboot for the final time and your drive should be picked up by your OS and your drive has been rescued!
First release
Last update
0.00 star(s) 0 ratings