Knowledge Base

Preserving for the future: Shell scripts, AoC, and more

Flash PERC for drive passthrough

I recently purchased a used Dell PowerEdge T320 with a PERC H710 raid controller. This raid controller model does not provide drive pass-through as an option in the firmware, but I had chosen my hardware carefully because there is a way to flash the raid controller to allow drive passthrough.

Following the process from References 2 and 3 was straightforward! I will replicate the instructions here in abbreviated form in case upstream dies.

Instructions from fohdeesha.com

Ensure there is only one LSI-based adapter in your system. If there are others besides the adapter you intend to flash, remove them! You also need to disable a few BIOS settings. This step is not optional. In your server BIOS, disable all of the following:

Processor Settings > Virtualization Technology
Integrated Devices > SR-IOV Global Enable
Integrated Devices > I/OAT DMA Engine

Note: If you're flashing a full size card on a non-Dell system, such as an AMD based desktop or server, make sure you find any BIOS settings related to IOMMU and Virtualization, and disable them

You also must set the server boot mode to BIOS, not UEFI:

Boot Settings > Boot Mode > Set to BIOS

When you're finished with this guide, don't forget to go back and enable Virtualization, as well as SR-IOV if you plan to use it. Switch boot mode back to UEFI as well if you were using it previously. But only once you've finished the guide!

Remove the RAID battery from the adapter. The IT firmware has no cache for the battery to back, in fact the IT firmware will have no clue the battery is there if you leave it connected. To make matters worse, in rare cases some people observed the battery holding old Dell code in the card's RAM and it made their crossflash process a pain. Just unplug/remove the battery and store it somewhere in case you return to Dell firmware.

Download the Dell Perc Flashing ZIP (md5sum 42a87bd496f6d2e3aa1d8f2afe3cc699, version 2.1 last updated 2022-04-08).

Boot to the FreeDOS iso image flashed to a flash drive. Ensure that this command:

C:\>info

Returns the right values:

Product Name    : PERC H710 Mini
ChipRevision    : D1
SAS Address     : [whatever; save this value]

For example, a SAS address looks like 5b83a730cf784b32.

Now the instructions continue for this model card on page H710, and below here in this post.

Cleaning the card

Still in FreeDOS, run the following command to wipe the flash on the card and get rid of all Dell firmware. This will also flash the required SBR:

BIGD1CRS

Follow the prompts. If it finishes without error, it's time to reboot into Linux. Get the Linux live ISO from the ZIP ready to boot from, then tell FreeDOS to reboot:

reboot

Linux Time

You should now be booted into the Linux ISO from the ZIP. Use the following credentials to login: user/live

We highly recommend SSH'ing to the live ISO so you can copy/paste commands and not have to use the iDRAC virtual console. To do so, run the following to find the IP of the install:

ipinfo

It should spit out an IP. SSH to it, using the same user/live credentials. This is not required and you can continue on using the iDRAC (or physical) console, but it will be slightly more inconvenient. Flashing IT Firmware

Now, still in Linux, we need to change to the root user:

sudo su -

Now we run the flashing script. Issue the following command to begin the process:

D1-H710

It should automatically do everything required to flash the card. If you don't get any unexpected errors and it completes, we need to reboot and program the SAS address back to finish. See the following note.

Note: For some reason, the very first boot after crossflashing the card will cause a kernel panic - I believe it's iDRAC not letting go of something (I was able to see the card put in a fault state via the debug UART when this happens). This only happens the first reboot after crossflashing. When you boot back into the live ISO and get the panic, either let it reboot itself, or use iDRAC to force a reboot. After that boot back into the live ISO again and all will be well.

Programming SAS address back

Now rebooted back into the live Linux image, just run the following commands, filling in the example address with your own, that you noted down earlier:

sudo su - setsas 500605b123456777

It should succeed without errors. That's it! You can run the following command to get some info about your new card. You should be able to see your SAS address and the same firmware version:

info

    Controller Number              : 0
    Controller                     : SAS2308_2(D1)
    PCI Address                    : 00:02:00:00
    SAS Address                    : 0000000-0-0000-0000
    NVDATA Version (Default)       : 14.01.00.06
    NVDATA Version (Persistent)    : 14.01.00.06
    Firmware Product ID            : 0x2214 (IT)
    Firmware Version               : 20.00.07.00
    NVDATA Vendor                  : LSI
    NVDATA Product ID              : SAS9207-8i
    BIOS Version                   : N/A
    UEFI BSD Version               : N/A
    FCODE Version                  : N/A
    Board Name                     : SAS9207-8i
    Board Assembly                 : N/A
    Board Tracer Number            : N/A

Optional: Boot Images

Note: flashing these can add up to 2 minutes to server boot time if you have a lot of drives. Be sure you need them!

If you need to boot from drives connected to this adapter, you'll need to flash a boot image to it. Otherwise, skip it. This is what gives you the "press blahblah to enter the LSI boot configuration utility" text when the server boots. To flash the regular BIOS boot image:

flashboot /root/Bootloaders/mptsas2.rom

If you want to UEFI boot from drives connected to this adapter, you need to flash the UEFI boot image (the card can have both UEFI and BIOS boot images flashed):

flashboot /root/Bootloaders/x64sas2.rom

You can now ditch the live images and boot back into your normal system.

Optional: Reverting

If for some reason you need to revert back to the stock Dell PERC firmware, that's easy. Boot back into the FreeDOS live image, and run the following command:

BIGD1RVT

That's it! When it finishes, just reboot back to your normal system with the reboot command.

Note: This uses the unmodified latest Dell firmware 21.3.5-0002,A09 extracted from the update EXE found here.

My experience

At one point when flashing the firmware, I ran into an error, 524288. Reference 5 has a suggestion: ensure you power off the system, unplug for at least 20 seconds, and also ensure the raid card battery is disconnected.

reboot the server without continuing and try running d1 cross again. make sure you have the battery unplugged from the controller, and remove power from the server for like 20 seconds or so before trying again

References

  1. Found this whole process on reddit
  2. Main flash article
  3. Second part, for H710 D1 full card
  4. Handled 524288 error
  5. Dell Perc Flashing ZIP and my local copy

Comments