| .TH SGINFO "8" "January 2014" "sg3_utils\-1.38" SG3_UTILS |
| .SH NAME |
| sginfo \- access mode page information for a SCSI (or ATAPI) device |
| .SH SYNOPSIS |
| .B sginfo |
| [\fIOPTIONS\fR] |
| [\fIDEVICE\fR] |
| [\fIREPLACEMENT_PARAMETERS\fR] |
| .SH DESCRIPTION |
| .\" Add any additional description here |
| .PP |
| sginfo is a port of the Linux |
| .B scsiinfo |
| program by Eric Youngdale. It uses SCSI generic (sg) devices; however in |
| some cases the high level device name (i.e. sd, sr, st, osst, or hd) can |
| also be used. The primary role of this program is to access mode page |
| information. If permitted, mode page information can be altered. In |
| addition information from the INQUIRY and READ DEFECTS commands are also |
| available. |
| .PP |
| This utility is in legacy mode, only obvious bugs will be fixed. Options |
| like \fI\-l\fR (to list devices) are broken in recent versions of |
| Linux (e.g. 2.6 series and later); the lsscsi(8) utility can be used |
| instead. Also mode pages are not being updated as https://www.t10.org |
| adds and modifies mode page fields. Those interested in SCSI mode pages |
| may find the |
| .B sdparm |
| utility more up to date and easier use, especially for changing parameters. |
| .PP |
| Four sets of values are maintained by a SCSI device for each mode |
| page: current (active), default (manufacturer's supplied values), |
| saved (values that are retained if the SCSI device is powered down), |
| and changeable (mask indicating those values that can be changed). |
| By default when a mode page is displayed the current values are |
| shown. This can be overridden by "\-M" (defaults), "\-S" (saved) |
| or "\-m" (modifiable (i.e. changeable)). |
| .PP |
| Many mode pages are decoded: for disks (see SBC\-2), for CD/DVDs (see |
| MMC\-2/3/4/5), for tapes (see SSC\-2) and for enclosures (see SES\-2). |
| Some mode pages common to all SCSI peripheral device types are defined |
| in SPC\-4 (primary commands). A decoded mode page has its field names |
| in the first column and the corresponding value in the second column. |
| A "hex" mode page (and subpage) has its byte position in the first |
| column (in hex and starting at 0x2) and the corresponding hex value |
| in the second column. Decoded pages can be viewed with the '\-t' option |
| or with a specific option (e.g. 'c' for the caching mode page). |
| Naturally decoded pages must be supplied by the \fIDEVICE\fR and |
| recognised by this program. If supported by the device, decoded pages |
| may be modified. All mode pages (and subpages) that the device supports |
| can be viewed in hex (and potentially modified) via the "\-u" option |
| .PP |
| If no options are given that will cause mode page(s) or INQUIRY data |
| to be printed out, then a brief INQUIRY response is output. This |
| includes the vendor, product and revision level of the device. |
| .SH OPTIONS |
| .TP |
| \fB\-6\fR |
| Perform 6 byte MODE SENSE and MODE SELECT commands; by default the |
| 10 byte variants are used. |
| .TP |
| \fB\-a\fR |
| Display some INQUIRY data and the unit serial number followed by |
| all mode pages reported by the device. It is similar to |
| the '\-t 0x3f' option. If the mode page is known then it is output |
| in decoded form otherwise it is output in hexadecimal. |
| .TP |
| \fB\-A\fR |
| Display some INQUIRY data and the unit serial number followed by |
| all mode pages and all mode subpages reported by the device. |
| It is similar to the '\-t 0x3f,0xff' option. If a mode (sub)page |
| is known then it is output in decoded form otherwise it is output in |
| hexadecimal. |
| .TP |
| \fB\-c\fR |
| Access information in the Caching mode page. |
| .TP |
| \fB\-C\fR |
| Access information in the Control mode Page. |
| .TP |
| \fB\-d\fR |
| Display defect lists (default format: index). |
| .TP |
| \fB\-D\fR |
| Access information in the Disconnect\-Reconnect mode page. |
| .TP |
| \fB\-e\fR |
| Access information in the Error Recovery mode page. |
| .TP |
| \fB\-E\fR |
| Access information in the Control Extension mode page. |
| .TP |
| \fB\-f\fR |
| Access information in the Format Device mode page. |
| .TP |
| \fB\-F\fR\fIarg\fR |
| Format of the defect lists: |
| \-Flogical \- logical block addresses (32 bit) |
| \-Flba64 \- logical block addresses (64 bit) |
| \-Fphysical \- physical blocks |
| \-Findex \- defect bytes from index |
| \-Fhead \- sort by head |
| .br |
| Used in conjunction with "\-d" or "\-G". If a format is not given "index" is |
| assumed. |
| .TP |
| \fB\-g\fR |
| Access information in the Rigid Disk Drive Geometry mode page. |
| .TP |
| \fB\-G\fR |
| Display grown defect list (default format: index). |
| .TP |
| \fB\-i\fR |
| Display the response to a standard INQUIRY command. |
| .TP |
| \fB\-I\fR |
| Access the Informational Exceptions mode page. |
| .TP |
| \fB\-l\fR |
| Deprecated. Only use in old versions of Linux (e.g. 2.4 and |
| earlier). Please use lsscsi(8) in the Linux 2.6 series and |
| later. List known SCSI devices on the system. |
| .TP |
| \fB\-n\fR |
| Access information in the Notch and Partition mode page. |
| .TP |
| \fB\-N\fR |
| Negate (i.e. stop) mode page changes being placed in the "saved" |
| page (by default changes go to the current and the saved page). |
| Only active when used together with '\-R'. |
| .TP |
| \fB\-P\fR |
| Access information in the Power Condition mode page. |
| .TP |
| \fB\-r\fR |
| Display all raw (or primary) SCSI device names visible in the /dev |
| directory. Examples are /dev/sda, /dev/st1 and /dev/scd2. Does not |
| list sg device names so devices such as a SCSI enclosure which only |
| have an sg device name are not listed. |
| .TP |
| \fB\-s\fR |
| Display information in the unit serial number page which is a |
| INQUIRY command variant. |
| .TP |
| \fB\-t\fR \fIPN\fR[,\fISPN\fR] |
| Display information from mode page number \fIPN\fR (and optionally sub |
| page number \fISPN\fR) in decoded format (if known, otherwise in hex form). |
| \fIPN\fR is a mode page number in a decimal number from 0 to 63 inclusive. |
| \fISPN\fR is the mode subpage number and is assumed to be 0 if not given. |
| \fISPN\fR is a decimal number from 1 to 255 inclusive. A page number of 63 |
| returns all pages supported by the device in ascending order except for |
| page 0 which, if present, is last. Page 0 is vendor specific and not |
| necessarily in mode page format. Alternatively hex values can be given for |
| both \fIPN\fR and \fISPN\fR (both prefixed by '0x'). |
| .TP |
| \fB\-T\fR |
| Trace commands to obtain more verbose output (for debugging). When used once |
| SCSI commands are shown (in hex) and any errors from these SCSI commands are |
| spelt out (i.e. with a decoded and raw sense buffer). When used twice, the |
| additional data sent with mode select and the response from mode sense are |
| shown (in hex). |
| .TP |
| \fB\-u\fR \fIPN\fR[,\fISPN\fR] |
| Display information from mode page number \fIPN\fR (and optionally \fISPN\fR) |
| in hex form. \fIPN\fR is a mode page number in a decimal number from 0 to 63 |
| inclusive. \fISPN\fR is the mode subpage number and is assumed to be 0 if |
| not given. \fISPN\fR is a decimal number from 1 to 255 inclusive. A page |
| number of 63 returns all pages supported by the device in ascending order |
| except for page 0 which, if present, is last. Page 0 is vendor specific and |
| not necessarily in mode page format. Alternatively hex values can be given |
| for both \fIPN\fR and \fISPN\fR (both prefixed by '0x'). For example 63 and |
| 0x3f are equivalent. |
| .TP |
| \fB\-v\fR |
| Display version string then exit. [N.B. This option increases verbosity for |
| most other utilities in this package as outlined in 'man 8 sg3_utils'. |
| This odd usage is for backward compatibility with the scsiinfo utility.] |
| .TP |
| \fB\-V\fR |
| Access information in the Verify Error Recovery mode page. [N.B. This |
| option prints the version string then exits in most other utilities in |
| this package as outlined in 'man 8 sg3_utils'. This odd usage is for |
| backward compatibility with the scsiinfo utility.] |
| .TP |
| \fB\-z\fR |
| do a single fetch for mode pages (over\-estimating the expected length |
| of the returned response). The default action is to do a double |
| fetch, the first fetch is to find the response length that could be |
| returned. Devices that closely adhere to SCSI standards should not |
| require this option, some real world devices do require it. |
| .SH ADVANCED OPTIONS |
| Only one of the following three options can be specified. |
| None of these three implies the current values are returned. |
| .TP |
| \fB\-m\fR |
| Display modifiable fields instead of current values |
| .TP |
| \fB\-M\fR |
| Display manufacturer's defaults instead of current values |
| .TP |
| \fB\-S\fR |
| Display saved defaults instead of current values |
| .PP |
| The following are advanced options, not generally suited for most users: |
| .TP |
| \fB\-X\fR |
| Display output values in a list. Make them suitable for editing and |
| being given back to the '\-R' (replace command). |
| .TP |
| \fB\-R\fR |
| Replace parameters \- best used with \-X (expert use only) |
| .SH CHANGING MODE PAGE PARAMETERS |
| Firstly you should know what you are doing before changing existing |
| parameters. Taking the control page as an example, first list it out |
| normally (e.g. "sginfo \-C /dev/sda") and |
| decide which parameter is to be changed (note its position relative |
| to the other lines output). Then execute the same sginfo command with |
| the "\-X" option added; this will output the parameter values in a |
| single row in the same relative positions as the previous command. Now |
| execute "sginfo \-CXR /dev/sda ..." with the "..." replaced by the |
| single row of values output by the previous command, with the relevant |
| parameter changed. Here is a simplified example: |
| .PP |
| $ sginfo \-C /dev/sda |
| .br |
| Control mode page (0xa) |
| .br |
| \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- |
| .br |
| TST 0 |
| .br |
| D_SENSE 0 |
| .br |
| GLTSD 1 |
| .br |
| RLEC 0 |
| .PP |
| [Actually the Control page has more parameters that shown above.] Next |
| output those parameters in single line form: |
| .PP |
| $ sginfo \-CX /dev/sda |
| .br |
| 0 0 1 0 |
| .PP |
| Let us assume that the GLTSD bit is to be cleared. The command that |
| will clear it is: |
| .PP |
| $ sginfo \-CXR /dev/sda 0 0 0 0 |
| .PP |
| The same number of parameters output by the "\-CX" command needs to be |
| placed at the end of the "\-CXR" command line (after the device name). |
| Now check that the change took effect: |
| .PP |
| $ sginfo \-C /dev/sda |
| .br |
| Control mode page (0xa) |
| .br |
| \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- |
| .br |
| TST 0 |
| .br |
| D_SENSE 0 |
| .br |
| GLTSD 0 |
| .br |
| RLEC 0 |
| .PP |
| When a mode page is "replaced" the default action is to change both the |
| current page and the saved page. [For some reason versions of sginfo and |
| scsiinfo prior to 2.0 did not change the "saved" page.] To change only |
| the current mode page but not the corresponding saved page use the "\-N" |
| option. |
| .PP |
| .SH GENERATING SCRIPT FILES AND HEX PAGES |
| The "\-aX" or "\-AX" option generates output suitable for a script file. |
| Mode pages are output in list format (after the INQUIRY and serial |
| number) one page per line. To facilitate running the output as (part |
| of) a script file to assert chosen mode page values, each line is |
| prefixed by "sginfo \-t \fIPN\fR[,\fISPN\fR] \-XR ". When such a script |
| file is run, it will have the effect of re\-asserting the mode |
| page values to what they were when the "\-aX" generated the output. |
| .PP |
| All mode pages (and subpages) supported by the device can be accessed via |
| the \-t and \-u options. To see all |
| mode pages supported by the device use "\-u 63". [To see all mode pages |
| and all subpages use "\-u 63,255".] To list the control mode page in |
| hex (mode page index in the first column and the corresponding byte |
| value in the second column) use "\-u 0xa". Mode pages (subpage code == 0) |
| start at index position 2 while subpages start at index position 4. |
| If the "\-Xu ..." option is used then a list a hex values each value |
| prefixed by "@" is output. Mode (sub)page values can then be modified |
| with the "\-RXu ..." option. |
| .PP |
| .SH RESTRICTIONS |
| The SCSI MODE SENSE command yields block descriptors as well as a mode |
| page(s). This utility ignores block descriptors and does not display |
| them. The "disable block descriptor" switch (DBD) in the MODE SENSE command |
| is not set since some devices yield errors when it is set. When mode page |
| values are being changed (the "\-R" option), the same block descriptor |
| obtained by reading the mode page (i.e. via a MODE SENSE command) is sent |
| back when the mode page is written (i.e. via a MODE SELECT command). |
| .PP |
| .SH REFERENCES |
| SCSI (draft) standards can be found at https://www.t10.org . The relevant |
| documents are SPC\-4 (mode pages common to all device types), |
| SBC\-2 (direct access devices [e.g. disks]), MMC\-4 (CDs and DVDs) and |
| SSC\-2 (tapes). |
| .PP |
| .SH AUTHORS |
| Written by Eric Youngdale, Michael Weller, Douglas Gilbert, Kurt Garloff, |
| Thomas Steudten |
| .PP |
| .SH HISTORY |
| scsiinfo version 1.0 was released by Eric Youngdale on 1st November 1993. |
| The most recent version of scsiinfo is version 1.7 with the last patches |
| by Michael Weller. sginfo is derived from scsiinfo and uses the sg |
| interface to get around the 4 KB buffer limit in scsiinfo that cramped |
| the display of defect lists especially. sginfo was written by Douglas |
| Gilbert with patches from Kurt Garloff. This manpage corresponds with |
| version 2.25 of sginfo. |
| .PP |
| This software is distributed under the GPL version 2. There is NO |
| warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
| .SH "SEE ALSO" |
| .B lsscsi(lsscsi), scsiinfo(internet); sg_modes, sg_inq, sg_vpd (sg3_utils), |
| .B sdparm(sdparm) |