2011-10-02 8 views
5

(연결하지 않고?) :리눅스 블루투스 신호 강도 l2ping 여기에 리눅스 BlueZ/BT 전문가에 대한

나는 방법에 "핑 (ping)"알려진 BT 장치 (BDADDR 알려진) 그들이 경우에 찾고 있어요 범위 근사 신호 강도를 알고 싶습니다.

먼저 l2ping을 실행 한 다음 장치에 대한 연결을 설정하고 마지막으로 페어링하지 않고 연결이 작동하는 경우 rssi 또는 링크 품질을 확인할 수 있음을 알고 있습니다.

그러나 내가 찾고있는 것은 먼저 장치에 연결하지 않고 신호 강도를 얻는 방법입니다. Perfect는 l2ping 응답 패킷의 신호 강도 측정 값이지만, 해당 정보가 사용 가능한지, 스택을 따라 전달되었는지는 알 수 없습니다.

답변

5

장치에 연결하지 않고 조회 스캔 중에 RSSI를 얻을 수 있습니다. 다음은 pybluez를 사용한 예입니다. Linux에서 Bluez를 사용하여 C에서 직접 동일한 작업을 수행 할 수도 있습니다.

inquiry-with-rssi.py

+0

링크 및 아이디어를 제공해 주셔서 감사합니다.하지만 반드시 필요한 것은 아니지만 검색 가능한 모드에 있어야합니다. ping/measure를 원하는 모든 장치의 bd_addr을 알고 있기 때문에 대상을 검색 가능 모드로 설정할 필요가없는 l2ping으로 시작한 것입니다. – Tom

+1

그런 경우 hcitool (BlueZ 스택의 일부)을 사용할 수 있습니다. [hcitool] (http://linuxcommand.org/man_pages/hcitool1.html). 암호화/인증없이 연결을 생성하는 'hcitool cc'를 실행하면 'hcitool rssi'를 사용하여 rssi를 모니터링 할 수 있습니다. 유일한 문제는 인증하지 않으면 (쌍) 일부 장치가 연결을 활성 상태로 유지할 수 없다는 것입니다. – TJD

+1

예, 작동합니다. 지금까지 시도한 두 장치 중 (연결되지 않은) 연결을 허용하여 rssi/lq를 확인할 수있었습니다. 이것은 실제적인 해결책이지만, 연결이되지 않고 대상을 발견 할 수있는 방법을 아는 사람이라면 누구나 볼 수 있습니다. – Tom

2

내 아이폰 7 라즈베리 파이로이 코드를 사용하고 있는데 잘 작동합니다.

#!/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