Making the Ultimate Water-cooled Raspberry Pi Desktop Computer

by thediylife in Circuits > Raspberry Pi

11243 Views, 144 Favorites, 0 Comments

Making the Ultimate Water-cooled Raspberry Pi Desktop Computer

Ultimate Raspberry Pi Computer Build – Water Cooled CM4 with NVMe SSD.jpg
Ultimate Raspberry Pi Computer Build – Water Cooled CM4 with NVMe SSD

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

Hardware Used For The Raspberry Pi Computer Build.jpeg
Rapsberry Pi CM4 and IO Board.jpeg

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.

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.

Let's Look at the Hardware We're Going to Use

Raspberry Pi IO Board.jpeg
Raspberry Pi CM4 Module.jpeg
60mm Water Cooling Radiator.jpeg
Crucial 1TB NVME SSD.jpeg
USB Splitter, OLED Display and Power Button.jpeg
40mm Cooling Block On Pi CM4 Module.jpeg

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.

Designing the Desktop Case

Case Design in Inkscape.jpeg
Corner Pieces Designed In Tinkercad.jpeg
Case Design Modelled In Tinkercad.jpeg

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.


Laser Cutting & Assembling the Case

Laser Cutting The Acrylic Side Panels.jpeg
Laser Cut Acrylic Case Components.jpeg
3D Printed Corner Pieces In Black PLA.jpeg
Corner Pieces Screwed Onto White Side Panel.jpeg
Black Button Head Screws To Secure Corner Pieces.jpeg
Super Glue Side Panels Into Place On Corner Pieces.jpeg
Sticking Front Panel Into Place.jpeg
Gluing On Black Accent Pieces.jpeg
Gluing Retaining Clip Onto Cooling Water Bracket.jpeg

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.

Installing the CM4 Hardware Into the Case

Mounting Standoffs onto CM4 Module.jpeg
Ports on Water Cooling Block.jpeg
3D Printed Standoff Holders.jpeg
Pi IO Board Mounted Into The Case.jpeg

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.


Adding the Front Panel Components

Securing Noctua Fan To Cooling Radiator.jpeg
Radiator Mounted Onto Front Panel.jpeg
Stick Raspberry Pi Logo Onto Radiator.jpeg
USB Ports In 3D Printed Holder.jpeg
Removing Cable Connector and Replacing it with Dupont Connectors.jpeg
Mounting USB Ports onto Front Panel.jpeg
Plugging Ribbon Cable Into I2C OLED Display.jpeg
Adding Wiring To Power Switch.jpeg
Wiring Connected To Raspberry Pi IO Board.jpeg

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.

Making the Reservoir & Connecting the Cooling Loop

Making Up The Reservoir Using an Old Container.jpeg
3D Printed End Caps For Reservoir.jpeg
Completed Reservoir With Tubing and Pump.jpeg
Foam Strip Used To Mount Reservoir.jpeg
Reservoir Mounted Into Case and Flexible Tubing Connected.jpeg

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.

Finishing Off the Case

Installing NVME Drive Onto Adaptor.jpeg
Filling Reservoir With White Coolant.jpeg
Corner Accent Pieces To Be Glued Onto 3D Printed Brackets.jpeg
Removing Protective Film From Outside of Case.jpeg

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.

Using the Raspberry Pi Computer

Completed Ultimate Raspberry Pi Desktop Case.jpeg
OLED Stats Display on Raspberry Pi Case.jpeg
Radiator On Front of Case.jpeg
Flash Drive Plugged Into Front USB Port.jpeg

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!