Zielstellung
Einrichten des Raspberry Pi via commandline, um dieses mit einem Bluetooth Lautsprecher zu verbinden und Musik abzuspielen. Dazu werden folgende Schritte beschrieben.
- Bluetooth Konfiguration
- Audio Konfiguration
- Audioausgabe
Materialliste
- Raspberry Pi 3
- uSD Karte
- Netzteil
- raspbian light image (2017-04-10-raspbian-jessie-lite.zip)
- Bluetooth Lautsprecher z.B. xq B20
- PC/Notebook mit Linux Mint
- Internet - Zugang
- WiFi mit aktiven DHCP
Bluetooth Konfiguration
Im aktuellen Raspbian 2017-04-10-raspbian-jessie-lite.zip sind bereits die notwendigen Tools enthalten und der Bluetooth Service wird beim Start auch automatisch geladen. Zur Kontrolle kann man sich wie folgt die Version der Bluetooth Tools anzeigen lassen:
pi@raspberrypi:~ $ dpkg -l bluez
Gewünscht=Unbekannt/Installieren/R=Entfernen/P=Vollständig Löschen/Halten
| Status=Nicht/Installiert/Config/U=Entpackt/halb konFiguriert/
Halb installiert/Trigger erWartet/Trigger anhängig
|/ Fehler?=(kein)/R=Neuinstallation notwendig (Status, Fehler: GROSS=schlecht)
||/ Name Version Architektur Beschreibung
+++-=======================-================-================-====================================================
ii bluez 5.23-2+rpi2 armhf Bluetooth tools and daemons
Die Verbindung zum Bluetooth Lautsprecher lässt sich z.B. über das interaktive Tool bluetoohctl herstellen. Nach dem das Tool gestartet wurde, wechselt es in einen Eingabemodus. In diesem können dann diverse Kommandos (z.B. scan, pair, trust, connect, etc.) abgesetzt werden.
Am folgenden Beispiel zeige ich, wie ich das Raspberry Pi mit dem Lautsprecher verbunden habe. Dazu werden folgende Kommandos abgesetzt:
- Nach Bluethooth Geräten suchen mit scan on
- Beenden des Suchvorgangs mit scan off
- Pairen mit BT Lautsprecher mit pair MAC
- Dem BT Lautsprecher vertrauen mit trust MAC
- Verbindung mit BT Lautsprecher herstellen mit connect MAC
- BT Gerät Information anzeigen mit info MAC
- bluetoohctl verlassen mit exit
Anschließend ist der Lautsprecher mit dem System verbunden und kann verwendet werden. Mal abgesehen vom connect Kommando müssen die Kommandos nur einmalig abgesetzt werden.
pi@raspberrypi:~ $ bluetoothctl
[NEW] Controller B8:27:EB:6C:2A:67 raspberrypi [default]
[bluetooth]# scan on
Discovery started
[CHG] Controller B8:27:EB:6C:2A:67 Discovering: yes
[NEW] Device C9:F8:A7:A1:90:D0 C9-F8-A7-A1-90-D0
[NEW] Device BC:85:56:CC:3A:7F BRAVIA
[NEW] Device 10:B7:F6:18:B6:39 xqB20
[bluetooth]# scan off
[CHG] Device 10:B7:F6:18:B6:39 RSSI is nil
[CHG] Device BC:85:56:CC:3A:7F RSSI is nil
[CHG] Device C9:F8:A7:A1:90:D0 RSSI is nil
Discovery stopped
[CHG] Controller B8:27:EB:6C:2A:67 Discovering: no
[bluetooth]# pair 10:B7:F6:18:B6:39
Attempting to pair with 10:B7:F6:18:B6:39
[CHG] Device 10:B7:F6:18:B6:39 Connected: yes
[CHG] Device 10:B7:F6:18:B6:39 UUIDs:
0000110b-0000-1000-8000-00805f9b34fb
[CHG] Device 10:B7:F6:18:B6:39 Paired: yes
Pairing successful
[CHG] Device 10:B7:F6:18:B6:39 Connected: no
[bluetooth]# trust 10:B7:F6:18:B6:39
[CHG] Device 10:B7:F6:18:B6:39 Trusted: yes
Changing 10:B7:F6:18:B6:39 trust succeeded
[bluetooth]# connect 10:B7:F6:18:B6:39
Attempting to connect to 10:B7:F6:18:B6:39
[CHG] Device 10:B7:F6:18:B6:39 Connected: yes
Connection successful
[bluetooth]# info 10:B7:F6:18:B6:39
Device 10:B7:F6:18:B6:39
Name: xqB20
Alias: xqB20
Class: 0x240414
Icon: audio-card
Paired: yes
Trusted: yes
Blocked: no
Connected: yes
LegacyPairing: no
UUID: Audio Sink (0000110b-0000-1000-8000-00805f9b34fb)
[bluetooth]# exit
pi@raspberrypi:~ $ bluetoothctl
[NEW] Controller B8:27:EB:6C:2A:67 raspberrypi [default]
[bluetooth]# scan on
Discovery started
[CHG] Controller B8:27:EB:6C:2A:67 Discovering: yes
[NEW] Device 10:B7:F6:18:B6:39 xqB20
[bluetooth]# scan off
[CHG] Device 10:B7:F6:18:B6:39 RSSI is nil
Discovery stopped
[CHG] Controller B8:27:EB:6C:2A:67 Discovering: no
[bluetooth]# pair 10:B7:F6:18:B6:39
Attempting to pair with 10:B7:F6:18:B6:39
[CHG] Device 10:B7:F6:18:B6:39 Connected: yes
[CHG] Device 10:B7:F6:18:B6:39 UUIDs:
0000110b-0000-1000-8000-00805f9b34fb
[CHG] Device 10:B7:F6:18:B6:39 Paired: yes
Pairing successful
[CHG] Device 10:B7:F6:18:B6:39 Connected: no
[bluetooth]# trust 10:B7:F6:18:B6:39
[CHG] Device 10:B7:F6:18:B6:39 Trusted: yes
Changing 10:B7:F6:18:B6:39 trust succeeded
[bluetooth]# connect 10:B7:F6:18:B6:39
Attempting to connect to 10:B7:F6:18:B6:39
[CHG] Device 10:B7:F6:18:B6:39 Connected: yes
Connection successful
[bluetooth]# info 10:B7:F6:18:B6:39
Device 10:B7:F6:18:B6:39
Name: xqB20
Alias: xqB20
Class: 0x240414
Icon: audio-card
Paired: yes
Trusted: yes
Blocked: no
Connected: yes
LegacyPairing: no
UUID: Audio Sink (0000110b-0000-1000-8000-00805f9b34fb)
[bluetooth]# exit
Audio Konfiguration
Für die Audioausgabe verwende ich pulseaudio und das zugehörige Bluetooth Modul. Beides ist in dem von mir verwenden Raspbian light nicht enthalten und muss wie folgt nach installiert werden.
pi@raspberrypi:~ $ sudo apt-get install pulseaudio-module-bluetooth
Anschließend lassen sich mit dem Tool pactl weitere Einstellungen vornehmen:
Auflisten der Audiosenken:
pi@raspberrypi:~ $ pactl list sinks short
0 alsa_output.platform-soc_audio.analog-stereo module-alsa-card.c s16le 2ch 48000Hz SUSPENDED
1 bluez_sink.10_B7_F6_18_B6_39 module-bluez5-device.c s16le 2ch 44100Hz SUSPENDED
Den Bluetooth Speaker als default Audiosenke einstellen.
pi@raspberrypi:~ $ pactl set-default-sink 1
Einstellen der Audiolautstärke.
pi@raspberrypi:~ $ pactl set-sink-volume 1 20%
Audioausgabe
Mit dem Tool wget zuerst eine Beispiel Datei von der Seite The Hitchhiker's Guide to the Galaxy herrunterladen. Diese kann danach mit paplay abgespielt werden. Wenn alles klappt, sollte die Tonausgabe via Bluetooth Lautsprecher erfolgen.
pi@raspberrypi:~ $ wget http://youness.net/wp-content/uploads/2016/08/h2g2.ogg
pi@raspberrypi:~ $ paplay h2g2.ogg
Neustart
Die mit bluetoohctl hergestellte Verbindung ist nicht persistent, d.h. diese wird beim Neustart nicht automatisch wieder hergestellt. Um bei einem Neustart z.b. per Skript eine Verbindung zu einem bekannten Bluetooth Lautsprecher aufzubauen, kann folgendes Kommando verwendet werden.
pi@raspberrypi:~ $ echo -e "connect 10:B7:F6:18:B6:39\nquit" | bluetoothctl
[NEW] Controller B8:27:EB:6C:2A:67 raspberrypi [default]
[NEW] Device 10:B7:F6:18:B6:39 xqB20
[bluetooth]# connect 10:B7:F6:18:B6:39
Attempting to connect to 10:B7:F6:18:B6:39
[bluetooth]# quit
[DEL] Controller B8:27:EB:6C:2A:67 raspberrypi [default]
Referenz
Diese Vorgehensweise basiert auf der Anleitung von der Seite: https://kofler.info