Fan control and Other software for Ubuntu 24.04 on Raspberry Pi 5?

I just bought an Argon One V3 on Amazon, and after putting it together, I looked up the instructions for installing the software scripts, and it looks like only Raspberry Pi OS is supported. I am booting Ubuntu 24.04 from a NVMe Drive successfully. I am running Ubuntu Server 24.04 for Raspberry Pi, and it would be impractical to port an entire server over to Raspberry Pi OS, just to get some fan software working. So my question is, is there software support (particularly the fan) for Ubuntu 24.04? If so, can you send me a link of an Ubuntu 24.04 script that will get the fan working? Any other software aside from the Fan is highly welcome too. Please let me know how I can get my case properly working on Ubuntu 24.04 Server. Thanks.

1 Like

Even though I don’t think there should be a big difference between PiOS and Ubuntu 24.04 and maybe there is only one small issue… A message along the lines of ‘It doesn’t work’ does not contain any information about what is happening in detail, so the cause cannot be found.

Perhaps that’s what you’re looking for: Files · 0.5.x · DarkElvenAngel / Argon One Daemon · GitLab

I mean, stating that a piece of software isnt compatible with a specific operating system isnt really just saying “it doesnt work”. As a developer and manufacturer who should be providing support to its customers, finding the problem is as easy as trying to run the argon scripts on a spare Raspberry Pi 5 with Ubuntu 24.04, and figuring out the compatibility issues. Then they can make changes to the script to provide support to the customer. You are right, there probably isnt much differwence in working copies of an ubuntu install script and a Raspberry Pi OS script. So thats all the more reason the developer should be providing support in these sceipts for Ubuntu as well. Is there any way to ask the developer to make the argon scripts Ubuntu 24.04 compatible? It honestly couldnt be more than a days work of modifying code. You would think they would want to provide support to their customers.

Also, I already tried the software from the link you provided and it doesnt work either. So thats that.

If 2 different solutions don’t work for you, something else might be wrong with your installation or hardware. It does not have to be a script incompatibility with Ubuntu 24.04. Without further details from you, it remains just a guess from you, not a general problem with Ubuntu 24.04.

You are right, that the support of Argon40 has much potential for improvements.
But what is stopping you from letting us (Argon customers) know what kind of error message you have received? So that others can’t support you either? Sorry, my first impression is that you don’t seem to want help, you’re just making noises.

Next time im at my server i will try the installation script again and post some log output. I definitely do want help. Cant have a server being bogged down by overheating issues and no fan. No bueno. I will post soon.

The fan control and also the communication with the MCU (inside of the case) during shutdown process depends on working I2C communication.

One of the first troubleshooting steps should be to look if I2C bus is enabled via config.txt and the MCU is present/detected.

sudo i2cdetect -y 1 should deliver a table where 0x1a is populated. If not, the MCU is detached from bus or I2C blocked.

If the MCU address 0x1a is listed, you can control the fan manually:

  • Set fan to full speed
    sudo i2cset -y 1 0x1a 0x80 0x64
  • Set fan to off
    sudo i2cset -y 1 0x1a 0x80 0x00
  • Set fan to 30% percent speed
    sudo i2cset -y 1 0x1a 0x80 0x1e

The last byte contains the PWM value between 0 (0x00) - 100 (0x64) percent. You should prevent to send other commands with values above, because triggers some other features or the MCU is going stuck. Values below 0x0a could be not enough power to start the fan and should prevented too or used on own risk.

There are some known issues If you have installed Home Assistant for example. This process occupies some ressources and prevents that the messages of the script/service can send to the MCU. If you use that, the Home Assistant community (AFAIK) provides an add-on that fix the situation.

With the V3 and the RPi5 you have also the option to circumstand the MCU for fan control. Some users have disconnect the fan from the case pcb and directly connected to the fan connector of the RPi5 and are happy with that. But keep in mind that then the overlay settings for the recent kernel are required to set the thresholds for the fan control, if you want to customize these.

You’re right, the official Argon Forty scripts are built specifically for Raspberry Pi OS. Getting the fan (and potentially the power button) working on Ubuntu Server requires a bit of manual setup or using community-provided scripts because Ubuntu handles things like I2C activation differently.

Here’s the general approach and a popular community solution:

  1. Enable I2C: This is crucial for the case to communicate with the Pi. On Ubuntu Server for Pi, you usually need to edit a boot configuration file.

    • Check either /boot/firmware/config.txt or /boot/config.txt.
    • Add or uncomment the line: dtparam=i2c_arm=on
    • Save the file and reboot your Pi.
    • You might need sudo to edit the file (e.g., sudo nano /boot/firmware/config.txt).
  2. Install Dependencies: The fan control script usually needs Python and I2C tools.

    • Run: sudo apt update && sudo apt install -y python3 python3-pip python3-smbus i2c-tools
  3. Use a Community Script: The official script often fails on Ubuntu. Many people use forks or alternative scripts. A common one is based on the original but adapted for wider compatibility.

    • Try this popular community script repository: https://github.com/Argon40/Argon-ONE-i2c-Codes
    • Installation (from that repo’s README, adapt if necessary):
      curl https://raw.githubusercontent.com/Argon40/Argon-ONE-i2c-Codes/main/argonone-setup.sh | bash
      
    • This script should detect your OS and install the necessary fan control service (argononed.service). It also usually includes configuration (argonone-config) and uninstall tools (argonone-uninstall).
  4. Verify: After rebooting post-installation, check if the fan spins up under load and if the argononed service is running (systemctl status argononed.service).

This community script is your best bet for getting the fan and potentially other features working on Ubuntu 24.04 Server without needing to switch OS.

Let us know if that works for you!

1 Like
wget https://download.argon40.com/argon-eeprom.sh
wget https://download.argon40.com/argon1.sh
ls
argon1.sh  argon-eeprom.sh
chmod +x *
bash argon-eeprom.sh
*************
 Argon Setup
*************
Please run this under Raspberry Pi OS
bash argon1.sh
*************
 Argon Setup
*************
Updating files
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
python3-libgpiod is already the newest version (1.6.3-1.1build1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
python3-smbus is already the newest version (4.3-4build2).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
i2c-tools is already the newest version (4.3-4build2).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
/usr/bin/raspi-config: 928: dtparam: not found
WARNING: EEPROM not updated.  Please run this under Raspberry Pi OS
*********************
  Update Completed
*********************
Version 2502003

We acknowledge the valuable feedback of the following:
ghalfacree, NHHiker
Feel free to join the discussions at https://forum.argon40.com
Use 'argon-config' to configure device

Thank you for this, but apparently it’s the wrong URL giving me a 404 error code:

curl https://raw.githubusercontent.com/Argon40/Argon-ONE-i2c-Codes/main/argonone-setup.sh | bash
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    14  100    14    0     0    222      0 --:--:-- --:--:-- --:--:--   233
bash: line 1: 404:: command not found

Do you have a valid link for this?

UPDATE:

I found this script: argonone/argon1.sh at master ¡ damaex/argonone ¡ GitHub
From this repo: GitHub - damaex/argonone: install ARGON ONE script on Ubuntu 20.04

Its supposedly build for Ubuntu 20.04, but I figured I might as well try it on 24.04. So I installed it, and it seems to install correctly and work. Only problem is, I am not in the same physical location as the server right now, so I can’t check the Pi5 Fans physically. I should be in the same physical location in a few days and will post the results of the fan.

Question: Is there anyway to check fan speed when ssh’ing into the server remotely?

UPDATE 2

I also found these:

and

But haven’t tested them. I will test them if the first script that I tried didn’t work once I can verify it.

It’s the right approach to use a community provided script version which matches better to Ubuntu specific requirements/behaviour.

The reason that argon-eeprom.sh is intended for PiOS only, will be that Ubuntu doesn’t provide a recent bootloader source out of the box. In the past that results that the default installed bootloader version of a new RPi5 has been downgraded and some features like NVMe support could fail. This is more important since the new chip hardware revision 2712D0 is in the wild. That the script didn’t provide a second option for Ubuntu with adding additional repository which provides a recent bootloader or something like that, is another discussion…

If the provided argon1.sh from the community is to old (more than 1 year) it’s to expect that the fan control will not work with Argon ONE V3. The I2C command set has been extended (register support added) by Argon40 and is different to V1/V2 cases. Unfortunately that you get no error message sudo systemctl status argononed.service is no warranty, that the correct command set is in use.

PS: In the current state the posted content looks created with the help of a AI chatbot. The outdated scripts provided by Argon40, that the post of @mahammadsutar81 initial seems directing to you can find here: Argon 40 Technologies, Inc. ¡ GitHub
You will see, that the mentioned repo “Argon-ONE-i2c-Codes” not contains any script.

UPDATE 3

After installing this script:

Things seemed to work from a remote ssh connection. However, after rebooting the Pi Remotely, the Pi no longer boots up. I wont be able to see the boot log until I can operate the hardware locally in a few days or so. So I guess the above script that I thought worked, actually does not work, and crashes Ubuntu 24.04 on boot. Probably going to have to revert to a backup clone.

Hi.
It so happens that I once made a fairly generic fan driver for RPI4 + ArgonV3. I don’t know if RPI5 changes anything, but even if it does, in general you’ll find the whole essence of cooling control in this code (along with supporting scripts): GitHub - JhnW/ArgonOne-Native-Fan-Controller: Written in Rust fan control daemon for Argon One v2 case for Raspberry Pi 4B
Unfortunately, the software provided by the manufacturer is a complete mess.