Argon One V5 - Fan not recognized

Hey guys,

Environment; New Raspi 5, in a new Argon One V5 case. NVMe SSD is installed with Ubuntu, which will in the end be the running OS. However, under Ubuntu I wasn’t able to get the fans working with the Argon Service, so I am currently booting of an SD with Rasperry PiOS 32Bit trying to troubleshoot it. For the life of mine, I can’t get it working, nor is it visible under the i2cdetect when checking it. However, it seems to work, cause directly giving it commands via
pinctrl seems to work (proof & logs are at the end).

That points to me that the HW in general should be fine (all is newly purchased - Raspi, Case, SD and NVME). I’ve meanwhile tried as well 2 different SDs, Raspberry PiOs 32 & 64 Bit, Argonone service installed and removed, and it’s still not visible under the i2c. At the moment, Argononed is installed. Attached are a few config files, I would greatly appreciate it if somebody could point me towards a direction to get it working first under PiOS, so I could maybe port it in a way to Ubuntu. :slight_smile:

== EEPROM is up2date:

> tester@raspbi-joyit:~ $ rpi-eeprom-update 
> BOOTLOADER: up to date
>    CURRENT: Thu  8 May 14:13:17 UTC 2025 (1746713597)
>     LATEST: Thu  8 May 14:13:17 UTC 2025 (1746713597)
>    RELEASE: default (/usr/lib/firmware/raspberrypi/bootloader-2712/default)
>             Use raspi-config to change the release.

EEPROM Config

> tester@raspbi-joyit:~ $ rpi-eeprom-config 
> [all]
> PSU_MAX_CURRENT=5000
> BOOT_UART=1
> POWER_OFF_ON_HALT=0
> BOOT_ORDER=0xf461

/boot/firmware/config.txt file, mainly untouched on this SD, last few adjustments are shortly before the [CM4] part without luck.

> tester@raspbi-joyit:~ $ cat /boot/firmware/config.txt 
> # For more options and information see
> # http://rptl.io/configtxt
> # Some settings may impact device functionality. See link above for details
> 
> # Uncomment some or all of these to enable the optional hardware interfaces
> dtparam=i2c_arm=on
> #dtparam=i2s=on
> #dtparam=spi=on
> 
> # Enable audio (loads snd_bcm2835)
> dtparam=audio=on
> 
> # Additional overlays and parameters are documented
> # /boot/firmware/overlays/README
> 
> # Automatically load overlays for detected cameras
> camera_auto_detect=1
> 
> # Automatically load overlays for detected DSI displays
> display_auto_detect=1
> 
> # Automatically load initramfs files, if found
> auto_initramfs=1
> 
> # Enable DRM VC4 V3D driver
> dtoverlay=vc4-kms-v3d
> max_framebuffers=2
> 
> # Don't have the firmware create an initial video= setting in cmdline.txt.
> # Use the kernel's default instead.
> disable_fw_kms_setup=1
> 
> # Disable compensation for displays with overscan
> disable_overscan=1
> 
> # Run as fast as firmware / board allows
> arm_boost=1
> 
> # Own adjustments
> #dtparam=cooling_fan=on
> dtparam=i2c=on
> 
> [cm4]
> # Enable host mode on the 2711 built-in XHCI USB controller.
> # This line should be removed if the legacy DWC2 controller is required
> # (e.g. for USB device mode) or if USB support is not required.
> otg_mode=1
> 
> [cm5]
> 
> [all]
> dtparam=uart0=on
> dtoverlay=dwc2,dr_mode=host
> dtparam=nvme
> dtparam=pciex1_gen=3
> usb_max_current_enable=1

I’m able to see a PWM FAN via pinctrl and start it as such;

tester@raspbi-joyit:~ $ sudo pinctrl | grep FAN
29: no    pu | hi // FAN_TACH/GPIO29 = none
45: a0    pd | hi // FAN_PWM/GPIO45 = PWM1_CHAN3

When I manually start/stop it - it’s visible as well under the fan1_input as example;

tester@raspbi-joyit:~ $ cat /sys/devices/platform/cooling_fan/hwmon/*/fan1_input
0
tester@raspbi-joyit:~ $ sudo pinctrl FAN_PWM op dl
tester@raspbi-joyit:~ $ cat /sys/devices/platform/cooling_fan/hwmon/*/fan1_input
7905
tester@raspbi-joyit:~ $ sudo pinctrl FAN_PWM op dh
tester@raspbi-joyit:~ $ cat /sys/devices/platform/cooling_fan/hwmon/*/fan1_input
0

Argononed service is running:

tester@raspbi-joyit:~ $ systemctl status argononed.service 
● argononed.service - Argon One Fan and Button Service
     Loaded: loaded (/lib/systemd/system/argononed.service; enabled; preset: enabled)
     Active: active (running) since Sun 2025-07-20 09:44:03 BST; 17min ago
   Main PID: 1526 (python3)
      Tasks: 9 (limit: 4915)
        CPU: 205ms
     CGroup: /system.slice/argononed.service
             └─1526 /usr/bin/python3 /etc/argon/argononed.py SERVICE OLEDSWITCH

Jul 20 09:44:03 raspbi-joyit systemd[1]: Started argononed.service - Argon One Fan and Button Service.
Jul 20 09:44:04 raspbi-joyit python3[1526]: Unable to initialize OLED
tester@raspbi-joyit:~ $

DMESG checking i2c, doesn’t seem to detect it and it doesn’t show anything connected.

tester@raspbi-joyit:~ $ dmesg | grep i2c
[    0.921709] brcmstb-i2c 107d508200.i2c:  @97500hz registered in interrupt mode
[    0.921800] brcmstb-i2c 107d508280.i2c:  @97500hz registered in interrupt mode
[    2.152536] i2c_dev: i2c /dev entries driver
tester@raspbi-joyit:~ $ sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --                         
tester@raspbi-joyit:~ $

Trying it via cur_state, doesn’t seem to work for me though, as it was described in this Post;
Argon One V5 configuration - Argon 40 Forum & Community

tester@raspbi-joyit:/sys/class/thermal/cooling_device0/subsystem/cooling_device0 $ echo "4" | sudo tee /sys/class/thermal/cooling_device0/cur_state
4
tester@raspbi-joyit:/sys/class/thermal/cooling_device0/subsystem/cooling_device0 $ cat /sys/devices/platform/cooling_fan/hwmon/*/fan1_input
0

As well the comment that the OneV5 Case doesn’t work with the script but only with Kernel is additonally confusing me - is this somewhere published by Argon? As their official manual doesn’t mention anything and just instructs to install the Argon service.
In any case - Let me know if other log files are helpful, really would like to get the fan working properly - meaning it just gets active when it’s too hot :slight_smile: .
Thanks!

Unlike the Argon ONE V2 and V3 cases, the V5 case is not involved with fan control since the fan is connected directly to the Raspberry Pi 5. There is no need to install the Argon scripts on Ubuntu to manage the power button or fan on the V5 (or the Neo 5), though you may need the scripts if you use the OLED display or Zigbee options.

By default the fan should start to come on when the GPU temperature reaches 50C, as documented here. However I find that the fan almost never comes on in my lightly-used system because the V5 case is such an excellent heat sink.

I think the output you show for:

cat /sys/devices/platform/cooling_fan/hwmon/*/fan1_input

shows that the fan is installed, just not running. If the temperature shown by:

vcgencmd measure_temp

is less than 50C then that is expected.

:melting_face:

Thanks. I guess I’ve read so much information on it for the different Argon cases and my previous experiences with their cases, I got fully stuck on the Argon Script.
With your notes - I’ve restarted Ubuntu and actually did a few tests with stress-NG and see.. yeah it works as you described it. The fan at 50C is very silent, so it’s nearly impossible to hear if the box is 1.5M away from you.

So - I went and read through further notes online and just for other users who stumble over, a little more input.
In the case of an Argon One V5 + a running Ubuntu and you want to manipulate the fans yourself a bit, you can edit the boot config /boot/firmware/config.txt like below. Note these are very low temperatures, rather just to test if it really works. Adjust as necessary for your use case. :slight_smile:

dtparam=fan_temp0=35000
dtparam=fan_temp0_hyst=5000
dtparam=fan_temp0_speed=125

dtparam=fan_temp1=40000
dtparam=fan_temp1_hyst=5000
dtparam=fan_temp1_speed=150

dtparam=fan_temp2=45000
dtparam=fan_temp2_hyst=5000
dtparam=fan_temp2_speed=200

dtparam=fan_temp3=50000
dtparam=fan_temp3_hyst=5000
dtparam=fan_temp3_speed=255

Different levels available from 0 to 3 at fan_tempX, the 35000 would be equally 35C degrees, so it starts the fan at 125. Maximum is 255, which you see in my example at temp3_speed.
The hyst (hysteresis) field just tells the Raspbi how long it should run on this temperature, so e.g. at temp0, it should deactivate the fan at 30C degrees again (Configured Temp - Hyst).

So - actually already closed - and it was just so much easier than I expected.. :slight_smile: