Banana Pi Bpi-R3 cooler fan not working & scdaemon/pcsc-lite not built in

Hi developers I'm newbie here. I have downloaded the Sdcard image 23.05.0rc2 and flashed on Banana Pi bpi-r3 with POWER LOGIC pld5010s112L cooling fan 4pin to 2pin, it works fine while doing all other task and booting too but once booted the cooling fan stops working. How do i fix it. And requesting for scdaemon or pcsc-lite to be installed by default. Thank you

Welcome to the community!

Are you saying you somehow want the image you already downloaded to include something else?

To add packages to an image, see:

Yes i'm not interested in using opkg as a newbie and just stick with fresh installation

I didn't suggest using opkg; but:

  • Obviously, you must undertake an install option to get packages not included by default
    • You stated you don't wish to use opkg update && opkg install foo
    • So I suggested using the Firmware Selector
    • I'm not sure if you consider this opkg - but you can also use the Software menu in the web GUI (depending on version)

Otherwise, feel free to make a post in the Feature Request section if you believe the next release should include the software you desire for everyone in the next version.


According to this post the fan not spinning up after initial boot is due to a misconfiguration in default settings, where the threshold for the fan to kick in is set too high.

I can confirm that this corrects the same problem with a 3-pin fan:

echo 32000 > /sys/class/thermal/thermal_zone0/trip_point_1_temp

This can be set (without need for cli) in System > Startup > Local Startup by adding the command in the text box there (before exit 0). Wit this method you'll need to reboot for the setting to take effect. For example:

# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.

echo 35000 > /sys/class/thermal/thermal_zone0/trip_point_1_temp
exit 0

I believe this should work for the 2-pin fan header as well, though I'm not certain. It should be safe to test in any case.

You can immediately see the effect of the command, as well as check the current configuration setting, using command line via ssh.

To check the current setting, run the below command at the prompt. You'll likely see the value 85000 returned, which means the fan is currently set to turn on when the onboard temperature sensors reach 85 ºC.

root@OpenWrt:~ $ cat /sys/class/thermal/thermal_zone0/trip_point_1_temp

Running the first command below (same as the one above that would go in Local Startup) will immediately change the temperature threshold to 35 ºC, so the fan should spin up right away. If it doesn't, you can check the setting again just to make sure it took (in which case you would see 35000 returned):

root@OpenWrt:~ $ echo 35000 > /sys/class/thermal/thermal_zone0/trip_point_1_temp
root@OpenWrt:~ $ cat /sys/class/thermal/thermal_zone0/trip_point_1_temp

Hi community,

I want to refresh this topic.

I'm running OpenWRT 23.05.0 on a Banana BPI-R3 and I would like to change temperature trip points for my device.

For my WAN connection I use a 2.5Gbits SFP-T module that run really hot and I want to lower my temperatures.

I installed the official Banana heatsink with 3-pins fan.

I changed temperature trip points in /sys/class/thermal/thermal_zone0.

The original points in the firmware are:
125000 <-- trip_point_0_temp (critical)
120000 <-- trip_point_1_temp (hot)
115000 <-- trip_point_2_temp (active)
85000 <-- trip_point_3_temp (active)
60000 <-- trip_point_4_temp (active)

I changed my points to:
100000 <-- trip_point_0_temp (critical)
90000 <-- trip_point_1_temp (hot)
80000 <-- trip_point_2_temp (active)
60000 <-- trip_point_3_temp (active)
45000 <-- trip_point_4_temp (active)

root@openwrt:/sys/class/thermal/thermal_zone0# cat trip_point_*_temp

Actually I'm running around 50 degrees (the connection is quite idle).

root@openwrt:/sys/class/thermal/thermal_zone0# cat temp 

But the fan is not starting

root@openwrt:/sys/class/thermal/thermal_zone0# cat ../cooling_device0/type 
root@openwrt:/sys/class/thermal/thermal_zone0# cat ../cooling_device0/cur_state 

With the workaround in previous posts with RC4 the fan was working.

Could you please help me?


=== EDIT ===
I continued my throubleshooting.

Looking at the cooling devices available on my system

root@openwrt:/sys/class/thermal/thermal_zone0# cat ../cooling_device0/type 
root@openwrt:/sys/class/thermal/thermal_zone0# cat ../cooling_device1/type 
root@openwrt:/sys/class/thermal/thermal_zone0# cat ../cooling_device2/type 

As you can see, cdev 1 and 2 is bound to the mt7915, that are the wifi chipsets. Why a chipset is seen as a cooling device?

Let's continue and let's see at the trip points bound to these cooling devices

root@openwrt:/sys/class/thermal/thermal_zone0# ls cdev*_trip_point
cdev0_trip_point  cdev1_trip_point  cdev2_trip_point
root@openwrt:/sys/class/thermal/thermal_zone0# cat cdev0_trip_point
root@openwrt:/sys/class/thermal/thermal_zone0# cat cdev1_trip_point
root@openwrt:/sys/class/thermal/thermal_zone0# cat cdev2_trip_point

I see the cooling device 0 (my pwm fan) is bound only to trip point 2.

Now let's change trip point 2 to a lower temperature

root@openwrt:/sys/class/thermal/thermal_zone0# echo 45000 > trip_point_2_temp
root@openwrt:/sys/class/thermal/thermal_zone0# cat trip_point_2_temp
root@openwrt:/sys/class/thermal/thermal_zone0# cat temp
root@openwrt:/sys/class/thermal/thermal_zone0# cat ../cooling_device0/cur_state 
root@openwrt:/sys/class/thermal/thermal_zone0# cat temp
root@openwrt:/sys/class/thermal/thermal_zone0# cat ../cooling_device0/cur_state 
root@openwrt:/sys/class/thermal/thermal_zone0# cat temp
root@openwrt:/sys/class/thermal/thermal_zone0# cat ../cooling_device0/cur_state 
root@openwrt:/sys/class/thermal/thermal_zone0# cat temp
root@openwrt:/sys/class/thermal/thermal_zone0# cat ../cooling_device0/cur_state 

BOOM! The fan is up, but it's continuously spin up and down due to the limit temperature choosen.

At the moment, I set trip point 2 to 31 degrees (I think I never reach this temperature, so the fan is always up at max speed until I find a definitive solution)

root@openwrt:/sys/class/thermal/thermal_zone0# echo 31000 > trip_point_2_temp
root@openwrt:/sys/class/thermal/thermal_zone0# cat trip_point_2_temp

My temp is stable around 41 degrees at the moment, but I don't understand how to manage speed 1 and 2.

I think there is something wrong in the firmware. I don't know very much about thermal subsystem, so it's not clear for me.

I opened an issue on github here for that.

In the meantime, if someone has some advise, I could try.


This isn't working here. At snapshot passing

echo 1 > /sys/class/thermal/cooling_device0/cur_state

solved the fan problem and would keep it on at all times. Now it keeps it 1 second on and turn off. Passing 2 keeps 2 seconds. There is no other option I can pass...

It's preety hot here now (36 to 38°...) so the bpi-r3 is around 55º... Any ideas? I'm using de 23.05.2 fw

ah, forget that... 31000 triggered it...


as you can read in my opening post, I solved by changing the trip point 2 temperature

echo 31000 > /sys/class/thermal/thermal_zone0/trip_point_2_temp

This will spin the fan always up.

You can also put this command in your /etc/rc.local to maintain the config on reboot.