Settling temperature values to 0, i.e. 30=0 will (using the Argon code) set the fan to 25%.
If you want the minimum temp to be 45, remove all other ranges and set it.
i.e.
45=10
50=25
55=75
Settling temperature values to 0, i.e. 30=0 will (using the Argon code) set the fan to 25%.
If you want the minimum temp to be 45, remove all other ranges and set it.
i.e.
45=10
50=25
55=75
Hi
TBH, I was hoping to turn the fan completely off until the HDD’s reached 45C and the CPU reached 50C looking at the documentation the RPi4 should cope with 80C no higher without frying itself, so 50C, while not ideal, is an acceptable level.
Is the Argon EON designed by default to have the fan permanently on by any chance, given setting it to 0 doesn’t actually set it to 0 (i.e. Off) but sets it to 25%? Because if that’s the situation, then I’m wasting my time trying to stop the thing from sounding like a 747 getting ready to take off at Heathrow.
Okay… modify your config file. Eliminate all settings except the ones you want. As explained before setting a fan speed to zero sets the speed to 25. It’s right there in the code.
The way to set a fan speed to zero for a specific temp is to not have a setting.
So by having your first setting in the file
45=10
This will keep the fan off until the max temp of any drive is 45. When that happens it will run the fan at 10%
Hi
Ahh, the clouds part for me now.
OK, much appreciated.
Many thanks
OK, for anyone stumbling across this thread. Using the default argon-config won’t work if you’re looking to switch the fan off until it reaches the desired level. There is no way to set the threshold level of (in my case) 45C for the fan to start, the argon-config demands an input for the 30C entry before it will move to the 35C entry which in turn demands an input. Setting 30C, 35C and 40C to 0 (Zero) is pointless as that will default to 25% fan speed which is not “Off”.
You need to edit argononed.conf and argononed-hdd.conf respectively with your favourite text editor Nano or in my case Vim
sudo vim /etc/argononed.conf [This is for the CPU settings]
sudo vim /etc/argononed-hdd.conf [This is for the hard drive settings]
Just delete the fan speed settings (Not the temperatures) for 30C, 35C and 40C on the HDD’s (obviously the same applies to CPU) don’t forget to set fan speeds for 45C and above.
HTH
Hi everyone, new to the EON, been using OMV for quite some time.
Found the HDD temp script is messing with hdd spindown (hdparm), spinning them up regularly (once a minute maybe).
Uninstalled OLED script and hdparm spindown works just fine (verified on OMV5 and OMV6).
Is there any way the EON fan can be controlled by only checking the RPi temp and not have the hdd temp checked?
Thanks!
Thanks!!!
You mean on the install script or after the install?
exit the script after the install.
Could anyone explain how to do this
Thanks @NHHiker, I´m not much of a programmer really , could you please point me in the right direction? Name of the script that needs to be edited?
Thanks again
DISABLE HDD TEMP CHECK - HDD SPINDOWN RE-ENABLED
1 - Comment lines on /etc/argon/argonsysinfo.py defs "argonsysinfo_gethddtemp" and "argonsysinfo_getdevhddtemp" to look like this:
def argonsysinfo_gethddtemp():
# May 2022: Used smartctl, hddtemp is not available on some platforms
hddtempcmd = "/usr/sbin/smartctl"
if os.path.exists(hddtempcmd) == False:
# Fallback for now
hddtempcmd = "/usr/sbin/hddtemp"
outputobj = {}
# if os.path.exists(hddtempcmd):
# try:
# tmp = os.popen("lsblk | grep -e '0 disk' | awk '{print $1}'").read()
# alllines = tmp.split("\n")
# for curdev in alllines:
# if curdev[0:2] == "sd" or curdev[0:2] == "hd":
# tempval = argonsysinfo_getdevhddtemp(hddtempcmd,curdev)
# if tempval > 0:
# outputobj[curdev] = tempval
# return outputobj
# except:
# return outputobj
return outputobj
def argonsysinfo_getdevhddtemp(hddtempcmd, curdev):
cmdstr = ""
# if hddtempcmd == "/usr/sbin/hddtemp":
# cmdstr = "/usr/sbin/hddtemp -n sata:/dev/"+curdev
# elif hddtempcmd == "/usr/sbin/smartctl":
# cmdstr = "/usr/sbin/smartctl -d sat -A /dev/"+curdev+" | grep Temperature_Celsius | awk '{print $10}'"
#
tempval = 0
# if len(cmdstr) > 0:
# try:
# temperaturestr = os.popen(cmdstr+" 2>&1").read()
# tempval = float(temperaturestr)
# except:
# tempval = -1
#
return tempval
2 - Save & exit
3 - Reboot
I’m going to try this out and see if it works for me, though I’m a little concerned that I’m not going to be checking HDD temp any more. Would there be a way to only check the temp if the HDDs are spinning?
Well, you would have to query the drive to see if it is currently spinning. With a number of drives… that would start the drive spinning. While some drives are easy to check and prevent the spin, others are not so easy… so yeah, for some drives you could.
Personally if you want the drives to spin up on use, don’t monitor temps…
Haha, I was hoping that wouldn’t be the case, but it makes sense. I’ll have to think about what my long term solution is, but for the most part the HDDs are minimally used unless we’re actively interacting with it. Because of that, repeatedly spinning them up with a temp query feels like a bad idea. All things considered, not monitoring the drive temp isn’t the worst solution, for now at least.
How to re-enable hdd temperature check in future?
Uncomment those lines and reboot? Have not tried it though
You can have both. Temp checks and spin down. But you have to consider that the interval of the temp checks has to be longer as the spindown timeout. I patched the “argonsysinfo.py” script to do so (quick and dirty).
--- argonsysinfo.py.orig 2022-05-25 16:33:24.000000000 +0200
+++ argonsysinfo.py 2022-08-26 15:42:29.817984727 +0200
@@ -8,6 +8,9 @@
import time
import socket
+outputobj = {}
+lasthddtemp = 0
+
def argonsysinfo_listcpuusage(sleepsec = 1):
outputlist = []
curusage_a = argonsysinfo_getcpuusagesnapshot()
@@ -151,22 +154,29 @@
return maxtempval
def argonsysinfo_gethddtemp():
+ global outputobj
+ global lasthddtemp
# May 2022: Used smartctl, hddtemp is not available on some platforms
+ now = int(time.time())
+ if (lasthddtemp + 300) > now:
+ return outputobj
+ lasthddtemp = now
+
hddtempcmd = "/usr/sbin/smartctl"
if os.path.exists(hddtempcmd) == False:
# Fallback for now
hddtempcmd = "/usr/sbin/hddtemp"
- outputobj = {}
if os.path.exists(hddtempcmd):
try:
tmp = os.popen("lsblk | grep -e '0 disk' | awk '{print $1}'").read()
alllines = tmp.split("\n")
for curdev in alllines:
if curdev[0:2] == "sd" or curdev[0:2] == "hd":
- tempval = argonsysinfo_getdevhddtemp(hddtempcmd,curdev)
- if tempval > 0:
- outputobj[curdev] = tempval
+ outputobj[curdev] = argonsysinfo_getdevhddtemp(hddtempcmd,curdev)
+# tempval = argonsysinfo_getdevhddtemp(hddtempcmd,curdev)
+# if tempval > 0:
+# outputobj[curdev] = tempval
return outputobj
except:
return outputobj
@@ -177,7 +187,8 @@
if hddtempcmd == "/usr/sbin/hddtemp":
cmdstr = "/usr/sbin/hddtemp -n sata:/dev/"+curdev
elif hddtempcmd == "/usr/sbin/smartctl":
- cmdstr = "/usr/sbin/smartctl -d sat -A /dev/"+curdev+" | grep Temperature_Celsius | awk '{print $10}'"
+# cmdstr = "/usr/sbin/smartctl -n standby,0 -A /dev/"+curdev+" | grep Temperature_Celsius | awk '{print $10}'"
+ cmdstr = "/usr/sbin/smartctl -n standby,0 -A /dev/"+curdev+" | egrep 'Temperature.*Cels' | sed -E 's/^.*\s+([0-9]+)\s+[C\(][eM0-9].*$/\\1/'"
tempval = 0
if len(cmdstr) > 0:
In the line “if (lasthddtemp + 300) > now:” the 300 are the seconds for the real temp check interval. This must be longer as your actual hdd spindown timeout.
The change to the smartctl call prevents checks if the HDD already is in standby. And the change to the “grep” afterwards makes it possible to check NVMe devices as well.
I do not see this working, I’ve tested the modified smartctl command on my EON, and can see the results from the NVME, however when I use this on an non-nvme device I don’t get those results… just an error:
Testing on my EON:
Non-NVME drive:
smartctl -d sat -A /dev/sdd
MART Attributes Data Structure revision number: 1
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
5 Reallocated_Sector_Ct 0x0033 100 100 010 Pre-fail Always - 0
9 Power_On_Hours 0x0032 099 099 000 Old_age Always - 4490
12 Power_Cycle_Count 0x0032 099 099 000 Old_age Always - 55
177 Wear_Leveling_Count 0x0013 100 100 000 Pre-fail Always - 0
179 Used_Rsvd_Blk_Cnt_Tot 0x0013 100 100 010 Pre-fail Always - 0
181 Program_Fail_Cnt_Total 0x0032 100 100 010 Old_age Always - 0
182 Erase_Fail_Count_Total 0x0032 100 100 010 Old_age Always - 0
183 Runtime_Bad_Block 0x0013 100 100 010 Pre-fail Always - 0
187 Uncorrectable_Error_Cnt 0x0032 100 100 000 Old_age Always - 0
190 Airflow_Temperature_Cel 0x0032 075 049 000 Old_age Always - 25
195 ECC_Error_Rate 0x001a 200 200 000 Old_age Always - 0
199 CRC_Error_Count 0x003e 100 100 000 Old_age Always - 0
235 POR_Recovery_Count 0x0012 099 099 000 Old_age Always - 52
241 Total_LBAs_Written 0x0032 099 099 000 Old_age Always - 39874272
Non-NVME drive:
smartctl -n standby,0, -A /dev/sdd
smartctl 7.2 2020-12-30 r5155 [aarch64-linux-5.15.76-v8+] (local build)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org
/dev/sdd: Unknown USB bridge [0x1741:0x1156 (0x100)]
Please specify device type with the -d option.
Use smartctl -h to get a usage summary
If I specify the type (-d sat) the non-NVME devices work, but the NVME does not…