Mein RaspberryPi3 ist eingetroffen. Hehe, ich hatte ja erwähnt, das ich keinen habe und Android Things unbedingt ausprobieren möchte.
Aber bevor wir uns um Android Things kümmern, treibt mich ein anderes Problem um. Auf dem neuen BananaPi M2-Ultra habe ich ja mal versucht das Bluetooth zum Leben zu erwecken, nicht ganz einfach. Leider kann ich das nicht mehr reproduzieren, so das mein Artikel BPI-M2 Ultra - Bluetooth eigentlich für die Tonne ist. Vielleicht hilft er dem ein oder anderen trotzdem weiter.
Was liegt also näher, als das Ganze mal auf einem RaspberryPi3 nachzustellen um zu schauen ob das auf dieser Plattform etwas besser läuft. Immerhin bewegen wir uns hier auf einem Kernel 4.4.x. Zum Einsatz kommt RASPBIAN JESSIE LITE - Minimal image based on Debian Jessie.
Linux raspberrypi 4.4.34-v7+ #930 SMP Wed Nov 23 15:20:41 GMT 2016 armv7l GNU/Linux
Wir laden uns das Image herunter, schreiben es auf eine SD-Karte und dann erinnere ich mich an eine Änderung. Man hat aus Sicherheitsgründen den SSH-Dienst ausgeschaltet, dieser läßt sich aber relativ einfach aktivieren. SD-Karte in den RaspberryPi3 und einschalten. Dann einloggen mit:
- pi
- raspberry
Aufpassen, noch haben wir eine englische Tastatur! Y = Z
Dann wechseln wir ins Verzeichnis /boot . Dort erzeugen wir eine Datei mit dem Namen ssh z-B.:
nano ssh
Inhalt der Datei ist egal, ich habe folgendes hinterlegt damit man später noch weiß wofür.
# enable SSH
Bevor wir nun neustarten rufen wir noch schnell die
sudo raspi-config
auf. Dort stellen wir noch schnell ein paar grundsätzliche Dinge ein, wie das Filesystem auf die ganze SD-Karte auszuweiten usw. Ich möchte hier nicht weiter drauf eingehen, ich gehe davon aus das das Thema ausreichend bekannt ist.
Alternativ kann auch hier der SSH-Zugang aktiviert werden. Das Ganze beenden und den RaspberryPi3 erneut starten.
sudo reboot
Abwarten und dann mittels SSH mit dem RaspberryPi3 verbinden. Ich arbeite halt am liebsten von meinem Hauptrechner aus ;)
Gut, die Vorbereitungen sind erledigt. Was wollen wir machen? Auf dem RaspberryPi3 ist ein WLan/Bluetooth-Modul verbaut, ich meine das Gleiche wie auf dem BananaPi M2-Ultra. Dann schauen wir mal, ob das mit dem Raspbian besser funktioniert. Als erstes fällt beim Booten auf, das für Bluetooth schon alles installiert ist. Ein
bluetoothctl -a
ergibt folgende Ausgabe:
pi@raspberrypi:/etc $ bluetoothctl -a
[NEW] Controller B8:27:EB:E3:AC:A6 raspberrypi [default]
Agent registered
Also ran ans Verbinden. Mit
scan on
suchen wir mal das Smartphone. Ausgabe:
[bluetooth]# scan on
Discovery started
[CHG] Controller B8:27:EB:E3:AC:A6 Discovering: yes
[NEW] Device 54:60:09:B0:F2:83 54-60-09-B0-F2-83
[NEW] Device 5C:A8:6A:38:xx:xx Honor 8
Denkt daran in Eurem Smartphone die Sichtbarkeit einzuschalten!
Nun werden wir das Gerät pairen.
pair 5C:A8:6A:38:xx:xx
Ausgabe:
[bluetooth]# pair 5C:A8:6A:38:xx:xx
Attempting to pair with 5C:A8:6A:38:xx:xx
[CHG] Device 5C:A8:6A:38:xx:xx Connected: yes
Request confirmation
[agent] Confirm passkey 975451 (yes/no): yes
[CHG] Device 5C:A8:6A:38:xx:xx Modalias: bluetooth:v000Fp1200d1436
[CHG] Device 5C:A8:6A:38:xx:xx UUIDs:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
[CHG] Device 5C:A8:6A:38:xx:xx Paired: yes
Pairing successful
[CHG] Device 5C:A8:6A:38:xx:xx Connected: no
Danach müssen wir dem Gerät noch das Vertrauen ausprechen.
[bluetooth]# trust 5C:A8:6A:38:xx:xx
[CHG] Device 5C:A8:6A:38:xx:xx Trusted: yes
Changing 5C:A8:6A:38:xx:xx trust succeeded
Fertig! Damit ist das Smartphone mit dem RaspberryPi verbunden. Das muss man nur einmal machen, das wird entsprechend abgespeichert. Jetzt muss man das Gerät noch verbinden.
[bluetooth]# connect 5C:A8:6A:38:98:C3
Attempting to connect to 5C:A8:6A:38:98:C3
Failed to connect: org.bluez.Error.Failed
Oh, ein altbekannter Fehler :( Wer den Artikel BPI-M2 Ultra - Bluetooth aufmerksam gelesen hat, sollte nun wissen was kommt bzw. fehlt. Die Verbindung wird wegen einem fehlenden Protokoll abgelehnt, das liegt daran das was fehlt. Wenn man pulseaudio installiert kann man das Problem lösen.
sudo apt-get install pulseaudio pulseaudio-module-bluetooth pavucontrol
Und Kaffee trinken. Ich hoffe er hat geschmeckt? Es geht weiter..Ein erneuter connect wird immer noch keinen Erfolg haben, pulseaudio läuft noch nicht.
pi@raspberrypi:/etc $ pulseaudio --start
W: [pulseaudio] authkey.c: Failed to open cookie file '/home/pi/.config/pulse/cookie': Datei oder Verzeichnis nicht gefunden
W: [pulseaudio] authkey.c: Failed to load authorization key '/home/pi/.config/pulse/cookie': Datei oder Verzeichnis nicht gefunden
W: [pulseaudio] authkey.c: Failed to open cookie file '/home/pi/.pulse-cookie': Datei oder Verzeichnis nicht gefunden
W: [pulseaudio] authkey.c: Failed to load authorization key '/home/pi/.pulse-cookie': Datei oder Verzeichnis nicht gefunden
Das ist der Start von pulseaudio, beim erstenmal kommen diese Warnungen. Ich denke die kann man ignorieren. Nun bringt ein erneuter connect folgendes:
pi@raspberrypi:/etc $ bluetoothctl -a
[NEW] Controller B8:27:EB:E3:AC:A6 raspberrypi [default]
[NEW] Device 5C:A8:6A:38:xx:xx Honor 8
Agent registered
[bluetooth]# connect 5C:A8:6A:38:xx:xx
Attempting to connect to 5C:A8:6A:38:xx:xx
[CHG] Device 5C:A8:6A:38:xx:xx Connected: yes
Connection successful
Bingo. Headset in die Klinke und Musik an! Ergebnis: Nix, kommt nix raus :( Wieder mal googlen.... Und die Lösung ist relativ simpel. Mit dem amixer kann man das Ausgangsgeät setzen.
0=auto, 1=Analog/Kopfhörer, 2=hdmi
pi@raspberrypi:/etc $ sudo amixer cset numid=3 1
numid=3,iface=MIXER,name='PCM Playback Route'
; type=INTEGER,access=rw------,values=1,min=0,max=2,step=0
: values=1
Und erneut Musik an und Yeah! meine aktuelle Lieblingsscheibe läuft ;) Aber da zeichnet sich das nächste Problem ab, viel zu leise.... wieder googlen.......
Auch diesmal kommt der amixer zum Einsatz.
pi@raspberrypi:/etc $ amixer sset Master,0 100%
Simple mixer control 'Master',0
Capabilities: pvolume pswitch pswitch-joined
Playback channels: Front Left - Front Right
Limits: Playback 0 - 65536
Mono:
Front Left: Playback 65536 [100%] [on]
Front Right: Playback 65536 [100%] [on]
Und erneut Musik an! Danach musste ich einmal pulseaudio neustarten!
pulseaudio --start
Gut, endlich kommt da genug Dampf raus! Denkt bitte an Euer Gehör, meins ist schon was länger nicht mehr das Beste.
Wenn wir nun neustarten wird eine erneute Verbindung nicht funktionieren, weil pulseaudio nicht gestartet wird. Warnung! Das ist jetzt bestimmt nicht schön, funktioniert aber ;)
sudo nano /etc/rc.local
Inhalt:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
printf "My IP address is %s\n" "$_IP"
fi
# pulseaudio starten
pulseaudio -D
exit 0
Und dann ein Reboot
sudo reboot
Fertig ist das Küchenradio :) Zwei PC-Boxen dran anklemmen - fertig! Bedient wird alles bequem vom Smartphone, so wie man es heute gewohnt ist :)
Fazit:
Ein Riesenvorteil vom RaspberryPi ist die wirklich sehr gute Community, da läuft wenigstens fast alles auf Anhieb. Kein Rumgefummel usw. Einrichten, ein wenig konfigurieren und läuft. So soll das Ganze ja auch sein. Ein Kernel 4.4.34 ist wirklich fast aktuell, aktuell ist ein 4.4.39. Da kann man sehr gut mit leben ;)
P.S.: Ich bedanke mich bei allen, die in Foren Lösungen posten! So kommt man fast immer ans Ziel.