Banana Pi BPI-R4 heatsink and Case design

: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.

I cannot for my life get my fan (tested with direct voltage to the fan as working) to spin up at all, even though it is HOT.

I’m using the openwrt snapshot image.

What packages do I need at a minimum to ensure I have everything that I should to get it working?

If I run

root@Didneys-WiFiX-BPI-R4:~# dmesg | grep thermal

I get

[ 0.007030] thermal_sys: Registered thermal governor ‘fair_share’ [ 0.007032] thermal_sys: Registered thermal governor ‘bang_bang’ [ 0.007034] thermal_sys: Registered thermal governor ‘step_wise’ [ 0.007036] thermal_sys: Registered thermal governor ‘user_space’ [ 5.698200] hwmon hwmon1: temp1_input not attached to any thermal zone [ 5.704743] hwmon hwmon1: temp2_input not attached to any thermal zone [ 5.711293] hwmon hwmon1: temp3_input not attached to any thermal zone

I have NO clue, and web searches have done little to help.