We want to monitor hard disks for present problems or pending failure.

Can the Fast Fourier Transform (FFT) of a given hard disk in question, then, be compared with a reference FFT for a perfectly working one, and then conclude hard disk may be faulty or about to fail if its FFT differs significantly from the reference?

FFT would be used to detect unexpected frequencies, or harmonics, that do not normally occur in a 'healthy' hard disk. FFT would input vibrations from hard disk, and output the collection of vibration's constituent frequencies. This would be compared to the frequency domain function of 'healthy' hard disk.

  • $\begingroup$ You might want to look at Detecting periodic data from the phone's accelerometer $\endgroup$ Apr 21, 2016 at 1:34
  • 1
    $\begingroup$ The short answer to the actual posed question is yes, but only if there is a measurable difference between the harmonic spectra of each operational mode. If faulty operation does not cause a measurable difference from normal operation, then of course then answer is no, FFT would not be usable. A more useful question might be "how would I go about measuring the difference?" which is a very broad question. You might think about editing to ask a specific question about a particular signal recording method (accelerometers, microphone, etc), assuming that is the issue. $\endgroup$
    – wwarriner
    Apr 21, 2016 at 4:16
  • 2
    $\begingroup$ The Fast Fourier Transform is a calculation performed on any data. The real question you need to ask is how you are going to acquire the data from the hard disk. $\endgroup$ Apr 21, 2016 at 11:58

3 Answers 3


Disclaimer: Although I have studied FFT, I have not applied FFT to a practical application. Therefore I would differ a direct response to someone else. Regardless I would really like to see the end result too.

But I can offer you following two application examples and source code to access data from three axis ADXL345 accelerometer to help you with your endeavors. Examples were developed on ARM Cortex A8 and ARM Cortex M4 processors. The first one uses a Beaglebone Black / Embedded Linux platform and the second is a bare metal design. All X, Y, and Z data points are captured. These are used to calculate Roll and Pitch.

Three axis ADXL345 accelerometer implementation using a Embedded Linux platform

Three axis ADXL345 accelerometer implementation using a Embedded Linux platform

Both the designs use I2C bus to capture the data. So digitally sampled data is available. Therefore code has to modified to apply FFT. With little effort you should be able determine frequencies, harmonic's etc.

Your are welcome to fork the source code and use them as you wish.

Also below are few interesting graph on that might be of help.

Rotational Vibration Safeguard (RVS)

Rotational Vibration Safeguards

Simple Free fall profile for a HDD

Simple Free fall profile

A Traditional Protection Algorithm

Traditionally, the HDD protection algorithm has been based on free-fall modeling, as explained below, in which the outputs of the sensors contained in the accelerometers can be easily captured by a digital oscilloscope or other data sampling system.

A “test sled” can be assembled using two ADXL320 dual-axis accelerometers. The axes of the accelerometers are aligned with the X, Y, and Z axes, as depicted in figure below (Figure 4), thereby providing values of acceleration along the X, Y, and Z coordinates. (The Y1 output is redundant and is not used.) The outputs of the coordinate axes are sampled by a 12-bit ADC contained in an ADuC832 precision analog microcontroller, which integrates the sampled data and feeds it to an internal 8052-compatible core processor. The sampled data is then transferred to the computer—via an RS-232 interface—for analysis.

Test Sled

The figure below (Figure 5) shows the sequence of responses sensed by the two > sensors. Values X and Y are supplied by one accelerometer, the values Z and Y1 are supplied by the other accelerometer. Note also that the plot is divided into four consecutive intervals labeled: “static,” “rollover,” “free-fall drop,” and “impact.” The sampling interval, shown along the X axis, is determined by the ADC, which is clocked at 200 Hz for each variable, or one sample of each variable every 5 milliseconds. The Y-axis scale represents the values delivered by the 12-bit ADC in the ADuC832 smart-transducer front end, plotted for all four axes.

Protection Algorithm


  • $\begingroup$ I'm not an expert either, but positioning of the accelerometers may also be important to ensure that all (or at least critical) vibrational modes are captured. You might also be able to record the vibration via a high-quality microphone (similar to a ping-and-ring test for bulk materials) during steady-state operation. The latter would require a very quiet, noise-free environment, such as an insulated enclosure on a vibration isolation table. $\endgroup$
    – wwarriner
    Apr 21, 2016 at 4:13
  • $\begingroup$ Positioning is indeed a problem if you place your accelerometer in a node of your vibration you get no signal. $\endgroup$
    – joojaa
    Apr 21, 2016 at 4:57

In principle this might work. For example similar methods are used in real time to detect developing faults in jet engines, by processing the signals from vibration sensors on the engine. (The details of the methods used are confidential, however).

One problem you will face is that you are not measuring the accelerations of an isolated disk drive, but a disk that is one component of a bigger mechanical system (a complete desktop or laptop computer, a server rack, etc). You will need some way to separate the (probably small) vibrations of the disk itself from other vibration sources, for example cooling fans operating intermittently and/or at variable speeds. Even with an isolated disk drive, you would probably do better to use all the data that you can easily capture - for example the disk-head-positioning data coming from the disk controller would give you a measure of the forces that are exciting the vibrations, to correlate with measuring the disk's response to those forces.


Im pretty confident in that you can see some changes in the fourier analysis if you have a sensitive enough sensor in the right place and the failure is mechanical. Similar methods are used to measure the health of bearings with success.

However, you do not know what you are looking for. Unless your a very skilled simulation guy or can find some analysis which tells you what your looking for then you need some empirical data. Go forth and measure a bunch of drives and try to see how they differ. Get hold of ones that have failed and see what the difference is. Then try to predict which drive is going to brake and monitor that.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.