This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] LAUNCHLL-CC2640R2:配对和在simule_peripheral中读取加密数据的问题

Guru**** 2558250 points
Other Parts Discussed in Thread: CC2640R2F, BLE-STACK, CC2650

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/582935/launchxl-cc2640r2-issue-with-pairing-encrypted-data-read-in-simple_peripheral

部件号:LAUNCHLL-CC2640R2
主题中讨论的其他部件:CC2640R2FBLE-STACKCC2650

您好,

我正在使用堆栈版本SimpleLinkTmCC2640R2 SDK 1.00 .00.22 和CC2640R2F芯片集。

使用的示例项目:C:\TI\simplelink_cc2640r2_SDK_1_00_00_22\examples\RTOS\CC2640R2_LAUNCCHXL\blestack\simple_peripheral</s>2640

我的要求 是:配对+在不绑定的情况下读取加密数据。

对于配对(只能使用),我的配置是

   uINT32_t密钥= 0;//密钥"0万"

   UINT8_t pairMode = GAPBOND_Pair_MODE_Initiate;

   UINT8_t MITM =假;

   UINT8_t ioCap = GAPBOND_IO_CAP_NO_INPUT_NO_OUTPUT;

   UINT8_t绑定=假;

 

   GAPBondMgr_SetParameter(GAPBOND_DEFAULT_Passcode,sizeof(UINT32_t),

                           密钥(&P));

   GAPBondMgr_SetParameter (GAPBOND_Pair_mode,sizeof(uint8_t),&pairMode);

   GAPBondMgr_SetParameter (GAPBOND_MITM_protection,sizeof(uint8_t),&MItm);

   GAPBondMgr_SetParameter (GAPBOND_IO_Capabilities,sizeof(uint8_t),&ioCap);

   GAPBondMgr_SetParameter (GAPBOND_Bonding_enabled,sizeof (uint8_t),&Bonding);

对于GATT配置文件中的加密,我的配置为 :


静态gattAttribute_t simpleProfileAttrTbL[SERVAPP_NUM_ATTR_SUPPORTE]=

 //简单配置文件服务

 {

   { ATT_BT_UUUID_SIZE,primaryServiceUUID },/* type */

   GATT_permit_encrypt_read,                        /*权限*/

   0,                                       /*句柄*/

   (UINT8 *)&simpleProfileService           /* pValue */

 },

 

   //特性1声明

   {

     { ATT_BT_UUID_SIZE,字符UUID },

     GATT许可加密读取,

     0,

     &simpleProfileChar1Props

   },

 

     //特性值1

     {

       { ATT_BT_UUID_SIZE,simpleProfilechar1UUID },

       GATT_permit_encrypt_read | GATT_permit_write,

       0,

       &simpleProfileChar1.

     },

 

     //特性1用户描述

     {

       { ATT_BT_UUID_SIZE,charUserDescUUID },

       GATT许可加密读取,

       0,

       simpleProfileChar1UserDesp

     },      

 

   //特性2声明

   {

     { ATT_BT_UUID_SIZE,字符UUID },

     GATT许可加密读取,

     0,

     &simpleProfileChar2Props

   },

 

     //特性值2.

     {

       { ATT_BT_UUID_SIZE,simpleProfilechar2UUID },

       GATT许可加密读取,

       0,

       &simpleProfileChar2.

     },

 

     //特性2用户描述

     {

       { ATT_BT_UUID_SIZE,charUserDescUUID },

       GATT许可加密读取,

       0,

       simpleProfileChar2UserDesp

     },           

     

   //特性3声明

   {

     { ATT_BT_UUID_SIZE,字符UUID },

     GATT许可加密读取,

     0,

     &simpleProfileChar3Props

   },

 

     //特性值3.

     {

       { ATT_BT_UUID_SIZE,simpleProfilechar3UUID },

       GATT许可写入,

       0,

       &simpleProfileChar3.

     },

 

     //特性3用户描述

     {

       { ATT_BT_UUID_SIZE,charUserDescUUID },

       GATT许可加密读取,

       0,

       simpleProfileChar3UserDesp

     },

 

   //特性4声明

   {

     { ATT_BT_UUID_SIZE,字符UUID },

     GATT许可加密读取,

     0,

     &simpleProfileChar4Props

   },

 

     //特性值4.

     {

       { ATT_BT_UUID_SIZE,simpleProfilechar4UUID },

       0,

       0,

       &simpleProfileChar4.

     },

 

     //特性4配置

     {

       { ATT_BT_UUID_SIZE,clientCharCfgUUID },

       GATT_permit_encrypt_read | GATT_permit_write,

       0,

       (UINT8 *)&simpleProfileChar4Config

     },

     

     //特性4用户描述

     {

       { ATT_BT_UUID_SIZE,charUserDescUUID },

       GATT许可加密读取,

       0,

       simpleProfileChar4UserDesp

     },

     

   //特性5声明

   {

     { ATT_BT_UUID_SIZE,字符UUID },

     GATT许可加密读取,

     0,

     &simpleProfileChar5Props

   },

 

     //特性值5.

     {

       { ATT_BT_UUID_SIZE,simpleProfilechar5UUID },

       GATT许可加密读取,

       0,

       simpleProfileChar5.

     },

 

     //特性5用户描述

     {

       { ATT_BT_UUID_SIZE,charUserDescUUID },

       GATT许可加密读取,

       0,

       simpleProfileChar5UserDesp

     },

};

观察:

对于上述配置,在将我的设备(外围设备)与中央设备配对后,每当我尝试连接时,我的设备(外围设备)都挂起,并且无法恢复。

重置后,它将再次开始广告。

如果我通过 在Bond Manager (绑定管理器)部分进行以下更改启用绑定以及配对+数据加密,

UINT8_t绑定=真;

GAPBondMgr_SetParameter (GAPBOND_Bonding_enabled,sizeof (uint8_t),&Bonding);

其余配置未更改。

simpleProfileAttrTbl中没有变化。

观察:

对于上述配置,将设备(外围设备)与中央设备配对后,每当我尝试连接时,我的设备(外围设备)都已正确连接,并且我可以读取和写入数据。

 既然我的要求是配对+不绑定读取加密数据,有人能建议如何处理这种情况吗?

谢谢,此致,

Jayachandran R

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好Jayachandran,

    您能否提供一个不带绑定案例的配对探测器捕获,以便我们可以观察对等设备的配对请求? 这将帮助我们复制问题。

    祝你一切顺利
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    观察中的一些修正。这两种情况下的设备都无法立即配对其断开连接。

    提供错误日志GATT内部错误的中央设备。

    但当我们在我们能够连接的特征中禁用加密时。

    我们将Andriod电话用作NRF应用程序的中心设备

    但有些手机会让人感觉很不好

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    JXS,您好!

    谢谢。

    已附加嗅探器日志文件,可通过Wireshark查看。

    谢谢

    Jayachandran

    e2e.ti.com/.../1258.log.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好,Jayachandran

    您的日志显示了来自MediaTek (MTK)主设备的连接。 您的从属设备正在发送一个SMP从属设备安全请求,但没有MITM和绑定。 您是否可以通过更改以下内容来禁用此请求:

    UINT8_t pairMode = GAPBOND_Pairing_MODE_WAY_FOR_REQ;
    GAPBondMgr_SetParameter (GAPBOND_Pair_mode,sizeof(uint8_t),&pairMode);

    祝你一切顺利
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    e2e.ti.com/.../withWaitForReqEnabled.zipHiJXS,

    谢谢。

    请找到包含建议配置的日志,仍然是我们面临的相同问题。

    相同的配置可用于旧堆栈版本(2.2 .1) (C:\ti\simplelink\ble_SDK_2_02_01_18)。

    实际问题是在服务中启用了配对和加密时,上面提到的是在R2示例的堆栈版本3.0 0中发生的情况。

    谢谢,此致,

    Jayachandran R  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好,Jayachandran,

    我查看了您的新日志。 您的中心似乎出于任何原因都没有进行发现。 是否可以将旧版本2.2 1的嗅探器连接起来作为比较?

    您可以尝试的另一件事是禁用数据长度扩展(DLE)功能,这可能会让电话感到困惑,但它不应该这样做。

    请参阅DLE文档: software-dl.ti.com/.../index.html
    禁用的过程列在“在运行时使用该功能”下。

    另外,我建议使用BLE-Stack 3.0 v.1。

    祝你一切顺利
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    JXS,您好!
    我们尝试根据TI Wiki禁用数据长度扩展(DLE)功能。 它不起作用。
    但我们的要求是第一个连接本身,我们需要更大的PDU大小。
    我们使用Andriod和iphone作为中心设备。
    因此,首次配对时发生的情况似乎是中央设备超时。 但不确定。可能是不兼容问题。
    我们如何测试智能手机的最大PDU大小?
    我们是否需要从智能手机应用程序端进行此操作?

    请提供您的反馈。
    谢谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,

    在您的嗅探器捕获中,中央/主设备不支持DLE功能,因为它已收到CC2640R2F的请求。 如果中央/客户端请求,您仍然可以使用更大的ATT MTU大小。 我将GitHub上的吞吐量演示作为一个有效的示例。

    祝你一切顺利
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,
    感谢您的回复。
    我们正在使用Andriod mbile NRF应用程序进行测试。
    我们没有NRF董事会。

    我们是否有任何移动应用程序或PC桌面应用程序来测试此功能?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,

    我们是否有任何移动应用程序或Windows PC的含义来测试PDU大小超过27?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,

    NRF应用程序是否允许您请求更大的MTU? 手机必须支持它,应用程序才能支持它。

    您可以在PC端使用BTool,并且Host_Test固件运行在通过USB连接的另一个CC2650 LaunchPad上。

    祝你一切顺利
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,
    同一个NRF应用程序在iPhone中工作。
    但它在andriod手机上不起作用