So I bought a new Raspberry Pi 4 (4GB) and the official PoE+ HAT. It is running the 64-bit version of Ubuntu 21.04 Server, completely updated.
Controlling the PoE+ HAT-fan should/could be done through
/etc/firmware/config.txt, which I did.
This does turn on the fan, but it looks like somehow only 2 of the 4 settings are respected at the moment.
First, I tried this setup:
# PoE Hat Fan Speeds # dtoverlay=rpi-poe dtparam=poe_fan_temp0=60000 dtparam=poe_fan_temp0_hyst=5000 dtparam=poe_fan_temp1=65000 dtparam=poe_fan_temp1_hyst=5000 dtparam=poe_fan_temp2=70000 dtparam=poe_fan_temp2_hyst=5000 dtparam=poe_fan_temp3=75000 dtparam=poe_fan_temp3_hyst=5000
With these settings, the fan turns on semi-fast every 30-ish seconds around 70 degrees and stops again when it's hitting 65. Then it takes the Pi some 30-ish seconds to just heat up back to 70 again and the cycle starts again, with the Pi always within 65 and 70 degrees.
Then I changes the settings to the following:
# PoE Hat Fan Speeds # dtoverlay=rpi-poe dtparam=poe_fan_temp0=55000 dtparam=poe_fan_temp0_hyst=5000 dtparam=poe_fan_temp1=60000 dtparam=poe_fan_temp1_hyst=5000 dtparam=poe_fan_temp2=65000 dtparam=poe_fan_temp2_hyst=5000 dtparam=poe_fan_temp3=75000 dtparam=poe_fan_temp3_hyst=5000
Now the same happens, but the Pi is constantly between 60 and 65 degrees. Here's a graphic of the above mentioned situations:
So it seems like the Pi is only respecting the
temp2 settings and is using only one speed setting to stay within that range. When it 'accidentally' drops below 60 and should be in the range between
temp1, the fan does not switch to a lower RPM, but just stops.
Just to check I once set
50000 and then the fan does ramp up to it's full speed, so it does know how to use the different speeds.
I also tried changing them to
temp4 instead of starting with
temp0, but then
temp4 is ignored and
temp0 is replaced with the default setting 40 degrees, as expected.
So in short the PoE+ HAT fan is only working in the range between
temp2 and not below.
Am I missing something here?