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.

[参考译文] LAUNCHXL-CC1352R1:如何在 Ubuntu 中使用 host_test 堆栈执行 HCI 命令?

Guru**** 2035740 points
Other Parts Discussed in Thread: LAUNCHXL-CC1352R1, BLE-STACK, CC2340R5, LAUNCHXL-CC2640R2, LAUNCHXL-CC1310, CC1310
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1167746/launchxl-cc1352r1-how-to-execute-hci-command-with-host_test-stack-in-ubuntu

器件型号:LAUNCHXL-CC1352R1
主题中讨论的其他器件: BLE-STACKCC2340R5LAUNCHXL-CC2640R2LAUNCHXL-CC1310CC1310

尊敬的 TI 社区:

  是否有人知道如何使用 hciattach/hcitool 运行 HCI 命令?

  我使用以下命令、但会发生 hci0无法启动的情况、有经验的任何人能否告诉我原因?

    Jamie@my-PC:~$ sudo hciattach /dev/ttyACM0 any
    器件设置完成

    Jamie@my-PC:~$ sudo hciconfig hci0 up
    无法初始化设备 hci0:连接超时(110)

    Jamie@my-PC:~$ sudo hcitool -i hci0 cmd 0x04 0x0001
    设备无效:网络已关闭

  Linux 版本:
    Linux 版本5.4.0-131-generic (buildd@lcy02-amd64-092)(gcc 版本7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)#147~18.04.1-Ubuntu SMP Sat OCT 15 13:10:18 UTC 2022

  LAUNCHXL-CC1352R1的堆栈:
    C:\ti\simplelink_cc13xx_cc26xx_sdk_6_20_00_29\examples\rtos\CC1352R1_LAUNCHXL_ble5stack\hexfiles\host_test_app.hex

谢谢、

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

    您好 Jamie、

    主机测试示例不支持 hci0。  

    请参阅 HCI 供应商特定指南:

    https://dev.ti.com/tirex/explore/content/simplelink_cc13xx_cc26xx_sdk_6_30_00_84/docs/ble5stack/vendor_specific_guide/BLE_Vendor_Specific_HCI_Guide/index.html

    谢谢、

    玛丽·H

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

    您好、Marie、

      感谢您的回复~~

      我知道 hci0不受支持、但我只想确保 ttyACM0可以通过 hciattach 打开、因为这样我就可以跟踪  hciattach 代码并知道芯片的初始化过程。

      您是否知道如何在 Linux 中成功初始化(open()/writ()/read()) CC1352R1和执行 HCI 命令?

    谢谢、

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

    您好 Jamie、

    从我们的角度来看、它打算将 BTool 与 host_test 结合使用。 您应该能够使用 Mono 在 Linux 上运行 BTool。 BTool 与 CC13xx/CC26xx SDK 捆绑在一起。 您可以在此处找到用户指南:  

    https://dev.ti.com/tirex/explore/content/simplelink_cc13xx_cc26xx_sdk_6_30_00_84/docs/ble5stack/btool_user_guide/BTool_Users_Guide/index.html

    BTool 将记录所有命令并返回事件。 要在器件上启动 BLE-Stack、请发送 GAP_DeviceInit 命令。

    谢谢、

    玛丽·H

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

    您好、Marie、

     这个 btool 在我的 Windows 上运行良好、但我的目标是能够在嵌入式系统上使用 HCI 命令、由于存储空间有限、因此不建议将 Mono + BTool 放入闪存中。

     因此、我可能需要一些可移植到 Linux 的示例初始化代码。

     BTW、我尝试在 Ubuntu 中使用 Mono + btool.exe、但似乎存在以下问题:

        Jamie@my-PC:~/work/btool Mono btool.exe
        未处理异常:
        System.IO.FileNotFoundException:无法加载文件或汇编或其依赖项之一。
        文件名:'System.Windows.Forms, Version=4.0.0.0, Culture=Neutral,PublicKeyToken=b77a5c561934e089'

        注意:btool 源文件来自 C:\ti\simplelink_cc13xx_cc26xx_sdk_6_20_00_29\tools\ble5stack\btool

    谢谢、

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

    您好 Jamie、

    您是否正在寻找在 Linux 机器上运行的代码或 CC1352器件所需的命令?

    谢谢、

    玛丽·H

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

    您好、Marie、

      我正在寻找能够在 Linux 上通过 open()初始化 CC1352R1、然后通过 write()/read()执行 HCI 命令的代码,如 hciattach 和 hcitool

    谢谢、

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

    您好 Jamie、

    我们没有任何说明这一点的示例代码。

    另一种方法是使用 CC256x 器件、该器件是一个仅用于 BT/BLE 控制器的器件。

    谢谢、

    玛丽·H

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

    您好、Marie、

      我现在没有 CC256x。
      我最后使用的芯片是 CC2340R5、但它仍处于开发阶段(TI)、并且没有 host_test 模式堆栈让我在 LP-EMCC2340R5中进行测试、因此我使用 LAUNCHXL-CC1352R1来首先测试。

      顺便说一下、有时我可以通过 hciattach 使用 LAUNCHXL-CC2640R2、并通过 hcitool 执行一些 HCI 命令、如下所示、但我无法使用 LAUNCHXL-CC1352R1、您知道原因吗?

        堆栈:c:\ti\simplelink_cc2640r2_sdk_2_40_00_32\examples\rtos\cc2640R2_LAUNCHXL_ble5stack\hexfiles\cc2640r2lp_host_test.hex

        Jamie@my-PC:~$ sudo hciattach /dev/ttyACM0 any
        器件设置完成
        Jamie@my-PC:~$ sudo hciconfig hci0 up

        Jamie@my-PC:~$ sudo hcitool -i hci0 cmd 0x04 0x0001
        < HCI 命令:ogf 0x04、ocf 0x0001、PLEN 0
        >HCI 事件:0x0E PLEN 12.
        01 10 00 08 22 03 08 0D 00 22 03

    谢谢、

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

    您好 Jamie、

    CC2640R2和 CC1352R1上的 BLE-Stack 存在一些差异。 但是、在任何一个器件上都没有对 hcitool 或 hciattach 的正式支持、

    谢谢、

    玛丽·H

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

    您好、Marie、

      一般而言、如果客户希望在嵌入式系统(具有 Linux)上为 TI BLE 芯片执行 HCI (具有 host_test 模式 ble5stack)、TI 有何建议?

      BTW、您是否有 BTool 可为我们提供参考的源代码?

    谢谢、

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

    您好 Jamie、

    目的是使用 HCI 供应商专用指南来实现与 CC13xx 器件的接口。

    我们不提供 BTool 的源代码。

    谢谢、

    玛丽·H

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

    您好、Marie、

      我们还使用 HCI 供应商特定指南来实现它、
      但现在的问题是、写入() HCI 命令后、我们无法读取() HCI 事件、
      

      因此、我怀疑这个问题来自芯片 UART 初始化过程。

    谢谢、

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

    您好 Jamie、

    您可以在此处阅读我们的 UART 文档:

    UART 驱动程序: https://dev.ti.com/tirex/explore/content/simplelink_cc13xx_cc26xx_sdk_6_30_00_84/docs/drivers/doxygen/html/_u_a_r_t2_8h.html

    技术参考手册中的 UART 章节: https://www.ti.com/lit/swcu185

    我们提供了 TI 15.4-Stack 的 Linux 代码示例。 也许看我会有帮助吗? 我们有用于笔记本电脑(Ubuntu)和 Beagle Bone Black 的代码。

    https://www.ti.com/tool/TI-15.4-STACK-GATEWAY-LINUX-SDK

    谢谢、

    玛丽·H

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

    您好、Marie、

      感谢您提供的信息、我需要一些时间来学习。

    谢谢、

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

    您好、Marie、

      昨天我在 Ubuntu 中使用 LAUNCHXL-CC1310测试了 TI 15.4-Stack、状态如下。

       测试架构:

          SDK:

          ti154stack_linux_x64_4_40_00_03

         适用于 CC1310的堆栈:

           firmware/coprocessor_cc1352lp_tirtos_ccs.hex

          Collector 应用<=/dev/ttyACM0===协处理器模块

             收集器应用程序:PC (Ubuntu)
             协处理器模块:LAUNCHXL-CC1310

       run_demo.sh 的测试结果:

          有时工作正常(URL http://localhost:1310显示 PanID:0xACDC、Coord Addr:0xAABB)、 但有时会出现如下消息"器件复位后未接收到复位响应" 、则"host_collector"无法执行。

           Jamie@my-PC:~/work/ti/sdk/ti154stack_linux_x64_4_40_00_03/prebuilt sudo ./run_demo.sh
          在后台启动收集器应用程序
          收集器作为进程运行 ID:15544
          在后台启动 Node-JS 网关应用程序
          错误:与 AppServer 的套接字连接出现接收错误
          网关以进程 ID:15552的形式运行
          正在启动 Web 浏览器... http://localhost:1310
          不支持在常规用户会话中以 root 身份运行 Firefox。 ($HOME 是由 Jamie 拥有的/home/jamie。)
          <...跳过...>
          不支持在常规用户会话中以 root 身份运行 Firefox。 ($HOME 是由 Jamie 拥有的/home/jamie。)
          /usr/bin/xdg-open:列851:Iceweasel:命令找不到
          /usr/bin/xdg-open:列851:SeaMonkey:命令找不到
          <...跳过...>
          /usr/bin/xdg-open:列851:Lynx:命令找不到
          /usr/bin/xdg-open:列851:w3m:命令找不到
          XDG-open:没有用于打开'http://localhost:1310'的方法
          器件复位后未接收到复位响应
          0)./host_collector (+0x1f74f)[0x5557417c974f]
          1)./host_collector (+0x1f8ba)[0x5557417c98ba]
          <...跳过...>
          9)./host_collector (+0x4490)[0x5557417ae490]
          10)/lib/x86_64-linux-gnu/libc.so.6 (_libc_start_main+0xe7)[0x7f6cfb786c87]
          11)./host_collector (+0x348a)[0x5557417ad48A]

       run_collector.sh 的测试结果

             有时工作正常、 但与 run_demo.sh 类似 、有时 会显示错误消息"器件复位后未接收到复位响应"

                Jamie@my-PC:~/work/ti/sdk/ti154stack_linux_x64_4_40_00_03/prebuilt/bin sudo ./run_collector.sh
                收集器作为进程运行 ID:20303
                Jamie@my-PC:~/work/ti/sdk/ti154stack_linux_x64_4_40_00_03/prebuilt/bin 器件复位后未收到复位响应
                0)./host_collector (+0x1f74f)[0x55aeb4f5474f]
                1)./host_collector (+0x1f8ba)[0x55aeb4f548ba]
                <...跳过...>
                9)./host_collector (+0x4490)[0x55aeb4f39490]
                10)/lib/x86_64-linux-gnu/libc.so.6 (_libc_start_main+0xe7)[0x7f11f8379c87]
                11)./host_collector (+0x348a)[0x55aeb4f3848A]

       "host_collector"的初始化流程

             我重新编译了示例/收集器并跟踪初始化流程、如下所示:

                在 createInterface()中

                 MT_MSG_interfaceCreate()
                      stream_createUart()
                      Plu->h =打开(Plu->cfg.devname、f)

                   /*重置设备以进行初始化*/
                   resetCoPDevice();

                      linux_specify.c/UNIX_fdWrThes()
                      r =写入(prw->fd、prw->this _c_buf、prw->this _len);

                      POLL_COMMON ()
                     r = select (prw->FD+1、&rw_set、NULL、&err_set、PTV);

       问题的原因(器件复位后未接收到复位响应)

          "host_collector"的问题与我提出的问题相同、这两个问题都无法读取。

          蓝底粘附:
                open():成功
                write():成功
                Read():失败

          TI  host_collector:
                open():成功
                write():成功
              select():失败

      那么、这个"host_collector"工具每次在您的环境中都能成功执行?

    谢谢、

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

    您好、Marie、

      一些测试状态更新。

      我之前测试过的环境是 Win7中的 VirtualBox + Ubuntu、但如果我仅更改为 Ubuntu (不带 VM)、则我可以很高的概率地使用我们的代码成功执行 HCI (有时仍然失败)。

      因此、之前发生故障(难以接收 HCI 事件)的原因可能来自 VM 的设置或影响。

    谢谢、

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

    您好 Jamie、

    目的是 在任何其他堆栈 API 之前发送 GAP_DeviceInit()。 我们期望收到一个具有成功状态的 HCI_LE_ExtEvent。 如果您向下滚动、请查看 BTool 中的打印输出。  https://dev.ti.com/tirex/explore/node?node=A__ABL3ofs3Qra5auStnAqIaA__com.ti.SIMPLELINK_ACADEMY_CC13XX_CC26XX_SDK__AfkT0vQ__LATEST 

    谢谢、

    玛丽·H

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

    器件型号:LAUNCHXL-CC1352R1

    尊敬的 TI 社区:

      我可以在 Ubuntu PC 中使用 blestack (host_test)执行一些旧操作码、但无法使用 ble5stack 执行

       例如:

           0xfe30 (GAP_LIM_DISC_ADV_INT_MIN 的 GAP_SetParamValue)
              HCI 事件错误代码=> 0x2

           0xfe08 (GAP 结束可发现)
              HCI 事件错误代码=> 0x1

           0xfe00 (GAP_DeviceInit)
              HCI 事件错误代码=> 0x2

       是否有人知道如何在 host_test 模式下使用 ble5stack 执行传统 HCI 命令?


       LAUNCHXL-CC1352R1在我们的 Linux 中使用/dev/ttyACM0:
          Linux 版本5.4.0-131-generic (buildd@lcy02-amd64-092)(gcc 版本7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)#147~18.04.1-Ubuntu SMP Sat OCT 15 13:10:18 UTC 2022

       LAUNCHXL-CC1352R1的堆栈:
          C:\ti\simplelink_cc13xx_cc26xx_sdk_6_20_00_29\examples\rtos\CC1352R1_LAUNCHXL_ble5stack\hexfiles\host_test_app.hex

    谢谢、

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

    尊敬的 TI 社区:

      或者、我能否使用其他操作码更新和发送具有 host_test + blestack 的信标(如 iBeacon 或 Eddystone)?

    谢谢、

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

    您好 Jamie、

    您可以使用常规广播命令发送信标、但您需要自己跟踪 iBeacon 或 Eddystone 格式。  

    为了发送非连接的、不可扫描的通告(也称为信标)、请使用 GapAdv_create 并仅应用  GAP_ADV_PROP_LEGACY 标志。

    谢谢、

    玛丽·H

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

    您好、Marie、

      感谢您的确认、我将重试

    谢谢、