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: K - sense key - 4 bits, (byte 2 of Fixed sense data format) C - additional sense code (ASC) - 8 bits, (byte 12 of Fixed sense data format) Q - additional sense code qualifier (ASCQ) - 8 bits, (byte 13 of Fixed sense data format) 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 ConditionNo Sense 0 00 00 No error05D00No sense - PFA threshold reachedSoft Error10100Recovered Write error - no index10200Recovered no seek completion10300Recovered Write error - write fault10900Track following error10B01Temperature warning10C01Recovered Write error with auto-realloc - reallocated10C03Recovered Write error - recommend reassign11201Recovered data without ECC using prev logical block ID11202Recovered data with ECC using prev logical block ID11401Recovered Record Not Found11600Recovered Write error - Data Sync Mark Error11601Recovered Write error - Data Sync Error - data rewritten11602Recovered Write error - Data Sync Error - recommend rewrite11603Recovered Write error - Data Sync Error - data auto-reallocated11604Recovered Write error - Data Sync Error - recommend reassignment11700Recovered data with no error correction applied11701Recovered Read error - with retries11702Recovered data using positive offset11703Recovered data using negative offset11705Recovered data using previous logical block ID11706Recovered Read error - without ECC, auto reallocated11707Recovered Read error - without ECC, recommend reassign11708Recovered Read error - without ECC, recommend rewrite11709Recovered Read error - without ECC, data rewritten11800Recovered Read error - with ECC11801Recovered data with ECC and retries11802Recovered Read error - with ECC, auto reallocated11805Recovered Read error - with ECC, recommend reassign11806Recovered data using ECC and offsets11807Recovered Read error - with ECC, data rewritten11C00Defect List not found11C01Primary defect list not found11C02Grown defect list not found11F00Partial defect list transferred14400Internal target failure15D00PFA threshold reachedNot Ready20400Not Ready - Cause not reportable.20401Not Ready - becoming ready20402Not Ready - need initialise command (start unit)20403Not Ready - manual intervention required20404Not Ready - format in progress20409Not Ready - self-test in progress23100Not Ready - medium format corrupted23101Not Ready - format command failed23502Not Ready - enclosure services unavailable23A00Not Ready - medium not present23A01Not Ready - medium not present - tray closed23A02Not Ready - medium not present - tray open23A03Not Ready - medium not present - loadable23A04Not Ready - medium not present - medium auxiliary memory accessible24C00Diagnostic Failure - config not loadedMedium Error30200Medium Error - No Seek Complete 30300Medium Error - write fault31000Medium Error - ID CRC error31100Medium Error - unrecovered read error31101Medium Error - read retries exhausted31102Medium Error - error too long to correct31104Medium Error - unrecovered read error - auto re-alloc failed3110BMedium Error - unrecovered read error - recommend reassign31401Medium Error - record not found31600Medium Error - Data Sync Mark error31604Medium Error - Data Sync Error - recommend reassign31900Medium Error - defect list error31901Medium Error - defect list not available31902Medium Error - defect list error in primary list31903Medium Error - defect list error in grown list3190EMedium Error - fewer than 50% defect list copies33100Medium Error - medium format corrupted33101Medium Error - format command failedHardware Error40100Hardware Error - no index or sector40200Hardware Error - no seek complete40300Hardware Error - write fault40900Hardware Error - track following error41100Hardware Error - unrecovered read error in reserved area41501Hardware Error - Mechanical positioning error41600Hardware Error - Data Sync Mark error in reserved area41900Hardware Error - defect list error41902Hardware Error - defect list error in Primary List41903Hardware Error - defect list error in Grown List43200Hardware Error - no defect spare available43500Hardware Error - enclosure services failure43501Hardware Error - unsupported enclosure function43502Hardware Error - enclosure services unavailable43503Hardware Error - enclosure services transfer failure43504Hardware Error - enclosure services refused43505Hardware Error - enclosure services checksum error43E00Hardware Error - logical unit has not self configured yet43E01Hardware Error - logical unit failed43E02Hardware Error - timeout on logical unit43E03Hardware Error - self-test failed43E04Hardware Error - unable to update self-test log44400Hardware Error - internal target failureIllegal Request51A00Illegal Request - parm list length error52000Illegal Request - invalid/unsupported command code52100Illegal Request - LBA out of range52400Illegal Request - invalid field in CDB (command descriptor block)52500Illegal Request - invalid LUN52600Illegal Request - invalid fields in parm list52601Illegal Request - parameter not supported52602Illegal Request - invalid parm value52603Illegal Request - invalid field parameter - threshold parameter52604Illegal Request - invalid release of persistent reservation52C00Illegal Request - command sequence error53501Illegal Request - unsupported enclosure function54900Illegal Request - invalid message55300Illegal Request - media load or eject failed55301Illegal Request - unload tape failure55302Illegal Request - medium removal prevented55500Illegal Request - system resource failure55501Illegal Request - system buffer full55504Illegal Request - Insufficient Registration ResourcesUnit Attention62800Unit Attention - not-ready to ready transition (format complete)62900Unit Attention - POR or device reset occurred62901Unit Attention - POR occurred62902Unit Attention - SCSI bus reset occurred62903Unit Attention - TARGET RESET occurred62904Unit Attention - self-initiated-reset occurred62905Unit Attention - transceiver mode change to SE62906Unit Attention - transceiver mode change to LVD62A00Unit Attention - parameters changed62A01Unit Attention - mode parameters changed62A02Unit Attention - log select parms changed62A03Unit Attention - Reservations pre-empted62A04Unit Attention - Reservations released62A05Unit Attention - Registrations pre-empted62F00Unit Attention - commands cleared by another initiator63F00Unit Attention - target operating conditions have changed63F01Unit Attention - microcode changed63F02Unit Attention - changed operating definition63F03Unit Attention - inquiry parameters changed63F04Unit Attention - component device attached63F05Unit Attention - device identifier changed63F06Unit Attention - redundancy group created or modified63F07Unit Attention - redundancy group deleted63F08Unit Attention - spare created or modified63F09Unit Attention - spare deleted63F0AUnit Attention - volume set created or modified63F0BUnit Attention - volume set deleted63F0CUnit Attention - volume set deassigned63F0DUnit Attention - volume set reassigned63F0EUnit Attention - reported LUNs data has changed63F0FUnit Attention - echo buffer overwritten63F10Unit Attention - medium loadable63F11Unit Attention - medium auxiliary memory accessible 63F12Unit Attention - iSCSI IP address added63F13Unit Attention - iSCSI IP address removed63F14Unit Attention - iSCSI IP address changed63F15Unit Attention - inspect referrals sense descriptors63F16Unit Attention - microcode has been changed without reset63F17Unit Attention - zone transition to full63F18Unit Attention - bind completed63F19Unit Attention - bind redirected63F1AUnit Attention - subsidiary binding changed65D00Unit Attention - PFA threshold reachedData Protect72002Access Denied - No Access Rights72700Write Protect - command not allowedAborted CommandB0000Aborted Command - no additional sense codeB1B00Aborted Command - sync data transfer error (extra ACK)B2500Aborted Command - unsupported LUNB3F0FAborted Command - echo buffer overwrittenB4300Aborted Command - message reject errorB4400Aborted Command - internal target failureB4500Aborted Command - Selection/Reselection failureB4700Aborted Command - SCSI parity errorB4800Aborted Command - initiator-detected error message receivedB4900Aborted Command - inappropriate/illegal messageB5503Aborted Command - insufficient resourcesB4B00Aborted Command - data phase errorB4E00Aborted Command - overlapped commands attemptedB4F00Aborted Command - due to loop initialisationOtherE1D00Miscompare - during verify byte check operationx0500Illegal requestx0600Unit attentionx0700Data protectx0800LUN communication failurex0801LUN communication timeoutx0802LUN communication parity errorx0803LUN communication CRC errorx0900vendor specific sense keyx0901servo faultx0904head select faultx0A00error log overflowx0B00aborted commandx0C00write errorx0C02write error - auto-realloc failedx0E00data miscomparex1200address mark not found for ID fieldx1400logical block not foundx1500random positioning errorx1501mechanical positioning errorx1502positioning error detected by read of mediumx2700write protectedx2900POR or bus reset occurredx3101format failedx3201defect list update errorx3202no spares availablex3501unspecified enclosure services failurex3700parameter roundedx3D00invalid bits in identify messagex3E00LUN not self-configured yetx4001DRAM parity errorx4002DRAM parity errorx4200power-on or self-test failurex4C00LUN failed self-configurationx5C00RPL status changex5C01spindles synchronisedx5C02spindles not synchronisedx6500voltage faultx≥80xVendor specificxx≥80Vendor specific

References T10: SCSI ASC/ASCQ Assignments