@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 the 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 having 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 MAINTENANCE, 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 is 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 built-in 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 it 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 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.