Sun Oracle F80 800GB PCIe Flash Accelerator 7069200 - Fixing Incorrect Drive Capacity

Preface

I am by no means an expert at this. I just happened to be able to get mine working by following guides available and with the help of folks on the discord (Thanks @Xodus [US] and @Arex [US]). Post a reply if you see any issues with my guide or if you have any additional information that could help people that come across this problem in the future.

Introduction

Earlier this month (September 2020), a batch of Sun Oracle F80 cards were purchased on ebay and when installed, displayed the individual drives as 2.6TB instead of 200GB. These drives could not be formatted through traditional methods. While troubleshooting, we came across this guide by Kenneth Kasilag for flashing the card into IR mode: https://www.kasilag.me/warpdrive/. This process involves changing device IDs in the SBR, extracting LSI controller firmware from the Seagate Nytro firmware, and then flashing both pieces of the firmware.

By following this guide we were able to get our cards into IR mode, but some of us were now showing a single drive of 1.6TB instead of 800GB. We were able to resolve this by formatting in ddcli with over provisioning. Sometimes it took a few attempts at formatting (with different over provisioning settings) to get the drive to show as 800GB.

We were then able to get the cards back into (working) IT mode by following the exact same process, but this time splitting the IT mode firmware (ELP-4x200-4d-n_13.05.11.01.bin). We didn’t need to modify the device IDs this time, since we already had a backup of the original SBR with correct device IDs.

This guide will outline the entire process in Unraid, however it should be pretty much the same in any OS (you just might need different versions of the tools).

Prep

  • Install Python3 with the Nerd Tools plugin in Unraid

  • I have packaged all the needed tools/firmware into a single zip for convenience, but if you prefer to download from official sources, I have provided links to those as well.

  • Single zip:

  • Individual links:

  • Download and extract files to a directory on your Unraid server

Backup

  • SSH to your Unraid server and navigate to the directory you extracted the files to
  • Run chmod +x ddcli lsirec lsiutil
  • Run lsiutil -e
  • Select your device if you have multiple LSI devices installed. It should say “LSI Logic SSS6200”.
  • Select 46. Upload Flash Section.
    • Then 5. Complete (all sections).
    • Choose a filename for your backup.
  • Exit lsiutil
  • Use lspci -Dvvnn to get the full PCI device ID of your card. It should have “LSI Logic” somewhere in the device name. It should look something like 0000:XX:00.0
  • Run lsirec 0000:XX:00.0 readsbr sbr_backup.bin where 0000:XX:00.0 is your PCI device ID.

Modifying device IDs

  • Run python3 ./sbrtool.py parse sbr_backup.bin sbr.cfg
  • Edit sbr.cfg with a text editor
  • Set:
    • PCIVID = 0x1000
    • PCIPID = 0x007e
    • SubsysVID = 0x1000
    • SubsysPID = 0x0504

For reference, these IDs were obtained from this page: https://pci-ids.ucw.cz/pci.ids

  • Save and close sbr.cfg
  • Run python3 sbrtool.py build sbr.cfg sbr_new.bin

Flashing to IR mode

  • Run lsiutil -e
  • Select your device if you have multiple LSI devices installed. It should say “LSI Logic SSS6200”.
  • Select 33. Erase non-volatile adapter storage
    • Then 3. FLASH
    • Then 1. NVRAM
    • Then 8. Persistent manufacturing config pages (When it asks for board identity filename, just hit enter)
  • Go back to the main menu of lsiutil
  • Select 2. Download firmware (update the FLASH)
  • Enter NWD.split.bin
  • Exit lsiutil
  • Run lsirec 0000:XX:00.0 writesbr sbr_new.bin where 0000:XX:00.0 is your PCI device ID.
  • Stop your array and reboot Unraid
  • Once rebooted, start your array, SSH to your server, and navigate to that same directory
  • Get the card number of your device by running ddcli -listall
  • Run ddcli -c N -updatepkg NWD-BLP4-800_13.00.08.00.bin where N is the number of your card

Formatting with ddcli

  • Run ddcli
  • Select your drive number
  • Select `5. Format WarpDrive’
  • Perform-overprovisioning? Yes
  • Select 2. Nominal over provisioning
  • Enable Flash Media Erase? Yes
  • Confirm and let the drive format

At this point Unraid should be showing a single 800GB drive that can be formatted and mounted in unraid (if this is what you wanted, you are done).

If your drive is showing something other than 800GB, perform the ddcli formatting step again, but this time choose 1. Performance over provisioning. And then do it one more time selecting 2. Nominal over provisioning.

Flashing to IT mode

  • If you by chance mounted your drive in unraid, unmount it
  • SSH to your server and navigate to the directory with the files
  • Run lsiutil -e
  • Select your device if you have multiple LSI devices installed. It should say “LSI Logic SSS6200”.
  • Select 33. Erase non-volatile adapter storage
    • Then 3. FLASH
    • Then 1. NVRAM
    • Then 8. Persistent manufacturing config pages (When it asks for board identity filename, just hit enter)
  • Go back to the main menu of lsiutil
  • Select 2. Download firmware (update the FLASH)
  • Enter ELP.split.bin
  • Exit lsiutil
  • Run lsirec 0000:XX:00.0 writesbr sbr_backup.bin where 0000:XX:00.0 is your PCI device ID.
  • Stop your array and reboot Unraid
  • Once rebooted, start your array, SSH to your server, and navigate to that same directory
  • Get the card number of your device by running ddcli -listall
  • Run ddcli -c N -updatepkg ELP-4x200-4d-n_13.05.11.01.bin where N is the number of your card

At this point, Unraid should be showing 4 200GB drives that can be formatted and mounted in Unraid. If your drives are showing something other than 200GB, you can try formatting in ddcli, but we’ve found that that usually needs to be done in IR mode to be successful.

5 Likes

Thanks for this little guide and the file sources. I had successfully reached the 800gb IR mode but stopped there… this was the final step I needed to get the 4x 200gb drives.

1 Like

Very helpful guide, thanks!

I’m getting an error mmap bar1: Operation not permitted that I can’t figure out how to get around. I’ve attached screenshots of my lspci -Dvvnn command which confirms my PCI ID as 0000:01:00.0. Running as root, tried without root too, but same error. Any help would be greatly appreciated!


Is this in unraid?

Sorry I should have specified. Not unraid, it’s Ubuntu 20.04 Server.

You shouldn’t need to, but you could try compiling lsirec yourself.

Unfortunately I have no idea how to do that :frowning:

Just confirming that these instructions worked perfectly on a 6.3-3 Proxmox host with no tweaks other than to remember to add the local path ./ to any locally run executables.
I tried it in a Debian VM but it didn’t seem to like the passthrough of the F80.

1 Like

Thanks for the great write up, I wanted to put my card back in IT mode, now that I’m using it in a different server, this is exactly the data I needed!

1 Like

Where am I able to find the F40 files?
Thanks in advance!

When running the command:
python3 ./sbrtool.py parse sbr_backup.bin sbr.cfg

I got the following error:
WARNING: SAS address checksum error

I probably should have stopped here but I did continue and I didn’t get any other errors until I got to the Formatting stage (where I thought I was home dry) but no such luck, the format keeps failing with the following error:

"Media Erase option is selected. Please DO NOT ABORT the command.
…Seagate WarpDrive Management Utility: IocStatus = 4 IocLogInfo = 0

ERROR: WarpDrive could not be brought in usable state."

Any idea’s??

I’m pretty sure the SAS address error is expected.

What over provisioning setting are you doing on the format?

Hi,

I missed a trusted source for the NWD.split.bin file. Back at https://www.kasilag.me/warpdrive/ I found an instruction.
Here are the commands I used to extract the firmware:

Dump the bin-file to a continous hex-dump and grep the required part:

$ xxd -p NWD-BLP4-800_13.00.08.00.bin | tr -d '\n' | grep -ioP '000000EA5AA5FA5A.*5AA5EA5A4BFFF008' > NWD-BLP4-800_13.00.08.00.bin.firm1.hex

Convert the extracted part from hex, back to a binary:

$ xxd -r -p NWD-BLP4-800_13.00.08.00.bin.firm1.hex NWD-BLP4-800_13.00.08.00.bin.firm1

And finally check we were on the right track:

$ sha1sum NWD-BLP4-800_13.00.08.00.bin.firm1
7f515610e0c51e47d2dc797b46145541152c75d7  NWD-BLP4-800_13.00.08.00.bin.firm1

Yes, writing those last lines, I realize, I could just have checked the checksum of the NWD.split.bin in the zip-file.
However, if the zip-file ever gets lost in the depth of the internet or there is a new version, this might speed up the future reader. :slight_smile:

Thanks for all your work! I’ll receive my card next week and can’t await it.

Regards
wuermchen

I’m slot poor on my motherboard. Has anyone popped the SSDs off this card? Are they just SAS? I have an Areca SAS RAID 8 port controller connected to external box with just 4 HDDS in it and I’d love to use other 4 ports for F80 SSDs. I’d even get PCIE 3.0 instead of the 2.0 on the LSI card using the Areca.

No, they are not just SAS. Removing them will not net you anything usable.

I borrowed an F40 from extra stock at work. Could someone post the SHA values for the two new ROMS to be flashed to F40. I’m handy with hex editors, but ya know… measure twice cut once!

I used ELP-4x100-4d-n_13.05.10.01.bin and think that is the last/latest one.

found this… cheapest I’ve seen on F80 right now. hope they actually have them in stock :slight_smile:

https://www.atrincreamt.com/index.php?main_page=product_info&products_id=94016

$1 more on ebay and you get PayPal buyer protection.

1 Like

Hello All, First off I am the 1st to admit I am a *nix noob… I am doing this purely for fun and learning as opposed to my daily IT work which is not *nix related…but I am learning :wink:

I am also getting the mmap bar1: operation not permitted error.
I was on Ubuntu 20.04 but I also have tried older Ubuntu as well as other distros.
I researched and have already tried adding iomem=relaxed to my Env variables.

any insight or assistance would be greatly appreciated.

C.