sdparm

Content

 

Data

license:
Version number: 1.10 20160222 [svn: r279] (in Debian 10)
Developer / owner:

Short description:

Manual page and help for the sdparm linux command. The sdparm command is a tool for querying and configuring the status and properties of SCSI devices.

To use this command, you must install sdparm package.

sudo apt-get install sdparm

 

 

Man page output

man sdparm
SDPARM(8)                                     SDPARM                                    SDPARM(8)

NAME
       sdparm - access SCSI modes pages; read VPD pages; send simple SCSI commands.

SYNOPSIS
       sdparm   [--all]   [--dbd]   [--flexible]   [--get=STR]   [--hex]   [--long]  [--num-desc]
       [--page=PG[,SPG]] [--quiet] [--readonly] [--six]  [--transport=TN]  [--vendor=VN]  [--ver‐
       bose] DEVICE [DEVICE...]

       sdparm  [--clear=STR]  [--defaults]  [--dummy]  [--flexible]  [--page=PG[,SPG]]  [--quiet]
       [--readonly] [--save] [--set=STR] [--six] [--transport=TN] [--vendor=VN]  [--verbose]  DE‐
       VICE [DEVICE...]

       sdparm --command=CMD [--hex] [--readonly] [--verbose] DEVICE [DEVICE...]

       sdparm  --inquiry  [--all]  [--flexible]  [--hex] [--num-desc] [--page=PG[,SPG]] [--quiet]
       [--readonly] [--transport=TN] [--vendor=VN] [--verbose] DEVICE [DEVICE...]

       sdparm --enumerate [--all] [--inquiry] [--long] [--page=PG[,SPG]] [--transport=TN] [--ven‐
       dor=VN]

       sdparm  --inhex=FN  [--all]  [--flexible]  [--hex] [--inquiry] [--long] [--pdt=DT] [--raw]
       [--six] [--transport=TN] [--vendor=VN]

       sdparm --wscan [--verbose]

       sdparm [--help] [--version]

DESCRIPTION
       This utility fetches and potentially changes SCSI device (e.g.  disk) mode pages.  Inquiry
       data  including  Vital Product Data (VPD) pages can also be displayed. Commands associated
       with starting and stopping the medium; loading and unloading the medium; and other  house‐
       keeping function may also be issued by this utility.

       The  first  invocation  shown  in the synopsis is for accessing (reading) mode page fields
       held on the DEVICE. The second form is for changing mode page fields held on  the  DEVICE.
       The  third  form  is  for  executing some simple SCSI commands. The fourth form (i.e.  the
       '--inquiry ... DEVICE' form) is for fetching and decoding VPD pages from the given DEVICE.
       The  --enumerate  form is for listing out mode or VPD field data held by this utility (and
       if a DEVICE is given then it is ignored). The --inhex=FN form decodes mode or VPD response
       data  provided  in the named file (or from stdin if FN is '-'); that data may either be in
       hexadecimal or binary. The second last form is for Windows only and  lists  the  available
       storage device names; see the OPTIONS entry for --wscan. The final form is to provide com‐
       mand line help or the version number (and date).

       If no options (other than DEVICE) are given then a selection of common  mode  page  fields
       for  that  device are listed. If the --long option is also given then a description of the
       fields is placed on the right of each line. If the --all option is given  then  all  known
       mode  page  fields for that device are listed. Individual fields can be displayed with the
       --get=STR option (e.g. '--get=WCE' to fetch  the  state  of  the  Writeback  Cache  Enable
       field).

       This  utility completes with an exit status of 0 when successful. For other values see the
       EXIT STATUS section below.

       One or more DEVICE arguments can be given. The utility will essentially  apply  the  given
       options  to each DEVICE in the list.  If an error is detected, it is noted and the utility
       continues.  Error value 5 (file open or close problem) is treated as lower  priority  when
       other  errors are detected. The exit status is the most recently detected error value (ex‐
       cluding error value 5 if other errors have been detected). If all actions succeed the exit
       status is zero.

       By default this utility shows mode pages that are common to all transport protocols. These
       are termed as "generic" mode pages.  If there is no match on a generic mode page  name  or
       field then those pages specific to the SAS transport are checked.  Transport protocol spe‐
       cific mode pages are selected with the --transport=TN option. See  the  TRANSPORT  section
       below.  Vendor specific mode pages are selected with the --vendor=VN option.  See the VEN‐
       DORS section below.

       Although originally for SCSI disks (or storage devices that  appear  to  the  OS  as  SCSI
       disks) many of the mode pages are for other SCSI device types.  These include CD/DVD play‐
       ers that use the ATAPI (or any other) transport, SCSI tapes drives and SCSI enclosures.

       When the --inquiry option is given without a page number then  the  Device  Identification
       VPD page (page number 0x83) is requested and if found it is decoded and output. If no page
       number is given and the --all option is given then a list of VPD page names (but not their
       contents) supported by the DEVICE is output. When both the --inquiry and --page=PG options
       are given then the VPD page can be specified as an abbreviation (e.g. "sp"  for  the  SCSI
       ports  VPD page) or numerically (e.g. "0x88"). If a VPD page is returned by the DEVICE but
       sdparm cannot decode it or the --hex option is given then it is output in hex.

OPTIONS
       Mandatory arguments to long options are mandatory for short options as well.  If an option
       takes  a numeric argument then that argument is assumed to be decimal unless otherwise in‐
       dicated (e.g. with a leading "0x" or a trailing "h"). The options are in alphabetical  or‐
       der, based on the long option name.

       -a, --all
              output all recognized fields for the device type (e.g. disk) of the DEVICE. Without
              this option (or the --page=PG[,SPG] option) the default action is to output a rela‐
              tively  small  number of commonly used fields from different pages. When a specific
              (mode) page number is given with the --page=PG[,SPG] option then all the fields  of
              that  page  are  output  (irrespective of the setting of this option). For this op‐
              tion's action when used with the --enumerate option see the ENUMERATE  section  be‐
              low.
              By  default  --inhex=FN will only decode the first mode page found in FN. With this
              option, more mode pages will be decoded if present. When --transport=TN  or  --ven‐
              dor=VN is also given then if a given mode page is not defined for that transport or
              vendor, then it is decoded as a generic mode page.

       -c, --clear=STR
              In its simplest form STR contains a field acronym_name or  a  field  numerical  de‐
              scriptor.  In the absence of an explicit value argument (e.g. '--clear=WCE=1'), the
              field has its value cleared to zero.  See the PARAMETERS section below.

       -C, --command=CMD
              Perform given CMD. See section below on COMMANDS. To enumerate  supported  commands
              use '-e -C x' (using any CMD name, valid or otherwise).

       -B, --dbd
              disable block descriptors. This is a bit in MODE SENSE cdbs that rarely needs to be
              set. One known case is a MODE SENSE 6 issued to a Reduced Block Commands (RBC)  de‐
              vice where the RBC standard says it shall be set.

       -D, --defaults
              sets the given mode page to its default values. Requires the --page=PG[,SPG] option
              to be given to specify the mode page. To make the default mode page values also the
              saved mode page values, use the --save option as well.

       -d, --dummy
              when set inhibits changes being placed in the DEVICE's mode page.  Instead the mode
              data that would have been sent to a MODE SELECT command, is output in ASCII hex  to
              the console. This option is mainly for testing.

       -e, --enumerate
              lists out descriptive information about the pages and fields known to this utility.
              Ignores the DEVICE argument and other options  apart  from  the  --all,  --inquiry,
              --long,  --page=PG[,SPG],  --transport=TN  and --vendor=VN. If --enumerate is given
              without other options then the known (generic) mode pages are listed.  See the ENU‐
              MERATE section below.

       -f, --flexible
              Some  devices,  bridges  and/or  drivers attempt crude transformations between mode
              sense 6 and 10 byte commands without correctly rebuilding the response.  This  will
              cause the response to be mis-interpreted (usually with an error saying the response
              is malformed). With this option, the length of the response is checked, and  if  it
              looks  wrong,  various  corrections are attempted. This option will also allow mode
              pages that don't belong to the current device's peripheral type to be listed.

       -g, --get=STR
              In its simplest form STR contains a field acronym_name or  a  field  numerical  de‐
              scriptor.  The  field  is fetched from mode page. See the PARAMETERS section below.
              The --long and --hex options effect the output format. Also if a value  of  "1"  is
              given  (e.g.  '--get=WCE=1')  only the current value is output (i.e. not the change
              mask, the default value and the saved value).

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

       -H, --hex
              rather than trying to decode mode (or VPD) pages, print them out in hex. When  used
              with  the --get=STR option the corresponding current, changeable, default and saved
              values are output in hex, prefixed by "0x" and space separated. If a value  of  "1"
              is given with the --get=STR option (e.g. '--get=WCE=1') then only the current value
              is output in hex, prefixed by "0x". If a value of "2" is given with  the  --get=STR
              option then only the current value is output as a (signed) integer. This option can
              be used multiple times (e.g. '-HH'). Useful with the ATA Information VPD page which
              usually  outputs  its  IDENTIFY  (PACKET) DEVICE response in 16 bit hex words; with
              '-HH' outputs that response in hex bytes; with '-HHH' outputs the same response  in
              a format suitable for 'hdparm --Istdin' to decode.

       -i, --inquiry
              output  a  VPD  page which is in the response of a SCSI INQUIRY command sent to DE‐
              VICE. In the absence of this option the default action is to output mode pages.  If
              the  --inquiry  option  is given without the --page=PG[,SPG] option then the device
              identification VPD page (0x83) is decoded and output. If this option and the  --all
              option are given then the supported VPD pages page (0x0) is decoded and output.

       -I, --inhex=FN
              FN  is expected to be a file name (or '-' for stdin) which contains ASCII hexadeci‐
              mal (or binary) representing the response to MODE  SENSE(10).   If  --six  is  also
              given  then  the response from MODE SENSE(6) is assumed. A MODE SENSE response con‐
              tains one or more mode pages. This utility will decode the  first  one  unless  the
              --all option is given. In order to decode a mode page the peripheral device type is
              often needed and can be supplied with the --pdt=DT option. If the --pdt=DT  is  not
              given then a mode page found in two device type standards (e.g. SBC and SSC) may be
              decoded twice.
              If --inquiry is given then FN is interpreted as the response data of a  single  VPD
              page.
              The  hexadecimal in FN 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 given then FN is treated as
              binary.

       -l, --long
              output extra information. In the case of mode page fields a description (with units
              if applicable) is output to the right. If used twice, then for some fields more in‐
              formation about its values is given on one or more following lines,  each  prefixed
              by a tab character. For usage with --enumerate see the ENUMERATE section below.

       -n, --num-desc
              for  a mode page that can have descriptors, the number of descriptors for the given
              page on the DEVICE is output. Otherwise 0 is output.

       -p, --page=PG[,SPG]
              supply the page number (PG) and optionally the sub page number (SPG)  of  the  mode
              (or  VPD)  page  to fetch. These numbers are interpreted as decimal unless prefixed
              with "0x" or a trailing. Sub page numbers are only valid for mode  pages  (not  VPD
              pages). Alternatively an abbreviation for a page can be given (see next entry).

       -p, --page=STR
              a  two or three letter abbreviation for a page can be given. Known mode page abbre‐
              viations are checked first followed by known VPD page abbreviations.   For  example
              '--page=ca'  matches  the  caching mode page. If no match is found then an error is
              issued and a list of possibilities in the current context is given (so '-p  x'  can
              be  quite  useful). If the STR matches a known VPD page abbreviation then the --in‐
              quiry option is assumed. For usage with --enumerate see the ENUMERATE  section  be‐
              low.

       -P, --pdt=DT
              This  option is only active when the --inhex=FN option is given.  DT is the periph‐
              eral Device Type, a value between 0 and 31 and can be found in the reponse  to  the
              INQUIRY command. The default value is -1 (which may also be given for DT) and it is
              interpreted as SPC (i.e. common mode pages) or as a wild card.  If  available  this
              option should be supplied with the --inhex=FN option.

       -q, --quiet
              suppress output of device name followed by the vendor, product and revision strings
              fetched from an INQUIRY response. Without this option such a line is typically  the
              first  line  output  by  sdparm.  Reduces output from the device identification VPD
              page, typically to one line (or none) for each of  di_lu,  di_port,  di_target  and
              di_asis.
              If  this  option  is  used  twice then additionally mode page output suppresses the
              changeable, default and saved values that are usually shown in  braces,  if  avail‐
              able.

       -r, --readonly
              override  other  logic to open DEVICE in read-only mode. The default setting of the
              open read-only/read-write mode depends on the operation requested (e.g. a --set=STR
              operation by default will try a read-write mode open on DEVICE). This option may be
              useful if a command is being sent to an ATA disk via a SCSI command set. For  exam‐
              ple  in Linux '-C stop' may require this option to stop an ATA disk being restarted
              immediately.

       -R, --raw
              this option is only active when used with the --inhex=FN option.  When this  option
              is  given  then the file FN is interpreted as binary; the default action (i.e. when
              this option is not given) is to interpret FN as ASCII hexadecimal.

       -S, --save
              when a mode page is being modified (by using the --clear=STR and/or  --set=STR  op‐
              tions) then the default action is to modify only the current values mode page. When
              this option is given then the corresponding value(s) in the saved values mode  page
              is also changed. The next time the device is power cycled (or reset) the saved val‐
              ues mode page becomes (i.e. is copied to) the current values mode page. This option
              sets the SP field in the MODE SELECT command. See NOTES section below.

       -s, --set=STR
              in  its  simplest  form  STR contains a field acronym_name or a field numerical de‐
              scriptor. In the absence of an explicit value, each acronym_name has its value  set
              to  (all)  ones.  This means a 16 bit field will be set to 0xffff which is 65535 in
              decimal. Alternatively each acronym_name or numerical descriptor may be followed by
              "=<n>"  where <n> is the value to set that field to. See the PARAMETERS section be‐
              low.

       -6, --six
              The default action of this utility is to issue MODE SENSE and MODE SELECT SCSI com‐
              mands  with  10  byte  cdbs.  When this option is given the 6 byte cdb variants are
              used. RBC and old SCSI devices may need this option. This utility outputs a sugges‐
              tion  to  use this option if the SCSI status indicates that the 10 byte cdb variant
              is not supported.

       -t, --transport=TN
              Specifies the transport protocol where TN is either a number in the range 0  to  15
              (inclusive) or an abbreviation (e.g. "fcp" for the Fibre Channel Protocol). One way
              to list available transport protocols numbers and their associated abbreviations is
              to  give  an  invalid  transport protocol number such as '-t x'; another way is '-e
              -l'.  N.B. The --all option may still be needed to show all available fields.

       -M, --vendor=VN
              Specifies the vendor (i.e. manufacturer) where VN is either a number (0 or more) or
              an  abbreviation  (e.g.  "sea"  for Seagate disk vendor specific).  One way to list
              available vendor numbers and their associated abbreviations is to give  an  invalid
              vendor number such as '-M x'; another way is '-e -l'.

       -v, --verbose
              increase  the  level of verbosity, (i.e. debug output). In some cases more decoding
              is done (e.g. fields within a standard INQUIRY response).

       -V, --version
              print the version string and then exit.

       -w, --wscan
              this option is available in Windows only. It lists storage  device  names  and  the
              corresponding  volumes, if any. When used twice it adds the "bus type" of the clos‐
              est transport (e.g. a SATA disk in a USB connected enclosure  has  bus  type  Usb).
              When  used  three  times  a SCSI adapter scan is added. When used four times only a
              SCSI adapter scan is shown.  See examples below and the "Win32 port" section in the
              README file.

NOTES
       The  reference document used for interpreting mode and VPD pages (and the INQUIRY standard
       response)  is  T10/BSR  INCITS  502  Revision  02  (SPC-5,  3  January  2015)   found   at
       http://www.t10.org  .  Obsolete and reserved items in the standard INQUIRY response output
       are displayed in brackets. Recent drafts of other  T10  documents  are  also  used:  SBC-4
       (disks), SSC-5 (tapes), SPL-4 (SAS transport) and SAT-4 (SCSI to ATA Translation).

       A  mode  page for which no abbreviation is known (e.g. a vendor specific mode page) can be
       listed in hexadecimal by using the option combination '--page=PG --hex'.

       Numbers input to sdparm (e.g. in the command line arguments) are assumed to be in  decimal
       unless  there is a hexadecimal indicator. A hexadecimal indicator is either a leading '0x'
       or '0X' (i.e. the C language convention) or a trailing 'h' or  'H'  (i.e.  the  convention
       used  at  www.t10.org  ). In the case of --page= either a string or number is expected, so
       hex numbers like 'ch' (12) should be prefixed by a zero (e.g. '0ch').

       The SPC-4 draft (rev 2) says that devices that implement no  distinction  between  current
       and  saved pages can return an error (ILLEGAL REQUEST, invalid field in cdb) if the SP bit
       (which corresponds to the --save option) is _not_ set. In such  cases  the  --save  option
       needs to be given.

       If  the  --save option is given but the existing mode page indicates (via its PS bit) that
       the page is not savable, then this utility generates an error message. That  message  sug‐
       gests to try again without the --save option.

       Since the device identification VPD page (acronym_name "di") potentially contains a lot of
       diverse designators, several associated acronyms are available. They are "di_lu" for  des‐
       ignators  associated with the addressed logical unit, "di_port" for designators associated
       with the target port (which the command arrived via) and "di_target" for designators asso‐
       ciated  with the target device. When "di" is used designators are grouped by lu, then port
       and then target device.  To see all designators decoded in the order that they  appear  in
       the VPD page use "di_asis".

       Only  those VPD pages defined by t10.org are decoded by this utility. SPC-4 sets aside VPD
       pages codes from 0xc0 to 0xff (inclusive) for vendor specific pages some of which are  de‐
       coded in the sg_vpd utility.

       To see all VPD pages supported by a DEVICE use 'sg_vpd --all'.

       In  the  linux kernel 2.6 and 3 series any device node that understands a SCSI command set
       (e.g. SCSI disks and CD/DVD drives) may be  specified.  More  precisely  the  driver  that
       "owns"  the  device  node  must  support  the  SG_IO ioctl. In the lk 2.4 series only SCSI
       generic (sg) device nodes support the SG_IO ioctl. However in the lk 2.4 series other SCSI
       device  nodes are mapped within this utility to their corresponding sg device nodes. So if
       there is a SCSI disk at /dev/sda then 'sdparm /dev/sda' will work in both the lk  2.4  se‐
       ries  and  later.  However  if  there  is  an  ATAPI cd/dvd drive at /dev/hdc then 'sdparm
       /dev/hdc' will only work in the lk 2.6 series and later.

       In the Linux 2.6 and 3 series, especially with ATA disks, using sdparm to stop (spin down)
       a  disk  may  not  be  sufficient and other mechanisms will start the disk again some time
       later. The user might additionally mark  the  disk  as  "offline"  with  'echo  offline  >
       /sys/block/sda/device/state'  where sda is the block name of the disk. To restart the disk
       "offline" can be replaced with "running".

PARAMETERS
       In their simplest form the --clear=, --get= and --set= options (or their short forms) take
       an  acronym_name  such  as "WCE". In the case of '--get=WCE' the value of "Writeback Cache
       Enable" in the caching mode page will be fetched. In the case of '--set=WCE' that bit will
       be  set (to one). In the case of '--clear=WCE' that bit will be cleared (to zero). When an
       acronym_name is given then the mode page is imputed from that acronym_name (e.g. WCE is in
       the caching mode page).

       Instead  of an acronym_name a field within a mode page can be described numerically with a
       <start_byte>:<start_bit>:<num_bits> tuple. These are the <start_byte>  (origin  0)  within
       the  mode  page,  a <start_bit> (0 to 7 inclusive) and <num_bits> (1 to 64 inclusive). For
       example, the low level representation of the RCD bit (the "Read Cache Disable bit  in  the
       caching  mode  page)  is  "2:0:1".  The  <start_byte> can optionally be given in hex (e.g.
       '--set=0x2:0:1' or '--set=2h:0:1'). With this form the --page= option is required  to  es‐
       tablish which mode page is to be used.

       Either form can optionally be followed by "=<val>". By default <val> is decimal but can be
       given in hex in the normal fashion. Here are  some  examples:  '--set=2h:0:1=1h'  and  '-s
       MRIE=0x3'.  When  the  acronym_name or numeric form following --clear= is not given an ex‐
       plicit '=<val>' then the value defaults to zero. When the  acronym_name  or  numeric  form
       following  --set=  is not given an explicit '=<val>' then the value defaults to "all ones"
       (i.e. as many as <num_bits> permits). For example '--clear=WCE' and  '--clear=WCE=0'  have
       the same meaning: clear Writeback Cache Enable or, put more simply: turn off the writeback
       cache.

       Multiple fields within the same mode page can be changed by giving a comma separated  list
       of acronym_names and/or the numerical form. For example: '--set=TEST,MRIE=6'.

       Some  mode  page  have multiple descriptors. They typically have a fixed header section at
       the start of the mode page that includes a field containing the number of descriptors that
       follow.  Following  the  header is a variable number of descriptors. An example is the SAS
       Phy Control and Discover mode page. An acronym_name may include a trailing '.<num>'  where
       "<num>"  is  a descriptor number (origin 0). For example '-t sas -g PHID.0' and '-t sas -g
       PHID' will yield the phy identifier of the first descriptor of the above  mode  page;  '-t
       sas -g PHID.1' will yield the phy identifier of the second descriptor.

ENUMERATE
       The  --enumerate  option  essentially dumps out static information held by this utility. A
       list of --enumerate variants and their actions follows. For brevity subsequent examples of
       options are shown in their shorter form.

           --enumerate          list generic mode page information
           -e --all             list generic mode page contents
                                (i.e. parameters)
           -e --page=rw         list contents of read write error
                                recovery mode page
           -e --inquiry         list VPD pages this utility can decode
           -e --long            list generic mode pages, transport
                                protocols, mode pages for each
                                supported transport protocol and
                                supported commands
           -e -l --all          additionally list the contents of
                                each mode page
           -e --transport=fcp   list mode pages for the fcp
                                transport protocol
           -e -t fcp --all      additionally list the contents of
                                each mode page
           -e --vendor=sea      list vendor specific mode pages for
                                "sea" (Seagate)
           -e -M sea --all      additionally list the contents of vendor
                                specific mode pages for "sea" (Seagate)
           -e -p pcd -l         list contents of SAS phy control and
                                discovery mode page plus (due to "-l")
                                some descfriptor format information

       When known mode pages are listed (via the --enumerate  option) each line starts with a two
       or three letter abbreviation. This is followed by the page  number  (in  hex  prefixed  by
       "0x")  optionally followed by a comma and the subpage number. Finally the descriptive name
       of the mode page (e.g. as found in SPC-4) is output.

       When known parameters (fields) of a mode page are listed, each line starts with an acronym
       (indented  a  few spaces). This will match (or be an acronym for) the description for that
       field found in the (draft) standards. Next are three numbers, separated  by  colons,  sur‐
       rounded  by brackets. These are the start byte (in hex, prefixed by "0x") of the beginning
       of the field within the mode page; the starting bit (0 through 7 inclusive) and  then  the
       number  of bits. The descriptive name of the parameter (field) is then given. If appropri‐
       ate the descriptive name includes units (e.g. "(ms)" means the  units  are  milliseconds).
       Adding  the  '-ll'  option  will list information about possible field values for selected
       mode page parameters.

       Mode parameters for which the num_bits is greater than 1 can be viewed as  unsigned  inte‐
       gers.  Often 16 and 32 bit fields are set to 0xffff and 0xffffffff respectively (all ones)
       which usually has a special meaning (see drafts). This utility outputs such values as "-1"
       to  save space (rather than their unsigned integer equivalents). "-1" can also be given as
       the value to a mode page field acronym (e.g. '--set=INTT=-1' sets the interval timer field
       in the Informational Exceptions control mode page to 0xffffffff).

TRANSPORTS
       SCSI  transport  protocols are a relatively specialized area that can be safely ignored by
       the majority of users.

       Some transport protocols have protocol specific mode pages. These are usually the  discon‐
       nect-reconnect  (0x2), the protocol specific logical unit (0x18) and the protocol specific
       port (0x19) mode pages. In some cases the latter mode page has several subpages. The  most
       common transport protocol abbreviations likely to be used are "fcp", "spi" and "sas".

       Many  of  the  field names are re-used in the same position so the acronym_name namespaces
       have been divided between generic mode pages (i.e. when the --transport= option  is  _not_
       given)  and  a namespace for each transport protocol. A LUPID field from the protocol spe‐
       cific logical unit (0x18) mode page and the PPID field from protocol specific port  (0x19)
       mode  page  are included in the generic modes pages; this is so the respective (transport)
       protocol identifiers can be seen. In most cases the user will know what the "port"  trans‐
       port is (i.e. the same transport as the HBA in the computer) but the logical unit's trans‐
       port could be different.

VENDORS
       SCSI leaves a lot of space for vendor specific information. Often  this  is  described  in
       product manuals. The --vendor=VN (or -M=VN) option allows known vendor specific mode pages
       to be examined and/or modified by acronym.

       In this utility the syntax and semantics of vendor specific mode pages is very similar  to
       those of transport protocol specific mode pages. Both cannot be specified together. Vendor
       specific modes pages can still be accessed numerically (as shown at the end of  the  EXAM‐
       PLES section).

COMMANDS
       The  command  option sends a SCSI command to the DEVICE. If the command fails then this is
       reflected in the non-zero exit status.  To obtain more information about the error use the
       -v option.

       capacity
              sends  a  READ  CAPACITY  command (valid for disks and cd/dvd media). If successful
              yields "blocks: " [the number of blocks], "block_length: " [typically either 512 or
              2048] and "capacity_mib: " [capacity in MibiBytes (1048576 byte units)].

       eject  stops  the medium and ejects it from the device.  Note that ejection (by command or
              button) may be prevented in which case the 'unlock' command may be  useful  in  ex‐
              treme cases.  Typically only appropriate for cd/dvd drives and disk drives with re‐
              movable media. Objects if sent to another peripheral device type (but objection can
              be overridden with '-f' option).

       load   loads  the  medium  and  and starts it (i.e. spins it up).  See 'eject' command for
              supported device types.

       profile
              lists the various formats that a CD/DVD/HD-DVD/BD drive supports. These are  called
              "profiles"  in the MMC standard. The profiles are listed one per line.  If media is
              in the drive then the profile that matches the media (if any) has  an  "*"  to  the
              right of the line.

       ready  sends the "Test Unit Ready" SCSI command to the DEVICE. No error is reported if the
              device will respond to data requests (e.g. READ) in a reasonable timescale. For ex‐
              ample, if a disk is stopped then it will report "not ready". All devices should re‐
              spond to this command.

       sense  sends a REQUEST SENSE command. It reports a hardware threshold exceeded, warning or
              low  power condition if flagged. If a progress indication is present (e.g. during a
              format) then it will be output as a percentage. Yields a process status of 0 if the
              command  succeeds  and the sense key is 0; else yields 1. The --quiet option can be
              used to lessen output, and --hex to output sense data in hex.

       speed=SPEED
              permits the speed of a CD, DVD, HD_DVD or BD disc in a drive to be set (or at least
              influenced).  It has this format: --command=speed=SPEED where SPEED is in kilobytes
              per second. In this case a kilobyte is 1000 bytes. The "times one" speed for  a  CD
              is  176.4  kB/s, for a DVD is 1350 kB/s and for both HD-DVD and BD it is 4500 kB/s.
              If SPEED is zero then the drive is set to the speed that it considers gives optimal
              performance.   This  command sends a SET STREAMING multi-media command (MMC) to the
              drive.  The EXACT bit is clear so the drive will round the given  SPEED  as  neces‐
              sary.  The command is designed to control read speed; setting write speed should be
              left to "burning" programs.

       start  starts the medium (i.e. spins it up). Harmless if medium has already been  started.
              See  'eject'  command  for  supported device types. If the DEVICE is an ATA disk in
              Linux the '--readonly' option may be required.

       stop   stops the medium (i.e. spins it down). Harmless if medium has already been stopped.
              See  'eject'  command  for  supported device types. If the DEVICE is an ATA disk in
              Linux the '--readonly' option may be required. See the NOTES section above.

       sync   sends a SYNCHRONIZE CACHE command. The device should flush any  data  held  in  its
              (volatile) buffers to the media.

       unlock tells  a device to allow medium removal. It uses the SCSI "prevent allow medium re‐
              moval" command. This is desperation stuff, possibly overriding a prevention applied
              by  the OS on a mounted file system. The "eject" utility (from the "eject" package)
              is more graceful and should be tried first. This command is  only  appropriate  for
              devices with removable media.

       For  loading  and  ejecting tapes the mt utility should be used (i.e. not these commands).
       The 'ready' command is valid for tape devices.

EXAMPLES
       To list the common (generic) mode parameters of a disk:

          sdparm /dev/sda

       To list the designators within the device identification VPD page of a disk:

          sdparm --inquiry /dev/sda

       To see all parameters for the caching mode page:

          sdparm --page=ca /dev/sda

       To see all parameters for the caching mode page with parameter descriptions to the right:

          sdparm --page=ca --long /dev/sda

       To get the WCE values (current changeable default and saved) in hex:

          sdparm -g WCE -H /dev/sda
       0x01 0x00 0x01 0x01

       To get the WCE current value in hex:

          sdparm -g WCE=1 -H /dev/sda
       0x01

       To set the "Writeback Cache Enable" bit in the current values page:

          sdparm --set=WCE /dev/sda

       To set the "Writeback Cache Enable" bit in the current and saved values page:

          sdparm --set=WCE --save /dev/sda

       To set the "Writeback Cache Enable" and clear "Read Cache Disable":

          sdparm --set=WCE --clear=RCD --save /dev/sda

       The previous example can also by written as:

          sdparm -s WCE=1,RCD=0 -S /dev/sda

       To re-establish the manufacturer's defaults in the current and saved values of the caching
       mode page:

          sdparm --page=ca --defaults --save /dev/sda

       If  an ATAPI cd/dvd drive is at /dev/hdc then its common (mode) parameters could be listed
       in the lk 2.6 and 3 series with:

          sdparm /dev/hdc

       If there is a DVD in the drive at /dev/hdc then it could be ejected in the lk  2.6  and  3
       series with:

          sdparm --command=eject /dev/hdc

       If the ejection is being prevented by software then that can be overridden with:

          sdparm --command=unlock /dev/hdc

       One  disk  vendor  has a "Performance Mode" bit (PM) in the vendor specific unit attention
       mode page [0x0,0x0]. PM=0 is server mode (the default) while PM=1 is desktop mode. Desktop
       mode can be set (both current and saved values) with:

          sdparm --page=0 --set=2:7:1=1 --save /dev/sda

       The  resultant  change can be viewed in hex with the --hex option as there are no acronyms
       for vendor extensions yet. The PM bit is now covered by vendor specific mode pages and the
       above can also be accomplished with:

          sdparm --vendor=sea --set=PM --save /dev/sda

       What  follows  are  some examples from Windows using the '--wscan' option.  The idea is to
       list the storage device names on the system that might be invoked by other uses of sdparm.

         # sdparm --wscan
       PD0     [C]     FUJITSU   MHY2160BH         0000
       PD1     [DF]    WD        2500BEV External  1.05  WD-WXE90
       CDROM0  [E]     MATSHITA DVD/CDRW UJDA775  CB03

       So 'sdparm -a CDROM0' and 'sdparm -a E' will show all the (known) mode page fields for the
       Matshita  DVD/CD drive. By using the '--wsacan' option twice, the bus type (as seen by the
       OS) is added to the output:

         # sdparm -ww
       PD0     [C]     <Ata  >  FUJITSU   MHY2160BH         0000
       PD1     [DF]    <Usb  >  WD        2500BEV External  1.05  WD-WXE90
       CDROM0  [E]     <Atapi>  MATSHITA DVD/CDRW UJDA775  CB03

       And the pattern continues to add a SCSI adapter scan. This may be useful if there are spe‐
       cialized storage related devices (e.g. a SES device in an enclosure) but does add much ex‐
       tra information in this case.

         # sdparm -www
       PD0     [C]     <Ata  >  FUJITSU   MHY2160BH         0000
       PD1     [DF]    <Usb  >  WD        2500BEV External  1.05  WD-WXE90
       CDROM0  [E]     <Atapi>  MATSHITA DVD/CDRW UJDA775  CB03

       SCSI0:0,0,0   claimed=1 pdt=0h  FUJITSU   MHY2160BH         0000
       SCSI1:0,0,0   claimed=1 pdt=5h  MATSHITA  DVD/CDRW UJDA775  CB03

EXIT STATUS
       To aid scripts that call sdparm, the exit status is set to indicate success (0) or failure
       (1  or  more). Note that some of the lower values correspond to the SCSI sense key values.
       The exit status values are:

       0      success

       1      syntax error. Either illegal command line options, options with bad arguments or  a
              combination of options that is not permitted.

       2      the DEVICE reports that it is not ready for the operation requested. The device may
              be in the process of becoming ready (e.g.  spinning up but not  at  speed)  so  the
              utility may work after a wait.

       3      the  DEVICE  reports  a medium or hardware error (or a blank check). For example an
              attempt to read a corrupted block on a disk will yield this value.

       5      the DEVICE reports an "illegal request" with an additional sense  code  other  than
              "invalid  operation  code".  This is often a supported command with a field set re‐
              questing an unsupported capability. For commands that require  a  "service  action"
              field this value can indicate that the command is not supported.

       6      the  DEVICE reports a "unit attention" condition. This usually indicates that some‐
              thing unrelated to the requested command has occurred (e.g. a device reset)  poten‐
              tially before the current SCSI command was sent. The requested command has not been
              executed by the device. Note that unit attention conditions are  usually  only  re‐
              ported once by a device.

       9      the DEVICE reports an illegal request with an additional sense code of "invalid op‐
              eration code" which means that it doesn't support the requested command.

       11     the DEVICE reports an aborted command. In some cases aborted commands  can  be  re‐
              tried immediately (e.g. if the transport aborted the command due to congestion).

       15     the  utility is unable to open, close or use the given DEVICE.  The given file name
              could be incorrect or there may be permission problems. Adding the  -v  option  may
              give more information.

       20     the  DEVICE reports it has a check condition but "no sense".  Some polling commands
              (e.g. REQUEST SENSE) can react this way.  It is unlikely that this value will occur
              as an exit status.

       21     the  DEVICE reports a "recovered error". The requested command was successful. Most
              likely a utility will report a recovered error to  stderr  and  continue,  probably
              leaving the utility with an exit status of 0 .

       24     the  DEVICE  reports  a SCSI status of "reservation conflict". This means access to
              the DEVICE with the current command has been blocked because another  machine  (HBA
              or  SCSI  "initiator")  holds  a reservation on this DEVICE. On modern SCSI systems
              this is related to the use of the PERSISTENT RESERVATION family of commands.

       25     the DEVICE reports a SCSI status of "condition met". Currently only  the  PRE-FETCH
              command (see SBC-4) yields this status.

       26     the  DEVICE reports a SCSI status of "busy". SAM-5 defines this status as the logi‐
              cal unit is temporarily unable to process a command.  It is recommended to re-issue
              the command.

       27     the DEVICE reports a SCSI status of "task set full".

       28     the  DEVICE  reports  a  SCSI status of "ACA active". ACA is "auto contingent alle‐
              giance" and is seldom used.

       29     the DEVICE reports a SCSI status of "task aborted". SAM-5 says: "This status  shall
              be returned if a command is aborted by a command or task management function on an‐
              other I_T nexus and the Control mode page TAS bit is set to one".

       33     the command sent to DEVICE has timed out. This occurs in Linux only; in other ports
              a command timeout will appear as a transport (or OS) error.

       97     the response to a SCSI command failed sanity checks.

       98     the  DEVICE  reports it has a check condition but the error doesn't fit into any of
              the above categories.

       99     any errors that can't be categorized into values 1 to 98 may yield this value. This
              includes  transport  and operating system errors after the command has been sent to
              the device.

       Most of the error conditions reported above will be repeatable (an example of one that  is
       not  is  "unit attention") so the utility can be run again with the -v option (or several)
       to obtain more information.

AUTHORS
       Written by Douglas Gilbert.

REPORTING BUGS
       Report bugs to <dgilbert at interlog dot com>.

COPYRIGHT
       Copyright © 2005-2016 Douglas Gilbert
       This software is distributed under a FreeBSD license. There is NO warranty; not  even  for
       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

WEB SITE
       There is a web page discussing this package at http://sg.danny.cz/sg/sdparm.html .

SEE ALSO
       hdparm(hdparm),  sg_modes, sg_wr_mode, sginfo, sg_inq, sg_vpd(all in sg3_utils), smartmon‐
       tools(smartmontools.sourceforge.net), mt, eject(eject),

sdparm-1.10                               February 2016                                 SDPARM(8)

 

 

Help output

sudo sdparm --help
Usage: sdparm [--all] [--dbd] [--flexible] [--get=STR] [--hex] [--long]
              [--num-desc] [--page=PG[,SPG]] [--quiet] [--readonly]
              [--six] [--transport=TN] [--vendor=VN] [--verbose]
              DEVICE [DEVICE...]
       sdparm [--clear=STR] [--defaults] [--dummy] [--flexible]
              [--page=PG[,SPG]] [--quiet] [--readonly] [--save] [--set=STR]
              [--six] [--transport=TN] [--vendor=VN] [--verbose]
              DEVICE [DEVICE...]

  where mode page read (1st usage) and change (2nd usage) options are:
    --all | -a            list all known fields for given DEVICE
    --clear=STR | -c STR    clear (zero) field value(s)
    --dbd | -B            set DBD bit in mode sense cdb
    --defaults | -D       set a mode page to its default values
    --dummy | -d          don't write back modified mode page
    --flexible | -f       compensate for common errors, relax some checks
    --get=STR | -g STR    get (fetch) field value(s)
    --hex | -H            output in hex rather than name/value pairs
    --long | -l           add description to field output
    --num-desc | -n       report number of mode page descriptors
    --page=PG[,SPG] | -p PG[,SPG]    page (and optionally subpage) number
                          [or abbrev] to output, change or enumerate
    --quiet | -q          suppress DEVICE vendor/product/revision string line
    --readonly | -r       force read-only open of DEVICE (def: depends
                          on operation). Mainly for ATA disks
    --save | -S           place mode changes in saved page as well
    --set=STR | -s STR    set field value(s)
    --six | -6            use 6 byte SCSI mode cdbs (def: 10 byte)
    --transport=TN | -t TN    transport protocol number [or abbrev]
    --vendor=VN | -M VN    vendor (manufacturer) number [or abbrev]
    --verbose | -v        increase verbosity

View or change SCSI mode page fields (e.g. of a disk or CD/DVD drive).
STR can be <acronym>[=val] or <start_byte>:<start_bit>:<num_bits>[=val].
Use '-h' or '--help' twice for help on other usages including executing
some simple commands, reading and decoding VPD pages, enumerating internal
tables of mode and VPD pages, and decoding response data supplied in a
file or stdin (rather than from a DEVICE).

 

Related Content