            Notes on Linux SCSI Generic (sg) driver
            ---------------------------------------
                                                        20020126
Introduction
============
The SCSI Generic driver (sg) is one of the four "high level" SCSI device
drivers along with sd, st and sr (disk, tape and CDROM respectively). Sg
is more generalized (but lower level) than its siblings and tends to be
used on SCSI devices that don't fit into the already serviced categories.
Thus sg is used for scanners, CD writers and reading audio CDs digitally
amongst other things.

Rather than document the driver's interface here, version information
is provided plus pointers (i.e. URLs) where to find documentation
and examples.


Major versions of the sg driver
===============================
There are three major versions of sg found in the linux kernel (lk):
      - sg version 1 (original) from 1992 to early 1999 (lk 2.2.5) . 
	It is based in the sg_header interface structure.
      - sg version 2 from lk 2.2.6 in the 2.2 series. It is based on
	an extended version of the sg_header interface structure.
      - sg version 3 found in the lk 2.4 series (and the lk 2.5 series).
	It adds the sg_io_hdr interface structure.


Sg driver documentation
=======================
The most recent documentation of the sg driver is kept at the Linux
Documentation Project's (LDP) site: 
http://www.tldp.org/HOWTO/SCSI-Generic-HOWTO
This describes the sg version 3 driver found in the lk 2.4 series.
The LDP renders documents in single and multiple page HTML, postscript
and pdf. This document can also be found at:
http://www.torque.net/sg/p/sg_v3_ho.html

Documentation for the version 2 sg driver found in the lk 2.2 series can
be found at http://www.torque.net/sg/p/scsi-generic.txt . A larger version
is at:  http://www.torque.net/sg/p/scsi-generic_long.txt .

The original documentation for the sg driver (prior to lk 2.2.6) can be
found at http://www.torque.net/sg/p/original/SCSI-Programming-HOWTO.txt
and in the LDP archives.

A changelog with brief notes can be found in the
/usr/src/linux/include/scsi/sg.h file. Note that the glibc maintainers copy 
and edit this file (removing its changelog for example) before placing it 
in /usr/include/scsi/sg.h . Driver debugging information and other notes 
can be found at the top of the /usr/src/linux/drivers/scsi/sg.c file.

A more general description of the Linux SCSI subsystem of which sg is a 
part can be found at http://www.tldp.org/HOWTO/SCSI-2.4-HOWTO .


Example code and utilities
==========================
There are two packages of sg utilities:
  - sg3_utils   for the sg version 3 driver found in lk 2.4
  - sg_utils    for the sg version 2 (and original) driver found in lk 2.2
                and earlier
Both packages will work in the lk 2.4 series however sg3_utils offers more
capabilities. They can be found at: http://www.torque.net/sg and 
freshmeat.net

Another approach is to look at the applications that use the sg driver.
These include cdrecord, cdparanoia, SANE and cdrdao.


Mapping of Linux kernel versions to sg driver versions
======================================================
Here is a list of linux kernels in the 2.4 series that had new version
of the sg driver:
      lk 2.4.0 : sg version 3.1.17
      lk 2.4.7 : sg version 3.1.19 
      lk 2.4.10 : sg version 3.1.20  **
      lk 2.4.17 : sg version 3.1.22 

** There were 3 changes to sg version 3.1.20 by third parties in the
   next six linux kernel versions.

For reference here is a list of linux kernels in the 2.2 series that had 
new version of the sg driver:
      lk 2.2.0 : original sg version [with no version number]
      lk 2.2.6 : sg version 2.1.31
      lk 2.2.8 : sg version 2.1.32
      lk 2.2.10 : sg version 2.1.34 [SG_GET_VERSION_NUM ioctl first appeared]
      lk 2.2.14 : sg version 2.1.36
      lk 2.2.16 : sg version 2.1.38
      lk 2.2.17 : sg version 2.1.39
      lk 2.2.20 : sg version 2.1.40

The lk 2.5 development series has recently commenced and it currently
contains sg version 3.5.23 which is functionally equivalent to sg
version 3.1.22 found in lk 2.4.17 .


Douglas Gilbert
26th January 2002
dgilbert@interlog.com
