Provided by: sg3-utils_1.46-3ubuntu4_amd64 bug

NAME

       sg_logs - access log pages with SCSI LOG SENSE command

SYNOPSIS

       sg_logs  [--All]  [--all]  [--brief]  [--filter=FL]  [--hex]  [--list] [--maxlen=LEN] [--name] [--no_inq]
       [--page=PG]  [--paramp=PP]  [--pcb]  [--ppc]  [--pdt=DT]  [--raw]  [--readonly]  [--sp]   [--temperature]
       [--transport] [--vendor=VP] [--verbose] DEVICE

       sg_logs [--brief] [--filter=FL] [--hex] --in=FN [--name] [--pdt=DT] [--raw] [--vendor=VP]

       sg_logs [--control=PC] [--in=FN] [--page=PG] [--raw] [--reset] --select [--sp] [--verbose] DEVICE

       sg_logs [--enumerate] [--filter=FL] [--help] [--vendor=VP] [--version]

       sg_logs  [-a]  [-A]  [-b]  [-D=DT] [-c=PC] [-e] [-f=FL] [-h] [-H] [-i=FN] [-l] [-L] [-m=LEN] [-M=VP] [-n]
       [-p=PG] [-paramp=PP] [-pcb] [-ppc] [-r] [-R] [-select] [-sp] [-t] [-T] [-v] [-V] [-?]  [-x] DEVICE

DESCRIPTION

       This utility sends a SCSI LOG SENSE command to the DEVICE and then outputs the response.  The  LOG  SENSE
       command  is  used  to  fetch  log  pages which, if known, are decoded by default. When the --reset and/or
       --select option is given then a SCSI LOG SELECT command is issued to the  DEVICE.  Alternatively  one  or
       more  log page responses can be in a file read using the --in=FN option; in this case those responses are
       decoded and the DEVICE argument, if given, is ignored.

       In SPC-4 revision 5 a subpage code was introduced to both the LOG SENSE and LOG SELECT  command.  At  the
       same  time  a  page  code field was introduced to the to the LOG SELECT command. The log subpage code can
       range from 0 to 255 (0xff) inclusive. The subpage code value 255 can be thought of as a wildcard.

       The SYNOPSIS section above is divided into five forms. The first form shows the options that can be  used
       to  send  a  LOG SENSE command to the DEVICE and decode its response. The second form fetches data from a
       file (named FN) and decodes it as if it were a response from a LOG SENSE command. The  third  form  shows
       the  options  that  can  be  used to send a LOG SELECT command. The fourth form groups various management
       options.  The last form shows the older, deprecated  command  line  interface  which  is  maintained  for
       backward compatibility.

OPTIONS

       Arguments  to  long  options  are  mandatory  for  short  options  as  well.  The options are arranged in
       alphabetical order based on the long option name.

       -A, --All
              fetch and decode all the log pages and subpages supported by the  DEVICE.   This  requires  a  two
              stage  process:  first  the  "supported log pages and subpages" log page is fetched, then for each
              entry in its response, the corresponding log page (or subpage) is fetched and displayed. Note that
              there are many SCSI devices that do not support LOG SENSE subpages and respond to this option with
              an illegal request sense key (or ignored the subpage field).

       -a, --all
              outputs all the log pages supported by the DEVICE. This requires a two stage  process:  first  the
              "supported  log pages" log page is fetched, then for each entry in its response, the corresponding
              log page is fetched and displayed. When used twice (e.g. '-aa') all log  pages  and  subpages  are
              fetched.

       -b, --brief
              shorten  the amount of output for some log pages. For example the Tape Alert log page only outputs
              parameters whose flags are set when --brief is given.

       -c, --control=PC
              accepts 0, 1, 2 or 3 for the PC argument:
                0 : current threshold values
                1 : current cumulative values
                2 : default threshold values
                3 : default cumulative values
              The default value is 1 (i.e. current cumulative values).

       -e, --enumerate
              this option is used to output information held in this utility's internal tables about  known  log
              pages  including  their  name,  acronym and fields. If given, the DEVICE argument is ignored. When
              given once (e.g. '-e') all known pages are listed, sorted in ascending alphabetical acronym order.
              When given twice, vendor pages are excluded.  When given three times, all known pages are  listed,
              sorted  in  ascending  numeric order listed; when given four times, vendor pages are excluded from
              the numeric order.
              The --filter=FL and --verbose options reduce the output of the enumeration.

       -f, --filter=FL
              FL is either a parameter code when DEVICE is given, or a peripheral device type (pdt)  (or  other)
              if --enumerate is given.
              In  the  parameter  code  case  FL  is a value between 0 and 65535 (0xffff) and only the parameter
              section matching that code is output. If the --hex option is given the log parameter is output  in
              hexadecimal rather than decoding it. If the --hex option is used twice then the leading address on
              each line of hex is removed. If the --raw option is given then the  log  parameter  is  output  in
              binary.  Most  log  pages  contain one or more log parameters. Examples of those that don't follow
              that convention are those pages that list supported log pages (and subpages).
              In the --enumerate case, when FL >= zero it is taken as a pdt value and only log pages  associated
              with  that  pdt  plus generic pages listed in SPC are enumerated. If FL is -1 then the filter does
              nothing which is the same as not giving this option; when FL is -2 then only generic pages  listed
              in  SPC  are  enumerated.  If FL is -10 then only generic direct access like (e.g. disk) pages are
              enumerated. If FL is -11 then only generic tape like pages (e.g. includes ADC) are enumerated.

       -h, --help
              print out the usage message then exit.

       -H, --hex
              The default action is to decode known log page numbers (and subpage numbers) into text. When  this
              option  is used once, the response is output in hexadecimal. When used twice, each line of hex has
              the ASCII equivalent shown to the right. When used three times, the hex has no leading address nor
              trailing ASCII making it suitable to be placed in a file (or piped). That file might later be used
              by another invocation using the --in=FN option.

       -i, --in=FN
              This option may be used in two different contexts. One is with the --select to send a  LOG  SELECT
              command to the given DEVICE; see the LOG SELECT section below.
              The other context is with no DEVICE argument given in which case the contents of FN are decoded as
              if it were the response of a LOG SENSE command (i.e. a  log  page).  For  decoding  the  page  and
              subpage  numbers  are  taken from FN while the peripheral device type is either generic (i.e. from
              SPC) or the value given by --pdt=DT.
              FN is treated as a file name (or '-'  for  stdin)  which  contains  ASCII  hexadecimal  or  binary
              representing  a  log page. The hexadecimal should be arranged as 1 or 2 digits representing a byte
              each of which is whitespace or comma separated. Anything from and including a hash mark to the end
              of line is ignored. If the --raw option is also given then FN is treated as binary.

       -l, --list
              lists  the  names  of  all  logs sense pages supported by this device. This is done by reading the
              "supported log pages" log page. When used twice (e.g. '-ll') lists the names  of  all  logs  sense
              pages  and  subpages supported by this device, excluding pages whose subpage number is 0xff (apart
              from page 0x0,0xff). When used three times then all supported pages and subpages reported  by  the
              device  are list. So the page/subpage names and not thrie content is shown with this option. There
              is a list of common log page codes below.

       -m, --maxlen=LEN
              sets the "allocation length" field in the LOG SENSE cdb. The is the maximum length in  bytes  that
              the  response  will  be.  Without this option (or LEN equal to 0) this utility first fetches the 4
              byte response then does a second access with the length indicated in the first (4 byte)  response.
              Negative  values  and 1 for LEN are not accepted. LEN cannot exceed 65535 (0xffff).  Responses can
              be quite large (e.g. the background scan results log page) and this option can be  used  to  limit
              the amount of information returned.

       -n, --name
              decode  some log pages into 'name=value' entries, one per line. The name contains no space and may
              be abbreviated and the value is decimal unless prefixed by '0x'. Nesting is indicated  by  leading
              spaces. This form is meant to be relatively easy to parse.

       -x, --no_inq
              suppresses  the output of information obtained from an initial call to the INQUIRY command for the
              standard response. The default (assuming some other options that suppress this output are also not
              given) is to output several device identification strings.
              If  this  option  is  given twice (or more) then no INQUIRY command is sent hence there will be no
              device identification string output either. Also the peripheral device type (PDT) field  will  not
              be  obtained  so  this  utility  will not be able to differentiate between some log pages that are
              device dependent. It will assume a PDT of 0 (i.e. a disk).

       -O, --old
              Switch to older style options. Please use as first option.

       -p, --page=PG
              log page name/number to access. PG is either an acronym, a page number, or a page, subpage  number
              pair.  Available acronyms can be listed with the --enumerate option. Page (0 to 63) and subpage (0
              to 255) numbers are comma separated. They are decimal unless a hexadecimal indication is given.  A
              hexadecimal number can be specified by a leading "0x" or a trailing "h".
              A  few  acronyms  specify a range of subpage values in which case the acronym may be followed by a
              comma then a subpage number. This method can also be used to fetch the Supported subpages log page
              (e.g. --page=temp,0xff).

       -P, --paramp=PP
              PP is the parameter pointer value to place in a field of that name in the LOG SENSE cdb. A decimal
              number in the range 0 to 65535 (0xffff) is expected. When a value greater  than  0  is  given  the
              --ppc option should be selected. The default value is 0.

       -q, --pcb
              show Parameter Control Byte settings (only relevant when log parameters being output in ASCII).

       -Q, --ppc
              sets  the  Parameter  Pointer Control (PPC) bit in the LOG SENSE cdb. Default is 0 (i.e. cleared).
              This bit was made obsolete in SPC-4 revision 18.

       -D, --pdt=DT
              DT is the peripheral device type that is used when it is not available from the DEVICE. There  are
              two  main  cases  of  this:  with  the  --pdt=DT without a DEVICE and when --no_inq is used with a
              DEVICE.

       -r, --raw
              output the response in binary to stdout. Error messages and warnings are output to stderr.
              This option may also be given together  with  --in=FN  in  which  case  the  contents  of  FN  are
              interpreted as binary data (and the response is decoded as normal, not dumped as binary).

       -R, --readonly
              open  the DEVICE read-only (e.g. in Unix with the O_RDONLY flag). The default action is to try and
              open DEVICE read-write then if that fails try  to  open  again  with  read-only.  However  when  a
              read-write  open  succeeds there may still be unwanted actions on the close (e.g. some OSes try to
              do a SYNCHRONIZE CACHE command). So this option forces a read-only open on DEVICE and if it fails,
              this utility will exit. Note that options like --select most likely need a read-write open.

       -R, --reset
              use SCSI LOG SELECT command (with the PCR bit set) to reset the all log pages (or the given page).
              Exactly what is reset depends on the accompanying SP bit (i.e. --sp option which  defaults  to  0)
              and  the  PC  ("page  control")  value  (which  defaults  to 1). Supplying this option implies the
              --select option as well. This option seems to clear error counter log pages but leaves pages  like
              self-test  results, start-stop cycle counter and temperature log pages unaffected. This option may
              be required to clear log pages if a counter reaches its maximum value since the log page in  which
              the  counter  is  found will remain "stuck" at its maximum value until some user interaction (e.g.
              calling sg_logs with this option).

       -S, --select
              use a LOG SELECT command. The default action (i.e. when neither this option nor --reset is  given)
              is to do a LOG SENSE command. See the LOG SELECT section.

       -s, --sp
              sets  the  Saving  Parameters  (SP)  bit. Default is 0 (i.e. cleared). When set this instructs the
              device to store the current log page parameters (as indicated by the DS and TSD  parameter  codes)
              in  some  non-volatile  location.  Hence the log parameters will be preserved across power cycles.
              This option is typically not needed, especially if the GLTSD flag is clear  in  the  control  mode
              page as this instructs the device to periodically save all saveable log parameters to non-volatile
              locations.

       -t, --temperature
              outputs the temperature. First looks in the temperature log page and  if  that  is  not  available
              tries  the  Informational  Exceptions  log  page  which  may  also  have  the  current temperature
              (especially on older disks).

       -T, --transport
              outputs the transport ('Protocol specific port') log page. Equivalent to setting '--page=18h'.

       -M, --vendor=VP
              where VP is a vendor/manufacturer (e.g. "sea" for Seagate) or product (group) acronym (e.g. "lto5"
              for  the 5th generation LTO (tape) consortium). Either the whole log page is vendor specific (e.g.
              page numbers 0x30 to 0x3f) or part of a T10 defined log page  is  vendor  specific.   For  example
              SPC-5  defines  parameter code 0x0 of page 0x2f (the Informational Exceptions log page) and states
              that the remaining parameter codes (i.e. 0x1 to 0xffff) are vendor specific. Using a VP  of  "xxx"
              will list the available acronyms.
              If this option is used with --page=PG and PG is an acronym then this option is ignored. If PG is a
              number (e.g. 0xc0) then VP is used to choose the which vendor specific  page  (e.g.  sharing  page
              number 0xc0) to decode.

       -v, --verbose
              increase  level  of  verbosity.  When  used with --enumerate, in the list of known log page names,
              those that have no associated decode logic are followed by "[hex only]".

       -V, --version
              print out version string then exit.

LOG SELECT

       The SCSI LOG SELECT command can be used to reset certain parameters to  vendor  specific  defaults,  save
       them  to  non-volatile  storage  (i.e.  the media), or supply new page contents. This command has changed
       between SPC-3 and SPC-4 with the addition of the Page and Subpage Code fields which can only be non  zero
       when the Parameter list length is zero.

       The  --select (or --reset) option is required to issue a LOG SELECT command. If the --in=FN option is not
       given (or FN is effectively empty) then the Parameter list length field is set to zero.  If  the  --in=FN
       option  is  is  given  then  its decoded data is placed in the data-out buffer and its length in bytes is
       placed in the Parameter list length field.

       Other options that are active with the LOG SELECT command are --control=PC, --reset (which sets  the  PCR
       bit) and --sp.

APPLICATION CLIENT

       This  is  the  name  of a log page that acts as a container for data provided by the user. An application
       client is a SCSI term for the program that issues commands to a SCSI initiator (often known as a Host Bus
       Adapter (HBA)). So, for example, this utility is a SCSI application client.

       The  Application  Client  log page has 64 log parameters with parameters codes 0 to 63. Each can hold 252
       bytes of user binary data. That 252 bytes (or less) of user data, with a 4 byte prefix (for  a  total  of
       256 bytes) can be provided with the --in=FN option. A typical prefix would be '0,n,83,fc'. The "n" is the
       parameter code in hex so the last log parameter would be '0,3f,83,fc'. That log parameter could  be  read
       back at some later time with '--page=0xf --filter=0x<n>'.

NOTES

       This utility will usually do a double fetch of log pages with the SCSI LOG SENSE command. The first fetch
       requests a 4 byte response (i.e. place 4 in the "allocation length" field in the cdb). From that response
       it can calculate the actual length of the response which is what it asks for on the second fetch. This is
       typical practice in SCSI and guaranteed to work in  the  standards.  However  some  older  devices  don't
       comply. For those devices using the --maxlen=LEN option will do a single fetch.  A value of 252 should be
       a safe starting point.

       Various log pages hold information error rates, device temperature, start stop cycles  since  the  device
       was produced and the results of the last 20 self tests. Self tests can be initiated by the sg_senddiag(8)
       utility.  The smartmontools package provides much of  the  information  found  with  sg_logs  in  a  form
       suitable for monitoring the health of SCSI disks and tape drives.

       The simplest way to find which log pages can be decoded by this utility is to use the --enumerate option.
       Some page names are known but there is no decode logic; such cases have "[hex only]" after the  log  page
       name when the --verbose option is given with --enumerate.

EXIT STATUS

       The exit status of sg_logs is 0 when it is successful. Otherwise see the sg3_utils(8) man page.

OLDER COMMAND LINE OPTIONS

       The  options  in  this  section were the only ones available prior to sg3_utils version 1.23 . Since then
       this utility defaults to the newer command line options which can be overridden by using --old (or -O) as
       the  first  option. See the ENVIRONMENT VARIABLES section for another way to force the use of these older
       command line options.

       Options with arguments or with two or more letters can have an extra '-'  prepended.  For  example:  both
       '-pcb' and '--pcb' are acceptable.

       -a     outputs all the log pages supported by the device.  Equivalent to --all in the main description.

       -A     outputs  all  the  log pages and subpages supported by the device.  Equivalent to '--all --all' in
              the main description.

       -c=PC  Equivalent to --control=PC in the main description.

       -e     enumerate internal tables to show information about known log pages.  Equivalent to --enumerate in
              the main description.

       -h     suppresses decoding of known log sense pages and prints out the response in hex instead.

       -i=FN  FN  is  treated  as a file name (or '-' for stdin) which contains ASCII hexadecimal representing a
              log page that will be sent as parameter data of a LOG SELECT command. See the LOG SELECT section.

       -H     same action as '-h' in this section and equivalent to --hex in the main description.

       -l     lists the names of all logs sense pages supported by this device.  Equivalent  to  --list  in  the
              main description.

       -L     lists  the  names  of  all  logs  sense pages and subpages supported by this device. Equivalent to
              '--list --list' in the main description.

       -m=LEN request only LEN bytes of response data. Default  is  0  which  is  interpreted  as  all  that  is
              available.  LEN  is  decimal  unless  it  has  a  leading  '0x'  or  trailing  'h'.  Equivalent to
              --maxlen=LEN in the main description.

       -M=VP  Equivalent to --vendor=VP in the main description.

       -n     Equivalent to --name in the main description.

       -N, --new
              Switch to the newer style options.

       -p=PG  log page code to access. PG is either an  acronym,  a  page  number,  or  a  page,  subpage  pair.
              Available acronyms can be listed with the --enumerate option. Page (0 to 3f) and subpage (0 to ff)
              numbers are comma separated. The numbers are assumed to be hexadecimal.

       -paramp=PP
              PP is the parameter pointer value (in hex) to place in command.  Should be a number between 0  and
              ffff inclusive.

       -pcb   show Parameter Control Byte settings (only relevant when log parameters being output in ASCII).

       -ppc   sets the Parameter Pointer Control (PPC) bit. Default is 0 (i.e. cleared).

       -r     use  SCSI  LOG  SELECT  command  (PCR  bit  set)  to  reset the all log pages (or the given page).
              Equivalent to --reset in the main description.

       -R     Equivalent to --readonly in the main description.

       -select
              use a LOG SELECT command. Equivalent to --select in the main description.

       -sp    sets the Saving Parameters (SP) bit. Default is 0 (i.e. cleared).  Equivalent to --sp in the  main
              description.

       -t     outputs the temperature. Equivalent to --temperature in the main description.

       -T     outputs  the  transport ('Protocol specific port') log page. Equivalent to --transport in the main
              description.

       -v     increase level of verbosity.

       -V     print out version string then exit.

       -x     suppress the INQUIRY command. Equivalent to --no_inq in the main description.

       -?     output usage message then exit.

ENVIRONMENT VARIABLES

       Since sg3_utils version 1.23 the environment variable SG3_UTILS_OLD_OPTS can be given. When it is present
       this  utility will expect the older command line options. So the presence of this environment variable is
       equivalent to using --old (or -O) as the first command line option.

AUTHOR

       Written by Douglas Gilbert

REPORTING BUGS

       Report bugs to <dgilbert at interlog dot com>.

COPYRIGHT

       Copyright © 2002-2020 Douglas Gilbert
       This software is distributed under the GPL version 2. There is NO warranty; not even for  MERCHANTABILITY
       or FITNESS FOR A PARTICULAR PURPOSE.

SEE ALSO

       smartctl(smartmontools), sg_senddiag(8)