Flashing the Dell Perc H310 with an IT firmware

So I’ve just grabbed a Dell H310 off of fleabay as part of my new server build.  First challenge is to figure out how to flash it with an IT firmware, so that I can use it as a controller card for a virtualised file server.

The Perc H310 is a sas2008 based card, and importantly, its a 6Gbps card, which means it should last me through multiple iterations of my usual server upgrade schedule (every 2 or so years).  With any luck, it’ll last me to the stage where terrabyte-sized SSDs are affordable enough for home use 🙂

Here’s a link to the spec sheet from Dell.  As you can see, even without flashing its a decent looking card, supporting a whole lot of RAID setups including 5 and 50.  However, all that isn’t much use to me, as I’m a big fan of software RAID, on the basis that if a motherboard or disk controller fails, I can transplant just the drives into a different machine and at least have short-term access to my data.  Besides, I want to go with zfs this time – the filesystem-level checksums and data integrity are very attractive.

So, plugging it in, and on the first boot I check the controller BIOS which says:

Product Name:  PERC H310 Adapter
Package: 20.10.2-0002
FW Version: 2.120.14-1504
BIOS Version: 4.29.00_4.12.05.00_0x05110000
Boot Block Version: 2.02.00.00-0001
Security Capable: No
Controller ID: 0
PCI Bus: 0x02
PCI Device: 0x00
PCI Function: 0x00
PCI Slot ID: 0x04

All good, the card works.  So after hunting around for write-ups, I found a couple of posts in forums on the topic.

Johnodon’s post here on the unRAID forums indicates it can be done, and it refers to a write up on.. OCAU by Stanza; good to see the locals in play!

So after piecing those together, and a bit of experimenting, here’s the steps which worked for me:

> sas2flsh -list
uhoh – no controllers detected.  More digging, and it turns up that the Perc 310 is a Megaraid card, so we have to use the LSI megarec commands.
> megarec -adpList
Identified MR cards count: 1
MR Card 0
Type: 2008
Vendor ID: 0x1000, Device Id: 0x73
Slot No: 2, Device Function: 0x0
Success.  We can see the card.  Now the important bit – before we leap into wiping all the data on the card, lets dump out as much as we can, including the SAS address which is globally unique to the card.  Some write-ups I found said stuff like “be ready to hit pause as it scrolls pretty fast”.  Those people obviously didn’t grow up with DOS.. lets just redirect standard out to a file, and read it at our leisure, as well as saving it somewhere retrievable.
> megaoem -adpallinfo -a0 > allinfo.txt
Buried in that file is this bit:
                HW Configuration
                ================
SAS Address      : 5b8ca3a0f2xxxxxx
Ok, time to wipe the BIOS, and then the firmware:
> megarec -writesbr 0 sbrempty.bin
> megarec -cleanflash 0
Now call me paranoid, but I did a cold-boot of the machine at this stage, back into DOS.
Next I flashed the 6Gbps SAS firmware from Dell.  I used the firmware on this page on Dell’s site.  I used the latest one, version 07.03.06.00,A10.
> sas2flsh -o -f 6gbpsas.fw
Initially I added the bios too, so I could have a look and see what options it gives.
> sas2flsh -o -b mptsas2.rom
Then finally I added back the SAS address (from the allinfo.txt file made earlier)
sas2flsh -sasadd 5b8ca3a0f2xxxxxx
And lastly, a cold boot so I could hit Ctrl-C and check out the HBA bios.

Success – all worked just fine.  I’ve since emptied out the bios too, so the host boots faster.  Thats a little easier, as you can use sas2flsh to do it all, and keep the sas address intact.

To erase the card but keep the SAS address, its:

> sas2flsh -o -e 6

Then you can jump back a few lines above to re-flash the 6gbpsas.fw firmware.

Now the painful work starts.. regression testing all the bits of the puzzle I’m trying to assemble, to make sure that in isolation, each virtual machine’s OS will work with the hardware concerned.  I’d like to run either Nexenta, or Nas4free, using the Perc H310, so first stop will be to do a quick test install of Nexenta to see whether it works with this card/firmware.

One last note – I took a comparison power consumption reading of the system with the Perc H310 installed.

Without H310: Idle 30.8W
With H310: Idle 38.8W

(Idle measured at Centos LiveDVD desktop)

My PSU is likely around 75% efficient at these low wattages, so the card on its own is pulling about 6W DC from the system.

More posts on that topic as I go.

10 thoughts on “Flashing the Dell Perc H310 with an IT firmware

  1. Pingback: Flashing LSI 2208 with IT firmware to use as an HBA - My Wired House

  2. Pingback: Cheap home datacentre-quality gear.. Supermicro X9DRH-7F - My Wired House

  3. Pingback: How-to check Queue Depth Of Storage Adapter or Storage Device - ESX Virtualization

  4. Hello,

    The link to Dell is out of date (it’s 2017)

    Happen to have a copy of the file? – “…..I used the latest one, version 07.03.06.00,A10”.

    Thanks. Nice article.

  5. Pingback: LSI 2008 Dell H310 VSAN rebuild performance concerns - Virtual Ramblings

  6. Pingback: Fedora virtualization setup as Xen dom0 | My Wired House

  7. Worked like a charm on a PERC h310.

    Only one minor edit required:
    “Then finally I added back the SAS address (from the allinfo.txt file made earlier)
    sas2flsh -sasadd 5b8ca3a0f2xxxxxx

    The command should be:
    sas2flsh -o -sasadd 5b8ca3a0f2xxxxxx

    Without the -o I was getting an error 0500000F

  8. Pingback: ZFS on Xen - why so hard? | My Wired House

Leave a Reply

Your email address will not be published. Required fields are marked *