Malolo's screw-less / snap fit customizable Raspberry Pi 4 Case & Stands

Community rules
1. Be kind and courteous
We're all in this together to create a welcoming environment. Let's treat everyone with respect. Healthy debates are natural, but kindness is required.

2. No hate speech or bullying
Make sure everyone feels safe. Bullying of any kind isn't allowed, and degrading comments about things such as race, religion, culture, sexual orientation, gender or identity will not be tolerated.

3. Only 3D printers advertised.
Only 3D printers or directly related product may be advertised. If you post anything else it will be moderated and you will be banned.

4. Replying to posts
If you reply to a post, make sure your reply is connected with the main topic, do NOT take a topic off track.

5. All post are moderated
Every post on here is moderated - always. Don't bother joining unless you have works to share or problems to inquiry about 3D printers. That is all that will be allowed on this group.
Post Reply
User avatar
Posts: 816
Joined: 2020-06-24 1:56



Download Link:
Hidden Content
This board requires you to be registered and logged-in to view hidden content.


Please note: This is an adapted version of my
Raspberry Pi 3 case
that I modified to fit the Raspberry Pi 4. I do not yet own the Raspberry Pi 4 myself. However Thingiverse user
was kind enough to patiently print several iterations of the case and send me pictures to check the fit. Thank you Sebastian :-).

Since I did not yet print this thing the pictures only consist of a few renders. If you want to see how it will look printed please have a look at the
Raspberry Pi 3 version
. It's the identical case but with a few differences due to the different board layout of the Raspberry Pi 3 .

If you want to use the Customizer script you have to download the file separately from the "Thing Files" tab since it is not included in the zip file form the "Download all Files" button.

There already is a plethora of raspberry pi cases on Thingiverse and the last thing we need is yet another one ... well - I created one anyway ... because I wanted to and I had a lot of fun doing it :-).

I tried to achieve the following key features:

Easy to print without support (no steep overhangs or long bridges and stuff).
Top and bottom layer printable on print surface (so I could make good use of my recently acquired awesome powder-coated/textured print sheet).
No screws or glue needed (snap fit).
Slim/compact outline.
Acceptable ventilation without fan.
Good looking (very subjective - I know).
I also wanted a stand to put it on.
I tested the Raspberry Pi 3 version with 0.2mm and 0.1mm layer height. Both worked well so this settings will also work for the Pi 4 version. I would recommend to use PETG for better heat resistance.

If you have any questions, suggestions or requests don't hesitate to let me know.

There are several different designs for top and bottom

Base design without ventilation holes
Hexagonally shaped ventilation holes
Simple slot shaped ventilation slots
Hexagonal mesh covering the whole bottom
Base design without ventilation holes
Hexagonally shaped ventilation holes
Raspberry logo as ventilation holes
Simple slot shaped ventilation slots
Hexagonal mesh covering the whole bottom
There are three different stands

Vertical stand
Horizontal stand
Flat stand
The vertical one also has a version that routs the Rasberry Pi status leds to the front. To achieve this you have to print the file "Stand_Vertical_LED_Guide.stl" twice using a transparent filament and slide it into the according holes of file "Stand_Vertical_LED.stl". It's difficult to explain - just have a look at the pictures.

OpenSCAD Customzier scripts
Since I wanted to add more variants and features but still give people the choice which features they want, I came up with a solution in form of OpenSCAD Customzier scripts. The model itself isn't designed in OpenSCAD. The scripts just cut/combine different imported stl meshes to generate the desired result. The downside of this is, that I can not use the scripts as customizer on Thingiverse since importing external files is not supported in that scenario.

I still added some ready-to-use stl mesh files but none of those contain accessory slots (for camera and display cables or to have access to the pins). If you need those you can generate a custom stl file via the customizer scripts.

Please note: OpenSCAD really does an excellent job at combining mesh files (unlike Meshmixer which is a bit of an irony). The rendering process may take a few minutes though.

Important: For the customizerscripts to work properly you will need all of the stl mesh files that start with "z".

Using the customizer:
Download and run OpenSCAD. I highly recommend to get the latest 2019.05 version since that one has a built in cutomizer gui.
Unzip file ""
Open one of the scripts in OpenSCAD (the files named "...Color1..." are used for single material prints as well).
Press "F5" on the keyboard to show a preview.
Unfortunately the regular preview has some glitches. To get a less accurate but better looking preview of the end result press "F12" to switch to the "throw togehter" view.
You can rotate the preview by pressing and holding the left mouse button and moving your mouse
On the right side of the window you will see the customizer.
There are several categories that you can expand to reveal the setings they contain.
Choose the settings you like. Changes should be displayed almost instantly.
To render the final result press "F6".
To save the result as stl file press "F7".
Cooling fans
There are two options to mount a 30mm or 40mm cooling fan:

Screwless version with rails/sled (see image)
This is designed to fit a 30mm PI-FAN or a 40mm Noctua NF-A4x10. Others may fit as well but I only tested those two.
The orientation of the sled matters. Make sure you slide it in the correct way.
Scew holes
This should work for all fans - just use screws to attache the fan as you normally would.
Hint: You do not have to use a dedicated fan hole. You could for instance just use the mesh version and only add screw holes. The Hex or Logo versions might also work very well without a dedicated fan hole.

Multi-Color printing
I don't have a multi material printer but learned that you can create a multi material print pretty easily without special hardware (as long as the multi material part does not span over to may layers - otherwise it gets a pita). By multi material I don't mean switching filament at certain layers (which would not have worked in my case because I wanted the top and bottom layers to be on the print surface) but a true multi color print (as seen in the pictures). Here is a short instruction of how it works:

I used Prusa Slicer for this but I guess it would work with the original Slic3r in a similar way

Setting up Prusa Slicer
In Prusa Slicer go to the "Printer Settings" tab.
In the "Printer Settings" tab go to "General" settings.
Under "Capabilities" increase the number of extruders to the number of colors you want to print.
For each extruder you will get an entry on the settings list on the left ("Extruder1", "Extruder2", "Extruder3", ...).
I would recommend to change the "Extruder Color" under "Preview" in the extruder settings for each extruder. This is not important but it will give you a better preview of the result making life a bit easier.
In the "Custom G-code" settings add "M600" to the "Tool change G-code" (M600 is the G-code command for a manual filament change).
Setting up you print
The versions of the case that are intended for multi color printing have each color in a separate STL file.
On the "Plater" tab click the "Add" button and select the STL files for all colors at once ("at once" is important here).
When more than one extruder is configured and you add more than one file at once Prusa Slicer will ask you "Multiple objects were loaded for a multi-material printer. Instead of considering them as multiple objects, should I consider these files to represent a single object having multiple parts?". Answer "yes" to this.
Check the preview to make sure the colors are what you want. If the colors are not correct you can change them by assigning another extruder in the STL file list on the right (second column).
Hit "Slice now" an transfer the G-code to your printer.
Whenever your printer reaches the M600 command it will pause outside the print area and prompt you to switch filament (supposedly your printer supports the M600 G-code command).

Some Tips
The order in which filaments are changed is not consistent. I got around this problem by adding the M600 command to the custom Tool change G-code setting as follows "M600 ; Switch to Extruder [next_extruder]". "[next_extruder]" is a placeholder that will be replaced during slicing. I then exported and opened the G-code file in a text editor and searched for the M600 command. I then created a checklist for each filament change to keep track of which filament has to be inserted next. Please keep in mind that extruder numbers in the G-code file are zero based. This means that extruder 0 in the G-code file is actually "Extruder1" in the Prusa Slicer UI.
When using the Original Prusa i3 MK3 the printer will extrude quite a bit of filament right after you confirm completion of the filament change to build up nozzle pressure. To avoid this extruded filament to be be dragged over to your print and make a mess don't remove the filament that is extruded during the filament change, so it will be easier to grab the whole thing. Before confirming completion of the filament change get ready to pull the filament waste away when the print head starts moving.
This all probably sounds more complicated then it is. Once you understood how it works it's actually pretty straight forward.

Naming scheme for STL files
There are quite a few different versions of STL files. There are different designs and for each design there are different options with regards to slots for camera and display cables and an access slot to the pins. To help you pick the right files I used the following naming scheme:

Bottom = bottom part
Top = top part
Base = base design without ventilation holes
Hex = hexagonally shaped ventilation holes
Logo = raspberry logo as ventilation holes
Slots = simple slot shaped ventilation slots
Multi Material
SM = single material
MM = multi material (X = number of different colors)
Cam = contains a slot for camera cable
Disp = contains a slot for display cable
Pins = contains a slot for access to the pins
If you are unsure which file to pick just open it in your slicer and see what it looks like.

OpenSCAD Customzier scripts have been added
Several versions with cooling fan support have been added
New case style "Mesh" for top and bottom has been added
Fixed a missing hex tile in the bottom mesh version
Reworked side slots
Added versions with mesh on the sides
Added versions with Pi-Hole logo
Changed all STL files from ASCII format to Binary format and re-uploaded them. This seems to finally have resolved the problem of missing files in the the zip file.
Added stand versions for the extended height cases (H20)

Created by Malolo in

Post Reply