Come impostare la potenza di trasmissione Bluetooth?


9

Sto cercando di impostare la potenza di trasmissione (richiesta) dei dongle Bluetooth sia con chipset Broadcom che CSR usando hciconfig, ad esempio:

hciconfig hci0 inqtpl 3

Ma qualunque sia il parametro valido che passo, leggendo il valore in seguito si ottiene sempre 0, in questo modo:

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

Quando passo valori non validi, ricevo un messaggio di errore:

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

Quindi, ovviamente, il parametro viene verificato per la validità. Sono abbastanza sicuro che sia controllato dai chipset, poiché ottengo gli stessi risultati quando invio manualmente i comandi HCI appropriati.

Entrambi i chipset dichiarano inoltre di supportare questa funzione:

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

Sto sbagliando qualcosa o è solo per caso che entrambi i chipset che sto usando non supportano questa funzione?


1
Aggiornamento: ho appena ricevuto una nota da un produttore di chiavi hardware in cui si afferma che questa funzione è stata bloccata a causa delle restrizioni imposte dalla marcatura CE europea.
domsom

Risposte:


2

Solo per ricontrollare:

puoi ottenere il valore massimo e predefinito tramite bccmd psget? ex:

bccmd psget 0x0017

E una volta ricevuti quei valori, puoi provare qualcosa tra quell'intervallo impostando 0x1 per esempio?

Inoltre iirc, 1 è il massimo dell'hardware e 0,5 è il 50% della potenza di transito, quindi può essere specifico per il driver in modo da poter contenere informazioni sulla spazzatura nel tuo caso.

Ero quasi sicuro che ci sia una procedura di archiviazione che devi chiamare dopo aver impostato la potenza di transito per consentire al dispositivo di iniziare ad usarlo, per impedire al dispositivo di provare a impostare subito una potenza di transito difettosa.

Questo aiuta qualcosa:
http://www.spinics.net/lists/linux-bluetooth/msg16546.html


Grazie per la tua risposta, ho appena trascorso un po 'di tempo con bccmd. bccmd psget 0x0017cede Can't execute command: No such device or address (6)con il mio modulo CSR, mentre 0x0001funziona. bccmd pslistrestituisce un elenco piuttosto breve di 7 comandi che non include 0x0017. Inoltre, bccmd buildnameafferma odj_4hci_rom_vm_bt2.1_23e_0806121029_encr128. Forse il firmware è troppo vecchio? Posso aggiornarlo?
domsom

Ho anche patchato bccmdper supportare la lettura / impostazione dei poteri default e max tx (capitoli 3.9 e 3.10 in eestud.kku.ac.th/~moo/datheet/Bluetooth/BlueCore/… ). Sono stato in grado di impostare quei valori su 0 o 4, nient'altro. L'impostazione di questi valori non sembra avere alcun impatto pratico sulla gamma del dongle. È interessante notare che hciconfig inqtplora riporta 4se ho impostato i valori su 4però ...
domsom

0

Provare:

sudo bccmd psget -s 0x0000 0x0017

Questo ha funzionato quando si è verificato lo stesso problema spiegato nei commenti di domsom sulla risposta di Torxed. Nessun patch richiesto.
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)

funziona con il mio hardware basato su CSR8510 A10

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.