Bagaimana cara mengatur daya pancar Bluetooth?

9

Saya mencoba mengatur (mentransmisikan) daya pancar dongle Bluetooth dengan menggunakan chipset Broadcom dan CSR hciconfig, misalnya:

hciconfig hci0 inqtpl 3

Tapi apa pun parameter valid yang saya lewati, membaca nilai setelahnya selalu menghasilkan 0, seperti:

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

Ketika saya memberikan nilai yang tidak valid, saya mendapatkan pesan kesalahan:

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

Jadi jelas parameternya diperiksa validitasnya. Saya cukup yakin itu diperiksa oleh chipset, karena saya mendapatkan hasil yang sama ketika mengirim perintah HCI yang sesuai secara manual.

Kedua chipset juga menyatakan mereka mendukung fitur ini:

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

Apakah saya mendapatkan sesuatu yang salah, atau hanya karena kedua chipset yang saya gunakan tidak mendukung fitur ini?

domsom
sumber
1
Pembaruan: Saya baru saja menerima catatan dari pembuat dongle yang menyatakan bahwa fitur ini telah diblokir karena pembatasan yang ditentang oleh tanda CE Eropa.
domsom

Jawaban:

2

Hanya untuk mengecek:

dapatkah Anda mendapatkan nilai maksimum dan standar melalui bccmd psget? ex:

bccmd psget 0x0017

Dan begitu nilai-nilai tersebut diterima, dapatkah Anda mencoba sesuatu di antara rentang tersebut dengan menetapkan 0x1 misalnya?

Juga iirc, 1 adalah maksimum dari perangkat keras dan 0,5 adalah daya transit 50%, yang dapat menjadi driver khusus sehingga mungkin info sampah dalam kasus Anda.

Saya hampir yakin bahwa ada proses toko yang harus Anda panggil setelah mengatur daya transit agar perangkat mulai menggunakannya, untuk mencegah perangkat mencoba mengatur daya transit yang salah segera.

Apakah ini membantu apa pun:
http://www.spinics.net/lists/linux-bluetooth/msg16546.html

Torx
sumber
Terima kasih atas jawaban Anda, saya baru saja menghabiskan waktu bersama bccmd. bccmd psget 0x0017menghasilkan Can't execute command: No such device or address (6)dengan modul CSR saya, sambil 0x0001bekerja. bccmd pslistmengembalikan daftar yang agak pendek dari 7 perintah yang tidak termasuk 0x0017. Selain itu, bccmd buildnamenyatakan odj_4hci_rom_vm_bt2.1_23e_0806121029_encr128. Mungkin firmware terlalu lama? Bisakah saya memperbaruinya?
domsom
Saya juga ditambal bccmduntuk mendukung pembacaan / pengaturan kekuatan standar & maksimum tx (bab 3.9 & 3.10 di eestud.kku.ac.th/~moo/datasheet/Bluetooth/BlueCore/… ). Saya telah dapat mengatur nilai-nilai tersebut ke 0 atau 4, tidak ada yang lain. Menetapkan nilai-nilai itu tampaknya tidak memiliki dampak praktis pada rentang dongle. Menariknya, hciconfig inqtplsekarang melaporkan 4jika saya menetapkan nilai ke 4...
domsom
0

Mencoba:

sudo bccmd psget -s 0x0000 0x0017
Markus Kirsten
sumber
Ini bekerja ketika mengalami masalah yang sama dijelaskan dalam komentar domsom pada jawaban Torxed. Tidak diperlukan perbaikan.
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)

ini bekerja dengan perangkat keras saya berdasarkan CSR8510 A10

jsmith
sumber