sdparm(8)


NAME

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

SYNOPSIS

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

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

   sdparm --wscan [--verbose]

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  housekeeping
   function may also be issued by this utility.

   Of  the  three invocations shown in the synopsis, the first is the most
   general. The second  variant  that  uses  --enumerate  is  for  dumping
   information  held  in sdparm's internal tables. The last variant is for
   Windows only and lists the available  device  names;  see  the  OPTIONS
   entry for --wscan.

   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
   (excluding  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 specific
   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 VENDORS 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 players 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 indicated (e.g. with a leading
   "0x" or a trailing "h"). The options are in alphabetical  order,  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 relatively 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 option's action when used with
          the --enumerate option see the ENUMERATE section below.

   -c, --clear=STR
          In its simplest form STR contains  a  field  acronym_name  or  a
          field  numerical descriptor. 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) device 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 ENUMERATE 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 descriptor. 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  INQUIRY  VPD  pages.  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.

   -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 information  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  abbreviations  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  --inquiry  option  is
          assumed.  For  usage  with --enumerate see the ENUMERATE section
          below.

   -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.

   -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 example in Linux '-C  stop'  may  require  this
          option to stop an ATA disk being restarted immediately.

   -S, --save
          when  a  mode  page  is being modified (by using the --clear=STR
          and/or --set=STR options) 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 values mode page becomes (i.e.  is  copied  to)
          the current values mode page. See NOTES section below.

   -s, --set=STR
          in  its  simplest  form  STR  contains a field acronym_name or a
          field numerical descriptor. 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 below.

   -6, --six
          The  default  action  of this utility is to issue MODE SENSE and
          MODE SELECT SCSI commands 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 suggestion  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'.

   -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 closest 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/1713-D Revision  36e  (SPC-4,  24
   August  2012) found at http://www.t10.org . Obsolete and reserved items
   in the standard INQUIRY response output are displayed in brackets.

   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 suggests 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 designators 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 associated 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 decoded in the sg_vpd utility.

   In  the linux kernel 2.6 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.6 and lk 2.4 series. 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.

   In the Linux 2.6 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 establish 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 explicit '=<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, surrounded 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 appropriate 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 integers. 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  disconnect-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  specific
   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" transport is  (i.e.  the  same
   transport  as the HBA in the computer) but the logical unit's transport
   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  EXAMPLES
   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 extreme cases.   Typically
          only   appropriate  for  cd/dvd  drives  and  disk  drives  with
          removable 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  example,  if  a  disk  is
          stopped  then  it  will  report  "not ready". All devices should
          respond 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  necessary.   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  removal"  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 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 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  specialized storage related devices (e.g. a SES
   device in an enclosure) but does add much  extra  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 requesting 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 something unrelated to the requested command  has
          occurred  (e.g.  a  device reset) potentially 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 reported once by a device.

   9      the DEVICE reports an illegal request with an  additional  sense
          code  of  "invalid  operation  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  retried  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 .

   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-2013 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),      smartmontools(smartmontools.sourceforge.net),      mt,
   eject(eject),





Opportunity


Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.

Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.





Free Software


Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.


Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.





Free Books


The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.


Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.





Education


Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.


Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.