Banana Pi BPI-R4 heatsink and Case design

1.8mm sounds great. Even less to worry then.

I’m also considering this heatsink/fan combo. The heatsink from this combo is a very nice fit. The fan has no specification provided. I assume it’s a very average fan. My main concern is the fan is too little/weak for generating a meaningful amount of airflow inside the case not just the SoC.

So I’m planning on a bigger heatsink, initially used as passive dissipation. But leave the headroom for stacking a bigger and better 10mm-thick fan in future. Originally I want to buy a fan at the same time but I found that it’s not easy to find one without modding and will be penalised for yet buying from another separate shop.

I don’t need the fan for my immediate application which is a wired 1Gbps router. Will stay like that for a couple of years. But R4 is so powerful that I’m afraid it’ll stay with me for 10+ years and keeps expanding in functionalities and heat generated over its lifespan. LOL

:flushed:, :roll_eyes:

this sounds not good …


Does anyone know if this fan is working with pwm at all. May be by checking with R3?

i guess it is something with the pwm-socket itself i had not measured any pwm signal there…i guess something in software is wrong (clock/pinctrl,…)

1 Like

If you apply +5V and GND to the fan from an external power supply, does the fan spin? And is there a signal coming out of the third wire from the fan?

I found it’s so hard to find 3-pin PWM fans. The fan from this 3rd-party heatsink/fan combo could be an exception.

5v and gnd are there on the socket…it is something wrong with the pwm…

I have tried both the Ali fan and a Noctua PWM fan, and I can control the speed directly from the R4.

which OS and exact kernel source do you use? seems i miss the pwm property for the pwm-fan…i only activated the node but there is no pwm link

can you post your pwm-fan node from dts? seems also not there in openwrt…also fan and pwm node are not enabled…

seems i’m a bit further…


root@bpi-r4-v10:~# dmesg | grep fan
[    5.080681] thermal_sys: Failed to bind 'cpu-thermal' with 'pwm-fan': -22

mhm, but fan spins now at 40°C

error is because i have 3 fan cooling-points and the trips referring 1-3 (which result in 4 trip-points), so it is a count mismatch…thinking what is the right fix…maybe adding additional cooling-point to fan…for now i use the 0 value for the 40°C trip-point, next one if 85 which effectivily switches on fan…imho a bit high

I use git.openwrt.org Git - openwrt/openwrt.git/summary the kernel driver are already fixed in this git.

You can use this patch to get a working dts.

mt7988a-bananapi-bpi-r4.dts.patch (645 Bytes)

I do actually use 6.6.28 instead of 6.6.27 (latest kernel used in the OpenWrt git), but it works fine with 6.6.27 too.

1 Like

Thanks, i guess you see the pwm-fan error too?

And i see you have not defined pinctrl…i will try without it.

And your snippet fixed my rtc issue too :slight_smile:

Your welcome. :slight_smile:

RTC will work with that patch, as long as it gets enough voltage from the RTC-battery.

Yeah, I do get

[ 9.966841] thermal_sys: Failed to bind ‘cpu-thermal’ with ‘pwm-fan’: -22

but it does work as it should.

Yes,but highest trip with fan will switch it off as index 3 is undefined,so either we define 4 steps in pwm fan or start at zero which means 40°C has fan switched off and next (85) uses first working value

currently added an step 80 to the fan, followed by the 128 and 255…pinctrl is not needed

@Lorem_amicus @frank-w, do you have the measurements of the SoC’s outer and inner heights? Would like to have an idea of how uneven SoC’s surface is.

Okay,

I measured hights of the chips:

1 Like

Thanks a lot for taking the trouble to do the measurements. Now I have a much better idea of what thermal pads to use.

Thermal pads work best when it’s compressed to 60%. Base on this, I would suggest the recommended thermal pad thickness for optimal performance:

  • DDR4 RAM / eMMC chips: 1.5mm (60% compressed → 0.9mm, total height 1.9mm)
  • FiLogic 880 SoC: 0.5mm (60% compressed → 0.3mm, total height 1.8mm)

If people like me going to use 50x50x10mm heatsink which will touch “2R2” (aka L1 on DXF file) inductor with height 1.8mm (also measured by @Lorem_amicus), the recommended thermal pads thickness for optimal performance:

  • DDR4 RAM / eMMC chips: 2mm (60% compressed → 1.2mm, total height 2.2mm)
  • FiLogic 880 SoC: 1mm (60% compressed → 0.6mm, total height 2.1mm)

Something like this ?

&fan {
  direction = "forward";
  ramp-up = <0 5000>;  ramp-down = <0 5000>; pwms = <&pwm 0  0 0>,
         <&pwm 0 32 0>,
         <&pwm 0 64 0>,
         <&pwm 0 128 0>,
         <&pwm 0 255 0>;
  status = "okay";
};

I have not tested this though, ripped it from some old example code that I got from Banana Pi.

No like this:

This is what a 50x50mm radiator with a sticky base looks like. It is glued completely to the CPU and due to this, this entire structure is held in place. There are thermal pads on the Flash and Ram chips, they were simply squeezed out. The thickness of the gaskets is 1.5-2 mm. I just took what I had on hand.

is there a way to just update compiled dts file? I don’t want to build whole image when tuning the fan pwm values. I know some board can mount boot partition and update the dts file directly but I have no idea on how to do this on mediatek platform.

Bpi store on ali have cheapest case for r4 now.

Agree and worth it since it’s aluminium.