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

FreeBSD Manual Pages


home | help

       sg_sat_identify	-  send	 ATA  IDENTIFY	DEVICE command via SCSI	to ATA
       Translation (SAT) layer

       sg_sat_identify	[--ck_cond]  [--extend]	 [--help]  [--hex]   [--ident]
       [--len=CLEN]  [--packet]	 [--raw]  [--readonly] [--verbose] [--version]

       This utility sends either an ATA	IDENTIFY  DEVICE  command  or  an  ATA
       IDENTIFY	 PACKET	DEVICE command to DEVICE and outputs the response. The
       devices that respond to these commands are ATA disks and	ATAPI  devices
       respectively.   Rather  than send these commands	directly to the	device
       they are	sent via a SCSI	transport which	is assumed to contain  a  SCSI
       to  ATA Translation (SAT) Layer (SATL). The SATL	may be in an operating
       system driver, in host bus adapter firmware or in some external	enclo-

       The SAT standard	(SAT ANSI INCITS 431-2007, prior draft:	sat-r09.pdf at defines two	SCSI "ATA PASS-THROUGH"	commands: one using  a
       16  byte	 "cdb" and the other with a 12 byte cdb. This utility defaults
       to using	the 16 byte cdb	variant. SAT-4 revision	5 added	 a  SCSI  "ATA
       PASS-THROUGH(32)"  command.  SAT-2  and	SAT-3  are now also standards:
       SAT-2 ANSI INCITS 465-2010 and SAT-3 ANSI INCITS	517-2015 .  The	 SAT-4
       project	 is   near  standardization  and  the  most  recent  draft  is
       sat4r06.pdf .

       Arguments to long options are mandatory for short options as well.

       -c, --ck_cond
	      sets the CK_COND bit in the ATA PASS-THROUGH SCSI	cdb.  The  de-
	      fault  setting is	clear (i.e. 0).	When set the SATL should yield
	      a	sense buffer containing	a ATA Result  descriptor  irrespective
	      of  whether the command succeeded	or failed. When	clear the SATL
	      should only yield	a sense	buffer containing  a  ATA  Result  de-
	      scriptor if the command failed.

       -e, --extend
	      sets  the	 EXTEND	 bit in	the ATA	PASS-THROUGH SCSI cdb. The de-
	      fault setting is clear (i.e. 0). When set	a 48 bit  LBA  command
	      is sent to the device. This option has no	effect when --len=12.

       -h, --help
	      outputs  the usage message summarizing command line options then
	      exits. Ignores DEVICE if given.

       -H, --hex
	      outputs the ATA IDENTIFY (PACKET)	DEVICE response	 in  hex.  The
	      default  action (i.e. without any	'-H' options) is to output the
	      response in hex, grouped in 16 bit words	(i.e.  the  ATA	 stan-
	      dard's  preference).  When given once, the response is output in
	      ASCII hex	bytes (i.e.  the  SCSI	standard's  preference).  When
	      given twice (i.e.	'-HH') the output is in	hex, grouped in	16 bit
	      words, the same as the default but without a header. When	 given
	      thrice  (i.e.  '-HHH')  the  output is in	hex, grouped in	16 bit
	      words, in	a format that is acceptable for	'hdparm	 --Istdin'  to
	      process. '-HHHH' simply outputs hex data bytes, space separated,
	      16 per line.

       -i, --ident
	      outputs the World	Wide Name (WWN)	of the device. This should  be
	      a	 NAA-5	64 bit number. It is output in hex prefixed with "0x".
	      If not available then "0x0000000000000000" is output. The	equiv-
	      alent  for a SCSI	disk (i.e. its logical unit name) can be found
	      with "sg_vpd -ii".

       -l, --len=CLEN
	      CLEN this	is the length  of  the	SCSI  cdb  used	 for  the  ATA
	      PASS-THROUGH  command.  CLEN can either be 12, 16	or 32. The de-
	      fault is 16. The larger cdb sizes	are needed for 48 bit LBA  ad-
	      dressing of ATA devices. The ATA Auxiliary and ICC registers are
	      only conveyed with the 32	byte cdb variant.

       -p, --packet
	      send an ATA IDENTIFY PACKET DEVICE command (via the  SATL).  The
	      default  action  is to send an ATA IDENTIFY DEVICE command. Note
	      that the ATAPI specification by T13 (i.e.	the PACKET  interface)
	      is now obsolete.

       -r, --raw
	      output  the ATA IDENTIFY (PACKET)	DEVICE response	in binary. The
	      output should be piped to	a file or another  utility  when  this
	      option  is  used.	  The binary is	sent to	stdout,	and errors are
	      sent to stderr.

       -R, --readonly
	      open the DEVICE read-only	(e.g. in Unix with the O_RDONLY	flag).
	      The default is to	open it	read-write.

       -v, --verbose
	      increases	the level or verbosity.

       -V, --version
	      print out	version	string

       Since  the response to the IDENTIFY (PACKET) DEVICE command is very im-
       portant for the correct use of an ATA(PI) device	(and is	typically  the
       first  command sent), a SATL should provide an ATA Information VPD page
       which contains the similar information.

       The SCSI	ATA PASS-THROUGH (12) command's	opcode is 0xa1 and it  clashes
       with  the  MMC set's BLANK command used by cd/dvd writers. So a SATL in
       front of	an ATAPI device	that uses MMC (i.e. has	peripheral device type
       5)  probably  should  treat  opcode 0xa1	as a BLANK command and send it
       through to the cd/dvd drive. The	ATA PASS-THROUGH (16) command's	opcode
       (0x85) does not clash with anything so it is a better choice.

       Prior  to Linux kernel 2.6.29 USB mass storage limited sense data to 18
       bytes which made	the --ck_cond option  yield  strange  (truncated)  re-

       These  examples	use  Linux device names	and a Linux utility called hd-
       parm. For suitable device names in other	 supported  Operating  Systems
       see the sg3_utils(8) man	page.

       In  this	example	/dev/sdb is a SATA 2.5"	disk connected via a USB (type
       C connector) dongle that	implements the UAS (USB	attached SCSI)	proto-
       col  (also  known as UASP). UAS is a vast improvement over the USB mass
       storage class.

	   # sg_sat_identify /dev/sdb
       Response	for IDENTIFY DEVICE ATA	command:
	00   0c5a 3fff c837 0010 0000 0000 003f	0000  .Z ?. .7 .. .. ..	.? ..

       The hexadecimal ASCII  (with  plain  ASCII  to  the  right)  output  is
       abridged	 to  a single line (i.e. the first 16 bytes (or	8 words)). Now
       to decode some of that ATA Identify response. First sg_inq can decode a
       few strings:

	   # sg_sat_identify -HHHH /dev/sdb | sg_inq --ata -I -
       ATA device: model, serial number	and firmware revision:
	 ST9500420AS	 5VJCE6R7 0002SDM1

       For a lot more details, the hdparm utility is a good choice:

	   # sg_sat_identify -HHH /dev/sdb | hdparm --Istdin
       ATA device, with	non-removable media
	       Model Number:	   ST9500420AS
	       Serial Number:	   5VJCE6R7
	       Firmware	Revision:  0002SDM1
	       Transport:	   Serial

       There  are  about  80  more  lines of details decoded by	hdparm in this
       case.  Notice the difference in the number of "H" options:  three  give
       an unadorned hex	output arranged	in (little endian) words (i.e. 16 bits
       each) while four	"H" options give an  unadorned	hex  output  in	 bytes
       (i.e. 8 bits each).

       The  exit  status of sg_sat_identify is 0 when it is successful.	Other-
       wise see	the sg3_utils(8) man page.

       Written by Douglas Gilbert

       Report bugs to <dgilbert	at interlog dot	com>.

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

       sg_vpd(sg3_utils), sg_inq(sg3_utils), sdparm(sdparm), hdparm(hdparm)

sg3_utils-1.45			 January 2020		    SG_SAT_IDENTIFY(8)


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

home | help