3

I'm aware that the only officially supported OS that the PoE hat works on is Raspbian. I can confirm that both my hats work, and that the fan does switch on and off if I have Raspbian installed on the SD card the Pi is booting from.

Currently, however, I'm dong a project and I'm using Ubuntu Server 18.04 64bit, which runs fine on the Pi, and the PoE hat powers the device with no problems. Unfortunately, as the OS isn't Raspbian, the fan never spins up, so it can run a little hot. As a result, if I can get the fan to spin up, and down then that would be great. I have no problems with doing this with scripts, using crontab and inspecting the value of /sys/class/thermal/thermal_zone0/temp, but I just don't know how to get the fan to spin.

I did initially try my simply editing config.txt, which is located in /boot/firmware on Ubuntu, and adding the below:

dtparam=poe_fan_temp0=65000,poe_fan_temp0_hyst=5000
dtparam=poe_fan_temp1=77000,poe_fan_temp1_hyst=2000

This has no effect though (but does have the desired effects on Raspbian).

I did, therefore, wonder if I could use the GPIO pins to start the fan up, and stop it, however, I honestly have no knowledge of GPIO. I assume it is controlled via this on Raspbian, but very little on ideas here, I'm afraid.

If anyone can point me in the right direction, or has some ideas to try that would be great. Any further questions on things I haven't covered, please do ask, and I'll be happy to elaborate to the best of my ability.

Edit: Looking at this post here, it appears that it's controlled via the I2C pins, so I've added the tag, in case anyone has found how to control it via that.

Edit 2: So it seems that the drivers for the fan were added in Ubuntu 19.04, as the answer below suggests, however, it doesn't control the fan, it just switches it on. Having the fan permanently on is actually even less desired as they create constant high levels of noise (despite being quite small the fans aren't quiet). I am looking for a solution that can spin the fans up and down. I did add the above parameters to /boot/firmware/config.txt again as well, but this has no effect. Even at 40C the fan was spinning at full speed (the settings state that full speed would be at 77C, down to 75C).

  • I got it spin with Ubuntu 19.04 (raspberry pi version). Unfortunately I cannot let it stop. – user2186068 May 14 '19 at 20:45
  • But how did you get it to start in the first place, @user2186068 ? – Larnu May 15 '19 at 7:48
  • From the driver documentation it uses the I2C bus usually reserved for HAT EEPROM chips to control the fan. Have you looked under the /sys/ folder for fan*, rpipoefan or rpi-poe-fan entries? Here's the driver source: github.com/raspberrypi/linux/blob/rpi-4.19.y/drivers/hwmon/… – Roger Jones May 17 '19 at 9:25
  • Nothing on the 18.04, but the 19.04 host (after answer below), does show the driver in /lib/modules/5.0.0-1008-raspi2/kernel/drivers/hwmon/rpi-poe-fan.ko @RogerJones . i'm going to try a fresh install of 19.04 on the pi I ungraded to 19.04 last night anyway (as it corrupted the lxc install when it changed it to snap) and see if that works. – Larnu May 17 '19 at 9:44
2

I'm using Ubuntu Server 20.04 LTS. The dtparams setting does not work, instead you need a udev rule.

The fan config is in /sys/class/thermal/cooling_device0/, if you cat /sys/class/thermal/cooling_device0/type, it should be "rpi-poe-fan".

Once you've confirmed that, use this udev rule as an example:

SUBSYSTEM=="thermal"
KERNEL=="thermal_zone0"

# If the temp hits 75c, turn on the fan. Turn it off again when it goes back down to 70.
ATTR{trip_point_3_temp}="75000"
ATTR{trip_point_3_hyst}="5000"
#
# If the temp hits 78c, higher RPM.
ATTR{trip_point_2_temp}="78000"
ATTR{trip_point_2_hyst}="2000"
#
# If the temp hits 80c, higher RPM.
ATTR{trip_point_1_temp}="80000"
ATTR{trip_point_1_hyst}="2000"
#
# If the temp hits 81c, highest RPM.
ATTR{trip_point_0_temp}="81000"
ATTR{trip_point_0_hyst}="5000"

Place it in /etc/udev/rules.d/50-rpi-fan.rules. To apply udev rules, issue udevadm control --reload-rules && udevadm trigger

| improve this answer | |
  • Note, the udev rules are for the CPU's tripping points, the fan itself is in /sys/class/thermal/cooling_device0, and you can turn on / off the fan directly with echo '0' > /sys/class/thermal/cooling_device0/cur_state. – Luke Channings May 5 at 10:47
  • Thanks Luke. i haven't upgraded to 20.04 as yet, and when I upgraded to 19.04 from 18.04 the fan didn't work; only a fresh install of 19.04 got it to work. Won't lie, little concerned that the same will happen and really not wanted a full reinstall on the Pi. Will try and upgrade at some point anyway; hopefully /sys/class/thermal/cooling_device0/ (and I assume the related ` /sys/devices/virtual/thermal/cooling_device0/`) will be created. – Larnu May 5 at 11:01
  • well, put a fresh install of Ubuntu 20.04 on, and yes, this works (great!). Now to take the plunge of upgrading and seeing if that exposes the needed files. – Larnu May 13 at 13:22
  • This file is great, and I'm using it, but I did notice that my fan was always either off or very loud. This is because the trip_point_0_temp should be the HIGHEST RPM setting, and the trip_point_3_temp should be LOWEST. Otherwise your fan will waffle between states 0 and 4 to stay below the lowest temperature, and likely never enter states 1, 2 or 3. If you reverse them, you get the desirable gradual increase from state 0 to 1 to 3 to 4. – Patches Jun 4 at 21:27
1

You can try Ubuntu Disco Dingo for Raspberry pi 3b+. You may download it from Ubuntu releasing site. http://cdimage.ubuntu.com/releases/19.04/release/ In the new firmware, the PoE Fan driver is merged in.

| improve this answer | |
  • Interesting if it is in Dingo. I'll do a release upgrade instead (changing the value of prompt to normal in /etc/update-manager/release-upgrades) and see if that works first; as i'd like to avoid a fresh install. i'll report back after testing. Thanks, – Larnu May 16 '19 at 13:54
  • Doing a release update didn't work. Will try a fresh install later. See if that has any luck – Larnu May 17 '19 at 9:34
  • After installing Ubuntu 19.04 fresh, the fan works, but doesn't switch off; even with the above changes to the config. This also, is undesired (as the fans are noisy). The fan needs to switch on and off. Unfortunately this is therefore not the solution. – Larnu May 17 '19 at 18:48
0

I'm also using 20.04 on Raspberry Pi 4s. After googling around, there is a config.txt at /boot/firmware/config.txt and the following example worked for me in that file:

dtparam=poe_fan_temp0=80000,poe_fan_temp0_hyst=2000
dtparam=poe_fan_temp1=78000,poe_fan_temp1_hyst=5000
dtparam=poe_fan_temp2=73000,poe_fan_temp2_hyst=3000
dtparam=poe_fan_temp3=70000,poe_fan_temp3_hyst=5000
| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.