下面列举几个常见的蓝牙断开连接原因:

1.reason8:连接超时,根本原因:底层在设置的超时时间内,没有成功通信过,

下面这几种情况可能发生:1.程序中有比较耗时的处理,导致主循环一直没有查询,2.32k晶振误差很大导致。

2.reason13:对方远程主动断开连接。

3.reason16:本地主动断开连接。

4.reason3e:信号差导致断开连接。

错误码 错误原因 详细描述
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 包太长 试图发送或接收超过允许的最大包长度的包

 此表转载自:原文链接:https://blog.csdn.net/qq_38531460/article/details/126669972

 

posted on 2023-09-28 10:53  WCH蓝牙应用分享  阅读(1591)  评论(0编辑  收藏  举报