Reading SMART Data on Seagate Drives
Seagate hard drives often report extremely high read and seek error rates in SMART data. After pronouncing many such drives defective, I did some research on the subject and found that Seagate drives use non-standard formatting for read and seak error rates, and every piece of software I've used reports these values incorrectly. While the easiest advice on this subject is to ignore these values in the absence of other drive issues, there is a way to read them.
The vast majority of programs that read SMART data rely on smartctl (Windows download), which we'll use to read these values.
Assuming that our disk is located at /dev/hda (which is typical for smartctl on Windows and older Linuxes), we can get the disk status using
smartctl -A /dev/hda. The raw read error rate will be reported as something like 130917967 and the seek something like 13219996990. This is clearly wrong, because the drive hasn't failed or reported any SMART errors, and the normalized value still shows this attribute to be within acceptable margins.
This is because the read and seek error rates are actually recorded as 48-bit hexadecimal values, where the first 16 bits (4 hexadecmal digits) represent the total number of read or seek errors and the last 32 bits (8 hex digits) represent the total number of reads or seeks attempted. We can get these values with the command
smartctl -v 1,hex48 -v 7,hex48 -A /dev/hda.
Using this command, our read and seek error values become 0x000007cda64f and 0x000313f9253e respectively. The first four digits following the x (emphasized) are the total number of errors. As you can see, read and seek errors are only 0 and 3 respectively for this particular drive. And the total number of reads are 130917967 and 335095102 respectively, obtained by taking the last four digits and converting from hexadecimal to decimal numbers.