1d4d79340SMauro Carvalho Chehab.. SPDX-License-Identifier: GPL-2.0 2d4d79340SMauro Carvalho Chehab 3*8ebddfeeSRandy Dunlap======================== 4*8ebddfeeSRandy DunlapSCSI Generic (sg) driver 5*8ebddfeeSRandy Dunlap======================== 6d4d79340SMauro Carvalho Chehab 7d4d79340SMauro Carvalho Chehab 20020126 8d4d79340SMauro Carvalho Chehab 9d4d79340SMauro Carvalho ChehabIntroduction 10d4d79340SMauro Carvalho Chehab============ 11d4d79340SMauro Carvalho ChehabThe SCSI Generic driver (sg) is one of the four "high level" SCSI device 12*8ebddfeeSRandy Dunlapdrivers along with sd, st and sr (disk, tape and CD-ROM respectively). Sg 13d4d79340SMauro Carvalho Chehabis more generalized (but lower level) than its siblings and tends to be 14d4d79340SMauro Carvalho Chehabused on SCSI devices that don't fit into the already serviced categories. 15d4d79340SMauro Carvalho ChehabThus sg is used for scanners, CD writers and reading audio CDs digitally 16d4d79340SMauro Carvalho Chehabamongst other things. 17d4d79340SMauro Carvalho Chehab 18d4d79340SMauro Carvalho ChehabRather than document the driver's interface here, version information 19d4d79340SMauro Carvalho Chehabis provided plus pointers (i.e. URLs) where to find documentation 20d4d79340SMauro Carvalho Chehaband examples. 21d4d79340SMauro Carvalho Chehab 22d4d79340SMauro Carvalho Chehab 23d4d79340SMauro Carvalho ChehabMajor versions of the sg driver 24d4d79340SMauro Carvalho Chehab=============================== 25*8ebddfeeSRandy DunlapThere are three major versions of sg found in the Linux kernel (lk): 26d4d79340SMauro Carvalho Chehab - sg version 1 (original) from 1992 to early 1999 (lk 2.2.5) . 27d4d79340SMauro Carvalho Chehab It is based in the sg_header interface structure. 28d4d79340SMauro Carvalho Chehab - sg version 2 from lk 2.2.6 in the 2.2 series. It is based on 29d4d79340SMauro Carvalho Chehab an extended version of the sg_header interface structure. 30d4d79340SMauro Carvalho Chehab - sg version 3 found in the lk 2.4 series (and the lk 2.5 series). 31d4d79340SMauro Carvalho Chehab It adds the sg_io_hdr interface structure. 32d4d79340SMauro Carvalho Chehab 33d4d79340SMauro Carvalho Chehab 34d4d79340SMauro Carvalho ChehabSg driver documentation 35d4d79340SMauro Carvalho Chehab======================= 36*8ebddfeeSRandy DunlapThe most recent documentation of the sg driver is kept at 37d4d79340SMauro Carvalho Chehab 38*8ebddfeeSRandy Dunlap- https://sg.danny.cz/sg/ 39d4d79340SMauro Carvalho Chehab 40d4d79340SMauro Carvalho ChehabThis describes the sg version 3 driver found in the lk 2.4 series. 41d4d79340SMauro Carvalho Chehab 42*8ebddfeeSRandy DunlapDocumentation (large version) for the version 2 sg driver found in the 43*8ebddfeeSRandy Dunlaplk 2.2 series can be found at 44d4d79340SMauro Carvalho Chehab 45*8ebddfeeSRandy Dunlap- https://sg.danny.cz/sg/p/scsi-generic_long.txt. 46d4d79340SMauro Carvalho Chehab 47d4d79340SMauro Carvalho ChehabThe original documentation for the sg driver (prior to lk 2.2.6) can be 48*8ebddfeeSRandy Dunlapfound in the LDP archives at 49d4d79340SMauro Carvalho Chehab 50*8ebddfeeSRandy Dunlap- https://tldp.org/HOWTO/archived/SCSI-Programming-HOWTO/index.html 51d4d79340SMauro Carvalho Chehab 52d4d79340SMauro Carvalho ChehabA more general description of the Linux SCSI subsystem of which sg is a 53*8ebddfeeSRandy Dunlappart can be found at https://www.tldp.org/HOWTO/SCSI-2.4-HOWTO . 54d4d79340SMauro Carvalho Chehab 55d4d79340SMauro Carvalho Chehab 56d4d79340SMauro Carvalho ChehabExample code and utilities 57d4d79340SMauro Carvalho Chehab========================== 58d4d79340SMauro Carvalho ChehabThere are two packages of sg utilities: 59d4d79340SMauro Carvalho Chehab 60d4d79340SMauro Carvalho Chehab ========= ========================================================== 61d4d79340SMauro Carvalho Chehab sg3_utils for the sg version 3 driver found in lk 2.4 62d4d79340SMauro Carvalho Chehab sg_utils for the sg version 2 (and original) driver found in lk 2.2 63d4d79340SMauro Carvalho Chehab and earlier 64d4d79340SMauro Carvalho Chehab ========= ========================================================== 65d4d79340SMauro Carvalho Chehab 66*8ebddfeeSRandy DunlapBoth packages will work in the lk 2.4 series. However, sg3_utils offers more 67*8ebddfeeSRandy Dunlapcapabilities. They can be found at: https://sg.danny.cz/sg/sg3_utils.html and 68d4d79340SMauro Carvalho Chehabfreecode.com 69d4d79340SMauro Carvalho Chehab 70d4d79340SMauro Carvalho ChehabAnother approach is to look at the applications that use the sg driver. 71d4d79340SMauro Carvalho ChehabThese include cdrecord, cdparanoia, SANE and cdrdao. 72d4d79340SMauro Carvalho Chehab 73d4d79340SMauro Carvalho Chehab 74d4d79340SMauro Carvalho ChehabMapping of Linux kernel versions to sg driver versions 75d4d79340SMauro Carvalho Chehab====================================================== 76*8ebddfeeSRandy DunlapHere is a list of Linux kernels in the 2.4 series that had the new version 77d4d79340SMauro Carvalho Chehabof the sg driver: 78d4d79340SMauro Carvalho Chehab 79d4d79340SMauro Carvalho Chehab - lk 2.4.0 : sg version 3.1.17 80d4d79340SMauro Carvalho Chehab - lk 2.4.7 : sg version 3.1.19 81d4d79340SMauro Carvalho Chehab - lk 2.4.10 : sg version 3.1.20 [#]_ 82d4d79340SMauro Carvalho Chehab - lk 2.4.17 : sg version 3.1.22 83d4d79340SMauro Carvalho Chehab 84d4d79340SMauro Carvalho Chehab.. [#] There were 3 changes to sg version 3.1.20 by third parties in the 85*8ebddfeeSRandy Dunlap next six Linux kernel versions. 86d4d79340SMauro Carvalho Chehab 87*8ebddfeeSRandy DunlapFor reference here is a list of Linux kernels in the 2.2 series that had 88*8ebddfeeSRandy Dunlapthe new version of the sg driver: 89d4d79340SMauro Carvalho Chehab 90d4d79340SMauro Carvalho Chehab - lk 2.2.0 : original sg version [with no version number] 91d4d79340SMauro Carvalho Chehab - lk 2.2.6 : sg version 2.1.31 92d4d79340SMauro Carvalho Chehab - lk 2.2.8 : sg version 2.1.32 93d4d79340SMauro Carvalho Chehab - lk 2.2.10 : sg version 2.1.34 [SG_GET_VERSION_NUM ioctl first appeared] 94d4d79340SMauro Carvalho Chehab - lk 2.2.14 : sg version 2.1.36 95d4d79340SMauro Carvalho Chehab - lk 2.2.16 : sg version 2.1.38 96d4d79340SMauro Carvalho Chehab - lk 2.2.17 : sg version 2.1.39 97d4d79340SMauro Carvalho Chehab - lk 2.2.20 : sg version 2.1.40 98d4d79340SMauro Carvalho Chehab 99*8ebddfeeSRandy DunlapThe lk 2.5 development series currently contains sg version 3.5.23 100*8ebddfeeSRandy Dunlapwhich is functionally equivalent to sg version 3.1.22 found in lk 2.4.17. 101d4d79340SMauro Carvalho Chehab 102d4d79340SMauro Carvalho Chehab 103d4d79340SMauro Carvalho ChehabDouglas Gilbert 104d4d79340SMauro Carvalho Chehab 105d4d79340SMauro Carvalho Chehab26th January 2002 106d4d79340SMauro Carvalho Chehab 107d4d79340SMauro Carvalho Chehabdgilbert@interlog.com 108