Skip Failed/Weak Heads

  • SpinRite v6.1 Release #3
    The 3rd release of SpinRite v6.1 is published and may be obtained by all SpinRite v6.0 owners at the SpinRite v6.1 Pre-Release page. (SpinRite will shortly be officially updated to v6.1 so this page will be renamed.) The primary new feature, and the reason for this release, was the discovery of memory problems in some systems that were affecting SpinRite's operation. So SpinRite now incorporates a built-in test of the system's memory. For the full story, please see this page in the "Pre-Release Announcements & Feedback" forum.
  • Be sure to checkout “Tips & Tricks”
    Dear Guest Visitor → Once you register and log-in please checkout the “Tips & Tricks” page for some very handy tips!

  • BootAble – FreeDOS boot testing freeware

    To obtain direct, low-level access to a system's mass storage drives, SpinRite runs under a GRC-customized version of FreeDOS which has been modified to add compatibility with all file systems. In order to run SpinRite it must first be possible to boot FreeDOS.

    GRC's “BootAble” freeware allows anyone to easily create BIOS-bootable media in order to workout and confirm the details of getting a machine to boot FreeDOS through a BIOS. Once the means of doing that has been determined, the media created by SpinRite can be booted and run in the same way.

    The participants here, who have taken the time to share their knowledge and experience, their successes and some frustrations with booting their computers into FreeDOS, have created a valuable knowledgebase which will benefit everyone who follows.

    You may click on the image to the right to obtain your own copy of BootAble. Then use the knowledge and experience documented here to boot your computer(s) into FreeDOS. And please do not hesitate to ask questions – nowhere else can better answers be found.

    (You may permanently close this reminder with the 'X' in the upper right.)


Well-known member
Nov 3, 2023
SpinRite 7.0 could use vendor specific commands to test each individual head, and give an option to skip failed/weak heads to achieve a partial recovery from the heads which are still working. Makes no sense to force failed/weak heads to read sectors.
Not really useful, as drives hide the relationship between a LBA and a specific head, platter and track. You can have a single LBA be spread across 4 platters, each part being read off a different platter, to make it faster to create the LBA in cache, so having a weak head will mean each LBA will have a poor sector read, and thus need a disk rotation to read it again, if error correction was not able to recover the data. ECC will also hide weak heads, or small defects, very well, as hard drives put a lot of forward correction into the signal they write, as they know that data corruption on the disk is going to be there, and pretty much every block read will have an error of some sort that needs correction. Modern drives have long ago moved past having a fixed relationship between the LBA and it referring to a fixed location, as any reallocation will move the block to the nearest spare block, which could be on the same platter, on an adjacent platter, and either within the microstep ability of the head, or needing the entire head assembly to move slightly to reach it. Spare tracks are evenly spread across the platters, as the manufacturer knows there will be some, and uses them in manufacture to handle the defects detected, while the formatting machine is holding the heads rigidly, and writing the servo tracks that are used to guide the drive in operation, as it needs feedback as to track location, as the arm actuator is long ago not accurate enough to repeatedly align over a track.
If a drive has 4 heads (0 1 2 3) and head 2 is weak or has failed totally. Forcing it to read will report tons of bad blocks (if error correction does not work) even though the blocks themselves are fine, just head 2 cannot read them well or at all. The user thinks they have tons of bad blocks because they don't know its the heads.

My point here is SR should either abort totally, use vendor specific commands to identify weak/failed heads and skip over them, or have a head-skip algorithm.

Failing that just throw some tuna onto a disk. ;)
Last edited: