3D-Printed case for BPI-R4: wind tunnel cooling, USB serial, wall-mounting option

I like what i see! , i wish this was the main case design

1 Like

It looks beautiful! how are you powering the fans?

1 Like

Check the link to the MakerWorld page. There are detailed instructions on wiring the fans.

1 Like

Big thanks for doing this. This looks amazing. Smart idea to include the serial to USB Adapter. And that heatsink for the wifi NIC looks crazy good and effective.

1 Like

This case looks amazing!

Only one thing (of course :smiley: :wink: ) it looks like the space between CPU and case is very small. Did you have a heat sink at the cpu? I also use a 5g modem which gets very hot, without a heatsink this is not possible. If the board and the fans would be exactly in the middle than you would have enough space for both sides.

The antenna ground and the port for UART is a very nice idea :slight_smile:

This as a metal case would be brilliant :smiley:

1 Like

There’s 22.8 mm of clearance between the PCB and the case on the SoC side (not counting the SoC package height). This is plenty for a 15 mm tall heatsink, which is what I used.

Of course for the cpu, this is not the problem, but the 5g modem on the m2 socket is about 1cm above the board. But maybe with the airflow is enought :thinking: the queltec rm520n gets about 60 degrees without heat sink (75 is allowed max) :thinking:

However, @sinovoip should get inspired by your case design :wink:

1 Like

A 5–7 mm tall copper heatsink for the modem should, hopefully, be good enough. I’m going to try it with a 4G modem, which I bought recently, and see how it goes.

1 Like

This case design is very good and i think it fits nice to the board design. Left fan is blowing above sfp and cpu, right fan above modem and ram. So with a tiny heat sink it should be enough (it’s just cause i have 11mm copper height plates at home :rofl: )

This case gives me a lot of inspiration :smiley: Best solution would be to combine modem and cpu heatsinks somehow :thinking: (saw that long time ago with a round copper bridge for an asus mother board to cool north and south bridge with one heat sink)

Are the fans screwed? Or only fixed by the case? Cause something like a optional dust filter would be also a very special feature i think :smiley:

Each of the fans is slotted into its own holder, which secures it horizontally, then the studs sticking out of the bottom part keep the fans from moving vertically. So, no screws. Dust filters would be a good addition, I’ll give it a thought. Thankfully, the holders are slightly oversized, so they could accommodate a very thin mesh. Better yet would be to make circular 3D-printed frames for the Noctua fans, which would hold a mesh (like a window fly screen) and sit flush agains the surface.

Would love to see a way using a dust filter :slight_smile: maybe the space is enough to use a dust filter with a small metal mesh

https://www.amazon.de/XINGLIDA-Staubfilter-Computer-Schwammgewebe-Schwarz https://www.amazon.de/YEYONG-Staubfilter-PC-Gehäuse-Staubschutz-Staubschutzabdeckung https://www.amazon.de/YIMATEECO-Gehäuselüfter-Lüfterabdeckung-Netzabdeckung-Schutzgitter/

Good day, great job.

I am printing your model and a question arose, could you model Plate 2 - Back for 2.5GbE and 2.5GbE + PoE versions?

I was considering doing that after buying a 2.5 GbE version, but I ended up getting another 2xSFP+ and can no longer verify the dimensions of the back panel for tight fit. If you have one on hand, you can actually help with that by measuring the width of the 2.5 GbE connector housing and the height (from the PCB or together with the PCB) as accurately as possible with calipers. The official DXF is of little help here, as the manufacturer can change parts suppliers freely.

If you can, and doing custom case, you can and make special pockets in side walls, avoid antena cables going across the PCB, route those straight over the edge and then to the connector.

This is a neat idea. But in this case, the pigtails absolutely have to be facing away from the Mini PCIe connectors to avoid picking up RF noise from the main PCB.

Cool design!

I’ll attempt the project very soon, just one clarification. You mention to source “2 × Noctua NF-A4x20 5V PWM”, but these are 4-pin fans, and in the guide you only say to plug 3 “The fans can be connected in parallel to the GPIO header instead; pin 4 is 5V, pin 6 is GND, and PIN 7 is PWM;”.

Are you using an adapter from 4 to 3 pins?

The extra pin of each fan is a tachometer output. You can leave those disconnected or connect them to the unused GPIO pins for RPM monitoring (check out this tool). For my build I just cut off the fan connectors, soldered on extension wires and crimped female Dupont connectors onto the ends. I also reused the sleeve that came from the factory and secured it with heat-shrink to make the harness look tidier.

wiring

1 Like

I appreciate your answer. I was able to make it work perfectly. I have a few more questions:

  • Use this script for OpenWrt which reads all temperature sensors in hwmon and adjusts the fan speed according to the highest reading; you can dial in your own temp thresholds there
  • Put the script into /opt (or any persistent directory) with the following command (if using Linux or macOS): scp -O /…/fan_pwm.sh [email protected]:/opt/
  • Make it executable: chmod +x fan_pwm.sh
  • Make it run at startup: sed -i ‘/^exit/i /opt/fan_pwm.sh &\n’ /etc/rc.local

For a common mortal that is approaching this from a 0-knowledge perspective, how do I do this exactly? I was capable of making the script run from ssh, but I don’t know how to save that and make it run on startup.

  • Rather than making the grounding strips by hand, order them to be laser-cut instead—it’s likely to cost less than your time spent measuring, drilling and cutting

Are there any CONS in not using the grounding strip? I installed everything without it, and it’s working decent.

Oh, BTW, just for laughing a bit, instead of soldering the EMI shielding, I used superglue :sweat_smile: :rofl:

Regardless, before I was somewhere at 78/79 noise, now I sit at around 85. It’s still progress!

For a common mortal that is approaching this from a 0-knowledge perspective, how do I do this exactly? I was capable of making the script run from ssh, but I don’t know how to save that and make it run on startup.

If you’re creating the script on the system rather than transferring over:

  1. Install a text editor with apk add nano or ipkg install nano depending on your OpenWrt release, if not already installed
  2. Run nano /opt/fan_pwm.sh
  3. Copy/paste the script code into the editor; make changes to the temperature threshold values if desired
  4. Press Ctrl+X, then Y to save
  5. Run chmod +x /opt/fan_pwm.sh to make the script executable
  6. Run sed -i ‘/^exit/i /opt/fan_pwm.sh &\n’ /etc/rc.local to make it run on startup
  7. Verify by running cat /etc/rc.local; you should see the line /opt/fan_pwm.sh &
  8. Run /opt/fan_pwm.sh & to launch the script without rebooting; you should hear the fans slow down
  9. For further tweaking of the temperature thresholds, go back to steps 2 and 4
  10. Install the luci-app-statistics and lm-sensors packages to track the temperature

Are there any CONS in not using the grounding strip? I installed everything without it, and it’s working decent.

In my experience, the improvement from the grounding strips and EMI shielding together was marginal, but that could change depending on how congested your Wi-Fi environment is. I also hope the BE19 will be inherently less susceptible to noise to benefit from extra grounding.

Changes in v1.1

  • Added back plates for the 2.5GbE version. Can’t test for fit, as I don’t have a 2.5GbE version to verify dimensions. Adjust the STEP file if necessary. There’s also not enough room to use the PoE module and TTL to USB adapter in the same device and I gave up on finding alternative placement for the adapter.
  • Corrected an error which made one of the baked-in support fins on the back plate disconnect from the model after slicing.
  • Revised and expanded documentation.
1 Like