The release of the Raspberry Pi 4 brought us a new SoC, up to 4 Gigs of memory, and most importantly, got away from that janky USB to USB and Ethernet solution. The Raspberry Pi 4 has a PCI Express interface buried under some chips, and if you’re very good at soldering you can add a PCIe x1 device to the new best single board computer.
[Thomasz] took a look at the Raspberry Pi 4 and realized the new USB 3.0 chip is attached to the PCI Express interface on the SoC. That is, if you remove this chip and you have some very fine wires, you can patch in a real PCI Express slot. Removing the chip is easy enough with a hot air gun, although a few caps did get messed up. Throw that in an ultrasonic cleaner, and you have a blank canvas to work PCI magic.
This hack requires six wires, or three differential pairs, there’s a reference clock, a lane 0 transmit, and a lane zero receive. Working backwards from a PCI Express riser, [Thomasz] traced out these connections and soldered a few wires in. On the Pi side, a few capacitors were required to be compliant with the PCI Express spec, but the soldering isn’t too bad. You can do a lot with a small tip on an iron and a microscope.
The Pi was successfully wired up to a PCI Express riser card, along with the lines for ground, 5V, link reactivation, and a power good signal. The only thing left to do was to plug in a PCI card and test. This didn’t go as well as expected, because the PCI Express adapter didn’t like being enumerated by the Raspberry Pi kernel. In subsequent experiments, an Adaptec SAS controller worked. Does this mean external graphics cards for the Pi? No, not quite; this is only one lane of PCIe, where modern graphics cards require an x16 slot for the best performance. Still, if you’ve ever wanted a SCSI card for a Pi, this is the best option yet.
71 thoughts on “Giving The Pi 4 PCI Express”
Now we are talking !
I really want a PCIe slot on future raspi boards. The kind that laptop wifi cards plug into. With that it’s not too big of a stretch to connect a PCIe extender or even a port multiplier and some cards.
I really really hope they update the compute module with the newer SoC. I’m dying to do more with it.
>I’m dying to do more with it.
Out of curiosity, what do you do with it currently? I’ve always wanted to play with the CM but never had a justification for the effort and expense it would need.
“No, not quite; this is only one lane of PCIe, where modern graphics cards require an x16 slot for the best performance.”
Well, “require” is a bit of a strong wording there, “prefer”, or “like” might be better.
Since one can indeed run a modern GPU on a 1x slot, without too much downsides. Since there actually isn’t all that much data floating between GPU and CPU when running things like games. Though, more is indeed better until it gets pointless.
Yup, a few years back We got 6 monitors running by getting old e-waste x16 cards and trimming them down on a ban-saw to fit into 4x 8x and 1x slots of a server from the same e-waste dumpster. good times.
I have for a long time been hoping to find such an E-waste pile again and get another go at some interesting poking about with really cheap stuff again.
Canada is messed up putting it nicely.
In Canada you can goto jail for going into the garbage. Or Bin diving.
When I goto the garbage place and see all that great and wonderful stuff I cry for the old-days.
Start your own E-waste business.
Beat me by a few hours ;-P I’m working on my own spin on this, don’t worry!
It would be awesome of the PI manufacturers offered a version with the pci-e slot on board…. standalone ZFS fileserver just add your SAS or SATA card and harddisks, anyone?
Sounds cool, but I have a nagging feeling the RPi group wouldn’t allow it.
They’re fine with it. Farnell is one of the manufacturers and they have a customisation service where you can have a RPi designed + manufactured to your requirements. It isn’t cheap and there are large MOQs though. Search for “Raspberry Pi Customization Service”
Quick someone do a crowdfunding campaign!
I requested a quote from them for a custom board. once i find out pricing ill start a campaign on gofundme
The recommendation (to have the ability to recover from a disaster scenario) is 1GB of RAM per TB of storage, and up to 5GB of RAM per TB if data deduplication is enabled. (ref: https://wiki.freebsd.org/ZFSTuningGuide ).
If ZFS is your goal a a big with a glut of RAM would be better. All excess RAM gets used for read ahead caching, so more RAM with ZFS is always better. An Odroid-H1 with support for 32GB of RAM and dual gigabit NIC’s would be a better choice or any cheap mini-ITX board, some support 128 GB of RAM (with up to 5 LAN ports and up to 7 SATA ports). Would make a much better choice for a cheap NAS.
Their recommendations are a bit exaggerated, just like system requirements for games if you actually know how to tweak it and what you really need.
Seems mostly so they got their asses covered in case a novice decides to check ZFS out.
I got away with 4GB ram for a 4disk RaidZ array of some slooow 1.5TB 3.5″ disks for about 8 years, even with resilvering twice due to two disks crapping out and routine checks every weekend, all thanks to fine tuning it to my needs and not using the more exotic features.
So I do expect some fast 2.5″ 2TB disks isn’t gonna pose a problem in a RaidZ array for a power efficient fileserver.
I’ve used ZFS with Solaris since it was first introduced in 2006, so I don’t disagree if people only do sensible things, but …
There’s no safeguard against stupid users, hence why there’s warning labels on microwave ovens and shampoo bottles.
Funny enough, that’s one of the things which I’d use a 4GB model for.
Admittedly I was pondering about going the safe route with two USB3.0 hubs and 4 USB3.0 to S-ata adapters.
But a dedicated 4port S-ata HBA solution would be MUCH preferred.
Top it off with exchanging the micro-sd socket for some eMMC socket with 8 data lanes in lieu of what HardKernel does with their boards (and maybe also a decent sized heatsink) and you got a recipe for a power efficient home server.
GPIO’s could still be used for logging purposes of various sensors and for wireless bridges to some low power wireless “IoT” sensors and actuators.
Yeh I saw this and was like… I can finally shut off my AMD file server that uses 200 watts of power
May i recommend the asrock Q1900 as a base for a low power server, fanless, has been hosting zoneminder with 5 HD cameras, nextcloud, and a few other services for years with a pcie 4x sata addon card. never missed a beat and consumes little enough power for extended runtime off my UPS.
Hard drives going to be the biggest user regardless.
hmm, Maybe connect up a GTX1080Ti and see if NVidia’s arm drivers will see the card for some major CUDA capabilities.
Haha, at that point you aren’t modding a GPU onto the Pi, you are modding the Pi onto the GPU.
You do know about the $99 Nvidia nano. Is ARM and CUDA enabled out if the box
I’d hotwire an M.2 drive onto it just to de-bottleneck the storage. Or maybe a sata controller to build a NAS.
After all these years,
I still see Naval Air Station when I see NAS
AKA non-floating, fixed position, aircraft carriers.
Royal Navy shore establishments are informally known as ‘stone frigates’, and they all have a warship name – RNAS Culdrose, for example is HMS Seahawk.
This is historically partly due to old ships being used has accommodation, and partly because the Naval Discipline Act applied only to ratings and officers on the books of a warship.
Excellent idea to reuse the existing USB3 port.
Am I the only one picturing a cheap PCB that can be reflow soldered where the 805 was to make the bridged connections more easily?
That was exactly my first thought, a small castellated interface board!
Now that he proved the concept and the pinouts, it shouldn´t be too hard to just connect the existing pads of the chip and replacing those usb-side caps with 0-ohm resistors.
As commented in the post about that other sbc that got this kiind of modification, would it be possible to use the pin for deactivation of the chip in order as not having to remove it ?
Chances are that extra series caps would be okay as the spec allows for caps on both sides of the PCIe. So worse case is that the equivalent capacitance of all caps in series goes to 1/3 (extra one) instead of 1/2. PCIe is DC balanced, so there shouldn’t be a lot of low frequency contents.
i was expecting 8 mod wires tapped on to the pads but damn, amazing work and very clever
Quick, somebody make an m.2 adapter and sell it on tindie
Do laptops and cell phones count as single board computers?
Most laptops have multiple boards I believe?
most modern ones dont, SSD, ram and CPU soldered on
but it would not count as a SBC as it comes with an attached keyboard, display and come shipped in a case (the case criteria is debatable)
I would say… mostly yes, but the cost… Most people would want an SBC in the £50 ball park, and accept a lower spec, for small size and low power.
A laptop motherboard will cost not much less than the actual laptop, be a lot more power hungry than a typical SBC, and also much larger.
However… why bother with that, when if you get with the big boys you start playing with things like…
Now THAT is everything everyone is asking for, PCIexpress slots, upgradable ram, SATA, plus it’s got GPIO’s lots of low level serial options, a ton of UARTS’s…
Crazy that the hardware is pretty much there to add PCIE to the Pi… but they didn’t bother. A Pi 4 with an M.2 slot would would be incredible. I just hate looping USB cables out and back into a drive. I remove the USB connector on a USB to M.2 card and ran some short wires to some test pads on a Pi 3. Was able to fit the card and a 64 gig M.2 SSD inside the official Pi 3 case. Still hobbled by the USB 2 of the Pi 3, but at least it’s a clean setup.
There is a knock-off that has M.2: https://shop.allnetchina.cn/products/rock-pi-4-model-a-board-only-no-wlan-bluetooth-poe
>Crazy that the hardware is pretty much there to add PCIE to the Pi… but they didn’t bother
It’s not that they didn’t bother, they used the one (?) PCIE slot to add something which can actually handle USB3, because the one major problem with the Pi, hanging over since day 1, was the crap USB speeds. It’s not like they left the port unused and unconnected.
More bulk storage would be nice but wow you guys must have some cool stuff in mind if you’re maxing out an SD card! Faster booting and app loading would be nice, but once it’s running I suspect the 4GB of ram will make things run fast just from cache.
I think I’d rather have a second microSD or better yet full size. M.2 PCI is a bit expensive for anything except a laptop.
I could envision some sort of FPC interposer with a PCI-e bridge chip, and one of the USB3 ports being repurposed for PCI-e. Relatively simple, a little bit hacky but could be made to look elegant and low profile. Would still allow for 3x USB to work and use of cheap PCI-e over USB cable extender for a card.
That’s great and all, but PCIe DMA has been a nightmare on ARM from my experience. Having run Fibre Channel on an NVIDIA Jetson TK1, and various incarnations of PogoPlugs having WiFi cards that don’t perform well due to alignment issues, I’ll say thanks but no thanks. Maybe now that there are ARM servers with PCIe slots the situation will improve, but given the “limited support for devices” quoted by the manufacturers, I’m not holding my breath.
As far as I know (and I’ve only read a couple of data sheets at least) different vendors implement different things on their DMAs. For instance, the STM32F413 MCU have very different DMA capabilities than say ATSAMV71Q19. Perhaps you’ve used one that was the most appropriate for the use you needed? I’m sure it’s not ARM’s fault.
For those that are wondering: Basically the legislators have decided that trash and recycling belongs to the companies that remove it (so they can cash in on the good stuff), hence, taking it is stealing from those companies.
I routinely dumpster dive and have not had any problems, but, yes, there is the risk of prosecution.
The real problem is that people that have good stuff to get rid of tend take it to the recycling places rather than dumping it at the curb. Dumpster diving isn’t as good as it used to be. 30 years ago I used to say that you could build and furnish a house in Toronto (where I lived back then) by dumpster diving.
I usually left stuff in a box with a large “free” sign in the parking lot of my apartment building. Usually the box of goodies will be gone in a few hours. Not in garbage bins means no violating any laws. Worse case is the superintendents pick it up and trash it.
As for bylaw officers… I had one following up on my complain and it took like 2+ weeks for them to react. Chances are that they are too busy to catch you.
My local thrift store is also a collection spot for electronic recycling. I shop and use the store because I don’t mind paying a bit of money towards charity when I pickup something in good shape off their shelves.
So, for a sweet CNC system: http://store.mesanet.com/index.php?route=product/product&path=83_85&product_id=58
(But then you might as well use http://store.mesanet.com/index.php?route=product/product&product_id=338&search=7c81 )
Pcie 3.0 1x speed is enough for an RTX 2080 to fold.
If it’s pcie 2.0, it’ll be enough to run a GTX 1660.
Even for gaming, it should be good enough to run nearly all Android games at full speed.
I’ve read of a very similar mod, but on the Thinkpad X220– the i7 models have USB 3.0 ports via a Renesas µPD720202. The i5 models use the same system board minus the Renesas chip– therefore you’re free to solder wires onto the unpopulated solder pads(!!). IIRC this was done to gain a second PCIe lane for an eGPU setup (the Expresscard slot provides the first lane).
Pi PCI – Check
Pi Usb 3 not following standards – Check
I swear I already saw this covered here over a week ago?
It was another brand of board. Same idea, though.
Why not cut the traces on the board, put in some single pin headers and then……. Would seem much easier approach. Now I am intrigued on PCI express with the RPI4.
Question, could you not just jumper the pci lane in to the usb 3 port out .
An get one of those external pciexpress adapters that use a usb 3 cable as an interconnect, just re task one of the now
unused usb 3 ports…
Cause I just have such a pci express 16 slot 1x only adapter, this way clean an simple mod to the pie point to point
around the removed ic pads nice an tidy…
External plug the usb3 to the pi.on my external kit I need to supply a 4 pin molex to the pci 16 slot adapter
why would this not work…
I thought I read the site , oops good job…
Now what page did I have open that made me not see this, don’t post to HaD before coffee….
>Removing the chip is easy enough with a hot air gun, although a few caps did get messed up.
There is polyimide tape for this. The chinese stuff is fine and cheap, search for the brand name “Kapton” (and you will get Koptan or Kepten or stuff like this).
I like to use tin foil coated in “kapton” tape for focusing the heat from a hot air gun on the desired target(s) while shielding those I want to leave alone.
Pi 5 had better have at least 4 maybe even 6 lanes ! SD Express/microSD SD will take one, as will the USB3. An M.2 hat would be awesome !
Anyone figure out the Ethernet chip yet ?
You could use plug a PCIe splitter card with a 1:4 PCIe switch to the hack. It won’t give you 4 real lanes to the Pi as they share the 1 upstream lane. It drives 4 PCIe slots.
these are highly chipset-specific, IIRC, so I am not sure this would work. I can check a bit later, though ;-P
There is a board that takes the current compute module and breaks our mPCIe. So was it there in previous versions??? Or did they cheat with a usb chip?
They don’t seem to have actual PCI-E signals on the mPCI-E slot, just USB (judging by their datasheet).
I believe that serial capacitors are required only on the rbpi4 soc TX side of the pcie interface so You can remove these two on the RX side. Yes, on the RBPi4, near VL805 we can clearly see 6 capacitors but this is because PCie (on rbpi4 board) is an internal interface and we have tx pair from soc and tx pair from VL805.
If You look at any PCIe slot-in card for PC , at the bottom side, You should see serial capacitors on the all tx lines going out the pcie graphics card, pcie usb card, nvme drive, and so on. On the PC motherboard You have also capacitors on the TX side.
If You added 100nF serial capacitors on the RX side and did not remove serial capacitor on the connected pcie slot-in graphics (or else) You got two capacitors in serie: 100nF and 100nF(assume that that valu is populateted on MB) which created 50nF capacitance, which is out of spec for any enumerated pcie generation(link speed).
I dont know how so low value of capacitors will affect low frequency in-band signaling such as Receiver detect.
Anyway, nice idea. With external pcie switch it is now possible to connect few devices: nvme drive, graphics, etc.
Please be kind and respectful to help make the comments section excellent. (Comment Policy)