2011-10-02 22 views
5

Đối với bất kỳ chuyên gia Linux Bluez/BT ở đây (mà không kết nối?):Linux Bluetooth l2ping với cường độ tín hiệu

Tôi đang tìm kiếm một cách để "ping" thiết bị BT nổi tiếng (được gọi BDADDR) và nếu họ đang ở trong Tôi muốn biết cường độ tín hiệu gần đúng.

Tôi biết rằng trước tiên tôi có thể chạy l2ping, sau đó thiết lập kết nối với thiết bị và cuối cùng kiểm tra chất lượng liên kết hoặc rssi nếu kết nối đã hoạt động mà không cần ghép nối trước.

Tuy nhiên những gì tôi đang tìm kiếm là một cách để nhận được cường độ tín hiệu mà không cần kết nối với thiết bị trước. Hoàn hảo sẽ là một đo lường cường độ tín hiệu từ gói trả lời l2ping, nhưng tôi không biết liệu thông tin đó có sẵn ở tất cả và được truyền dọc theo ngăn xếp hay không.

Trả lời

5

Bạn có thể lấy RSSI trong quá trình quét yêu cầu, mà không cần kết nối với thiết bị. Đây là một ví dụ sử dụng pybluez. Bạn cũng có thể làm điều tương tự trực tiếp từ C sử dụng Bluez trên Linux.

inquiry-with-rssi.py

+0

nhờ liên kết và ý tưởng, nhưng điều này cần các thiết bị ở chế độ có thể phát hiện mà chúng không nhất thiết phải có. Tôi biết bd_addr của tất cả các thiết bị tôi muốn ping/đo lường, đó là lý do tại sao tôi bắt đầu với l2ping, nơi không có nhu cầu cho các mục tiêu ở chế độ có thể khám phá. – Tom

+1

Trong trường hợp đó, bạn có thể sử dụng hcitool (một phần của ngăn xếp BlueZ). [hcitool] (http://linuxcommand.org/man_pages/hcitool1.html). Nếu bạn làm 'hcitool cc' tạo một kết nối không có mã hóa/xác thực, thì bạn có thể theo dõi rssi bằng 'hcitool rssi'. Vấn đề duy nhất là một số thiết bị có thể không cho phép kết nối vẫn hoạt động nếu bạn không xác thực (cặp). – TJD

+1

vâng, hoạt động. của hai thiết bị mà tôi đã thử cho đến nay cả hai đều cho phép kết nối (chưa ghép nối) tồn tại để tôi có thể kiểm tra rssi/lq. Vì vậy, đây là một giải pháp làm việc, nhưng chỉ trong trường hợp bất cứ ai biết một cách mà không cần kết nối và không có (các) mục tiêu có thể phát hiện được, tôi vẫn muốn thấy điều đó. – Tom

2

Tôi đang sử dụng mã này với iPhone của tôi 7 và Raspberry Pi và nó hoạt động tuyệt vời.

#!/bin/bash 

sudo hcitool cc AA:BB:CC:DD:EE:FF 2> /dev/null 

while true 
do 
    bt=$(hcitool rssi AA:BB:CC:DD:EE:FF 2> /dev/null) 
    if [ "$bt" == "" ]; then 
     sudo hcitool cc AA:BB:CC:DD:EE:FF 2> /dev/null 
     bt=$(hcitool rssi AA:BB:CC:DD:EE:FF 2> /dev/null) 
    fi 

    echo "$bt" 
done