UPDATE: The fan is now controlled automatically in the latest updates (See this answer https://askubuntu.com/a/1497778/1746852). This cron job is no longer needed.
A quick hack to get around the fact Ubuntu for the Pi5 currently does not control the fan.
This needs to be run with sudo permissions:
sudo python3 pi5_fan_controller.py
And, by default, will monitor the Pi5's temperature for one minute every 2 seconds adjusting the fan based on some arbitrary boundaries I came up with on the spot :^)
This is intended to be set up as a system-wide cron job (system-wide because of the sudo privileges). To do this, edit this file:
sudo nano /etc/crontab
And add this cron job:
* * * * * root python3 /path/to/pi5_fan_controller.py
(with the updated path to the python file)
Many thanks to the following Ask Ubuntu answers:
Hi @Danrancan,
The Argon one fan controller uses a different file to control the fan speed since the Argon fan is connected to the Argon case and not directly to the Pi5 — from looking online, it seems Argon uses a file inside of etc/argon to manage fan speeds, etc. Some people also seem to have plugged the Argon fan directly into the Pi5 instead of connecting it to the case, which seems to improve fan speed management without the need for a script like this.
Since I don't have an Argon case, I cannot debug this further — but if you find the correct file to update the fan path, I'm sure other people would benefit from you commenting your solution here or from forking this gist.
Thanks,
James