如何设置蓝牙发射功率?

如何设置蓝牙发射功率?

我正在尝试使用 Broadcom 和 CSR 芯片组设置(查询)蓝牙适配器的传输功率hciconfig,例如:

hciconfig hci0 inqtpl 3

但无论我传递什么有效参数,之后读取值总是会产生 0,如下所示:

hci0:   Type: BR/EDR  Bus: USB
        BD Address: 00:02:72:D6:6B:25  ACL MTU: 1021:8  SCO MTU: 64:1
        Inquiry transmit power level: 0

当我传递无效值时,我收到一条错误消息:

Can't set inquiry transmit power level on hci0: Input/output error (5)

显然,该参数已被检查有效性。我非常确定它是由芯片组检查的,因为我在手动发送适当的 HCI 命令时得到了相同的结果。

两种芯片组还声明它们支持此功能:

# hciconfig hci0 features
hci0:   Type: BR/EDR  Bus: USB
        BD Address: 00:02:72:D6:6B:25  ACL MTU: 1021:8  SCO MTU: 64:1
        Features page 0: 0xbf 0xfe 0xcf 0xfe 0xdb 0xff 0x7b 0x87
                [...]
                <err. data report> <non-flush flag> <LSTO> <inquiry TX power>
                [...]

我是否遇到了问题,或者只是偶然我使用的两个芯片组都不支持此功能?

答案1

只是为了仔细检查:

你能通过 bccmd psget 获取最大值和默认值吗?前任:

bccmd psget 0x0017

一旦收到这些值,您是否可以通过设置 0x1 来尝试介于该范围之间的值?

另外 iirc,1 是硬件的最大值,0.5 是 50% 的传输功率,不过这可能是特定于驱动程序的,因此在您的情况下可能是垃圾信息。

我几乎可以肯定,在设置传输电源后,您需要调用一个存储程序,以便设备开始使用它,以防止设备立即尝试设置错误的传输电源。

这有什么帮助吗:
http://www.spinics.net/lists/linux-bluetooth/msg16546.html

答案2

尝试:

sudo bccmd psget -s 0x0000 0x0017

答案3

bccmd psget -s 0x0000 0x0021
Default transmit power: 0x0004 (4)
localhost ~ # bccmd psset -r -s 0x0000 0x0021 0x0006
localhost ~ # bccmd psget -s 0x0000 0x0021
Default transmit power: 0x0006 (6)

它可以与我基于 CSR8510 A10 的硬件配合使用

相关内容