SpinRite is a computer program for scanning RAS Random Access Storage devices such as hard disks, reading and rewriting data using proprietary programming methods to resolve and retrieve data that is unreadable by DOS or Windows. The first version was released in 1987 by Steve Gibson. The current version, 6.0, (available ) was released in 2004., with ongoing development open to the public at https://www.grc.com/dev/spinrite/  

SpinRite is run from a bootable medium (such as a CD, DVD or USB flash drive) on a PC-compatible computer, allowing it to scan a computer's storage medium. It does not depend on the operating system installed on the computer.

History 
SpinRite was originally written as a hard drive interleave tool. At the time SpinRite was designed, hard drives often had a defect list printed on the nameplate, listing known bad sectors discovered at the factory. In changing the drive's interleave, SpinRite needed to be able to remap these physical defects into different logical sectors. SpinRite therefore gained its data recovery and testing capabilities as a side-effect of its original purpose. Drive interleave has long ceased to be an issue, but SpinRite continued to be developed, now using its remapping as a data recovery tool.

Features 
SpinRite tests the data surfaces of writeable magnetic disks, including IDE, SATA, and floppy disks, plus SSD Solid State Drives. It analyzes their contents and can refresh the magnetic disk surfaces or flash memory storage to allow them to operate more reliably.

SpinRite attempts to recover data from drives that the operating system cannot read. When the program encounters errors reading data, it uses proprietary programming to try to read the sector up to 2000 times, in order to determine, by comparing the successive results, the most probable value of each bit. The data is then saved to the original location or to a location on the same disk; it does not save data elsewhere. In this respect, SpinRite differs from most data recovery software, which usually provides (and recommends) an option to save the recovered data onto another disk, or onto a separate partition on the same disk.

Gibson says he designed SpinRite to fix sector problems, not failures of circuit boards, motors, or other mechanical parts. When a hard drive's ability to read data slows and or begins unreliable, SpinRite may recover data that then can be copied to another drive.

SpinRite is claimed by its developer to have certain unique features, such as disabling of disk write caching, disabling of auto-relocation, compatibility with disk compression, identification of the "data-to-flux-reversal encoder-decoder" used in a drive, and separate testing of buffered and unbuffered disk read performance, and direct hardware-level access, whereby the drive's internal controller interacts directly with the program, rather than through the operating system. This, in turn, allows dynamic head repositioning, whereby, when reading a faulty sector, the reading head is deliberately moved backwards and forwards many times, by varying amounts, in the hope that each time it returns to the sector, it may come to rest in a slightly different position. By performing statistical analysis on the succession of results thus obtained, SpinRite is, according to its maker, often able to "reconstruct" data from damaged sectors, and even in those cases in which complete reconstruction proves impossible, SpinRite is able to extract all intact bits from a partially unreadable, and write them back, or copy them to a new block, thereby minimizing the amount of data lost.

SpinRite is written in x86 assembly language, and runs on any PC-compatible computer, regardless of the operating system installed. It can operate on any attached storage device with a compatible interface.
Drives in computers with incompatible processors can be tested by attaching the drive to a compatible computer. Spinrite is distributed as a Microsoft Windows executable program which can create a bootable drive containing both the FreeDOS MS-DOS-compatible operating system and the Spinrite program itself.
Version 6 is compatible with hard disks containing any logical volume management or file system such as FAT16 or 32, NTFS, Ext3 as well as other Linux file systems, HFS+ For Mac OS X, TiVo and others.

Version 6 offers full access to the entire disk surface regardless of partitioning, Self-Monitoring, Analysis, and Reporting Technology (S.M.A.R.T.) parameters and control of partial scanning within a specified percentage range. Version 5 was limited to AT Attachment (PATA, IDE) hard drives; version 6 may, on suitable motherboards, work on newer Serial ATA (SATA) and USB hard drives, and with any other type of drive—SCSI, 1394/FireWire—that can be made visible to MS-DOS through the addition of controller BIOS or add-on DOS drivers.

In May 2013 Steve Gibson announced the start of work on Spinrite 6.1 and 7.

Issues

Solid state drives 
Spinrite can be run and can be effective on SSDs, but running in a higher-level mode than 1 or 2 is detrimental, as it wears the SSD by writing to it unnecessarily. In episode #387 of the podcast Security Now! Gibson said "Run Level 2 because Level 1 is not permitted to fix anything" "The difference is both Level 1 and 2 are read-only, and that's the key. You don't want to run Level 4"  In episode 194 of the podcast Security Now! Gibson said that he could "see absolutely no possible benefit to running SpinRite on a solid-state drive" and later "SpinRite is all about mechanics and magnetics, neither of which exist, by design, in an SSD". In episode 338 Gibson clarified "it is actually detrimental because [solid-state drives] don't like to be written", but also pointing out that a read-only run could be beneficial: "SpinRite's Level 1 is a read-only scan, and doing that on an SSD makes a lot of sense.  Do a read-only scan of an SSD, it'll show the SSD's controller that it's got a problem reading a sector, and then it'll map that out or rewrite it in order to strengthen that sector, if possible.  So that ends up being a value for SpinRite on solid-state drives." Also, Gibson responded to a question on his website that "SpinRite works on thumb drives and on all other solid state drives".

S.M.A.R.T. on SATA drives 
While SATA drives are supported, SATA controllers that include a processor and diagnostic software can limit SpinRite's ability to obtain and display S.M.A.R.T. data ("thin controller" SATA controllers do not have this limitation).  This data monitor does not affect SpinRite's recovery and diagnostics ability; S.M.A.R.T. data when available helps long-term disk maintenance and failure prediction. GRC said in 2006 that this issue would be resolved in version 6.1, anticipated to be a free-of-charge upgrade for SpinRite 6.0 users.  , SpinRite version 6.0 continued to be current, unable to function with systems that utilize EFI bios, with unchanged price.

Large drives 

In certain cases, Spinrite can only analyze somewhere between the first 128 gigabytes and 1024 gigabytes of a drive depending on whether the drive has 512 bytes per sector or 4096 bytes per sector, and depending on the BIOS in use.

SpinRite uses cylinder-head-sector method when addressing the hard drive. This 28-bit addressing scheme is broken down as:

 Cylinder (16-bits): 0–65535
 Head (4-bits): 0–15
 Sector (8-bits): 0–255

This limits SpinRite to access a maximum of 268,435,456 sectors. Once SpinRite reaches track number 65,535 it will experience a division-by-zero error and halt with an error message. This appears to be due to a restriction of the FreeDOS operating system (an MS-DOS clone) supplied with Spinrite. Some users have reported that Spinrite has problems with very large drives, and that using, say, MS-DOS boot disk created from Windows 95 or 98 (which refers to itself as MS-DOS version 7, which is otherwise not sold separately), Spinrite will test the entire drive without software error; other users report that this did not resolve the Division Overflow error.

A December 2011 page on the Spinrite Web site says that an anomaly, which was named the "Roger anomaly" after its discoverer, is due to an error in the BIOS of some motherboards which does not affect normal use and hence may not be discovered. A motherboard with this problem will not work with Spinrite, although it is sometimes resolved in a later BIOS update. In case of a motherboard compatibility issue, Spinrite say that drives can always be temporarily connected to another motherboard where "SpinRite will almost certainly agree to operate without trouble". Drive size is not mentioned as a factor.

Reception 
BYTE magazine in 1989 listed SpinRite as among the "Distinction" winners of the BYTE Awards, stating that while alternatives had appeared, "for now, SpinRite is our pick".

Controversy 

Some public reviewers doubt SpinRite's ability to "refresh" aging drives, and "recovery" of sectors marked as "damaged" is considered by some to be undesirable and counter-productive.

See also 
 List of data recovery software

References 

DOS software
Data recovery software
Hard disk software
Assembly language software
1987 software