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.

1 Like

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