Export thread

  • 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!

    /Steve.
  • 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.)

Release Candidate 6

#1

Steve

Steve

Proposed Final SpinRite v6.1 (RC6)

No 3-year project as large as this one finishes with a clean sharp edge — and this labor of love certainly hasn't. But we've finally moved past our recent (and important) flurry of 5.x pre-releases, to Release Candidate 6, because I believe there is nothing remaining to resolve. SpinRite v6.1 appears to be ready for release.

Since I still think it makes sense to let any new code “rest” for a bit, this RC6 is labeled as such with a 93 day expiration. I'll now be working to get ready for the non-RC release, getting the web-based documentation updated and pulling the 6.0 owner mailing list together in preparation of letting all v6.0 owners know that their free upgrade to v6.1 is finally ready and waiting for them (once it is).

After a few weeks, assuming that no showstoppers arise (and if some do we'll deal with them), I'll move this to final 6.1 code and we'll really be finished with this first step toward SpinRite's future.

THANK YOU EVERYONE for your continued testing and feedback. It has been truly instrumental in shaping this final result, which we will all be living with while I work toward SpinRite's rebirth under its own operating system with all native drivers, UEFI compatibility and very much more!

You may obtain this update, as before, by going to GRC's Pre-Release page, entering your SpinRite license serial number or transaction code and clicking the link to obtain your personal copy.

Thanks, all!


#2

markav2

markav2

@Steve Thank you for the work you put into SpinRite and the podcast. I have been a listener since the first episode. I believe someone on Buzz out loud mentioned the first episode and I was a very avid listener to the CNET show. That's back when you had to manage downloading and transferring your podcasts manually, how things have changed.


#3

P

pcprof

I've been a user of Spinrite since Spinrite II. Love it! In checking out the RC6, I see that it doesn't seem to play well with Yumi or Ventoy (These are USB multi-boot platforms) If I load it via "MEMORY" option (it won't work with other options), I get the Spinrite 6.1 Splash logo, but then it hangs on a blank black screen with a blinking cursor. (Works perfectly fine if I just boot directly off your Boot USB, but I hate carrying around so many USBs)


#4

Steve

Steve

@pcprof : Yes. This is a known problem with 6.1 and it's a remaining open issue in GRC's GitLab instance.
Since I'm not a user of Ventoy, I need to familiarize myself with it... then I'll figure out why SpinRite 6.0 works with it whereas 6.1 does not! (y)


#5

P

pthubbard

I've been a user of Spinrite since Spinrite II. Love it! In checking out the RC6, I see that it doesn't seem to play well with Yumi or Ventoy (These are USB multi-boot platforms) If I load it via "MEMORY" option (it won't work with other options), I get the Spinrite 6.1 Splash logo, but then it hangs on a blank black screen with a blinking cursor. (Works perfectly fine if I just boot directly off your Boot USB, but I hate carrying around so many USBs)
I have been using RC6 with Yumi by loading SR as an unlisted ISO with GRUB. Seems to work fine but I haven't tested it thoroughly.


#6

LSI11-23

LSI11-23

Hello Steve,
This morning I downloaded a fresh copy of SR6.1PR from GRC and installed it via the create USB boot media option. I am running a Zimaboard booting from the USB drive I just made. After the press any key to continue screens I received this error.

"SOMETHING IMPOSSIBLE JUST HAPPENED" GRC impossible situation 1 just happened to you.

No other codes on the screen were observed, however there was a millisecond of another screen that I was not able to capture prior to the impossible screen displaying.
The target drive connected is a known SSD with errors ( INLAND PROFESSIONAL P/N: 1TBM). The below error only shows up if the drive is connected before power power up/ boot up. Spinrite starts up fine if the drive is connected after Spinrite starts, the drive is not detect though.


#7

D

davs2rt

New user trying to recover a Tivo disk that the Tivo said was bad: WD Blue 3tb did not show up at all in the drive search in 6.0 and Feb 2 download of 6.1. I'd moved the SATA to a USB interface to plug it into various computers trying to evade UEFI issues. The drive didn't show up under Linux or Windows scans either, so I'm assuming the interface is just dead dead. Just a report, no help needed. Tivo is busy refilling Simpsons reruns on new drive now. ;)


#8

Steve

Steve

@LSI11-23 : (Nice handle, by the way! -- DEC's PDP-11 had one of the nicest and cleanest CISC instruction sets ever conceived. It was designed by programmers for programmers. : )

Hmm... So, not as impossible as I was hoping! <g>

1707071771505.png


The code in question is shown above. As the instruction comments explain, the "Impossible Event" (which I suppose I should rename to "very undesirable event" is a "sanity test" to make sure that SpinRite's division of a linear sector number by the sectors per track, to obtain the sector on the track (in the division's remainder) and the track number (in the division's result) will not "overflow" and cause a division by zero.

The only reason it might overflow is that the "track number" would not fit within a 32-bit result, which can probably only occur if "sectors per track" is extremely low, or zero... which is probably the case.

Hmmmmm. Since you're doing this on a ZimaBoard, we know a LOT about the system. It's as solid and modern as any. And it's been extensively tested by me and many other SpinRite testers since its discovery. So that's not the trouble.

Due to limitations of the BIOS, it is DEFINITELY necessary to have ALL drives connected to the system when it is first booted and then SpinRite is run. So it must be that the drive's "identify" information contains data that doesn't make any sense... and that SpinRite's code currently believes what the drive is telling it without protecting itself from erroneous information be performing a "sanity check".

Is THIS the drive? https://www.amazon.com/dp/B07FM9SSP6. Assuming that it is, I'll grab one to see whether I can reproduce the trouble and come up with a solid solution.

Thanks!!


#9

Steve

Steve

The drive didn't show up under Linux or Windows scans either, so I'm assuming the interface is just dead dead. Just a report, no help needed.
The fact that the drive isn't visible anywhere does suggest that it has died hard.


#10

LSI11-23

LSI11-23

@LSI11-23 : (Nice handle, by the way! -- DEC's PDP-11 had one of the nicest and cleanest CISC instruction sets ever conceived. It was designed by programmers for programmers. : )

Hmm... So, not as impossible as I was hoping! <g>

View attachment 1039

The code in question is shown above. As the instruction comments explain, the "Impossible Event" (which I suppose I should rename to "very undesirable event" is a "sanity test" to make sure that SpinRite's division of a linear sector number by the sectors per track, to obtain the sector on the track (in the division's remainder) and the track number (in the division's result) will not "overflow" and cause a division by zero.

The only reason it might overflow is that the "track number" would not fit within a 32-bit result, which can probably only occur if "sectors per track" is extremely low, or zero... which is probably the case.

Hmmmmm. Since you're doing this on a ZimaBoard, we know a LOT about the system. It's as solid and modern as any. And it's been extensively tested by me and many other SpinRite testers since its discovery. So that's not the trouble.

Due to limitations of the BIOS, it is DEFINITELY necessary to have ALL drives connected to the system when it is first booted and then SpinRite is run. So it must be that the drive's "identify" information contains data that doesn't make any sense... and that SpinRite's code currently believes what the drive is telling it without protecting itself from erroneous information be performing a "sanity check".

Is THIS the drive? https://www.amazon.com/dp/B07FM9SSP6. Assuming that it is, I'll grab one to see whether I can reproduce the trouble and come up with a solid solution.

Thanks!!
Hi Steve,

Yes that is the exact drive ( I purchased mine from microcenter), a new one may not provide the exact error since the drive I have has errors and has failed a few times as a windows boot drive. The ssd drive drive may be so bad its is causing a fault as soon as it is detected..

Glad you enjoy my handle, that was one of the first computers I was trained on fresh out of high school while I was in the US Navy working as a mainframe technician.

Thank you,
Pat


#11

Steve

Steve

Hey Pat,
Yes that is the exact drive ( I purchased mine from microcenter), a new one may not provide the exact error since the drive I have has errors and has failed a few times as a windows boot drive. The ssd drive drive may be so bad its is causing a fault as soon as it is detected..
The nature of the failure makes me think that it's about the way it's identifying itself to the system rather than anything to do with the drive's data access. Although we have a nearby Micro Center, and I saw it was the Micro Center house brand, I decided to have Amazon send that drive, hoping that you would say that it was the one. It arrives tomorrow and I'll plug it into my ZimaBoard and hope that "Something Impossible" happens again!! I'll let you know what I find! Thanks!


#12

D

dg1261

I have been using RC6 with Yumi by loading SR as an unlisted ISO with GRUB. Seems to work fine but I haven't tested it thoroughly.

Thanks, @pthubbard! Like @pcprof, it didn't work with Ventoy for me, but your method seems to work just fine with Yumi. I've tried RC6 launched from Yumi on about a half dozen spinners and SSDs now, and haven't encountered any glitches.


#13

Steve

Steve

UPDATE/REVERSAL/CORRECTION: SpinRite v6.1 will NOT be compatible with Ventoy. :( Please see THIS posting (below) for more.

Guys: Just an update that I spent some time yesterday with Ventoy, and the next released build of SRv6.1 will run with Ventoy “out of the box” without trouble.

It appears that the problem is that the DOS boot environment (with memdisk) that's created by Ventoy doesn't support the "HMA" (high memory area) where DOS normally tucks itself to conserve lower conventional memory. This forces DOS into lower memory and just barely doesn't leave sufficient low memory to run SR6.1. The "DOS only" version runs fine. Even the full Windows+DOS version runs if I don't digitally sign it -- since the size of the appended digital signature is just enough to push the size over the limit.

Once I have this week's podcast behind me, I plan to modify SpinRite for Windows so that the ISO it builds will only contain the DOS version of SpinRite rather than the full copy of the Windows+DOS. Since the DOS EXE is all that's needed, everything should work well. (y)


#14

Steve

Steve

@LSI11-23 : Unfortunately — my identical 1TB Inland Pro drive works perfectly with SpinRite. :-(

I may need to add a feature to SpinRite to capture and display data to explain what's going on... but could you first try running SpinRite on a system with that drive and adding the command-line option "diags"? SpinRite is going to display the "Something impossible" message, we know that... But before it does it MIGHT dump something useful into the .DBG file in the SRLOGS subdirectory. So... If running SpinRite with the “diags” option does product a .DBG file in the SRLOGS subdirectory could you share it?

Thanks!!


#15

fabriceroux

fabriceroux

Bonjour,

I ran into an issue on the Windows media creation application side. I'm using Windows 11 23H2 with the January cumulative patch and 2 monitors. The app behaves normally when the main window is on the main screen.

But as soon as I move the main window on the secondary screen (placed on the left side of main one), the 3 main buttons have the same behavior. The clicking noise is played and the main window disappears. But the next window (USB, ISO or diskette creation) is nowhere to be found.

I thought I had an account here from the SQRL days. I don't have access to the gitlab to check if this issue is know. So I recreated an account using my SQRL ID.

Best regards,
--
Fabrice Roux from southern France


#16

Steve

Steve

Nice to see you back, Fabrice. (@fabriceroux):

This has not been reported before. All of my workspaces are multi-monitor, and I haven't seen this myself, nor has it been reported. But I'll create a GitLab issue to remind me to follow-up on it in the next day or two. I did address the behavior of the parent and child windows for ValiDrive, and I used the same code base for it. I'll also send you the info to join our GitLab in case you're interested in tracking and verifying. Thanks! (y)


#17

Steve

Steve

UPDATE: I immediately recreated this, Fabrice! Thanks!! I'll get it fixed in the next update. (y)


#18

lancem631

lancem631

According to the Spinrite 6.1 Windows/Dos version it seems I should be able to use a bootable CD however I am confused about dealing with SRLOGS not being able to write to a subdirectory. Seems like a catch-22 having ability to boot from CD but cannot use because of need for SRLOGS to be written.

  • Users with a CD-R (CD recordable) drive can create a standard ISO file which can then be used to "burn" a CD to automatically boot FreeDOS and run SpinRite
  • Or an IMG image file of a 144 megabyte diskette can be created for later recording to a diskette on another system.
(Useful if this system does not have a diskette dive).

• A system booted from the CD or diskette created from these files will load the FreeDOS operating system then automatically start SpinRite running on the system.

Attachments


  • IMG_0900.jpeg
    IMG_0900.jpeg
    382.8 KB · Views: 206

#19

Steve

Steve

According to the Spinrite 6.1 Windows/Dos version it seems I should be able to use a bootable CD however I am confused about dealing with SRLOGS not being able to write to a subdirectory. Seems like a catch-22 having ability to boot from CD but cannot use because of need for SRLOGS to be written.
You're right, Lance. It IS a Catch-22. This ISO-creation capability is mostly a hangover from the original release of SpinRite 6.0 in 2004, back when many systems would not boot from a USB thumb drive... but everything could boot from a CD. And most systems back then were still equipped with diskette drives and all could boot from diskette.

Today, 20 years later, the recommended way to run SpinRite is from USB since all machines can do that and since that creates a writeable environment that can accept and retain SpinRite logs.

Despite the fact that writing an IMG for diskette or writing an ISO for CD no longer really makes sense, since those capabilities were already present in SpinRite 6.0, I decided to leave them there in 6.1.

You raise a great point about the built-in documentation in 6.1... I'll update that! Thanks!!


#20

Steve

Steve

REVERSAL: SpinRite v6.1 will NOT be able to support Ventoy. (But Checkout Easy2Boot!!)

After two days of research, I've determined the cause of the conflict between Ventoy and SRv6.1: Ventoy's A: drive emulation is fundamentally incompatible with SpinRite 6.1's "flat real mode" use of 32-bit addressing.

I explored workarounds for this and concluded that arranging to allow SpinRite's ISOs to be "Ventoy compatible" would create an unacceptably big mess for everyone else. There would be too many "gotchas" that could trip-up other situations. Also, frankly, the "read-only" nature of any ISO emulation is not ideal for SpinRite, since it never allows SpinRite's log files to be saved. Simply booting from its own USB drive is a far superior solution for SpinRite.

During this work (thanks to a posting by "Jason" in GRC's newsgroups) I learned of “Easy2Boot” which is a rather incredible superset of Ventoy... and SpinRite's ISO's are completely compatible with Easy2Boot. So, if you really want to carry around a single bootable USB stick which can also boot SpinRite from an ISO, Easy2Boot will do that and VERY MUCH MORE!

(If you're curious, this posting, which I made to GRC's newsgroups, has more to say about the Ventoy mess.)


#21

Steve

Steve

@LSI11-23 :

I have an interim test release of SpinRite for you to try. It's "SRPR-601.EXE". The way you obtain it is a bit tricky since it's not meant to be done normally or often. Go to the /prerelease.htm page as usual at GRC.com. Enter your current license serial number to obtain the page with the regular download links — but don't click on anything yet. Right-Click on the second (DOS only) link and COPY it to the clipboard. Then paste it into your browser's URL field — but don't hit Enter yet. First, EDIT the filename from the regular "SRPR.EXE" -to-> "SRPR-601.EXE" — and now you can hit enter. (y) The link should look like this:

This will deliver an interim test release with a new feature:

I've enhanced SpinRite's existing “diags” command-line option so that it now also dumps the contents of any drive's 512-byte (256-word) "IDENTIFY" sector data that SpinRite finds. And it should do this BEFORE that drive triggers the "Something Impossible Happened" interception on your machine with that drive. The intercept WILL still occur, but if you start SpinRite with "SRPR-601 diags", once you exit from SpinRite you should find a new .DBG file in the "SRLOGS" subdirectory.

Since the identical drive (to yours) I purchased does not misbehave in any way, my best guess is that something is screwy about the IDENTIFY data your drive is returning and SpinRite is not (yet) proactively protecting itself from bogus IDENTIFY data. So I'd like to see this so that I can understand exactly what's going on and I'll get it fixed.

THANKS!!!


#22

LSI11-23

LSI11-23

@LSI11-23 :

I have an interim test release of SpinRite for you to try. It's "SRPR-601.EXE". The way you obtain it is a bit tricky since it's not meant to be done normally or often. Go to the /prerelease.htm page as usual at GRC.com. Enter your current license serial number to obtain the page with the regular download links — but don't click on anything yet. Right-Click on the second (DOS only) link and COPY it to the clipboard. Then paste it into your browser's URL field — but don't hit Enter yet. First, EDIT the filename from the regular "SRPR.EXE" -to-> "SRPR-601.EXE" — and now you can hit enter. (y) The link should look like this:

This will deliver an interim test release with a new feature:

I've enhanced SpinRite's existing “diags” command-line option so that it now also dumps the contents of any drive's 512-byte (256-word) "IDENTIFY" sector data that SpinRite finds. And it should do this BEFORE that drive triggers the "Something Impossible Happened" interception on your machine with that drive. The intercept WILL still occur, but if you start SpinRite with "SRPR-601 diags", once you exit from SpinRite you should find a new .DBG file in the "SRLOGS" subdirectory.

Since the identical drive (to yours) I purchased does not misbehave in any way, my best guess is that something is screwy about the IDENTIFY data your drive is returning and SpinRite is not (yet) proactively protecting itself from bogus IDENTIFY data. So I'd like to see this so that I can understand exactly what's going on and I'll get it fixed.

THANKS!!!
Hello Steve,

Thank you for taking the time to send me a debug version! I loaded it right away and got to work.
Your instructions were very clear and I had no issues downloading it or getting to run on the USB drive with the diag flag.

It did create the debug files, but they all were zero bytes..

F:\SRLOGS>dir
Volume in drive F is SPINRITE 61
Volume Serial Number is 131A-0F09

Directory of F:\SRLOGS

02/08/2024 12:16 AM <DIR> .
02/08/2024 12:16 AM <DIR> ..
02/10/2024 01:02 AM 0 1.DBG
02/10/2024 01:06 AM 0 2.DBG
02/10/2024 01:08 AM 0 3.DBG
3 File(s) 0 bytes
2 Dir(s) 255,991,808 bytes free


As you can see I repeated the test a few times to make sure I had not made a mistake.

One other item I failed to notice, is after the Impossible situation screen appears, my zima board locks up. I must remove/reapply power to get it back.
I suspect it locks up prior to the data getting saved to the dbg file.
On the off chance it was a connector issue I did swap to the right sata connector on the front of the zima board.. in case that made a difference.. but it did not - the result was the zero byte 3.DBG file.

If you would like I can send you the drive , let me know. I am happy to help out!!

Thanks,
Pat


#23

Steve

Steve

Thanks for giving this a shot, Pat!
Could you explain where in the startup the "impossible error" occurs?
Either way, I'll have another test for you Saturday morning.
We'll figure this out.
Thanks!!!


#24

Steve

Steve

Pat (@LSI11-23): I believe I've answered my question about exactly when this occurs: You would see the horizontal bar extend across the first line of the drive discovery and enumeration screen/window... then the "Something Impossible Happened" would pop-up. And by simulating the hang I've also recreated the 0-byte "0.DBG" file.

SO! ... SRPR-602.EXE is now waiting for you! This one will still hang as always, but before it does that it will flush the DOS buffer to the media so that you'll get the file we've been looking for.

Same routine as before to get the file. Just add the "-602" to the SRPR.EXE before you hit enter to obtain the test release.

Thanks!!


#25

LSI11-23

LSI11-23

Hi Steve,

602 worked!
I am attaching the dbg file for your review.
Very interested in what you discover!

Thanks,
Pat

Attachments


  • 4DBG.txt
    3.7 KB · Views: 180

#26

Steve

Steve

Thanks Pat! (@LSI11-23) — At first glance I'm sure we've found the culprit. (y)

I'll have another test release for you in a few hours that will understand what your drive is saying and will do the right thing. And SpinRite will have become better as a result. Thanks!


#27

Steve

Steve

Pat (@LSI11-23):

Something is VERY broken with that drive. My best guess is that it somehow took some damage that mostly destroyed its “IDentify” sector information (the one that SpinRite's diags option now also dumps which you provided.) And I can understand why SpinRite was confused by this. So I'm glad that I saw this and can protect SpinRite from such oddness in the future.

The drive claims not to support "48-bit sector numbering" and, indeed, the 64-bits that are reserved for the drive's 48-bit sector count are all zero. So then we fall back to the older 32-bit sector count. And there the drive claims to have only 40,961 sectors, which is 20,972,032 bytes. In other words, 21MB. — But we know that it's supposed to be a 1TB drive.

Then, for "Model Number" the drive says “PS3111” with a serial number of “30321003210230313032”.

By comparison, the 1TB Inland drive I just purchased from Amazon, which you indicated was the same as yours, shows “SATA SSD” under Model (which is, admittedly, not very impressive) and its serial number is “23121410240508” which also doesn't look much like yours.

The reason your drive induced the SpinRite panic "Something Impossible Happened" message is that the drive also claims not to support “DMA” (Direct Memory Addressing) which really is not possible from a drive that's this new. But SpinRite believed it and punted the drive's handling back to the machine's BIOS figuring that maybe it would be able to make something of it. But the parameters for the drive's cylinders, heads and sectors is also bogus, which caused the panic.

I'm going to tweak SpinRite to be smarter about handling a drive that claims no DMA since that's just not possible. I'm inclined to have SpinRite mark the drive “RED” and refuse to work on it, since it's clearly deeply damaged... But since SpinRite is meant for dealing with messed up drives, I think it should err in favor of being permissive and allowing its user to decide what to do. So I'm going to have it "shrug" and agree to treat the drive as a 21MB SSD.

I'll have that for you to test before long. Thanks!


#28

ColbyBouma

ColbyBouma

Are you decoding the IDENTIFY block by hand, or do you have a program that can do that? I'm about 1/4 of the way through writing a PowerShell script to decode it. It's fun because I've never had to play with bit shifting before :D


#29

Steve

Steve

Okay, Pat (@LSI11-23): SRPR-603.EXE is ready for you to test on that very wacky drive.

I was a bit more aggressive than I planned. Looking over the drive's “IDentify” data further, it makes a strong case for believing its claim that it does not support DMA at all (even though that's really not possible for any drive that was presumably once 1TB and also claims to support many of the latest ATA specification standards.) So I've decided to believe it and punt the handling back to the BIOS rather than “Red Flag” the drive as impossible for SpinRite to work with.

Consequently, I'm not 100% certain how the drive will behave now. Let's find out! Thanks!


#30

Steve

Steve

Are you decoding the IDENTIFY block by hand, or do you have a program that can do that? I'm about 1/4 of the way through writing a PowerShell script to decode it. It's fun because I've never had to play with bit shifting before :D
I'm currently just doing it by hand, Colby... So a script to decode the block of data that SpinRite's DIAGS option dumps out would be VERY cool and, I'm certain, VERY popular! (y)


#31

ColbyBouma

ColbyBouma

Here's the script: https://gitlab.com/GRC-Community/SpinRite-Logs/-/blob/main/Decode DBG IDENTIFY.ps1

v 001 decodes the first 138 bytes.

This script requires PowerShell 7. Further instructions are at the top of the script.

Here's what v 001 outputs for LSI11-23's block:
Code:
GcReserved1                               : False
GcRetired3                                : True
GcResponseIncomplete                      : False
GcRetired2                                : 3
GcFixedDevice                             : True
GcRemovableMedia                          : False
GcRetired1                                : 4
GcDeviceType                              : False
NumCylinders                              : 160
SpecificConfiguration                     : 51255
NumHeads                                  : 8
Retired1                                  : 0
NumSectorsPerTrack                        : 32
VendorUnique1                             : 0
SerialNumber                              : 30321003210230313032
Retired2                                  : 2
Obsolete1                                 : 4
FirmwareRevision                          : SBRM09.0
ModelNumber                               : PS3111
MaximumBlockTransfer                      : 128
VendorUnique2                             : 1
TcFeatureSupported                        : False
TcReserved                                : 0
CapCurrentLongPhysicalSectorAlignment     : 0
CapReservedByte49                         : 0
CapDmaSupported                           : False
CapLbaSupported                           : False
CapIordyDisable                           : False
CapIordySupported                         : False
CapReserved1                              : False
CapStandbyTimerSupport                    : False
CapReserved2                              : 1
CapReservedWord50                         : 512
ObsoleteWords51                           : 512
TranslationFieldsValid                    : 0
Reserved3                                 : 0
FreeFallControlSensitivity                : 1
NumberOfCurrentCylinders                  : 160
NumberOfCurrentHeads                      : 8
CurrentSectorsPerTrack                    : 32
CurrentSectorCapacity                     : 2684354560
CurrentMultiSectorSetting                 : 1
MultiSectorSettingValid                   : True
ReservedByte59                            : 0
SanitizeFeatureSupported                  : False
CryptoScrambleExtCommandSupported         : False
OverwriteExtCommandSupported              : False
BlockEraseExtCommandSupported             : False
UserAddressableSectors                    : 2684420096
ObsoleteWord62                            : 0
MultiWordDMASupport                       : 0
MultiWordDMAActive                        : 0
AdvancedPIOModes                          : 0
ReservedByte64                            : 0
MinimumMWXferCycleTime                    : 0
RecommendedMWXferCycleTime                : 0
MinimumPIOCycleTime                       : 0
MinimumPIOCycletimeIORDY                  : 0
AsZonedCapabilities                       : 0
AsNonVolatileWriteCache                   : False
AsExtendedUserAddressableSectorsSupported : False
AsDeviceEncryptsAllUserData               : False
AsReadZeroAfterTrimSupported              : False
AsOptional28BitCommandsSupported          : False
AsIEEE1667                                : False
AsDownloadMicrocodeDmaSupported           : False
AsSetMaxSetPasswordUnlockDmaSupported     : False
AsWriteBufferDmaSupported                 : False
AsReadBufferDmaSupported                  : False
AsDeviceConfigIdentifySetDmaSupported     : False
AsLPSAERCSupported                        : False
AsDeterministicReadAfterTrimSupported     : False
AsCFastSpecSupported                      : False

Here's what it outputs for my BIWIN SSD:
Code:
GcReserved1                               : False
GcRetired3                                : False
GcResponseIncomplete                      : False
GcRetired2                                : 0
GcFixedDevice                             : True
GcRemovableMedia                          : False
GcRetired1                                : 0
GcDeviceType                              : False
NumCylinders                              : 16383
SpecificConfiguration                     : 51255
NumHeads                                  : 16
Retired1                                  : 0
NumSectorsPerTrack                        : 63
VendorUnique1                             : 0
SerialNumber                              : 1936011301296
Retired2                                  : 0
Obsolete1                                 : 0
FirmwareRevision                          : S0704A0
ModelNumber                               : BIWIN SSD
MaximumBlockTransfer                      : 128
VendorUnique2                             : 1
TcFeatureSupported                        : False
TcReserved                                : 8192
CapCurrentLongPhysicalSectorAlignment     : 0
CapReservedByte49                         : 0
CapDmaSupported                           : False
CapLbaSupported                           : False
CapIordyDisable                           : False
CapIordySupported                         : False
CapReserved1                              : False
CapStandbyTimerSupport                    : False
CapReserved2                              : 1
CapReservedWord50                         : 12032
ObsoleteWords51                           : 512
TranslationFieldsValid                    : 0
Reserved3                                 : 0
FreeFallControlSensitivity                : 7
NumberOfCurrentCylinders                  : 16383
NumberOfCurrentHeads                      : 16
CurrentSectorsPerTrack                    : 63
CurrentSectorCapacity                     : 4228907259
CurrentMultiSectorSetting                 : 145
MultiSectorSettingValid                   : True
ReservedByte59                            : 0
SanitizeFeatureSupported                  : False
CryptoScrambleExtCommandSupported         : False
OverwriteExtCommandSupported              : False
BlockEraseExtCommandSupported             : False
UserAddressableSectors                    : 3266318055
ObsoleteWord62                            : 3815
MultiWordDMASupport                       : 0
MultiWordDMAActive                        : 0
AdvancedPIOModes                          : 0
ReservedByte64                            : 7
MinimumMWXferCycleTime                    : 3
RecommendedMWXferCycleTime                : 120
MinimumPIOCycleTime                       : 120
MinimumPIOCycletimeIORDY                  : 120
AsZonedCapabilities                       : 0
AsNonVolatileWriteCache                   : False
AsExtendedUserAddressableSectorsSupported : True
AsDeviceEncryptsAllUserData               : True
AsReadZeroAfterTrimSupported              : True
AsOptional28BitCommandsSupported          : True
AsIEEE1667                                : False
AsDownloadMicrocodeDmaSupported           : False
AsSetMaxSetPasswordUnlockDmaSupported     : False
AsWriteBufferDmaSupported                 : False
AsReadBufferDmaSupported                  : False
AsDeviceConfigIdentifySetDmaSupported     : False
AsLPSAERCSupported                        : False
AsDeterministicReadAfterTrimSupported     : False
AsCFastSpecSupported                      : False


#32

Steve

Steve

Colby (@ColbyBouma):

The only thing I notice upon a quick scan is that you'll need to take into account the word ordering for multi-word fields, like the various total sector counts and capacities. In keeping with "Little Endian" style ordering, the least significant word of a multi-word field comes first. (y)


#33

ColbyBouma

ColbyBouma

Thanks! I thought my results in those fields looked wrong.

v 004 output for LSI11-23. I had to remove a few properties to get this post under 10,000 characters.
Code:
GcFixedDevice                             : True
GcRemovableMedia                          : False
GcDeviceType                              : False
NumCylinders                              : 160
SpecificConfiguration                     : 51255
NumHeads                                  : 8
NumSectorsPerTrack                        : 32
VendorUnique1                             : 0
SerialNumber                              : 30321003210230313032
FirmwareRevision                          : SBRM09.0
ModelNumber                               : PS3111
MaximumBlockTransfer                      : 128
VendorUnique2                             : 1
TcFeatureSupported                        : False
CapCurrentLongPhysicalSectorAlignment     : 0
CapReservedByte49                         : 0
CapDmaSupported                           : False
CapLbaSupported                           : False
CapIordyDisable                           : False
CapIordySupported                         : False
CapReserved1                              : False
CapStandbyTimerSupport                    : False
TranslationFieldsValid                    : 0
FreeFallControlSensitivity                : 1
NumberOfCurrentCylinders                  : 160
NumberOfCurrentHeads                      : 8
CurrentSectorsPerTrack                    : 32
CurrentSectorCapacity                     : 40960
CurrentMultiSectorSetting                 : 1
MultiSectorSettingValid                   : True
SanitizeFeatureSupported                  : False
CryptoScrambleExtCommandSupported         : False
OverwriteExtCommandSupported              : False
BlockEraseExtCommandSupported             : False
UserAddressableSectors                    : 40961
ObsoleteWord62                            : 0
MultiWordDMASupport                       : 0
MultiWordDMAActive                        : 0
AdvancedPIOModes                          : 0
ReservedByte64                            : 0
MinimumMWXferCycleTime                    : 0
RecommendedMWXferCycleTime                : 0
MinimumPIOCycleTime                       : 0
MinimumPIOCycletimeIORDY                  : 0
AsZonedCapabilities                       : 0
AsNonVolatileWriteCache                   : False
AsExtendedUserAddressableSectorsSupported : False
AsDeviceEncryptsAllUserData               : False
AsReadZeroAfterTrimSupported              : False
AsOptional28BitCommandsSupported          : False
AsIEEE1667                                : False
AsDownloadMicrocodeDmaSupported           : False
AsSetMaxSetPasswordUnlockDmaSupported     : False
AsWriteBufferDmaSupported                 : False
AsReadBufferDmaSupported                  : False
AsDeviceConfigIdentifySetDmaSupported     : False
AsLPSAERCSupported                        : False
AsDeterministicReadAfterTrimSupported     : False
AsCFastSpecSupported                      : False
ReservedWords70                           : 0
QueueDepth                                : 0
ReservedWord75                            : 0
SacReserved0                              : False
SacSataGen1                               : True
SacSataGen2                               : True
SacSataGen3                               : True
SacReserved1                              : 0
SacNCQ                                    : False
SacHIPM                                   : False
SacPhyEvents                              : False
SacNcqUnload                              : False
SacNcqPriority                            : False
SacHostAutoPS                             : False
SacDeviceAutoPS                           : False
SacReadLogDMA                             : False
SacReserved2                              : False
SacCurrentSpeed                           : 0
SacNcqStreaming                           : False
SacNcqQueueMgmt                           : False
SacNcqReceiveSend                         : False
SacDEVSLPtoReducedPwrState                : False
SacReserved3                              : 0
SafsReserved0                             : False
SafsNonZeroOffsets                        : True
SafsDmaSetupAutoActivate                  : True
SafsDIPM                                  : False
SafsInOrderData                           : False
SafsHardwareFeatureControl                : False
SafsSoftwareSettingsPreservation          : False
SafsNCQAutosense                          : False
SafsDEVSLP                                : False
SafsHybridInformation                     : False
SafsReserved1                             : 0
SafeReserved0                             : False
SafeNonZeroOffsets                        : False
SafeDmaSetupAutoActivate                  : False
SafeDIPM                                  : False
SafeInOrderData                           : False
SafeHardwareFeatureControl                : False
SafeSoftwareSettingsPreservation          : False
SafeNCQAutosense                          : False
SafeDEVSLP                                : False
SafeHybridInformation                     : False
SafeReserved1                             : 0
MajorRevision                             : 0
MinorRevision                             : 248
CssSmartCommands                          : True
CssSecurityMode                           : False
CssRemovableMediaFeature                  : False
CssPowerManagement                        : False
CssReserved1                              : False
CssWriteCache                             : False
CssLookAhead                              : False
CssReleaseInterrupt                       : False
CssServiceInterrupt                       : False
CssDeviceReset                            : False
CssHostProtectedArea                      : False
CssObsolete1                              : False
CssWriteBuffer                            : True
CssReadBuffer                             : True
CssNop                                    : True
CssObsolete2                              : False
CssDownloadMicrocode                      : False
CssDmaQueued                              : False
CssCfa                                    : False
CssAdvancedPm                             : True
CssMsn                                    : False
CssPowerUpInStandby                       : False
CssManualPowerUp                          : False
CssReserved2                              : False
CssSetMax                                 : False
CssAcoustics                              : False
CssBigLba                                 : False
CssDeviceConfigOverlay                    : False
CssFlushCache                             : True
CssFlushCacheExt                          : True
CssWordValid83                            : 1
CssSmartErrorLog                          : True
CssSmartSelfTest                          : False
CssMediaSerialNumber                      : False
CssMediaCardPassThrough                   : False
CssStreamingFeature                       : False
CssGpLogging                              : True
CssWriteFua                               : False
CssWriteQueuedFua                         : False
CssWWN64Bit                               : False
CssURGReadStream                          : False
CssURGWriteStream                         : False
CssReservedForTechReport                  : 0
CssIdleWithUnloadFeature                  : False
CssWordValid                              : 0
CsaSmartCommands                          : True
CsaSecurityMode                           : False
CsaRemovableMediaFeature                  : False
CsaPowerManagement                        : False
CsaReserved1                              : False
CsaWriteCache                             : False
CsaLookAhead                              : False
CsaReleaseInterrupt                       : False
CsaServiceInterrupt                       : False
CsaDeviceReset                            : False
CsaHostProtectedArea                      : False
CsaObsolete1                              : False
CsaWriteBuffer                            : True
CsaReadBuffer                             : True
CsaNop                                    : False
CsaObsolete2                              : False
CsaDownloadMicrocode                      : False
CsaDmaQueued                              : False
CsaCfa                                    : False
CsaAdvancedPm                             : True
CsaMsn                                    : False
CsaPowerUpInStandby                       : False
CsaManualPowerUp                          : False
CsaReserved2                              : False
CsaSetMax                                 : False
CsaAcoustics                              : False
CsaBigLba                                 : False
CsaDeviceConfigOverlay                    : False
CsaFlushCache                             : True
CsaFlushCacheExt                          : True
CsaReserved3                              : True
CsaWords119_120Valid                      : False
CsaSmartErrorLog                          : False
CsaSmartSelfTest                          : False
CsaMediaSerialNumber                      : False
CsaMediaCardPassThrough                   : False
CsaStreamingFeature                       : False
CsaGpLogging                              : False
CsaWriteFua                               : False
CsaWriteQueuedFua                         : False
CsaWWN64Bit                               : False
CsaURGReadStream                          : False
CsaURGWriteStream                         : False
CsaReservedForTechReport                  : 0
CsaIdleWithUnloadFeature                  : False
CsaReserved4                              : 1
UltraDMASupport                           : 64
UltraDMAActive                            : 0


#34

P

PHolder

get this post under 10,000 characters
You could also link to pastebin or even https://privatebin.net/ or https://privatebin.io/ if full length is important?


#35

ColbyBouma

ColbyBouma

You could also link to pastebin or even https://privatebin.net/ or https://privatebin.io/ if full length is important?
Yeah, I'll do that for future posts. For my previous post I just removed some properties that are likely unimportant.


#36

LSI11-23

LSI11-23

Okay, Pat (@LSI11-23): SRPR-603.EXE is ready for you to test on that very wacky drive.

I was a bit more aggressive than I planned. Looking over the drive's “IDentify” data further, it makes a strong case for believing its claim that it does not support DMA at all (even though that's really not possible for any drive that was presumably once 1TB and also claims to support many of the latest ATA specification standards.) So I've decided to believe it and punt the handling back to the BIOS rather than “Red Flag” the drive as impossible for SpinRite to work with.

Consequently, I'm not 100% certain how the drive will behave now. Let's find out! Thanks!
Steve,

603 was able to get past the intro screens and it detected the "21Mb" drive. I proceed to go for broke and run a level 3 on it. I did see the Dire Warning pop up, but there is no data on the drive that I need. It ran ( very quickly.. haha) and spinrite was able exit normally.
Attached are the dbg file and the level 3 log files.

Attachments


  • 5.DBG.txt
    5.4 KB · Views: 177
  • 5.LOG.txt
    4.4 KB · Views: 185

#37

Steve

Steve

Beautiful, Pat! (@LSI11-23):

Case closed... And SpinRite is better for it. Thanks for pursuing and working on this with me. This improvement will remain in SpinRite. (y)


#38

ColbyBouma

ColbyBouma

v 006 adds the rest of the properties. My script now parses the entire IDENTIFY block. However, I am far from any kind of expert in this field, so it's very likely I made some mistakes. Also, there are properties I'm sure I can represent better.

UPDATE: I added, changed, and fixed a bunch of things in my script. It is now v 013. I have updated the snippets below.
https://gitlab.com/GRC-Community/SpinRite-Logs/-/blob/main/Decode DBG IDENTIFY.ps1

Here's the output of v 013 for my BIWIN SSD:
https://gitlab.com/GRC-Community/SpinRite-Logs/-/snippets/3672264

Here's LSI11-23's:
https://gitlab.com/GRC-Community/SpinRite-Logs/-/snippets/3672265


#39

M

MTShipp

RC 6 is behaving odd with my "Kanguru Flash Blu30 USB 3.0 8GB" drive. I am not sure if I should report this here or elsewhere? Mod if you remove for the wrong place, please tell me where to go. The issue is not a failure, but periodic 1 second pauses every 2-3 seconds throughout the duration of the scan. There are no error messages just pauses that last for 1 second every 2-3 seconds. If you want more details, let me know. I am going to try to dig up some previous builds to see if I can duplicate it but they may be in old snapshots on my Synology NAS shares.


#40

Steve

Steve

Hi @MTShipp :

Yes... We've previously encountered this with some machine's BIOSes and their interaction with some drives, so I doubt you'll see anything different with older/earlier builds of SpinRite. You can probably try a different machine with a different BIOS since it's not common... But it is something we've run across before. I'll definitely be adding a mention of this behavior in v6.1's online FAQ.


#41

M

MTShipp

Hi @MTShipp :

Yes... We've previously encountered this with some machine's BIOSes and their interaction with some drives, so I doubt you'll see anything different with older/earlier builds of SpinRite. You can probably try a different machine with a different BIOS since it's not common... But it is something we've run across before. I'll definitely be adding a mention of this behavior in v6.1's online FAQ.
Thank you Steve. Not a stopper for sure. Just noticed behavior with this USB.

Here are some specifications to add to your KB:
System: Zimaboard 432
BIOS: AMI 2.18.1263
USB: Kanguru Flashblu 8GB


#42

M

MARK J RICHARDS

FYI...
In the situation I was in at the time the closest networked computer was running "Windows 2000 Advanced Server" and so upon attempting to execute the RC 'installer' it failed with a dialog (attached) that "The procedure GetVolumePathNamesForVolumeNameA could not be located in the DLL KERNEL32.dll"
Of course I don't expect that I would use this environment for Spinrite media creation anyway, but I thought it interesting that the old 32 bit libraries didn't like the call for "A" volume name... I sure like your style of Assembler work.

Mark Richards


#43

Steve

Steve

GetVolumePathNamesForVolumeNameA
Hi Mark. In this instance the "A" at the end of the Windows API name stands for ASCII. There's another nearly identical API named "GetVolumePathNamesForVolumeNameW" where the "W" stands for "Wide" which uses the "wide" 16-bit Unicode character set. But you're right, at some point I decided that I wanted to be able to make use of some newer system features at the cost of not running on absolutely anything far back in time! (y)


#44

ColbyBouma

ColbyBouma

(attached)
This forum is finnicky with images. You'll probably have to reduce the file size first. I recently tried to attach a 780 kB image in a different thread, but it failed. I shrunk it to 359 kB, then it worked. I don't know what the threshold is, but I'm guessing somewhere around 500 kB.


#45

xplora1a

xplora1a

I have spinrite working with Ventoy. I just created a freeDOS boot image, added spinrite.exe to this. and created a img file of the disk.


#46

P

Pcrimi

Hi Steve - I'd like to know if there is a way to have SpinRite perform an operation like a level 2 scan multiple times. The reason I ask is that I have a Samsung 32 gb SDHC card that has a couple of spots it can't read or write to. I was able to copy all the files except one large one off it (an MP4 phone video I took that's not important) and I've decide to play with it to see if it's recoverable. The card passes the level 2 test but does not pass level 3 in two areas where I get a "Device Fault" error - a photo of which I attached.

The really interesting thing about this is that in running level 2 a number of times, I've been able to "heal" some of the bad spots and increase the amount of the file being copied using Windows from 60% to 86%. My thought is if I was able to have SpinRite do the level 2 scan overnight multiple times it might just heal any remaining bad spots. I also attached the log and debug files.

Regardless of whether you decide to add this feature or not, I can't say enough about what a fantastic tool SpinRite is and I really appreciate what I have learned from you and the other users who have posted in this forum. Thanks! - Paul

Attachments


  • SpinRite SD card error.jpg
    SpinRite SD card error.jpg
    258.9 KB · Views: 152
  • 31.DBG.txt
    1.4 KB · Views: 678
  • 31.LOG.txt
    8.5 KB · Views: 191

#47

Steve

Steve

Hey @Pcrimi :

You CAN do what you want since SpinRite can now be completely controlled from its command line.
If you exit from SpinRite to the DOS command prompt, then start it again with “spinrite list”, this will run SpinRite only enough to produce the listing of the system's drives, which it will then dump to the console and return to DOS.

Using that list, you can select whatever drive(s) you want SpinRite to run on by using one of the drive selection verbs (presumably "BIOS" in the case of a USB-connected SD card) followed by the BIOS number shown in the listing, like "81".

So a command to run a level 2 on that drive would be: “spinrite auto level 2 bios 81 exit”.

The "auto" causes SpinRite to bypass all user prompting to run automatically and unattended.
The "level 2" is obvious.
The "bios" tells SpinRite to anticipate the BIOS drive designation which follows: 81.
The "exit" tells SpinRite to exit back to DOS after the scan is completed.

Next, you can use the little text editor you'll find on SpinRite's boot directory to create a looping DOS batch file:

@echo off
:scan
spinrite auto level 2 bios 81 exit
goto scan

That will do what you think... it will run a level 2 pass with SpinRite over and over on BIOS drive 81 until you interrupt it. The only glitch will be that when you do interrupt it, it will drop out of SpinRite and immediately try to re-run it. So you might need to ESCape from SpinRite then immediately hit CTRL-C or CTRL-X to break out of the Goto loop.

(It occurs to me that I ought to have SpinRite exit back to DOS with an "errorlevel" that's different when the user interrupted it. Then the last line of the batch file could be: "if not errorlevel 1 goto scan". I'm going to add that to SpinRite to make this sort of looping much more convenient. This is an advantage of allowing time for the paint to dry! Thanks! (y) )

Regardless of whether you decide to add this feature or not, I can't say enough about what a fantastic tool SpinRite is and I really appreciate what I have learned from you and the other users who have posted in this forum. Thanks!
Thanks @Pcrimi! Your support and enthusiasm for this work is much appreciated!


#48

P

Pcrimi

Steve - I just tried your batch file method and it's working great. Thanks!
- Paul


#49

Steve

Steve

Cool!! I'll be making it easier to ESCape from it before SpinRite's final release. Nice!! (y)


#50

P

PHolder

making it easier
You could create a little batch script to ship with SR that is like SRLOOP {n} that contained a for loop that could go as high as, say 20, or something and break out when the parameter number matched. It's been a long time since I last coded a DOS .BAT file, but I could try to code that up if you wanted me to.


#51

Steve

Steve

You could create a little batch script to ship with SR that is like SRLOOP {n} that contained a for loop that could go as high as, say 20, or something and break out when the parameter number matched. It's been a long time since I last coded a DOS .BAT file, but I could try to code that up if you wanted me to.
I'd be happy to put that into an FAQ online, Paul. My sense is that, in general, it's not something that most people would choose to do. And, frankly, just duplicating the invocation command-line 20 times in a batch file would accomplish the same thing (though it does get unwieldy for higher iteration counts! <g> If you do something I'll gladly add it to the FAQ. (y)


#52

Fuzzball

Fuzzball

That will do what you think... it will run a level 2 pass with SpinRite over and over on BIOS drive 81 until you interrupt it. The only glitch will be that when you do interrupt it, it will drop out of SpinRite and immediately try to re-run it. So you might need to ESCape from SpinRite then immediately hit CTRL-C or CTRL-X to break out of the Goto loop.
Does that "auto" command line option also stop Spinrite from stopping on errors such as the "Device Fault" that the OP posted? See... now you're in errorlevel Hell. :)


#53

Steve

Steve

Does that "auto" command line option also stop Spinrite from stopping on errors such as the "Device Fault" that the OP posted?
No. “Critical errors” will pause SpinRite during the display of the error notice so that the user may decide whether they wish to abort or ignore and proceed, if that's possible.


#54

P

PHolder

gladly add it to the FAQ

Here you go, tested in CMD on Windows 10, perhaps you can test it on the actual platform before adding it to the FAQ.

Code:
@ECHO OFF
REM Launch with parameter one as the number of iterations, put any SpinRite parameters after
SET count=%1
SHIFT
REM Cannot use %* because SHIFT does not affect it
SET params=%1 %2 %3 %4 %5 %6 %7 %8 %9

SET i=0
:LOOP
SET /a i+=1
ECHO --Launching: SpinRite %params% (launch count %i%)
SpinRite %params%
IF NOT %i%==%count% GOTO LOOP
ECHO --SpinRite launching complete for count %count%


#55

ColbyBouma

ColbyBouma

Unfortunately, FreeDOS doesn't support SET /A. When I ran ReadSpeed 1,000 times, I eventually gave up and installed QBasic.
https://forums.grc.com/threads/i-ran-readspeed-1-000-times.377

Here's a script I was able to build a while ago with FreeDOS's frustratingly basic command set:
https://gitlab.com/ColbyBouma/misc-scripts/-/blob/master/BATCH/SRL.BAT

BWZ29034 - cropped.png


BWZ29065.PNG


BWZ29074 - cropped.png


#56

H

himemsys

With SpinRite 6.0, I had created an MS-DOS 6.0 boot USB which worked great. But I discovered when trying to drop SR 6.1 RC onto that flashdrive, that 6.1 will not run under MS-DOS. It seems to require FreeDOS.


#57

Steve

Steve

With SpinRite 6.0, I had created an MS-DOS 6.0 boot USB which worked great. But I discovered when trying to drop SR 6.1 RC onto that flashdrive, that 6.1 will not run under MS-DOS. It seems to require FreeDOS.
Yes. Since there are so many non-FAT file systems floating around now, many versions of DOS will freak out and misbehave with confronted with something it doesn't understand. Since FreeDOS is open source, I was able to modify it to be tolerant of anything it doesn't understand. And since all of v6.1's testing was done under FreeDOS, I decided to tie v6.1 to FreeDOS to minimize DOS-related trouble. And FreeDOS is what SpinRite's installer as always used.


#58

P

PHolder

FreeDOS doesn't support SET /A

I'm probably wasting my time then, but here's this version, without SET /A

Code:
@ECHO OFF
REM Launch with parameter one as the number of iterations, put any SpinRite parameters after
SET count=%1
SHIFT
REM Cannot use %* because SHIFT does not affect it
SET params=%1 %2 %3 %4 %5 %6 %7 %8 %9

SET skip=0
FOR %%i IN (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25) DO (call :DOSPIN %%i)
ECHO --SpinRite launching complete for count %count%
GOTO :EXIT

:DOSPIN
IF NOT %skip%==0 GOTO :EXIT
ECHO --Launching: SpinRite %params% -- launch count %1
SpinRite %params%
REM uncomment when SpinRite supports it:  IF ERRORLEVEL 2 SET skip=1
IF %1==%count% SET skip=1

:EXIT


#59

C

cbrillow

With SpinRite 6.0, I had created an MS-DOS 6.0 boot USB which worked great. But I discovered when trying to drop SR 6.1 RC onto that flashdrive, that 6.1 will not run under MS-DOS. It seems to require FreeDOS.
Steve has already addressed this, but I’ll comment that my Spinrite 6 flash drive had MSDOS 6.22 on it since an early experiment trying to get around the B40E divide by zero error.

Since beginning to play with the alpha releases last year, I’ve copied some of them to this drive and run them. But somewhere along the line, it stopped working. Later versions have given me ‘File too large to fit in memory.’

Steve and his bloated code… 🙄😉😁


#60

D

dije

Please provide a link to a bootable USB image. You might want to consider adding this link to either the announcement page or this page or both. I imagine that this is what 100% of your new customers require, to a first approximation.

The instructions I did find on your website involved adding SR61 to a ReadSpeed image. I applied the unzipped RS image using dd on Manjaro Linux, mounted it and copied the SR exe over. That USB stick then silently fails to boot a ThinkPad T480. (The T480 has no trouble booting from any of many ISOs on a Ventoy stick).

I understand why FreeDOS won't work with Ventoy, too bad about that, so where's the alternative? I made my purchase based on your assertion on the podcast that you had diagnosed the problem and found a solution, but c'est la vie.

This is my first experience of SpinRite, after many years of hearing it continuously extolled on the Security Now podcast. So far I'm frustrated and disappointed by your confusing and apparently mostly outdated website. I don't mean to be disrespectful, but, like you, I've got things to do. I don't have time to waste on trying to find things that I feel should be obvious, immediately available and "just work". I'm beginning to regret parting with my money.


#61

Steve

Steve

@dije: I can certainly sympathize with your frustration. You are catching things while they are still very much in process.

To answer your question, you can simply go here: https://www.grc.com/prerelease.htm

If you supply your SpinRite's serial number or purchase transaction code, you'll receive a link to download the latest current release candidate which runs under either Windows or DOS. Simply run it under Windows to setup a bootable USB thumb drive in a single step. Then simply boot that. (y) Again... sorry for the transient confusion!


#62

Steve

Steve

I understand why FreeDOS won't work with Ventoy, too bad about that, so where's the alternative? I made my purchase based on your assertion on the podcast that you had diagnosed the problem and found a solution, but c'est la vie.
You're right about Ventoy. A free and open alternative known as “Easy2Boot” (https://easy2boot.xyz/download/) is fully tested and compatible and offers a large superset of features compared with Ventoy.


#63

D

dije

@dije: I can certainly sympathize with your frustration. You are catching things while they are still very much in process.

To answer your question, you can simply go here: https://www.grc.com/prerelease.htm

If you supply your SpinRite's serial number or purchase transaction code, you'll receive a link to download the latest current release candidate which runs under either Windows or DOS. Simply run it under Windows to setup a bootable USB thumb drive in a single step. Then simply boot that. (y) Again... sorry for the transient confusion!
Unfortunately on Win11 I get a virus warning that does not look like the one shown on your prerelease page, followed by the immediate, unprompted disappearance of the .exe file from the WIndows desktop. It is then not to be found in the recycle bin. There appears to be no way to run it, AFAICT.


#64

Steve

Steve

Unfortunately on Win11 I get a virus warning that does not look like the one shown on your prerelease page, followed by the immediate, unprompted disappearance of the .exe file from the WIndows desktop. It is then not to be found in the recycle bin. There appears to be no way to run it, AFAICT.
As you may know, this has been constant annoyance. Others have found that simply retrying the download works for them, since Windows Defender appears to have not made up its mind about their file. It definitely IS possible (and easy) for you to briefly disable Defender's "Real Time Protection" and I suspect that I may need to provide clear instructions about how to do that. :(


#65

ColbyBouma

ColbyBouma

It definitely IS possible (and easy) for you to briefly disable Defender's "Real Time Protection"
I recommend adding an exclusion for a folder instead. That has been working perfectly for me.


#66

Steve

Steve

I recommend adding an exclusion for a folder instead. That has been working perfectly for me.
That's what I've done too, Colby. It's the ONLY WAY it's possible for any developer to work inside a Windows environment today, since Windows INSTANTLY quarantines ANY newly linked EXEcutable code. <sigh> The reason for my suggesting a brief disablement of Defender's real time protection is that downloading SpinRite will eventually be a one time event... so filling that switch to "off", doing the download, and flipping it back "on" seems like the simplest solution. But certainly for anyone who is continually working with evolving code, as you and I are, creating an unmonitored landing folder makes much more sense! (y)


#67

ColbyBouma

ColbyBouma

so filling that switch to "off", doing the download, and flipping it back "on" seems like the simplest solution.
I'm just concerned that users are going to forget to turn it back on.


#68

Steve

Steve

I'm just concerned that users are going to forget to turn it back on.
Ah! Nice point. I was sort of thinking that the big Windows Defender dialog would be left on screen, since I believe that flipping that switch takes immediate action. So they would download the file and flip it back on.

But I should also note, Colby, that I've been rethinking the entire SpinRite customized download and registration process — which appears to be an ongoing nightmare and headache. I'll be posting about that over in the newsgroup shortly.


#69

D

dije

I am laughing at the naming of "Easy2Boot". Funny.

Based on instructions I found at https://easy2boot.com/add-payload-files/wizard/ (despite the weird URL, that's the "Guide for E2B" page) I think I've gathered the following:

- I need to somehow package the SR61.exe binary into something called a .imgPTN file; no idea how.

- I have to put it somewhere in at least one and probably both of the partitions created by the E2B setup app; no idea where.

- There is a mention of "any E2B menu folder"; no idea where these are or how many there are.

- I then have to run MAKE_THIS_DRIVE_CONTIGUOUS.cmd, which is present in the root dir of only one of the partitions, before I can try to boot.

It's now approaching a full working day I've spent on this and I still can't run SpinRite 6.1 on my industry-standard machine.


#70

Steve

Steve

@dije : I didn't do any of that. I just had SpinRite make an ISO file which I placed into one of the Easy2Boot folders. Then when I booted it, I chose that folder, saw SpinRite and selected it. (y)


#71

P

PHolder

approaching a full working day
Well USB sticks aren't exactly expensive in small sizes you would need for SpinRite. Find or acquire a small 16G or 32G stick, or whatever is most cost effective. On a Windows machine, using any browser, download your licensed copy of the SpinRite.exe using your serial number from the preview URL. Inside that same Windows machine, run the SpinRite.EXE you just downloaded, and it will help you prep the USB stick to be a bootable copy of FreeDOS with SpinRite configured to run inside. From there you should be able to use SpinRite, and have logging enabled onto the USB stick. You can get what you need done quickly and stop worrying about making some complex thing that boots anything else but SpinRite.


#72

Steve

Steve

Well USB sticks aren't exactly expensive in small sizes you would need for SpinRite. Find or acquire a small 16G or 32G stick, or whatever is most cost effective. On a Windows machine, using any browser, download your licensed copy of the SpinRite.exe using your serial number from the preview URL. Inside that same Windows machine, run the SpinRite.EXE you just downloaded, and it will help you prep the USB stick to be a bootable copy of FreeDOS with SpinRite configured to run inside. From there you should be able to use SpinRite, and have logging enabled onto the USB stick. You can get what you need done quickly and stop worrying about making some complex thing that boots anything else but SpinRite.
That's a great point, Paul. I'm afraid that his mention of Ventoy distracted me a bit and sent him down the rabbit hole of booting an ISO image which is, as you note, completely unnecessary. :(


#73

H

himemsys

Well USB sticks aren't exactly expensive in small sizes you would need for SpinRite. Find or acquire a small 16G or 32G stick
This made me chuckle. I still have several old school flash drives. My SR6.0 flash drive was 128MB, falling apart and held together by masking tape. My "new" SR6.1 flash drive is a Memorex 256MB stick. Both are kept in good working order by InitDisk and occasional SpinRite passes.


#74

T

TProbst67

This made me chuckle. I still have several old school flash drives. My SR6.0 flash drive was 128MB, falling apart and held together by masking tape. My "new" SR6.1 flash drive is a Memorex 256MB stick. Both are kept in good working order by InitDisk and occasional SpinRite passes.

Haaa!... I was thinking the same thing...although I was thinking more like 2 or 4GB as small...although I too remember having 128MB flash drives in the distant past... ;-)

Regards,
Thomas


#75

S

SeanBZA

Still have a 32M SD card, that came with an early Nokia phone, because they bundled it with a SD card, so bought the cheapest they could get.

Plus also have a 8M Sony memory stick somewhere as well. The camera it goes in can get 2 images on it, in the highest resolution it supports. Possibly, if they encode down really well.


#76

D

dije

@dije : I didn't do any of that. I just had SpinRite make an ISO file which I placed into one of the Easy2Boot folders. Then when I booted it, I chose that folder, saw SpinRite and selected it. (y)
Hi Steve, you may have missed my post where I described how Win11 refuses to allow SR61 to run


#77

D

dije

Well USB sticks aren't exactly expensive in small sizes you would need for SpinRite. Find or acquire a small 16G or 32G stick, or whatever is most cost effective. On a Windows machine, using any browser, download your licensed copy of the SpinRite.exe using your serial number from the preview URL. Inside that same Windows machine, run the SpinRite.EXE you just downloaded, and it will help you prep the USB stick to be a bootable copy of FreeDOS with SpinRite configured to run inside. From there you should be able to use SpinRite, and have logging enabled onto the USB stick. You can get what you need done quickly and stop worrying about making some complex thing that boots anything else but SpinRite.
Hi PHolder, you also may have missed my earlier post where I describe how Win11 refuses to run SR61 and immediately, unconditionally and irretrievably deletes the binary.


#78

D

dije

Steve, I'll take that refund now. Please let me know what if anything I need to do beyond posting here.


#79

T

TProbst67

I recommend adding an exclusion for a folder instead. That has been working perfectly for me.

@ColbyBouma - Could you provide some details on how to do that here?...Thanks!

BTW - I'm running Windows 10 Pro.

Regards,
Thomas


#80

Steve

Steve

Steve, I'll take that refund now. Please let me know what if anything I need to do beyond posting here
@dije:

First of all, you are of absolutely entitled to a refund of your purchase! We have your money and you do not have SpinRite. No question about it. Normally as part of the refunding process we ask SpinRite owners to delete their copy(ies) of SpinRite... but that's not necessary in this case, since Windows has taken care of that for you! :(

However, if you want SpinRite, and you're willing to not give up on getting it yet, your Windows 11 system represents a valuable test case and this community will not give up on you.

Please understand that this is not your fault, not our fault, and not SpinRite's fault. This is a serious problem with Windows, which is preventing 100% benign and safe software which you purchased and would like to use from running on your system. It may be SpinRite today... but what will it be tomorrow?

Also know that literally (truly) thousands of copies of the same code you're trying to obtain and run have successfully been downloaded and run without any trouble. Your problem worries me greatly, because I don't want any customer to have any such trouble. But for what it's worth, the harassment you are suffering at the hands of Windows 11 is at least blessedly rare.

The solution to this is simple, and there are THREE solutions:
(Note that Microsoft created three workarounds because they knew this could happen)
  1. You can temporarily turn off Windows' (overactive) "Real Time Monitoring" while you download and run SpinRite to create its bootable USB media. Once that's done you can (and should) turn it back on (and Windows will turn it back on for you automatically if you forget) At that time, Windows may then see SpinRite and freak out... but you will already have your bootable USB drive, so it won't matter.

  2. Or you can create a "safe haven" directory in Windows where SpinRite will be left alone. (That's probably the best option.)

  3. Or you can create an exception for SpinRite to allow your copy to run in your machine without any further hassle.
    However, to use this 3rd option you need to select the file. That won't work in your case since Windows won't even allow the file to exist long enough for you to allow it. So the first or the second option will be what you want.
Though Option #2 is probably best, Option #1 is the easiest to do, and if you do an Internet search for "turn off Windows 11 real time protection" you'll see that a great many other people have also been harassed by this feature of Windows. On balance, Windows Defender it's certainly a good thing. But it doesn't always do what its users wish.

For option #1:
  1. Search for "Windows Security"
  2. Under: Virus & Threat Protection
  3. Virus & Threat Protection Settings
  4. Turn Real-time protection —> OFF.
    (Again, note that Windows will automatically turn it back on in case you forget to do so.)
For option #2:

Under Virus & Threat Protection Settings:
  1. Scroll to the bottom to "Exclusions"
  2. Click "Add or remove exclusions"
  3. Click "Add an exclusion"
  4. Select "Folder" from the dropdown list.
  5. You're now being asked to select a folder, but you can create the folder here:
    Right click on "Downloads" or "Desktop" or wherever and select "New" —> "Folder"
  6. Right Click on the "New Folder" and choose Rename. Name it "SpinRite" and then select it.
  7. Under "Exclusions" you should now see something like: "C:\Users\SMG\Downloads\SpinRite"
Either way... Windows will now allow you to download and run SpinRite. If you chose the "safe haven" folder approach, just download another copy of your SpinRite into that folder and Windows will (finally) leave it alone. :)

UPDATE!! —> If you are using Edge, the other setting that might be interfering even BEFORE this is the "Cloud Delivered Protection." I'm exploring that now, but I didn't want you to be further frustrated!

If you want to give up and get your money back, just drop Sue a note to sales2024@grc.com with your purchase information and she will immediately reverse your charge and refund your purchase. But I would LOVE to know whether the steps above work for you, since I'm sure you will not be the only SpinRite purchaser who is harassed in this fashion!

PLEASE let us know?? THANKS!


#81

Tazz

Tazz

Just a thought, what browser are you using? It sounds like Edge since it intercepts the download. Maybe try another browser?

After some testing I managed to bugger myself up a little.

I've never had any problems with false positives with SpinRite so I looked through the Group Policy Editor (I have some custom settings for Windows update and Defender) to see how it was set. I used Edge to get a new sr61pr.exe - no problems. Firefox - no problems.
I changed some things, tried Edge again and got "Couldn't download - virus detected." Firefox - no problems.
Changed it all back and still "virus detected" with Edge.
Now with different settings than I originally had I can download sr61pr.exe with Edge without getting the virus warning.

For me it's the "Cloud-delivered protection" setting.
With it set to On I get "virus detected"
With it set to Off I get a normal download.


shrugs, maybe it's just me.


#82

Steve

Steve

shrugs, maybe it's just me.
Probably not just you, since I didn't try that with Edge! THANKS!!


#83

P

PHolder

describe how Win11 refuses to run SR61 and immediately, unconditionally and irretrievably deletes the binary.
I really feel for your frustration. I think Microsoft's detection of malware is over keen to declare anything a problem. Microsoft would prefer you only use their failed store I presume. Steve has gone to GREAT LENGTHS to try and make MS's scanner(s) happy with his code. He signs it and that should be enough, but it appears not for everyone. (I personally have never had ANY issue but I use Firefox. I recommend you try downloading with Firefox. It's what I use, and it has never failed a download of SpinRite for me.)


#84

Steve

Steve

I'm trying to come up with a reliable set of steps that will work for everyone. Since I'm unable to create these problems for myself, even using Edge, I need someone who is having these problems try this.

Here's the broad overview of the approach:
  1. Briefly disable Real-time & Cloud-delivered protection
  2. Download SpinRite
  3. Add a permanent exception for its executable file.
  4. Re-enable Real-time & Cloud-delivered protection.
Here's a step-by-step way of doing that:
  1. From the desktop, click the "Search" magnifying glass and search for "Windows Security"
  2. Open the Windows Security App.
  3. Click on: Virus & Threat Protection
  4. Under "Virus & Threat Protection Settings" click "Manage settings"
  5. Turn Real-time protection —> OFF.
    (Again, note that Windows will automatically turn it back on in case you forget to do so.)
  6. Turn Cloud-delivered protection —> OFF.
  7. Open your browser and download your copy of SpinRite.
    You may open it if you like, but we should create a permanent exclusion for it. So...
  8. Back in the "Windows Security" app, scroll down to the bottom to "Exclusions", click "Add or remove exclusions"
  9. Click "Add an exclusion" then "File" in the drop-down menu.
  10. Browse to the location where you downloaded SpinRite and select it. Windows will now leave it alone.
  11. Use the "back arrow" at the upper left to return to "Virus & threat protection settings."
  12. Re-enable Real-time protection —> ON.
  13. Re-enable Cloud-delivered protection —> ON.
You should now be able to run your downloaded copy of SpinRite without any harassment. :)


#85

Steve

Steve

For me it's the "Cloud-delivered protection" setting.
With it set to On I get "virus detected"
With it set to Off I get a normal download.


shrugs, maybe it's just me.
Tazz:

Since you ARE able to get Windows to harass you, could you turn "Cloud-delivered protection" back on, then try the 11-steps I have outlined above? It looks like a lot, but it's really just:
  1. Briefly disable Real-time protection
  2. Download SpinRite
  3. Add a permanent exception for it.
  4. Re-enable Real-time protection.
(What I'm wanting to confirm with your help is that disabling Real-time protection while Cloud-delivered protection is enabled, will allow SpinRite to be downloaded.)

Thanks!!


#86

Tazz

Tazz

(What I'm wanting to confirm with your help is that disabling Real-time protection while Cloud-delivered protection is enabled, will allow SpinRite to be downloaded.)

Umm, sort of a snag there.
I triggered "Abuse Prevention Block", presumably from too many downloads in a row (16).


#87

Steve

Steve

Umm, sort of a snag there.
I triggered "Abuse Prevention Block", presumably from too many downloads in a row (16).
Crap! One second and I'll see whether I can "run a bypass" ...


#88

Steve

Steve

Umm, sort of a snag there.
I triggered "Abuse Prevention Block", presumably from too many downloads in a row (16).
Try again?? Your page will look "different" but the download should be allowed...


#89

Tazz

Tazz

I swear I didn't touch anything.
It's downloading normally now no matter what I do.
Real time on or off
Cloud delivered on or off
any combination allows a normal download.

Maybe it's learning?


#90

Steve

Steve

I swear I didn't touch anything.
It's downloading normally now no matter what I do.
Real time on or off
Cloud delivered on or off
any combination allows a normal download.
Okay! Thanks for trying. That's the other annoyance... I also never had any trouble on a Win11 machine. And others have reported that downloading again after an initial failure, often works.

Hopefully, @dije won't give up and he'll be able to help us to find a robust protocol! (y) Thanks!!


#91

Tazz

Tazz

I manually submitted sr61pr.exe to Microsoft Security Intelligence or Defender or whatever it is and if I'm looking at it correctly it seems that it's only the online scan that has a problem.

srpr sample.PNG

Attachments


  • srpr sample.PNG
    srpr sample.PNG
    15.4 KB · Views: 185

#92

S

SeanBZA

Submitting will bnot help much, as each copy is signed with both the GRC cert, and also encoded with a unique serial number.