Как настроить мощность передачи Bluetooth?

9

Я пытаюсь установить (передаваемую) мощность передачи ключей Bluetooth с чипсетами 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>
                [...]

Я что-то не так понимаю, или просто случайно оба набора микросхем не поддерживают эту функцию?

domsom
источник
1
Обновление: я только что получил сообщение от производителя ключа о том, что эта функция заблокирована из-за ограничений, на которые указывает европейская маркировка СЕ.
domsom

Ответы:

2

Просто перепроверьте:

Вы можете получить максимальное значение и значение по умолчанию через bccmd psget? например:

bccmd psget 0x0017

И как только эти значения будут получены, вы можете попробовать что-то между этим диапазоном, установив, например, 0x1?

Кроме того, iirc, 1 - это максимум аппаратного обеспечения, а 0,5 - это 50% транзитной мощности, хотя это может зависеть от конкретного драйвера, что может быть мусорной информацией в вашем случае.

Я был почти уверен, что есть магазин, которому нужно позвонить после настройки транзитного питания, чтобы устройство начало его использовать, чтобы устройство не пыталось сразу установить неисправное транзитное питание.

Помогает ли это что-нибудь:
http://www.spinics.net/lists/linux-bluetooth/msg16546.html

Torxed
источник
Спасибо за ваш ответ, я просто провел некоторое время с bccmd. bccmd psget 0x0017дает Can't execute command: No such device or address (6)с моим модулем CSR, пока 0x0001работает. bccmd pslistвозвращает довольно короткий список из 7 команд, который не включает 0x0017. Кроме того, bccmd buildnameговорится odj_4hci_rom_vm_bt2.1_23e_0806121029_encr128. Может быть, прошивка просто слишком старая? Могу ли я обновить его?
domsom
Я также bccmdустановил патч для поддержки чтения / установки значений по умолчанию и максимальной мощности передачи (главы 3.9 и 3.10 в eestud.kku.ac.th/~moo/datasheet/Bluetooth/BlueCore/… ). Я был в состоянии установить эти значения либо 0 или 4, ничего больше. Однако установка этих значений не оказывает никакого практического влияния на диапазон ключа. Интересно, хотя hciconfig inqtplтеперь сообщает, 4если я установлю значения, 4хотя ...
Domsom
0

Пытаться:

sudo bccmd psget -s 0x0000 0x0017
Маркус Кирстен
источник
Это работало, когда сталкивался с той же проблемой, объясненной в комментариях domsom к ответу Torxed. Исправление не требуется.
Hydranix
0
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

JSmith
источник