Comment régler la puissance de transmission Bluetooth?


9

J'essaie de définir la puissance de transmission (d'enquête) des dongles Bluetooth avec les chipsets Broadcom et CSR en utilisant hciconfig, par exemple:

hciconfig hci0 inqtpl 3

Mais quel que soit le paramètre valide que je passe, la lecture de la valeur par la suite donne toujours 0, comme ceci:

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

Lorsque je passe des valeurs non valides, j'obtiens un message d'erreur:

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

Il est donc évident que la validité du paramètre est vérifiée. Je suis presque sûr qu'il est vérifié par les chipsets, car j'obtiens les mêmes résultats lors de l'envoi manuel des commandes HCI appropriées.

Les deux chipsets indiquent également qu'ils prennent en charge cette fonctionnalité:

# 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>
                [...]

Suis-je en train de me tromper, ou est-ce juste par occasion que les deux chipsets que j'utilise ne prennent pas en charge cette fonctionnalité?


1
Mise à jour: Je viens de recevoir une note d'un fabricant de dongles indiquant que cette fonctionnalité a été bloquée en raison des restrictions opposées par le marquage CE européen.
domsom

Réponses:


2

Juste pour revérifier:

pouvez-vous obtenir la valeur maximale et la valeur par défaut via bccmd psget? ex:

bccmd psget 0x0017

Et une fois que ces valeurs sont reçues, pouvez-vous essayer quelque chose entre cette plage en définissant 0x1 par exemple?

De plus, iirc, 1 est le maximum du matériel et 0,5 est une puissance de transit de 50%, ce qui peut être spécifique au pilote, ce qui peut être une info poubelle dans votre cas.

J'étais presque sûr qu'il y avait une procédure de magasin que vous devez appeler après avoir défini la puissance de transit afin que l'appareil commence à l'utiliser, pour empêcher l'appareil d'essayer de définir immédiatement une puissance de transit défectueuse.

Est-ce que cela aide quoi que ce soit:
http://www.spinics.net/lists/linux-bluetooth/msg16546.html


Merci pour votre réponse, je viens de passer du temps avec bccmd. bccmd psget 0x0017donne Can't execute command: No such device or address (6)avec mon module CSR, tout en 0x0001travaillant. bccmd pslistrenvoie une liste assez courte de 7 commandes qui n'inclut pas 0x0017. D'ailleurs, bccmd buildnamedéclare odj_4hci_rom_vm_bt2.1_23e_0806121029_encr128. Peut-être que le firmware est trop ancien? Puis-je le mettre à jour?
domsom

J'ai également corrigé bccmdpour prendre en charge la lecture / le réglage des puissances tx par défaut et max (chapitres 3.9 et 3.10 dans eestud.kku.ac.th/~moo/datasheet/Bluetooth/BlueCore/… ). J'ai pu mettre ces valeurs à 0 ou 4, rien d'autre. Cependant, la définition de ces valeurs ne semble pas avoir d'impact pratique sur la portée du dongle. Fait intéressant, mais hciconfig inqtplindique maintenant 4si j'ai défini les valeurs sur 4...
domsom

0

Essayer:

sudo bccmd psget -s 0x0000 0x0017

Cela a fonctionné en rencontrant le même problème expliqué dans les commentaires de domsom sur la réponse de Torxed. Aucun correctif requis.
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)

cela fonctionne avec mon matériel basé sur CSR8510 A10

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.