Cdrtools with SPTI for Windows NT/2000/XP
Diese Seite auf Deutsch
What is it?
Running Cdrtools under
Microsoft Windows requires a working ASPI-Driver. Windows NT/2000/XP comes without installed ASPI, so it must be installed individually
(recommended: Adaptec ASPI). But under this OS, there is another access-method,
SPTI (SCSI Pass-Through Interface). In meantime this is used by many burning applications and preferred by Microsoft.
I have extracted the required code from AKRip CD-DA Audio Extraction Library for SPTI Support
and integrated it into libscg (scsi-wnt.c). AKRip here essentially emulates the ASPI functionality.
Advantages:
- Cdrtools run without ASPI installation.
- Alternative accessability, also with installed ASPI.
- Possibly devices are supported, which are not recogniced by ASPI but available under Windows.
- Device can be opend non SHARED, then simultaneous access (and disturbance) by other programs is not possible.
Disadvantages:
- Administrator privileges necessary, can possibly be worked around, see EAC-FAQ (Q: I use Windows NT/2000, but EAC seems to have problems to store the options or get any SCSI response)
- AFAIK, some functions are not possible, but are not not necessarily needed by Cdrtools, though implemented in
scsi-wnt.c: SC_ABORT_SRB, SC_RESET_DEV. If anybody knows, how to implement it, please tell me.
BTW: This ASPI-FAQ says, these functions do not work also with Adaptec ASPI, my test with ASPI 4.60 (1021) confirms this.
- There may exist devices (respectively drivers), which only work with ASPI, not SPTI.
Function:
SPTI is running under Windows NT/2000/XP, not 95/98/ME. If working ASPI is detected (wnaspi32.dll operational), it will be used, cdrtools run as usual. Otherwise SPTI is used automatically. SPTI can be forced by preceding the string "SPTI:" to target, e.g. dev=SPTI:1,0,0. With #define PREFER_SPTI this can be inveresed (now set in patch for better testing SPTI), ASPI is then forced with dev=ASPI:x,y,z.
Download:
From cdrtools-2.01a24 this patch is integrated into cdrtools.
cdrtools-spti-0.13.tar.gz from cdrtools-2.01a20 to 2.01a23, Changelog
cdrtools-spti-0.12.tar.gz for cdrtools-2.01a19 and below
cdrtools-spti-0.11.tar.gz
cdrtools-spti-0.10.tar.gz (first version)
Installation:
This extension for the Cdrtools is offered only as SOURCE Patch at this time here. Get the Cdrtools source code, use the
patch and then compile. The patch modifies libscg/scsi-wnt.c and adds libscg/scg/scsipt.h . All versions of
cdrtools-2.0 to 2.01a23 should work, please select patch appropriately.
New: From cdrtools-2.01a24 this patch is integrated into cdrtools and cannot be applied any more, following instructions are mainly for historical reasons.
Get Cdrtools from here: ftp.berlios.de/pub/cdrecord or ftp.berlios.de/pub/cdrecord/alpha
Download patch and unpack, then apply (in current directory you see cdrtools directory) with:
>patch -p0 --binary <cdrtools-spti-x.xx.diff
Adjust defines PREFER_SPTI and CREATE_NONSHARED in scsi-wnt.c according to your needs.
Compile cdrtools as usual.
Addendum: Thomas Plank is kindly offering Cdrtools-Binaries with SPTI-patch here:
http://www.sbox.tugraz.at/home/t/tplank/
Errors:
Since it is an early version of this extension, there may be errors. Therefore it should be tested first on computers, where
also a functioning ASPI is present. To be very careful you can also compare with Cdrtools without this extension, finally there could
be an error in ASPI code, although the changes are minimal here. If malfunctions occur, the two access
options should be compared. If you see the errors with ASPI and SPTI, then it is probably not because of SPTI. If errors occur
only with SPTI, re-run under both access methods and create a log file with program option "- V", the error should then
actually arise in a place, where the noted data differ, this would be very helpful for error tracing.
Further references:
My tests are mainly done with Windows 2000 and XP, only one Computer with NT 4.0 (SP5) was tested. Further on, independently from my extension,
I recommend to apply a patch to cdda2wav.c and cdrecord.c, witch does without REALTIME_PRIORITY_CLASS, see here:
news://e1b4bvo7n82d93p1vdg78h5i8p5bb5up3m@4ax.com
or Google Groups.
Addendum: With Cygwin 1.5.3 this should not be necessary any more, see news://mk5clv81sveg8rphasktlj1itc42u31t28.com or Google Groups.
| Richard Stemmer |
Last Change: 07.01.2004 |