Featured post

Sticky post

Welcome to homepage of WHDD project.
WHDD is a HDD diagnostic and data recovery tool for Linux.
It is capable of testing a hard drive with reading and writing, providing intuitive visualization of the process. Visualization or these tests is very similar to MHDD.
Amongst others, there is a function for copying the device. The copying procedure algorithms are optimized for least harm to already-defective source device. The meaning of this becomes clear in a demo.
WHDD may work with your hard drives on low level, sending ATA commands to device, the benefits are:

  • no system freeze while accessing damaged device (device is soft-reset on timeout);
  • better timing precision.

We’re happy to bring such a good tool for you, but note that there’s no warranty! You’re on your own!

whdd 2.2

Changes since 2.1:
* Fix problems with small displays like 80×25
* Fix ATA compliance recognition (see bug #57)
* Replace “Press any key” with “Press ‘m’ for menu”
* Rework signal handling during procedure for stability
* Improve build system

Sorry, but WHDD still doesn’t compile on stock Ubuntu 14 (except you use ./build_static.sh), because Ubuntu contains way too old `dialog` package – the one from 2011! What a shame.

New demo: copying with skipfail strategy

Please note that skipfail* read strategies do not guarantee that all the space will be read! You may proceed with copying remaining space afterwards, because WHDD supports journaling of copy procedure.
Also note that reading in reverse direction is several times slower than in primary direction.

whdd 2.1

Changes since 2.0.1:

  • Enhanced smart, smart_noreverse copying strategies;
  • Introduced new copying strategies skipfail, skipfail_noreverse;
  • Introduce journaling of copying and automatic resuming of interrupted copying;
  • Support procedure parameters overriding by ~/.whddrc config file;
  • Several bug fixes.

Having no time and willpower to document thoroughly all new features…
What about ~/.whddrc config file: add a line
to omit dialog, or
to override default suggestion in dialog.
Spaces are not allowed currently. Line is matched from the beginning. So any character, like #, at the line beginning makes it a comment.

[HUMOR] whdd implemented in bash

Made up in ten minutes just for fun.
Makes timing of consequential block reading by dd, and visualizes the same way whdd does for read test.

export TIMEFORMAT="%3R"
while [[ $BLOCK_INDEX -lt $BLOCK_END_INDEX ]]; do
    TIME=$( { time bash -c "dd if=$DEV of=/dev/null bs=131072 count=1 skip=$BLOCK_INDEX &>/dev/null" ; } 2>&1 )
    if [[ `echo "$TIME < 0.003" | bc` == '1' ]]; then
        echo -en "\e[0m\u2591"
    elif [[ `echo "$TIME < 0.010" | bc` == '1' ]]; then
        echo -en "\e[0m\u2593"
    elif [[ `echo "$TIME < 0.050" | bc` == '1' ]]; then
        echo -en "\e[0m\u2588"
    elif [[ `echo "$TIME < 0.150" | bc` == '1' ]]; then
        echo -en "\e[32m\u2588"
    elif [[ `echo "$TIME < 0.500" | bc` == '1' ]]; then
        echo -en "\e[31m\u2588"
        echo -en "\e[1;31m\u2588"

whdd 2.0rc2

Second release candidate for 2.0 is published.
It is not much more than just git tag pointing to commit which was done yesterday. It just shows that i am not aware of any critical bug or missing function to consider application currently unusable.
The code is still somewhat “childish” at some places – for example, SCSI and ATA related internal functions are not as generic as needed. Internal design polishing surely will follow, but for now application seems to work correctly in all modes, and people can already use it.
Still, there is a curious problem with HPA setting – me and Rozik get weird behaviour with both WHDD and hdparm -N pXXXXXXX, on different PCs and kernel versions. But as long as our HPA-setting code works the same way as in hdparm, i consider the feature generally working, with hope to figure out reason of our problems a bit later. There is a suspicion that Linux kernel issues volatile SET MAX ADDRESS ATA command during boot, and this causes problem for consequential SET MAX ADDRESS commands.

Oh, what a long text. I would like to write just: