blob: 4a9b489b0365a8273b425b6a73b968731713450e [file] [log] [blame]
Introduction
============
The win32 port of sg3_utils contains those utilities that are _not_ specific
to Linux. In some cases a utility could be ported but requires more work. An
example is sg_dd which needs more work beyond the SCSI command pass through
mechanism.
Two build environments are caterered for: cygwin (see www.cygwin.com) and
MinGW ("Minimalist GNU for Windows", see www.mingw.org). Both are based in
the gcc compiler (although other C compilers should have little problem with
the source code). Cygwin is a more sophisticated, commercial product that
results in executables that depend on cygwin1.dll . No licensing is required
since sg3_utils is open source (with either BSD or GPL licenses) but users
will need to fetch that dll. On the other hand MinGW (and its companion MSYS
shell) builds freestanding console executables. The Unix library support is
not as advanced with MinGW which has led to some timing functions being
compiled out when sg3_utils is built for MinGW.
Supported Utilities
===================
Here is a list of utilities that have been ported:
sg_format
sg_get_config
sg_ident
sg_inq [dropped ATA IDENTIFY DEVICE capability]
sg_logs
sg_luns
sg_modes
sg_persist
sg_opcodes
sg_prevent
sg_raw
sg_rdac
sg_read_buffer
sg_read_long
sg_readcap
sg_reassign
sg_requests
sg_rmsn
sg_rtpg
sg_sat_identify
sg_scan [this is Windows specific]
sg_senddiag
sg_ses
sg_start
sg_stpg
sg_sync
sg_turs
sg_verify
sg_vpd
sg_wr_mode
sg_write_buffer
sg_write_long
Most utility names are indicative of the main SCSI command that they execute.
Some utilities are slightly higher level, for example sg_ses fetches SCSI
Enclosure Services (SES) status pages and can send control pages. Each
utility has a man page (placed in section 8). There is summary of the mapping
between utility names and the SCSI commands they execute in the COVERAGE
file. An overview of sg3_utils can be found at:
http://www.torque.net/sg/sg3_utils.html .
A copy of the "sg3_utils.html" file is in the "doc" subdirectory.
See the INSTALL file (towards the end) for instructions on how to build
sg3_utils on Windows operating systems. Some man pages have examples which
use linux device names which hopefully will not confuse Windows users.
Details
=======
The ported utilities listed above, all use SCSI command functions declared in
sg_cmds_basic.h and sg_cmds_extra.h . Those SCSI command functions are
implemented in the corresponding ".c" files. The ".c" files pass SCSI commands
to the host operating system via an interface declared in sg_pt.h . There are
currently four implementations of that interface depending on the host
operating system:
- sg_pt_linux.c
- sg_pt_freebsd.c
- sg_pt_osf1.c [Tru64]
- sg_pt_win32.c
The sg_pt_win32.c file uses the Windows SCSI Pass Through (SPT) mechanism.
It does not currently use the ASPI32 interface which requires a dll from
Adaptec. The sg_scan utility is a special version for Windows and it attempts
to show the various allowable device names, grouping various names for the
same device on one line. Here is an example of sg_scan's output:
# sg_scan
SCSI0:0,0,0 C: PD0 IC25N040ATCS05-0 CS4O *
SCSI1:0,0,0 D: CDROM0 HITACHI DVD-ROM GD-S200 0034
SCSI2:0,0,0 I: + PD5 QUANTUM LPS525S 3110
SCSI2:0,6,0 TAPE0 SONY SDT-7000 0192
E: Generic USB SD Reader 1.00 pdt=0
PD1 Generic USB SD Reader 1.00
So the following device names all refer to the same (ATA) disk:
"SCSI0:0,0,0", "C:" and "PD0". Recent version of windows will only allow the
"SCSI0:0,0,0" to be used if there isn't another device name available.
The right hand section of each line is the SCSI INQUIRY command response
strings (which are constructed by Windows is some cases rather than the
device). The "*" at the end of the first line flags that the INQUIRY
response is not quite properly structured (according to SCSI-2) which is
usually indicative of an ATA disk.
If no class driver name (e.g. "PD0", "CDROM0" or "TAPE0") is available
then the SCSI "peripheral device type" (pdt) is placed at the end of the
line. Common pdt values are 0 for disks, 1 for tapes and 5 for cd/dvd
drives. The "+" after the "I:" indicates that other volume names
(letters) map to that device. This occurs when a disk has two or more
partitions that windows recognizes. The longer "PhysicalDrive" name,
shown in Windows documentation, may be used but "PD" is obviously
quicker to type.
Finally sg_scan does not manage to put all device names for USB and
IEEE 1394 devices on one line. The last two lines of output are actually
the same device.
Several utilities have conditional compilation sections based on
the SG3_UTILS_MINGW define. For those who want to try native C compilers
on Windows setting the SG3_UTILS_MINGW define may help.
Build environments
==================
This package has various Makefiles so that these utilities can be built
in either a cygwin and MinGW environment, called Makefile.win32 and
Makefile.mingw respectively. The executables produced are console
applications that can be executed in either a cygwin, MSYS or "cmd" shell.
See the INSTALL file for more details.
Doug Gilbert
31st August 2007