I have multiple TrueNAS 25.10.4 systems that are used almost exclusively as backup targets. For years I’ve configured the HDDs to enter standby after 10 minutes of inactivity.
After upgrading, I noticed the drives were waking up roughly every 90 minutes. Looking through the middleware source, I found the SMART alert source is scheduled with:
schedule = IntervalSchedule(timedelta(minutes=90))
in:
/usr/lib/python3/dist-packages/middlewared/alert/source/smart.py
On my systems (WD Red and Seagate Exos drives), increasing this interval appears to prevent the frequent wakeups. I changed it to:
schedule = IntervalSchedule(timedelta(minutes=720))
Because the TrueNAS root filesystem is read-only, I used a bind mount override instead of modifying the installed file directly.
Copy the original smart.py to a persistent location (I used /root/smart.py).
Modify the schedule value in the copied file.
Add the following Post Init command in the TrueNAS UI:
mount --bind /root/smart.py /usr/lib/python3/dist-packages/middlewared/alert/source/smart.py && sleep 60 && systemctl restart middlewared
After implementing this, my backup-target systems now wake the data drives only:
Twice per day for the SMART alert checks (12-hour interval)
Once per day for the backup job
Occasionally for scrubs and scheduled SMART tests
For my use case, roughly 3–5 spin-ups per day is preferable to drives waking every 90 minutes.
A few notes:
This is an unsupported workaround and may stop working after updates.
I have only tested this on TrueNAS 25.10.4.
I have not tested whether there are any side effects beyond reducing disk wakeups.
Use at your own risk.
One interesting observation: on both the WD Red and Seagate Exos drives, temperature reporting continues to update through the kernel hwmon interface even while the drives remain in standby. I verified with smartctl -n standby that reading those temperatures does not wake the disks.
I’m far from an expert when it comes to this kind of tinkering, so if there is a reason this approach is considered a bad idea, I’d appreciate any feedback. Also, this is just a small one-person home lab, so my goals and risk tolerance may be very different from production or enterprise deployments.