2011-10-02 23 views
5

Para cualquier expertos Linux BlueZ/BT aquí (sin conectar?):Linux Bluetooth l2ping con intensidad de señal

que estoy buscando una manera de "ping" dispositivos BT conocidos (conocido BDADDR) y si están en Rango Me gustaría saber la potencia de señal aproximada.

Sé que podría ejecutar primero l2ping, luego establecer una conexión con el dispositivo y finalmente verificar la calidad del enlace o rssi si la conexión funcionó sin emparejar primero.

Sin embargo, lo que estoy buscando es una forma de obtener la potencia de la señal sin conectar primero al dispositivo. Perfecto sería una medición de la intensidad de la señal del paquete de respuesta l2ping, pero no sé si esa información está disponible y pasó a lo largo de la pila.

Respuesta

5

Puede obtener RSSI durante el análisis de consulta, sin conectarse a los dispositivos. Aquí hay un ejemplo usando pybluez. También podría hacer lo mismo directamente desde C usando Bluez en Linux.

inquiry-with-rssi.py

+0

gracias por el enlace y la idea, pero esto necesita que los dispositivos estén en modo detectable, lo que no necesariamente será. Conozco el bd_addr de todos los dispositivos que quiero hacer ping/medir, es por eso que comencé con l2ping donde no hay necesidad de que los objetivos estén en modo detectable. – Tom

+1

En ese caso, puede usar hcitool (parte de la pila BlueZ). [hcitool] (http://linuxcommand.org/man_pages/hcitool1.html). Si haces 'hcitool cc' que crea una conexión sin cifrado/autenticación, entonces puedes monitorear rssi usando 'hcitool rssi'. El único problema es que algunos dispositivos no permiten que la conexión permanezca activa si no se autentica (empareja). – TJD

+1

sí, eso funciona. de los dos dispositivos que probé hasta ahora permitieron que la conexión (no emparejada) existiera para poder verificar rssi/lq. Así que esta es una solución de trabajo, pero por si alguien sabe de una forma sin conectarse y sin que el (los) objetivo (s) sean reconocibles, aún así me encantaría ver eso. – Tom

2

Estoy usando este código con mi iPhone 7 y Frambuesa Pi y funciona muy bien.

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