D-Bus Method Return Error Codes =============================== The motivation of having detailed error is to provide context-based failure reasons along with D-Bus method return so that D-Bus clients can build metrics and optimize their application based on these failure reasons. For instance, a client can build retry mechanism for a connection failure or improve the bottleneck of use scenario based on actionable metrics. These error codes are context-based but not necessarily tied to interface or method calls. For instance, if a pairing request failed due to connection failure, connection error would be attached to the method return of Pair(). BR/EDR connection already connected =================================== errno: EALREADY, EISCONN Either the profile is already connected or ACL connection is in place. BR/EDR connection page timeout ============================== errno: EHOSTDOWN Failed due to page timeout. BR/EDR connection profile unavailable ===================================== errno: ENOPROTOOPT Failed to find connectable services or the target service. BR/EDR connection SDP search ============================ errno: none Failed to complete the SDP search. BR/EDR connection create socket =============================== errno: EIO Failed to create or connect to BT IO socket. This can also indicate hardware failure in the controller. BR/EDR connection invalid arguments =================================== errno: EHOSTUNREACH Failed due to invalid arguments. BR/EDR connection not powered ============================= errno: EHOSTUNREACH Failed due to adapter not powered. BR/EDR connection not supported =============================== errno: EOPNOTSUPP, EPROTONOSUPPORT Failed due to unsupported state transition of L2CAP channel or other features either by the local host or the remote. BR/EDR connection bad socket ============================ errno: EBADFD Failed due to the socket is in bad state. BR/EDR connection memory allocation =================================== errno: ENOMEM Failed to allocate memory in either host stack or controller. BR/EDR connection busy ====================== errno: EBUSY Failed due to other ongoing operations, such as pairing, busy L2CAP channel or the operation disallowed by the controller. BR/EDR connection concurrent connection limit ============================================= errno: EMLINK Failed due to reaching the concurrent connection limit to a device. BR/EDR connection timeout ========================= errno: ETIMEDOUT Failed due to connection timeout BR/EDR connection refused ========================= errno: ECONNREFUSED Refused by the remote device due to limited resource, security reason or unacceptable address type. BR/EDR connection aborted by remote =================================== errno: ECONNRESET Terminated by the remote device due to limited resource or power off. BR/EDR connection aborted by local ================================== errno: ECONNABORTED Aborted by the local host. BR/EDR connection LMP protocol error ==================================== errno: EPROTO Failed due to LMP protocol error. BR/EDR connection canceled ========================== errno: none Failed due to cancellation caused by adapter drop, unexpected device drop, orincoming disconnection request before connection request is completed. BR/EDR connection unknown error =============================== errno: ENOSYS Failed due to unknown reason. LE connection invalid arguments =============================== errno: EINVAL Failed due to invalid arguments. LE connection not powered ========================= errno: EHOSTUNREACH Failed due to adapter not powered. LE connection not supported =========================== errno: EOPNOTSUPP, EPROTONOSUPPORT Failed due to unsupported state transition of L2CAP channel or other features (e.g. LE features) either by the local host or the remote. LE connection already connected =============================== errno: EALREADY, EISCONN Either the BT IO is already connected or LE link connection in place. LE connection bad socket ======================== errno: EBADFD Failed due to the socket is in bad state. LE connection memory allocation =============================== errno: ENOMEM Failed to allocate memory in either host stack or controller. LE connection busy ================== errno: EBUSY Failed due to other ongoing operations, such as pairing, connecting, busy L2CAP channel or the operation disallowed by the controller. LE connection refused ===================== errno: ECONNREFUSED Failed due to that LE is not enabled or the attempt is refused by the remote device due to limited resource, security reason or unacceptable address type. LE connection create socket =========================== errno: EIO Failed to create or connect to BT IO socket. This can also indicate hardware failure in the controller. LE connection timeout ===================== errno: ETIMEDOUT Failed due to connection timeout LE connection concurrent connection limit ========================================= errno: EMLINK Failed due to reaching the synchronous connection limit to a device. LE connection abort by remote ============================= errno: ECONNRESET Aborted by the remote device due to limited resource or power off. LE connection abort by local ============================ errno: ECONNABORTED Aborted by the local host. LE connection link layer protocol error ======================================= errno: EPROTO Failed due to link layer protocol error. LE connection GATT browsing =========================== errno: none Failed to complete the GATT browsing. LE connection unknown error =========================== errno: ENOSYS Failed due to unknown reason.