Home-made cooling solution for Rock 5A and other RK35xx based boards

Dear Radxa and Rockchip fans,

Today, I own 4 Radxa products and, for most of them, efficient cooling is a real problem. In this short article, I propose to share my experience on the subject: so let’s focus on the most problematic one, the credit-card sized Rock 5A, for which I finally chose a custom home-made solution.

Rock 5A is the cost effective and reduced flavor of the Rock 5B. It is based on RK3588S SoC instead of the full featured RK3588: it is more compact, looses the 4xPCIe 3.0 lanes and the M2-M key slot, but also the 2.5 Gbps ethernet speed. Originally, my order included the board in 16 GB flavor equipped with a 64 GB eMMC module, the ecoPi Pro Aluminium housing and the stock Radxa cooler.


This active cooler is small and is the only solution offered by Radxa: a short 25x25x5 mm aluminium heatsink and a tiny 25mm 5V DC fan. Given the TDP of the chip is about 12W, this means this cooler has to draw heat from a very small surface when the SoC is running under full load… about 20 kW/m2 !!!

Also, as there is no retention system (unlike on the Rock 5B board): the heatsink is simply attached to the SoC by an adhesive thermal pad… and unfortunately this intermediate layer cannot be as efficient as a good thermal paste.

Once the cooler is installed and the OS booted, we can verify that the 3-pin connector allows the fan to start on demand, but will run most of the time under light load. Even at idle in a somewhat cool room, temperature of the SoC quickly reaches 45°C and the fan starts to spin. Also, the fan pushes air from top to bottom, so air flow is difficult to detect.

Then, I used the sbc-bench script to stress the SoC and checked how it performed and monitored its temperature. Well, results depend on the ambient temperature: in my last attempt, with a mild room temperature of 23 °C, highest temperature in mining test reaches 80.4 °C, at the limit of throttling. This is much, especially considering I left the case open for this test! So, using the system at load in everyday tasks will probably shorten life expectancy of both the board and the fan! At least, this fan is not noisy, but the solution is clearly insufficient to cool the board under moderate or high loads.

In order to improve cooling, there are two main possibilities: either increase the size of both the heatsink and fan to get better exchanges or move to a pressure-based holding system, thermal paste and possibly with a heat pipe. Here, space is very limited, so the maximum exchange surface of the heatsink is about 28x28mm.

I checked for solutions and the most promising cooler seems to be KKSB high performance cooler for Rock 4C+ . Unfortunately, even if the holes on Rock5A board are compatible, the position of the SoC is not exactly the same and what about the height? I did not choose that solution because I had a case already and this nice heatpipe cooler requires another taller case (KKSB Rock 4C+ case), but also because there is some risk that the brackets cannot be used without modifications, for a total of about 45 EUR excluding shipping.

I decided to try a cheaper solution, very similar to the stock Radxa set, with three main principles:

  • increase heatsink size, especially its height as the small 4mm gap between the fan and the base plate is too short for decent air flow. The ecoPi Pro case allows up to 20 mm height for the heatsink if fan height is unchanged, so 15mm is perfect and offers 3 times more space for air flow
  • increase fan size, with 30x30 mm footprint
  • change air flow direction and add cooling holes to the case to allow better air flow rate

Here is the purchase list:

  • 28x28x15 mm aluminium heatsink I found here
  • 30x30 mm 5V DC fan with 2 pins for GPIO like in this set.
  • a decent adhesive thermal pad

The total cost including shipping is about 32 EUR, not that cheap compared to KKSB option, but with two heatsinks, two fans and enough pad surface for a dozen of attempts. The next picture shows a comparison between the stock cooler and my alternate solution, in top to bottom air flow.

Air flow should be two to three time higher for the same electric consumption at 5V, as both fan are rated 0.1 A, but if the case is closed, I also have to manage more air inlet and outlet holes or air will just move inside the small volume of the case, but it is really important to let fresh air replace hot air or cooling will still be insufficient.

So, I drilled eight 6 mm holes in the bottom plate of the case, below the board, and removed a 16 mm disk in the top acrylic plate to ease ventilation. Assembly of the fan on the heatsink was not too difficult, but it is not firmly tightened. Some glue might help, but was not necessary.

Power is taken from the GPIO pins, in 5V and 3.3V, this means the fan is blowing at a constant rate, as it is not managed anymore, but it is fine as soon as the noise level is low and should improve global life expectancy of the components.

It is now time to test my custom solution, with three different setups, in real closed case conditions this time. Room temperature was 21-22°C and two to three passes were run with “-c” option for sbc-bench:
• 5V bottom to top air flow – 58~60 °C maximum in sbc-bench mining stress test, 68°C under XMRig mining test on 8 threads after more than 15 minutes
• 5V top to bottom air flow – 60~62°C maximum in sbc-bench mining stress test
• 3.3V top to bottom air flow – 62~65 °C maximum in sbc-bench mining stress test

While the temperature results for the bottom to top setup are good, the noise level was unacceptable, as the fan emitted a high frequency loud ‘scream’, probably due to the low spacing between the blades and the tip of the heatsink. So I decided to just consider the top to bottom configuration for final setup: in 5V, the maximum temperature under full load reaches 70°C with acceptable noise, but 3.3V is not too bad and I never reached 80°C as with the stock cooler while the case is now closed.
As my intent is not to use the board in high load conditions, I finally decided to rely on 3.3V power input, which allows idle temperature of about 40°C (21°C room temperature) and prevents throttling conditions with low noise.

Now some words about two other Radxa boards I own, to conclude on the topic

Radxa proposes 3 more convincing solutions for the Rock 5B board:
• a passive 40x40x25 mm aluminium cooler (with thermal pad)
• an active 40x40x10 mm aluminium ‘crafted’ cooler including a fan (with thermal pad)
• a metal case with passive top plate possibly allowing the use of thermal paste

I bought the passive heatsink and it is fine for low to average loads, but does not allow sufficient cooling at high loads: I experienced severe crashes when stressing cores and GPU at once. My solution was very cheap: as the heatsink has a correct height for air flow, I just put a refurbished 40x40 mm fan I had in stock on top and connected to the 5V/ground GPIO… this is enough for strong cooling in all situations, I never reached 70°C in stress mode with 23°C room temperature.


Personally, I would stay away from the two other solutions, except for low low to average loads where the passive case is probably a smarter solution, especially if thermal paste can be used (to be confirmed). The main problem with the stock active cooler is similar to the one with the Rock 5A flavor: heat sink height is too short for correct heat exchange and good air flow: aluminium shows a high conductibility, not as good as copper, but it is a good heat spreader, so it is efficient to draw heat if the surface exposed to air is large enough and allows access to sufficient air flow! It is a pity Radxa did not care about this!

Cooling the Rock 3A board is another story, its 5W TDP is much lower, and the only stock cooling solution is a compact but nice 20x20x10 aluminium passive heatsink to glue on the SoC. No doubt, given the available space, I don’t see any real possible improvement. As I planned to use the SATA hat or M2-M extension hat, height is already nearly at the maximum value. Improved cooling then requires side air flow, so correct placement in a case offering sufficient air flow is the only solution.

I think this “toybrick” should be used “peacefully”, as its compact and bulky design does not offer any option for strong cooling.

This concludes the article. I hope it can help You design or improve your own solutions

1 Like

Thanks for the detailed info - very helpful.

1 Like

With the rock5b I found these heatsinks mighty and the lugs are adjustable and was a better fit than the radxa version.


Likely same for the 5a

Indeed a cheap and efficient alternative for the Rock 5B board. In addition to the solution based on the stock passive heatsink and refurbished fan, for a similar cost in my case, You have the 3-pin connector for on-demand fan speed, so a bit better. Thank You for the link!

However, it cannot be used on the Rock 5A as the SoC and memory chips do not allow more than 28mm length. So, the base of this 38x36mm heatsink must be machined to allow some clearance or contact is not done with the chips to cool!
Also, as there are no specific holes for the purpose: some kind of brackets are required to use the side holes of the board with spacers, as with the KKSB cooler. Using a thermal adhesive pad is not suitable here, as the weight is too high for a safe assembly to my point of view, so it is highly advised to use pressure-based contact for a large cooler with thermal paste and the one You propose cannot be used out-of-the-box on the smaller Rock 5A board.

The new Raspberry 5 offers a better design with 2 holes to hold the cooler, but there is no such option for the Rock 5A while based on the same form factor and a similar TDP. I see this as a design flaw on Rock 5A board, although it is still possible to do the job as demonstrated in this article.

Thanks for details about all of those coolers, I have used some of them mainly to setup board and OS, but sooner or later always needed to get something more for heavier loads. And of course active cooling is always much more efficient than passive solutions and it’s able to spread heat across whole board (including memory, chipsets etc). Once I got huge passive case for nuc8 - akasa, worked great for most things, but not for long huge tasks when everything heats up. After about month I eventually found out that memory is overheating and memtest fails after about 3 hours with some load. Adding one fan to that set solved everything.
Same thing may happen to radxa green case for Rock5. It should be ok for most users, it also should spread heat on it all surfaces but I’m sure that it would be not enough on certain cases - mainly with high load and higher room temperatures, for some boards - overclocking.

Also please note that there always were some more advanced cooling solutions available like 52pi ice tower cooler. Those offer advanced cooling features with slightly higher price and size. There is regular and compact version, one of them blows air from left to right.

The interesting cooling solution can be found on new pi5 stock cooler, it has bigm but fitted perfectly radiator with pwm turbine that blows from up to pcie board side. This makes one of best compact solutions for SOC, memory and maybe something more on board. Same idea was used long time ago on such boards like khadas VIM3 pro and maybe nanopc-t4 (that one placed regular fan on the middle of wide radiator). This combination is best compact approach, saddly none of rock boards has something like that. I needed to put turbine fan myself for rock pi 4b+ to run higher workloads.

My ideas for cooling are to try to reuse some cheap components from laptops. This includes heatpipes and compact radiators that can be placed somewhere near. You can get complete cooling system from many computers for as low as few bucks and usually they already ave cooper plates, pwm fan and efficient radiator. On rock5 there may be additional challenge to cool down nvme and m.2 e slot (with coral card, that one can heat up to 115’C!).

Other things to consider - cooling board from two sides, some sbcs spread heat across whole pcb. Noise level - you don’t want to get too noisy. PWM and automatic control. Even board orientation (as all we know heat should go to up so case orientation is sometimes important).

I hope to publish here some photos of my solutions. Usually I’m using stock cooling ideas to set up everything and later something custom made. There is many parts to choose from, all I need is time to document this :slight_smile:

I sandwitched my Rock 5b between 2 heavy aluminium profiles. The CPU and the M.2-SSD have contact. It’s very cool, near room temperature. No fan needed.

3 Likes

That is for sure massive cooling :slight_smile: