ECC on MFM drive

Eric Smith eric at
Mon Sep 8 14:15:40 CDT 2008

Alexander Sholohov wrote:
> Hello,
> Could someone help me understand the algorithm used
> for data integrity check on ST251 MFM drive.
> I have ST251 drive and an Adaptec controller. Also I
> have ability to view recorded data in raw format.
> On the track I see ID field block protected by CCITT
> CRC16. And the data block protected by some 32-bit
> ECC. This is definitely not a CRC32. The algorithm in
> general looks like shift register for polynomial
> multiplication with polynomial equal to
> x32+x28+x26+x19+x17+x10+x6+x2+1 .

It's a polynomial code not unlike a CRC.  (Note that a CRC
works as an error-correcting code, but aren't as good at
burst error detection/correction as codes designed for that
purpose.)  It could be a BCH code.  Older disk subsystems
on "big iron" used Fire code, but I'm not aware of that
even having been used on small Winchester drives.

Modern drives use Reed-Solomon code, which is a specific
case of a BCH code, but they use multiple interleaved
code blocks for each disk block.  Interleave greatly
enhances the detection and correction capabilities.


More information about the cctalk mailing list