MultiDrive – free backup, clone & wipe disk utility from Atola Technology

All times are UTC - 5 hours [ DST ]


Switch to mobile style


Post new topic Reply to topic  [ 5 posts ] 
Author Message
 Post subject: Disabling ECC through seagate serial interface.
PostPosted: February 1st, 2011, 0:27 
Offline

Joined: June 9th, 2009, 5:42
Posts: 8
Location: Thailand
Hello! I'm trying to disable the error correction code on my Seagate drive using the serial interface.

I have found a level /2 command called Y, which seems to have some stuff about ECC.

First I send a ^Z byte to go into the default "T>" prompt.

Then I enter the "/2" command to go into level 2, which gives me the "2>" prompt.

Now entering "Y" by itself gives the current values:

2>Y
EP=1, TA=1, HiGain=1, OTRd=1, Early Rd=0, Splash=1, Reload=1, NPML=1, MRBias=1
Bst/Zap=1, SrvoThrsh=1, RunOut=1, MaxECC=1, ECC 2=1, ECC 1=1, ECC 0=1
Data=FF, Write=80, ID=FF

I've figured out that I can change the first 32 bits by simply writing out what I want in hexadecimal after the Y:

2>Yf7f0
EP=1, TA=1, HiGain=1, OTRd=1, Early Rd=0, Splash=1, Reload=1, NPML=1, MRBias=1
Bst/Zap=1, SrvoThrsh=1, RunOut=1, MaxECC=0, ECC 2=0, ECC 1=0, ECC 0=0
Data=FF, Write=80, ID=FF

I don't know the exact meanings of the 4 different bits with ECC in their labels. But I'm guessing that putting them all to zero should do the job of disabling ECC.

The problem now, is that I cannot access the disk through the SATA connection while I'm in the prompt. I would like to be able to read the sectors through the regular SATA interface, but the drive doesn't respond to any ATA read commands.

The only thing that I found that makes the drive respond to ATA read commands is to send a "^C" byte, which resets the drive. However, it also erases the changes I made to the ECC bits.

I need to find a way to access the drive without erasing the changes I made to the ECC bits, or to save the changes so that they are loaded up after a reset.

Does anybody know how to disable ECC so that I could read the data through the SATA interface without the hard drive applying any error correction code on my data?


Top
 Profile  
 
 Post subject: Re: Disabling ECC through seagate serial interface.
PostPosted: February 1st, 2011, 10:49 
Offline

Joined: August 12th, 2008, 13:11
Posts: 3235
Location: USA
Humanoid wrote:
Does anybody know how to disable ECC so that I could read the data through the SATA interface without the hard drive applying any error correction code on my data?

You realize that if you read everything without ECC that it would not produce valid data?

_________________
You don't have to backup all of your files, just the ones you want to keep.


Top
 Profile  
 
 Post subject: Re: Disabling ECC through seagate serial interface.
PostPosted: February 4th, 2011, 5:13 
Offline

Joined: June 9th, 2009, 5:42
Posts: 8
Location: Thailand
Disabling ECC will produce data that has some errors in it. The data will not be completely wrong, only a certain percentage of the bytes will be wrong.

On older drives, we could just disable ECC using the "Set Features" ATA command (code = EFh). Subcommand 77h disabled ECC, and subcommand 88h enabled ECC. It was part of the ATA standard up until version 3 of the ATA specification. Versions 4 and up of the specification labeled those subcommands as "obsolete". I have no idea why they labeled those subcommands as obsolete, since I don't see anything new that replaced their functionality.

I tried sending the 77h subcommand to a seagate drive through the SATA interface, and the command failed. So I am looking for a way to disable ECC through the serial interface.


Top
 Profile  
 
 Post subject: Re: Disabling ECC through seagate serial interface.
PostPosted: February 4th, 2011, 10:11 
Offline

Joined: August 12th, 2008, 13:11
Posts: 3235
Location: USA
You can use read long instead of normal read.

_________________
You don't have to backup all of your files, just the ones you want to keep.


Top
 Profile  
 
 Post subject: Re: Disabling ECC through seagate serial interface.
PostPosted: February 15th, 2011, 23:21 
Offline

Joined: June 9th, 2009, 5:42
Posts: 8
Location: Thailand
I tried using READ LONG (without retries, code 23h), and it kinda works. The data returned hasn't been corrected with ECC which is what I wanted.

However, there are two problems with this command.
1- It is very slow.
2- It is limited to 28 bit LBA's, so I cannot read past the first 128 gigs on the drive.

The slowness is pretty big problem, on my test drive, I was only able to achieve 60 kilobytes per second. That's 5 gigs per 24 hours. At this rate, it would take me 40 days to read 200 gigs.

It seems the slowness is due to two things working together. The drive's read ahead cache isn't being used, and the command is limited to 1 sector at a time.

I need a way to read the data without ECC in a fast way, and also go beyond the 128 gig boundary.

I'm still thinking that the best way would be to disable ECC completely through the drive's serial interface. Is there a way to do this?


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 5 posts ] 

All times are UTC - 5 hours [ DST ]


Who is online

Users browsing this forum: Google [Bot] and 58 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group