Làm cách nào để đặt nguồn phát Bluetooth?


9

Tôi đang cố gắng thiết lập khả năng truyền (yêu cầu) của các khóa Bluetooth với cả chipset Broadcom và CSR bằng cách sử dụng hciconfig, ví dụ:

hciconfig hci0 inqtpl 3

Nhưng bất kể tham số hợp lệ nào tôi vượt qua, đọc giá trị sau đó luôn mang lại 0, như vậy:

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

Khi tôi chuyển các giá trị không hợp lệ, tôi nhận được thông báo lỗi:

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

Vì vậy, rõ ràng tham số được kiểm tra tính hợp lệ. Tôi khá chắc chắn rằng nó đã được kiểm tra bởi các chipset, vì tôi nhận được kết quả tương tự khi gửi các lệnh HCI thích hợp theo cách thủ công.

Cả hai chipset cũng cho biết họ hỗ trợ tính năng này:

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

Có phải tôi đang gặp phải điều gì đó không, hoặc chỉ là do cả hai chipset tôi đang sử dụng không hỗ trợ tính năng này?


1
Cập nhật: Tôi vừa nhận được một ghi chú từ một nhà sản xuất dongle nói rằng tính năng này đã bị chặn do các hạn chế phản đối bởi dấu CE của Châu Âu.
domsom

Câu trả lời:


2

Chỉ cần kiểm tra lại:

bạn có thể nhận được giá trị tối đa và mặc định thông qua bccmd psget không? Ví dụ:

bccmd psget 0x0017

Và một khi các giá trị đó được nhận, bạn có thể thử một cái gì đó ở giữa phạm vi đó bằng cách đặt 0x1 chẳng hạn?

Ngoài ra, 1 là tối đa của phần cứng và 0,5 là 50% năng lượng vận chuyển, tho có thể là trình điều khiển cụ thể để có thể là thông tin rác trong trường hợp của bạn.

Tôi gần như chắc chắn rằng có một quy trình lưu trữ mà bạn cần gọi sau khi cài đặt công suất quá cảnh để thiết bị bắt đầu sử dụng thiết bị, để ngăn thiết bị cố gắng đặt nguồn điện bị lỗi ngay lập tức.

Điều này có giúp được gì không:
http://www.spinics.net/lists/linux-bluetooth/msg16546.html


Cảm ơn câu trả lời của bạn, tôi chỉ dành thời gian với bccmd. bccmd psget 0x0017mang lại Can't execute command: No such device or address (6)với mô-đun CSR của tôi, trong khi 0x0001hoạt động. bccmd pslisttrả về một danh sách khá ngắn gồm 7 lệnh không bao gồm 0x0017. Bên cạnh đó, bccmd buildnamecác tiểu bang odj_4hci_rom_vm_bt2.1_23e_0806121029_encr128. Có lẽ phần sụn đã quá cũ? Tôi có thể cập nhật nó không?
domsom

Tôi cũng đã vá bccmdđể hỗ trợ đọc / cài đặt quyền hạn mặc định & max tx (chương 3.9 & 3.10 trong eestud.kku.ac.th/~moo/datasheet/Bluetooth/BlueCore/ .) Tôi đã có thể đặt các giá trị đó thành 0 hoặc 4, không có gì khác. Mặc dù vậy, việc đặt các giá trị đó dường như không có bất kỳ tác động thực tế nào đến phạm vi của dongle. Thật thú vị mặc dù hciconfig inqtplbây giờ báo cáo 4nếu tôi đặt các giá trị thành 4mặc dù ...
domsom

0

Thử:

sudo bccmd psget -s 0x0000 0x0017

Điều này hoạt động khi gặp vấn đề tương tự được giải thích trong các bình luận của domsom về câu trả lời của Torxed. Không cần vá.
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)

nó hoạt động với phần cứng của tôi dựa trên CSR8510 A10

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.