OK ...
lately I've had time to screw around the drive, so I've scaned many sectors and I've found these 2 of 8 bytes don't change for the same data but in different sectors (LBA). Also zeroed sectors will have these 2 bytes zeroed too. Clearly some kind of a checksum.
I've managed to find ideal sectors which were filled with zeroes up to few last bytes. And with a few of these I was able to manually decode the algorithm.
It is just a CRC-16 subtype, but the catch is it doesn't "hash" just one byte, but with a short sized word (16bit). Funny, back in 2016 I was doing a brutalforce search for all seeds and polynoms with opencl/GPU, but I didn't try to hash two bytes at the same time

.
The polynom is 0x2d (101101b), which is XORed with the new 16bit sample when the previous hash (which is Lshifted and xored too) contained "1" in the MSb. The init value is 0 (unless you compute the hash in multiple stages).
Example code:
Code:
unsigned short seagate_crc16(
unsigned short *d,
unsigned int len,
unsigned short pol,
unsigned short init)
{
unsigned int i;
unsigned short sum = init;
unsigned short pol_xor;
for (i = 0; i < len; i++) {
pol_xor = (sum & 0x8000) ? pol : 0;
sum = (sum << 1) ^ d[i] ^ pol_xor;
}
return sum;
}
Used for "/FD" command on F3 drives (works at least with my st2000dl003). The rest 6 bytes seems to be really just a copy of the bytes from 507 to 512 (end of an LBA sector).
_________________
Support opensource code reverse engineering tool
radare2.