Adding PCI Express to the Raspberry Pi 4

When I sat down with Eben Upton ahead of the launch of the Raspberry Pi 4, Model B last month, the first question I asked when he told me that the new Raspberry Pi had PCI Express was, “…are you exposing the pins for that?

The answer was of course, “No.

Despite that, I went ahead and made a private bet with myself that someone, somewhere, would hack something together to get access to the PCI Express bus on the Raspberry Pi within the first month after the launch.

It looks like I was right, and that person was Tomasz Mloduchowski.

Desoldering the VLI VL805 chip to get access to the PCI Express bus. (📷: Tomasz Mloduchowski)

It’s not the first time that someone has hacked a single-board computer to expose the PCI Express bus, it’s been done to both the Atomic Pi and the Latte Panda Alpha, but it’s probably the most elegant attempt I’ve seen to date. He did this by lifting the VLI VL805 chip, which provides a USB 3.0 Hub, from the board to expose the PCI Express bus.

“The desoldering is pretty simple — except that the chip has a massive ground pad, which is connected straight to the ground plane of the Raspberry Pi — it required some work with the hot air gun to get it off the board, and I managed to ruin some of the surrounding components. The crocked oscillator above the VL805 serves as the clock for VL805 only — I did end up removing it entirely, but it’s not strictly necessary. If possible, I’d have wanted to retain the capacitors to the right of VL805.”

After cleaning the board Mloduchowski used a PCIe riser—popular inside the cryptocurrency community—to connect the exposed PCI Express lane via the, now rather obsolete USB 3.0 connectors on the Raspberry Pi 4 board.

Replacing the removed capacitors and connecting the PCIe and USB sides. (📷: Tomasz Mloduchowski)

After tracing the pins between the PCIe and USB sides of the exposed pads of the VL805 chip, as well as replacing the necessary capacitors he accidentally removed during hot air work to desolder the chip. Mloduchowski had to hunt for a controller compatible with the Raspbian driver for the onboard VL805.

He finally succeeded in booting the Raspberry Pi with an Adaptec SAS controller attached. Although bear in mind that this isn’t going to mean that you can attach external graphics card to your Raspberry Pi, as this hack only exposes a single lane of PCIe, rather than the ×16 lanes needed by most modern cards.

That said, with the increase in USB performance we see with the addition of USB 3.0 most of the reason for PCI Express support on the Raspberry Pi has, at least for me, gone away.

Connecting an Adaptec SAS controller to the Raspberry Pi 4 PCI Express bus. (📹: Tomasz Mloduchowski)

A full walkthrough of Mloduchowski’s technique can be found on his blog, and his work does make me wonder whether something could be done to expose the PCI Express bus more easily?

We saw this with the Raspberry Pi Zero, and the discovery of that the USB bus could be access from the exposed test pads on the underside of the board. However, the pitch of the VL805 is a lot finer than the test pads on the Raspberry Pi Zero, and using pogo-pin to attach daughter boards to the PCI Express bus on the Raspberry Pi 4 probably isn’t going to be as easy as it was with the Raspberry Pi Zero and the USB bus.




Scientist, Author, Hacker, Maker, and Journalist.

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Alasdair Allan

Alasdair Allan

Scientist, Author, Hacker, Maker, and Journalist.

More from Medium

How to solve broken Python virtual environment due to Linux distribution major upgrade

DIY goal light using a Raspberry Pi

Simple Raspberry Pi Lite setup with SSH and VS Code from Linux Mint

Vscode server