Bluetooth Protokoll (Raspbian Jessie)

  • Hallo,

    Womit identifiziert sich der Raspi beim Bluetooth-Lautsprecher?
    Wie identifiziert sich der Bluetooth-Lautsprecher beim Raspi?

    Hintergrund:
    Ich habe mehrere Raspis mit Raspbbian-Jessie, auf denen newtron-radio mit einem Bluetooth-Lautsprecher läuft (mpd + pulseaudio).

    Ein BT-Lautsprechen kann mit verschiedenen Raspi's ge'pair't sein. Wenn ich auf 2 verschiedenen SD-Karten den selben Bluetooth-Lautsprecher mit dem selben Raspi 'pair'e, wird durch das 'pair'ing auf der 2. SD-Karte das 'pair'ing auf der 1. SD-Karte ungültig (auf der 1. SD-Karte kann ich danach nicht mehr connect'en).

    Skript um den Bluetooth-Lautsprecher zu 'connect'en:

    Bash
    #!/bin/sh
    # start pulseaudio as mpd
    sudo -u mpd -s pactl list sinks short
    
    
    # connect bluetooth speaker
    sudo bluetoothctl -a << EOF
    connect xx:xx:xx:xx:xx:xx
    exit
    EOF


    Danke kle

    Einmal editiert, zuletzt von kle (17. Februar 2017 um 16:56)

  • Ohne es absolut exakt zu wissen: Entweder gibt sich das Bluetooth-Gerät mit seinem Friendly Name aus, oder mit der MAC-Adresse des BT-Adapters.

    Hab ich das richtig verstanden: Du hast zwei Pis, beide sind mit dem BT-Lautsprecher gepaired. Dann connectest du den ersten, danach den zweiten, und dabei wird das Pairing des ersten Pi dauerhaft aufgehoben? - Kann ich mir irgendwie nicht vorstellen. "Paired" heißt ja, dass sich die Geräte prinzipiell miteinander verbinden dürfen und ist eigentlich nur eine Flag, die gesetzt wird.

    Dass ein Pi getrennt wird, wenn der zweite sich connected, kann ich mir hingegen schon vorstellen, auch wenn ich es noch nie selbst getestet habe.


  • Hab ich das richtig verstanden: Du hast zwei Pis, beide sind mit dem BT-Lautsprecher gepaired. Dann connectest du den ersten, danach den zweiten, und dabei wird das Pairing des ersten Pi dauerhaft aufgehoben?

    Hallo Tronn,

    Nein: 2 SDKarten + Raspi_1 + BT-Lautsprecher_1
    [font="Courier New"]- SD-Karte_1->Raspi; bluetoothctl-pair; bluetoothctl-connect; LED leuchtet; shutdown;[/font]
    [font="Courier New"]- SD-Karte_1->Raspi; bluetoothctl-connect; LED leuchtet; shutdown;[/font]
    [font="Courier New"]- SD-Karte_2->Raspi; bluetoothctl-pair; bluetoothctl-connect; LED leuchtet; shutdown;[/font]
    [font="Courier New"]- SD-Karte_1->Raspi; bluetoothctl-connect; LED blinkt; bluetoothctl-remove;[/font]
    [font="Courier New"] bluetoothctl-pair; bluetoothctl-connect; LED leuchtet; shutdown;[/font]
    [font="Courier New"]- SD-Karte_1->Raspi; bluetoothctl-connect; LED leuchtet; shutdown;[/font]
    [font="Courier New"]- SD-Karte_2->Raspi; bluetoothctl-connect; LED blinkt; shutdown;[/font]
    [font="Courier New"]- SD-Karte_1->Raspi; bluetoothctl-connect; LED leuchtet; shutdown;[/font]

    Wenn die Bluetooth-LED leuchtet, ist der connect erfolgreich gewesen und man kann sound auf den Lautsprecher ausgeben und hören. Blinkt die Bluetooth-LED, so war der connect nicht erfolgreich.

    Ist es klarer geworden?
    Gruß kle

    Einmal editiert, zuletzt von kle (17. Februar 2017 um 19:48)

  • Ja, jetzt verstehe ich, was du machst. Das war sehr hilfreich :)

    Aber einen Grund sehe ich jetzt auch nicht für das Verhalten. Kannst du mal schauen, welchen Status die Geräte in Schritt 4 haben, bevor du den Connect durchführen willst? Ob das Pairing noch vorhanden ist?

    Haben die beiden SD-Karten den selben Friendly Name gespeichert? - Meine Vermutung: Der Lautsprecher sieht einmal die Adresse 00:11:22:... mit dem Namen "Pi-SD-Karte1" und paired sich, dann kommt 00:11:22:... mit dem Namen "Pi-SD-Karte2" und dann sagt der Lautsprecher - nein, mit dem will ich nicht, das ist ja jemand anderes.

    Du könntest das Image von der ersten Karte mal auf die zweite klonen und schauen, ob der Wechsel problemlos möglich ist, dann den Friendly Name ändern und schauen, was passiert. Stelle ich mir sehr zeitaufwändig vor, das viele Hin-Und-Her-Wechseln, aber was anderes fällt mir leider nicht ein :(


  • 1.) Kannst du mal schauen, welchen Status die Geräte in Schritt 4 haben, bevor du den Connect durchführen willst? Ob das Pairing noch vorhanden ist?

    2.) Haben die beiden SD-Karten den selben Friendly Name gespeichert?

    Hallo Tronn,

    1.) bluetoothctl sagt: pairing OK, trusted OK

    2.) Habe zwei Dateien verglichen (SD-Karte_1 <=> SD-Karte_2),
    a) info-Dateien unterscheiden sich (Zeile 2:Key=...),
    b) cache-Dateien sind identisch.

    Code
    info-Datei:    /var/lib/bluetooth/<bt-controller-mac>/<bt-device-mac>/info
    cache-Datei:   /var/lib/bluetooth/<bt-controller-mac>/cache/<bt-device-mac>

    ich habe den Key von der SD-Karte die zuletzt connected war in die info-Datei der anderen SD-Karte übernommen und rebootet und ...

    ... Bluetooth-'connect' war erfolgreich.

    Danke und Gruß kle

    Einmal editiert, zuletzt von kle (18. Februar 2017 um 11:26)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!