Argon EON - Fan Stopped Responding

I noticed recently that my EON fan is no longer responding to the control scripts. I had the custom scripts from @NHHiker installed but I’ve created a fresh OS (64-bit Bullseye) on a new Micro SD card and getting the same results. I even created a fresh OS, installed the default Argon scripts, and set the fan to always on but no change.

The fan spins on boot so it’s getting power and the argononed service is running. This is the output from the Argon Configuration utility when I choose System Information and then Fan Speed…

--------------------------
TEMPERATURE INFORMATION:
   CPU: 45.2°C
   SDA: 40.0°C
   SDB: 38.0°C
   HDD MIN: 38.0°C
   HDD MAX: 40.0°C
FAN CONFIGURATION INFORMATION:
   Fan Temp-Speed cut-offs
         1.0=100
   HDD Temp-Speed cut-offs
         1.0=100
FAN SPEED INFORMATION:
   Fan Speed 100
--------------------------

It appears it thinks it’s running at 100% but it’s definitely not running - at all. Anyone seeing similar behavior or have any suggestions of what else to check?

Thanks.

Check your log file.:

cat /var/log/argoneon.log

There was a code change that modified the configuration for Debian installs, not Raspberry PI OS installs… I’m thinking it may be doing the wrong thing.

Okay, so… the issue is the code is throwing an exception on the following:

bus.write_byte( ADDR_FAN, 100 )

or

bus.write_byte( ADDR_FAN, int(newspeed))

Anything else and we would see a message other than [ERROR] Error trying to update fan speed

we get bus from:

# initialize I2C bus
rev = GPIO.RPI_REVISION
if rev == 2 or rev == 3:
    bus = smbus.SMBus(1)
else:
    bus = smbus.SMBus(0)

Try the following, you should see the output listed … let me know what you get…

$ lsmod | grep i2c
i2c_brcmstb            16384  0
i2c_bcm2835            16384  6
i2c_dev                20480  12

So… could you run raspi-config:
select (3) interface options,
select (I5) I2C Enable/Disable automatic loading of I2C Kernel module

and See if that helps? There is/was code to automatically do this however I wonder if that changed…

Thanks for looking at this. I made the change in raspi-config and the fan still did not kick on.

Not sure if this helps but if I stop and restart the argononed service, this is the output when I check the status…

pi@pi-eon:~ $ sudo systemctl status argononed
● argononed.service - Argon One Fan and Button Service
     Loaded: loaded (/lib/systemd/system/argononed.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2024-09-30 21:29:25 EDT; 3s ago
   Main PID: 2103 (python3)
      Tasks: 3 (limit: 8695)
        CPU: 377ms
     CGroup: /system.slice/argononed.service
             └─2103 /usr/bin/python3 /etc/argon/argononed.py SERVICE

Sep 30 21:29:25 pi-eon systemd[1]: Started Argon One Fan and Button Service.
Sep 30 21:29:25 pi-eon python3[2103]: Exception in thread Thread-1:
Sep 30 21:29:25 pi-eon python3[2103]: Traceback (most recent call last):
Sep 30 21:29:25 pi-eon python3[2103]:   File "/usr/lib/python3.9/threading.py", line 954, in _bootstrap_inner
Sep 30 21:29:25 pi-eon python3[2103]:     self.run()
Sep 30 21:29:25 pi-eon python3[2103]:   File "/usr/lib/python3.9/threading.py", line 892, in run
Sep 30 21:29:25 pi-eon python3[2103]:     self._target(*self._args, **self._kwargs)
Sep 30 21:29:25 pi-eon python3[2103]:   File "/etc/argon/argononed.py", line 79, in shutdown_check
Sep 30 21:29:25 pi-eon python3[2103]:     GPIO.wait_for_edge(PIN_SHUTDOWN, GPIO.RISING)
Sep 30 21:29:25 pi-eon python3[2103]: RuntimeError: Error waiting for edge

Actually that does help. It looks like GPIO.wait_for_edge is causing an runtime error. If this is the case, then any GPIO may be failing, this would prevent the setting the fan speed.

I’ll examine the code setup around the GPIO. I’m not getting home until 9pm this evening, so it may be a day or so.

OK, thanks again. I’m happy to provide any logs needed and perform any testing. I looked at the argoneon.log and mine started throwing errors on 08/12/24.

Since the default Argon scripts don’t seem to trigger the fan either, do you think this may be related to an OS update?

Only to be sure, do you have already made the case powerless (unplug the power supply) ? I know situations there the MCU of Argon ONE cases are stucked (disconnected from I2C bus) and then it’s needed to make it one time powerless to RESET. Perhaps the MCU in the EON case has the same behaviour.

Also it seems, during your troubleshooting attempt that you have installed the wrong script. You have installed the daemon for argononed not argoneond.

Harry,

The script that runs the fans is argononed.py… for some reason Argon didn’t change the name, when they ported… Unfortunately I didn’t change the name either ;-(

But, unplugging and letting it sit for a moment might help depending on the design.

If the original scripts don’t work… its 100% related to the update… so that’s a good place to start. Looks like I’ll be installing the latest.

Sigh.

Any luck with this? Anything I can help with?

Hope to get to it today. I have some electrical work to do in the basement (running power for a water softener and filter system).

So I’m avoiding starting my electrical updates…

I upgraded everything on my PI, and still no issues. I rebooted and disabled SPI and I2C in raspi-config… no issues. I re-enabled SPI and I2C and … no issues.

Looks like I have to boot the latest to see what happens.

What I have done so far:

  1. Downloaded the latest Raspberry PI 64 bit OS
  2. sudo apt update
  3. sudo apt full-upgrade
  4. rebooted

I have no errors.

my log (with debugging):

Oct 05 24 21:31:36 561 [INFO] argononed service version 2023.02.10 starting.
Oct 05 24 21:31:36 561 [DEBUG] writing to fan port, speed 0
Oct 05 24 21:31:36 561 [DEBUG] Temperature (34.563) >= 30.0 suggesting fanspeed of 100
Oct 05 24 21:31:36 561 [DEBUG] Returning fanspeed of 100
Oct 05 24 21:31:36 561 [DEBUG] Returning fanspeed of 0
Oct 05 24 21:31:37 561 [DEBUG] writing to fan port, speed 100
Oct 05 24 21:35:21 561 [DEBUG] Temperature (32.615) >= 30.0 suggesting fanspeed of 100
Oct 05 24 21:35:21 561 [DEBUG] Returning fanspeed of 100
Oct 05 24 21:35:21 561 [DEBUG] Returning fanspeed of 0
Oct 05 24 21:36:21 561 [DEBUG] Temperature (32.615) >= 30.0 suggesting fanspeed of 100
Oct 05 24 21:36:21 561 [DEBUG] Returning fanspeed of 100
Oct 05 24 21:36:22 561 [DEBUG] Returning fanspeed of 0
Oct 05 24 21:37:22 561 [DEBUG] Temperature (32.128) >= 30.0 suggesting fanspeed of 100
Oct 05 24 21:37:22 561 [DEBUG] Returning fanspeed of 100
Oct 05 24 21:37:22 561 [DEBUG] Returning fanspeed of 0
Oct 05 24 21:38:22 561 [DEBUG] Temperature (32.128) >= 30.0 suggesting fanspeed of 100
Oct 05 24 21:38:22 561 [DEBUG] Returning fanspeed of 100
Oct 05 24 21:38:22 561 [DEBUG] Returning fanspeed of 0
Oct 05 24 21:39:22 561 [DEBUG] Temperature (32.615) >= 30.0 suggesting fanspeed of 100
Oct 05 24 21:39:22 561 [DEBUG] Returning fanspeed of 100
Oct 05 24 21:39:22 561 [DEBUG] Returning fanspeed of 0
Oct 05 24 21:40:22 561 [DEBUG] Temperature (32.128) >= 30.0 suggesting fanspeed of 100
Oct 05 24 21:40:22 561 [DEBUG] Returning fanspeed of 100
Oct 05 24 21:40:23 561 [DEBUG] Returning fanspeed of 0
Oct 05 24 21:41:23 561 [DEBUG] Temperature (31.641) >= 30.0 suggesting fanspeed of 100
Oct 05 24 21:41:23 561 [DEBUG] Returning fanspeed of 100
Oct 05 24 21:41:23 561 [DEBUG] Returning fanspeed of 0

I did notice that if I attempt to run:

sudo python /etc/argon/argononed.py FANON

I get similar errors to what you have posted:

Traceback (most recent call last):
  File "/etc/argon/argononed.py", line 71, in <module>
    GPIO.setup(PIN_SHUTDOWN, GPIO.IN,  pull_up_down=GPIO.PUD_DOWN)
  File "/usr/lib/python3/dist-packages/RPi/GPIO/__init__.py", line 696, in setup
    _check(lgpio.gpio_claim_input(_chip, gpio, {
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/lgpio.py", line 755, in gpio_claim_input
    return _u2i(_lgpio._gpio_claim_input(handle&0xffff, lFlags, gpio))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/lgpio.py", line 458, in _u2i
    raise error(error_text(v))
lgpio.error: 'GPIO busy'

I wonder if there are two instances of the service running???

FYI: My fan is dead, dead, dead. Smells funny and I cannot turn it with air… I can move it with my finger, but it does not free spin.


Replaced fan, and everything is working. I cannot reproduce your issue…

Well crap. I certainly wasn’t expecting that. I did the same as you…

  1. Downloaded the latest Raspberry Pi 64-bit OS (Bookworm)
  2. sudo apt update
  3. sudo apt full-upgrade
  4. rebooted

And you are installing the software via this command, correct?

curl -L https://raw.githubusercontent.com/JeffCurless/argoneon/main/argoneon.sh | bash

Did you make any modifications to the default /etc/argoneon.conf file other than turning on debug?

I swapped my fan, too…just for grins - same thing. It just spins up on power on and then stops after 3-4 seconds.

I also did a continuity test on the cable that connects from the board at the bottom of the case to the combination fan controller/OLED module - all good.

My only thought at this point is that the OLED module/fan controller is bad, but still “good enough” to pass power to the fan on boot. Argon’s store does not sell this part, and I only found complete EONs for sale on eBay.

@joseph.zapanta - will Argon send/sell me the part?

Please stop the argononed service and check if the MCU is reported at the I2C bus address 0x1a:

sudo systemctl stop argononed
sudo i2cdetect -y 1

If address 0x1a is populated, try to start the fan manually:
sudo i2cset -y 1 0x1a 0x64

If 0x1a not populated:

  • Disable the argononed service
    sudo disable argononed
  • Shut down the system
    poweroff
  • Important: make the system power less
    unplug the power supply for some seconds
  • Boot the system
  • Check I2C again
    sudo i2cdetect -y 1

With the error reported, it does look like a permissions thing…

This is the output I get…

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

Shutting down, pulling the power supply, and booting back up does not change the output.

I get:

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

Something is not setup right… I have no idea what however…

Yes, using that command and no edits to argoneon.conf other than turning on debug