Giter Site home page Giter Site logo

Comments (8)

0xabadc0fe avatar 0xabadc0fe commented on July 18, 2024

[I] stdio: stdio_tx error:0[I] : UART RECIVE OK
这行 log 是你们自己添加的,它的具体含义是什么?error:0 是指失败的意思吗?
你们可以更新一下最新的 mijia ble libs (commit:b6e581),看看问题是否还存在。

from mijia_ble_secure.

pengchengcool avatar pengchengcool commented on July 18, 2024

为调试该问题,在代码中加入了这段log,上位机通过串口发送到nRF52后,会有这个信息,当手机近场通过蓝牙发送数据到nRF52成功后会有另一个log信息:ble transfer OK,如果stdio通讯成功的话,应该能收到。
目前stdio是完全调用的lib库,仅在其中加入了上述log信息,另error信息还有:error:1,如下图
image
image
最新lib库文件已重新下载,稍后反馈验证结果!

from mijia_ble_secure.

0xabadc0fe avatar 0xabadc0fe commented on July 18, 2024

根据 米家高安全级BLE接入芯片平台开发.md 中的第三节 3.应用层开发 的描述:
stdio 是米家透传服务,旨在演示如何进行加密数据传输。
会话密钥在米家登陆后才会生成。因此,不能使用非米家 App 进行非加密数据传输。

from mijia_ble_secure.

pengchengcool avatar pengchengcool commented on July 18, 2024

更新最新版本 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.

0xabadc0fe avatar 0xabadc0fe commented on July 18, 2024
  1. 从 log 看不出对 stdio service 00000100-0065-6c62-2e74-6f696d2e696 有任何操作。发现服务后即没有 setCharacteristicNotification 允许设备发送数据,也没有调用 writeCharacteristicWithNoRsp 给设备发送数据。
  2. 如果设备侧发送数据失败,那么 stdio_tx 中 mible_gatts_notify_or_indicate() 返回的 error code 是多少?可根据这个 error code 进一步分析具体的失败原因。(我猜测 大概率是没有 enable cccd 导致发送失败)

from mijia_ble_secure.

pengchengcool avatar pengchengcool commented on July 18, 2024

加入log信息后:
image
对应log信息如下
image
对此屏蔽该段代码:
image
对应的error code如图
image
插件开发部分未做ble协议部分操作,米家插件是否有相关cccd的调用接口?

from mijia_ble_secure.

0xabadc0fe avatar 0xabadc0fe commented on July 18, 2024

图一:错误 BLE_CONN_HANDLE_INVALID ,意味着为未建立 BLE 连接。既然没有建立连接,自然不能发送数据。
另外,即使建立蓝牙连接,也不意味着可以直接发送数据。

根据 米家高安全级BLE接入芯片平台开发.md 中的第三节 3.应用层开发 的描述:
stdio 是米家透传服务,旨在演示如何进行加密数据传输。
会话密钥在米家登陆后才会生成。因此,不能使用非米家 App 进行非加密数据传输。

from mijia_ble_secure.

0xabadc0fe avatar 0xabadc0fe commented on July 18, 2024

首先,米家提供的 libs 以及 demo 工程均已经过测试,我无法复现你描述的现象。
其次,当前的讨论内容已经偏离 bug report 主题,根本原因是你们对于 android 蓝牙开发和 nordic SDK 工作原理缺乏认知。建议你们先阅读一下 android BLE 开发指南和 nordic SDK 文档,再进行下一步的开发。也可以参考米家蓝牙安全开发板插件代码,了解一下蓝牙设备的正常操作流程。

from mijia_ble_secure.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.