Scripts to silence the periodic "da-da-da" idle-actuator noise on a WD Ultrastar DC HC550 used as a NAS disk — without spinning the drive down.
A WD Ultrastar DC HC550 (18TB SATA) makes a soft da-da-da clicking sound roughly
every 6 seconds while idle. Investigation showed:
- The drive is healthy (Reallocated=0, Pending=0, Helium=100%).
- The heads stay loaded the whole time —
Load_Cycle_Countdoes not increment — so this is not head parking/unloading. - There is no host I/O (the disk was unmounted).
The noise is the drive's firmware running a periodic actuator sweep while it
sits in the fully-active power state. The drive's EPC (Extended Power Conditions)
idle timers were present but runtime-disabled (Current Timer = 0), so the
drive never dropped into a quiet idle state.
Enable the drive's EPC Idle_B power condition with a short timer. After the timer elapses (15s here) the actuator quiesces and the drive goes silent, while:
- the platters keep spinning (no spin-down, no spin-up wear/latency),
- the heads stay loaded (zero load/unload wear),
- wake latency is ~1.1s.
This is the sweet spot for a quiet, always-ready NAS disk.
Order matters — EPC must be enabled before the per-state timer is set,
otherwise the timer set fails with Invalid Field in CDB:
openSeaChest_PowerControl -d /dev/sgX --EPCfeature enable
openSeaChest_PowerControl -d /dev/sgX --idle_b 15000 --standby_z disable --standby_y disable
# verify:
openSeaChest_PowerControl -d /dev/sgX --showEPCSettings # Idle_B Current should be *150The Idle_B timer value is saved to the drive's non-volatile memory and is never lost. The open question is whether the drive auto-applies it on power-up.
On Linux, it does not persist across reboots — but not because the drive
forgets. Linux's libata driver re-enables APM on every drive init, and on
this drive APM and EPC are mutually exclusive, so APM masks the saved Idle_B
(Current resets to 0). This was confirmed: after a forced re-init the drive
came back APM [Enabled] / EPC disabled with no user action.
On macOS (the intended NAS OS), the AHCI stack does not manage APM the way libata does, so per the ATA spec the saved EPC config will likely auto-apply on boot with no script at all. Verify once on the real machine:
openSeaChest_PowerControl -d <dev> --showEPCSettings # Idle_B Current == *150 ?If Current is *150 after a reboot, you're done — delete the LaunchDaemon.
If it resets to 0, install the LaunchDaemon below as a safety net.
| File | Purpose |
|---|---|
quiet-hc550.sh |
Finds the HC550 by serial and applies EPC + Idle_B. |
com.local.quiet-hc550.plist |
macOS LaunchDaemon that runs the script at every boot. |
Requires the openSeaChest macOS build. Adjust the OSC path inside quiet-hc550.sh
to your install location.
sudo cp quiet-hc550.sh /usr/local/sbin/
sudo chmod +x /usr/local/sbin/quiet-hc550.sh
sudo cp com.local.quiet-hc550.plist /Library/LaunchDaemons/
sudo launchctl load /Library/LaunchDaemons/com.local.quiet-hc550.plistLogs go to /var/log/quiet-hc550.log.
- APM is not the lever. Setting APM to 128 had no audible effect and did not unload heads. DIPM is also irrelevant (it's SATA link power, not mechanical).
- Do not use
--standby_z/--standby_yenable unless you actually want spin-down; they are explicitly disabled here. - The drive serial is hard-coded in the script (
5DJP4T1P) so the disk handle can change safely between boots — change it for a different drive.