Ich versuche, die (Anfrage-) Sendeleistung von Bluetooth-Dongles sowohl mit Broadcom- als auch mit CSR-Chipsätzen einzustellen hciconfig
, z. B.:
hciconfig hci0 inqtpl 3
Unabhängig davon, welchen gültigen Parameter ich übergebe, ergibt das anschließende Lesen des Werts immer 0, wie folgt:
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
Wenn ich ungültige Werte übergebe, wird eine Fehlermeldung angezeigt:
Can't set inquiry transmit power level on hci0: Input/output error (5)
Der Parameter wird also offensichtlich auf Gültigkeit überprüft. Ich bin mir ziemlich sicher, dass dies von den Chipsätzen überprüft wird, da ich beim manuellen Senden der entsprechenden HCI-Befehle die gleichen Ergebnisse erhalte.
Beide Chipsätze geben außerdem an, dass sie diese Funktion unterstützen:
# 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>
[...]
Verstehe ich etwas falsch oder unterstützen beide von mir verwendeten Chipsätze diese Funktion nicht gelegentlich?
Antworten:
Nur zur Überprüfung:
Können Sie den Maximal- und Standardwert über bccmd psget erhalten? Ex:
Und wenn diese Werte einmal empfangen wurden, können Sie etwas zwischen diesem Bereich ausprobieren, indem Sie beispielsweise 0x1 einstellen?
Außerdem ist iirc, 1 das Maximum der Hardware und 0,5 ist 50% Transitleistung, obwohl dies fahrerspezifisch sein kann, so dass es sich in Ihrem Fall möglicherweise um Müllinformationen handelt.
Ich war mir fast sicher, dass es einen Speichervorgang gibt, den Sie nach dem Einstellen der Transitleistung aufrufen müssen, damit das Gerät ihn verwenden kann, um zu verhindern, dass das Gerät sofort versucht, eine fehlerhafte Transitleistung einzustellen.
Hilft dies irgendetwas:
http://www.spinics.net/lists/linux-bluetooth/msg16546.html
quelle
bccmd
.bccmd psget 0x0017
ergibtCan't execute command: No such device or address (6)
mit meinem CSR-Modul, während0x0001
funktioniert.bccmd pslist
gibt eine ziemlich kurze Liste von 7 Befehlen zurück, die 0x0017 nicht enthalten. Außerdembccmd buildname
Staatenodj_4hci_rom_vm_bt2.1_23e_0806121029_encr128
. Vielleicht ist die Firmware einfach zu alt? Kann ich es aktualisieren?bccmd
, um das Lesen / Festlegen der Standard- und maximalen Sendeleistungen zu unterstützen (Kapitel 3.9 und 3.10 in eestud.kku.ac.th/~moo/datasheet/Bluetooth/BlueCore/… ). Ich konnte diese Werte entweder auf 0 oder 4 setzen, sonst nichts. Das Einstellen dieser Werte scheint jedoch keine praktischen Auswirkungen auf die Reichweite des Dongles zu haben. Interessanterweisehciconfig inqtpl
berichtet jetzt,4
ob ich die Werte auf4
obwohl gesetzt habe ...Versuchen:
quelle