Forum: Mikrocontroller und Digitale Elektronik Bluetooth Gateway ins Internet


von Saskia (saskia95)


Lesenswert?

Hallo Leute,



Ich bin grade an einem Projekt dran. Ich möchte an einen rasp pi 4 2 
Geräte über Bluetooth gemeinsam kommunizieren lassen. Anschließend wäre 
der zweite Schritt, dass diese zwei Geräte über ein Bluetooth Access 
Point aufs Internet zugreifen können.

Aber erstmal zum ersten Schritt.



Wie schaffe ich es, dass ich an einen rasp pi 4 zwei Geräte via 
Bluetooth verbinde und diese gemeinsam kommunizieren? Beispielsweise ein 
Smartphone und ein Lautsprecher, der ein Audi Signal von Smartphone 
abspielt.



Ich habe was von einem Bluetooth Netzwerk gelesen, welches ich aufbauen 
muss. Stimmt das oder geht es auch leichter? Vor allem, weil ich ja im 
nächsten Schritt feste ip Adressen für diese zwei Bluetooth Geräte 
benötige, damit ich über den Raps ins Internet kann. Könnt ihr mir bitte 
helfen?

von Rene K. (xdraconix)


Lesenswert?

Grundlegend: über BT gibt es keine IP Adressen.

Zum Googln und Nachschlagen: PAN (Personal Areas Network over Bluetooth)

von Εrnst B. (ernst)


Lesenswert?

Saskia schrieb:
> Wie schaffe ich es, dass ich an einen rasp pi 4 zwei Geräte via
> Bluetooth verbinde und diese gemeinsam kommunizieren? Beispielsweise ein
> Smartphone und ein Lautsprecher, der ein Audi Signal von Smartphone
> abspielt.

Das ist eine unglückliche Konfiguration, weil dann das Audio-Signal 
nicht direkt vom Smartphone auf den Lautsprecher geht, sondern einmal 
durch den Raspi geschleift wird.
Geht aber im Prinzip, z.b. mit pulseaudio & bluez.
apt install pulseaudio-module-bluetooth
dann entsprechende Sources und Sinks anlegen und verknüpfen.
Geht Klicki-Bunti wenn auf dem Raspi ein volles graphisches DE läuft, 
ansonsten per script und pactl.

von Saskia (saskia95)


Lesenswert?

Hi, Vielen Dank für die Antworten.

hmm kann mir da jemand einen Beitrag empfehlen, in dem ich nachschauen 
kann? Also ich meine den Teil mit der Schleife..

Aber bezogen auf meinen zweiten geplanten Schritt, brauche ich doch IP 
Adressen oder ?


Also wenn ich Beispielsweise mit meinem Smartphone eine Bluetooth 
Verbindung zum Rasp schaffe und dann auf der anderen Schnittstelle den 
Rasp mit Wifi ans Internet anbinde. Wie soll dann der Rasp aus einer 
Bluetooth Verbindung sonst die jeweilige Wifi Verbindung zuordnen?

von Εrnst B. (ernst)


Angehängte Dateien:

Lesenswert?

Saskia schrieb:
> Also ich meine den Teil mit der Schleife..

Welche Schleife?

Saskia schrieb:
> Aber bezogen auf meinen zweiten geplanten Schritt, brauche ich doch IP
> Adressen oder?

Bluetooth ist kein WLan und will auch kein WLan sein... Dein Plan hört 
sich irgendwie an, als möchtest du eigentlich Wlan verwenden. Warum tust 
du das dann nicht?

Ansonsten: PAN wurde schon genannt.

Saskia schrieb:
> Also wenn ich Beispielsweise mit meinem Smartphone eine Bluetooth
> Verbindung zum Rasp schaffe und dann auf der anderen Schnittstelle den
> Rasp mit Wifi ans Internet anbinde.

Stichwort "Bluetooth-Tethering"... macht man zwar üblicherweise 
andersherum, um die LTE/5G-Internet-Verbindung vom Smartphone 
weiterzureichen, aber das ist ja egal.
Auch hier: Hat einen Grund, warum sich das nicht wirklich durchgesetzt 
hat, und eigentlich jedes Händi erstmal Tethering per Wlan machen 
will...

Aber wenn du den Weg weiterverfolgen willst: am raspi bridge einrichten, 
"bt-network" im Server-Mode starten, und das alle Bluetooth-Verbindungen 
an die Bridge weiterreichen lassen.

Für diese bridge kannst du dann einen DHCP laufen lassen (da kommen dann 
deine IP-Adressen her) und mit dem üblichen iptables NAT/Masquerade das 
Internet weiterreichen.

: Bearbeitet durch User
von Saskia (saskia95)


Lesenswert?

Erstmal vielen Dank.

Die Antworten sind sehr hilfreich! Und vielen Dank für das PAN Dokument. 
Ich möchte unbedingt Bluetooth verwenden, da es auch mit Sensoren, die 
nur Bluetooth haben, Funktionieren  soll. Aber erstmal will ich es mit 
dem Smartphone testen.

Wenn ich das richtig verstanden habe, brauche ich für den ersten Schritt 
keine Bridge einzustellen, weil ja nichts ins Netzwerk geroutet werden 
soll? Hier verwende ich am
Besten das PAN?

Beim zweiten Schritt:
Wenn ich also eine Bridge am raspberry pi einstelle, damit die Bluetooth 
Verbindungen ans wifi Netzwerk weitergereicht werden, kann mir da jemand 
vllt auch ein ähnliches Projekt oder eine Beschreibung empfehlen?

Vielen Dank.

von Εrnst B. (ernst)


Lesenswert?

Saskia schrieb:
> da es auch mit Sensoren, die
> nur Bluetooth haben, Funktionieren  soll.

Diese sprechen aber sicher kein PAN, sondern haben ihre eigenen Profile.
Vielleicht erstmal zum Verständnis: Bluetooth umfasst einen großen Satz 
an verschiedenen Profilen / "Sprachen", die für unterschiedliche 
Anwendungszwecke gedacht sind. Jedes Gerät spricht nur die "Sprachen", 
die für es relevant sind.

"PAN" wäre so eine "Sprache", für Netzwerk-Verbindungen, wird von 
manchen Handies und Tablets gesprochen.
"A2DP" wäre eine andere Sprache, für Audio-Übertragungen, wird von 
Headsets, Lautsprechern und Handies gesprochen.

Hinzu kommt, dass die Dinger auch noch Richtungs-Abhängig sind. Nur weil 
ein Handy A2DP kann, kann man es noch lange nicht als "Lautsprecher" für 
ein zweites Handy einsetzen.

Deine Idee, "alles in ein Netzwerk und dann kann das schon irgendwie 
kommunizieren" passt einfach nicht zu Bluetooth. Das ist WLan.

von Saskia (saskia95)


Lesenswert?

Ich möchte gerne ein Gateway schaffen, dass es ermöglicht eine 
Schnittstelle für Bluetooth Geräte zu schaffen, mit dem Internet zu 
kommunizieren. Deswegen taste ich mich erstmal langsam ran.

Wenn ich also beispielsweise auf der einen Seite den Sensor habe, der 
mit dem rasp über Bluetooth verbunden ist, und auf der anderen Seite 
irgendein ftp Server im
Netz, dann sollen diese über den rasp als Gateway miteinander 
kommunizieren können. Das war so meine Idee. Dass es mit wlan geht, weiß 
ich, nur will ich halt ein Gateway schaffen, welches auch Bluetooth 
Geräten dies ermöglicht.

von Εrnst B. (ernst)


Lesenswert?

Saskia schrieb:
> Wenn ich also beispielsweise auf der einen Seite den Sensor habe, der
> mit dem rasp über Bluetooth verbunden ist, und auf der anderen Seite
> irgendein ftp Server im

Dazu muss der Sensor "PAN" sprechen und darüber eine Internet-Verbindung 
aufbauen.
Wenn er das kann, alles fein. Der Weg über eine Bridge, DHCP, nat und 
"bt-network" passt.

Handelsübliche Bluetooth-Sensoren (egal ob 
Temperatur/Luftfeuchte/Herzfrequenz/Blumentopf-Wasserstand/Licht-Intensi 
tät  ...) sprechen kein PAN, sondern geben ihre Messwerte z.B. per GATT 
weiter.

Der übliche Weg hier wäre: Der RasPi sammelt die Messwerte per Bluetooth 
ein, und schiebt sie dann in eine Datenbank oder meinetwegen auf einen 
FTP-Server. Dafür gibt es haufenweise fast schlüsselfertige Lösungen, 
Node-Red, Openhab, fhem, iobroker, ….

von Motopick (motopick)


Lesenswert?

Du koenntest einen Bluetooth Terminalserver bauen.
Gegenueber Bluetoothgeraeten benutzt der ein serielles Profil.
Dabei gibt es die zwei Faelle, dass dein Client/Sensor dann
selbst aktiv zum besagtem Server connectet oder auch
anders herum dein Server die Clients connecten muss.

Der eigentliche Server mappt dann diese Bluetoothverbindungen
auf TCP oder UDP-Ports die ueber eine IP-Adresse erreichbar sind.
Meines Wissens werden aber nur maximal 16(?) solcher Verbindungen
per BT-Adapter unterstuetzt. Fuer mehr Verbindungen muesstest
einen zweiten BT-Adapter benutzen.

BT-Geraete die tatsaechlich BT-PAN koennen, koennte er einfach
ueber IP-Routing erreichen. Man kann einem BT-PAN-Adapter
sehr wohl eine IP-Adresse konfigurieren.

von Motopick (motopick)


Lesenswert?

P.S.:

Wenn diese an den Terminalserver per BT angeschlossenen Geraete
erreicht werden sollen, kannst du entweder Programme wie telnet
oder netcat mit der Angabe der IP-Adresse und der Portnummer
benutzen.

Eine andere Moeglichkeit waeren virtuelle serielle Schnittstellen
auf dem Host fuer die es auch Treiber gibt. Dann wuerde das
remote BT-Device als eine lokal angeschlossene serielle
Schnittstelle erscheinen und koennte auch so benutzt werden.

von Motopick (motopick)


Lesenswert?

P.P.S.:

Ob jemand einen solchen (BT-)Terminalserver bereits realisiert hat,
kann ich dir nicht sagen. Es gibt aber keinen Grund, der einer
Realisierung im Wege stehen wuerde.

Wenn du die Erste waerst, sind dir Ruhm und Ehre ziemlich sicher :).

von Saskia (saskia95)


Lesenswert?

Also erstmal danke für alle Antworten. Ich habe berufsbedingt erst jetzt 
mit meinem Projekt anfangen können.
Ich habe für den zweiten Versuch geschafft, wo es um die Anbindung eines 
Smartphones und Headsets mittels Bluetooth an einen raspberry pi 4, dass 
ich das Smartphone über ein mit dem Bluetooth Manager erstelltes pan 
Netzwerk verbinde. Es erscheint auch mit ip a ein pan0 Interface und 
eine ip Adresse. Wenn ich den Befehl arp -a eingebe, sehe ich auch, dass 
das Smartphone eine ip Adresse erhalten hat. Ich kann diese auch 
anpingen und vom Smartphone auch die Schnittstelle anpingen. Wenn ich 
das Headset aber verbinde, kann ich es nur als „Headset“ verbinden und 
es erscheint mit dem Befehl arp -a keine weitere ip Adresse. Wenn ich 
Musik Abspiele, wird diese auf dem Headset auch wiedergegeben, nur frag 
ich mich jetzt, wie ich diesen Traffic kontrollieren kann.

Und meine weitere Frage bezüglich Versuch 3, wo es um die Anbindung 
beider Geräte an zwei verschiedene raspberry’s geht, würde ich gerne 
wissen, wie ich denn dann mit abspielen auf dem Handy die Wiedergabe auf 
dem Headset an dem zweiten raspberry erzielen kann? Dafür braucht es 
doch eine ip Adresse oder ?

Danke für eure Hilfe

von Εrnst B. (ernst)


Lesenswert?

Saskia schrieb:
> Wenn ich
> das Headset aber verbinde, kann ich es nur als „Headset“ verbinden und
> es erscheint mit dem Befehl arp -a keine weitere ip Adresse.

Das versuchen wir dir seit Anfang des Threads zu erklären. Wenn das 
Headset kein "PAN" unterstützt, und es hat normalerweise keinerlei Grund 
das zu tun, dann wird es keine IP-Adresse kriegen können. Da kannst du 
genauso versuchen, IPs an Steine aus dem Garten zu verteilen.

von Saskia (saskia95)


Lesenswert?

Genau. Aber wie kriege ich es dann hin, die Musik vom Smartphone auf dem 
ersten raspberry pi auf dem Headset am zweiten raspberry mittels wifi 
und Bluetooth wiederzugeben? (Die raspberry sollen über wifi am 
heimrouter angebunden sein.

Also:
Smartphone -(Bluetooth)> raspberry 1 -(wifi)> Router -(wifi)> raspberry 
2 -(Bluetooth)> Headset

Ps: kann mir vllt noch jemand erklären, wieso zusätzlich eine bnep0 
Schnittstelle erscheint, wenn ich das pan Netzwerk aufsetzte und das 
Smartphone damit verbinde ?

von Εrnst B. (ernst)


Lesenswert?

Saskia schrieb:
> Smartphone -(Bluetooth)> raspberry 1 -(wifi)> Router -(wifi)> raspberry
> 2 -(Bluetooth)> Headset

Am Raspi1: Bluetooth-Audio-Sink und "module-rtp-send" über pulseaudio 
verknüpfen.
Am Raspi2: Bluetooth-Audio-Source und "module-rtp-recv" über pulseaudio 
verknüpfen.

wie die RTP/UDP-Daten dann den Weg vom Raspi1 zum Raspi2 finden, ist 
unerheblich. Das kannst du über Wifi machen, über Ethernet, oder 
meinetwegen über ein Bluetooth-PAN-Netzwerk.

Saskia schrieb:
> wieso zusätzlich eine bnep0
> Schnittstelle erscheint

mach mal ein "brctl show", vielleicht geht dir dann ein Licht auf.

: Bearbeitet durch User
von Saskia (saskia95)


Lesenswert?

Danke für die tolle Antwort!

Wenn ich das aber so konfiguriere, wie Teile ich denn dann dem raspberry 
1 meinetwegen mit, dass die Pakete auf der Schnittstelle wlan0 rausgehen 
sollen? Bzw. Auf dem raspberry 2 von der ankommenden wlan0 Schnittstelle 
auf das Headset als Audio sink weitergeleitet werden sollen?

Mit nem Ping ist es ja einfach, da Ping ich die ip Adresse und der 
Router erledigt den Rest. Aber wenn ich keine ip Adresse habe, woher 
weiß der Router dann, dass die Pakete an den raspberry 2 auf die wlan0 
Schaltstelle gehen sollen?

Brtcl Show werde ich unverzüglich machen, sobald ich am Projekt sitze.

von Εrnst B. (ernst)


Lesenswert?

Saskia schrieb:
> Wenn ich das aber so konfiguriere, wie Teile ich denn dann dem raspberry
> 1 meinetwegen mit, dass die Pakete auf der Schnittstelle wlan0 rausgehen
> sollen? Bzw. Auf dem raspberry 2 von der ankommenden wlan0 Schnittstelle
> auf das Headset als Audio sink weitergeleitet werden sollen?

Die Kombination der Pulseaudio-Module entfernt alles "bluetooth-hafte" 
von dem Audiostream, es ist nachher einfach "bluetoothfreier sound". Und 
der wird dann in RTP verpackt und als UDP verschickt.
Die zwei Raspis finden sich am einfachsten über ihre IP-Adressen.
Über welches Netzwerk-Interface die Daten dann laufen, ergibt sich aus 
den Adressen und den routing-tables. Wenn sie sich pingen können, passt 
das schon.
1
# Raspi-1
2
pactl load-module module-null-sink sink_name=stream sink_properties="device.description='StreamOverRTP'"
3
pactl load-module module-rtp-send source=stream.monitor destination_ip=192.168.99.99
4
pactl set-default-sink stream
5
6
# Raspi-2 (Mit IP 192.168.99.99)
7
pactl load-module module-rtp-recv latency_msec=10 sap_address=0.0.0.0
8
# usw.... ein bischen pulseaudio-Doku darfst du schon selber lesen.

von Stephan (stephan_h623)


Lesenswert?

Saskia schrieb:
> wie Teile ich denn dann dem raspberry
> 1 meinetwegen mit, dass die Pakete auf der Schnittstelle wlan0 rausgehen
> sollen? Bzw. Auf dem raspberry 2 von der ankommenden wlan0 Schnittstelle
> auf das Headset als Audio sink weitergeleitet werden sollen?

Siehe Beitrag von Ernst. Musst du in der Konfiguration der Dienste auf 
den beiden Raspis konfigurieren.

Letzenendes läuft auf beiden Raspis ein Serverdienst.
Auf Raspi 1: RTP-Sender für beliebige Audio-Quelle (hier dein Handy) > 
Netzwerk (RTP)
Auf Raspi 2: RTP-Receiver für RTP-Daten an beliebige Audio-Senke (hier 
dein Bluetooth-Lautsprecher)

Wenn die Geräte nicht explizit dafür gedacht sind direkt miteinander zu 
kommunizieren geht es auch nicht (wobei Handy und Headset ja 
funktionieren sollten).
Insbsondere gilt das für die direkte Verbindung ins und aus dem 
Internet.

von Saskia (saskia95)


Lesenswert?

So vielen Dank für die antworten. Das
Klingt gut. Ich versuche das am Freitag mal so und gebe Feedback.

von Saskia (saskia95)


Lesenswert?

Also,

Ich habe den Versuch 2 mit Audio source und sink hinbekommen. Habe dafür 
ganz normal beide Geräte verbunden und jeweils als source und sink 
bestimmt. Mitschnitte habe ich über wireshark gemacht.

Zu Versuch 3 weiß ich leider nicht weiter.
Der Befehl brctl Show gibt eine Brücke namens pan1 aus, aber ich habe 
doch ein pan1 Netzwerk erstellt. Heißt das soviel, wie dass bnep0 zu 
pan1 gebrückt ist?

von Εrnst B. (ernst)


Lesenswert?

Saskia schrieb:
> Ich habe den Versuch 2 mit Audio source und sink hinbekommen.

Dann bist du ja schon fast am Ziel. Nur noch die rtp-Endpunkte mit den 
jeweiligen Bluethooth-Audio-Endpunkten verbinden.

Saskia schrieb:

> Heißt das soviel, wie dass bnep0 zu
> pan1 gebrückt ist?

pan1 ist das Netzwerk, bnep0, bnep1, ... sind die Netzwerk-Teilnehmer.
Dazu wird die "bridge"-Funktionalität von Linux verwendet, mit brctl 
siehst du dann dass die Netzwerk-Links der einzelnen bluetooth-Geräte 
an die Bridge verbunden sind.

von Alen (kakarott)


Lesenswert?

Wenn ich das pan1 Netzwerk mit einer 10.0.0.1 Adresse versehe und 
anschließend die Geräte mit Internet Nutzung über das pan1 Netzwerk 
anbinde, dann erscheint nach der Eingabe des Befehls arp -a jeweils eine 
10er ip Adresse. Also 10.0.0.107 und 10.0.0.134. Ich gehe davon aus, 
dass dies die ip Adressen der Clients sind oder? Wenn ich vom Smartphone 
die Schnittstelle 10.0.0.1 Pinge, funktioniert auch soweit alles. Ich 
kann aber komischerweise nicht die ip Adresse des anderen Endgerätes 
pingen. Weshalb ist das so?
Ich kann lediglich die bnep Adresse des anderen Endgerätes pingen. Habt 
ihr da ne Quelle wo ich mir das mit bnep und pan nochmal durchlesen 
kann? Bzw. Wenn nicht zu umständlich ist, dass einer mir das nochmal 
erklärt ?

von Εrnst B. (ernst)


Lesenswert?

Alen schrieb:
> Ich
> kann aber komischerweise nicht die ip Adresse des anderen Endgerätes
> pingen. Weshalb ist das so?

Firewall-Einstellung am PC der die PAN-Bridge erstellt.

Hat an der Stelle schon nichts mehr direkt mit Bluetooth zu tun, die 
IP-Pakete sind im Kernel da schon "einen Schritt weiter", in der Bridge.

Und da hat sich vor einiger Zeit (mit Einführung von netfilter statt 
ebtables, denke ich) das default-Verhalten geändert, insofern finden 
sich vmtl. noch diverse unnvollständige HowTos im Netz.

Versuch mal entweder, der Bridge gleich alles Firewalling für 
durchlaufende Pakete abzuschalten: (Gilt aber für alle Bridges im 
System)
>> echo 0 > /proc/sys/net/bridge/bridge-nf-call-iptables
>> bzw
>> sysctl net.bridge.bridge-nf-call-iptables=0

oder du schreibst passende Regeln für die Firewall, z.B.
>> iptables -A FORWARD -i pan1 -o pan1 -j ACCEPT


Evtl. fehlt auch noch ein 1 > /proc/sys/net/ipv4/ip_forward

: Bearbeitet durch User
von Motopick (motopick)


Lesenswert?

Wo bleiben eigentlich die versprochenen
> Sensoren, die nur Bluetooth haben, Funktionieren  soll
?

von Alen (kakarott)


Lesenswert?

@motopick ich habe doch mehrmals erwähnt, dass ich es mit nem Headset 
erstmal versuche. Wo ist das Problem ?


@ernst ich versuche es mal mit iptables. Forward hatte ich schon 
aktiviert.

Aber wichtiger ist mir die Verbindung von Smartphone zu Headset über die 
zwei raspberry’s. Ich versuche es im nächsten Schritt erstmal mit 
Puleazdio und gebe Feedback. Funktioniert pulseaudio denn auch über den 
Router?

von Εrnst B. (ernst)


Lesenswert?

Alen schrieb:
> Funktioniert pulseaudio denn auch über den
> Router?

Pulseaudio verschickt im vorgeschlagenen Setup einfach UDP-Pakete. Wie 
die zum Ziel kommen, ist völlig egal, geht mit direktem Kabel, über 
Wlan, über einen Switch, über einen Router (wenn der das nicht aktiv 
verhindert), über ein VPN, über das Internet, ...

von Alen (kakarott)


Lesenswert?

Okay danke.

Also nimmt pulseaudio lediglich die Bluetooth Daten und packt sie in ip 
ein, richtig? Also mit der vorgeschlagenen Konfiguration. Diese Daten 
können ja dann wegen ip von Router an den zweiten raspberry pi 
weitergeleitet werden, oder ?

Ich habe außerdem gelesen, dass rfcomm ebenfalls so ein Protokoll bzw. 
Eine Art ist, serielle Verknüpfungen zu schaffen, stimmt das ?

von Εrnst B. (ernst)


Lesenswert?

Alen schrieb:
> Also nimmt pulseaudio lediglich die Bluetooth Daten und packt sie in ip
> ein, richtig?

Nein.
das bluetooth-modul von Puseaudio macht aus dem Bluetooth einen 
Audio-Daten-Stream. Mit dem kann man alles Mögliche machen, es 
unterscheidet sich an der Stelle nicht mehr von anderen 
Audio-Datenstreams, wie z.B. einer Mikrophonaufnahme oder einem 
Musik-Datei-Abspieler oder sonstwas.

das rtp-sende-modul von Pulseaudio nimmt einen Audio-Stream, egal was 
dessen Quelle ist, und schickt ihn ins Netzwerk.

das rtp-empfangs-Modul nimmt die Daten aus dem Netzwerk und macht wieder 
einen Audio-Stream daraus.

Du scheinst zu erwarten, dass für all das irgendwelche 
Spezial-Sonderfall-Sachen nötig sind. So funktioniert Unix/Linux aber 
nicht, da wird alles, "Teile und Herrsche", auf kleine Teilbereiche 
heruntergebrochen, die für sich alleine dann relativ einfach sind, die 
sich aber dank klarer Schnittstellen zu komplexen Systemen 
zusammenstecken lassen.

die Netzwerk-Bridge macht immer dasselbe, egal ob du da 
Bluetooth-PAN-Links oder Wlan-Interfaces oder Modem-Verbindungen oder 
sonstwas reinsteckst.
Dein Netzwerk transportiert Daten von A nach B, egal ob die Daten jetzt 
aus einem "ping"-Programm, deinem Webbrowser oder pulseaudio kommen.
Pulseaudio verknüpft Audio-Quellen und Ziele miteinander, egal ob das 
Ziel jetzt ein Lautsprecher oder ein Netzwerk-Datenstrom ist, und egal 
ob die Quelle ein Lokales Programm ist, was Sound abspielt, oder eben 
ein Bluetooth-Gerät.

von Alen (kakarott)


Lesenswert?

Ich habe jetzt den Versuch durchgeführt, aber leider kein Erfolg gehabt. 
Ich habe kein Signal auf dem Headset erhalten. Ich habe die 
Konfigurationen gemäß dieser Ableitung hier durchgeführt (ganz unten) 
https://askubuntu.com/questions/70556/how-do-i-forward-sound-from-one-computer-to-another-over-the-lan.

Ich habe die raspberry pis mit einem 5g Netz verbunden. Um ein 
Troubleshooting zu machen, nehme ich erstmal die raspberry über meinen 
heimrouter in Verbindung. Außerdem möchte ich gerne erstmal den Versuch 
mit zwei Smartphones durchführen, um zu schauen, ob diese sich pingen 
können.

Sprich:
SMARTPHONE ->PAN  PI  Wlan0 -> Router -> wlan0  PI  PAN  -> 
Smartphone.

In IP:

10.0.0.122(Handy/PANadresse) -> 10.0.0.1(PI1Pan0) / 
192.168.2.2(PI1wlan0) -> 192.168.2.1(Router) -> 192.168.2.6(PI2wlan0) -> 
10.0.1.1(PI2Pan0) -> 10.0.1.122(Handy/PANadresse)

Wenn ich ein pan Netzwerk aufbaue, erhalte ich automatisch ein bnep0 
Interface mit einer 169er ip Adresse. Das Smartphone aber erhält die ip 
Adresse vom pan Netzwerk(10.0.0.1). Mit dieser Greife ich auch auf das 
Internet zu (laut wireshark). Ich kann aber die andere 10er Adresse vom 
anderen Smartphone, also die 10.0.1.122 am raspberry 2 nicht anpingen. 
Ich habe auch die oben genannten Befehle mittels iptables durchgeführt, 
aber kann auch innerhalb eines raspberry pi nicht das zweite Smartphone 
pingen. Also wenn beide in einem pan Netzwerk sind. Kann mir einer sagen 
wieso? Meine Idee ist danach das gleiche Mittels Pulseaudio 
durchzuführen und ein Handy als Quelle und das andere als Sink zu 
konfigurieren.

von Εrnst B. (ernst)


Lesenswert?

Alen schrieb:
> Ich kann aber die andere 10er Adresse vom
> anderen Smartphone, also die 10.0.1.122 am raspberry 2 nicht anpingen.

Das sind zwei verschiedene Netzwerke, auch wenn sie dieselben 
IP-Bereiche verwenden.

Alen schrieb:
> aber kann auch innerhalb eines raspberry pi nicht das zweite Smartphone
> pingen.

Da musst du Fehler suchen. Antworten die Smartphones überhaupt auf ping? 
Kannst du, wenn beide per PAN am selben Raspi hängen, die vom RasPi aus 
anpingen und kriegst Antworten?

Wenn beide RasPis "dasselbe" Netzwerk per PAN zur Verfügung stellen 
sollen, müsstest du die Konfiguration etwas Ändern:

z.B. Die Raspis packen die bnep-Interfaces zusammen mit dem ETH/Wlan 
Interface in eine gemeinsame Bridge, machen kein DHCP oder NAT, die 
Smartphones bekommen dann IPs vom Router aus der 192.168.2.0/16-Range 
vergeben.

Alen schrieb:
> Meine Idee ist danach das gleiche Mittels Pulseaudio
> durchzuführen und ein Handy als Quelle und das andere als Sink zu
> konfigurieren.

Da du leicht durch verschiedene Verbindungsarten abgelenkt zu sein 
scheinst:

erster Schritt: Alles, was mit PAN, IP-Adressen über Bluetooth usw. zu 
tun hat, abschalten und vorerst vergessen.
Dann die Audio-Bridge einrichten. Für diese brauchen NUR die beiden 
RasPis eine IP-Adresse, aus deinem Heimnetz vom Router. Sonst braucht 
kein anderes Gerät eine, die Smartphones nicht, die Bluetooth-Headsets 
nicht.
Wenn dann das Audio-Streaming geht, kannst du im zweiten Schritt immer 
noch ein PAN-Netzwerk parallel zum (aber unabhängig vom) Audio-Setup 
aufbauen. Falls dir danach noch eine Verwendung dafür einfällt.

Alen schrieb:
> Ich habe die raspberry pis mit einem 5g Netz verbunden.

Solange sie sich untereinander erreichen können, ist das egal. Bei 
5G/Mobilfunk läuft das aber vmtl. auf ein zusätzliches VPN raus.

Auch hier: Einfach anfangen, danach schrittweise die Komplexität 
erhöhen.

Beitrag #7426573 wurde vom Autor gelöscht.
Beitrag #7426575 wurde vom Autor gelöscht.
Beitrag #7426576 wurde vom Autor gelöscht.
von Saskia (saskia95)


Lesenswert?

Danke für die Antwort.

Ja ich weiß, dass es verschiedene Netze sind, aber sie sollten sich ja 
pingen können da der Router ja zwischen ist.

Ja, die Smartphones antworten auf pings. Also wenn ich beide Smartphones 
am selben Pi an ein pan Netzwerk anschließe, kann ich beide Smartphones 
mit ihren 10er Adressen vom Pi aus pingen. Ich kann auch die Pi 
Schnittstelle (10.0.0.1) von beiden Smartphones pingen. Ich kann nur 
nicht das andere Handy pingen. Mich Bingen glaube ich die bnep 
interfaces durcheinander. Hat es denn damit was zu tun ? Ich habe ja 
bewusst mit wireshark geschaut, mit welcher Adresse die Handys aufs 
Internet zugreifen, es ist die 10er Adresse. Da gehe ich ja auch davon 
aus, dass diese Benutzt wird.



Okay ja, du hast recht. Ich schalte erstmal alles ab und versuche es 
nochmal mit pulse. Ich schaue mal, ob ich bessere Dokumentationen finde. 
Eventuell liegt es daran.

von Ich A. (alopecosa)


Lesenswert?

Εrnst B. schrieb:
> Diese sprechen aber sicher kein PAN, sondern haben ihre eigenen Profile.

Sensoren dürften seit Jahren nur noch Bluetooth LE sprechen.
Und hier gibt es zumindest in der Theorie ab 5.0 MESH.

Ich habe aber noch keine wirklich gut funktionierende Umsetzung gesehen, 
beschäftige mich seit einigen Jahren aber auch nicht mehr wirklich aktiv 
damit. Es mag also durchaus was geben.

von Christian (grobig80)


Lesenswert?

Saskia schrieb:
> Ja ich weiß, dass es verschiedene Netze sind, aber sie sollten sich ja > > 
pingen können da der Router ja zwischen ist.

...das mag ja sein aber es funktioniert auch nur dann wenn der router 
auch wirklich beide Netze kennt bzw routen für diese hat.
Ein traceroute von einem Endgerät zum anderen könnte dir vermutlich 
aufzeigen wo die Pakete 'stecken' bleiben.

> Okay ja, du hast recht. Ich schalte erstmal alles ab und versuche es > >
> nochmal mit pulse. Ich schaue mal, ob ich bessere Dokumentationen finde. > 
Eventuell liegt es daran.
Genau, Schritt für Schritt vorgehen.

von Saskia (saskia95)


Lesenswert?

Also. Ich habe es jetzt nochmal probiert. Ich bin ein Stück weiter 
gekommen. Ich erhalte mit wireshark zumindest nutzbaren in rtp verpackt.

Ich bekomme aber mit wireshark heraus, dass auf der wlan0 Schnittstelle 
zum Router eine ip Adresse mit 224.0.0.x verwendet wird. Und dort werden 
rtp Daten mit Audio übertragen. Stimmt das ? Was ist diese 224er 
Adresse?

Das Problem ist aber, dass ich leider nichts auf dem Headset höre. Also 
anscheinend kommen Daten bis zum raspberry pi an aber nicht über die 
Bluetooth Schnittstelle zum Headset. Wenn ich mit wireshark drauf 
schaue, versucht lediglich die Gegenstelle eine tcp Verbindung 
aufzubauen. Aber das war’s. Keine Daten.

: Bearbeitet durch User
von Harry L. (mysth)


Lesenswert?

Saskia schrieb:
> Was ist diese 224er
> Adresse?

Multicast.
https://de.wikipedia.org/wiki/Multicast

Multicast-Pakete werden nicht geroutet und bleiben im lokalen Netz.

: Bearbeitet durch User
von Saskia (saskia95)


Lesenswert?

Okay danke.

Aber wieso steht in wireshark auf beiden Schnittstellen die multicast 
Adresse als destination? Auf der Empfänger Seite muss doch die multicast 
Adresse als Sender bestimmt sein oder??

Und wieso musste ich dann in der Konfiguration von pulseaudio die 
jeweiligen ip Adressen angeben ?? Also die 192.168.2.2 und 192.168.2.6. 
Das sind ja die Adressen von den raspberry’s, an denen die Endgeräte 
angeschlossen sind… die jeweils als Sender und Empfänger dienen. Wenn 
das alles doch über multicast versendet wird, ist doch die Konfiguration 
überflüssig oder?

von Εrnst B. (ernst)


Lesenswert?

Saskia schrieb:
> Wenn
> das alles doch über multicast versendet wird, ist doch die Konfiguration
> überflüssig oder?

Multicast ist optional. Du kannst auch ohne Multicast direkt die IPs der 
Raspies konfigurieren.
"destination_ip" beim sender:
>> Destination multicast group or unicast address for both RTP and SAP packets.

"sap_address" beim receiver:
>> The address used to listen for SAP announcements, defaults to 224.0.0.56.
>> It can be either a multicast group or a unicast address.

https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modules/#module-rtp-send


Und versuch nicht alles auf einmal zu testen, wenn dich da wieder die 
Komplexität erschlägt. Erster Versuch wäre z.B. MP3-Player auf einen 
RasPi, Kopfhörer an Audio-Buchse des zweiten. Wenn das geht, kannst du 
das Setup nach und nach um die zusätzlichen Bluetooth-Links erweitern.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.