Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
SDPARM(8)			    SDPARM			     SDPARM(8)

       sdparm -	access SCSI modes pages; read VPD pages; send simple SCSI com-

       sdparm  [--all]	[--dbd]	 [--flexible]  [--get=STR]  [--hex]   [--long]
       [--num-desc] [--page=PG[,SPG]] [--quiet]	[--readonly] [--six] [--trans-
       port=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...]

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

       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]	[--vendor=VN]

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

       sdparm --wscan [--verbose]

       sdparm [--help] [--version]

       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	 func-
       tion 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 DE-
       VICE. 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 hexadeci-
       mal 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	command	line help or the version  number  (and

       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 de-
       tected, 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	trans-
       port  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	--ven-
       dor=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 De-
       vice 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 con-
       tents)  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  can-
       not decode it or	the --hex option is given then it is output in hex.

       Mandatory  arguments to long options are	mandatory for short options as
       well.  If an option takes a numeric argument then that argument is  as-
       sumed  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 set-
	      ting  of	this  option). For this	option's action	when used with
	      the --enumerate option see the ENUMERATE section below.
	      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 --vendor=VN is also  given  then
	      if  a  given mode	page is	not defined for	that transport or ven-
	      dor, 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 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

       -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  val-
	      ues, 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 op-
	      tion 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 op-
	      tions 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 transforma-
	      tions between mode sense 6 and 10	 byte  commands	 without  cor-
	      rectly 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  at-
	      tempted.	This  option will also allow mode pages	that don't be-
	      long 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	 suit-
	      able for 'hdparm --Istdin' to decode.

       -i, --inquiry
	      output  a	 VPD  page  which is in	the response of	a SCSI INQUIRY
	      command sent to DEVICE. In the absence of	this  option  the  de-
	      fault action is to output	mode pages. If the --inquiry option is
	      given without the	--page=PG[,SPG]	option then the	device identi-
	      fication	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 con-
	      tains ASCII hexadecimal (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 contains 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	repre-
	      senting 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  bi-

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

       -n, --num-desc
	      for a mode page that can have descriptors,  the  number  of  de-
	      scriptors	 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 in-
	      terpreted	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

       -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 is-
	      sued 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 us-
	      age with --enumerate see the ENUMERATE section below.

       -P, --pdt=DT
	      This option is only active when the --inhex=FN option is	given.
	      DT  is  the peripheral 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	inter-
	      preted as	SPC (i.e. common mode pages) or	as  a  wild  card.  If
	      available	this option should be supplied with the	--inhex=FN op-

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

       -r, --readonly
	      override	other  logic to	open DEVICE in read-only mode. The de-
	      fault 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 com-
	      mand set.	For example 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 bi-
	      nary; 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	 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  re-
	      set)  the	saved values 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 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'.  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 IN-
	      QUIRY response).

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

       -w, --wscan
	      this option is available in Windows only.	It lists  storage  de-
	      vice  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.

       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 . Obsolete and  re-
       served  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

       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  as-
       sumed to	be in decimal unless there is a	hexadecimal indicator. A hexa-
       decimal 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 ). In the case of --page= either a string or	number is  ex-
       pected,	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

       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

       Since  the  device  identification  VPD page (acronym_name "di")	poten-
       tially contains a lot of	diverse	designators, several associated	 acro-
       nyms  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	desig-
       nators 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

       Only  those  VPD	 pages defined by are decoded by this utility.
       SPC-4 sets aside	VPD pages codes	from 0xc0 to 0xff (inclusive) for ven-
       dor specific pages some of which	are decoded 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 series 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/de-
       vice/state' where sda is	the block name of the  disk.  To  restart  the
       disk "offline" can be replaced with "running".

       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  fol-
       lowing --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	Write-
       back 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 con-
       taining 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.

       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

	   --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 val-
       ues 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).

       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	trans-
       port  protocol  abbreviations  likely  to  be used are "fcp", "spi" and

       Many of the field names are re-used in the same position	so  the	 acro-
       nym_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.

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

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

       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.

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

       eject  stops the	medium and ejects it from the device.  Note that ejec-
	      tion (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 me-
	      dia.  Objects if sent to another peripheral device type (but ob-
	      jection 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.

	      lists  the  various  formats  that a CD/DVD/HD-DVD/BD drive sup-
	      ports. These are called "profiles" in the	MMC standard. The pro-
	      files  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  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.

	      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:	--com-
	      mand=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 al-
	      ready 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	 "pre-
	      vent  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.

       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

	  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 descrip-
       tions 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

       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

	  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)  parame-
       ters 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	 over-
       ridden with:

	  sdparm --command=unlock /dev/hdc

       One  disk  vendor  has a	"Performance Mode" bit (PM) in the vendor spe-
       cific unit attention mode page [0x0,0x0]. PM=0 is server	mode (the  de-
       fault)  while  PM=1 is desktop mode. Desktop mode can be	set (both cur-
       rent 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 cov-
       ered by vendor specific mode pages and the above	 can  also  be	accom-
       plished 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'  op-
       tion 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 use-
       ful 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

       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  re-
	      quested.	The  device  may  be  in the process of	becoming ready
	      (e.g.  spinning up but not at speed) so the utility may work af-
	      ter 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  sup-
	      ported  command with a field set requesting an unsupported capa-
	      bility. 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  exe-
	      cuted  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 permis-
	      sion 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 re-
	      lated  to	 the  use of the PERSISTENT RESERVATION	family of com-

       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 logical 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 allegiance" 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 com-
	      mand or task management function on another 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	trans-
	      port (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  ex-
       ample 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.

       Written by Douglas Gilbert.

       Report bugs to <dgilbert	at interlog dot	com>.

       Copyright (C) 2005-2016 Douglas Gilbert
       This software is	distributed under a FreeBSD license. There is NO  war-
       ranty;  not  even  for MERCHANTABILITY or FITNESS FOR A PARTICULAR PUR-

       There	is    a	   web	  page	  discussing	this	package	    at .

       hdparm(hdparm),	sg_modes,  sg_wr_mode,	sginfo,	 sg_inq, sg_vpd(all in
       sg3_utils),	smartmontools(,	   mt,

sdparm-1.10			 February 2016			     SDPARM(8)


Want to link to this manual page? Use this URL:

home | help