Broadcom 및 CSR 칩셋을 사용하여 Bluetooth 어댑터의 전송 전력을 설정(쿼리)하려고 합니다 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 기반 하드웨어에서 작동합니다.