@Akin "...
I’ve no idea how to use a command line to run it ..."
Yeah, I suggested a configuration page inside the running SpinRite program where we could adjust all settings, but that was probably beyond programmer
@Steve Gibson's expectations of an 'update' from SpinRite 6 to 6.1, so, instead, some features are controllable only by command line.
- - - - -
Have we ever exited SpinRite and started SpinRite again?
Did we reboot, or did we type:
SPINRITE [ Enter ]
?
If we can type:
SPINRITE [ Enter ]
... then we can also type:
SPINRITE NORAMTEST LEVEL 4 FORCEBIOS DYNASTAT 1 NOREWRITE HASH [ Enter ]
- - - - -
There are many controls that are settable inside SpinRite.
Here are some of the controls that are ONLY settable OUTSIDE SpinRite, by using the command line:
DYNASTAT 0 to DYNASTAT 99
FORCEBIOS
XFER 1 to XFER 32768
NOREWRITE
HASH
SKIPVERIFY
Nicely summarized by
@ColbyBouma at
https://gitlab.com/GRC-Community/spinrite-6.1-wiki/-/wikis/Command-Line
- - - - -
Let's revisit the opening inquiry:
@Akin "...
Greetings all! So, after *finally* figuring out how to force my system to boot from USB, I briefly looked around SpinRite before hving to go to work. Wasn’t there supposed to be support for SSD drives? None of the choices mentioned SSDs… and I recall something about how using Spinrite on an SSD could be bad for it if not set to the correct level or something. Is there a guide or something on what levels to set it for when used on an SSD? Thanks ..."
Then:
@Akin "So… if I just want to run SpinRite every six months or so on my drives to reduce the risk of problems down the road, what am I supposed to do? I have two SSDs and one spinning drive. This stuff is confusing me now. I’m not an IT guy or anything ..."
Simplest suggestions:
Considering that SpinRite is essentially intended for
DATA RECOVERY and
DRIVE MAINTENANCE, then:
If our goal is DATA RECOVERY, then SPINRITE LEVEL 2 is sufficient, though BACKUP ( which SpinRite does not do ) is the best plan.
If our goal is DRIVE MAINTENENANCE, then SPINRITE LEVEL 3 is appropriate.
"
But, SSD?!?", some folks may fear 'wearing them out' with 'unnecessary' rewriting.
Then use an HDD, don't actually 'use' the SSD we own, or fear not, by measuring:
LEVEL 3 does ONE rewrite. ONE. What's to fear? If an SSD is ONE rewrite away from dying, we probably ought to know
now so we can switch to another drive. As I wrote, I've never had an SSD fail even under SpinRite
LEVEL 5 which does 'only' TWO writes. And I've got SSDs that 'survived' multiple LEVEL 5 runs, no problem - all the data remained intact and readable.
So, on the one hand, I appreciate the 'theory' of limited SSD rewrite life. On the other hand, I'm hard pressed to find even anecdotes where anyone says and can show "...
Oops, it died while I was testing ( or running SpinRite ) ...".
- - - - -
So, why all the variables?
Because I've noticed that SSDs are variable - each manufacturer's model is different inside.
Some handle SpinRite's defaults with aplomb.
Some crawl, but, after playing with SpinRite settings, they seem to go faster with 'adjusted' settings of SpinRite.
Hence my recommendation to watch and get familiar with SpinRite's behavior when thrown at an SSD.
If it goes smoothly, cool, we're done.
If it gets sticky and pauses or struggles or argues, then there may be settings to 'tweak' SpinRite's behavior to better suit the magical mystery inside a specific SSD.
Sadly, no one seems to have an analytical algorithm that would clearly prescribe any particular matching SpinRite settings.
So when an SSD misbehaves, and SpinRite struggles, I have played,
a lot, and my share the other day above at
https://forums.grc.com/threads/running-spinrite-on-a-ssd.2047/post-14904 is a concise ( ! ) summary of my hands-on successful experience.
I'll explain what I see as the ramifications of some command line controls:
DYNASTAT 0 to DYNASTAT 99
The DynaStat setting is SpinRite's retry level when trying to read a recalcitrant sector, spending from 0 zero minutes to 99 ninety-nine minutes. My go-to settings are DynaStat 0 zero minutes to just barge through and rewrite a sector, because I've backed up the data and I don't care about recovering the data, or I use DynaStat 1 minute where if SpinRite can't 'see' the data in a minute, usually taking many retries in that minute, then just move on, I'll deal with the problem later. In theory, DynaStat 1 will reduce the time SpinRite takes to handle large quantities of 'bad' sectors by 80%, getting us more quickly to an end result for us to analyze.
FORCEBIOS
ForceBios bypasses SpinRite's in-built speedy IDE/ATA/AHCI drivers, and uses the computer's own system BIOS to 'talk' to a drive. This slows down SpinRite, and may reduce any weird misbehavior or incompatibility.
XFER 1 to XFER 32768
Xfer is how much data SpinRite asks to be transferred on one 'block'. SpinRite is limited by the BIOS and drive, but tries to automatically maximize data throughput. If a drive seems poorly responsive, I might 'slow down' SpinRite by reducing the data transfer size, hoping that the drive will handle the iterative read and write requests more graciously if we go slower, if we go smaller. Xfer 1024, Xfer 2048, Xfer whatever, I've used small and large numbers. Maybe I'm getting the transfer block size to fit inside the drive's ( unknown ) cache size, or maybe I'm setting the transfer block size to be so big that it exceeds or bypasses the drive's cache, or forces the drive to handle the data transfer request more successfully, more smoothly. It's a guessing game.
NOREWRITE
NoReWrite tells SpinRite to NOT rewrite a sector unless it's been read 100% accurately. This allows an unreadable or incompletely readable sector to stay as is so that we can try other means of data recovery later.
HASH
Hash tells SpinRite to calculate a hash value of whatever sector contents it has read, and export that value on exit. It allows us to compare the results of two SpinRite runs to see if the data changed. It also slows SpinRite down, another trick to reduce the rapidity with which SpinRite examines a drive, perhaps allowing a poorly-responsive drive to more successfully handle constant end-to-end read and write requests.
SKIPVERIFY
SkipVerify bypasses initial read and write tests during drive enumeration, preserving a 'fragile' drive's integrity before further inspection. If it takes a long time for SpinRite to enumerate a drive, or if initial enumeration fails altogether, that may be a clue that the drive needs maintenance, so we can skip verify, and go directly to maintenance. Also, some drive's are incompatible with the verify request, so skipping verify is appropriate on the way to data recovery and drive maintenance.
LEVEL 4
Level 4 interrupts a Level 3 read and write cycle by adding another read after each transfer block's final write, which slows down SpinRite's march through a drive, some drives seem more able to handle the complete rewrite, end to end, if it is done slower.
So, those are some of my 'tweaks' to slow SpinRite down or adjust the method, shape, and size of SpinRite's interaction with a drive, in the hopes of best matching whatever it it takes to perform the most successful DATA RECOVERY and DRIVE MAINTENANCE.
SSDs, and a few 'old' HDDS, are weird, whimsical, iconoclastic.
And with various settings, SpinRite can be, too.
- - - - -
That's it. Backup, and play.