一、问题现象
蓝牙service端和client端使用蓝牙nus串口透传服务传输数据,在client端与service端建立连接后的30s后,蓝牙连接就会莫名断开(两设备相邻很近),查看断开的原因提示为BLE_HCI_STATUS_CODE_LMP_RESPONSE_TIMEOUT,就是LMP回复超时,查看了相关文档,只讲了LMP的相关协议,但并未查出会是什么原因导致LMP回复超时。
二、解决办法
为了做对比,直接下载了官方的uart_nus_c端的程序,然后连接service端传输数据,结果为超过30s不会自动断开链接,经过不懈的对比测试,最终发现是因为两端设置的最大MTU大小不一样导致的,只需要把NRF_SDH_BLE_GATT_MAX_MTU_SIZE改为和service一样的就可以了,但是为什么两端的mtu大小不一致会导致LMP回复超时,现在还没有想通,请教有知道的大佬说一下,非常感谢!