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.

[参考译文] Linux:关于 bluetopia 二进制文件

Guru**** 2523280 points
Other Parts Discussed in Thread: WL1831

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/568532/linux-regarding-bluetopia-binaries

Thread 中讨论的其他器件:WL1831

工具/软件:Linux

您好,

我使用 TI 蓝牙协议栈来实现 WL18xx 并使用 LinuxIbeaon 二进制文件。 我能够成功配置 UUID、MAJOR、MINOR 和 Txpower、但更改 txpower 后对范围没有影响、在所有情况下范围都是相同的。

SetIbeaconTxPower 0xf8

SetIbeaconTxPower 0xFC

SetIbeaconTxPower 0x04

SetIbeaconTxPower 0x02

请尽快对此进行研究。

谢谢你

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

    您能否提供有关该问题的更详细的描述? 您能否添加您已完成的步骤以及您希望执行的操作?

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

    情况是、我在这里使用 TI Bluetopia Stack for WL18xx 创建一个信标。 为此、我将使用 LinuxIdebacon 二进制文件、并能够成功配置主电源、次电源、uuid 电源和 TX 电源。
    我使用的 TI wl1831模块在单芯片上同时具有 WIFI 和蓝牙功能。

    这些是我已经执行的步骤--

    1.Compile Bluetopia 协议栈。
    2.在后台运行 SS1BTPM 二进制文件。
    然后运行 LinuxIBeacon 二进制文件并使用其 API -
    I. SetDevicePower 1.
    二 SetIbeaconUUID 12345678-1234-1234567890123456
    三 SetIbeaconMajor 2345
    四. SetIbeaconMinor 9874
    V. SetIbeaconTxPower 2.
    六. StartAdvertising 60.

    但是、配置 txpower 后、我无法更改信标范围。 我尝试设置不同的 txpower、但信标广播范围在所有情况下都是相似的。

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

    现在、我了解了整个情况。 但问题与 Linux 内核无关、但它特定于 WL18xx 和 Bluetopia 栈。 因此、我将在双模蓝牙 E2E 论坛部分中移动该主题。

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

    对此是否有任何后续行动?

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

    我们没有收到来自双模蓝牙论坛的任何回复。 可以帮帮你吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您的查询已分配给相关专家。 我们很快会回来。

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

    您好、Samiksha、

    进行挖掘后、IBeacon 应用/配置文件无法更改蓝牙无线电的输出功率。 TX 功率值通常在距离连接设备(手机/平板电脑等) 1m 的距离内校准一次、并使用算法根据校准值和当前 RSSI 估算两个设备之间的距离。

    苹果的以下规范可能会让您更深入地了解该主题:

    developer.apple.com/.../Getting-Started-with-iBeacon.pdf

    BLE 输出功率可通过应用中的 HCI 命令或 BTS 脚本进行更改。 当前应用只是更改广播包中的输出功率串。

    首先、您可以使用 HCI_VS_DRPb_SET_Power_Vector HCI 命令更改输出功率、有关参数和返回值的信息可在供应商特定 HCI 命令用户指南的第39页找到。


    www.ti.com/.../swru442a.pdf

    如需更多信息、请参阅 Wilink8 BLE 快讯中的问题8: processors.wiki.ti.com/.../WiLink_FAQ

    最棒的
    亚历山大

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

    感谢 Alexander 的回答。

    现在、我们将按照 swru442a.pdf 第39页上的 HCI_VS_DRPb_SET_Power_Vector HCI 命令 、使用 SS1Tool 设置功率级别。

    在以 SS1Tool 格式转换 VS 命令后、我们运行了低功耗矢量表、高功率矢量表命令和2类功率矢量命令来设置功率级别6、然后运行 TPC 命令。

    然后在 LinuxIsacon 二进制文件中使用 StartAdvertising API 进行广播并与频谱分析仪进行检查、不会对功率进行任何更改。

    我还附加了 cmd.txt 文件、其中包含 SS1Tool 格式的 VS 命令、以及我们在芯片上运行的 SS1Tool 命令 o/p 的 SS1Tool_logs.txt 文件。

    Thanks.e2e.ti.com/.../SS1Tool_5F00_logs.txte2e.ti.com/.../cmd.txt

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

    您好、Samiksha、

    在更改每个功率矢量后、似乎没有发出 HCI 等待命令。 从第39页开始:

    在每个矢量变化后调用 WAIT_HCI_Command_Complete_VS_DRPb_Set_Power_Vector_Event。

    与 SS1Tool 相比、使用 HCI 测试仪工具在 BTS 脚本中执行这些电源更改也更容易、这样您可以配置一次功率级别、并在所有应用中保持该级别。

    该工具位于无线工具包中、可从此处下载:

    www.ti.com/.../wilink-bt_wifi-wireless_tools


    最棒的

    亚历山大

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

    感谢 Alexander 的回答。

    首先、我们尝试了 HCI 测试仪工具、当我们使用该工具时、我们面临一些问题、我们不会从芯片获取任何传入转储。

    我们还在 TI 论坛上发布与此相关的查询 

    我们还尝试在 BTS 脚本中对波特率进行注释、并完成了三线端口配置。

    我们的设置包含与 TI wl1831模块连接的 imx6sl 处理器、并使用 USB 转 UART 来运行从 Window7到目标板的 HCI 测试仪工具、但我们仅获得以下日志:

    13:00:54.242脚本已启动:  
    13:00:54.242 --
    13:00:54.242数据包"HCI_VS_Update_UART_HCI_Budrate"、操作码0x36
    13:00:54.242参数:
    13:00:54.242 | UART 波特率:0x002dc6c0
    13:00:54.242 --
    13:00:54.242传出转储:
    13:00:54.242 0000:01 36 ff 04 c0 C6 2D 00 .6...-.13:00:59.243错误-等待事件 HCI_Command_Complete_VS_Update_UART_HCI_Budrate_Event 超时
    13:00:59.243错误线路(21):WAIT_HCI_Command_Complete_VS_Update_UART_HCI_BAUDRAATE_Event 5000、0x00、0x0x36、0x00
    13:00:59.247--
    13:00:59.247脚本结束

    如果我错了、请更正我、 会 使用 WAIT_HCI_Command_Complete_VS_DRPb_Set_Power_Vector_Event 命令检查命令是否成功运行。

    使用 SS1Tool、我们将获得以下日志:

    ./SS1Tool cmd 0x3F 0x182 0x00 0xD3 0xDC 0xE5 0xEE 0xF7 0x00 0x0A 0x14 0x3F 0xFF 0x00
    Echo 13 >/sys/class/gpio/export
    回显>/sys/class/gpio/gpio13/direction
    echo 0 >/sys/class/gpio/gpio13/value
    Echo 1 >/sys/class/gpio/gpio13/value
    echo 0 >/sys/class/gpio/gpio13/value
    Echo 1 >/sys/class/gpio/gpio13/value
    BT COMM 端口(/dev/ttymxc1):1.
    将 HCI 波特率更改为3000000
    状态:执行 BTS 脚本/lib/firmware/TIInit_11.8.32.bts.
    状态:BTS 脚本成功执行。
    < HCI 命令:ogf 0x3F、ocf 0x0182、PLEN 12
    00 D3 DC E5 EE F7 00 0A 14 3F FF 00

    器件已通电。
    DEVM>> HCI 事件:0x0E PLEN 4.
    01 82 FD 00

    看到这些日志后、希望这意味着首先此命令运行 BTS 脚本、然后运行 HCI 命令、我们还会获得 HCI 事件日志  

     HCI 事件:0x0E PLEN 4.
    01 82 FD 00

    在该00中、意味着命令运行成功。

    谢谢。

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

    感谢您生成这些文件、浏览完这些文件后、您似乎已经正确设置了电源表、而且您也正确地知道00 return 是成功指示符、因此我不知道为什么它不起作用。 在频谱分析仪上测量发射功率时、您测量的输出功率级别是多少?

    您还能发布.bts 脚本吗? 谢谢


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

    您好、Samiksha、

    似乎您正在使用 HCI 用户指南中的默认功率矢量值、我们测试了附加矢量以将 BLE 输出功率降低约10dBm、并看到了结果。 您可以尝试运行这些命令吗?

    请注意、此处仅更新了 BLE 矢量:

    e2e.ti.com/.../3125.BLE_5F00_10dBm_5F00_Vectors.txt

    最棒的
    亚历山大

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

    您好、Alexander、

    感谢您的回答。

    我们执行了以下步骤来配置 wl1831的功率级别:

    1.运行./SS1BTPM &

    2.

    (i)用于低功耗矢量中的 BLE

    运行 ./SS1Tool cmd 0x3f 0x0182 0x03 bf 0xc8 0xD1 0xda 0xe3 0xec 0xf6 0x00 0x3f 0xff 0x00

    (II)用于高功率矢量中的 BLE

    运行 ./SS1Tool cmd 0x3f 0x0182 0x09 0xc5 0xCF 0xd9 0xe3 0xeb 0xf5 0x01 0x0B 0x3f 0xff 0x00

    (iii)运行 TPC 校准

    运行./SS1Tool cmd 0x3F 0x1FB 0x00 0x00 0x08 0x00 0x01

    3.对于连续 TX 测试:

    (i)运行"Send_HCI_VS_DRPb_Enable_RF_Calibration_Enhanced 0xFDFB、0x1、0xFF、0x00000000、0x01

    (采用 SS1Tool 格式)--./SS1Tool cmd 0x3f 0x1ca 0x62 0x09 0x04 0x00 0x07 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

     

    现在、我们将在不同功率级别上更改 txpower、但如果在高功率矢量中设置功率级别7的功率级别5.5dBm (0x0B)、我们将仅获得接近-1.05dbm 的功率。 存在巨大的功率损耗。

    下面是我们设置的功率级别  

    功率级别   功率              获取功率频谱(dBm)

    0        0xc5 (-29.5dbm)        -29.4.

    1        0xCF (-24.5dbm)         -27.7

    2.        0xd9 (-19.5dbm)        -24.7

    3.        0xe3 (-14.5dbm)        -20.01

    4.        0xeb (-10.5dbm)        -16.4.

    5.        0xf5 (-5.5dBm)          -11.8

    6.        0x01 (0.5dbm)           -5.96

    7.        0x0B (5.5dBm)           -1.05

    我们还尝试在功率级别7上设置11.5dbm、在频谱分析仪上设置5.16dbm。

    感谢您对此进行深入研究。

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

    您好、Samiksha、

    使用这些特定于供应商的命令更新电源的目的是在运行 init 脚本后执行一次。 它不能用于多次动态更新输出功率、因为这可能会导致您在功率放大器/内部校准中看到的不精确。

    因此、您应该在应用中设置一次功率矢量后维持该功率矢量、您的预期用例是什么?

    最棒的
    亚历山大

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

    感谢您的回答。

    现在、我们将在不同的功率级别上改变功率。 如果我们在功率级别7设置11.5dbm、则频谱分析仪上的通道功率接近9dbm、因此它对我们来说是可以的。

    我们的用例是在运行 init 脚本后以特定间隔动态更改 txpower。

    正如您之前所说的、Bluetopia 的 settxpower API 只能在广播包中更改功率、因此我们所做的是将 settxpower 与 SS1Tool 链接在一起、并发出 VS 命令以更改 txpower 并使用 StartAdvertising API 进行广播。

    我们发出以下命令来更改 txpower 并以不同的功率获得范围:

    1.运行 SS1BTPM &

    2.运行./LinuxIsbeacon

    初始化1.

    4.
    低功耗(BT LE)
    #set BT LE (BLE) LP 矢量值(请注意、需要将以 dBm 为单位的输出功率乘以"2"
    SEND_HCI_VS_DRPb_SET_Power_Vector 0xFD82、0x03、-21.5 * 2、-17 * 2、-12.5 * 2、 -8 *2、-3.5 *2、1 *2、5.5 *2、10 *2、 0x3F、0x00FF

    ./SS1Tool cmd 0x3F 0x182 0x03 0xD5 0xDE 0xe7 0xf0 0xf9 0x02 0x0B 0x14 0x3F 0xFF 0x00

    将所有功率级别设置为-15.5dbm。
    高功率(BT LE)
    #set BT LE (BLE) HP 矢量值(注意需要将输出功率(以 dBm 为单位)乘以"2"
    SEND_HCI_VS_DRPb_SET_Power_Vector 0xFD82、9、-15.5 * 2、-15.5 * 2、-15.5 * 2、 -15.5.5 *2、-15.5 *2、-15.5 *2、-15.5 *2、-15.5 *2、 0x3F、0x00FF

    ./SS1Tool cmd 0x3F 0x182 0x09 0xe1 0xe1 0xe1 0xe1 0xe1 0xe1 0xe1 0xe1 0xe1 0x3F 0xFF 0x00

    6.运行 TPC 校准
    ./SS1Tool cmd 0x3F 0x1FB 0x00 0x00 0x08 0x00 0x01

    7.运行 StartAdderting 100、在高于功率级别的情况下、我们将获得大约7m 的范围。

    我们针对低于高功率(BT LE)的 SS1Tool 命令运行了第5、6和7步、以设置不同的功率级别并获取大约范围。

    运行步骤7后、所有功率级别均设置为-11dbm、达到10m。
    ./SS1Tool cmd 0x3F 0x182 0x09 0xEA 0xEA 0xEA 0xEA 0xEA 0xEA 0xEA 0xEA 0xEA 0xEA 0xEA 0xEA 0x3F 0xFF 0x00

    运行步骤7后、功率级别设置为-6.5dbm、达到14m。
    /SS1Tool cmd 0x3F 0x182 0x09 0xF3 0xF3 0xF3 0xF30x3F 0x3F 0xFF 0x00

    功率级别设置为-2dBm、在运行步骤7后达到16m。
    ./SS1Tool cmd 0x3F 0x182 0x09 0xFC 0xFC 0xFC 0xFC 0xFC 0xFC 0xFC 0xFC 0xFC 0xFC 0xFC 0x3F 0xFF 0x00

    运行步骤7后、功率级别设置为2.5dbm、达到19m。
    ./SS1Tool cmd 0x3F 0x182 0x09 0x05 0x05 0x05 0x05 0x05 0x05 0x05 0x05 0x3F 0xFF 0x00

    功率级别设置为7dBm、在运行步骤7后达到23m。
    ./SS1Tool cmd 0x3F 0x182 0x09 0x0E 0x0E 0x0E 0x0E 0x0E 0x0E 0x0E 0x0E 0x0E 0x0E 0x0E 0x0E 0x0E 0x3F 0xFF 0x00

    运行步骤7后、功率级别设置为11.5dbm、达到26m。
    ./SS1Tool cmd 0x3F 0x182 0x09 0x17 0x17 0x17 0x17 0x17 0x17 0x17 0x17 0x3F 0xFF 0x00


    因此、通过查看这一点、可以看到 StartAdvertising API 始终与功率级别7相比较。 那么、这是对的吗?

    是否有任何基准、以便我们能够匹配范围?

    我们得到的范围大约不精确。 我们还使用 FXP73蓝色菱形2.4GHz 频带天线。

    感谢您对此进行深入研究。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Samiksha、

    很抱歉、以前的答案可能会引起混淆、但功率矢量不会动态更改。 所记录的输出功率差异可能会受到此影响。 它们应在程序初始化前设置一次、并在整个过程中保持恒定、以便堆栈根据主/从器件的电源需求在不同电平之间切换。

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

    感谢 Alexander 的回答。

    实际上、我们将使用 StartAdvertising API 来广播 Ibeacon。 此 API 使用功率矢量中定义的第7个功率级别进行广播。 因此、我们将动态更改功率矢量。

    我们已经浏览了 StartAdvertising 代码,发现我们正在使用 DEVM_StartAdvertising ()函数进行广播。

    我们是否可以通过任何方式使用此 StartAdvertising API 进行具有不同功率级别的广播?

    如果我们动态更改功率矢量、对 wl1831模块有什么影响吗?

    谢谢

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

    你(们)好

    对此是否有后续行动?