Part F. Controller Error Codes
vAtlanta r00
1. Overview of error codes
This document lists the various possible error codes. When a command fails, or an LMP or LL message needs to indicate a failure, error codes are used to indicate the reason for the error. Error codes have a size of one octet.
1.1. Usage descriptions
The purpose of this section is to give descriptions of how the error codes should be used. It is beyond the scope of this document to give detailed descriptions of all situations where error codes can be used, especially as this is implementation dependent.
1.2. [This section is no longer used]
1.3. List of error codes
The error code of 0x00 means Success. The possible range of failure error codes is 0x01 to 0xFF. Section 2 provides an error code usage description for each failure error code.
Values marked as “Reserved for future use” or not listed in Table 1.1 can be used in future versions of the specification. A Host shall consider any error code that it does not explicitly understand equivalent to the error code Unspecified Error (0x1F).
Error Code | Name |
---|---|
0x00 | Success |
0x01 | Unknown HCI Command |
0x02 | Unknown Connection Identifier |
0x03 | Hardware Failure |
0x04 | Page Timeout |
0x05 | Authentication Failure |
0x06 | PIN or Key Missing |
0x07 | Memory Capacity Exceeded |
0x08 | Connection Timeout |
0x09 | Connection Limit Exceeded |
0x0A | Synchronous Connection Limit To A Device Exceeded |
0x0B | Connection Already Exists |
0x0C | Command Disallowed |
0x0D | Connection Rejected due to Limited Resources |
0x0E | Connection Rejected Due To Security Reasons |
0x0F | Connection Rejected due to Unacceptable BD_ADDR |
0x10 | Connection Accept Timeout Exceeded |
0x11 | Unsupported Feature or Parameter Value |
0x12 | Invalid HCI Command Parameters |
0x13 | Remote User Terminated Connection |
0x14 | Remote Device Terminated Connection due to Low Resources |
0x15 | Remote Device Terminated Connection due to Power Off |
0x16 | Connection Terminated By Local Host |
0x17 | Repeated Attempts |
0x18 | Pairing Not Allowed |
0x19 | Unknown LMP PDU |
0x1A | Unsupported Remote Feature |
0x1B | SCO Offset Rejected |
0x1C | SCO Interval Rejected |
0x1D | SCO Air Mode Rejected |
0x1E | Invalid LMP Parameters / Invalid LL Parameters |
0x1F | Unspecified Error |
0x20 | Unsupported LMP Parameter Value / Unsupported LL Parameter Value |
0x21 | Role Change Not Allowed |
0x22 | LMP Response Timeout / LL Response Timeout |
0x23 | LMP Error Transaction Collision / LL Procedure Collision |
0x24 | LMP PDU Not Allowed |
0x25 | Encryption Mode Not Acceptable |
0x26 | Link Key cannot be Changed |
0x27 | Requested QoS Not Supported |
0x28 | Instant Passed |
0x29 | Pairing With Unit Key Not Supported |
0x2A | Different Transaction Collision |
0x2B | Reserved for future use |
0x2C | QoS Unacceptable Parameter |
0x2D | QoS Rejected |
0x2E | Channel Classification Not Supported |
0x2F | Insufficient Security |
0x30 | Parameter Out Of Mandatory Range |
0x31 | Reserved for future use |
0x32 | Role Switch Pending |
0x33 | Reserved for future use |
0x34 | Reserved Slot Violation |
0x35 | Role Switch Failed |
0x36 | Extended Inquiry Response Too Large |
0x37 | Secure Simple Pairing Not Supported By Host |
0x38 | Host Busy - Pairing |
0x39 | Connection Rejected due to No Suitable Channel Found |
0x3A | Controller Busy |
0x3B | Unacceptable Connection Parameters |
0x3C | Advertising Timeout |
0x3D | Connection Terminated due to MIC Failure |
0x3E | Connection Failed to be Established / Synchronization Timeout |
0x3F | Previously used |
0x40 | Coarse Clock Adjustment Rejected but Will Try to Adjust Using Clock Dragging |
0x41 | Type0 Submap Not Defined |
0x42 | Unknown Advertising Identifier |
0x43 | Limit Reached |
0x44 | Operation Cancelled by Host |
0x45 | Packet Too Long |
0x46 | Too Late |
0x47 | Too Early |
0x48 | Insufficient Channels |
2. Error code descriptions
2.1. Unknown HCI command (0x01)
The Unknown HCI Command error code indicates that the Controller does not understand the HCI Command packet opcode that the Host sent. The opcode given might not correspond to any of the opcodes specified in this document, or any vendor-specific opcodes, or the command may have not been implemented.
2.2. Unknown Connection Identifier (0x02)
The Unknown Connection Identifier error code indicates that a command was sent from the Host that should identify a connection, but that connection does not exist or does not identify the correct type of connection.
2.3. Hardware Failure (0x03)
The Hardware Failure error code indicates to the Host that something in the Controller has failed in a manner that cannot be described with any other error code. The meaning implied with this error code is implementation dependent.
2.4. Page Timeout (0x04)
The Page Timeout error code indicates that a page timed out because of the Page Timeout configuration parameter. This error code shall only be used with the HCI_Remote_Name_Request and HCI_Create_Connection commands or with equivalent mechanisms when HCI is not supported.
2.5. Authentication Failure (0x05)
The Authentication Failure error code indicates that pairing or authentication failed due to incorrect results in the pairing or authentication procedure. This could be due to an incorrect PIN or Link Key.
2.6. PIN or Key Missing (0x06)
The PIN or Key Missing error code is used when pairing failed because of a missing PIN, or authentication failed because of a missing Key.
2.7. Memory Capacity Exceeded (0x07)
The Memory Capacity Exceeded error code indicates to the Host that the Controller has run out of memory to store new parameters.
2.8. Connection Timeout (0x08)
The Connection Timeout error code indicates that either the link supervision timeout has expired for a given connection or that the synchronization timeout has expired for a given broadcast.
2.9. Connection Limit Exceeded (0x09)
The Connection Limit Exceeded error code indicates that an attempt to create another connection failed because the Controller is already at its limit of the number of connections it can support. The number of connections a device can support is implementation dependent.
2.10. Synchronous Connection Limit to a Device Exceeded (0x0A)
The Synchronous Connection Limit to a Device Exceeded error code indicates that the Controller has reached the limit to the number of synchronous connections that can be achieved to a device. The number of synchronous connections a device can support is implementation dependent.
2.11. Connection Already Exists (0x0B)
The Connection Already Exists error code indicates that an attempt was made to create a new Connection to a device when there is already a connection to this device and multiple connections to the same device are not permitted.
2.12. Command Disallowed (0x0C)
The Command Disallowed error code indicates that the command requested cannot be executed because the Controller is in a state where it cannot process this command at this time. This error shall not be used for command opcodes where the error code Unknown HCI Command (0x01) is valid.
2.13. Connection Rejected due to Limited Resources (0x0D)
The Connection Rejected Due To Limited Resources error code indicates that a connection was rejected due to limited resources.
2.14. Connection Rejected due to Security Reasons (0x0E)
The Connection Rejected Due To Security Reasons error code indicates that a connection was rejected due to security requirements not being fulfilled, like authentication or pairing.
2.15. Connection Rejected due to Unacceptable BD_ADDR (0x0F)
The Connection Rejected due to Unacceptable BD_ADDR error code indicates that a connection was rejected because this device does not accept the BD_ADDR. This may be because the device will only accept connections from specific BD_ADDRs.
2.16. Connection Accept Timeout Exceeded (0x10)
The Connection Accept Timeout Exceeded error code indicates that the Connection Accept Timeout has been exceeded for this connection attempt.
2.17. Unsupported Feature or Parameter Value (0x11)
The Unsupported Feature Or Parameter Value error code indicates that a feature or parameter value in the HCI command is not supported. This error code shall not be used in an LMP PDU.
2.18. Invalid HCI Command Parameters (0x12)
The Invalid HCI Command Parameters error code indicates that at least one of the HCI command parameters is invalid.
This shall be used when:
the parameter total length is invalid.
a command parameter is an invalid type.
a connection identifier does not match the corresponding event.
a parameter is odd when it is required to be even.
a parameter is outside of the specified range.
two or more parameter values have inconsistent values.
Note
Note: An invalid type can be, for example, when a SCO Connection_Handle is used where an ACL Connection_Handle is required.
2.19. Remote User Terminated Connection (0x13)
The Remote User Terminated Connection error code indicates that the user on the remote device either terminated the connection or stopped broadcasting packets.
2.20. Remote Device Terminated Connection due to Low Resources (0x14)
The Remote Device Terminated Connection due to Low Resources error code indicates that the remote device terminated the connection because of low resources.
2.21. Remote Device Terminated Connection due to Power Off (0x15)
The Remote Device Terminated Connection due to Power Off error code indicates that the remote device terminated the connection because the device is about to power off.
2.22. Connection Terminated by Local Host (0x16)
The Connection Terminated By Local Host error code indicates that either the local device terminated the connection, terminated synchronization with a broadcaster, or terminated broadcasting packets.
2.23. Repeated Attempts (0x17)
The Repeated Attempts error code indicates that the Controller is disallowing an authentication or pairing procedure because too little time has elapsed since the last authentication or pairing attempt failed.
2.24. Pairing not Allowed (0x18)
The Pairing Not Allowed error code indicates that the device does not allow pairing. For example, when a device only allows pairing during a certain time window after some user input allows pairing.
2.25. Unknown LMP PDU (0x19)
The Unknown LMP PDU error code indicates that the Controller has received an unknown LMP opcode.
2.26. Unsupported Remote Feature (0x1A)
The Unsupported Remote Feature error code indicates that the remote device does not support the feature associated with the issued command, LMP PDU, or Link Layer Control PDU.
2.27. SCO Offset Rejected (0x1B)
The SCO Offset Rejected error code indicates that the offset requested in the LMP_SCO_LINK_REQ PDU has been rejected.
2.28. SCO Interval Rejected (0x1C)
The SCO Interval Rejected error code indicates that the interval requested in the LMP_SCO_LINK_REQ PDU has been rejected.
2.29. SCO Air Mode Rejected (0x1D)
The SCO Air Mode Rejected error code indicates that the air mode requested in the LMP_SCO_LINK_REQ PDU has been rejected.
2.30. Invalid LMP Parameters / Invalid LL Parameters (0x1E)
The Invalid LMP Parameters / Invalid LL Parameters error code indicates that some LMP PDU / LL Control PDU parameters were invalid. This shall be used when:
the PDU length is invalid.
a parameter is odd when it is required to be even.
a parameter is outside of the specified range.
two or more parameters have inconsistent values.
2.31. Unspecified Error (0x1F)
The Unspecified Error error code indicates that no other error code specified is appropriate to use.
2.32. Unsupported LMP Parameter Value / Unsupported LL Parameter Value (0x20)
The Unsupported LMP Parameter Value / Unsupported LL Parameter Value error code indicates that an LMP PDU or an LL Control PDU contains at least one parameter value that is not supported by the Controller at this time. This is normally used after a long negotiation procedure, for example during an LMP_HOLD_REQ, LMP_SNIFF_REQ and LMP_ENCRYPTION_KEY_SIZE_REQ PDU exchanges. This may be used by the Link Layer, for example during the Connection Parameters Request Link Layer Control procedure.
2.33. Role Change not Allowed (0x21)
The Role Change Not Allowed error code indicates that a Controller will not allow a role change at this time.
2.34. LMP Response Timeout / LL Response Timeout (0x22)
The LMP Response Timeout / LL Response Timeout error code indicates that an LMP transaction failed to respond within the LMP response timeout or an LL transaction failed to respond within the LL response timeout.
2.35. LMP Error Transaction Collision / LL Procedure Collision (0x23)
The LMP Error Transaction Collision / LL Procedure Collision error code indicates that an LMP transaction or LL procedure has collided with the same transaction or procedure that is already in progress.
2.36. LMP PDU not Allowed (0x24)
The LMP PDU Not Allowed error code indicates that a Controller sent an LMP PDU with an opcode that was not allowed.
2.37. Encryption Mode not Acceptable (0x25)
The Encryption Mode Not Acceptable error code indicates that the requested encryption mode is not acceptable at this time.
2.38. Link Key cannot be Changed (0x26)
The Link Key cannot be Changed error code indicates that a link key cannot be changed because a fixed unit key is being used.
2.39. Requested QoS not Supported (0x27)
The Requested QoS Not Supported error code indicates that the requested Quality of Service is not supported.
2.40. Instant Passed (0x28)
The Instant Passed error code indicates that an LMP PDU or LL PDU that includes an instant cannot be performed because the instant when this would have occurred has passed.
2.41. Pairing with Unit Key not Supported (0x29)
The Pairing With Unit Key Not Supported error code indicates that it was not possible to pair as a unit key was requested and it is not supported.
2.42. Different Transaction Collision (0x2A)
The Different Transaction Collision error code indicates that an LMP transaction or LL Procedure was started that collides with an ongoing transaction.
2.43. QoS Unacceptable Parameter (0x2C)
The QoS Unacceptable Parameter error code indicates that the specified quality of service parameters could not be accepted at this time, but other parameters may be acceptable.
2.44. QoS Rejected (0x2D)
The QoS Rejected error code indicates that the specified quality of service parameters cannot be accepted and QoS negotiation should be terminated.
2.45. Channel Assessment Not Supported (0x2E)
The Channel Assessment Not Supported error code indicates that the Controller cannot perform channel assessment because it is not supported.
2.46. Insufficient Security (0x2F)
The Insufficient Security error code indicates that the HCI command or LMP PDU sent is only possible on an encrypted link.
2.47. Parameter Out of Mandatory Range (0x30)
The Parameter Out Of Mandatory Range error code indicates that a parameter value requested is outside the mandatory range of parameters for the given HCI command or LMP PDU and the recipient does not accept that value.
2.48. Role Switch Pending (0x32)
The Role Switch Pending error code indicates that a Role Switch is pending. This can be used when an HCI command or LMP PDU cannot be accepted because of a pending role switch. This can also be used to notify a peer device about a pending role switch.
2.49. Reserved Slot Violation (0x34)
The Reserved Slot Violation error code indicates that the current Synchronous negotiation was terminated with the negotiation state set to Reserved Slot Violation.
2.50. Role Switch Failed (0x35)
The Role Switch Failed error code indicates that a role switch was attempted but it failed and the original piconet structure is restored. The switch may have failed because the TDD switch or piconet switch failed.
2.51. Extended Inquiry Response too Large (0x36)
The Extended Inquiry Response Too Large error code indicates that the extended inquiry response, with the requested requirements for FEC, is too large to fit in any of the packet types supported by the Controller.
2.52. Secure Simple Pairing not Supported by Host (0x37)
The Secure Simple Pairing Not Supported by Host error code indicates that the IO capabilities request or response was rejected because the sending Host does not support Secure Simple Pairing even though the receiving Link Manager does.
2.53. Host Busy–Pairing (0x38)
The Host Busy - Pairing error code indicates that the Host is busy with another pairing operation and unable to support the requested pairing. The receiving device should retry pairing again later.
2.54. Connection Rejected due to no Suitable Channel Found (0x39)
The Connection Rejected due to No Suitable Channel Found error code indicates that the Controller could not calculate an appropriate value for the Channel selection operation.
2.55. Controller Busy (0x3A)
The Controller Busy error code indicates that the operation was rejected because the Controller was busy and unable to process the request.
2.56. Unacceptable Connection Parameters (0x3B)
The Unacceptable Connection Parameters error code indicates that the remote device either terminated the connection or rejected a request because of one or more unacceptable connection parameters.
2.57. Advertising Timeout (0x3C)1Formerly called Directed Advertising Timeout
The Advertising Timeout error code indicates that advertising for a fixed duration completed or, for directed advertising, that advertising completed without a connection being created.
2.58. Connection Terminated due to MIC Failure (0x3D)
The Connection Terminated Due to MIC Failure error code indicates that either the connection or the synchronization was terminated because the Message Integrity Check (MIC) failed on a received packet.
2.59. Connection Failed to be Established / Synchronization Timeout (0x3E)
The Connection Failed to be Established / Synchronization Timeout error code indicates that the LL initiated a connection or initiated synchronization but the connection has failed to be established or the Link Layer failed to synchronize within the specified time.
2.60. [This section is no longer used]
2.61. Coarse Clock Adjustment Rejected but Will Try to Adjust Using Clock Dragging (0x40)
The Coarse Clock Adjustment Rejected but Will Try to Adjust Using Clock Dragging error code indicates that the Central, at this time, is unable to make a coarse adjustment to the piconet clock, using the supplied parameters. Instead the Central will attempt to move the clock using clock dragging.
2.62. Type0 Submap not Defined (0x41)
The Type0 Submap Not Defined error code indicates that the LMP PDU is rejected because the Type 0 submap is not currently defined.
2.63. Unknown Advertising Identifier (0x42)
The Unknown Advertising Identifier error code indicates that a command was sent from the Host that should identify an Advertising or Sync handle, but the Advertising or Sync handle does not exist.
2.64. Limit Reached (0x43)
The Limit Reached error code indicates that number of operations requested has been reached and has indicated the completion of the activity (e.g., advertising or scanning).
2.65. Operation Cancelled by Host (0x44)
The Operation Cancelled by Host error code indicates a request to the Controller issued by the Host and still pending was successfully canceled.
2.66. Packet Too Long (0x45)
The Packet Too Long error code indicates that an attempt was made to send or receive a packet that exceeds the maximum allowed packet length.
2.67. Too Late (0x46)
The Too Late error code indicates that information was provided too late to the Controller.
2.68. Too Early (0x47)
The Too Early error code indicates that information was provided too early to the Controller.
2.69. Insufficient Channels (0x48)
The Insufficient Channels error code indicates that the result of the requested operation would yield too few physical channels.