Closed Release Candidate 6

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

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
 
  • Like
Reactions: Steve
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
 
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)
 
(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.
 
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.
 
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: 89
  • 31.DBG.txt
    1.4 KB · Views: 573
  • 31.LOG.txt
    8.5 KB · Views: 103
Last edited:
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!
 
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.
 
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)
 
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. :)
 
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.
 
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%
 
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.
 
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.
 
  • Like
Reactions: himemsys
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
 
Last edited:
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… 🙄😉😁
 
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.