Perc H710 Mini to IT mode

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

Spartacus

Well-Known Member
May 27, 2019
788
328
63
Austin, TX
@BLinux the man, the myth, the legend explained it was due to a specific sbr required to boot and erasing it messes the card up.
Here's the hints he gave about how it works with Dell part 5CT6D :


You might be able to figure it out yourself, he is running a side business after-all so I wouldn't expect the answer free :p.
 
  • Like
Reactions: Sleyk and BLinux

Roelf Zomerman

Active Member
Jan 10, 2019
147
27
28
blog.azureinfra.com
solved the problem another way.. my R620 had another SAS connector internally on the mainboard.. I got a SAS-SATA cable connected to it which gave me 4 additional SATA connectors.

For the power, there are 2 options.. either use the CD/DVD cable and convert it into a SATA power connector, or use the built-in USB connector and use a USB-SATA Power cable. I tried the first option and ordered the cables for the second one.

Stuffed it all in the 2nd power bay (only using 1 powersupply)

Installed Windows Server 2019 on it .. and voila.. working!

So now I can continue to use the hardware raid for the SAS disks, and use the built-in controller for the SSD's
 

AndiM202

New Member
Jan 6, 2020
8
5
3
Hey guys! Can anyone explain me which exact cable I need to use for power the drives using the built-in USB connector?

Thank you!
 

AndiM202

New Member
Jan 6, 2020
8
5
3
Hi guys! Another question: Were anyone able to flash the PERC H710 to IT Mode? I researched a little bit but didn't find anything useful. Thanks!
 

fohdeesha

Kaini Industries
Nov 20, 2016
2,728
3,078
113
33
fohdeesha.com
Hi guys! Another question: Were anyone able to flash the PERC H710 to IT Mode? I researched a little bit but didn't find anything useful. Thanks!

Arkadius or I will have a guide up on how to do it in a month or two, finishing up some other projects first
 
  • Like
Reactions: yukaia

AndiM202

New Member
Jan 6, 2020
8
5
3
Is it then so hard to accomplish? I would definitely try that out, as I'm currently thinking about getting rid off the PERC H710 completely and use a HBA/SAS-SATA instead.
 

AndiM202

New Member
Jan 6, 2020
8
5
3
My first intention is to go for the other solution Rolf has mentioned with the SAS-SATA cables and then power them using SATA to USB 2.0 cables. If this is however not working, I will probably buy a LSI 9207-8i HBA Card and simply Pass-Trough all drives. Cheers
 

fohdeesha

Kaini Industries
Nov 20, 2016
2,728
3,078
113
33
fohdeesha.com
Is it then so hard to accomplish? I would definitely try that out, as I'm currently thinking about getting rid off the PERC H710 completely and use a HBA/SAS-SATA instead.
So basically, the guide will be extremely similar (almost identical) to Arkadius' guide about flashing the H310 mini to IT mode, which uses lsirec to alter the cards SBR (vendor and other data stored in a little EEPROM on the card): How to flash the Dell PERC H310 (and keep it in the dedicated storage slot) - Public - Confluence

The underlying tools in lsirec can read/write the EEPROM on the H710 cards just fine, but the issue is the python script that lays down a new SBR does not understand the offsets on the H710, as they are different (the PCI details that need changing are in a different location in the EEPROM). We will be figuring out the new offsets and pushing a commit to the lsirec tool to make it compatible with the H710 mini and other 2208 based cards. There's currently a github issue: reading SBR from 2208 shows the data to be offset by a few bytes · Issue #1 · marcan/lsirec

At least one person on ebay has already patched lsirec with the new sas2208 offsets and are using it to crossflash cards and sell them for 3x the price (literally saw lsirec in one of their ebay pictures) - not pushing their fix to open source software upstream, keeping it a secret so they can profit financially. They're going to open source hell, and they're the only reason I'm pursuing this, I can't stand people like that in these communities. Will be publishing a guide so people do not need to pay exorbitant prices to get a crossflashed card. bLinux is also selling crossflashed cards on ebay, however I think he's using his own homebrew tools (not lsirec) so that's his right. Just ordered an R620 testbed and a handful of H710's, will throw money at it until it's figured out. I'd say 2-3 weeks depending on free time
 
Last edited:

AndiM202

New Member
Jan 6, 2020
8
5
3
Yeah, the thing is - I already have ordered a flashed H710 with LSI SS2308 from @BLinux because I couldn't wait any longer. But luckily, a friend of mine gives me another R720XD which has the same RAID Controller in there. So I might can take advantage from your guide to flash it one by myself. I would really appreciate a guide which is for free! Thank you so much for supporting Open Source - I will try my best to share any project I am working on with all the members of any community ! Open Source is a great mentality, thank you so much @fohdeesha !
 
  • Like
Reactions: Sleyk and fohdeesha

BeTeP

Well-Known Member
Mar 23, 2019
653
429
63
At least one person on ebay has already patched lsirec with the new sas2208 offsets and are using it to crossflash cards and sell them for 3x the price (literally saw lsirec in one of their ebay pictures) - not pushing their fix to open source software upstream, keeping it a secret so they can profit financially. They're going to open source hell, and they're the only reason I'm pursuing this, I can't stand people like that in these communities. Will be publishing a guide so people do not need to pay exorbitant prices to get a crossflashed card.
You just described exactly what @BLinux has been doing all along. Are you 100% sure that you are talking about someone else?

Also look at the timeline of that github ticket you linked (it's opened by @BLinux if you did not notice). It took him that long to figure out the simplest stuff. That alone makes me doubt that his homebrew tools is anything but lsirec script with changed offsets plus maybe some basic automation to cross-flash in bulk.

All you need to make lsirec work with 2208/2308 cards is to increase the size of the buffer to 448 bytes (the double size of SBR in 2208/2308).
As for the new offsets - I did not even bother to calculate them manually:

Code:
REPCI = re.compile(r'\n\d0: (..) (..) (..) (..) (..) (..) (..) (..) (..) (..) (..) (..) (..) (..) (..) (..)')

def all_lsi():
    return [x.split(' ', 1)[0] for x in subprocess.check_output(['lspci', '-Dd', '1000::']).decode('ascii').splitlines()]

def checksum(l):
    return 255 & (91 - sum(l))

def pci_cfg(d='0000:01:00.0'):
    return b''.join(int(''.join(x), 16).to_bytes(16, byteorder='big') for x in \
        REPCI.findall(subprocess.check_output(['lspci', '-xxxs', d]).decode('ascii')))

def editsbr(sbr, **kw):
    pci = pci_cfg(all_lsi()[0])
    vidpid = sbr.find(pci[0:4])
    subsys = sbr.find(pci[44:48])
    hwclss = sbr.find(pci[10:12])
    if kw.get('vid'):
        struct.pack_into('<H', sbr, vidpid, kw.get('vid'))
    if kw.get('pid'):
        struct.pack_into('<H', sbr, vidpid+2, kw.get('pid'))
    if kw.get('svid'):
        struct.pack_into('<H', sbr, subsys, kw.get('svid'))
    if kw.get('spid'):
        struct.pack_into('<H', sbr, subsys+2, kw.get('spid'))
    if kw.get('hwc'):
        struct.pack_into('<H', sbr, hwclss, kw.get('hwc'))
    sbr[-1] = checksum(sbr[0:-1])
    return sbr
 
Last edited:
  • Like
Reactions: Sleyk and fohdeesha

fohdeesha

Kaini Industries
Nov 20, 2016
2,728
3,078
113
33
fohdeesha.com
I don't want to speak ill of fellow STH members - I was referring to a specific seller outside of the US, I didn't realize blinux opened that lsirec ticket. We'll continue this via pm, but thank you for the code block, this should speed up a public guide quite a bit
 
  • Like
Reactions: Sleyk

strongholdmedia

New Member
Jul 27, 2019
2
0
1
Now to be honest about the thought of releasing the method vs keeping it secret and making bank, I just don't know.
To be honest, there are too many leeches. Everything that is currently free should be $0.99 so that leeches, aggregators and other social rejecta may not collect them for "future use" (nor brag about "having" them).
Nothing that is free is respected today.

That being said, I follow this thread for a while.
It is possible I've given out hints or even stuff, if I were to do this with open source tools.
Sadly, the signed firmware and partitioning the EFS requires approaches of the official utility.

Now giving it out in a patched/modified manner would be pretty much illegal everywhere.

If someone were to reverse it, to provide for EFS handling, it would be cool - but I don't see that in the foreseeable future.
It was even unfeasible for me for the two or so cards I had to process like half a year ago.
 

fohdeesha

Kaini Industries
Nov 20, 2016
2,728
3,078
113
33
fohdeesha.com
We've successfully crossflashed an H710 mini with non Dell IT firmware, it really wasn't even difficult, I have no clue what strongholdmedia is on about. Will have a guide out in a week or two depending on time. And yes, it will be free
 
  • Like
Reactions: Sleyk

strongholdmedia

New Member
Jul 27, 2019
2
0
1
That is what I had to do after all to proceed with this.
I am also looking forward to any methods not using modified official tools.
(As a side note, the simplest would be not using Dell servers to do it at all. Then you could just do the H310 method with the offset thing written above; that would be enough.)
 

fohdeesha

Kaini Industries
Nov 20, 2016
2,728
3,078
113
33
fohdeesha.com
Between his word salad here and on a related GitHub issue telling us it's impossible (we literally already did it), he's either related to one of the crossflash sellers on eBay or trolling. If he tells me it's not possible one more time his name is going in the guide
 
  • Like
Reactions: Sleyk

BeTeP

Well-Known Member
Mar 23, 2019
653
429
63
LOL at @fohdeesha vs @strongholdmedia quibble in the github ticket comments. I am with @fohdeesha, the whole matter is rather trivial.
Just one more thing, no version of SBR was ever 256/512 bytes long. That's just an arbitrary number that megarec developers used for the dump buffer size.

Here is my code I used to dump SBR in linux using lsiutil before lsirec became available:
Code:
RESBR = re.compile(r'Offset:\s+[\dA-Z]{8}\s+([\dA-Z]{8})')

IOP_SHOW_SBR = b'''65

iop show sbr
exit
0
'''

def readsbr(port=1, copy=1):
    lsi = subprocess.Popen(['lsiutil', '-e', '-p', str(port)], stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE)
    out = lsi.communicate(input=IOP_SHOW_SBR, timeout=2)[0].decode('ascii')
    sbr = bytearray(b''.join(int(x.group(1),16).to_bytes(4, byteorder='little') for x in RESBR.finditer(out) if x))
    size = len(sbr) // 2
    if copy == 1:
        return sbr[0:size]
    elif copy == 2:
        return sbr[size:]
    return sbr