Avevo questa domanda su Stack Overflow, ma mi è stato suggerito di migrare qui. È stato segnalato per l'attenzione del moderatore, ma non sono sicuro di come funzioni e non ho ricevuto alcun feedback, quindi ho pensato di porre la domanda qui:
Sto cercando di stabilire una connessione Bluetooth Smart tra due Raspberry PI dove posso usare IPSP (Internet Protocol Support Profile) in modo da poter comunicare con il protocollo IPv6 utilizzando 6LoWPAN.
Sono stato in grado di stabilire con successo questa comunicazione tra il Raspberry Pis e un kit di sviluppo Nordic nRF51, tuttavia come prova del concetto sto cercando di stabilire questa connessione tra le due scatole Raspberry Pi senza il kit di sviluppo Nordic nRF51.
Quindi il mio primo passo è stato quello di installare il Raspberry Pis. L'ho fatto con i passaggi dell'SDK IoT nRF5 di Nordic ( https://developer.nordicsemi.com ). So che i Raspberry Pis sono impostati correttamente perché entrambi funzionano con la scheda nRF51. Sono in grado di stabilire una connessione tra le schede Raspberry Pi e nRF51 e eseguire il ping della scheda nRF51 da Raspberry Pi.
Ora per stabilire la mia connessione Bluetooth tra Raspberry Pis, eseguo i seguenti passaggi: Sul dispositivo Master eseguo i seguenti comandi:
#need root access
sudo su
#enable 6lowpan over Bluetooth le
echo 1 > /sys/kernel/debug/bluetooth/6lowpan_enable
#start advertising Bluetooth LE service
hciconfig hci0 leadv
Sul dispositivo Slave eseguo i seguenti comandi:
#need root access
sudo su
#enable 6lowpan over Bluetooth le
echo 1 > /sys/kernel/debug/bluetooth/6lowpan_enable
#establish le connection to master
hcitool lecc 5C:F3:70:XX:XX:XX
Il comando hcitool lecc restituisce sempre "Connection Handle 64". A questo punto ho una connessione stabile tra i due dispositivi che posso verificare usando il comando hcitool con .
Ora sono in grado di eseguire il comando seguente sul master o sullo slave in cui l'indirizzo mac è l'indirizzo del dispositivo Bluetooth che sto collegando anch'io:
echo “connect 5C:F3:70:XX:XX:XX 1” > /sys/kernel/debug/bluetooth/6lowpan_control
Qualunque Raspberry Pi su cui eseguo il comando stabilisca una connessione 6lowpan e se eseguo il comando ifconfig vedo un nuovo dispositivo bt0. L'altro Raspberry Pi tuttavia non ottiene un dispositivo bt0. Ho provato a eseguire il comando ifconfig bt0 up e anche a eseguire lo stesso comando echo (cambiando l'indirizzo mac) ma nessuno dei due mi dà il dispositivo bt0.
Il dispositivo bt0 che appare sul Raspberry Pi su cui ho eseguito il comando scompare sempre dopo 39 secondi. Nel file di log / var / log / syslog sembra che il demone ntpd inizi ad ascoltare sull'interfaccia bt0 quando si presenta e poi, esattamente 39 secondi dopo, rilevi che l'interfaccia non c'è più e la rilascia. Ho provato ad assegnare un indirizzo IPv6 al dispositivo quando è attivo utilizzando il seguente comando:
ifconfig bt0 inet6 add 2001:db8::5cf3:70ff:feXX:XXXX/64
Ho quindi eseguito un ping6 per eseguire il ping ininterrottamente nella speranza di mantenere l'interfaccia per un po 'di tempo, ma l'interfaccia è ancora inattiva dopo 39 secondi.
Sto usando due Raspberry Pi 2 modello B ed entrambi gli adattatori Bluetooth sono dispositivi Broadcom Corp BCM20702A0 Bluetooth 4.0 (usato lsusb per ottenere le informazioni sull'adattatore). Anche se gli adattatori sono elencati come Bluetooth 4.0, sono stato in grado di usarli con successo con il kit di sviluppo Nordic nRF51 per stabilire una connessione 6LoWPAN.
Dopo tutti i miei esperimenti, ecco le domande che ho:
- È possibile fare quello che sto cercando di fare?
- Qualcuno è stato in grado di stabilire con successo una connessione 6LoWPAN tra due dispositivi Linux che potrebbe dirmi cosa mi sto perdendo nei miei passi?
- È necessario che uno dei dispositivi Bluetooth sia compatibile con Bluetooth Smart 4.2 per stabilire correttamente questa connessione?
- Chiunque abbia familiarità con Bluez che può consigliare ulteriori passaggi da provare?
Qualsiasi aiuto sarebbe molto apprezzato.
Jon
MODIFICA 1:
Sono stato in grado di far funzionare questa connessione tra una scatola Ubuntu 14.04 e un Raspberry Pi installando il kernel precompilato 3.19 scaricato da qui: http://kernel.ubuntu.com/~kernel-ppa/mainline/linux-3.19. YZ-coda / 2016/01/07-vivido /
Continuo a non capire perché non funziona tra i due Raspberry Pis ma se trovo una soluzione la posterò qui.
MODIFICA 2:
Ubuntu 14.04 esegue Bluez 4 mentre Raspberry Pis esegue Bluez 5. dato che non ero in grado di connettere i due Raspberry Pis (con Bluez 5), ho pensato che avrei provato a connettere due istanze di Fedora 23 con Bluez 5 per vedere se c'è qualcosa che non va Bluez o il Raspberry Pis. Nei miei esperimenti sto sperimentando gli stessi comportamenti con le due istanze di Fedora 23 che ho fatto con i due Pis Raspberry (in cui la connessione 6lowpan si interrompe in meno di 30 secondi dopo la connessione).
La versione bluez in esecuzione sulle istanze Fedora 23 è 5.35 e la versione bluez in esecuzione su Raspberry Pis è 5.23.
Qualcuno ha idea del perché questo accada con Bluez 5.x?
Grazie,