Power button not working at all and fan speed always at 100%?

Hello,
I received today my M.2.
Unfortunatly, nothing is working as expected :

  • power button has no effet
  • fan speed is constantly at 100%

I installed the argonone scripts.
The systemd service is running and show no errors.

What I am missing ?

I run RPi OS bookworm 64 bits.

Thanks for your help …

seems the i2c interface is not working :

pi@rpi4:~ $ 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: -- -- -- -- -- -- -- --    

I have dtparam=i2c_arm=on in /boot/firmware/config.txt

Anyone with this issue ?

Hi,
I think I have a similar problem on the argon fan hat.

  • Fan always 100% speed
  • button do not work
  • led do not display the good speed (always the 25 and 50 are light on)

Config :

  • Pi4
  • RPi OS bookworm 64 bits

The fan worked well before I made an update (on a 32bits legacy PiOS) :

sudo apt update
sudo apt full-upgrade
sudo rpi-update
sudo rpi-eeprom-update -d -a

I tried, also does not work with PiOS buster (legacy) 32 bits

Not sure if it actually helps but you could try the “old” script:

I would try;
Unplug power from argon case, count to 10 then reinsert power.
Using button in back, depress to turn on your Pi.
when you want to turn off your Pi DON"T use you OS power off icon, just use the power button on the back of the Argon case. See if that works.

Hi all,
I2C needs to be enabled at the Raspberry? Its not written in the dokumentation at all, correct?
If have switched it to enabled unsig raspi-config.
Bit still no control of fan speed.
Any idea?

Hi @Andre,

as far as I know, the argon1.sh script tries to enable I2C, UART and gpio-ir automatically. Naturally this requires, that the distro you use is supported to work properly with that installation script.

For fan control, I2C is needed to send the control messages to the MCU at the pcb of the Argon One case. If I2C is enabled, it’ s possible to do it manually with messages like this (Argon one v3 power button and fan scripts issue - #14 by HarryH):

set fan speed to 100%
Argon One V2
i2cset -y 1 0x1a 0x64
Argon One V3
i2cset -y 1 0x1a 0x80 0x64

You can use the last value 0x64 to vary between 0x00 (fan off) and 0x64 (100) to control the fan speed. Other values above this trigger some other functions such as shutdown (0xff): documentation(little bit outdated)

Attention: If you use the i2cdump command, it happens that the MCU stucks and the behavior is like the thread starter @olzzalm reported, until you remove the power supply for some seconds.
If you has triggered the shutdown (held button for >=3 seconds and <5 seconds, or use the remote control power button) it could happens what the MCU is disconnected from I2C bus until you remove the power supply or hold the power button for >5 seconds to force power off.

Thank you, the Information is very helpful.
I changed the value and it did not had any impact. Fan was still at 100%

Then I checked the service:
○ argononed.service - Argon One Fan and Button Service
Loaded: loaded (/lib/systemd/system/argononed.service; disabled; preset: enabled)
Active: inactive (dead)
~

After I restarted the service the message of the service status was:

● argononed.service - Argon One Fan and Button Service
● argononed.service - Argon One Fan and Button Service
Loaded: loaded (/lib/systemd/system/argononed.service; disabled; preset: enabled)
Active: active (running) since Sun 2024-03-03 16:53:43 CET; 8s ago
Main PID: 38000 (python3)
Tasks: 3 (limit: 3918)
CPU: 80ms
CGroup: /system.slice/argononed.service
└─38000 /usr/bin/python3 /etc/argon/argononed.py SERVICE

Mär 03 16:53:43 iobroker systemd[1]: Started argononed.service - Argon One Fan and Button Service.

Not sure why the service becomes inactive (dead).

I restarted the system and checked the value after argononed.service was restarted manually as it crashed again after restart.
This is the value set:

~ $ i2cget -y 1 0x1a
0xe7

I wonder if this a valid value??

My experience is, that you don’t get a reliable answer from the MCU, if you don’t have the new firmware like is delivered with V3. I don’t know if Argon One V2 cases are in the wild with this new kind of firmware. Please stop the argononed service and try that to stop the fan:

stop the fan

i2cset -y 1 0x1a 0x00

If that doesn’t work, check if the MCU is currently available at the I2C bus.

i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- 1a -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --

If yes, try alternatively the V3 command (new firmware).
If address 1a not listed, power cut the case and try the command from above again.

stop the fan (new firmware variant with Argon One V3)

i2cset -y 1 0x1a 0x80 0x00

I think something is strange. After some commands, reboots, power off and on again the fan did not run anymore.
To make sure no missconfig exist I uninstalled the argonone package/service and installed again. Between all steps always a reboot.
When scanning the I2C this is the output:

~ $ /usr/sbin/i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: – – – – – – – –
10: – – – – – – – – – – 1a – – – – –
20: – – – – – – – – – – – – – – – –
30: – – – – – – – – – – – – – – – –
40: – – – – – – – – – – – – – – – –
50: – – – – – – – – – – – – – – – –
60: – – – – – – – – – – – – – – – –
70: – – – – – – – –

I checked the value set:
~ $ i2cget -y 1 0x1a
0xe7

I will check the V3 command in about 15 mins as I have a call from friend currently :wink:

I tried the V3 command:

~ $ i2cset -y 1 0x1a 0x80 0x00

I2C Device still listed:

~ $ /usr/sbin/i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: – – – – – – – –
10: – – – – – – – – – – 1a – – – – –
20: – – – – – – – – – – – – – – – –
30: – – – – – – – – – – – – – – – –
40: – – – – – – – – – – – – – – – –
50: – – – – – – – – – – – – – – – –
60: – – – – – – – – – – – – – – – –
70: – – – – – – – –

Value still the same:

~ $ i2cget -y 1 0x1a
0xe7

Result still the same:
Fan 100%, after 3 sec the fan slow down to 0% Nd then again 100%.

Again and again and again…

It sound there is a script running in the background to control the fan via I2C. Are you sure that you have all argonone* scripts stopped during your tests with i2cset?

Don’t try again to use this command, possible it makes only trouble:

i2cget -y 1 0x1a

If you have a firmware version like the Argon One V3 firmware (and not the old one), then use this to read the current fan value:

i2cget -y 1 0x1a 0x80

If you write a new value (range: 0x00 to 0x64) to this register (0x80) like I described in my first comment and you get the same value back with this i2cget command, then you should have the new firmware variant which supports control registers.

Any chance to identify the firmware version installed?

If you write a new value (range: 0x00 to 0x64) to this register (0x80) like I described in my first comment and you get the same value back with this i2cget command, then you should have the new firmware variant which supports control registers.

Try this with 2 different values, then you will see if it follows your order. This is the way, the current argononed script goes to differentiate between old/new firmware version. This is also the reason if the fan sounds fluctuating during refresh cycle.

Thank you so much for all your helpful information. I have to continue tomorrow and will let you know then. Have a good rest of the Sunday.

Have a nice rest of your Sunday too.