To help you better understand the benefit of this capability, we have hooked up an Hitachi SAS 36GB hard drive to our LSI PCI Express SAS Host Bus Adapter. We have run busTRACE 9.0 and selected its feature to "Send a single CDB to a storage device." What follows is a description of the commands that we sent and actual screenshots of the data that is returned from the drive. Pay special attention to the screenshot where you can see how busTRACE is able to fully decode the data that is returned from the drive.
To see the associated screenshot, click on the magnifying glass icon next to the description
The first command we send is an Inquiry CDB with an Allocation Length of 004Ah (74). Notice how our SAS hard drive is reporting a version of 05h which busTRACE automatically decodes for you. The drive is telling us that it complies with ANSI INCITS 408-2005 (SPC-3).
Looking at the screenshot, we see that the Vendor ID is HITACHI, the Product ID is HUS151436VLS300 and the Product Revision Level (i.e. the firmware version) is A420.
At offsets 36-55, SPC defines this area is Vendor Specific. We note that the Hitachi drive is returning J3Y9TSLK in this field.
Version descriptors are defined at offset 58-73. These fields provide for identifying up to eight standards to which the SCSI target device claims
conformance. In our example, Hitachi has chosen not to use these fields to return any data.
Inquiry - Supported VPD Pages
The next command we send is an Inquiry CDB with the Enable Vital Product Data (EVPD) bit set to one and the Page Code field set to 00h (Supported VPD Pages). The return data allows us to see which Vital Product Data pages this drives supports.
Looking at the screenshot, we see that the Hitachi drive supports VPD page 00h (Supported VPD Pages), 03h (ASCII Information), 80h (Unit Serial Number), 83h (Device Identification), 86h (Extended INQUIRY Data), 87h (Mode Page Policy), and 88h (SCSI Ports). The drive also supports vendor unique VPD Page D1h and D2h. Because busTRACE 9.0 has special decoding for Hitachi drives, we are also able to decode these two pages.
Inquiry - Device Identification VPD Page
busTRACE 9.0 is able to decode most, if not all, of the Vital Product Data pages that your device supports. In this next example, we send a Device Identification VPD request to the Hitachi drive. The Device Identification VPD page provides the means to retrieve identification descriptors
applying to the logical unit.
Looking at the screenshot, we see that the Hitachi drive returns five different identification descriptors. Each one is decoded for you. Note how busTRACE is able to decode every field for you. Even for esoteric fields, such as the "IEEE COMPANY_ID", our large CDB database is able to show you that the company ID value of 00000CCAh is assigned to "Hitachi."
busTRACE 9.0 is able to decode the Name Address Authority (NAA) descriptors, the SAS Serial SCSI Protocol Identifier, the SCSI Name String, and more. We regularly update our CDB database to ensure it can decode as much as possible.
Inquiry - SCSI Ports Identification VPD Page
The SCSI Ports VPD page provides a means to retrieve identification descriptors for all the SCSI
ports in a SCSI target device or SCSI target/initiator device.
In this next screenshot, we note that the Hitachi drive returns an Identifier of 5000CCA0036EBACDh.
Log Sense - Supported Log Pages
The Supported Log Pages log page returns the list of log pages implemented by the logical unit. In the case of our Hitachi SAS drive, we see that the drive supports:
- 00h (Supported Log Pages)
- 02h (Write Error Counter)
- 03h (Read Error Counter)
- 05h (Verify Error Counter)
- 06h (Non-Medium Error)
- 0Dh (Temperature)
- 0Eh (Start-Stop Cycle Counter)
- 0Fh (Application Client)
- 10h (Self-Test Results)
- 15h (Background Scan Results)
- 18h (Protocol Specific Port)
- 2Fh (Information Exceptions)
- 30h (Hitachi Performance Counters)
- 37h (Hitachi Counters)
Log Sense - Temperature
The Hitachi drive supports the Temperature log page so we'll issue the appropriate Log Sense command to determine the current temperature of the drive. The parameter value in this log page contains a one byte binary value that indicates the temperature of the SCSI target device in degrees Celsius at the time the LOG SENSE
command is performed.
In this screenshot, we see that the drive is reporting a current temperature of 25 degrees Celsius (78.0 Fahrenheit) with a reference temperature of 85 degrees Celsius (185.0 Fahrenheit).
Mode Sense - Return all Pages and Subpages
The next command we'll send is a Mode Sense CDB requesting that all pages and all sub-pages be returned from the drive. As you can see from the screenshot, our Hitachi drive returns a large number of mode pages including:
- Read/Write Error Recovery Mode Page
- Disconnect-Reconnect Page
- Format Device Mode Page
- Rigid Disk Geometry Mode Page
- Verify Error Recovery Mode Page
- Caching Mode Page
- Control Mode Page
- Notch and Partition Mode Page
- Protocol Specific LUN Page
- Protocol Specific Port Page (Phy Control and Discover Subpage)
- Protocol Specific Port Page (Shared Port Control Subpage)
- Power Condition Page
- Informational Exceptions Control Page
- Informational Exceptions Control Page (Background Control Mode Page)
- Hitachi Ultrastar Vendor Unique Page 00h
Since this is a SAS drive, pay special attention to how busTRACE is able to fully decode the Phy Control and Discover Subpage. This includes showing the SAS Address, Attached SAS Address, Attached Phy Identifier, and much more.
Read Capacity (10)
The next command we'll send is a Read Capacity (10) CDB. This command allows us to determine how many blocks / sectors our Hitachi drive supports as well as what the block / sector length is.
In our sample screenshot, we note that busTRACE has decoded for us that the drive is 34.18 Gbytes in capacity and has 512 bytes per sector.
Send Diagnostic - Background short self-test
The next command we'll send is a Send Diagnostic CDB with the Self-Test Code set to 001b (Background short self-test).
This CDB does not return any data but, upon successful return of the CDB, our Hitachi drive is running a background short self-test.
Our previous CDB sent was a Send Diagnostic - Background short self-test. We can use the Request Sense CDB to check on the progress of the diagnostic.
The Request Sense CDB is supported by all device types. In this example, the Hitachi drive is returning a Sense Key of 02h (Not Ready) and a Sense Code / Qualifier of (Logical unit not ready, self-test in progress).
In addition, pay special note to the sense key specific area at offset 15-17. busTRACE 9.0 is showing us that the Sense Key Specific Valid (SKSV) bit is set to one and the sense key specific area is showing us a return value of FFCFh. The drive is telling us that the background diagnostic is 99.9% complete.
Report Supported Operation Codes
The next command we send is the Report Supported Operation Codes CDB. This CDB requests information on commands the addressed logical unit supports.
In our test case, with the Hitachi drive, we request that the device returns all operation codes and service actions supported by the logical unit. As you can see from the attached screenshot, the list of supported CDBs is quite large.