2014-07-20 22 views
10

Sto eseguendo RPi con un dongle Bluetooth USB. Quando uso hcitool, posso scoprire il dispositivo SmartTag. Ma quando uso gatttool, non riesco a connettermi. Dice "Host is down (112)". Qui sono i miei comandi:Il gatttool BLE non riesce a connettersi anche se il dispositivo è rilevabile con hcitool lescan

$ sudo hcitool lescan 
LE Scan ... 
BC:6A:29:AB:DE:2B (unknown) 
BC:6A:29:AB:DE:2B SensorTag 

Controllo degli adattatori bluetooth sul mio RPI ottengo:

$ hcitool dev 
Devices: 
     hci0 5C:F3:70:60:E6:1B 

Poi, quando uso il gatttool come questo, ottengo:

$ sudo gatttool -i hci0 -b BC:6A:29:AB:DE:2B -I 
[ ][BC:6A:29:AB:DE:2B][LE]> 

Quando Digito connect, ottengo questo:

[ ][BC:6A:29:AB:DE:2B][LE]> connect 
Connecting... connect error: Host is down (112) 
[ ][BC:6A:29:AB:DE:2B][LE]> 

Ho trovato alcune informazioni sul web che dicevano "Host down" significa che il sensore bluetooth non è in modalità rilevabile. Ma questo non è corretto per quanto riguarda SmartTag dal momento che premo il pulsante one (tasto laterale) sul sensore che TI dice di spingere per renderlo rilevabile. E quello stesso viene usato dal hcitool lescan per trovare il dispositivo. C'è anche un'app per Android che scappa da un telefono e scansiona, collega e legge il sensore SmartTag bene quando viene premuto quello stesso pulsante.

Qualcuno sa quale potrebbe essere il problema? Grazie in anticipo

risposta

13

Ho avuto lo stesso problema, questo metodo ha funzionato per me:

Rimuovere il modulo USB e riavviare il RPI:

sudo shutdown -r now 

( Edit: si può volere per modificare /etc/apt/sources.list per installare correttamente le librerie elencate di seguito.

nano /etc/apt/sources.list 

deb http://archive.raspbian.org/raspbian wheezy main contrib non-free 
deb-src http://archive.raspbian.org/raspbian wheezy main contrib non-free 

In caso contrario, si potrebbe inciampare sul seguente errore

checking for GLIB... no 
configure: error: GLib >= 2.28 is required 

Non dimenticare di aggiornare in modo che le modifiche abbiano effetto.

sudo apt-get update 

)

Rimuovere l'installazione Bluez ed eseguire un aggiornamento:

sudo apt-get --purge remove bluez 
sudo apt-get update 

È possibile modificare il /etc/apt/sources.list per garantire la si sarà in grado di installare le librerie necessarie:

Marchio sicuro di avere le librerie necessarie:

sudo apt-get install libusb-dev libdbus-1-dev libglib2.0-dev libudev-dev libical-dev libreadline-dev 

Scarica ed estrai la versione più recente di Bluez (al momento è 5).21):

sudo wget https://www.kernel.org/pub/linux/bluetooth/bluez-5.21.tar.xz 
sudo tar xvf bluez-5.21.tar.xz 

Vai alla cartella Bluez, configurare e installare (La linea sudo make richiede un certo tempo per elaborare):

cd bluez-5.21 
sudo ./configure --disable-systemd 
sudo make 
sudo make install 

Spegnere l'RPI fuori, in modo da poter collegare il dongle Bluetooth, di riaccenderlo

sudo shutdown -h now 

potrebbe essere necessario accendere il dongle USB:

sudo hciconfig hci0 up 

Allora si può provare LESCAN di nuovo:

sudo hcitool lescan 

e supponendo ha funzionato correttamente sarà albe di connettersi con:

sudo hcitool lecc BC:6A:29:AB:DE:2B 
sudo gatttool -b BC:6A:29:AB:DE:2B --interactive 

[ ][BC:6A:29:AB:DE:2B][LE]> connect 
[CON][BC:6A:29:AB:DE:2B][LE]> 

Se sta prendendo tempo per mostrare il collegato "[CON ] "linea, prova a premere il pulsante laterale sul tag del sensore per renderlo nuovamente visibile.


E 'stato un mix di informazioni provenienti da questi due link:

http://mike.saunby.net/2013/04/raspberry-pi-and-ti-cc2541-sensortag.html https://learn.adafruit.com/pibeacon-ibeacon-with-a-raspberry-pi/setting-up-the-pi

+7

Grazie per la grande risposta. Dopo aver fatto installare e riavviato sul mio RPi mancava gatttool, quindi ho dovuto eseguire 'sudo cp attrib/gatttool/usr/bin /' e ora si connette! –

+1

Up-votato, grazie. Al momento di questo commento, bluez-5.30 esiste. Solo 'apt-get ...' e 'make install' richiedono sudo. 'gatttool ...', 'wget ...', 'tar ...', 'configure ...' e 'make' non richiede root. – niry