Ich hatte diese Frage zu Stack Overflow, aber es wurde vorgeschlagen, hier zu migrieren. Es wurde für die Aufmerksamkeit des Moderators markiert, aber ich bin nicht sicher, wie dieser Prozess abläuft, und ich erhielt keine Rückmeldung. Ich dachte mir, ich würde die Frage hier stellen:
Ich versuche, eine Bluetooth-Smart-Verbindung zwischen zwei Himbeer-PIs herzustellen, wo ich IPSP (Internet Protocol Support Profile) verwenden kann, um mit dem IPv6-Protokoll unter Verwendung von 6LoWPAN zu kommunizieren.
Ich konnte diese Kommunikation zwischen dem Raspberry Pis und einem Nordic nRF51-Entwicklungskit erfolgreich herstellen. Als Beweis für das Konzept versuche ich nun, diese Verbindung zwischen den beiden Raspberry Pi-Boxen ohne das Nordic nRF51-Entwicklungskit herzustellen.
Also war mein erster Schritt, den Himbeer-Pis einzurichten. Ich habe dies mit den Schritten in Nordic's nRF5-IoT-SDK ( https://developer.nordicsemi.com ) getan . Ich weiß, dass die Himbeer-Pis korrekt eingerichtet sind, da beide mit der nRF51-Karte arbeiten. Ich kann eine Verbindung zwischen dem Raspberry Pi und den nRF51-Boards herstellen und das nRF51-Board vom Raspberry Pi aus ping6.
Um nun eine Bluetooth-Verbindung zwischen dem Raspberry Pis herzustellen, starte ich folgende Schritte: Auf dem Master-Gerät führe ich die folgenden Befehle aus:
#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
Auf dem Slave-Gerät führe ich die folgenden Befehle aus:
#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
Der Befehl hcitool lecc gibt immer "Connection Handle 64" zurück. An diesem Punkt habe ich eine stabile Verbindung zwischen den beiden Geräten, die ich mit dem Befehl hcitool con überprüfen kann .
Ich kann jetzt den folgenden Befehl entweder auf dem Master oder dem Slave ausführen, wobei die MAC-Adresse die Adresse für das Bluetooth-Gerät ist, das ich auch verbinde:
echo “connect 5C:F3:70:XX:XX:XX 1” > /sys/kernel/debug/bluetooth/6lowpan_control
Unabhängig davon, auf welchem Raspberry Pi der Befehl ausgeführt wird, wird eine 6lowpan-Verbindung hergestellt. Wenn Sie den Befehl ifconfig ausführen, sehe ich ein neues bt0-Gerät. Das andere Raspberry Pi erhält jedoch kein BT0-Gerät. Ich habe versucht, den Befehl ifconfig bt0 up auszuführen und denselben Echo-Befehl auszuführen (die MAC-Adresse zu ändern), aber keiner von ihnen gibt mir das bt0-Gerät.
Das bt0-Gerät, das auf dem Raspberry Pi angezeigt wird, auf dem ich den Befehl ausgeführt habe, wird nach 39 Sekunden immer ausgeblendet. In der Protokolldatei / var / log / syslog scheint es, als ob der ntpd-Daemon die bt0-Schnittstelle hört, wenn er erscheint, und genau 39 Sekunden später erkennt er, dass die Schnittstelle nicht mehr vorhanden ist, und gibt sie frei. Ich habe versucht, dem Gerät eine IPv6-Adresse zuzuweisen, wenn es mit dem folgenden Befehl ausgeführt wird:
ifconfig bt0 inet6 add 2001:db8::5cf3:70ff:feXX:XXXX/64
Ich habe dann einen Ping6-Befehl ausgeführt, um fortwährend einen Ping-Befehl auszuführen, in der Hoffnung, dass die Schnittstelle noch eine Weile aktiv bleibt, aber nach 39 Sekunden ist die Schnittstelle immer noch ausgefallen.
Ich verwende zwei Raspberry Pi 2 Model B und beide Bluetooth-Adapter sind Broadcom Corp BCM20702A0 Bluetooth 4.0-Geräte (verwendet lsusb, um Informationen über den Adapter zu erhalten). Obwohl die Adapter als Bluetooth 4.0 aufgeführt sind, konnte ich sie erfolgreich mit dem Nordic nRF51-Entwicklungskit verwenden, um eine 6LoWPAN-Verbindung herzustellen.
Nach all meinen Experimenten hier die Fragen, die ich habe:
- Kann ich tun, was ich versuche?
- Hat jemand erfolgreich eine 6LoWPAN-Verbindung zwischen zwei Linux-Geräten hergestellt, die mir sagen könnte, was mir in meinen Schritten fehlt?
- Benötige ich eines der Bluetooth-Geräte, um mit Bluetooth Smart 4.2 kompatibel zu sein, um diese Verbindung korrekt herzustellen?
- Wer kennt sich mit bluez aus und kann weitere Schritte empfehlen?
Jede Hilfe wäre sehr dankbar.
Jon
EDIT 1:
Ich konnte diese Verbindung zwischen einer Ubuntu 14.04-Box und einem Raspberry Pi herstellen, indem ich den vorinstallierten 3.19-Kernel von hier installierte: http://kernel.ubuntu.com/~kernel-ppa/mainline/linux-3.19. yz-queue / 2016-01-07-lebendig /
Ich verstehe immer noch nicht, warum es nicht zwischen den beiden Himbeer-Pis funktioniert, aber wenn ich eine Lösung finde, werde ich sie hier posten.
EDIT 2:
Ubuntu 14.04 läuft auf Bluez 4, während der Raspberry Pis auf Bluez 5 läuft. Da ich die beiden Raspberry Pis (mit Bluez 5) nicht verbinden konnte, dachte ich, ich würde versuchen, zwei Fedora 23-Instanzen mit Bluez 5 zu verbinden, um zu sehen, ob etwas nicht stimmt Bluez oder der Himbeer-Pis. In meinen Experimenten erlebe ich dasselbe Verhalten mit den beiden Fedora 23-Instanzen, die ich mit den beiden Raspberry-Pis gemacht habe (wobei die Verbindung mit dem 6lowpan in weniger als 30 Sekunden nach dem Verbinden unterbrochen wird).
Die Bluez-Version, die auf den Fedora 23-Instanzen ausgeführt wird, ist 5.35 und die Bluez-Version, die auf dem Raspberry Pis ausgeführt wird, ist 5.23.
Hat jemand eine Idee, warum dies mit Bluez 5.x geschieht?
Vielen Dank,