BLE连接失败错误码原因总结(转载)
常见错误码:
错误码:0x08
原因:由于握手超时导致断开
解决办法:1、连接参数设置间隔时间太长,适当更新减少连接参数 2、调节硬件频偏、天线性能
错误码:0x13
原因:对端设备主动断开
错误码:0x16
原因:本地设备主动断开
错误码:0x3e
原因:同步包接收失败
解决办法:参考0x08或应用层采用重连规避
下表转载自:https://blog.csdn.net/qq_38531460/article/details/126669972
错误码 | 错误原因 | 详细描述 |
0x01 |
未知HCI命令 |
控制器不理解主机发送的HCI命令数据包操作码。所给出的操作码可能不对应于本文档中指定的任何操作码,也不对应于任何特定于供应商的操作码,或者该命令可能尚未实现 |
0x02 |
未知连接标识符 |
从主机发送了一个命令,该命令应该识别一个连接,但该连接不存在或没有识别正确的连接类型 |
0x03 | 硬件故障 | 控制器中的某些故障的方式无法用任何其他错误代码来描述。此错误代码所隐含的含义依赖于实现 |
0x04 | PAGE超时 | 由于页面超时配置参数而导致页面超时。此错误代码可能只出现在HCI_Remote_Name_Request和HCI_Create_Connection命令中 |
0x05 | 身份验证失败 | 由于配对或身份验证过程中的结果不正确,导致配对或身份验证失败。这可能是由于一个错误的密码或链接键 |
0x06 | PIN或密钥丢失 | 当配对因PIN丢失而失败,或认证因密钥丢失而失败时,将使用PIN或密钥丢失的错误代码 |
0x07 | 内存容量超出 | 控制器内存不足,无法存储新参数 |
0x08 | 连接超时 | 给定连接的链路监视超时已超时,或者给定广播的同步超时已过期 |
0x09 | 超过连接限制 | 尝试创建另一个连接失败,因为控制器已经达到其可以支持的连接数量的限制。 |
0x0A | 对设备的同步连接限制超过 | 控制器已达到可以达到对设备的同步连接数量的限制。设备可以支持的同步连接数取决于实现 |
0x0B | 连接已存在 | 当已经连接到该设备,且不允许对同一设备进行多个连接时,已尝试创建到该设备的新连接 |
0x0C | 非法命令 | 无法执行所请求的命令,因为控制器目前处于此时无法处理此命令的状态。错误代码未知HCI命令有效的命令操作码 |
0x0D | 因安全因素被拒接连接 | 本次连接由于未满足安全要求而被拒绝,如身份验证或配对 |
0x0F | 连接被拒绝是由不可接受的BD_ADDR | 本次连接被拒绝,因为该设备不接受BD_ADDR。这可能是因为该设备将只接受来自特定BD_ADDRs的连接 |
0x10 | 连接接受超时超过 | 此连接尝试已超过连接接受超时 |
0x11 | 不支持的特性或参数值 | 不支持HCI命令中的特性或参数值。此错误代码不得在LMP中用于PDU |
0x12 | 无效的HCI命令参数 |
至少有一个HCI命令参数无效 |
0x13 | 远程用户终止连接 | 远程设备上的用户要么终止了连接,要么停止了广播数据包 |
0x14 | 由于低资源而导致的远程设备终止连接 | 远程设备由于资源不足而终止了连接 |
0x15 | 远程设备终止连接 | 远程设备由于设备即将关机而终止连接 |
0x16 | 由本地主机终止连接 | 本地设备终止连接、终止与广播器的同步,或终止广播数据包 |
0x17 | 重复尝试 | 控制器不允许身份验证或配对过程,因为自上次身份验证或配对尝试失败后经过的时间太少 |
0x18 | 不允许配对 | 设备不允许配对。例如,当一个设备只允许在某些用户输入允许配对后的某个时间窗口内允许配对时 |
0x19 | 位置LMP PDU | 控制器接收到未知的LMP操作码 |
0x1A | 不支持的远程功能 | 远程设备不支持与发出的命令、LMP PDU或链接层控制PDU关联的功能 |
0x1B | SCO偏移被拒绝 | 在LMP_SCO_LINK_REQ PDU中请求的偏移已被拒绝 |
0x1C | SCO时间间隔被拒绝 | 在LMP_SCO_LINK_REQ PDU中请求的时间间隔已被拒绝 |
0x1D | SCO空气模式被拒绝 | 在LMP_SCO_LINK_REQ PDU中请求的空气模式已被拒绝 |
0x1E | 无效的LMP参数/无效的LL参数 | 某些LMP PDU/LL控制PDU参数无效 |
0x1F | 未指定的错误 | 没有指定的其他错误代码适合使用 |
0x20 | 不受支持的LMP参数值/不受支持的LL参数值 |
LMP PDU或LL控制PDU包含至少一个此时控制器不支持的参数值。这通常是在长时间的协商过程之后使用的,例如在LMP_HOLD_REQ、LMP_SNIFF_REQ和LMP_ENCRYPTION_KEY_SIZE_-REQPDU交换期间。这可以被链路层使用,例如在连接参数请求链路层控制过程中 |
0x21 | 不允许角色更改 | 控制器此时不允许角色更改 |
0x22 | LMP响应超时/LL响应超时 | LMP事务在LMP响应超时内未响应,或LL事务在LL响应超时内未响应 |
0x24 | LMP PDU不允许 | 控制器发送了一个具有不允许的操作码的LMP PDU |
0x25 | 加密模式不可接受 | 此时所请求的加密模式不可接受 |
0x26 | 无法更改连接键 | 由于使用了固定的单位密钥,无法更改链接键 |
0x27 | 请求的QoS不支持 | 不支持请求的服务质量 |
0x28 | 即时传递 | 无法执行包含瞬间的LMP PDU或LL PDU,因为这将发生的瞬间已经传递 |
0x29 | 不支持单元密钥配对 | 无法请求单元密钥配对 |
0x2A | 不同的事务冲突 | 已启动了与正在进行的事务发生冲突的LMP事务或LL的过程 |
0x2C | QoS不可接受参数 | 此时不能接受指定的服务质量参数,但其他参数也可以接受 |
0x2D | QoS拒绝 | 不能接受指定的服务质量参数,应终止QoS协商 |
0x2E | 不支持通道评估 | 控制器无法执行通道评估,因为不支持它 |
0x2F | 安全度不足 | 所发送的HCI命令或LMP PDU仅可在加密的链路上执行 |
0x30 | 参数超出强制范围 | 请求的参数值超出了给定HCI命令或LMP PDU的强制参数范围,并且收件人不接受该值 |
0x32 | 设备切换挂起 | 设备切换正在挂起,当HCI命令或LMP PDU因设备切换而不能被接受时,可以使用此命令。这也可用于通知对等设备关于挂起的角色切换 |
0x34 | 保留SLOT冲突 | 当前同步协商已终止,协商状态设置为保留冲突 |
0x35 | ROLE开关失败 | 已经尝试了一个角色开关,但它失败了,并恢复了原始的图片网结构。开关可能已经故障,因为TDD开关或图片开关故障 |
0x36 | 扩展查询相应太大 | 扩展查询响应的要求太大,无法适应控制器支持的任何数据包类型 |
0x37 | 主机不支持的安全简单配对 | IO功能请求或响应被拒绝,因为发送主机不支持安全简单配对,即使接收链接管理器不支持 |
0x38 | 主机Busy—配对 | 主机忙于另一个配对操作,无法支持所请求的配对,接收设备稍后应再次重试配对 |
0x39 | 连接拒绝到未找到合适的通道 | 控制器无法计算通道选择操作的适当值 |
0x3A | 控制器繁忙 | 操作被拒绝,因为控制器繁忙,无法处理请求 |
0x3B | 不可接受的连接参数 | 远程设备由于一个或多个不可接受的连接参数而终止了连接或拒绝了一个请求 |
0x3C | 广播超时 | 固定时间的广播完成,或者对于定向广播,广播在没有创建连接的情况下完成 |
0x3D | 由于MIC故障而终止的连接终止 | 由于接收到的数据包上的消息完整性检查(MIC)失败,连接或同步已终止 |
0x3E | 连接未能被建立/同步超时 | 连接未能建立/同步超时错误代码表明,LL启动了连接或启动了对定期广播的同步,但连接未能建立,或链接层未能与第一次尝试的6个周期广播事件内的定期广播同步 |
0x40 | 时钟调整被拒绝 | 时钟调整被拒绝,但将尝试使用时钟拖动错误代码表明,此时无法使用提供的参数对微型时钟进行粗调整。相反,中心系统将尝试使用时钟拖动来移动时钟 |
0x41 | 未定义类型 | 表示LMP PDU被拒绝,因为类型0子映射当前未定义 |
0x42 | 未知广播标识符 | 从主机发送了一个应该标识广播或同步句柄的命令,但广播或同步句柄不存在 |
0x43 | 达到限制 | 已达到请求的操作数量,并表示活动已完成(例如,广播或扫描) |
0x44 | 被主机取消的操作 | 主机向控制器发出的且仍未完成的请求已成功取消 |
0x45 | 包太长 | 试图发送或接收超过允许的最大包长度的包 |