Universal PCIe, AGP, PCI, ISA card storage board (#P43)
Looks like I haven’t tagged any post as “project” for over a year now…time to release some open hardware
I don’t really store much computer hardware – most components are either in use (at least occasionally), waiting to be sold (eBay and the like), or waiting to change hands the next time I visit family. Of course there’s floppy drives somewhere, or good old memories (ha), but it’s not like I have a collection of each and every Socket A motherboard or something crazy. There is, however, two boxes (Really Useful Boxes to be precise, the 9 liter type that I use for lots of things since they fit a specific cupboard nicely) of extension cards. Some that I keep for sentimental value like a crappy GeForce 2 MX (AGP) that is clock limited purely by the sliders of PowerStrip, or a huge old Soundblaster ISA card, but there’s also more current stuff like USB3 addin cards, and some valuables like three Voodoo2’s. I don’t access those boxes weekly, but it’s always a pain and I’m always worried about bending pins or ripping off components when everything intertwines.
So I sat down and made a simple storage base plate. A PCB that can be populated with different slots from ISA all the way up to PCIe x16, with a cutout for the protruding slot bracket and standoffs to keep all cards fully seated, and sized to fit the 9 liter RUB – twice. For the lulz, I also routed all power pins correctly so that the board could act as a diagnosis platform, but this already breaks down for AGP cards that need to be inserted into PCIe sockets due to (new) AGPs having entered the Unobtainium™ status (yes, there are some left at DigiKey at like 15€ a piece – hell no).
PCI, AGP, PCIe and ISA specs are available on the Interwebs, but exact physical specs of the cards are surprisingly hard to extract. I only need one measure, and that is the distance from the first pin of the connector to the I/O bracket to make them all stick out equally. This isn’t included in any of these, instead one has to calculate distances from some notches or end of card edge pin arrays to the front edge of the card, with complicated measurements from that edge back to mounting holes and forth again to the actual position of the flat side of the bracket. So in the end I just made educated guesses without the exact dimensions – turned out fine, but that wouldn’t be good enough to design a real ATX-compliant PCB.
Anyway, without further ado, here’s the Gerber Files. Rev A is the version that I ordered from JLCPCB (not a sponsor – but you should remove the JLC number placeholder on the back when ordering elsewhere), Rev B is the slightly corrected version based on what I got, e.g. correctly centered mounting holes, the center ones removed (doesn’t really sag that much, so space for one more ISA option), and a slight size correction to better fill the box envelope. I suggest using Rev B, although untested.
Rev A looks like this:
For the first PCB shown above I just did a straight 10x PCIe x16 fill that isn’t all that clever considering my space constraints of just two boxes/four PCBs, but so be it. PCIe connectors can be sourced from literally anywhere, and the standard x16 ones are basically the same price as x8, x4, x1 and usually cheaper than special ones like open-ended x4’s. Be sure to buy slots without the x16 PEG mounting clip (or versions where it can be cut off easily, like mine), as that is difficult to unlock in a densely populated board. So using x16 is the most versatile option and doesn’t really cost more than carefully planning layouts, except for the time to actually solder everything – which isn’t required for stability, just a couple of pins hold everything on the board nicely. I used almost exclusively the crappy heavily leaded solder from WHL #68 with the high power soldering station from WHL #86, so putting that terrible material to good use was pretty easy. A pack of ten PCIe x16 (“0PCS Motherboard 164P PCI-E Socket Connector 16X Graphics Card slot Fishtail PC DIY PCIE 164 Pins PCI-E PCI 16X 3.0 164Pin”) was 11.86€, second batch 11.54€ including shipping and VAT.
AGP connector are, as I said, basically sold out everywhere and I wouldn’t bother sourcing new ones. AGP cards can be seated in PCIe x16 slots nicely, they have the same nominal card thickness (so no loose fit or increased contact wear) and their slot-to-bracket distance is large enough to fit the bracket cutout despite sitting at the wrong position.
PCI are actually the most difficult ones. They are still available in limited quantity (not keen on the 10€+ ones at Mouser), and there are technically four distinct socket types: 3.3V and 5.0V, each in 32bit and 64 bit fashion. I’d straight up ignore the 64bit types since they’re just physical extensions of the 32bit ones. Every 32bit card can be seated in 64bit slots of the same voltage type (very much like PCIe x1 fits x16 slots), but all 64bit cards can also be seated in 32bit slots of the same voltage, unlike PCIe with regular closed connector ends. They even should work on real boards that way, but functionality is not guaranteed and performance is of course limited if they do work. So although my PCB does offer mounting holes for 64bit connectors, I’d strongly recommend using 32bit slots only.
The thing with PCI 3.3V and 5V is that the cards can be keyed as “universal”, but the slots cannot. When using 64bit slots, one needs to source both types. With 3.3V, that is not the case. As the key is placed symmetrically and the connector is designed that way as well, a 32bit connector isn’t actually tied to a specific voltage: It can do both with a simple 180° rotation before assembly. I sourced my connectors from AliExpress as well, “10 Pcs PCI 120P Plywood Slot PCI 120PIN In-line Slot PCI Connector”, at a whopping 14.96€ for that pack of 10 units, again including postage and VAT.
Last, but not least, is the ISA connector. Those are in plentiful supply as they are generic 2.54mm card edge connectors, one just needs to pick the right length. I paid 5.81€ for a pack of five 2×31 / 62pin: “5pcs Edge Card Connector Slot 2.54 mm Pitch 8/10/12/16/18/20/28/30/36/40/50/60/72/80/98 Pin PCB Gold Finger Socket Through Holes”. These have a pretty high insertion resistance, so maybe a first plugging cycle before putting the board into a hard-to-reach box is a good idea.
Aside from the pure connector assembly, there’s one more thing to consider: ISA cards are, in a regular ATX reference frame, facing up. Their primary component side faces up and gathers dust. PCI, AGP and PCIe all face down. This means their brackets are offset by a certain amount, since their connectors are put on the other side of the PCB. Since this PCB has PCIe as the main connector with regular spacing between them, adding ISA cards does work without gaps, they’re a tiny bit off. AGP are using the PCIe footprint and are aligned just fine. But PCI are offset half a slot on the board, so adding a PCI in between does waste some space. For that reason I am considering a universal connector footprint that would make all placement options viable without gaps, at the cost of not having voltage rails routable (routeable?) due to overlaps of pins. This also will likely cause weird mounting hole shapes which might not be popular with PCB manufacturers. If that idea ever materializes, I’ll of course post a quick note at the end of this post.
KiCad 7.0 files are here – Rev B only, and no step models included for copyright reasons. Those are linked in the footprints, though, so googling the individual file names should get you the models in an instant. If not – hit me up! KiCad Rev B