Comments (8)
[I] stdio: stdio_tx error:0[I] : UART RECIVE OK
这行 log 是你们自己添加的,它的具体含义是什么?error:0
是指失败的意思吗?
你们可以更新一下最新的 mijia ble libs (commit:b6e581),看看问题是否还存在。
from mijia_ble_secure.
为调试该问题,在代码中加入了这段log,上位机通过串口发送到nRF52后,会有这个信息,当手机近场通过蓝牙发送数据到nRF52成功后会有另一个log信息:ble transfer OK,如果stdio通讯成功的话,应该能收到。
目前stdio是完全调用的lib库,仅在其中加入了上述log信息,另error信息还有:error:1,如下图
最新lib库文件已重新下载,稍后反馈验证结果!
from mijia_ble_secure.
根据 米家高安全级BLE接入芯片平台开发.md 中的第三节 3.应用层开发 的描述:
stdio 是米家透传服务,旨在演示如何进行加密数据传输。
会话密钥在米家登陆后才会生成。因此,不能使用非米家 App 进行非加密数据传输。
from mijia_ble_secure.
更新最新版本 mijia ble libs (commit:b6e581)后,问题还是存在,通过调试版本米家apk log,stdio的服务还是没有被调用。
下述是通过apk抓到的log信息,通过上位机发送的串口信息无法调用stdio发送到手机端:
15:42:24.645: >>> name = 小米米家智能门锁, did = 1010660332, mac = F8:49:C8:61:DF:1F, model = lumi.lock.mcn01, permit = 16, rssi = 0
15:42:24.647: >>> name = e9智能虹膜锁, did = 1050000072, mac = F4:E6:61:B0:DD:9B, model = eyecol.door.e9, permit = 16, rssi = 0
15:42:26.669: clearDisconnection F4:E6:61:B0:DD:9B
15:42:26.671: Ble search (5s) onSearchCanceled
15:42:26.671: Bluetooth search cancel
15:42:26.712: BLEDeviceManager onSearchCanceled
15:42:28.948: BLEDeviceManager stopSearchBleDevice
15:42:28.990: Start securityChipConnect
15:42:28.999: registerChannelReader mac =
15:42:29.006: BleSecurityChipLogin for F4:E6:61:B0:DD:9B
15:42:29.027: Process BleConnectRequest, status = Disconnected
15:42:29.031: openGatt for F4:E6:61:B0:DD:9B
15:42:29.087: onConnectionStateChange for F4:E6:61:B0:DD:9B: status = 0, newState = 2
15:42:29.088: setConnectStatus status = Connected
15:42:29.395: processDiscoverService, status = Connected
15:42:29.404: discoverService for F4:E6:61:B0:DD:9B
15:42:29.410: onServicesDiscovered for F4:E6:61:B0:DD:9B: status = 0
15:42:29.414: setConnectStatus status = Service Ready
15:42:29.427: refreshServiceProfile for F4:E6:61:B0:DD:9B
15:42:29.435: BleBindActivityV2 bluetooth status change: F4:E6:61:B0:DD:9B, 16
15:42:29.436: Service: 00001800-0000-1000-8000-00805f9b34fb
15:42:29.440: character: uuid = 00002a00-0000-1000-8000-00805f9b34fb
15:42:29.442: character: uuid = 00002a01-0000-1000-8000-00805f9b34fb
15:42:29.445: character: uuid = 00002a04-0000-1000-8000-00805f9b34fb
15:42:29.448: character: uuid = 00002aa6-0000-1000-8000-00805f9b34fb
15:42:29.449: Service: 00001801-0000-1000-8000-00805f9b34fb
15:42:29.451: character: uuid = 00002a05-0000-1000-8000-00805f9b34fb
15:42:29.452: Service: 6e400001-b5a3-f393-e0a9-e50e24dcca9e
15:42:29.454: character: uuid = 6e400002-b5a3-f393-e0a9-e50e24dcca9e
15:42:29.455: character: uuid = 6e400003-b5a3-f393-e0a9-e50e24dcca9e
15:42:29.457: Service: 0000fe95-0000-1000-8000-00805f9b34fb
15:42:29.458: character: uuid = 00000004-0000-1000-8000-00805f9b34fb
15:42:29.460: character: uuid = 00000010-0000-1000-8000-00805f9b34fb
15:42:29.462: character: uuid = 00000016-0000-1000-8000-00805f9b34fb
15:42:29.464: character: uuid = 00000017-0000-1000-8000-00805f9b34fb
15:42:29.466: character: uuid = 00000018-0000-1000-8000-00805f9b34fb
15:42:29.468: Service: 00001000-0065-6c62-2e74-6f696d2e696d
15:42:29.469: character: uuid = 00001001-0065-6c62-2e74-6f696d2e696d
15:42:29.471: character: uuid = 00001002-0065-6c62-2e74-6f696d2e696d
15:42:29.472: character: uuid = 00001003-0065-6c62-2e74-6f696d2e696d
15:42:29.474: Service: 00000100-0065-6c62-2e74-6f696d2e696d
15:42:29.476: character: uuid = 00000101-0065-6c62-2e74-6f696d2e696d
15:42:29.477: character: uuid = 00000102-0065-6c62-2e74-6f696d2e696d
15:42:29.497: BleConnectRequest F4:E6:61:B0:DD:9B >>> request complete: code = 0
15:42:29.498: registerChannelReaderIfSupported mac = F4:E6:61:B0:DD:9B
15:42:29.501: ConnectResponse onConnectResponse: code = 0
15:42:29.502: BleSecurityChipLoginConnector Process Step 1 ...
15:42:29.503: BleBindActivity onConnectResponse: code = 0
15:42:29.503: BleBind Step 1/3 response: code = REQUEST_SUCCESS
15:42:29.504: report key = bluetooth_connect_success
15:42:29.511: Process BleNotifyRequest, status = Service Ready
15:42:29.513: setCharacteristicNotification for F4:E6:61:B0:DD:9B, service = 0000fe95-0000-1000-8000-00805f9b34fb, character = 00000016-0000-1000-8000-00805f9b34fb, enable = true
15:42:29.613: onDescriptorWrite for F4:E6:61:B0:DD:9B: status = 0, service = 0x0000fe95-0000-1000-8000-00805f9b34fb, character = 0x00000016-0000-1000-8000-00805f9b34fb, descriptor = 0x00002902-0000-1000-8000-00805f9b34fb
15:42:29.624: BleNotifyRequest F4:E6:61:B0:DD:9B >>> request complete: code = 0
15:42:29.626: BleSecurityChipLoginConnector Step 1 onResponse: REQUEST_SUCCESS
15:42:29.631: BleSecurityChipLoginConnector Process Step 2 ...
15:42:29.639: Process BleNotifyRequest, status = Service Ready
15:42:29.646: getSmartHomeDevices ...
15:42:29.647: setCharacteristicNotification for F4:E6:61:B0:DD:9B, service = 0000fe95-0000-1000-8000-00805f9b34fb, character = 00000010-0000-1000-8000-00805f9b34fb, enable = true
15:42:29.647: >>> name = 小米米家智能门锁, did = 1010660332, mac = F8:49:C8:61:DF:1F, model = lumi.lock.mcn01, permit = 16, rssi = 0
15:42:29.651: >>> name = e9智能虹膜锁, did = 1050000072, mac = F4:E6:61:B0:DD:9B, model = eyecol.door.e9, permit = 16, rssi = 0
15:42:29.701: onDescriptorWrite for F4:E6:61:B0:DD:9B: status = 0, service = 0x0000fe95-0000-1000-8000-00805f9b34fb, character = 0x00000010-0000-1000-8000-00805f9b34fb, descriptor = 0x00002902-0000-1000-8000-00805f9b34fb
15:42:29.707: BleNotifyRequest F4:E6:61:B0:DD:9B >>> request complete: code = 0
15:42:29.708: BleSecurityChipLoginConnector Step 2 onResponse: REQUEST_SUCCESS
15:42:29.710: BleSecurityChipLoginConnector Process Step 3 ...
15:42:29.715: Process BleWriteNoRspRequest, status = Service Ready
15:42:29.718: writeCharacteristicWithNoRsp for F4:E6:61:B0:DD:9B: service = 0x0000fe95-0000-1000-8000-00805f9b34fb, character = 0x00000010-0000-1000-8000-00805f9b34fb, value = 0x20
15:42:29.723: onCharacteristicWrite for F4:E6:61:B0:DD:9B: status = 0, service = 0x0000fe95-0000-1000-8000-00805f9b34fb, character = 0x00000010-0000-1000-8000-00805f9b34fb, value = 20
15:42:29.738: BleWriteNoRspRequest F4:E6:61:B0:DD:9B >>> request complete: code = 0
15:42:29.743: BleSecurityChipLoginConnector Step 3 onResponse: REQUEST_SUCCESS
15:42:29.744: BleSecurityChipLoginConnector Process Step 4 ...
15:42:29.755: Process BleWriteNoRspRequest, status = Service Ready
15:42:29.756: writeCharacteristicWithNoRsp for F4:E6:61:B0:DD:9B: service = 0x0000fe95-0000-1000-8000-00805f9b34fb, character = 0x00000016-0000-1000-8000-00805f9b34fb, value = 0x000000030400
15:42:29.761: onCharacteristicWrite for F4:E6:61:B0:DD:9B: status = 0, service = 0x0000fe95-0000-1000-8000-00805f9b34fb, character = 0x00000016-0000-1000-8000-00805f9b34fb, value = 000000030400
15:42:29.764: BleWriteNoRspRequest F4:E6:61:B0:DD:9B >>> request complete: code = 0
15:42:29.855: onCharacteristicChanged for F4:E6:61:B0:DD:9B: value = 00000101, service = 0x0000fe95-0000-1000-8000-00805f9b34fb, character = 0x00000016-0000-1000-8000-00805f9b34fb
15:42:29.881: Process BleWriteNoRspRequest, status = Service Ready
15:42:29.886: writeCharacteristicWithNoRsp for F4:E6:61:B0:DD:9B: service = 0x0000fe95-0000-1000-8000-00805f9b34fb, character = 0x00000016-0000-1000-8000-00805f9b34fb, value = 0x0100092a6ee9517a79c6374caff40c0a76b05c82
15:42:29.888: onCharacteristicWrite for F4:E6:61:B0:DD:9B: status = 0, service = 0x0000fe95-0000-1000-8000-00805f9b34fb, character = 0x00000016-0000-1000-8000-00805f9b34fb, value = 0100092a6ee9517a79c6374caff40c0a76b05c82
15:42:29.890: BleWriteNoRspRequest F4:E6:61:B0:DD:9B >>> request complete: code = 0
15:42:29.903: Process BleWriteNoRspRequest, status = Service Ready
15:42:29.908: writeCharacteristicWithNoRsp for F4:E6:61:B0:DD:9B: service = 0x0000fe95-0000-1000-8000-00805f9b34fb, character = 0x00000016-0000-1000-8000-00805f9b34fb, value = 0x0200bc6b6fba7b595f62a321233f3be1246c2969
15:42:29.914: onCharacteristicWrite for F4:E6:61:B0:DD:9B: status = 0, service = 0x0000fe95-0000-1000-8000-00805f9b34fb, character = 0x00000016-0000-1000-8000-00805f9b34fb, value = 0200bc6b6fba7b595f62a321233f3be1246c2969
15:42:29.915: BleWriteNoRspRequest F4:E6:61:B0:DD:9B >>> request complete: code = 0
15:42:29.933: Process BleWriteNoRspRequest, status = Service Ready
15:42:29.961: writeCharacteristicWithNoRsp for F4:E6:61:B0:DD:9B: service = 0x0000fe95-0000-1000-8000-00805f9b34fb, character = 0x00000016-0000-1000-8000-00805f9b34fb, value = 0x0300d8f0ad0cb691f627bf7668f99c75bd83af81
15:42:29.972: onCharacteristicWrite for F4:E6:61:B0:DD:9B: status = 0, service = 0x0000fe95-0000-1000-8000-00805f9b34fb, character = 0x00000016-0000-1000-8000-00805f9b34fb, value = 0300d8f0ad0cb691f627bf7668f99c75bd83af81
15:42:29.973: BleWriteNoRspRequest F4:E6:61:B0:DD:9B >>> request complete: code = 0
15:42:29.991: Process BleWriteNoRspRequest, status = Service Ready
15:42:29.995: writeCharacteristicWithNoRsp for F4:E6:61:B0:DD:9B: service = 0x0000fe95-0000-1000-8000-00805f9b34fb, character = 0x00000016-0000-1000-8000-00805f9b34fb, value = 0x0400920086effbe1fd439b2e
15:42:30.000: onCharacteristicWrite for F4:E6:61:B0:DD:9B: status = 0, service = 0x0000fe95-0000-1000-8000-00805f9b34fb, character = 0x00000016-0000-1000-8000-00805f9b34fb, value = 0400920086effbe1fd439b2e
15:42:30.002: BleWriteNoRspRequest F4:E6:61:B0:DD:9B >>> request complete: code = 0
15:42:30.018: clearDisconnection F4:E6:61:B0:DD:9B
15:42:30.091: onCharacteristicChanged for F4:E6:61:B0:DD:9B: value = 00000100, service = 0x0000fe95-0000-1000-8000-00805f9b34fb, character = 0x00000016-0000-1000-8000-00805f9b34fb
15:42:30.098: onCharacteristicChanged for F4:E6:61:B0:DD:9B: value = 000000030400, service = 0x0000fe95-0000-1000-8000-00805f9b34fb, character = 0x00000016-0000-1000-8000-00805f9b34fb
15:42:30.109: BleSecurityChipLoginConnector Step 4 onResponse: REQUEST_SUCCESS
15:42:30.123: Process BleWriteNoRspRequest, status = Service Ready
15:42:30.128: writeCharacteristicWithNoRsp for F4:E6:61:B0:DD:9B: service = 0x0000fe95-0000-1000-8000-00805f9b34fb, character = 0x00000016-0000-1000-8000-00805f9b34fb, value = 0x000001010000
15:42:30.135: onCharacteristicWrite for F4:E6:61:B0:DD:9B: status = 0, service = 0x0000fe95-0000-1000-8000-00805f9b34fb, character = 0x00000016-0000-1000-8000-00805f9b34fb, value = 000001010000
15:42:30.137: BleWriteNoRspRequest F4:E6:61:B0:DD:9B >>> request complete: code = 0
15:42:30.190: onCharacteristicChanged for F4:E6:61:B0:DD:9B: value = 01007ec957e91f239c5439e440809d50351fa560, service = 0x0000fe95-0000-1000-8000-00805f9b34fb, character = 0x00000016-0000-1000-8000-00805f9b34fb
15:42:30.209: onCharacteristicChanged for F4:E6:61:B0:DD:9B: value = 020084477b2ae21532e39d855f631fb5f875e3b0, service = 0x0000fe95-0000-1000-8000-00805f9b34fb, character = 0x00000016-0000-1000-8000-00805f9b34fb
15:42:30.213: onCharacteristicChanged for F4:E6:61:B0:DD:9B: value = 0300a1b515bc76e70fabfc3d022837e534512104, service = 0x0000fe95-0000-1000-8000-00805f9b34fb, character = 0x00000016-0000-1000-8000-00805f9b34fb
15:42:30.220: onCharacteristicChanged for F4:E6:61:B0:DD:9B: value = 0400e604c567c66152f35005, service = 0x0000fe95-0000-1000-8000-00805f9b34fb, character = 0x00000016-0000-1000-8000-00805f9b34fb
15:42:30.238: Process BleWriteNoRspRequest, status = Service Ready
15:42:30.243: writeCharacteristicWithNoRsp for F4:E6:61:B0:DD:9B: service = 0x0000fe95-0000-1000-8000-00805f9b34fb, character = 0x00000016-0000-1000-8000-00805f9b34fb, value = 0x000001000000
15:42:30.249: onCharacteristicWrite for F4:E6:61:B0:DD:9B: status = 0, service = 0x0000fe95-0000-1000-8000-00805f9b34fb, character = 0x00000016-0000-1000-8000-00805f9b34fb, value = 000001000000
15:42:30.252: BleWriteNoRspRequest F4:E6:61:B0:DD:9B >>> request complete: code = 0
15:42:30.265: BleSecurityChipLoginConnector Process Step 5 ...
15:42:30.266: BleSecurityChipLoginConnector Process Step 6 ...
15:42:30.279: Process BleWriteNoRspRequest, status = Service Ready
15:42:30.282: writeCharacteristicWithNoRsp for F4:E6:61:B0:DD:9B: service = 0x0000fe95-0000-1000-8000-00805f9b34fb, character = 0x00000016-0000-1000-8000-00805f9b34fb, value = 0x000000050100
15:42:30.286: onCharacteristicWrite for F4:E6:61:B0:DD:9B: status = 0, service = 0x0000fe95-0000-1000-8000-00805f9b34fb, character = 0x00000016-0000-1000-8000-00805f9b34fb, value = 000000050100
15:42:30.288: BleWriteNoRspRequest F4:E6:61:B0:DD:9B >>> request complete: code = 0
15:42:30.371: onCharacteristicChanged for F4:E6:61:B0:DD:9B: value = 00000101, service = 0x0000fe95-0000-1000-8000-00805f9b34fb, character = 0x00000016-0000-1000-8000-00805f9b34fb
15:42:30.392: Process BleWriteNoRspRequest, status = Service Ready
15:42:30.398: writeCharacteristicWithNoRsp for F4:E6:61:B0:DD:9B: service = 0x0000fe95-0000-1000-8000-00805f9b34fb, character = 0x00000016-0000-1000-8000-00805f9b34fb, value = 0x0100fc97f62bf177c017
15:42:30.407: onCharacteristicWrite for F4:E6:61:B0:DD:9B: status = 0, service = 0x0000fe95-0000-1000-8000-00805f9b34fb, character = 0x00000016-0000-1000-8000-00805f9b34fb, value = 0100fc97f62bf177c017
15:42:30.411: BleWriteNoRspRequest F4:E6:61:B0:DD:9B >>> request complete: code = 0
15:42:30.452: onCharacteristicChanged for F4:E6:61:B0:DD:9B: value = 00000100, service = 0x0000fe95-0000-1000-8000-00805f9b34fb, character = 0x00000016-0000-1000-8000-00805f9b34fb
15:42:30.497: onCharacteristicChanged for F4:E6:61:B0:DD:9B: value = 21000000, service = 0x0000fe95-0000-1000-8000-00805f9b34fb, character = 0x00000010-0000-1000-8000-00805f9b34fb
15:42:30.525: BleSecurityChipLoginConnector Process Step 7 ..., value = 21000000
15:42:30.529: BleSecurityChipLoginConnector.dispatchResult code = REQUEST_SUCCESS
15:42:30.531: ConnectResponse onAuthResponse: code = 0
15:42:30.531: ConnectResponse onBindResponse: code = 0
15:42:30.532: BleBindActivity onAuthResponse: code = 0
15:42:30.533: BleBind Step 2/3 response: code = REQUEST_SUCCESS
15:42:30.534: SecureConnect onResponse: code = REQUEST_SUCCESS
15:42:30.534: report key = bluetooth_auth_success
15:42:30.535: ConnectResponse onLastResponse: code = 0
15:42:30.536: BleBindActivity onBindResponse: code = 0
15:42:30.536: BleBind Step 3/3 response: code = REQUEST_SUCCESS
15:42:30.537: report key = bluetooth_bind_success
15:42:30.545: BleBindActivity onLastResponse: code = 0
15:42:30.560: BleBindActivityV2 bluetooth login success: F4:E6:61:B0:DD:9B
from mijia_ble_secure.
- 从 log 看不出对 stdio service
00000100-0065-6c62-2e74-6f696d2e696
有任何操作。发现服务后即没有 setCharacteristicNotification 允许设备发送数据,也没有调用 writeCharacteristicWithNoRsp 给设备发送数据。 - 如果设备侧发送数据失败,那么 stdio_tx 中
mible_gatts_notify_or_indicate()
返回的 error code 是多少?可根据这个 error code 进一步分析具体的失败原因。(我猜测 大概率是没有 enable cccd 导致发送失败)
from mijia_ble_secure.
加入log信息后:
对应log信息如下
对此屏蔽该段代码:
对应的error code如图
插件开发部分未做ble协议部分操作,米家插件是否有相关cccd的调用接口?
from mijia_ble_secure.
图一:错误 BLE_CONN_HANDLE_INVALID
,意味着为未建立 BLE 连接。既然没有建立连接,自然不能发送数据。
另外,即使建立蓝牙连接,也不意味着可以直接发送数据。
根据 米家高安全级BLE接入芯片平台开发.md 中的第三节 3.应用层开发 的描述:
stdio 是米家透传服务,旨在演示如何进行加密数据传输。
会话密钥在米家登陆后才会生成。因此,不能使用非米家 App 进行非加密数据传输。
from mijia_ble_secure.
首先,米家提供的 libs 以及 demo 工程均已经过测试,我无法复现你描述的现象。
其次,当前的讨论内容已经偏离 bug report 主题,根本原因是你们对于 android 蓝牙开发和 nordic SDK 工作原理缺乏认知。建议你们先阅读一下 android BLE 开发指南和 nordic SDK 文档,再进行下一步的开发。也可以参考米家蓝牙安全开发板插件代码,了解一下蓝牙设备的正常操作流程。
from mijia_ble_secure.
Related Issues (20)
- 开发蓝牙加密门锁遇到异常,米家APP无法发现设备 HOT 2
- 门锁调试apk连接高安全门锁时连接失败,安全认证失败,错误代码-28 HOT 5
- 新产品绑定时提示安全验证失败-26 HOT 4
- 设备恢复出厂设置,APP提示未找到门锁 HOT 1
- 蓝牙连接报error-7或-28 disconnect 13 HOT 15
- GATT协议里的lock service的UUID固定吗?characteristic能增加自定义项吗? HOT 1
- 检测不到蓝牙设备 HOT 3
- 无法检测到设备 HOT 12
- 目前ble模块只能发送和接收小于等于14个字节的数据,请问下这个限制可以改吗?怎么改? HOT 1
- 确定加密芯片引脚
- 加密芯片自检不通过
- 加密芯片自检无法通过
- 新产品注册绑定时提示安全验证失败-28 HOT 1
- 蓝牙锁安全验证 HOT 2
- 蓝牙锁一次性密码获取 HOT 2
- OTA疑问 HOT 2
- MHCB03P 蓝牙模组是否支持安全芯片 HOT 1
- 事件消息接收异常 HOT 1
- IOS绑定失败无错误码 HOT 7
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mijia_ble_secure.