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:
- 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
- From the Linux ISO, grab the "current" Controller details with `lspci`
- Kill the current card functions so you can work with it: lsirec 0000:0x:00.0 {unbind,halt}
- Grab the active SBR with: lsirec 0000:0x:00.0 readsbr *.SBR
- Build a text CFG file from the *.SBR binary with: sbrtool.py parse *.SBR *.CFG
- 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'
- Create the new binary SBR file that includes your edits: sbrtool.py build *.CFG *.SBR
- Write the new SBR to the controller: lsirec 0000:0x:00.0 writesbr *.SBR
- Bring the Controller back online: lsirec 0000:01:00.0 res{et,can}
- Check the status / info and pray: lsirec 0000:01:00.0 info
- 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...
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!