Sunday, December 22, 2019

Reverse Engineering HP PCIe Mezzanine Cards - Part 1

This is a big project that's way above my electrical pay-grade. Am I going to do it? Yes. Will it work by the end? Maybe. I've heard conflicting rumors about how tolerant PCIe is supposed to be. One quote I've heard is that you can run PCIe over a wet string. But that might not be the case for server hardware like the HP Blades. But we'll burn that bridge when we come to it. For now, we need to figure out what we're doing and how we're going to do it.


I'm using the HP BL465c Gen 7 blades from before. I have several more. Some Intel based and some AMD based. We've already verified that we can run them outside of an enclosure. But we want to push this blade to being more like a regular computer than that. We want to be able to have some sort of expandability.

HP Blades are supposed to be expandable by means of their enclosures. The backplane connector is a mystery to me and probably deals with signals that I can't even begin to comprehend. But, what about inside the blade? There's PCIe inside of that, right?

Well, yes. On some of them, there's a small, regular PCIe slot on the board designed for the blade's HBA. I'd guess you can put anything you want in there. But we want to keep using the HBA. How about we try to hack in regular PCIe slots onto the motherboard using the mezzanine ports?


Despite their frightening appearance, these mezzanine connectors are really just PCIe 2.0 with some extra pins for return channeling (since the blade itself doesn't have ports, it needs to be able to access the hardware on the back of an enclosure). Somewhere in these about 200 pins, there's a regular ol' PCIe bus. We just need to pick the right pins in the right order.

But how do we know which pin is what? PCIe takes a lot of pins. We're dealing with x8 size bus. I'm not good at counting, but I'd say that's a lot of pins. So how do we figure it out?

I've devised a simple three step program for getting this done.
  1. Get a mezzanine card with its regular PCIe card equivalent
  2. Trace the PCIe edge to the BGA grid of the main chip on the regular PCIe card
  3. Correlate that with the pins on the Mezzanine card

So to do that, we need to rip the main processing chips off of these cards. Pictured above is the test card for which I had no analog. I put it in the oven and... nothing happened. I needed a hotter heat source to get the chip off of the board.


Okay so I may have gone a little overboard, but it worked.


I pulled the female mezzanine connectors off because I wanted to try and reuse them since they cost about $41 a piece and you can't get just one.

So then I went to work with my multimeter and started probing the chip plane. I mapped out most of the important signals on the board. I haven't worked all of them out yet, but this is what I had time for in part one. In part two, I hope to map these to mezzanine pins as well as find the power rails by probing a live machine. Fingers crossed!


No comments:

Post a Comment