What are Sense Keys, Sense Codes, and Additional Sense Code Qualifiers?
SCSI devices have the ability to generate error information in the form of Sense Key, Sense Code, and Additional Sense Code Qualifiers.
When an error condition is encountered on the SCSI bus, SCSI devices will issue a CHECK CONDITION Status to the host. The SCSI host adapter will respond by sending a REQUEST SENSE Command to the device to determine the nature of the error condition. The device will then reply with Sense information. This Sense information – the Sense Key, Code, and Qualifier – is represented by a series of numbers in Hexadecimal format. These Hexadecimal numbers (e.g. 02h) have certain meanings if referenced to their corresponding tables, which are normally found in the product manuals.
The Sense Key will indicate a general error. A Sense key of 2h means “Not Ready“. The Additional Sense Code and Additional Sense Code Qualifier, ASC and ASCQ, will indicate the specific error. An ASC of 04h with an ASCQ of 02h means “LUN Not Ready, Initializing Command Required“.
In some cases, these codes may enable you to remedy the error if you understand what they indicate (the language used to describe these codes can be somewhat cryptic). The example used here — Not Ready-LUN Not Ready, Initializing Command Required — would indicate that the disk drive has not yet spun up, and you may be able to remedy this by configuring the drive’s jumpers.
Key | Sense Key Description
0h
No Sense – Indicates there is no specific Sense Key information to be reported for the disc drive. This would be the case for a successful command or when the ILI bit is one.
1h
Recovered Error – Indicates the last command completed successfully with some recovery action performed by the disc drive. When multiple recovered errors occur, the last error that occurred is reported by the additional sense bytes.
Note: For some Mode settings, the last command may have terminated before completing.
2h
Not Ready – Indicates the logical unit addressed cannot be accessed. Operator intervention may be required to correct this condition.
3h
Medium Error – Indicates the command terminated with a nonrecovered error condition, probably caused by a flaw in the medium or an error in the recorded data.
4h
Hardware Error – Indicates the disc drive detected a nonrecoverable hardware failure while performing the command or during a self test. This includes SCSI interface parity error, controller failure or device failure.
5h
Illegal Request – Indicates an illegal parameter in the command descriptor block or in the additional parameters supplied as data for some commands (Format Unit, Mode Select, and so forth). If the disc drive detects an invalid parameter in the Command Descriptor Block, it shall terminate the command without altering the medium. If the disc drive detects an invalid parameter in the additional parameters supplied as data, the disc drive may have already altered the medium. This sense key may also indicate that an invalid IDENTIFY message was received. This could also indicate an attempt to write past the last logical block.
6h
Unit Attention – Indicates the disc drive may have been reset.
7h
Data Protect – Indicates that a command that reads or writes the medium was attempted on a block that is protected from this operation. The read or write operation is not performed.
9h
Firmware Error – Vendor specific sense key.
Bh
Aborted Command – Indicates the disc drive aborted the command. The initiator may be able to recover by trying the command again.
Ch
Equal – Indicates a SEARCH DATA command has satisfied an equal comparison.
Dh
Volume Overflow – Indicates a buffered peripheral device has reached the end of medium partition and data remains in the buffer that has not been written to the medium.
Eh
Miscompare – Indicates that the source data did not match the data read from the medium.
Extended SCSI Sense Key Chart
Byte 12 | Byte 13 | Error Code Description
00 00 No Additional Sense Information
01 00 No Index/Sector Signal
02 00 No Seek Complete
03 00 Peripheral Device Write Fault
04 00 Logical Unit Not Ready, Cause Not Reportable
04 01 Logical Unit Not Ready, Becoming Ready
04 02 Logical Unit Not Ready, Initializing Command Required
04 03 Logical Unit Not Ready, Manual Intervention Required
04 04 Logical Unit Not Ready, Format in Progress
08 00 Logical Unit Communication Failure
08 01 Logical Unit Communication Time-Out
08 02 Logical Unit Communication Parity Error
09 00 Track Following Error
09 01 Servo Fault
09 04 Head Select Fault
0A 00 Error log overflow
0C 00 Write error
0C 01 Write Error Recovered With Auto-Reallocation
0C 02 Write Error – Auto Reallocation failed
10 00 ID CRC Or ECC Error
11 00 Unrecovered Read Error
11 01 Read Retries Exhausted
11 02 Error Too Long To Correct
11 04 Unrecovered Read Error – Auto Reallocation Failed
12 00 Address Mark Not Found For ID Field
12 01 Recovered Data without ECC using Previous Sector ID
12 02 Recovered Data with ECC using Previous Sector ID
14 00 Sector Not Found
14 01 Record Not Found
15 00 Random Positioning Error
15 01 Mechanical Positioning Error
15 02 Positioning Error Detected By Read Of Medium
16 00 Data Synchronization Mark Error
17 00 Recovered Data With No Error Correction Applied
17 01 Recovered Data Using Retries
17 02 Recovered Data Using Positive Offset
17 03 Recovered Data Using Negative Offset
17 05 Recovered Data Using Previous Sector ID
17 06 Recovered Data Without ECC – Data Auto Reallocated
18 00 Recovered Data With ECC
18 01 Recovered Data With ECC And Retries Applied
18 02 Recovered Data With ECC And/Or Retries, Data Auto-Reallocated
18 05 Recovered Data with ECC and/or retries
19 00 Defect List Error
19 01 Defect List Not Available
19 02 Defect List Error In Primary List
19 03 Defect List Error in Grown List
1A 00 Parameter List Length Error
1B 00 Synchronous Data Transfer Error
1C 00 Defect List Not Found
1C 01 Primary Defect List Not Found
1C 02 Grown Defect List Not Found
1C 83 Seagate Unique diagnostic code
1D 00 Miscompare During Verify Operatio