From James Lewis on the Hackster blog:
About a year ago, Tomasz Mloduchowski showed the world how to access the PCI-Express bus on a Raspberry Pi 4. By removing the PCI-Express to USB bridge chip, it is possible to connect external PCI-Express devices to a Pi. That hack was a bit of a wiring mess. Zak Kemble has taken the work a step further and created a replacement PCIe Bridge “Chip” to make the Pi’s PCI-Express mod more straightforward than before.
Kemble did not make an actual chip. Instead, it is a PCB with roughly the same dimensions as the Pi 4’s VL805 controller chip. After replacing the existing IC with this PCB, it patches the PCI-Express traces from the SoC to the USB 3 ports.
Out of the OSHPark envelope, the boards are not a perfect fit. The Bridge “Chip” needs a bit of sanding to fit the dimensions of the VL805. This step also exposes some of the copper for soldering the edge connections. (Kemble designed the board with this modification in mind.)
Once the Bridge “Chip” is in place, the Raspberry Pi’s USB 3.0 port is now carrying PCI-Express traffic. A PCIe expansion board kit is an ideal companion to this mod. They connect a x1 slot to a x16 riser card over a USB 3.0 cable. These cables easily carry up to 5 Gb/s traffic between the Pi 4’s USB 3.0 port and an external PCI-Express slot.
We should point out that once you modify a Raspberry Pi for PCI-Express access, you lose USB functionality. This loss is from removing the VL805 USB bridge chip. Ironically, one of the first external devices Kemble attached to his modified Pi was a VL805 based adapter. It is an excellent choice to make sure the link works since Raspbian has drivers for that chip.
Overall, this approach is a relatively easy way to get access to PCI-Express on an inexpensive consumer-grade device. If you’d like to convert your Raspberry Pi 4 to use external PCI-Express cards, check out the RPi4-PCIe-Bridge GitHub repo. There you can find pinout information on the VL085 and the EAGLE design files for the Bridge “Chip.”