man pages section 1M: System Administration Commands

Exit Print View

Updated: July 2014

sg_decode_sense (1m)


sg_decode_sense - decode SCSI sense data


sg_decode_sense  [--binary=FN]  [--file=FN] [--help] [--hex]
[--nospace]    [--status=SS]     [--verbose]     [--version]
[--write=WFN] [H1 H2 H3 ...]


SG3_UTILS                                      SG_DECODE_SENSE(8)

     sg_decode_sense - decode SCSI sense data

     sg_decode_sense  [--binary=FN]  [--file=FN] [--help] [--hex]
     [--nospace]    [--status=SS]     [--verbose]     [--version]
     [--write=WFN] [H1 H2 H3 ...]

     This  utility  takes  SCSI  sense  data  in  binary  or as a
     sequence of ASCII hexadecimal bytes and decodes it. The pri-
     mary  reference  for  the  decoding  is  SPC-3  ANSI  INCITS
     408-2005 and the most recent draft SPC-4 revision  29  which
     can  be  found  at and other locations on
     the internet.

     SCSI sense data is often found in  kernel  log  files  as  a
     result of something going wrong but may just be informative.
     It is often shown as a sequence of hexadecimal bytes, start-
     ing  with  70, 71, 72, 73, f0 or f1.  Sense data could be up
     to 252 bytes long but typically is much shorter  than  that,
     18  bytes  long is often seen and is usually associated with
     the older "fixed" format sense data.

     The sense data can be provided on the command line or  in  a
     file.  If given on the command line the sense data should be
     a sequence of hexadecimal bytes separated by space. Alterna-
     tively  a  file  can be given with the contents in binary or
     ASCII hexadecimal bytes. The latter form can contain several
     lines  each  with  none, one or more ASCII hexadecimal bytes
     separated by space (comma  or  tab).  The  hash  symbol  may
     appear  and it and the rest of the line is ignored making it
     useful for comments.

     Arguments to long options are mandatory for short options as

     -b, --binary=FN
          the sense data is read in binary from a file called FN.

     -h, --help
          output the usage message then exit.

     -H, --hex
          this option is used in conjunction with --write=WFN  in
          order  to  change the output written to WFN to lines of
          ASCII hex bytes suitable for  a  C  language  compiler.
          Each line contains up to 16 bytes (e.g. a line starting
          with "0x3b,0x07,0x00,0xff").

     -f, --file=FN

sg3_utils-1.32       Last change: March 2011                    1

SG3_UTILS                                      SG_DECODE_SENSE(8)

          the sense data is read in ASCII hexadecimal from a file
          called  FN.  The sense data should appear as a sequence
          of bytes separated by space,  comma,  tab  or  newline.
          Everything  from and including a hash symbol to the end
          of that line is ignored. If --nospace is  set  then  no
          separator  is  required  between  the ASCII hexadecimal
          digits in FN with bytes decoded  from  pairs  of  ASCII
          hexadecimal digits.

     -n, --nospace
          expect  ASCII hexadecimal to be a string of hexadecimal
          digits with no spaces between them. Bytes  are  decoded
          by  taking two hexadecimal digits at a time, so an even
          number of digits is expected. The string of hexadecimal
          digits  may  be  on  the command line (replacing "H1 H2
          H3") or spread across multiple lines the  FN  given  to

     -s, --status=SS
          where SS is a SCSI status byte value, given in hexadec-
          imal. The SCSI status byte is related to  but  distinct
          from sense data.

     -v, --verbose
          increase the degree of verbosity (debug messages).

     -V, --version
          output version string then exit.

     -w, --write=WFN
          writes the sense data out to a file called WFN. If nec-
          essary WFN is created. If WFN exists then it  is  trun-
          cated  prior  to  writing  the sense data to it. If the
          --hex option is also given then ASCII hex is written to
          WFN  (see  the  --hex  option  description);  otherwise
          binary is written to WFN. This option is a  convenience
          and  may be helpful in converting the ASCII hexadecimal
          representation of sense data (or  anything  else)  into
          the equivalent binary or a compilable ASCII hex form.

     See   attributes(5)   for   descriptions  of  the  following

     |Availability   | system/storage/sg3_utils |
     |Stability      | Uncommitted              |

sg3_utils-1.32       Last change: March 2011                    2

SG3_UTILS                                      SG_DECODE_SENSE(8)

     Unlike most utilities in this package, this utility does not
     access a SCSI device (logical unit). This utility accesses a
     library associated with this package. Amongst  other  things
     the library decodes SCSI sense data.

     Sense data is often printed out in kernel logs and sometimes
     on the command line when verbose or debug flags  are  given.
     It  will  be  at least 8 bytes long, often 18 bytes long but
     may be longer. A sense data string might look like this:

     f0 00 03 00 00 12 34 0a  00 00 00 00 11 00 00 00
     00 00

     Cut and paste it after the sg_decode_sense command:

       sg_decode_sense f0 00 03 00 00 12 34 0a 00 00 00 00 11  00
     00 00 00 00

     and for this sense data the output should look like this:

      Fixed format, current;  Sense key: Medium Error
      Additional sense: Unrecovered read error
       Info fld=0x1234 [4660]

     For  a  medium  error  the  Info  field is the logical block
     address (LBA) of the lowest numbered block that the  associ-
     ated SCSI command was not able to read (verify or write).

     The  exit status of sg_decode_sense is 0 when it is success-
     ful. Otherwise see the sg3_utils(8) man page.

     Written by Douglas Gilbert.

     Report bugs to <dgilbert at interlog dot com>.

     Copyright (C) 2010-2011 Douglas Gilbert
     This software is distributed under a FreeBSD license.  There
     is  NO warranty; not even for MERCHANTABILITY or FITNESS FOR


     This  software  was   built   from   source   available   at    The  original

sg3_utils-1.32       Last change: March 2011                    3

SG3_UTILS                                      SG_DECODE_SENSE(8)

     community       source       was       downloaded       from

     Further  information about this software can be found on the
     open        source        community        website        at

sg3_utils-1.32       Last change: March 2011                    4