Introduction: Making the Ultimate Water-cooled Raspberry Pi Desktop Computer
If you've been following my Instructables for a while then you're probably aware that I like to do unnecessary things, like building a water-cooled Raspberry Pi cluster. This was a fun project but isn't all that practical for everyday use. So in this Instructable, we're going to be building a more practical water-cooled Raspberry Pi desktop computer that can be used as a daily Linux driver.
We're going to try and give the computer all of the bells and whistles, including front-facing USB ports, a power button, an OLED stats display and an NVME drive.
I'm going to be using a CM4 module so that I can use the official CM4 IO board - I'll run through a bit more information on why I've chosen this board in the coming sections.
For the unnecessary part, I'm going to be water cooling it using a 60mm radiator and a Noctua fan. The water, or rather coolant, will be circulated by a small 5V pump that I'll be building into a custom made reservoir.
If you enjoy this Instructable, please consider voting for it in the Raspberry Pi contest.
Supplies
The list of supplies used for this project is quite extensive, but don't let it intimidate you. If you're into tinkering with electronics or making things then you've probably got a lot of these parts at home already.
- Raspberry Pi CM4 Lite 8GB WiFi (Out of Stock on Most Online Stores) - Buy Here
- Raspberry Pi CM4 IO Board - Buy Here
- 1TB Crucial M.2 NVME Drive - Buy Here
- M.2 to PCIe Adaptor - Buy Here
- Noctua NF-A6x25 FLX Fan - Buy Here
- 60mm Radiator - Buy Here
- 30mm Water Cooling Block - Buy Here
- 5V DC Pump - Buy Here
- 10mm Flexible Tubing - Buy Here
- Opaque White Coolant - Buy Here
- USB Splitter Cable - Buy Here
- I2C OLED Display - Buy Here
- Ring Light Power Button - Buy Here
- Breadboard Jumpers - Buy Here
- M2.5 Brass Standoff Set - Buy Here
- M2.5 x 12mm Button Head Screws - Buy Here
- M3 x 8mm Button Head Screws - Buy Here
- Matt White, Clear and Black 3mm Acrylic Sheets (Best Sourced Locally) - Buy Here
- Dupont Connector Set - Buy Here
- Black PLA Filament - Buy Here
- White PLA Filament - Buy Here
I've also used the following equipment or tools to complete the project:
- K40 Laser Cutter/Engraver - Buy Here
- Creality Ender 3 V2 3D Printer - Buy Here
- Xiaomi Pencil Electric Screwdriver Set - Buy Here
- Dremel Versatip Soldering Iron - Buy Here
- Dupont Connector Crimpers - Buy Here
Some of the above parts are affiliate links. By purchasing products through the above links, you’ll be supporting my projects, with no additional cost to you.
Step 1: Let's Look at the Hardware We're Going to Use
Before diving straight into building the computer, let's start out by taking a look at the hardware that I've chosen to use.
I've decided to use the Raspberry Pi CM4 IO Board because all of the ports are on one side and it's got two full-size HDMI ports. It's also got a number of neat features like external USB port header pins, a J17 barrel jack for 12V power, a 12V Molex fan connector with a fan controller and a full set of GPIO pins in the same layout as the other Pi models.
I'm going to add a CM4 Lite module to this board. I've chosen a variant with 8GB of RAM as well as WiFi and Bluetooth connectivity. The "Lite" refers to the fact that it doesn't have any onboard eMMC storage, but we're not going to use this in any case as we're going to use an NVME SSD.
The NVME drive I'm using is a 1TB M.2 NVME drive by Crucial that I'll plug into the PCIe slot on the IO board using an adaptor.
For cooling, I'm using a 60mm radiator which will be cooled by a Noctua NF-A6x25 FLX fan and we'll circulate the coolant with a 5V pump going through a 40mm aluminium cooling block on the CPU.
On the front of the case, I'm going to add an OLED stats display, a power button with a LED ring light to show that the computer is on, and two front-facing USB ports.
Step 2: Designing the Desktop Case
Now that we know what we need to fit into the case, let's move on to the actual design.
I designed the case in Inkscape, to be laser cut from 3mm acrylic. Five of the sides will be cut from matt white acrylic and the remaining large side panel will be cut from clear acrylic so that the internals are visible. I've then also got some small white and black accent pieces and a bracket to hold the cooling block in place over the CPU.
I designed some 3D printable corner pieces in Tinkercad to hold the acrylic panels together. These also enable screws to be used to secure the clear side panel so that it can be removed for maintenance.
I modelled the rest of the case in Tinkercad as well, just to get an idea of what it would look like. I made some small design adjustments along the way until I was happy with the final design.
Step 3: Laser Cutting & Assembling the Case
With the design done, I laser cut all of the acrylic components on my K40 laser cutter.
I then peeled off the protective film on the inside of each panel and began gluing them together, using the 3D printed corner pieces as supports. I used superglue to glue the acrylic to the 3D prints and I used weld-on 3 to glue the black acrylic accent pieces and cooling block bracket together. I left the protective film in place on the outside faces so that the acrylic doesn't get dirty or scratched while I'm assembling it.
I glued the five white side panels together, allowing access through the remaining clear side panel which is just held in place with four M3 button head screws.
Step 4: Installing the CM4 Hardware Into the Case
I started out by plugging the CM4 module into the IO board and mounting the cooling water block onto it. The bracket holding the cooling water block in place is secure with some M2.5 brass standoffs, M2.5 x 12mm button head screws and some nuts. I didn't tighten the nuts underneath the CM4 module as this causes the module to bend - and I didn't want to risk damaging any of the surface mount components or traces.
I then mounted the IO board into the case using some M2.5 brass standoffs which are supported by some 3D printed feet. The 3D printed feet can then be glued into place on the side panel to hold the IO board. I chose to go this route rather than drilling holes through the acrylic side, which would then be visible on the outside of the case.
Step 5: Adding the Front Panel Components
The fan is just mounted onto the radiator and then mounted onto the front of the case using the included screws. I laser cut a small Raspberry Pi logo which I stuck onto the radiator using some super glue as well.
I glued the USB ports into place with a 3D printed holder and then cut the end of the cable off of each and used some Dupont connectors to make up a 4 pin header that can be plugged into the breakout on the IO board.
The I2C OLED display is also held in place with a 3D printed bracket and is connected to the relevant GPIO pins using some 20cm breadboard jumpers.
Finally, the power button I just held in place using a retaining nut on the inside and I soldered on some female jumpers to plug into the relevant IO pins. The led pins are connected to the 3.3V supply on the GPIO header and the switch contacts are plugged into pins 13 and 14 as per the documentation.
Step 6: Making the Reservoir & Connecting the Cooling Loop
I couldn't find a reservoir that was small enough to fit into the case, so I had to make my own. I used a small clear container which I trimmed to be slightly longer than the overall height of the pump. This is easier than trying to make up an acrylic tank and hoping that it would be watertight.
I designed some 3D printable end caps for it to hold the tubing and close off the open end. I glued these into place using some hot glue to create a bit of a seal. This doesn't need to be watertight, but just stops and unintended bumps from leaking.
I then mounted the reservoir onto the side of the case using some foam strips and routed the flexible tubing to the radiator and cooling block. I installed the reservoir near the top of the case to minimise the risk of overflowing and to make it easier to re-fill.
Step 7: Finishing Off the Case
Now that the cooling system is installed, I can install the NVME drive in the adaptor and then plug it into the PCIe slot on the IO board.
I then filled up the reservoir with opaque white coolant. I ran the pump a couple of times to bleed out any air and kept topping the reservoir up until it no longer ran low. The opaque white coolant looks really nice, but it'll be good to eventually get some white sleeving for the wiring as well.
I then stuck the white accent pieces onto the 3D printed corners and peeled off all of the protective film on the outside of the case.
Step 8: Using the Raspberry Pi Computer
I'm now running Raspberry Pi OS Bullseye on the Pi, and I obviously had to do a bit of setup to get it booting off the NVME drive, to get the OLED display to show the computer's stats and even to activate the USB ports because they're disabled by default.
But now that that is all working, it's a great daily driver for Linux based computing. I can use the front-facing USB ports for documentation and basic peripherals - I suspect that they're USB 2.0, although I haven't confirmed this in the documentation.
Let me know what you think of my Raspberry Pi computer build in the comments section below and let me know if there is anything you would have done differently. I was thinking of perhaps making the GPIO pins accessible through one of the 3D printed corner pieces.
If you enjoyed this Instructable, please consider voting for it in the Raspberry Pi contest!