Bluetooth Error Codes: Meanings, Causes & Fixes
Advertisement
Based on the provided Bluetooth Core Specification document, the table below mentions Controller Error Codes (which apply to BLE as well as BR/EDR), including their hexadecimal values, names and descriptions.
| Error Code | Name | Description |
|---|---|---|
| 0x00 | Success | Indicates that the command or operation was successful. |
| 0x01 | Unknown HCI Command | Indicates that the Controller does not understand the HCI Command packet opcode that the Host sent. |
| 0x02 | Unknown Connection Identifier | 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. |
| 0x03 | Hardware Failure | Indicates to the Host that something in the Controller has failed in a manner that cannot be described with any other error code. |
| 0x04 | Page Timeout | Indicates that a page timed out because of the Page Timeout configuration parameter. |
| 0x05 | Authentication Failure | Indicates that pairing or authentication failed due to incorrect results in the pairing or authentication procedure (e.g., incorrect PIN or Link Key). |
| 0x06 | PIN or Key Missing | Used when pairing failed because of a missing PIN, or authentication failed because of a missing Key. |
| 0x07 | Memory Capacity Exceeded | Indicates to the Host that the Controller has run out of memory to store new parameters. |
| 0x08 | Connection Timeout | Indicates that either the link supervision timeout has expired for a given connection or that the synchronization timeout has expired for a given broadcast. |
| 0x09 | Connection Limit Exceeded | 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. |
| 0x0A | Synchronous Connection Limit to a Device Exceeded | Indicates that the Controller has reached the limit to the number of synchronous connections that can be achieved to a device. |
| 0x0B | Connection Already Exists | 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. |
| 0x0C | Command Disallowed | Indicates that the command requested cannot be executed because the Controller is in a state where it cannot process this command at this time. |
| 0x0D | Rejected due to Limited Resources | Indicates that a connection or other request was rejected due to limited resources. |
| 0x0E | Rejected due to Security Reasons | Indicates that a connection or other request was rejected due to security requirements not being fulfilled, like authentication or pairing. |
| 0x0F | Rejected due to Unacceptable BD_ADDR | Indicates that a connection or other request was rejected because this device does not accept the BD_ADDR. |
| 0x10 | Connection Accept Timeout Exceeded | Indicates that the Connection Accept Timeout has been exceeded for this connection attempt. |
| 0x11 | Unsupported Feature or Parameter Value | Indicates that a feature or parameter value in the HCI command is not supported. |
| 0x12 | Invalid HCI Command Parameters | Indicates that at least one of the HCI command parameters is invalid (e.g., out of range, missing, or invalid length). |
| 0x13 | Remote User Terminated Connection | Indicates that the user on the remote device either terminated the connection or stopped broadcasting packets. |
| 0x14 | Remote Device Terminated Connection due to Low Resources | Indicates that the remote device terminated the connection because of low resources. |
| 0x15 | Remote Device Terminated Connection due to Power Off | Indicates that the remote device terminated the connection because the device is about to power off. |
| 0x16 | Connection Terminated by Local Host | Indicates that either the local device terminated the connection, terminated synchronization with a broadcaster, or terminated broadcasting packets. |
| 0x17 | Repeated Attempts | 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. |
| 0x18 | Pairing Not Allowed | Indicates that the device does not allow pairing (e.g., outside of a certain time window after user input). |
| 0x19 | Unknown LMP PDU | Indicates that the Controller has received an unknown LMP opcode. |
| 0x1A | Unsupported Remote Feature | Indicates that the remote device does not support the feature associated with the issued command, LMP PDU, or Link Layer Control PDU. |
| 0x1B | SCO Offset Rejected | Indicates that the offset requested in the LMP_SCO_LINK_REQ PDU has been rejected. |
| 0x1C | SCO Interval Rejected | Indicates that the interval requested in the LMP_SCO_LINK_REQ PDU has been rejected. |
| 0x1D | SCO Air Mode Rejected | Indicates that the air mode requested in the LMP_SCO_LINK_REQ PDU has been rejected. |
| 0x1E | Invalid LMP Parameters / Invalid LL Parameters | Indicates that some LMP PDU / LL Control PDU parameters were invalid. |
| 0x1F | Unspecified Error | Indicates that no other error code specified is appropriate to use. |
| 0x20 | Unsupported LMP Parameter Value / Unsupported LL Parameter Value | 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. |
| 0x21 | Role Change Not Allowed | Indicates that a Controller will not allow a role change at this time. |
| 0x22 | LMP Response Timeout / LL Response Timeout | 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. |
| 0x23 | LMP Error Transaction Collision / LL Procedure Collision | Indicates that an LMP transaction or LL procedure has collided with the same transaction or procedure that is already in progress. |
| 0x24 | LMP PDU Not Allowed | Indicates that a Controller sent an LMP PDU with an opcode that was not allowed. |
| 0x25 | Encryption Mode Not Acceptable | Indicates that the requested encryption mode is not acceptable at this time. |
| 0x26 | Link Key cannot be Changed | Indicates that a link key cannot be changed because a fixed unit key is being used. |
| 0x27 | Requested QoS Not Supported | Indicates that the requested Quality of Service is not supported. |
| 0x28 | Instant Passed | 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. |
| 0x29 | Pairing with Unit Key Not Supported | Indicates that it was not possible to pair as a unit key was requested and it is not supported. |
| 0x2A | Different Transaction Collision | Indicates that an LMP transaction or LL Procedure was started that collides with an ongoing transaction. |
| 0x2B | Reserved for future use | Reserved for future use. |
| 0x2C | QoS Unacceptable Parameter | Indicates that the specified quality of service parameters could not be accepted at this time, but other parameters may be acceptable. |
| 0x2D | QoS Rejected | Indicates that the specified quality of service parameters cannot be accepted and QoS negotiation should be terminated. |
| 0x2E | Channel Assessment Not Supported | Indicates that the Controller cannot perform channel assessment because it is not supported. |
| 0x2F | Insufficient Security | Indicates that the HCI command or LMP PDU sent is only possible on an encrypted link. |
| 0x30 | Parameter Out of Mandatory Range | 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. |
| 0x31 | Reserved for future use | Reserved for future use. |
| 0x32 | Role Switch Pending | Indicates that a Role Switch is pending. |
| 0x33 | Reserved for future use | Reserved for future use. |
| 0x34 | Reserved Slot Violation | Indicates that the current Synchronous negotiation was terminated with the negotiation state set to Reserved Slot Violation. |
| 0x35 | Role Switch Failed | Indicates that a role switch was attempted but it failed and the original piconet structure is restored. |
| 0x36 | Extended Inquiry Response Too Large | 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. |
| 0x37 | Secure Simple Pairing Not Supported by Host | Indicates that the IO capabilities request or response was rejected because the sending Host does not support Secure Simple Pairing. |
| 0x38 | Host Busy - Pairing | Indicates that the Host is busy with another pairing operation and unable to support the requested pairing. |
| 0x39 | Rejected due to No Suitable Channel Found | Indicates that the Controller could not calculate an appropriate value for the Channel selection operation. |
| 0x3A | Controller Busy | Indicates that the operation was rejected because the Controller was busy and unable to process the request. |
| 0x3B | Unacceptable Connection Parameters | Indicates that the remote device either terminated the connection or rejected a request because of one or more unacceptable connection parameters. |
| 0x3C | Advertising Timeout | Indicates that advertising for a fixed duration completed or, for directed advertising, that advertising completed without a connection being created. |
| 0x3D | Connection Terminated due to MIC Failure | Indicates that either the connection or the synchronization was terminated because the Message Integrity Check (MIC) failed on a received packet. |
| 0x3E | Connection Failed to be Established / Synchronization Timeout | 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. |
| 0x3F | Previously used | Previously used. (Deprecated/Reserved) |
| 0x40 | Coarse Clock Adjustment Rejected but Will Try to Adjust Using Clock Dragging | Indicates that the Central, at this time, is unable to make a coarse adjustment to the piconet clock using the supplied parameters, and will attempt to move the clock using clock dragging instead. |
| 0x41 | Type0 Submap Not Defined | Indicates that the LMP PDU is rejected because the Type 0 submap is not currently defined. |
| 0x42 | Unknown Advertising Identifier | 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. |
| 0x43 | Limit Reached | Indicates that the number of operations requested has been reached and has indicated the completion of the activity (e.g., advertising or scanning). |
| 0x44 | Operation Cancelled by Host | Indicates a request to the Controller issued by the Host and still pending was successfully canceled. |
| 0x45 | Packet Too Long | Indicates that an attempt was made to send or receive a packet that exceeds the maximum allowed packet length. |
| 0x46 | Too Late | Indicates that information was provided too late to the Controller. |
| 0x47 | Too Early | Indicates that information was provided too early to the Controller. |
| 0x48 | Insufficient Channels | Indicates that the result of the requested operation would yield too few physical channels. |
- Reference : Bluetooth Core Specification, Version : 6.3, dated : 2026-05-05
References & Further Reading
- Bluetooth SIG : Bluetooth Core Specification Version 6.3, May 5, 2026.
- Bluetooth SIG : Bluetooth Technology Overview
Continue Learning Bluetooth Basic Concepts
- What are new features in Bluetooth 6.3 Version
- Bluetooth GATT Vs. ATT Vs. GAP : Key Comparison
- Bluetooth Service Vs. Characteristic Vs. Descriptor
- Bluetooth Central Vs. Peripheral : Key Differences
- Bluetooth pairing Vs. Bonding Phase
- Bluetooth Notifications Vs. Indications
- Bluetooth Channel Sounding Vs. RSSI
- Bluetooth Direction Finding Methods : AoA Vs. AoD
Continue Learning Bluetooth Technology
- Bluetooth Basics Tutorial
- Bluetooth Low Energy (BLE) Basics Tutorial
- Bluetooth Protocol Stack & Device State Diagram
- Bluetooth Physical Layer Modules
- Bluetooth MAC Layer Overview
- Bluetooth Channel Frequency List
- Bluetooth Network Security
- Bluetooth Low Energy (BLE) Connection Establishment Procedure
- Bluetooth Profiles: HFP, HSP, A2DP, AVRCP, PBAP & MAP
- Bluetooth Mesh Node Types & Protocol Stack Layer Functions
