Mac Mini hard drive "declunker" - foreword
This project is old. Very old. You can barely find it below the dust! Many things have changed since 2005. Most notably: the Mac Mini this project was created for does not exist anymore and Apple sells SSDs in most systems nowerdays which definitely don't clunk. So this page has more of a "historical value", but since it has actual visits I'll leave it online.
- Declunk is compiled for PPC and won't work on any recent Intel Mac. You can recompile it yourself. Just type "make" in the source directory and then use the installer bundled. You will need Xcode installed. If you can't get it to work, some people have compiled an Intel version. Most of the pages are gone so it makes no sense to link there.
- The installer probably does not work on a modern OS X. Remember, it was written when OS X Tiger was the latest one. Chances are that you are not even interested with a newer OS X which likely runs on an SSD anyway.
There are other similar programs and approaches that solve the problem. In some cases you can deactivate the power management of the drive with either "hdparm -B 255 /dev/device" or a proprietary software from the manufacturer. Simpler versions of declunk exist in the form of shell scripts. Most of them write a file with a predetermined name which may post security holes, depending on the commands used. If you really want to use declunk I suggest the one on this page as it uses a safe way to handle the temporary files.
The historical documents
Certain models of the Mac Mini that use Seagate notebook hard drives are kind of overzealous with saving energy. They will park the drive's head via Load/Unload (this is what I have observed) every couple of seconds. This manifests itself as a clicking noise dubbed as "clunking" on many other sites.
While it's not a defect of the drive itself (from what I can tell), Mac OS, or whatever part of the system is responsible, is wearing down the drive significantly. According to the specs of the hard drive the maximum number of recommended Load/Unload cycles is 300.000 [Seagate Momentus technical datasheet] and after about two months my drive is already at 38.000. These values can be read with smartmontools, an open source project that displays S.M.A.R.T. status information.
I contacted Seagate about the mentioned firmware update, but they refused to know anything about the issue and that I should contact Apple instead. Since I don't want to wait until said firmware is released or until my drive has died I wrote a little program that continuously writes a couple of bytes onto the disk, just enough to avoid having OS X park the heads. This eliminates the noise and the half-second system freeze accompanied by it.
» Declunk 1.0
This is a very simple console application written in C. It does, in my opinion, not use any measurable amount of system resources and is the best solution I found until the problem is finally fixed with a firmware update. See the README distributed with the application about how to install/uninstall Declunk.
The information on this page is provided AS IS. It may not be accurate and even describe false facts. It is, however, not my intention to provide false information in the topic, but merely a solution to stop the annoying noise. If you see any information on this page that is wrong, please contact me via E-Mail and I will promptly correct the errors.
This program comes without any warranty! If you decide to use it it's solely your decision and as such your responsibility if damage to your data or hardware occurs. I will not be responsible for any damge done to your computer equipment or data. Using this software will most likely shorten your hard drive’s life compared to the theoretical design life of the device. If in doubt, do not use it.
This software should work under any other Unix, too. Like Linux for example which runs nicely on the Mac Mini. For this you need to compile it yourself. The source/ directory contains the code and a Makefile. You're on your own from there.
This program is free software and released under the terms of the GNU General Public License version 2.