RPi4 cooling

Hi,

a simple idea, how to mount a hat “onto” the RPi4 with a (big) heat sink. Not compatible with the current official Zynthian case, but perhaps an idea for the next generation?

1 Like

I’ve a simpler and better solution. Passive cooling using the aluminum case as heat-sink:

I’ve been testing with a prototype made by hand and it works quite well. Temperature is 10ºC lower than using a conventional passive heat-sink or nothing.

The test sessions were quite stressing for my poor RBPi4 zynthian. It was working for hours at high ambient temperature 40-45 ºC :wink:

At this temperature, i tested with 2 different stress-generator binaries:

  • stress => put the 4 cores to 100% using C compiled code
  • cpuburn => put the 4 cores to 100% and try to maximize the heat production by using customized assembler code.

You have to realize that both of these stress-generators put the RBPi, miles above any real-world zynthian use-case. Also, the ambient temperature of 40-45ºC is, probably, above the maximum temperature that any person with a sane brain will try to use a zynthian. And i say “probably” because i’m pretty sure that some of you will try go above that … :crazy_face: :crazy_face: :rofl:

This is the script used for testing:

echo "Stage 1: Repose => 5 min"
sleep 300

echo "Stage 2: Stress => 20 min"
stress -c 4 -t 1200s

echo "Stage 3: Repose => 5 min"
sleep 300

echo "Stage 4: Stress => 20 min"
stress -c 4 -t 1200s

echo "Stage 5: Repose => 5 min"
sleep 300

echo "Stage 6: CPU Burn => 20 min"
timeout 1200s ./cpuburn-a53

echo "Stage 7: Repose => 10 min"
sleep 600

#Total Time: 85 min

I repeated the tests with 3 different configurations:

  • Nothing:

Comments:

  1. As you can see, a “normal” heatsink doesn’t produce any measurable effect. It’s RBPi decoration. My theory, “the real problem is putting the heat out of the case”, is confirmed :medal_sports: :medal_sports:

  2. The heat-conductor prototype (zynthuctor) reduce the temperature for a good amount (~5-10ºC). Enough for not triggering the frequency cap on the first 2 rounds with “stress”. “Cpuburn” put the zynthian to boil in all the cases. At a normal ambient temperature of 15-35ºC and with a maximum CPU load of 70-80% (without generating lot of XRuns) the zynthuctor is capable of maintaining the temperature at a very acceptable level of 50-70ºC, far enough from the 80ºC and the freq-cap.

Final Conclusion:
The “zynthuctor” seems to be a valid solution for our problem of avoiding “frequency capping” under any reasonable use-case of zynthian. So the next zynthian kit v4, when available, will include the “zynthuctor” and will avoid using active cooling. Yesssssssssssssss!!!

Enjoy!

13 Likes

Sounds good! Glad you guys have zeroed in on a solution. The reports of heat issues are the one thing that has stopped me modifying my existing case. Will drop an order for a new pi4 kit as soon as they are available.

[quote=“jofemodo, post:2, topic:3873”]
How does the zynthuctor attach at both ends?

It uses autoadhesive thermal tape. You have to be quite precise when placing the zynductor, because a good contact is requiered for achieving a good result, but i think most of people is perfectly capable if doing so. Anyway, i suspect rbpi4 over heating has been exagerated. At less in our use case (no GPU processing), it’s reallly difficult to reach caping (80 C°) with ambient temperature at a reasonable range of 20-30 °C.

Regards!

I do not own a Rpi 4, but I’ve heard that the last raspberry foundation eeprom update (published in november 2019) has significantly decreased the power consumption and the temperature.

Nice hardware hack btw :+1:

great :joy::rainbow:

@jofemodo How do you log cpu temperatures during the test? Does the script output log-files?

No, the script above is only for the “stressing” procedure. The temperature logging has been performed with 2 differents programs.

  1. For the CPU temperature i used:

    vgencmd measure_temp

  2. For the ambient temperature i used a DHT11 sensor, that i connected directly to the zynthian’s RBPi GPIO. I used a self-made program for reading it. As you can see, when the CPU was really busy, the program couldn’t manage to read the sensor and you can see the data holes in the plots. I think is not really important because the ambient temperature is more or less constant along the experiments.

Regarding the program that interfaces the DHT11, i didn’t have it here. It’s in my lab at Barcelona, so … if you want to repeat the experiments, you have to wait some weeks or write your own, what it’s not too difficult …

Regards,

1 Like

I have a Raspberry Pi 4 2Gb ordered to upgrade my Zynthian Kit V3. To all the people with Pi4 experience: what is currently the easiest way to keep the CPU temperature under control? I would like to stick to the V3 case (after some hand filing of course) and not order a new kit, but I think the Zynductor is not sold separately… Is there a tried and working DIY heatsink solution?
Thanks!

Pi4 doesn’t have a heat problem, don’t sweat it.

Well… It can. If you push it hard with hungry engines it can start to throttle so it is worth adding a heatsink. Also consider how to vent that got air. I have a large heatsink on my RPi4 which has a fan but that isn’t connected and it stays around 55C which is below the throttle set-point.

I have nothing and it sits at 65C, which is also below the throttle point.

Thank you for the quick response! I think I have a relatively light use case, I just want to be able to run all the synth engines / patches without xruns but one layer at a time is fine for me. Based on your recommendations I will first try without a heatsink and think about DIY-ing something should I run into problems with throttling.

I had Problems after 3h and a temperature of 73 degrees. And than the sound was distorted.
Now i have added a selfmade passive alucooler like it is shown for the new zynthian and my max temperature is 65 degrees. And noprobs.

1 Like