Guide: Flashing H310/H710/H810 Mini & full size to IT Mode

Notice: Page may contain affiliate links for which we may earn a small commission through services like Amazon Affiliates or Skimlinks.

gh0stee

New Member
Jan 6, 2024
1
0
1
I am trying to flash a Dell PERC H310 to IT mode, following the Fohdeesha guide but I get stopped at the first part. I have checked over my Bios, did all the settings disabled. It is an AMD Ryzen board, ASUS B350 Prime Plus. The system takes a long time (over 10 mins) to get into the FreeDos, once in the info command runs but just hangs. Virtualization is off, IOMMU off, UEFI and Secure boot disabled. I am lost.
 

Dionysos

New Member
Feb 4, 2022
6
0
1
Tried following the guide to a T about a dozen times for the H710 Mini D1, but keep getting errors when I get to setting the sas address.

No other PCI cards installed and tried powering down and unplugging for 30 minutes several times. Also tried it on a H710P card with that specific guide, but ran into the same issue.

I've been doing everything through iDRAC, any chance that would be an issue? Does it matter if drives are installed? I'm at a loss for what to try next.

Any help or guidance would be greatly appreciated!
Don't do it through iDRAC, log in SSH to the Debian install as explained in the @fohdeesha guide
 

Pagano

New Member
Jan 14, 2024
1
0
1
I've got a problem with my Dell H310 (full size) after waking up my server (ubuntu) from sleep/standby. Flashing the LSI IT firmware went fine, but my virtual machine (QEMU/KVM/Virtual Machine Manager -> Openmediavault, debian based), which is using the HDD connected to the H310, is always unresponsive after the server wakes back up from sleep/standby.

The OS of the VM is showing the following error:
Code:
[     0.953649] shpchp 0000:01:00.0: pci_hp_register failed with error -16
[     0.953876] shpchp 0000:01:00.0 Slot initialization failed
I'm only getting this error after sleep/standby, everthing is working fine after a restart/cold boot of the server.

Also, shutting down the VM doesn't even work because of this error:
Code:
Error shutting down domain: Timed out during operation: cannot acquire state change lock (held by monitor=remoteDispatchConnectGetAllDomainStats)

Traceback (most recent call last):
  File "/usr/share/virt-manager/virtManager/asyncjob.py", line 72, in cb_wrapper
    callback(asyncjob, *args, **kwargs)
  File "/usr/share/virt-manager/virtManager/asyncjob.py", line 108, in tmpcb
    callback(*args, **kwargs)
  File "/usr/share/virt-manager/virtManager/object/libvirtobject.py", line 57, in newfn
    ret = fn(self, *args, **kwargs)
  File "/usr/share/virt-manager/virtManager/object/domain.py", line 1357, in shutdown
    self._backend.shutdown()
  File "/usr/lib/python3/dist-packages/libvirt.py", line 2923, in shutdown
    raise libvirtError('virDomainShutdown() failed')
libvirt.libvirtError: Timed out during operation: cannot acquire state change lock (held by monitor=remoteDispatchConnectGetAllDomainStats)
The server is using an AMD Ryzen 5600G CPU and a Gigabyte B450 Aorus M mainboard.

During a restart/cold boot I'm also getting these errors now on my server:
Anyone got an idea what the problem might be?
 
Last edited:

Elmojo

New Member
Apr 16, 2021
12
0
1
I apologize if this has been covered, but honestly I'm not reading 22 pages just to see if this has been discussed. lol

I have a Dell T630 server with 2 RAID/HBA cards. One is an H730 in HBA mode, running the internal HDDs.
The other is an H810, in RAID (normal?) mode, connected to an MD1200 external disk shelf, which I just bought. It's not really set up yet, and is the subject of my question.
I'm running unraid on the server, and have no need for the hardware RAID features of the H810. Looking into the process of flashing the H810, it appears to be more than I'd like to get into, considering that I'd have to remove my H730 and turn off a bunch of stuff in BIOS.

Here's the actual Q: Can I just leave the H810 in RAID mode, destroy the current hardware RAID array, leaving the individual drives available to unraid to assign to its array, or will that not work?
 

lovenvik

New Member
May 24, 2024
2
0
1
Erasing the flash works fine but when I attempt to write to IT mode, I get "Warning! IO Base address high. Currently not supported." than it goes on to sat success. When I boot into linux from there i'm unable to get an MPT port to show any card details.




Perc H810 D1unnamed.jpg DP/N 0VV648

Do I have to buy a H810 with DP/N - 0NDD93 or - 0HVCWY for this to work ?
 

fohdeesha

Kaini Industries
Nov 20, 2016
2,911
3,437
113
34
fohdeesha.com
Erasing the flash works fine but when I attempt to write to IT mode, I get "Warning! IO Base address high. Currently not supported." than it goes on to sat success. When I boot into linux from there i'm unable to get an MPT port to show any card details.




Perc H810 D1View attachment 36876 DP/N 0VV648

Do I have to buy a H810 with DP/N - 0NDD93 or - 0HVCWY for this to work ?

no any of them are supported, this is usually the error when the system you're flashing on has a weird/buggy bios when it comes to flashing these cards, which is common. try another system if you can, or better yet a dell server
 

lovenvik

New Member
May 24, 2024
2
0
1
no any of them are supported, this is usually the error when the system you're flashing on has a weird/buggy bios when it comes to flashing these cards, which is common. try another system if you can, or better yet a dell server
Thanks. Im on a dell R630. Can it be worth upgrading idrac/bios and retry, or just try on anouther server asap?
 

fohdeesha

Kaini Industries
Nov 20, 2016
2,911
3,437
113
34
fohdeesha.com
Thanks. Im on a dell R630. Can it be worth upgrading idrac/bios and retry, or just try on anouther server asap?
that would be why, the 13th gen servers will not flash these cards properly. you'll need to find a 12th gen server like an r720 or r620, or try another pc altogether
 

jsenecal

New Member
Sep 21, 2020
3
1
3
Hey @fohdeesha, so I flashed many H710p cards with your guide and tools successfully and I thank you for the great accomplishment there. But, unfortunately, today I hit an edge case.

I was trying to crossflash a H310 mini (first time for me). This one is in a blade M620. Your instructions has different steps for H710 variants in blade servers but no H310. So I assumed there were no special steps for these.

Ooh-was-I-wrong.

After the first reboot, right after after erasing the flash with the FreeDOS ISO, I am greeted with a wonderful "Invalid PCIe card found in the Internal Storage slot."

1717042024625.png

I'm pretty sure there is no coming back from there but I wanted to share my story.

For awareness, the guide does not seem to have the proper steps for an H310 mini in a blade server :)
 

fohdeesha

Kaini Industries
Nov 20, 2016
2,911
3,437
113
34
fohdeesha.com
Hey @fohdeesha, so I flashed many H710p cards with your guide and tools successfully and I thank you for the great accomplishment there. But, unfortunately, today I hit an edge case.

I was trying to crossflash a H310 mini (first time for me). This one is in a blade M620. Your instructions has different steps for H710 variants in blade servers but no H310. So I assumed there were no special steps for these.

Ooh-was-I-wrong.

After the first reboot, right after after erasing the flash with the FreeDOS ISO, I am greeted with a wonderful "Invalid PCIe card found in the Internal Storage slot."

View attachment 37034

I'm pretty sure there is no coming back from there but I wanted to share my story.

For awareness, the guide does not seem to have the proper steps for an H310 mini in a blade server :)
Indeed, you followed the guide for a regular 310 mini but on a blade 310 mini, so it now has an incompatible SBR flashed, and will not boot. This is why the guide says "If you're impatient and pick the "closest one" instead, you'll brick your card" - which it did :) To create a guide section for the 310 blade version, I need someone with said blades/perc card to collect some firmware dumps for me, but nobody has. a couple have promised to but I never heard back
 

jsenecal

New Member
Sep 21, 2020
3
1
3
Indeed, you followed the guide for a regular 310 mini but on a blade 310 mini, so it now has an incompatible SBR flashed, and will not boot. This is why the guide says "If you're impatient and pick the "closest one" instead, you'll brick your card" - which it did :) To create a guide section for the 310 blade version, I need someone with said blades/perc card to collect some firmware dumps for me, but nobody has. a couple have promised to but I never heard back
PM me the process I'll try to do it for you, I have a few of those blades with H310
 
  • Like
Reactions: fohdeesha

weseycorrea

New Member
Feb 22, 2019
6
0
1
Hello @fohdeesha, congratulations on your work and for sharing your knowledge. I followed the article for an H310 and with success.

Would there be a more recent firmware update or is it the version in the article?
 

fohdeesha

Kaini Industries
Nov 20, 2016
2,911
3,437
113
34
fohdeesha.com
Hello @fohdeesha, congratulations on your work and for sharing your knowledge. I followed the article for an H310 and with success.

Would there be a more recent firmware update or is it the version in the article?
The version in the guide is the latest, and always will be. LSI stopped making firmware for this generation of cards 5 years ago, the version in the guide is the last one
 
Dec 4, 2024
37
4
8
I'm hoping this isn't a necro but I got DEEP into an experiment this weekend trying to get 2x H710s into a lightly-modded-and-soon-to-be-for-sale Dell R710 PE (100cm BO cables FTW).

I'd like to also try to get the H710 (D1 Full Size) to actually boot with the R710, too. I removed half of the "bracket" in the "integrated slot" at the bottom of Riser 1 to fit it in, then got the "NOPE! Not in my Riser 1 Slot 3" Showstopper Dell Message at boot...

So I then began playing around with the FANTASTIC tool kit @fohdeesha put together on his site and messed with SBRs using the commands and insights of this ArtOfServer YT vid here:

I then discovered how some of this sausage was made in this OG thread here: reading SBR from 2208 shows the data to be offset by a few bytes · Issue #1 · marcan/lsirec
- But I was never able to completely wrap my head around how to mod a bootable LSI/Avago/Dell firmware for the PERC H710 (D1) for the R710's "Integrated Storage Slot". It works great in other slots, but I'm trying to set it one of the two to be bootable and leave the 3rd x8 slot for something like a Dual 20Gbe SFP+ or similar NIC. I mucked around a bit with the other "embedded" H710 variants and the "Integrated" H310 that I could see with:

Code:
sudo update-pciids #updating the pci.ids just to be sure its all there
cat /usr/share/misc/pci.ids | grep "PERC H"
But I'm pretty sure my guessing and 2 hours of attempts to "guess the offsets" were way offbase.

It's not a total deal breaker if this isn't possible to get the R710 to boot from an H710 (D1) since I already have an "Integrated H700" that works great for RAID-ing the 8 x 1TB SAS HDDs in the 8 front bays of the R710, and I have a 2nd H710 in IT Mode (Thanks to fohdeesha again!), but it would be sweet to ditch RAID altogether in favor of a 20+ total drive ZFS setup (2x NVMe in the x4 slots). The R710 is already a bit absurd, but impressive performance and capacity considering its age. I'm mostly looking to add that special final touch with putting any MORE money and waiting-games-for-shipping/negotiations before I put it up for sale (getting these H710s finally delivered was a bit of a logistics nightmare).


So my Primary question is: Has anyone gotten the H710 (D1=512M cache=Full Size - "BIGD1CRS") to boot in a PowerEdge by tweaking the SBRs? I'm assuming if somehas as the correct SBR that works in for an R720 then it might work in an R710, too OR there are some tricks that were used to make it happen.

And as a secondary question, if I can NOT sort out a bootable SBR for the H710 D1 in the R710pe, then I will try to explore ways to use the LSI firmware and a bootable SBR for the IR/RAID-only H700 (If that is also possible?) since the performance of the H700 is only "pretty good" at around ~1600MB/s in my (somewhat rudimentary performance testing scenarios), but give this is an x8 PCIe 2.0 bus, I was hoping to get closer to ~3500MB/s with the 8x SSDs on breakouts (or at least over 2k and which way possible).

It am pretty deep into the rabbit hole today with finding Dell and its annoyances with dropping support / quit making it easy to access support files like firmwares and drivers for these older systems. For example here there doesn't seem to be any software for the "H710 D1"(Anymore?) - Support for PowerEdge R720 | Drivers & Downloads | Dell US

(begin rant about Dell being whack) I'm only finding supporting software for the H710P and Mini (Since 2025Q1) and the link at the bottom of H710 D1 Full Size - Fohdeesha Docs no longer resolves. Dell does this stuff once chassis/platforms/parts get a little over a decade old, despite it being a totally viable option for PCIe 3.0 systems - I'm ranting a bit about this because I know there are a few "rogue servers" floating around online that provide a recreated catalog of the older chassis softwares and I'm wondering if anyone has a suggest for me to actually bookmark this time. Most of them I've found were "single purpose" and non complete so I've cobbled things like this together over time. Might be cool if we collabed with a freebie webserver setup like a S3 Free Tier on Azure Always Free, Oracle Cloud's 4x mini VMs with 200GB of max Storage included, or something like that? (end rant)

I haven't tweak SBRs a whole lot in the past, and its been awhile, so I will lay out the "how I'm doing it" and hope that the internet does what its absolutely BEST at: Telling you how you got something wrong.

An outline of the steps and tools I'm using:
  1. Assume I am using the "deesha Linux v2.3" (the Debian Bulleye iso), so I'll reference the paths to wear those tools are, below
  2. From the Linux ISO, grab the "current" Controller details with `lspci`
  3. Kill the current card functions so you can work with it: lsirec 0000:0x:00.0 {unbind,halt}
  4. Grab the active SBR with: lsirec 0000:0x:00.0 readsbr *.SBR
  5. Build a text CFG file from the *.SBR binary with: sbrtool.py parse *.SBR *.CFG
  6. Edit the CFG file values that match whatever device is closest to what you want the DellPE to think it can boot from... 'pci.ids'
  7. Create the new binary SBR file that includes your edits: sbrtool.py build *.CFG *.SBR
  8. Write the new SBR to the controller: lsirec 0000:0x:00.0 writesbr *.SBR
  9. Bring the Controller back online: lsirec 0000:01:00.0 res{et,can}
  10. Check the status / info and pray: lsirec 0000:01:00.0 info
  11. If all good, reboot

Let's get it.

### Default Dell PERC H710 Firmware Section
This is the SBR for 2 the identical H710 D1's I'm working with, when I reverted one back to "Stock Dell" with BIGD1RVT (The original):


Code:
sudo -i # root powers
#Get up to date (not sure if this is always necessary, but since I'm using a different machine to flash with, I did:
DEBIAN_FRONTEND=noninteractive sudo update-pciids && sudo apt update && sudo apt upgrade -y

lspci -Dmmnn | grep H710 # show current firmware is Dell
#...output is:
0000:01:00.0 "RAID bus controller [0104]" "Broadcom / LSI [1000]" "MegaRAID SAS 2208 [Thunderbolt] [005b]" -r05 "Dell [1028]" "PERC H710 Adapter [1f35]"
and
Code:
~/lsirec/lsirec 0000:01:00.0 info
#...output is:
root@debian:~# ~/lsirec/lsirec 0000:01:00.0 info
Trying unlock in MPT mode...
Device in MPT mode
Registers:
DOORBELL:       0x40000000
DIAG:           0x000000b0
DCR_I2C_SELECT: 0xc003ff0e
DCR_SBR_SELECT: 0xb500001b
CHIP_I2C_PINS:  0x00000033
IOC is FAULT
(Continues rant) See above for how Dell doesn't have drivers or firmware for this card that I can match to the H710 flavor of the "Full Size D1 Adapter", but even though its "FAULTED" with the existing BIGD1RVT Firmware, it seems to work fine in Windows 11 boot disk I have in my "flashing machine" as a Dell PERC H710 RAID/IR Mode, so its whatever I guess since I'm going to end up with the LSI Firmware in the end either way. (end continued rant)

Code:
root@debian:~# ~/lsirec/lsirec 0000:01:00.0 readsbr H710-original.SBR
Device in MPT mode
Using I2C address 0x54
Using EEPROM type 1
Reading SBR...
SBR saved to H710-original.SBR
root@debian:~# ~/lsirec/sbrtool.py parse H710-original.SBR  H710-original.CFG
WARNING: Mfg data copies differ, using first
WARNING: Mfg data checksum error
WARNING: SAS address checksum error
Not sure if the above warnings for this Reverted-back-to-Stock-Dell H710 D1 Adapter are related to being on Debian without drivers or what, but I'm just going with it to dump to Dell SBR here...

This is the SBR for 2 the identical H710 D1's I'm working with, when I reverted one back to "Stock Dell" with BIGD1RVT (Before the fohdeesha-flash):
Code:
root@debian:~# cat H710-original.CFG
Unk00 = 0x053aeb61
Unk04 = 0x5f5ae560
Unk08 = 0x712d010b
PCIVID = 0x5ae0
PCIPID = 0xff04
Unk10 = 0x91df
HwConfig = 0x1000
SubsysVID = 0x005b
SubsysPID = 0x0400
Unk18 = 0x35102801
Unk1c = 0x0000001f
Unk20 = 0x00000000
Unk24 = 0x00000000
Unk28 = 0x00000000
Unk2c = 0x00000000
Unk30 = 0x00000000
Unk34 = 0xff8c6300
Unk38 = 0x00417007
Unk3c = 0xcc6c6600
Interface = 0x0c
Unk41 = 0x00
Unk42 = 0xca01
Unk44 = 0x860b1400
Unk48 = 0x6fda
Unk4a = 0xa8
SASAddr = 0x6969696969696969
### Mid Firmware Flash Operation Section
Now we flash the H710 D1 with LSI Firmware *(which seems to be the only option now since Dell is flaking on this support?)

Code:
sudo -i
ipinfo
# move to an SSH Terminal on a different machine with the given IP my routers' DHCP for easy Copy/Paste
D1-H710
# wait a few minutes...
info # check out the results
reboot
#wait to finish the reboot from USB/whatever
sudo -i
# Set the SAS Address (Is there another way to do this? This works, so its fine, but was wondering ways this might be set in scripts and RNGs
setsas 500605b123456777 # Yours is a different 16 hex value, this is just an example like "5c81f669e9d21999"
info # check the results show a SAS addy there now
flashboot /root/Bootloaders/mptsas2.rom #Optionally add BIOS boot config
flashboot /root/Bootloaders/x64sas2.rom #Optionally add UEFI boot config

Now we will move on to dumping the post-flash-toLSI-and-IT-Mode-ed SBR by re-flashing back to the BIGD1CRS setup from the FreeDos iso

### Post-flashed to LSI and IT Mode with SBR Retrieval Section

I tried playing with but I'm currently stumped on how to work out how to do the necessary HEX math and work out the correct offset values to get the H710 to boot in an R710. I was thinking using the "H310 Integrated" SBR would be my best bet, but I'm really not sure of that either.

Code:
root@debian:~# lspci -Dmmnn | grep LSI # show current firmware is LSI
0000:01:00.0 "Serial Attached SCSI controller [0107]" "Broadcom / LSI [1000]" "SAS2308 PCI-Express Fusion-MPT SAS-2 [0087]" -r05 "Dell [1028]" "SAS2308 PCI-Express Fusion-MPT SAS-2 [1f35]"
# disable the Controller so we can work with it:
Code:
~/lsirec/lsirec 0000:01:00.0 unbind
~/lsirec/lsirec 0000:01:00.0 halt
# Grab the current SBR in binary format into an *.SBR file we name "H710-original.SBR"
Code:
~/lsirec/lsirec 0000:01:00.0 readsbr H710-original.SBR
# Convert the file to a human-readable text file so we can make edits in an *.CFG file we name "H710-original.CFG"
Code:
~/lsirec/sbrtool.py parse H710-original.SBR  H710-original.CFG

#NOTE: I'm getting these warnings here, but not sure if I should be concerned with them or not (Or if they are a clue of some kind)
root@debian:~# ~/lsirec/sbrtool.py parse H710-original.SBR  H710-original.CFG
WARNING: Mfg data copies differ, using first
WARNING: Mfg data checksum error
WARNING: SAS address checksum error


# Now we can see the SBR (Serial Boot Record) configuration in the CFG file that we created, using cat
Code:
cat H710-original.CFG

## See Below for the output, I'll finish describing the process I tried updating the SBR with
# We can now also EDIT the file that we created, using the nano editor for easy copy/paste and navigation
Code:
nano H710-original.CFG

###???#... but what edits need to be made where?
###???#... What are the offset values we need to consider to get a different SBR to be recognized by Dell PEs?...

# CTRL+X and "Y" to SAVE the .CFG file edits, but we will
#SAVE UNDER A DIFFERENT NAME so that we can retain our original, in case something goes horribly wrong and we need to restore this previous configuration
- Save as H710-CURRENT.CFG
Code:
# write (or more aptly "build") the newly edit and created H710-CURRENT.CFG file changes to a new and updated binary file H710-CURRENT.SBR
~/lsirec/sbrtool.py build H710-CURRENT.CFG H710-CURRENT.SBR
Code:
# Make sure you looks it over a few times to ensure you got it correct and then write the new "Custom SBR" to the Controller
~/lsirec/lsirec 0000:01:00.0 writesbr H710-CURRENT.SBR
Code:
# Bring the Controller back online
~/lsirec/lsirec 0000:01:00.0 reset
~/lsirec/lsirec 0000:01:00.0 rescan

# Check the Status after the update and look for issues or errors
~/lsirec/lsirec 0000:01:00.0 info
This is the SBR for 2 the identical H710 D1's I'm working with, AFTER I flashed with BIGD1CRS (After the fohdeesha-flash) - Unaltered from the "Fresh Flash":

Code:
root@debian:~# cat H710-original.CFG
Unk00 = 0x053aef61
Unk04 = 0x5f5ae960
Unk08 = 0x712d010b
PCIVID = 0x5ae0
PCIPID = 0xf802
Unk10 = 0x92df
HwConfig = 0x1000
SubsysVID = 0x0087
SubsysPID = 0x0700
Unk18 = 0x35102801
Unk1c = 0x0000001f
Unk20 = 0x00000000
Unk24 = 0x00000000
Unk28 = 0x00000000
Unk2c = 0x00000000
Unk30 = 0x00000000
Unk34 = 0xff8c6300
Unk38 = 0x00417007
Unk3c = 0xcc6c6600
Interface = 0x0c
Unk41 = 0x00
Unk42 = 0xca01
Unk44 = 0x860b1400
Unk48 = 0x6fda
Unk4a = 0xa8
SASAddr = 0x5012345678969696
I took notice of "Unk1c = 0x0000001f" ending in the first two hex values and "Unk18 = 0x35......" being the last two hex values of the lspci output description in "SAS2308 PCI-Express Fusion-MPT SAS-2 [1f35]" <<< - But maybe that's sheer coincidence and a red herring. In the linked-above Art of Server Video, he went into it pretty deep and showed how to use the commands, but it seems there is a much less straight-forward method the H710 uses to give its SBR SubsysVID/PID to the PCIe Bus than the example H200 that he used in the video. I think those GitHub threads were on the right track with finding the right offsets and doing the Hex math to work it all out for tricking a PowerEdge into thinking it has a different card that this "You can boot on this because its Dell Approved to do so" blocker will bypass... :rolleyes:

I'm pretty frustrated after all that I can't boot from this card, in this slot, since the R710 is pretty limited on PCIe lanes and slots and this option would open doors for adding even more SSD drives (in case it matters, its the 8x 2.5" Bay chassis, as you probably deduced already) but I did find a way to pack in 8+ SSDs into the "Fan Intake channel" with the SATA power blade from the "Optical power cable of the R730 that fits an R710 4 pin header (or was it the R720 optical cable? one of those. The one with a full size SATA Power end, not just Slimline) which is AMAZINGLY awesome for this aging beast of a chassis. It works Impressively. Since the 8 bay trays are using SAS HDDs the H700 is fine and all in terms of not Saturating its IO capabilities, but theres an OCD monster inside me that thinks we could get this to work with 16+ SSDs and near peak performance with ZFS, too. I added the two of the "1+NVMe M.2 and 1+SATA SSD" cards for more "bootability", too. And a USB hub for the internal USB port for booting with Clover and other storage/low power USB device options, too. So having to cope with a single RAID controller for the HDDs might just be me having too high of expectations, but I'm pretty sure its all coming down to knowing which magic digits to change in the SBR to complete the masterpiece.

Any insights or inputs how to properly hack this SBR business for the R710 (or similar Gens) are appreciated!
 
Last edited:
  • Like
Reactions: Dan Langille

chrism9876

New Member
Jan 27, 2025
2
0
1
Hi Does anyone know if the mini cards are interchangeable between servers I have an DELL PE R720 with H710 mini that i have flashed in IT mode. My server DELL PE R730 has a H730 mini this card has an HBA mode but i have read it doesn't pass smart data properly. Can I put the H710 in the R730?

Also are the backplanes interchangeable i have a 16 bay in the R720 and 8 in the R730 can i swap them