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

FreeBSD Manual Pages

  
 
  

home | help
CAMCONTROL(8)		    System Manager's Manual		 CAMCONTROL(8)

NAME
       camcontrol -- CAM control program

SYNOPSIS
       camcontrol <command> [device id]	[generic args] [command	args]
       camcontrol devlist [-b] [-v]
       camcontrol periphlist [device id] [-n dev_name] [-u unit_number]
       camcontrol tur [device id] [generic args]
       camcontrol sense	[device	id] [generic args] [-D]	[-x]
       camcontrol inquiry [device id] [generic args] [-D] [-S] [-R]
       camcontrol identify [device id] [generic	args] [-v]
       camcontrol   reportluns	 [device   id]	 [generic   args]   [-c]  [-l]
		  [-r reporttype]
       camcontrol readcap [device id] [generic args] [-b] [-h] [-H] [-l]  [-N]
		  [-q] [-s]
       camcontrol start	[device	id] [generic args]
       camcontrol stop [device id] [generic args]
       camcontrol load [device id] [generic args]
       camcontrol eject	[device	id] [generic args]
       camcontrol reprobe [device id]
       camcontrol rescan <all |	device id | bus[:target:lun]>
       camcontrol reset	<all | device id | bus[:target:lun]>
       camcontrol  defects  [device  id]  [generic args] <-f format> [-P] [-G]
		  [-q] [-s] [-S	offset]	[-X]
       camcontrol    modepage	 [device    id]	   [generic	args]	  [-6]
		  <-m page[,subpage] | -l> [-P pgctl] [-D] [-L]	[-b | -e] [-d]
       camcontrol   cmd	  [device   id]	  [generic   args]   <-a  cmd  [args]>
		  <-c cmd [args]> [-d] [-f] [-i	len fmt] [-o len  fmt  [args]]
		  [-r fmt]
       camcontrol  smpcmd  [device  id]	 [generic  args]  <-r  len fmt [args]>
		  <-R len fmt [args]>
       camcontrol smprg	[device	id] [generic args] [-l]
       camcontrol  smppc  [device   id]	  [generic   args]   <-p   phy>	  [-l]
		  [-o operation] [-d name] [-m rate] [-M rate] [-T pp_timeout]
		  [-a  enable|disable] [-A enable|disable] [-s enable|disable]
		  [-S enable|disable]
       camcontrol smpphylist [device id] [generic args]	[-l] [-q]
       camcontrol smpmaninfo [device id] [generic args]	[-l]
       camcontrol   debug   [-I]   [-P]	  [-T]	  [-S]	  [-X]	  [-c]	  [-p]
		  <all | off | device id | bus[:target[:lun]]>
       camcontrol tags [device id] [generic args] [-N tags] [-q] [-v]
       camcontrol     negotiate	   [device    id]    [generic	 args]	  [-c]
		  [-D enable|disable] [-M mode]	[-O offset] [-q] [-R syncrate]
		  [-T enable|disable] [-U] [-W bus_width] [-v]
       camcontrol format [device id] [generic args] [-q] [-r] [-w] [-y]
       camcontrol      sanitize	     [device	  id]	   [generic	 args]
		  <-a  overwrite  |  block | crypto | exitfailure> [-c passes]
		  [-I] [-P pattern] [-q] [-U] [-r] [-w]	[-y]
       camcontrol idle [device id] [generic args] [-t time]
       camcontrol standby [device id] [generic args] [-t time]
       camcontrol sleep	[device	id] [generic args]
       camcontrol powermode [device id]	[generic args]
       camcontrol apm [device id] [generic args] [-l level]
       camcontrol aam [device id] [generic args] [-l level]
       camcontrol fwdownload [device id] [generic  args]  <-f  fw_image>  [-q]
		  [-s] [-y]
       camcontrol  security  [device id] [generic args]	[-d pwd] [-e pwd] [-f]
		  [-h  pwd]  [-k  pwd]	[-l  high|maximum]   [-q]   [-s	  pwd]
		  [-T timeout] [-U user|master]	[-y]
       camcontrol  hpa [device id] [generic args] [-f] [-l] [-P] [-p pwd] [-q]
		  [-s max_sectors] [-U pwd] [-y]
       camcontrol ama [device id] [generic args] [-f] [-q] [-s max_sectors]
       camcontrol persist [device id] [generic args] <-i action	|  -o  action>
		  [-a]	  [-I	 trans_id]   [-k   key]	  [-K	sa_key]	  [-p]
		  [-R rel_tgt_port] [-s	scope] [-S] [-T	res_type] [-U]
       camcontrol attrib [device id] [generic args] <-r	action	|  -w  attrib>
		  [-a attr_num]	[-c] [-e elem_addr] [-F	form1,form2] [-p part]
		  [-s start_addr] [-T elem_type] [-V lv_num]
       camcontrol   opcodes   [device	id]   [generic	 args]	 [-o   opcode]
		  [-s service_action] [-N] [-T]
       camcontrol zone <-c cmd>	[-a] [-l lba] [-o rep_opts] [-P	print_opts]
       camcontrol epc <-c cmd>	[-d]  [-D]  [-e]  [-H]	[-p  power_cond]  [-P]
		  [-r restore_src] [-s]	[-S power_src] [-T timer]
       camcontrol  timestamp  [device id] [generic args] <-r [-f format	| -m |
		  -U] |	-s <-f format -T time |	-U>>
       camcontrol devtype [device id]
       camcontrol depop	[device	id] [generic args] <-l | -d |  -r>  [-e	 elem]
		  [-c capacity]
       camcontrol help

DESCRIPTION
       The  camcontrol	utility	allows users to	access and control the FreeBSD
       CAM subsystem described in cam(4).

       The camcontrol utility can cause	a loss of data and/or  system  crashes
       if  used	improperly.  Even expert users are encouraged to exercise cau-
       tion when using this command.  Novice users should stay away from  this
       utility.

       The camcontrol utility has a number of primary functions, many of which
       support	an  optional  device identifier.  A device identifier can take
       one of three forms:

       deviceUNIT      Specify a device	name and unit number combination, like
		       "da5" or	"cd3".

       bus:target      Specify a bus number and	target id.  The	bus number can
		       be determined from the output of	"camcontrol  devlist".
		       The lun defaults	to 0.

       bus:target:lun  Specify	the  bus,  target and lun for a	device.	 (e.g.
		       1:2:0)

       The device identifier, if it is specified, must come immediately	 after
       the  function  name,  and before	any generic or function-specific argu-
       ments.  Note that the -n	and -u arguments described below will override
       any device name or unit number specified	beforehand.  The -n and	-u ar-
       guments will not	override a  specified  bus:target  or  bus:target:lun,
       however.

       Most  of	 the  camcontrol primary functions support these generic argu-
       ments:

       -C count	       SCSI command retry count.  In order for this  to	 work,
		       error recovery (-E) must	be turned on.

       -E	       Instruct	 the  kernel to	perform	generic	SCSI error re-
		       covery for the given command.  This is needed in	 order
		       for  the	 retry	count  (-C) to be honored.  Other than
		       retrying	commands, the generic error  recovery  in  the
		       code  will generally attempt to spin up drives that are
		       not spinning.  It may take some other actions,  depend-
		       ing upon	the sense code returned	from the command.

       -n dev_name     Specify the device type to operate on, e.g. "da", "cd".

       -Q task_attr    SCSI  task  attribute  for the command, if it is	a SCSI
		       command.	 This may be ordered, simple,  head,  or  aca.
		       In  most	cases this is not needed.  The default is sim-
		       ple, which works	with all SCSI devices.	The  task  at-
		       tribute may also	be specified numerically.

       -t timeout      SCSI  command  timeout  in seconds.  This overrides the
		       default timeout for any given command.

       -u unit_number  Specify the device unit number, e.g. "1", "5".

       -v	       Be verbose, print out sense information for failed SCSI
		       commands.

       Primary command functions:

       devlist	   List	all physical devices (logical units) attached  to  the
		   CAM	subsystem.   This  also	 includes a list of peripheral
		   drivers attached to each device.   With  the	 -v  argument,
		   SCSI	 bus number, adapter name and unit numbers are printed
		   as well.  On	the other hand,	with the -b argument, only the
		   bus adapter,	and unit information will be printed, and  de-
		   vice	information will be omitted.

       periphlist  List	 all  peripheral  drivers attached to a	given physical
		   device (logical unit).

       tur	   Send	the SCSI test unit ready (0x00)	command	to  the	 given
		   device.  The	camcontrol utility will	report whether the de-
		   vice	is ready or not.

       sense	   Send	 a SCSI	REQUEST	SENSE command (0x03) to	a device.  The
		   decoded sense (or hexdump) is printed to stdout.

		   -D	 Request descriptor sense instead of fixed sense.

		   -x	 Do a hexdump of the returned sense data.

       inquiry	   Send	a SCSI inquiry command (0x12) to  a  device.   By  de-
		   fault, camcontrol will print	out the	standard inquiry data,
		   device  serial  number, and transfer	rate information.  The
		   user	can specify that only certain types of inquiry data be
		   printed:

		   -D	 Get the standard inquiry data.

		   -S	 Print out the serial number.  If  this	 flag  is  the
			 only  one  specified,	camcontrol  will not print out
			 "Serial Number" before	 the  value  returned  by  the
			 drive.	 This is to aid	in script writing.

		   -R	 Print out transfer rate information.

       identify	   Send	a ATA identify command (0xec) to a device.

       reportluns  Send	 the  SCSI REPORT LUNS (0xA0) command to the given de-
		   vice.  By default, camcontrol will print out	 the  list  of
		   logical units (LUNs)	supported by the target	device.	 There
		   are a couple	of options to modify the output:

		   -c		   Just	print out a count of LUNs, not the ac-
				   tual	LUN numbers.

		   -l		   Just	 print	out the	LUNs, and do not print
				   out the count.

		   -r reporttype   Specify the type of report to request  from
				   the target:

				   default    Return the default report.  This
					      is the camcontrol	default.  Most
					      targets will support this	report
					      if  they support the REPORT LUNS
					      command.

				   wellknown  Return only well known LUNs.

				   all	      Return all available LUNs.

		   camcontrol will try to print	out LUN	numbers	in  a  reason-
		   able	 format.   It can understand the peripheral, flat, LUN
		   and extended	LUN formats.

       readcap	   Send	the SCSI READ CAPACITY command to the given device and
		   display the results.	 If the	device is larger than 2TB, the
		   SCSI	READ CAPACITY (16) service action will be sent to  ob-
		   tain	 the  full size	of the device.	By default, camcontrol
		   will	print out the last logical block of  the  device,  and
		   the blocksize of the	device in bytes.  To modify the	output
		   format, use the following options:

		   -b	  Just	print out the blocksize, not the last block or
			  device size.	This cannot be used with -N or -s.

		   -h	  Print	out the	device size in human readable (base 2,
			  1K ==	1024) format.  This implies -N and  cannot  be
			  used with -q or -b.

		   -H	  Print	 out  the  device size in human	readable (base
			  10, 1K == 1000) format.

		   -l	  Skip sending the SCSI	READ  CAPACITY	(10)  command.
			  Send only the	SCSI READ CAPACITY (16)	service	action
			  and  report its results.  When the two do not	match,
			  a quirk is needed to resolve the ambiguity.

		   -N	  Print	out the	number of blocks in the	device instead
			  of the last logical block.

		   -q	  Quiet, print out the numbers only  (separated	 by  a
			  comma	if -b or -s are	not specified).

		   -s	  Print	 out the last logical block or the size	of the
			  device only, and omit	the blocksize.

		   Note	that this command only displays	 the  information,  it
		   does	 not  update  the  kernel  data	 structures.   Use the
		   camcontrol reprobe subcommand to do that.

       start	   Send	the SCSI Start/Stop Unit (0x1B)	command	to  the	 given
		   device with the start bit set.

       stop	   Send	 the  SCSI Start/Stop Unit (0x1B) command to the given
		   device with the start bit cleared.

       load	   Send	the SCSI Start/Stop Unit (0x1B)	command	to  the	 given
		   device with the start bit set and the load/eject bit	set.

       eject	   Send	 the  SCSI Start/Stop Unit (0x1B) command to the given
		   device with the start bit cleared and  the  load/eject  bit
		   set.

       rescan	   Tell	 the  kernel to	scan all buses in the system (with the
		   all argument), the given bus	(XPT_SCAN_BUS),	bus:target:lun
		   or device (XPT_SCAN_LUN) for	new devices  or	 devices  that
		   have	 gone away.  The user may specify a scan of all	buses,
		   a single bus, or a lun.  Scanning all luns on a  target  is
		   not supported.

		   If  a  device is specified by peripheral name and unit num-
		   ber,	for instance da4, it may only be rescanned if that de-
		   vice	currently exists in the	CAM EDT	(Existing  Device  Ta-
		   ble).  If the device	is no longer there (see	camcontrol de-
		   vlist ), you	must use the bus:target:lun form to rescan it.

       reprobe	   Tell	the kernel to refresh the information about the	device
		   and notify the upper	layer, GEOM(4).	 This includes sending
		   the	SCSI  READ CAPACITY command and	updating the disk size
		   visible to the rest of the system.

       reset	   Tell	the kernel to reset all	buses in the system (with  the
		   all	argument),  the	given bus (XPT_RESET_BUS) by issuing a
		   SCSI	bus reset for that bus,	or to reset the	given bus:tar-
		   get:lun or device (XPT_RESET_DEV), typically	by  issuing  a
		   BUS	DEVICE	RESET message after connecting to that device.
		   Note	that this can have a destructive impact	on the system.

       defects	   Send	the SCSI READ DEFECT DATA (10) command (0x37)  or  the
		   SCSI	 READ DEFECT DATA (12) command (0xB7) to the given de-
		   vice, and print out any combination of: the total number of
		   defects, the	primary	defect list (PLIST), and the grown de-
		   fect	list (GLIST).

		   -f format	Specify	the requested  format  of  the	defect
				list.	The format argument is required.  Most
				drives support	the  physical  sector  format.
				Some  drives support the logical block format.
				Many drives, if	they do	not  support  the  re-
				quested	 format,  return the data in an	alter-
				nate format, along with	sense information  in-
				dicating that the requested data format	is not
				supported.  The	camcontrol utility attempts to
				detect this, and print out whatever format the
				drive  returns.	 If the	drive uses a non-stan-
				dard sense code	to report  that	 it  does  not
				support	 the requested format, camcontrol will
				probably see the error as a  failure  to  com-
				plete the request.

				The format options are:

				block	   Print   out	the  list  as  logical
					   blocks.  This is limited to	32-bit
					   block sizes,	and isn't supported by
					   many	modern drives.

				longblock  Print   out	the  list  as  logical
					   blocks.  This option	uses a	64-bit
					   block size.

				bfi	   Print  out  the  list in bytes from
					   index format.

				extbfi	   Print  out  the  list  in  extended
					   bytes  from	index format.  The ex-
					   tended format allows	for ranges  of
					   blocks to be	printed.

				phys	   Print out the list in physical sec-
					   tor	format.	  Most	drives support
					   this	format.

				extphys	   Print  out  the  list  in  extended
					   physical  sector  format.   The ex-
					   tended format allows	for ranges  of
					   blocks to be	printed.

		   -G		Print  out  the	 grown defect list.  This is a
				list of	bad blocks  that  have	been  remapped
				since the disk left the	factory.

		   -P		Print  out  the	 primary defect	list.  This is
				the list of defects that were present  in  the
				factory.

		   -q		When printing status information with -s, only
				print the number of defects.

		   -s		Just print the number of defects, not the list
				of defects.

		   -S offset	Specify	 the  starting	offset into the	defect
				list.  This implies using the SCSI READ	DEFECT
				DATA (12) command, as the 10 byte  version  of
				the  command  doesn't  support the address de-
				scriptor index field.  Not all drives  support
				the 12 byte command, and some drives that sup-
				port the 12 byte command don't support the ad-
				dress descriptor index field.

		   -X		Print  out  defects  in	 hexadecimal (base 16)
				form instead of	base 10	form.

		   If neither -P nor -G	is specified,  camcontrol  will	 print
		   out	the  number  of	 defects given in the READ DEFECT DATA
		   header returned from	the drive.  Some drives	will report  0
		   defects  if	neither	 the primary or	grown defect lists are
		   requested.

       modepage	   Allows the user to display and optionally edit a SCSI  mode
		   page.     The    mode   page	  formats   are	  located   in
		   /usr/share/misc/scsi_modes.	 This  can  be	overridden  by
		   specifying  a  different file in the	SCSI_MODES environment
		   variable.  The modepage command takes several arguments:

		   -6		 Use 6 byte MODE commands instead  of  default
				 10 byte.  Old devices may not support 10 byte
				 MODE  commands,  while	new devices may	not be
				 able to report	all mode  pages	 with  6  byte
				 commands.    If   not	specified,  camcontrol
				 starts	with 10	byte commands and  falls  back
				 to 6 byte on error.

		   -d		 Disable block descriptors for mode sense.

		   -D		 Display/edit  block  descriptors  instead  of
				 mode page.

		   -L		 Use long LBA block descriptors.  Allows  num-
				 ber of	LBAs bigger then 2^^32.

		   -b		 Displays mode page data in binary format.

		   -e		 This  flag  allows the	user to	edit values in
				 the mode page.	 The user may either edit mode
				 page values with the text editor  pointed  to
				 by his	EDITOR environment variable, or	supply
				 mode  page  values  via standard input, using
				 the same format that camcontrol uses to  dis-
				 play  mode  page  values.  The	editor will be
				 invoked if camcontrol detects	that  standard
				 input is terminal.

		   -l		 Lists all available mode pages.  If specified
				 more then once, also lists subpages.

		   -m page[,subpage]
				 This  specifies  the  number of the mode page
				 and optionally	subpage	the user would like to
				 view and/or edit.  This argument is mandatory
				 unless	-l is specified.

		   -P pgctl	 This allows the user to specify the page con-
				 trol field.  Possible values are:
				 0    Current values
				 1    Changeable values
				 2    Default values
				 3    Saved values

       cmd	   Allows the user to send an arbitrary	ATA or SCSI CDB	to any
		   device.  The	cmd function requires the -c argument to spec-
		   ify SCSI CDB	or the -a  argument  to	 specify  ATA  Command
		   Block  registers values.  Other arguments are optional, de-
		   pending on the command type.	 The command and data specifi-
		   cation syntax is documented in cam_cdbparse(3).   NOTE:  If
		   the	CDB specified causes data to be	transferred to or from
		   the SCSI device in question,	you MUST specify either	-i  or
		   -o.

		   -a cmd [args]      This  specifies  the  content  of	12 ATA
				      Command Block registers  (command,  fea-
				      tures,  lba_low,	lba_mid, lba_high, de-
				      vice,	lba_low_exp,	  lba_mid_exp.
				      lba_high_exp,	features_exp,	  sec-
				      tor_count, sector_count_exp).

		   -c cmd [args]      This specifies the SCSI CDB.  SCSI  CDBs
				      may be 6,	10, 12 or 16 bytes.

		   -d		      Specifies	 DMA  protocol	to be used for
				      ATA command.

		   -f		      Specifies	FPDMA  (NCQ)  protocol	to  be
				      used for ATA command.

		   -i len fmt	      This  specifies  the  amount  of data to
				      read, and	how it	should	be  displayed.
				      If  the format is	`-', len bytes of data
				      will be read from	the device and written
				      to standard output.

		   -o len fmt [args]  This specifies the amount	of data	to  be
				      written  to  a device, and the data that
				      is to be written.	 If the	format is `-',
				      len bytes	of  data  will	be  read  from
				      standard	input  and  written to the de-
				      vice.

		   -r fmt	      This specifies that 11 result  ATA  Com-
				      mand Block registers should be displayed
				      (status,	  error,   lba_low,   lba_mid,
				      lba_high,	     device,	  lba_low_exp,
				      lba_mid_exp, lba_high_exp, sector_count,
				      sector_count_exp), and how.  If the for-
				      mat  is `-', 11 result registers will be
				      written to standard output in hex.

       smpcmd	   Allows the user to send an arbitrary	Serial Management Pro-
		   tocol (SMP) command to a device.  The smpcmd	 function  re-
		   quires  the	-r  argument  to specify the SMP request to be
		   sent, and the -R argument to	specify	the format of the  SMP
		   response.   The syntax for the SMP request and response ar-
		   guments is documented in cam_cdbparse(3).

		   Note	that SAS adapters that	support	 SMP  passthrough  (at
		   least the currently known adapters) do not accept CRC bytes
		   from	the user in the	request	and do not pass	CRC bytes back
		   to  the  user  in the response.  Therefore users should not
		   include the CRC bytes in the	length of the request and  not
		   expect CRC bytes to be returned in the response.

		   -r len fmt [args]  This  specifies  the size	of the SMP re-
				      quest, without the CRC  bytes,  and  the
				      SMP  request  format.   If the format is
				      `-', len bytes of	data will be read from
				      standard input and written  as  the  SMP
				      request.

		   -R len fmt [args]  This  specifies  the  size of the	buffer
				      allocated	for the	SMP response, and  the
				      SMP  response  format.  If the format is
				      `-', len bytes of	data will be allocated
				      for the response and the	response  will
				      be written to standard output.

       smprg	   Allows  the	user  to  send	the Serial Management Protocol
		   (SMP) Report	General	command	to a device.  camcontrol  will
		   display  the	 data  returned	by the Report General command.
		   If the SMP target supports the long	response  format,  the
		   additional  data  will be requested and displayed automati-
		   cally.

		   -l	     Request the long response format only.   Not  all
			     SMP  targets  support  the	 long response format.
			     This option causes	camcontrol to skip sending the
			     initial report general request without  the  long
			     bit  set  and only	issue a	report general request
			     with the long bit set.

       smppc	   Allows the user to issue  the  Serial  Management  Protocol
		   (SMP)  PHY  Control	command	 to  a	device.	 This function
		   should be used with some caution, as	it can render  devices
		   inaccessible,  and  could potentially cause data corruption
		   as well.  The -p argument is	required to specify the	PHY to
		   operate on.

		   -p phy	      Specify the PHY to operate on.  This ar-
				      gument is	required.

		   -l		      Request the long	request/response  for-
				      mat.   Not  all  SMP targets support the
				      long response format.  For the PHY  Con-
				      trol  command,  this  currently only af-
				      fects whether the	request	length is  set
				      to a value other than 0.

		   -o operation	      Specify  a  PHY control operation.  Only
				      one -o operation may be specified.   The
				      operation	 may  be specified numerically
				      (in decimal, hexadecimal,	or  octal)  or
				      one of the following operation names may
				      be specified:

				      nop		No  operation.	 It is
							not necessary to spec-
							ify this argument.

				      linkreset		Send  the  LINK	 RESET
							command	to the phy.

				      hardreset		Send  the  HARD	 RESET
							command	to the phy.

				      disable		Send the DISABLE  com-
							mand to	the phy.  Note
							that the LINK RESET or
							HARD   RESET  commands
							should	re-enable  the
							phy.

				      clearerrlog	Send  the  CLEAR ERROR
							LOG   command.	  This
							clears	the  error log
							counters for the spec-
							ified phy.

				      clearaffiliation	Send the CLEAR AFFILI-
							ATION  command.	  This
							clears the affiliation
							from the STP initiator
							port with the same SAS
							address	  as  the  SMP
							initiator   that   re-
							quests the clear oper-
							ation.

				      sataportsel	Send the TRANSMIT SATA
							PORT  SELECTION	SIGNAL
							command	 to  the  phy.
							This will cause	a SATA
							port  selector	to use
							the given phy  as  its
							active	phy  and  make
							the  other  phy	 inac-
							tive.

				      clearitnl		Send the CLEAR STP I_T
							NEXUS  LOSS command to
							the PHY.

				      setdevname	Send the SET  ATTACHED
							DEVICE NAME command to
							the   PHY.   This  re-
							quires the -d argument
							to specify the	device
							name.

		   -d name	      Specify  the attached device name.  This
				      option is	needed with the	-o  setdevname
				      phy  operation.	The  name  is a	64-bit
				      number, and can be specified in decimal,
				      hexadecimal or octal format.

		   -m rate	      Set the minimum physical link  rate  for
				      the  phy.	  This	is a numeric argument.
				      Currently	known link rates are:

				      0x0    Do	not change current value.

				      0x8    1.5 Gbps

				      0x9    3 Gbps

				      0xa    6 Gbps

				      Other values may be specified for	 newer
				      physical link rates.

		   -M rate	      Set  the	maximum	physical link rate for
				      the phy.	This is	 a  numeric  argument.
				      See  the	-m  argument  description  for
				      known link rate arguments.

		   -T pp_timeout      Set the partial pathway  timeout	value,
				      in  microseconds.	 See the ANSI SAS Pro-
				      tocol Layer (SPL)	specification for more
				      information on this field.

		   -a enable|disable  Enable or	disable	SATA slumber phy power
				      conditions.

		   -A enable|disable  Enable or	 disable  SATA	partial	 power
				      conditions.

		   -s enable|disable  Enable  or disable SAS slumber phy power
				      conditions.

		   -S enable|disable  Enable or	disable	SAS partial phy	 power
				      conditions.

       smpphylist  List	 phys  attached	 to a SAS expander, the	address	of the
		   end device attached to the phy, and the  inquiry  data  for
		   that	device and peripheral devices attached to that device.
		   The	inquiry	 data  and peripheral devices are displayed if
		   available.

		   -l	  Turn on the long response format for the  underlying
			  SMP commands used for	this command.

		   -q	  Only print out phys that are attached	to a device in
			  the CAM EDT (Existing	Device Table).

       smpmaninfo  Send	the SMP	Report Manufacturer Information	command	to the
		   device and display the response.

		   -l	  Turn	on the long response format for	the underlying
			  SMP commands used for	this command.

       debug	   Turn	on CAM debugging printfs in the	kernel.	 This requires
		   options CAMDEBUG in your kernel config file.	 WARNING:  en-
		   abling debugging printfs currently causes an	EXTREME	number
		   of kernel printfs.  You may have difficulty turning off the
		   debugging printfs once they start, since the	kernel will be
		   busy	printing messages and unable to	service	other requests
		   quickly.  The debug function	takes a	number of arguments:

		   -I		       Enable CAM_DEBUG_INFO printfs.

		   -P		       Enable CAM_DEBUG_PERIPH printfs.

		   -T		       Enable CAM_DEBUG_TRACE printfs.

		   -S		       Enable CAM_DEBUG_SUBTRACE printfs.

		   -X		       Enable CAM_DEBUG_XPT printfs.

		   -c		       Enable	CAM_DEBUG_CDB  printfs.	  This
				       will cause the kernel to	print out  the
				       SCSI  CDBs  sent	 to  the specified de-
				       vice(s).

		   -p		       Enable CAM_DEBUG_PROBE printfs.

		   all		       Enable debugging	for all	devices.

		   off		       Turn off	debugging for all devices

		   bus[:target[:lun]]  Turn on debugging for  the  given  bus,
				       target  or  lun.	  If the lun or	target
				       and lun are  not	 specified,  they  are
				       wildcarded.   (i.e.,  just specifying a
				       bus turns on debugging printfs for  all
				       devices on that bus.)

       tags	   Show	or set the number of "tagged openings" or simultaneous
		   transactions	 we  attempt  to queue to a particular device.
		   By default, the tags	command, with no command-specific  ar-
		   guments  (i.e.,  only  generic  arguments)  prints  out the
		   "soft" maximum number of transactions that can be queued to
		   the device in question.  For	more detailed information, use
		   the -v argument described below.

		   -N tags  Set	the number of tags for the given device.  This
			    must be between the	minimum	and maximum number set
			    in the kernel quirk	table.	The default  for  most
			    devices  that support tagged queueing is a minimum
			    of 2 and a maximum of 255.	The minimum and	 maxi-
			    mum	values for a given device may be determined by
			    using the -v switch.  The meaning of the -v	switch
			    for	this camcontrol	subcommand is described	below.

		   -q	    Be	quiet,	and  do	not report the number of tags.
			    This is generally used when	setting	the number  of
			    tags.

		   -v	    The	verbose	flag has special functionality for the
			    tags  argument.  It	causes camcontrol to print out
			    the	 tagged	 queueing  related   fields   of   the
			    XPT_GDEV_TYPE CCB:

			    dev_openings   This	 is the	amount of capacity for
					   transactions	queued to a given  de-
					   vice.

			    dev_active	   This	 is the	number of transactions
					   currently queued to a device.

			    allocated	   This	is the number  of  CCBs	 allo-
					   cated for the device.

			    held	   The	held  count  is	 the number of
					   CCBs	 held  by  peripheral  drivers
					   that	 have  either  just  been com-
					   pleted or are about to be  released
					   to  the transport layer for service
					   by a	device.	 Held CCBs reserve ca-
					   pacity on a given device.

			    mintags	   This	is the current "hard"  minimum
					   number  of transactions that	can be
					   queued to a device  at  once.   The
					   dev_openings	 value above cannot go
					   below  this	number.	  The  default
					   value for mintags is	2, although it
					   may be set higher or	lower for var-
					   ious	devices.

			    maxtags	   This	 is  the "hard"	maximum	number
					   of transactions that	can be	queued
					   to  a  device  at  one  time.   The
					   dev_openings	value cannot go	 above
					   this	number.	 The default value for
					   maxtags  is 255, although it	may be
					   set higher or lower for various de-
					   vices.

       negotiate   Show	or negotiate various communication  parameters.	  Some
		   controllers	may  not  support  setting or changing some of
		   these values.  For instance,	the Adaptec  174x  controllers
		   do  not  support  changing  a device's sync rate or offset.
		   The camcontrol utility will not attempt to set the  parame-
		   ter	if  the	 controller indicates that it does not support
		   setting the parameter.  To find  out	 what  the  controller
		   supports,  use the -v flag.	The meaning of the -v flag for
		   the negotiate command is described below.  Also, some  con-
		   troller  drivers do not support setting negotiation parame-
		   ters, even if the underlying	controller  supports  negotia-
		   tion	 changes.  Some	controllers, such as the Advansys wide
		   controllers,	support	enabling and disabling synchronous ne-
		   gotiation for a device, but do not support setting the syn-
		   chronous negotiation	rate.

		   -a		      Attempt to make the negotiation settings
				      take effect  immediately	by  sending  a
				      Test Unit	Ready command to the device.

		   -c		      Show  or	set  current  negotiation set-
				      tings.  This is the default.

		   -D enable|disable  Enable or	disable	disconnection.

		   -M mode	      Set ATA mode.

		   -O offset	      Set the command delay offset.

		   -q		      Be quiet,	do not print  anything.	  This
				      is generally useful when you want	to set
				      a	 parameter, but	do not want any	status
				      information.

		   -R syncrate	      Change the synchronization  rate	for  a
				      device.	The  sync  rate	 is a floating
				      point value specified in MHz.   So,  for
				      instance,	 `20.000' is a legal value, as
				      is `20'.

		   -T enable|disable  Enable or	disable	tagged queueing	for  a
				      device.

		   -U		      Show  or	set user negotiation settings.
				      The default is to	show  or  set  current
				      negotiation settings.

		   -v		      The  verbose  switch has special meaning
				      for the negotiate	subcommand.  It	causes
				      camcontrol to print out the contents  of
				      a	 Path  Inquiry (XPT_PATH_INQ) CCB sent
				      to the controller	driver.

		   -W bus_width	      Specify the bus width to negotiate  with
				      a	device.	 The bus width is specified in
				      bits.  The only useful values to specify
				      are  8, 16, and 32 bits.	The controller
				      must support the bus width  in  question
				      in order for the setting to take effect.

		   In general, sync rate and offset settings will not take ef-
		   fect	 for a device until a command has been sent to the de-
		   vice.  The -a switch	above will automatically send  a  Test
		   Unit	 Ready	to  the	 device	so negotiation parameters will
		   take	effect.

       format	   Issue the SCSI FORMAT UNIT command to the named device.

		   WARNING! WARNING! WARNING!

		   Low level formatting	a disk will destroy ALL	 data  on  the
		   disk.  Use extreme caution when issuing this	command.  Many
		   users  low-level format disks that do not really need to be
		   low-level formatted.	 There are  relatively	few  scenarios
		   that	 call for low-level formatting a disk.	One reason for
		   low-level formatting	a disk is to initialize	the disk after
		   changing its	physical sector	size.  Another reason for low-
		   level formatting a disk is to revive	the disk  if  you  are
		   getting  "medium  format corrupted" errors from the disk in
		   response to read and	write requests.

		   Some	disks take longer than others to format.  Users	should
		   specify a timeout long enough to allow the format  to  com-
		   plete.  The default format timeout is 3 hours, which	should
		   be  long  enough for	most disks.  Some hard disks will com-
		   plete a format operation in a very short period of time (on
		   the order of	5 minutes or less).  This is often because the
		   drive does not really support the FORMAT UNIT command -- it
		   just	accepts	the command, waits a few minutes and then  re-
		   turns it.

		   The `format'	subcommand takes several arguments that	modify
		   its	default	behavior.  The -q and -y arguments can be use-
		   ful for scripts.

		   -q	   Be quiet, do	not print any status  messages.	  This
			   option will not disable the questions, however.  To
			   disable questions, use the -y argument, below.

		   -r	   Run in "report only"	mode.  This will report	status
			   on a	format that is already running on the drive.

		   -w	   Issue  a non-immediate format command.  By default,
			   camcontrol issues the FORMAT	UNIT command with  the
			   immediate  bit set.	This tells the device to imme-
			   diately return the format command, before the  for-
			   mat has actually completed.	Then, camcontrol gath-
			   ers	SCSI  sense  information from the device every
			   second to determine how far	along  in  the	format
			   process  it	is.   If the -w	argument is specified,
			   camcontrol will issue a non-immediate  format  com-
			   mand,  and  will be unable to print any information
			   to let the user know	what percentage	 of  the  disk
			   has been formatted.

		   -y	   Do  not  ask	any questions.	By default, camcontrol
			   will	ask the	user if	he/she really wants to	format
			   the	disk in	question, and also if the default for-
			   mat command timeout is acceptable.  The  user  will
			   not	be  asked  about  the  timeout if a timeout is
			   specified on	the command line.

       sanitize	   Issue the SANITIZE command to the named device.

		   WARNING! WARNING! WARNING!

		   ALL data on the disk	will be	destroyed or  made  inaccessi-
		   ble.	  Recovery  of	the data is not	possible.  Use extreme
		   caution when	issuing	this command.

		   The `sanitize' subcommand takes several arguments that mod-
		   ify its default behavior.  The -q and -y arguments  can  be
		   useful for scripts.

		   -a operation
			   Specify the sanitize	operation to perform.

			   overwrite	     Perform an	overwrite operation by
					     writing a user supplied data pat-
					     tern  to  the  device one or more
					     times.  The pattern is  given  by
					     the  -P  argument.	 The number of
					     times is given by	the  -c	 argu-
					     ment.

			   block	     Perform  a	block erase operation.
					     All the device's blocks  are  set
					     to	 a vendor defined value, typi-
					     cally zero.

			   crypto	     Perform a cryptographic erase op-
					     eration.  The encryption keys are
					     changed to	prevent	the decryption
					     of	the data.

			   exitfailure	     Exits a previously	 failed	 sani-
					     tize  operation.	A failed sani-
					     tize operation can	only be	exited
					     if	it was run in the unrestricted
					     completion	mode, as  provided  by
					     the -U argument.

		   -c passes
			   The number of passes	when performing	an `overwrite'
			   operation.  Valid values are	between	1 and 31.  The
			   default is 1.

		   -I	   When	 performing an `overwrite' operation, the pat-
			   tern	is inverted between consecutive	passes.

		   -P pattern
			   Path	to the file containing the pattern to use when
			   performing an `overwrite' operation.	  The  pattern
			   is repeated as needed to fill each block.

		   -q	   Be  quiet,  do not print any	status messages.  This
			   option will not disable the questions, however.  To
			   disable questions, use the -y argument, below.

		   -U	   Perform the sanitize	in the unrestricted completion
			   mode.  If the operation fails, it can later be  ex-
			   ited	with the `exitfailure' operation.

		   -r	   Run in "report only"	mode.  This will report	status
			   on a	sanitize that is already running on the	drive.

		   -w	   Issue  a  non-immediate  sanitize  command.	By de-
			   fault, camcontrol issues the	SANITIZE command  with
			   the	immediate  bit	set.  This tells the device to
			   immediately return the sanitize command, before the
			   sanitize has	actually completed.  Then,  camcontrol
			   gathers  SCSI  sense	 information  from  the	device
			   every second	to determine how far along in the san-
			   itize process it is.	 If the	-w argument is	speci-
			   fied,  camcontrol  will issue a non-immediate sani-
			   tize	command, and will be unable to print  any  in-
			   formation  to  let the user know what percentage of
			   the disk has	been sanitized.

		   -y	   Do not ask any questions.  By  default,  camcontrol
			   will	 ask  the user if he/she really	wants to sani-
			   tize	the disk in question, and also if the  default
			   sanitize  command  timeout is acceptable.  The user
			   will	not be asked about the timeout if a timeout is
			   specified on	the command line.

       idle	   Put ATA device into IDLE state.   Optional  parameter  (-t)
		   specifies  automatic	standby	timer value in seconds.	 Value
		   0 disables timer.

       standby	   Put ATA device into STANDBY state.  Optional	parameter (-t)
		   specifies automatic standby timer value in seconds.	 Value
		   0 disables timer.

       sleep	   Put	ATA  device  into SLEEP	state.	Note that the only way
		   get device out of this state	may be reset.

       powermode   Report ATA device power mode.

       apm	   It optional parameter (-l) specified, enables and sets  ad-
		   vanced  power  management  level, where 1 --	minimum	power,
		   127 -- maximum performance with  standby,  128  --  minimum
		   power  without standby, 254 -- maximum performance.	If not
		   specified --	APM is disabled.

       aam	   It optional parameter (-l) specified, enables and sets  au-
		   tomatic  acoustic  management  level,  where	 1  -- minimum
		   noise, 254 -- maximum performance.  If not specified	-- AAM
		   is disabled.

       security	   Update or report security settings, using an	 ATA  identify
		   command  (0xec).  By	default, camcontrol will print out the
		   security support and	associated  settings  of  the  device.
		   The security	command	takes several arguments:

		   -d pwd

		     Disable  device security using the	given password for the
		     selected user according to	the devices  configured	 secu-
		     rity level.

		   -e pwd

		     Erase  the	 device	 using	the given password for the se-
		     lected user.

		     WARNING! WARNING! WARNING!

		     Issuing a secure erase will ERASE ALL user	 data  on  the
		     device and	may take several hours to complete.

		     When  this	 command  is used against an SSD drive all its
		     cells will	be marked as empty, restoring  it  to  factory
		     default write performance.	 For SSD's this	action usually
		     takes just	a few seconds.

		   -f

		     Freeze  the  security  configuration of the specified de-
		     vice.

		     After command completion any other	commands  that	update
		     the  device  lock	mode shall be command aborted.	Frozen
		     mode is disabled by power-off or hardware reset.

		   -h pwd

		     Enhanced erase the	device using the  given	 password  for
		     the selected user.

		     WARNING! WARNING! WARNING!

		     Issuing an	enhanced secure	erase will ERASE ALL user data
		     on	the device and may take	several	hours to complete.

		     An	 enhanced  erase writes	predetermined data patterns to
		     all user data areas, all  previously  written  user  data
		     shall  be	overwritten,  including	 sectors  that	are no
		     longer in use due to reallocation.

		   -k pwd

		     Unlock the	device using the given password	 for  the  se-
		     lected  user according to the devices configured security
		     level.

		   -l high|maximum

		     Specifies which security level to set when	issuing	 a  -s
		     pwd command.  The security	level determines device	behav-
		     ior  when	the  master password is	used to	unlock the de-
		     vice.  When the security level is set to high the	device
		     requires  the  unlock  command and	the master password to
		     unlock.  When the security	level is set  to  maximum  the
		     device  requires  a secure	erase with the master password
		     to	unlock.

		     This option must be used in conjunction with one  of  the
		     security action commands.

		     Defaults to high

		   -q

		     Be	 quiet,	do not print any status	messages.  This	option
		     will not disable  the  questions,	however.   To  disable
		     questions,	use the	-y argument, below.

		   -s pwd

		     Password  the  device  (enable  security) using the given
		     password for the selected user.  This option can be  com-
		     bined with	other options such as -e pwd

		     A	master	password  may be set in	a addition to the user
		     password.	The purpose of the master password is to allow
		     an	administrator to establish a password that is kept se-
		     cret from the user, and which may be used to  unlock  the
		     device if the user	password is lost.

		     Note:  Setting the	master password	does not enable	device
		     security.

		     If	the master password is set and the  drive  supports  a
		     Master Revision Code feature the Master Password Revision
		     Code will be decremented.

		   -T timeout

		     Overrides the default timeout, specified in seconds, used
		     for  both	-e  and	 -h  this is useful if your system has
		     problems processing long timeouts correctly.

		     Usually the timeout is calculated	from  the  information
		     stored  on	the drive if present, otherwise	it defaults to
		     2 hours.

		   -U user|master

		     Specifies which user to set / use for the running	action
		     command,  valid values are	user or	master and defaults to
		     master if not set.

		     This option must be used in conjunction with one  of  the
		     security action commands.

		     Defaults to master

		   -y

		     Confirm  yes  to  dangerous  options  such	 as -e without
		     prompting for confirmation.

		   If the password specified for any action commands does  not
		   match  the  configured  password for	the specified user the
		   command will	fail.

		   The password	in all cases  is  limited  to  32  characters,
		   longer passwords will fail.

       hpa	   Update  or  report Host Protected Area details.  By default
		   camcontrol will print out the HPA  support  and  associated
		   settings  of	the device.  The hpa command takes several op-
		   tional arguments:

		   -f

		     Freeze the	HPA configuration of the specified device.

		     After command completion any other	commands  that	update
		     the  HPA  configuration shall be command aborted.	Frozen
		     mode is disabled by power-off or hardware reset.

		   -l

		     Lock the HPA configuration	of the device until a success-
		     ful call to unlock	or the next power-on reset occurs.

		   -P

		     Make the HPA max sectors persist across power-on reset or
		     a hardware	reset.	This must be used in combination  with
		     -s	max_sectors

		   -p pwd

		     Set  the  HPA  configuration password required for	unlock
		     calls.

		   -q

		     Be	quiet, do not print any	status messages.  This	option
		     will  not	disable	 the questions.	 To disable questions,
		     use the -y	argument, below.

		   -s max_sectors

		     Configures	the maximum user accessible sectors of the de-
		     vice.  This will change the number	of sectors the	device
		     reports.

		     WARNING! WARNING! WARNING!

		     Changing  the  max	 sectors of a device using this	option
		     will make the data	on the	device	beyond	the  specified
		     value inaccessible.

		     Only one successful -s max_sectors	call can be made with-
		     out a power-on reset or a hardware	reset of the device.

		   -U pwd

		     Unlock  the HPA configuration of the specified device us-
		     ing the given password.  If the password  specified  does
		     not  match	the password configured	via -p pwd the command
		     will fail.

		     After 5 failed unlock calls, due to password  miss-match,
		     the  device will refuse additional	unlock calls until af-
		     ter a power-on reset.

		   -y

		     Confirm yes to  dangerous	options	 such  as  -e  without
		     prompting for confirmation

		   The	password for all HPA commands is limited to 32 charac-
		   ters, longer	passwords will fail.

       ama	   Update or report Accessible Max Address Configuration.   By
		   default  camcontrol	will  print out	the Accessible Max Ad-
		   dress Configuration support and associated settings of  the
		   device.  The	ama command takes several optional arguments:

		   -f

		     Freeze  the  Accessible  Max Address Configuration	of the
		     specified device.

		     After command completion any other	commands  that	update
		     the  configuration	shall be command aborted.  Frozen mode
		     is	disabled by power-off.

		   -q

		     Be	quiet, do not print any	status messages.

		   -s max_sectors

		     Configures	the maximum user accessible sectors of the de-
		     vice.  This will change the number	of sectors the	device
		     reports.

		     WARNING! WARNING! WARNING!

		     Changing  the  max	 sectors of a device using this	option
		     will make the data	on the	device	beyond	the  specified
		     value indeterminate.

		     Only one successful -s max_sectors	call can be made with-
		     out a power-on reset of the device.

       fwdownload  Program  firmware of	the named SCSI or ATA device using the
		   image file provided.

		   If the device is a SCSI device and  it  provides  a	recom-
		   mended  timeout  for	 the  WRITE  BUFFER  command  (see the
		   camcontrol opcodes subcommand), that	timeout	will  be  used
		   for	the  firmware download.	 The drive-recommended timeout
		   value may be	overridden on the command line with the	-t op-
		   tion.

		   Current list	of supported vendors for SCSI/SAS drives:

		   HGST	       Tested  with  4TB  SAS  drives,	model	number
			       HUS724040ALS640.

		   HITACHI

		   HP

		   IBM	       Tested  with LTO-5 (ULTRIUM-HH5)	and LTO-6 (UL-
			       TRIUM-HH6) tape drives.	There  is  a  separate
			       table entry for hard drives, because the	update
			       method  for  hard  drives is different than the
			       method for tape drives.

		   PLEXTOR

		   QUALSTAR

		   QUANTUM

		   SAMSUNG     Tested with SM1625 SSDs.

		   SEAGATE     Tested with  Constellation  ES  (ST32000444SS),
			       ES.2  (ST33000651SS)  and  ES.3	(ST1000NM0023)
			       drives.

		   SmrtStor    Tested	  with	   400GB     Optimus	  SSDs
			       (TXA2D20400GA6001).

		   TOSHIBA     Tested with 22TB	MG10SFA22TE SAS	drives.

		   WARNING! WARNING! WARNING!

		   Little  testing  has	 been done to make sure	that different
		   device models from each vendor work correctly with the  fw-
		   download command.  A	vendor name appearing in the supported
		   list	 means	only that firmware of at least one device type
		   from	that vendor has	successfully been programmed with  the
		   fwdownload command.	Extra caution should be	taken when us-
		   ing	this  command  since there is no guarantee it will not
		   break a device from the listed vendors.   Ensure  that  you
		   have	 a recent backup of the	data on	the device before per-
		   forming a firmware update.

		   Note	that unknown SCSI protocol devices will	 not  be  pro-
		   grammed, since there	is little chance of the	firmware down-
		   load	succeeding.

		   camcontrol  will  currently	attempt	a firmware download to
		   any ATA or SATA device, since the standard ATA DOWNLOAD MI-
		   CROCODE command may work.  Firmware downloads  to  ATA  and
		   SATA	 devices  are supported	for devices connected to stan-
		   dard	ATA and	SATA controllers, and devices connected	to SAS
		   controllers with SCSI to ATA	 translation  capability.   In
		   the	latter case, camcontrol	uses the SCSI ATA PASS-THROUGH
		   command to send the ATA DOWNLOAD MICROCODE command  to  the
		   drive.   Some SCSI to ATA translation implementations don't
		   work	fully when translating SCSI WRITE BUFFER  commands  to
		   ATA	 DOWNLOAD  MICROCODE  commands,	 but  do  support  ATA
		   passthrough well enough to do a firmware download.

		   -f fw_image	Path to	the firmware image file	 to  be	 down-
				loaded to the specified	device.

		   -q		Do  not	 print	informational  messages,  only
				print errors.  This option should be used with
				the -y option to suppress all output.

		   -s		Run in simulation mode.	 Device	checks are run
				and the	confirmation dialog is shown,  but  no
				firmware download will occur.

		   -v		Show  SCSI  or	ATA  errors  in	the event of a
				failure.

				In simulation mode, print out the SCSI CDB  or
				ATA register values that would be used for the
				firmware download command.

		   -y		Do not ask for confirmation.

       persist	   Persistent  reservation  support.   Persistent reservations
		   are a way to	reserve	a particular SCSI LUN for use  by  one
		   or  more  SCSI  initiators.	If the -i option is specified,
		   camcontrol will issue the SCSI PERSISTENT RESERVE  IN  com-
		   mand	 using the requested service action.  If the -o	option
		   is specified, camcontrol will issue the SCSI	PERSISTENT RE-
		   SERVE OUT command using the requested service action.   One
		   of those two	options	is required.

		   Persistent  reservations  are complex, and fully explaining
		   them	is outside the scope of	 this  manual.	 Please	 visit
		   https://www.t10.org	and download the latest	SPC spec for a
		   full	explanation of persistent reservations.

		   -i mode   Specify the service action	for the	PERSISTENT RE-
			     SERVE IN command.	Supported service actions:

			     read_keys		  Report the  current  persis-
						  tent	reservation generation
						  (PRgeneration) and any  reg-
						  istered keys.

			     read_reservation	  Report the persistent	reser-
						  vation, if any.

			     report_capabilities  Report the persistent	reser-
						  vation  capabilities	of the
						  LUN.

			     read_full_status	  Report the  full  status  of
						  persistent  reservations  on
						  the LUN.

		   -o mode   Specify the service action	for the	PERSISTENT RE-
			     SERVE OUT command.	 For service actions like reg-
			     ister that	are components of other	service	action
			     names, the	entire name must be specified.	Other-
			     wise, enough of the service action	name  must  be
			     specified	to  distinguish	it from	other possible
			     service actions.  Supported service actions:

			     register	      Register a reservation key  with
					      the LUN or unregister a reserva-
					      tion  key.   To  register	a key,
					      specify the requested key	as the
					      Service Action Reservation  Key.
					      To unregister a key, specify the
					      previously registered key	as the
					      Reservation  Key.	  To  change a
					      key, specify the old key as  the
					      Reservation  Key and the new key
					      as the Service  Action  Reserva-
					      tion Key.

			     register_ignore  This  is similar to the register
					      subcommand,  except   that   the
					      Reservation Key is ignored.  The
					      Service  Action  Reservation Key
					      will overwrite any previous  key
					      registered for the initiator.

			     reserve	      Create  a	 reservation.	A  key
					      must be registered with the  LUN
					      before  the LUN can be reserved,
					      and it must be specified as  the
					      Reservation  Key.	  The  type of
					      reservation must also be	speci-
					      fied.  The scope defaults	to LUN
					      scope  (LU_SCOPE),  but  may  be
					      changed.

			     release	      Release  a   reservation.	   The
					      Reservation  Key	must be	speci-
					      fied.

			     clear	      Release a	reservation and	remove
					      all keys from the	 device.   The
					      Reservation  Key	must be	speci-
					      fied.

			     preempt	      Remove a	reservation  belonging
					      to   another   initiator.	   The
					      Reservation Key must  be	speci-
					      fied.  The Service Action	Reser-
					      vation Key may be	specified, de-
					      pending  on  the operation being
					      performed.

			     preempt_abort    Remove a	reservation  belonging
					      to  another  initiator and abort
					      all  outstanding	commands  from
					      that initiator.  The Reservation
					      Key must be specified.  The Ser-
					      vice  Action Reservation Key may
					      be specified, depending  on  the
					      operation	being performed.

			     register_move    Register	another	initiator with
					      the LUN, and establish a	reser-
					      vation  on the LUN for that ini-
					      tiator.  The Reservation Key and
					      Service Action  Reservation  Key
					      must be specified.

			     replace_lost     Replace  Lost Reservation	infor-
					      mation.

		   -a	     Set the All Target	Ports (ALL_TG_PT)  bit.	  This
			     requests  that the	key registration be applied to
			     all target	ports and not just the particular tar-
			     get port that receives the	 command.   This  only
			     applies  to  the register and register_ignore ac-
			     tions.

		   -I tid    Specify a Transport ID.  This only	applies	to the
			     Register and Register and	Move  service  actions
			     for  Persistent  Reserve Out.  Multiple Transport
			     IDs may be	specified with multiple	-I  arguments.
			     With  the Register	service	action,	specifying one
			     or	more Transport IDs implicitly enables  the  -S
			     option  which turns on the	SPEC_I_PT bit.	Trans-
			     port IDs generally	have the format	protocol,id.

			     SAS    A SAS Transport ID consists	of "sas," fol-
				    lowed by a 64-bit SAS address.  For	 exam-
				    ple:

					  sas,0x1234567812345678

			     FC	    A  Fibre  Channel Transport	ID consists of
				    "fcp," followed by a 64-bit	Fibre  Channel
				    World Wide Name.  For example:

					  fcp,0x1234567812345678

			     SPI    A Parallel SCSI address consists of	"spi,"
				    followed  by  a SCSI target	ID and a rela-
				    tive target	port identifier.  For example:

					  spi,4,1

			     1394   An IEEE 1394 (Firewire) Transport ID  con-
				    sists  of  "sbp,"  followed	 by  a	64-bit
				    EUI-64 IEEE	1394 node  unique  identifier.
				    For	example:

					  sbp,0x1234567812345678

			     RDMA   A  SCSI over RDMA Transport	ID consists of
				    "srp," followed by a 128-bit RDMA  initia-
				    tor	 port identifier.  The port identifier
				    must be exactly 32 or 34 (if  the  leading
				    0x	is included) hexadecimal digits.  Only
				    hexadecimal	(base  16)  numbers  are  sup-
				    ported.  For example:

					  srp,0x12345678123456781234567812345678

			     iSCSI  An	iSCSI  Transport  ID consists an iSCSI
				    name and optionally	a separator and	 iSCSI
				    session  ID.   For	example,  if  only the
				    iSCSI name is specified:

					  iqn.2012-06.com.example:target0

				    If the iSCSI separator and initiator  ses-
				    sion ID are	specified:

					  iqn.2012-06.com.example:target0,i,0x123

			     PCIe   A  SCSI over PCIe Transport	ID consists of
				    "sop," followed by a PCIe Routing ID.  The
				    Routing ID consists	of a bus,  device  and
				    function  or  in the alternate form, a bus
				    and	function.  The	bus  must  be  in  the
				    range of 0 to 255 inclusive	and the	device
				    must be in the range of 0 to 31 inclusive.
				    The	 function must be in the range of 0 to
				    7 inclusive	if the standard	form is	 used,
				    and	 in the	range of 0 to 255 inclusive if
				    the	alternate form is used.	 For  example,
				    if	a  bus,	device and function are	speci-
				    fied for the standard Routing ID form:

					  sop,4,5,1

				    If the alternate Routing ID	form is	used:

					  sop,4,1

		   -k key    Specify the Reservation Key.  This	may be in dec-
			     imal, octal or hexadecimal	format.	 The value  is
			     zero  by default if not otherwise specified.  The
			     value must	be between 0 and 2^64 -	1, inclusive.

		   -K key    Specify the Service Action	Reservation Key.  This
			     may be in decimal,	octal or  hexadecimal  format.
			     The  value	 is  zero  by default if not otherwise
			     specified.	 The value must	be between 0 and  2^64
			     - 1, inclusive.

		   -p	     Enable  the  Activate  Persist Through Power Loss
			     bit.  This	is only	used for the register and reg-
			     ister_ignore actions.   This  requests  that  the
			     reservation persist across	power loss events.

		   -s scope  Specify  the scope	of the reservation.  The scope
			     may be specified by name or by number.  The scope
			     is	 ignored  for  register,  register_ignore  and
			     clear.   If  the desired scope isn't available by
			     name, you may specify the number.

			     lun      LUN scope	(0x00).	 This encompasses  the
				      entire LUN.

			     extent   Extent scope (0x01).

			     element  Element scope (0x02).

		   -R rtp    Specify  the Relative Target Port.	 This only ap-
			     plies to the Register and Move service action  of
			     the Persistent Reserve Out	command.

		   -S	     Enable  the  SPEC_I_PT bit.  This only applies to
			     the Register service action of Persistent Reserve
			     Out.  You must also specify at least  one	Trans-
			     port  ID  with  -I	if this	option is set.	If you
			     specify a Transport ID, this option is  automati-
			     cally set.	 It is an error	to specify this	option
			     for any service action other than Register.

		   -T type   Specify  the  reservation	type.  The reservation
			     type may be specified by name or by  number.   If
			     the  desired  reservation type isn't available by
			     name, you	may  specify  the  number.   Supported
			     reservation type names:

			     read_shared  Read Shared mode.

			     wr_ex	  Write	 Exclusive  mode.  May also be
					  specified as "write_exclusive".

			     rd_ex	  Read Exclusive mode.	 May  also  be
					  specified as "read_exclusive".

			     ex_ac	  Exclusive  access mode.  May also be
					  specified as "exclusive_access".

			     wr_ex_ro	  Write	 Exclusive  Registrants	  Only
					  mode.	  May  also  be	 specified  as
					  "write_exclusive_reg_only".

			     ex_ac_ro	  Exclusive  Access  Registrants  Only
					  mode.	  May  also  be	 specified  as
					  "exclusive_access_reg_only".

			     wr_ex_ar	  Write	 Exclusive   All   Registrants
					  mode.	  May  also  be	 specified  as
					  "write_exclusive_all_regs".

			     ex_ac_ar	  Exclusive  Access  All   Registrants
					  mode.	  May  also  be	 specified  as
					  "exclusive_access_all_regs".

		   -U	     Specify that the  target  should  unregister  the
			     initiator	that  sent  the	 Register and Move re-
			     quest.  By	default, the target will not  unregis-
			     ter  the  initiator  that	sends the Register and
			     Move request.  This option	only  applies  to  the
			     Register  and  Move service action	of the Persis-
			     tent Reserve Out command.

       attrib	   Issue the SCSI READ or  WRITE  ATTRIBUTE  commands.	 These
		   commands  are  used	to read	and write attributes in	Medium
		   Auxiliary Memory (MAM).  The	most common place Medium  Aux-
		   iliary  Memory  is found is small flash chips included tape
		   cartriges.  For instance, LTO tapes have MAM.   Either  the
		   -r option or	the -w option must be specified.

		   -r action	   Specify the READ ATTRIBUTE service action.

				   attr_values	Issue	the  ATTRIBUTE	VALUES
						service	action.	 Read and  de-
						code  the available attributes
						and their values.

				   attr_list	Issue the ATTRIBUTE LIST  ser-
						vice action.  List the attrib-
						utes  that  are	 available  to
						read and write.

				   lv_list	Issue the LOGICAL VOLUME  LIST
						service	  action.    List  the
						available logical  volumes  in
						the MAM.

				   part_list	Issue  the PARTITION LIST ser-
						vice action.  List the	avail-
						able partitions	in the MAM.

				   supp_attr	Issue the SUPPORTED ATTRIBUTES
						service	 action.  List attrib-
						utes that  are	supported  for
						reading	or writing.  These at-
						tributes  may  or  may	not be
						currently present in the MAM.

		   -w attr	   Specify an attribute	to write to  the  MAM.
				   This	option is not yet implemented.

		   -a num	   Specify  the	 attribute  number to display.
				   This	option only works with	the  attr_val-
				   ues,	 attr_list  and	supp_attr arguments to
				   -r.

		   -c		   Display cached attributes.  If  the	device
				   supports  this  flag,  it allows displaying
				   attributes for  the	last  piece  of	 media
				   loaded in the drive.

		   -e num	   Specify  the	element	address.  This is used
				   for specifying which	element	 number	 in  a
				   medium  changer  to access when reading at-
				   tributes.  The element number could be  for
				   a picker, portal, slot or drive.

		   -F form1,form2  Specify the output format for the attribute
				   values  (attr_val) display as a comma sepa-
				   rated list of options.  The default	output
				   is	      currently		set	    to
				   field_all,nonascii_trim,text_raw.	  Once
				   this	code is	ported to FreeBSD 10, any text
				   fields will be converted from their codeset
				   to the user's native	codeset	with iconv(3).

				   The text options are	mutually exclusive; if
				   you specify more than one, you will get un-
				   predictable	results.  The nonascii options
				   are also mutually exclusive.	 Most  of  the
				   field  options  may	be  logically ORed to-
				   gether.

				   text_esc	 Print text fields  with  non-
						 ASCII characters escaped.

				   text_raw	 Print	text  fields natively,
						 with no codeset conversion.

				   nonascii_esc	 If any	 non-ASCII  characters
						 occur in fields that are sup-
						 posed to be ASCII, escape the
						 non-ASCII characters.

				   nonascii_trim
						 If  any  non-ASCII characters
						 occur in fields that are sup-
						 posed to be ASCII,  omit  the
						 non-ASCII characters.

				   nonascii_raw	 If  any  non-ASCII characters
						 occur in fields that are sup-
						 posed to be ASCII, print them
						 as they are.

				   field_all	 Print	all  of	  the	prefix
						 fields:    description,   at-
						 tribute   number,   attribute
						 size,	 and  the  attribute's
						 readonly     status.	    If
						 field_all is specified, spec-
						 ifying	 any  other  field op-
						 tions will not	 have  an  ef-
						 fect.

				   field_none	 Print	 none  of  the	prefix
						 fields, and  only  print  out
						 the   attribute   value.   If
						 field_none   is    specified,
						 specifying  any  other	 field
						 options will result in	 those
						 fields	being printed.

				   field_desc	 Print	out  the attribute de-
						 scription.

				   field_num	 Print out the attribute  num-
						 ber.

				   field_size	 Print out the attribute size.

				   field_rw	 Print	 out  the  attribute's
						 readonly status.

		   -p part	   Specify the partition.  When	the media  has
				   multiple  partitions,  specifying different
				   partition numbers allows seeing the	values
				   for each individual partition.

		   -s start_num	   Specify   the  starting  attribute  number.
				   This	requests that the target device	return
				   attribute information starting at the given
				   number.

		   -T elem_type	   Specify  the	 element  type.	  For	medium
				   changer devices, this allows	specifying the
				   type	 the element referenced	in the element
				   address ( -e).   Valid  types  are:	"all",
				   "picker", "slot", "portal", and "drive".

		   -V vol_num	   Specify the number of the logical volume to
				   operate on.	If the media has multiple log-
				   ical	volumes, this will allow displaying or
				   writing  attributes	on  the	 given logical
				   volume.

       opcodes	   Issue the REPORT SUPPORTED OPCODES service  action  of  the
		   SCSI	 MAINTENANCE IN	command.  Without arguments, this com-
		   mand	will return a list of all SCSI commands	 supported  by
		   the device, including service actions of commands that sup-
		   port	 service  actions.   It	will also include the SCSI CDB
		   (Command Data Block)	length for each	command, and  the  de-
		   scription of	each command if	it is known.

		   -o opcode	       Request	information  on	a specific op-
				       code instead of the list	 of  supported
				       commands.   If  supported,  the	target
				       will return a CDB-like  structure  that
				       indicates  the  opcode,	service	action
				       (if any), and a mask of bits  that  are
				       supported in that CDB.

		   -s service_action   For commands that support a service ac-
				       tion,  specify  the  service  action to
				       query.

		   -N		       If a service action is specified	for  a
				       given  opcode,  and the device does not
				       support the given service  action,  the
				       device  should not return a SCSI	error,
				       but rather indicate in the returned pa-
				       rameter data that the  command  is  not
				       supported.   By	default,  if a service
				       action is specified for an opcode,  and
				       service	actions	 are not supported for
				       the opcode in question, the device will
				       return an error.

		   -T		       Include timeout	values.	  This	option
				       works  with  the	default	display, which
				       includes	all commands supported by  the
				       device, and with	the -o and -s options,
				       which request information on a specific
				       command	and  service action.  This re-
				       quests that the device  report  Nominal
				       and  Recommended	timeout	values for the
				       given command or	commands.  The timeout
				       values are in seconds.  The timeout de-
				       scriptor	also includes  a  command-spe-
				       cific

       zone	   Manage  SCSI	and ATA	Zoned Block devices.  This allows man-
		   aging devices that conform to the SCSI Zoned	Block Commands
		   (ZBC) and ATA Zoned ATA Command Set	(ZAC)  specifications.
		   Devices  using  these  command sets are usually hard	drives
		   using Shingled Magnetic Recording (SMR).  There  are	 three
		   types of SMR	drives:

		   Drive Managed  Drive	 Managed drives	look and act just like
				  a standard random access block  device,  but
				  underneath,  the  drive reads	and writes the
				  bulk of its capacity using SMR  zones.   Se-
				  quential  writes  will  yield	better perfor-
				  mance, but writing sequentially is  not  re-
				  quired.

		   Host	Aware	  Host Aware drives expose the underlying zone
				  layout  via  SCSI  or	ATA commands and allow
				  the host to manage the zone conditions.  The
				  host is not required to manage the zones  on
				  the  drive,  though.	Sequential writes will
				  yield	better performance in Sequential Write
				  Preferred zones, but the host	can write ran-
				  domly	in those zones.

		   Host	Managed	  Host Managed drives  expose  the  underlying
				  zone	layout	via SCSI or ATA	commands.  The
				  host is required to access the zones accord-
				  ing to the rules described by	the zone  lay-
				  out.	 Any  commands	that violate the rules
				  will be returned with	an error.

		   SMR drives are divided into zones (typically	in  the	 range
		   of 256MB each) that fall into three general categories:

		   Conventional		 These	are  also  known  as Non Write
					 Pointer zones.	 These	zones  can  be
					 randomly  written  without  an	 unex-
					 pected	performance penalty.

		   Sequential Preferred	 These zones should be written sequen-
					 tially	starting at the	write  pointer
					 for  the  zone.   They	may be written
					 randomly.  Writes that	do not conform
					 to the	zone layout  may  be  signifi-
					 cantly	slower than expected.

		   Sequential Required	 These	zones  must be written sequen-
					 tially.  If they are not written  se-
					 quentially,  starting	at  the	 write
					 pointer, the command will fail.

		   -c cmd	 Specify the zone subcommand:

				 rz	 Issue the Report Zones	command.   All
					 zones are returned by default.	 Spec-
					 ify report options with -o and	print-
					 ing  options  with  -P.   Specify the
					 starting  LBA	with  -l.   Note  that
					 "reportzones"	is  also accepted as a
					 command argument.

				 open	 Explicitly open the zone specified by
					 the starting LBA.

				 close	 Close the zone	specified by  starting
					 LBA.

				 finish	 Finish	 the  zone  specified  by  the
					 starting LBA.

				 rwp	 Reset the write pointer for the  zone
					 specified by the starting LBA.

		   -a		 For  the Open,	Close, Finish, and Reset Write
				 Pointer operations, apply  the	 operation  to
				 all zones on the drive.

		   -l lba	 Specify  the  starting	 LBA.	For the	Report
				 Zones command,	this tells the drive to	report
				 starting with the zone	 that  starts  at  the
				 given	LBA.  For the other commands, this al-
				 lows the user to identify the zone  requested
				 by  its  starting LBA.	 The LBA may be	speci-
				 fied in decimal, hexadecimal or  octal	 nota-
				 tion.

		   -o rep_opt	 For  the Report Zones command,	specify	a sub-
				 set of	zones to report.

				 all	   Report all zones.  This is the  de-
					   fault.

				 emtpy	   Report only empty zones.

				 imp_open  Report  zones  that	are implicitly
					   open.  This means that the host has
					   sent	a write	to  the	 zone  without
					   explicitly opening the zone.

				 exp_open  Report  zones  that	are explicitly
					   open.

				 closed	   Report zones	that have been	closed
					   by the host.

				 full	   Report zones	that are full.

				 ro	   Report  zones  that are in the read
					   only	state.	Note  that  "readonly"
					   is also accepted as an argument.

				 offline   Report  zones  that	are in the of-
					   fline state.

				 reset	   Report zones	where the device  rec-
					   ommends resetting write pointers.

				 nonseq	   Report  zones that have the Non Se-
					   quential Resources Active flag set.
					   These are zones that	are Sequential
					   Write  Preferred,  but  have	  been
					   written non-sequentially.

				 nonwp	   Report  Non	Write  Pointer	zones,
					   also	known as Conventional zones.

		   -P print_opt	 Specify a printing option for Report Zones:

				 normal	  Normal Report	Zones output.  This is
					  the default.	The summary and	column
					  headings  are	 printed,  fields  are
					  separated  by	 spaces	and the	fields
					  themselves may contain spaces.

				 summary  Just print the summary:  the	number
					  of  zones,  the  maximum LBA (LBA of
					  the  last  logical  block   on   the
					  drive),  and the value of the	"same"
					  field.  The "same"  field  describes
					  whether  the	zones on the drive are
					  all  identical,  all	different,  or
					  whether they are the same except for
					  the last zone, etc.

				 script	  Print	the zones in a script friendly
					  format.    The  summary  and	column
					  headings are omitted,	the fields are
					  separated by commas, and the	fields
					  do  not  contain spaces.  The	fields
					  contain  underscores	where	spaces
					  would	normally be used.

       epc	   Issue  ATA Extended Power Conditions	(EPC) feature set com-
		   mands.  This	only works on ATA protocol  drives,  and  will
		   not	work  on  SCSI	protocol drives.  It will work on SATA
		   drives behind a SCSI	to ATA translation  layer  (SAT).   It
		   may	be helpful to read the ATA Command Set - 4 (ACS-4) de-
		   scription of	the Extended  Power  Conditions	 feature  set,
		   available  at  t13.org,  to	understand the details of this
		   particular camcontrol subcommand.

		   -c cmd  Specify the epc subcommand

			   restore  Restore drive power	condition settings.

				    -r src  Specify the	 source	 for  the  re-
					    stored   power   settings,	either
					    "default" or "saved".  This	 argu-
					    ment is required.

				    -s	    Save   the	settings.   This  only
					    makes  sense   to	specify	  when
					    restoring from defaults.

			   goto	    Go to the specified	power condition.

				    -p cond  Specify   the   power  condition:
					     Idle_a,	  Idle_b,      Idle_c,
					     Standby_y,	Standby_z.  This argu-
					     ment is required.

				    -D	     Specify   delayed	entry  to  the
					     power condition.  The  drive,  if
					     it	 supports  this, can enter the
					     power condition after the command
					     completes.

				    -H	     Hold the power condition.	If the
					     drive supports  this  option,  it
					     will hold the power condition and
					     reject  all  commands  that would
					     normally cause it	to  exit  that
					     power condition.

			   timer    Set	 the timer value for a power condition
				    and	enable or disable the condition.   See
				    the	 "list"	display	described below	to see
				    what the current timer  settings  are  for
				    each  Idle	and  Standby mode supported by
				    the	drive.

				    -e	      Enable the power condition.  One
					      of -e or -d is required.

				    -d	      Disable  the  power   condition.
					      One of -d	or -e is required.

				    -T timer  Specify  the  timer  in seconds.
					      The user may specify a timer  as
					      a	 floating  point number	with a
					      maximum supported	resolution  of
					      tenths  of a second.  Drives may
					      or may  not  support  sub-second
					      timer values.

				    -p cond   Specify	the  power  condition:
					      Idle_a,	  Idle_b,      Idle_c,
					      Standby_y,  Standby_z.  This ar-
					      gument is	required.

				    -s	      Save the timer and power	condi-
					      tion  enable/disable  state.  By
					      default, if this option  is  not
					      specified, only the current val-
					      ues  for	this  power  condition
					      will be affected.

			   state    Enable or disable a	particular power  con-
				    dition.

				    -e	     Enable  the power condition.  One
					     of	-e or -d is required.

				    -d	     Disable the power condition.  One
					     of	-d or -e is required.

				    -p cond  Specify  the   power   condition:
					     Idle_a,	  Idle_b,      Idle_c,
					     Standby_y,	Standby_z.  This argu-
					     ment is required.

				    -s	     Save  the	power  condition   en-
					     able/disable  state.  By default,
					     if	this option is not  specified,
					     only  the current values for this
					     power condition will be affected.

			   enable   Enable the Extended	Power Condition	 (EPC)
				    feature set.

			   disable  Disable the	Extended Power Condition (EPC)
				    feature set.

			   source   Specify the	EPC power source.

				    -S src  Specify  the  power	source,	either
					    "battery" or "nonbattery".

			   status   Get	the current status of several  parame-
				    ters  related to the Extended Power	Condi-
				    tion (EPC) feature set, including  whether
				    APM	 and  EPC  are	supported and enabled,
				    whether Low	Power  Standby	is  supported,
				    whether  setting  the  EPC power source is
				    supported, whether Low  Power  Standby  is
				    supported and the current power condition.

				    -P	 Only  report the current power	condi-
					 tion.	Some drives  will  exit	 their
					 current  power	condition if a command
					 other than the	ATA CHECK  POWER  MODE
					 command is received.  If this flag is
					 specified, camcontrol will only issue
					 the  ATA  CHECK POWER MODE command to
					 the drive.

			   list	    Display the	ATA Power Conditions log  (Log
				    Address  0x08).   This  shows  the list of
				    Idle  and  Standby	power  conditions  the
				    drive supports, and	a number of parameters
				    about each condition, including whether it
				    is enabled and what	the timer value	is.

       timestamp   Issue REPORT	TIMESTAMP or SET TIMESTAMP SCSI	commands.  Ei-
		   ther	the -r option or the -s	option must be specified.

		   -r	   Report  the	device's  timestamp.  If no more argu-
			   ments are specified,	the timestamp will be reported
			   using the national representation of	the  date  and
			   time, followed by the time zone.

			   -f format  Specify  the  strftime format string, as
				      documented in strftime(3), to be used to
				      format the reported timestamp.

			   -m	      Report  the  timestamp  as  milliseconds
				      since the	epoch.

			   -U	      Report  the timestamp using the national
				      representation of	the date and time, but
				      override the system time	zone  and  use
				      UTC instead.

		   -s	   Set	the  device's timestamp.  Either the -f	and -T
			   options or the -U option must be specified.

			   -f format  Specify the strptime format  string,  as
				      documented  in  strptime(3).   The  time
				      must also	be specified with the  -T  op-
				      tion.

			   -T time    Provide the time in the format specified
				      with the -f option.

			   -U	      Set  the	timestamp to the host system's
				      time in UTC.

       devtype	   Print out the device	type for specified device.

		   ata	       An ATA device attached directly to an ATA  con-
			       troller

		   satl	       An SATA device attached behind a	SAS controller
			       via SCSI-ATA Translation	Layer (SATL)

		   scsi	       A SCSI device

		   nvme	       An directly attached NVMe device

		   mmcsd       An MMC or SD device attached via	a mmcsd	bus

		   none	       No device type reported

		   unknown     Device type is unknown

		   illegal     A programming error occurred

       depop	   Commands  necessary	to support the depopulation (depop) of
		   defective elements of a device (typically  heads  for  hard
		   drives)  or setting capacity	point (typically used on flash
		   drives).  Issues either GET PHYSICAL	ELEMENT	STATUS,	REMOVE
		   ELEMENT AND TRUNCATE, or RESTORE ELEMENT AND	 REBUILD  com-
		   mand	 to  manage  storage  elements of a drive.  Removal or
		   restoration of elements may take up to a day	 to  complete.
		   One	of the -d, -l, or -r options must be specified.	 These
		   options are mutually	exclusive.  Only SCSI drives are  sup-
		   ported.   Changing  the storage elements of a storage drive
		   may result in the loss of all data on that  storage	drive.
		   The drive may need to reinitialize after -d or -r commands.
		   The	data  on  the drive is inaccessible until one of these
		   commands complete.  Once one	of these commands  start,  the
		   drive  is  format  corrupt until the	operation successfully
		   completes.  While format corrupt, no	read or	write  I/O  is
		   possible  to	the drive.  If the drive power cycles, it will
		   remain format corrupt and the operation must	be  restarted.
		   TEST	 UNIT  READY  or  "camcontrol  tur" can	monitor	an in-
		   progress depop operation.

		   -c capacity
			   Specify the desired capacity	point for  the	drive.
			   Valid only for the -d flag.

		   -d	   Remove the physical element from service or set the
			   capacity  point  specified  by  the -e or -c	flags.
			   The drive's capacity	may be reduced by this	opera-
			   tion.

		   -e element
			   Specify  the	 physical  element to remove from ser-
			   vice.  Valid	only for the -d	flag.

		   -l	   Report the current status of	the physical  elements
			   of a	drive.

		   -r	   Restore  all	the eligible physical elements to ser-
			   vice.

       help	   Print out verbose usage information.

ENVIRONMENT
       The SCSI_MODES variable allows the user to specify  an  alternate  mode
       page format file.

       The EDITOR variable determines which text editor	camcontrol starts when
       editing mode pages.

FILES
       /usr/share/misc/scsi_modes  is the SCSI mode format database.
       /dev/xpt0		   is the transport layer device.
       /dev/pass*		   are	the  CAM  application  passthrough de-
				   vices.

EXAMPLES
	     camcontrol	eject -n cd -u 1 -v

       Eject the CD from cd1, and print	SCSI sense information if the  command
       fails.

	     camcontrol	tur da0

       Send  the  SCSI test unit ready command to da0.	The camcontrol utility
       will report whether the disk is ready, but will not display  sense  in-
       formation if the	command	fails since the	-v switch was not specified.

	     camcontrol	tur da1	-E -C 4	-t 50 -Q head -v

       Send  a	test unit ready	command	to da1.	 Enable	kernel error recovery.
       Specify a retry count of	4, and a timeout of 50 seconds.	 Enable	 sense
       printing	(with the -v flag) if the command fails.  Since	error recovery
       is turned on, the disk will be spun up if it is not currently spinning.
       The  SCSI  task attribute for the command will be set to	Head of	Queue.
       The camcontrol utility will report whether the disk is ready.

	     camcontrol	cmd -n cd -u 1 -v -c "3C 00 00 00 00 00	00 00 0e 00" \
		     -i	0xe "s1	i3 i1 i1 i1 i1 i1 i1 i1	i1 i1 i1"

       Issue a READ BUFFER command (0x3C) to cd1.  Display the buffer size  of
       cd1,  and  display  the	first 10 bytes from the	cache on cd1.  Display
       SCSI sense information if the command fails.

	     camcontrol	cmd -n cd -u 1 -v -c "3B 00 00 00 00 00	00 00 0e 00" \
		     -o	14 "00 00 00 00	1 2 3 4	5 6 v v	v v" 7 8 9 8

       Issue a WRITE BUFFER (0x3B) command to cd1.   Write  out	 10  bytes  of
       data,  not including the	(reserved) 4 byte header.  Print out sense in-
       formation if the	command	fails.	Be very	careful	with this command, im-
       proper use may cause data corruption.

	     camcontrol	modepage da3 -m	1 -e -P	3

       Edit mode page 1	(the Read-Write	Error Recover page) for	da3, and  save
       the  settings  on  the drive.  Mode page	1 contains a disk drive's auto
       read and	write reallocation settings, among other things.

	     camcontrol	rescan all

       Rescan all SCSI buses in	the system for devices that have  been	added,
       removed or changed.

	     camcontrol	rescan 0

       Rescan SCSI bus 0 for devices that have been added, removed or changed.

	     camcontrol	rescan 0:1:0

       Rescan  SCSI  bus  0,  target 1,	lun 0 to see if	it has been added, re-
       moved, or changed.

	     camcontrol	tags da5 -N 24

       Set the number of concurrent transactions for da5 to 24.

	     camcontrol	negotiate -n da	-u 4 -T	disable

       Disable tagged queueing for da4.

	     camcontrol	negotiate -n da	-u 3 -R	20.000 -O 15 -a

       Negotiate a sync	rate of	20MHz and an offset of 15 with da3.  Then send
       a Test Unit Ready command to make the settings take effect.

	     camcontrol	smpcmd ses0 -v -r 4 "40	0 00 0"	-R 1020	"s9 i1"

       Send the	SMP REPORT GENERAL command to ses0, and	display	the number  of
       PHYs it contains.  Display SMP errors if	the command fails.

	     camcontrol	security ada0

       Report security support and settings for	ada0

	     camcontrol	security ada0 -U user -s MyPass

       Enable security on device ada0 with the password	MyPass

	     camcontrol	security ada0 -U user -e MyPass

       Secure erase ada0 which has had security	enabled	with user password My-
       Pass

       WARNING!	WARNING! WARNING!

       This  will  ERASE  ALL data from	the device, so backup your data	before
       using!

       This command can	be used	against	an SSD drive to	restoring it  to  fac-
       tory default write performance.

	     camcontrol	hpa ada0

       Report HPA support and settings for ada0	(also reported via identify).

	     camcontrol	hpa ada0 -s 10240

       Enables HPA on ada0 setting the maximum reported	sectors	to 10240.

       WARNING!	WARNING! WARNING!

       This  will  PREVENT  ACCESS to all data on the device beyond this limit
       until HPA is disabled by	setting	HPA to native max sectors of  the  de-
       vice, which can only be done after a power-on or	hardware reset!

       DO NOT use this on a device which has an	active filesystem!

	     camcontrol	persist	da0 -v -i read_keys

       This will read any persistent reservation keys registered with da0, and
       display	any  errors encountered	when sending the PERSISTENT RESERVE IN
       SCSI command.

	     camcontrol	persist	da0 -v -o register -a -K 0x12345678

       This will register the persistent reservation key 0x12345678 with  da0,
       apply  that  registration  to  all ports	on da0,	and display any	errors
       that occur when sending the PERSISTENT RESERVE OUT command.

	     camcontrol	persist	da0 -v -o reserve -s lun -k 0x12345678 -T ex_ac

       This will reserve da0 for the exlusive use of the initiator issuing the
       command.	 The scope of the reservation is the entire LUN.   Any	errors
       sending the PERSISTENT RESERVE OUT command will be displayed.

	     camcontrol	persist	da0 -v -i read_full

       This  will display the full status of all reservations on da0 and print
       out status if there are any errors.

	     camcontrol	persist	da0 -v -o release -k 0x12345678	-T ex_ac

       This will release a reservation on da0 of the type ex_ac	(Exclusive Ac-
       cess).  The Reservation Key for this registration is  0x12345678.   Any
       errors that occur will be displayed.

	     camcontrol	persist	da0 -v -o register -K 0x12345678 -S \
		     -I	sas,0x1234567812345678 -I sas,0x8765432187654321

       This  will register the key 0x12345678 with da0,	specifying that	it ap-
       plies to	the SAS	initiators with	SAS addresses  0x1234567812345678  and
       0x8765432187654321.

	     camcontrol	persist	da0 -v -o register_move	-k 0x87654321 \
		     -K	0x12345678 -U -p -R 2 -I fcp,0x1234567812345678

       This  will move the registration	from the current initiator, whose Reg-
       istration Key is	0x87654321, to the Fibre Channel  initiator  with  the
       Fiber Channel World Wide	Node Name 0x1234567812345678.  A new registra-
       tion key, 0x12345678, will be registered	for the	initiator with the Fi-
       bre  Channel  World  Wide Node Name 0x1234567812345678, and the current
       initiator will be unregistered from the target.	The  reservation  will
       be moved	to relative target port	2 on the target	device.	 The registra-
       tion will persist across	power losses.

	     camcontrol	attrib sa0 -v -i attr_values -p	1

       This  will read and decode the attribute	values from partition 1	on the
       tape in tape drive sa0, and will	display	any SCSI errors	that result.

	     camcontrol	zone da0 -v -c rz -P summary

       This will request the SMR zone list from	disk da0, and print out	a sum-
       mary of the zone	parameters, and	display	any SCSI or  ATA  errors  that
       result.

	     camcontrol	zone da0 -v -c rz -o reset

       This  will  request  the	list of	SMR zones that should have their write
       pointer reset from the disk da0,	and display any	 SCSI  or  ATA	errors
       that result.

	     camcontrol	zone da0 -v -c rwp -l 0x2c80000

       This  will  issue  the  Reset Write Pointer command to disk da0 for the
       zone that starts	at LBA 0x2c80000 and display any SCSI  or  ATA	errors
       that result.

	     camcontrol	epc ada0 -c timer -T 60.1 -p Idle_a -e -s

       Set the timer for the Idle_a power condition on drive ada0 to 60.1 sec-
       onds,  enable that particular power condition, and save the timer value
       and the enabled state of	the power condition.

	     camcontrol	epc da4	-c goto	-p Standby_z -H

       Tell drive da4 to go to the Standby_z power state (which	is the drive's
       lowest power state) and hold in that state until	it is  explicitly  re-
       leased by another goto command.

	     camcontrol	epc da2	-c status -P

       Report only the power state of drive da2.  Some drives will power up in
       response	 to the	commands sent by the status subcommand,	and the	-P op-
       tion causes camcontrol to only send the ATA CHECK POWER	MODE  command,
       which should not	trigger	a change in the	drive's	power state.

	     camcontrol	epc ada0 -c list

       Display the ATA Power Conditions	log (Log Address 0x08) for drive ada0.

	     camcontrol	timestamp sa0 -s -f "%a, %d %b %Y %T %z" \
		     -T	"Wed, 26 Oct 2016 21:43:57 -0600"

       Set  the	 timestamp of drive sa0	using a	strptime(3) format string fol-
       lowed by	a time string that was created using this format string.

SEE ALSO
       cam(3), cam_cdbparse(3),	cam(4),	pass(4), xpt(4), diskinfo(8), trim(8),
       zonectl(8)

HISTORY
       The camcontrol utility first appeared in	FreeBSD	3.0.

       The mode	page editing code and arbitrary	SCSI command  code  are	 based
       upon  code  in  the old scsi(8) utility and scsi(3) library, written by
       Julian Elischer and Peter Dufault.  The scsi(8) program first  appeared
       in 386BSD 0.1.2.4, and first appeared in	FreeBSD	in FreeBSD 2.0.5.

AUTHORS
       Kenneth Merry <ken@FreeBSD.org>

BUGS
       The  code  that parses the generic command line arguments does not know
       that some of the	subcommands take multiple arguments.  So if,  for  in-
       stance, you tried something like	this:

	     camcontrol	cmd -n da -u 1 -c "00 00 00 00 00 v" 0x00 -v

       The  sense  information	from the test unit ready command would not get
       printed out, since the first getopt(3) call  in	camcontrol  bails  out
       when  it	sees the second	argument to -c (0x00), above.  Fixing this be-
       havior would take some gross code, or changes to	the  getopt(3)	inter-
       face.   The  best way to	circumvent this	problem	is to always make sure
       to specify generic camcontrol arguments before any command-specific ar-
       guments.

FreeBSD	13.2		       December	28, 2023		 CAMCONTROL(8)

NAME | SYNOPSIS | DESCRIPTION | ENVIRONMENT | FILES | EXAMPLES | SEE ALSO | HISTORY | AUTHORS | BUGS

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=camcontrol&sektion=8&manpath=FreeBSD+14.1-RELEASE+and+Ports>

home | help