Pi PoE HAT fan control

Thanks for the help!

I managed to edit the config.txt - it turned out that my linux machine wasn’t mounting the fat32 boot partition so I had to fire up a windows machine.

After running for close to 48 hours and not having the fan kick on… I decided to drop my setpoints down a bit. My high temp was 67.4C and overnight it hovered around 56C so I went with

## poe_fan_temp
##    temp0 is lower speed fan, temp1 is high fan speed.
##    Current setting is fan turns on at 63C, turns off when it comes back down to 60C.
##    If the temperature reaches 66C it will go full blast until it drops back down to 63C. 
dtparam=poe_fan_temp0=63000,poe_fan_temp0_hyst=3000
dtparam=poe_fan_temp1=66000,poe_fan_temp1_hyst=3000

Since updating to HassOS 3.13, I’ve noticed that the fan on the POE HAT seems to be ignoring the dtparam’s as shown above.

Anyone else noticing this?

EDIT: I’ve just looked through the release notes and can only assume that something changed in the latest RPi kernel.

@thatguy_za I’ve noticed the same thing - have you found a fix?

After a fair amount of trial and error, the only thing that worked was having three poe_fan_temp’s. Unfortunately I can’t remember my exact temps but these should help:

dtparam=poe_fan_temp0=63000,poe_fan_temp0_hyst=3000
dtparam=poe_fan_temp1=66000,poe_fan_temp1_hyst=3000
dtparam=poe_fan_temp2=75000,poe_fan_temp2_hyst=3000

Actually 4 lines of code are needed and basically what you input is the curve of how the fan reacts to temperature in a proportional way. More info can be found here:
RaspBerry Pi GitHub
And here:
HASS OS GitHub
Please check that the following line of code is present in config.txt.

dtoverlay=rpi-poe

and append these lines at the end of config.txt

dtparam=poe_fan_temp0=10000,poe_fan_temp0_hyst=1000
dtparam=poe_fan_temp1=55000,poe_fan_temp1_hyst=5000
dtparam=poe_fan_temp2=60000,poe_fan_temp2_hyst=5000
dtparam=poe_fan_temp3=65000,poe_fan_temp3_hyst=5000

My fan is now constantly on but at low speed and will speed up when needed (CPU load up -> temp up -> fan RPM up). A constantly switching fan is not preferred over one that is constantly on (at low speed).

4 Likes

This doesn’t work for me. i am using the latest HA version and a branc new PoE hat but the fan never spins, only briefly at boot time. Any idea how to solve this?

Hello and welcome to the forums.
Can you be more specific about what you have tried so I can help you in a better way.

Hello,

I have the latest 64 bit version of HA and have tried to edit the config.txt file with all the different values mentioned above. No luck.

I edited my earlier post (Link) and suggest to check if dtoverlay=rpi-poe Is present in config.txt

The piece of code below can be found in the latest rPi documentation. I hope this points you in the right direction.


Name:   rpi-poe
Info:   Raspberry Pi PoE HAT fan
Load:   dtoverlay=rpi-poe,<param>[=<val>]
Params: poe_fan_temp0           Temperature (in millicelcius) at which the fan
                                turns on (default 40000)
        poe_fan_temp0_hyst      Temperature delta (in millicelcius) at which
                                the fan turns off (default 2000)
        poe_fan_temp1           Temperature (in millicelcius) at which the fan
                                speeds up (default 45000)
        poe_fan_temp1_hyst      Temperature delta (in millicelcius) at which
                                the fan slows down (default 2000)
        poe_fan_temp2           Temperature (in millicelcius) at which the fan
                                speeds up (default 50000)
        poe_fan_temp2_hyst      Temperature delta (in millicelcius) at which
                                the fan slows down (default 2000)
        poe_fan_temp3           Temperature (in millicelcius) at which the fan
                                speeds up (default 55000)
        poe_fan_temp3_hyst      Temperature delta (in millicelcius) at which
                                the fan slows down (default 5000)

This post has fixed my PoE fan issue, thank you to everyone. In the end I learned that you need the dtoverlay, and 4 poe_fan_temp entries!

This is what I had before but it doesn’t work. Cannot believe so simple functionality needs that much tweaking and it is not added by default in HA raspberry edition.

dtoverlay=rpi-poe
dtparam=poe_fan_temp0=10000,poe_fan_temp0_hyst=1000
dtparam=poe_fan_temp1=55000,poe_fan_temp1_hyst=5000
dtparam=poe_fan_temp2=60000,poe_fan_temp2_hyst=5000
dtparam=poe_fan_temp3=65000,poe_fan_temp3_hyst=5000

Could you please check below configuration, it worked for me!

PoE Hat Fan Speeds

dtoverlay=rpi-poe
dtparam=poe_fan_temp0=65000,poe_fan_temp0_hyst=5000
dtparam=poe_fan_temp1=67000,poe_fan_temp1_hyst=2000

I could get mine to work with any of the above suggestions.
Then I found this article instead.
https://www.raspberrypi.org/forums/viewtopic.php?t=316908

So using “dtoverlay=rpi-poe-plus” instead of “dtoverlay=rpi-poe” worked for me.

So I simply powered off my HASSIO, move my SSD to the computer, and at the end of the config.exe (Using Notepad++) added the 6 lines. The # is just a commenting line, but I kept it there.

# PoE+ FAN TEMPERATURE CONTROL
dtoverlay=rpi-poe-plus
dtparam=poe_fan_temp0=45000,dtparam=poe_fan_temp0_hyst=3000
dtparam=poe_fan_temp1=50000,dtparam=poe_fan_temp1_hyst=3000
dtparam=poe_fan_temp2=62000,dtparam=poe_fan_temp2_hyst=4000
dtparam=poe_fan_temp3=70000,dtparam=poe_fan_temp3_hyst=5000

3 Likes

Bloody outrageous isn’t it!!

Hello,

Can someone please explain me what hyst setting does?
I can’t find it and everyone uses different values of this.

ps, I am new with raspberry and home assistant.

Sure. It is only required if you have added the POE+ hat onto your RaspberryPi.

It is a small board that allows the RaspberryPi to be powered from a POE (Power Over Ethernet) switch. Regular switches can’t PoE. That way you don’t have to power it by USB.

The setting above controls the fan speed on that board, according to temperature. So it is only used if you have the PoE hat.

Thanks for your response,

I have a PoE+ hat, and set your values in the Config.txt
They do work, the fan is much quiter :slight_smile:
But I do not understand what the “poe_fan_temp1_hyst=3000” does or why its 2000 3000 4000 5000 etc.
It says its Delta Temperature? But i have still no idea on why to set them on what value?

I haven’t thought much about the values themselves :see_no_evil: I just tried the once I found, and they worked :slight_smile:

'Params: poe_fan_temp0 Temperature (in millicelcius) at which the fan turns on (default 50000)

poe_fan_temp0_hyst Temperature delta (in millicelcius) at which the fan turns off (default 5000)’

This was what I found, but doesn’t say much :slight_smile:

Ah oke haha,

I set dtparam=poe_fan_temp2=62000 to =65000. Hoped that the temp would not reach 65 and staid in temp1. But when setting 62000 to 65000 the temp also went from 60000-62000 to 63000-65000 :sweat_smile: so did not matter, was trying to find a way to keep it in temp1 speed.

Don’t know if its okey for the Fan to go on/off continuous at the temp border from temp1 to temp2…