Back in the old days, 1986 and thereabouts, we ran the first data recovery operation in the world. We offered a no-fix, no-fee guarantee, and we were getting a 95% success rate. A large number of the failed drives were ST225 20 mb drives, which had a very simple mechanism, and a common failure mode. I developed a technique called "magic finger", which consisted of putting your finger on *just* the right place on the drive, and wiggling it slightly, while the disk imaging software copied the sectors to another drive. That technique earned us plenty spondulics. It's obsolete now, of course, along with the ST225.
I stopped doing data recoveries when the virus thing got really big; other people in the company did the DRs, while I did the virus thing. We developed tons of other techniques, such as "windmill". All obsolete now. Back then, 20 mb was the usual size, with some 30 or 40. 70mb was considered to be a very large drive. Now, anything less than 1,000,000 mb is scarcely worth consideration.
Since then, I've done the occasional DR, usually for a friend, and for free.
So, two of my drives failed (as reported in my last blog post), presenting themselves as working drives but with a capacity of zero bytes. And I wondered if I could do anything about that. I had backups, of course, but still.
I started off with some google research, and I was gobsmacked at the huge number of companies today offering DR. But I wasn't looking for a service, I was looking for information. And I found it.
It's called the "0 LBA error". I found two good pages that described it and described a fix. This and this. There's also stuff on the Seagate site.
The cause is a bug in the firmware. Reading up the bug, it looks like if you run a lot of these drives (and I do), you're almost sure to encounter this problem. I've encountered it before, but I didn't try to do anything about it before. This time, I did. And I will in future.
First, you have to make up an interface; you have to talk to the drive over a serial connection, but the drive uses TTL and so I needed an RS232-TTL converter. Fortunately, I already had one, bought for the Raspberry Pi (and not used up till now). Then I had to find connectors small enough to plug into the hard drive interface (I had some in my box of electronics bits) and solder them to connect to the converter. I powered the converter with a USB-mini-USB connector, connected the converter to an RS232 port on the computer, and installed minicom, a terminal emulator. Then I talked to the drive, sternly.
Connect everything up except power to drive
Start minicom, 38400,8,N,1,N
Connect power to drive Rst 0x20M
Type ctrl-Z F3 T>
/2 F3 2>
Z Spin down complete ...
U Spin up complete ...
/1 F3 1>
N1 (this does smart erase, create smart sector) F3 1>
/ F3 T>
m0,2,2,0,0,0,0,22 User partition Format Successful
Wait until previous message shows
Power on with drive power and data cable connected
Enjoy the sight of a 931 gb drive, and all the lost data.
OK, I just did it for fun, because I do have a backup. But it's still a good feeling when you see the data that you'd given up as lost for ever!
... update ...
I went through a bunch of failed drives, and found two more that could benefit from this treatment, and it worked on those also. Now reformatting them ...