Key Code Qualifier Explained

Key Code Qualifier is an error-code returned by a SCSI device.

When a SCSI target device returns a check condition in response to a command, the initiator usually then issues a SCSI Request Sense command. This process is part of a SCSI protocol called Contingent Allegiance Condition. The target will respond to the Request Sense command with a set of SCSI sense data which includes three fields giving increasing levels of detail about the error:

The initiator can take action based on just the K field which indicates if the error is minor or major. However all three fields are usually logically combined into a 20 bit field called Key Code Qualifier or KCQ. The specification for the target device will define the list of possible KCQ values. In practice there are many KCQ values which are common between different SCSI device types and different SCSI device vendors. Common values are listed below, you should consult your hardware specific documentation as well.

List of common SCSI KCQs

Category Key ASC ASCQ Error Condition
No Sense 0 00 00 No error
05D00No sense - PFA threshold reached
Soft Error10100Recovered Write error - no index
10200Recovered no seek completion
10300Recovered Write error - write fault
10900Track following error
10B01Temperature warning
10C01Recovered Write error with auto-realloc - reallocated
10C03Recovered Write error - recommend reassign
11201Recovered data without ECC using prev logical block ID
11202Recovered data with ECC using prev logical block ID
11401Recovered Record Not Found
11600Recovered Write error - Data Sync Mark Error
11601Recovered Write error - Data Sync Error - data rewritten
11602Recovered Write error - Data Sync Error - recommend rewrite
11603Recovered Write error - Data Sync Error - data auto-reallocated
11604Recovered Write error - Data Sync Error - recommend reassignment
11700Recovered data with no error correction applied
11701Recovered Read error - with retries
11702Recovered data using positive offset
11703Recovered data using negative offset
11705Recovered data using previous logical block ID
11706Recovered Read error - without ECC, auto reallocated
11707Recovered Read error - without ECC, recommend reassign
11708Recovered Read error - without ECC, recommend rewrite
11709Recovered Read error - without ECC, data rewritten
11800Recovered Read error - with ECC
11801Recovered data with ECC and retries
11802Recovered Read error - with ECC, auto reallocated
11805Recovered Read error - with ECC, recommend reassign
11806Recovered data using ECC and offsets
11807Recovered Read error - with ECC, data rewritten
11C00Defect List not found
11C01Primary defect list not found
11C02Grown defect list not found
11F00Partial defect list transferred
14400Internal target failure
15D00PFA threshold reached
Not Ready20400Not Ready - Cause not reportable.
20401Not Ready - becoming ready
20402Not Ready - need initialise command (start unit)
20403Not Ready - manual intervention required
20404Not Ready - format in progress
20409Not Ready - self-test in progress
23100Not Ready - medium format corrupted
23101Not Ready - format command failed
23502Not Ready - enclosure services unavailable
23A00Not Ready - medium not present
23A01Not Ready - medium not present - tray closed
23A02Not Ready - medium not present - tray open
23A03Not Ready - medium not present - loadable
23A04Not Ready - medium not present - medium auxiliary memory accessible
24C00Diagnostic Failure - config not loaded
Medium Error30200Medium Error - No Seek Complete
30300Medium Error - write fault
31000Medium Error - ID CRC error
31100Medium Error - unrecovered read error
31101Medium Error - read retries exhausted
31102Medium Error - error too long to correct
31104Medium Error - unrecovered read error - auto re-alloc failed
3110BMedium Error - unrecovered read error - recommend reassign
31401Medium Error - record not found
31600Medium Error - Data Sync Mark error
31604Medium Error - Data Sync Error - recommend reassign
31900Medium Error - defect list error
31901Medium Error - defect list not available
31902Medium Error - defect list error in primary list
31903Medium Error - defect list error in grown list
3190EMedium Error - fewer than 50% defect list copies
33100Medium Error - medium format corrupted
33101Medium Error - format command failed
Hardware Error40100Hardware Error - no index or sector
40200Hardware Error - no seek complete
40300Hardware Error - write fault
40900Hardware Error - track following error
41100Hardware Error - unrecovered read error in reserved area
41501Hardware Error - Mechanical positioning error
41600Hardware Error - Data Sync Mark error in reserved area
41900Hardware Error - defect list error
41902Hardware Error - defect list error in Primary List
41903Hardware Error - defect list error in Grown List
43200Hardware Error - no defect spare available
43500Hardware Error - enclosure services failure
43501Hardware Error - unsupported enclosure function
43502Hardware Error - enclosure services unavailable
43503Hardware Error - enclosure services transfer failure
43504Hardware Error - enclosure services refused
43505Hardware Error - enclosure services checksum error
43E00Hardware Error - logical unit has not self configured yet
43E01Hardware Error - logical unit failed
43E02Hardware Error - timeout on logical unit
43E03Hardware Error - self-test failed
43E04Hardware Error - unable to update self-test log
44400Hardware Error - internal target failure
Illegal Request51A00Illegal Request - parm list length error
52000Illegal Request - invalid/unsupported command code
52100Illegal Request - LBA out of range
52400Illegal Request - invalid field in CDB (Command Descriptor Block)
52500Illegal Request - invalid LUN
52600Illegal Request - invalid fields in parm list
52601Illegal Request - parameter not supported
52602Illegal Request - invalid parm value
52603Illegal Request - invalid field parameter - threshold parameter
52604Illegal Request - invalid release of persistent reservation
52C00Illegal Request - command sequence error
53501Illegal Request - unsupported enclosure function
54900Illegal Request - invalid message
55300Illegal Request - media load or eject failed
55301Illegal Request - unload tape failure
55302Illegal Request - medium removal prevented
55500Illegal Request - system resource failure
55501Illegal Request - system buffer full
55504Illegal Request - Insufficient Registration Resources
Unit Attention62800Unit Attention - not-ready to ready transition (format complete)
62900Unit Attention - POR or device reset occurred
62901Unit Attention - POR occurred
62902Unit Attention - SCSI bus reset occurred
62903Unit Attention - TARGET RESET occurred
62904Unit Attention - self-initiated-reset occurred
62905Unit Attention - transceiver mode change to SE
62906Unit Attention - transceiver mode change to LVD
62A00Unit Attention - parameters changed
62A01Unit Attention - mode parameters changed
62A02Unit Attention - log select parms changed
62A03Unit Attention - Reservations pre-empted
62A04Unit Attention - Reservations released
62A05Unit Attention - Registrations pre-empted
62F00Unit Attention - commands cleared by another initiator
63F00Unit Attention - target operating conditions have changed
63F01Unit Attention - microcode changed
63F02Unit Attention - changed operating definition
63F03Unit Attention - inquiry parameters changed
63F04Unit Attention - component device attached
63F05Unit Attention - device identifier changed
63F06Unit Attention - redundancy group created or modified
63F07Unit Attention - redundancy group deleted
63F08Unit Attention - spare created or modified
63F09Unit Attention - spare deleted
63F0AUnit Attention - volume set created or modified
63F0BUnit Attention - volume set deleted
63F0CUnit Attention - volume set deassigned
63F0DUnit Attention - volume set reassigned
63F0EUnit Attention - reported LUNs data has changed
63F0FUnit Attention - echo buffer overwritten
63F10Unit Attention - medium loadable
63F11Unit Attention - medium auxiliary memory accessible
63F12Unit Attention - iSCSI IP address added
63F13Unit Attention - iSCSI IP address removed
63F14Unit Attention - iSCSI IP address changed
63F15Unit Attention - inspect referrals sense descriptors
63F16Unit Attention - microcode has been changed without reset
63F17Unit Attention - zone transition to full
63F18Unit Attention - bind completed
63F19Unit Attention - bind redirected
63F1AUnit Attention - subsidiary binding changed
65D00Unit Attention - PFA threshold reached
Data Protect72002Access Denied - No Access Rights
72700Write Protect - command not allowed
Aborted CommandB0000Aborted Command - no additional sense code
B1B00Aborted Command - sync data transfer error (extra ACK)
B2500Aborted Command - unsupported LUN
B3F0FAborted Command - echo buffer overwritten
B4300Aborted Command - message reject error
B4400Aborted Command - internal target failure
B4500Aborted Command - Selection/Reselection failure
B4700Aborted Command - SCSI parity error
B4800Aborted Command - initiator-detected error message received
B4900Aborted Command - inappropriate/illegal message
B5503Aborted Command - insufficient resources
B4B00Aborted Command - data phase error
B4E00Aborted Command - overlapped commands attempted
B4F00Aborted Command - due to loop initialisation
OtherE1D00Miscompare - during verify byte check operation
x0500Illegal request
x0600Unit attention
x0700Data protect
x0800LUN communication failure
x0801LUN communication timeout
x0802LUN communication parity error
x0803LUN communication CRC error
x0900vendor specific sense key
x0901servo fault
x0904head select fault
x0A00error log overflow
x0B00aborted command
x0C00write error
x0C02write error - auto-realloc failed
x0E00data miscompare
x1200address mark not found for ID field
x1400logical block not found
x1500random positioning error
x1501mechanical positioning error
x1502positioning error detected by read of medium
x2700write protected
x2900POR or bus reset occurred
x3101format failed
x3201defect list update error
x3202no spares available
x3501unspecified enclosure services failure
x3700parameter rounded
x3D00invalid bits in identify message
x3E00LUN not self-configured yet
x4001DRAM parity error
x4002DRAM parity error
x4200power-on or self-test failure
x4C00LUN failed self-configuration
x5C00RPL status change
x5C01spindles synchronised
x5C02spindles not synchronised
x6500voltage fault
x≥80xVendor specific
xx≥80Vendor specific

References