Raspberry Pi, Hifiberry und Pi Musicbox

Als neuer Audioplayer habe ich mir kürzlich ein Raspberry Pi B+ mit Hifiberry Digi+ und als Software Pi Musicbox gebastelt. Angeschlossen habe ich das ganze via SPDIF.
Am Anfang war ich frustriert, weil kein Sound zu hören war. Nach einiger Zeit Basteln und Recherchen habe ich einen Workaround gefunden: https://www.hifiberry.com/forums/topic/digi-and-pimusicbox-sync-error/
Im Script /opt/musicbox/setsound.sh muss die Identifikation für die Hifiberry Digi+ angepasst werden:

elif [[ ${dev[1]} == "snd-rpi-hifiberry-digi" ]]; then

ändern in

elif [[ ${dev[1]} == "snd-hifiberry-digi" ]]; then

danach rebooten und prüfen ob der richtige Ausgang gewählt wird:

aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
  Subdevices: 8/8
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
  Subdevice #7: subdevice #7
card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: sndrpihifiberry [snd_rpi_hifiberry_digi], device 0: HifiBerry Digi HiFi wm8804-spdif-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0

bei mir ist die hifiberry die card 1, dies muss mit der Einstellung in /etc/asound.conf übereinstimmen

cat /etc/asound.conf
pcm.!default {
    type hw
    card 1
}
ctl.!default {
    type hw
    card 1
}

 
 

Raspberry Pi Edimax Wifi Adapter einrichten

Der Edimax war einer der ersten verfügbaren Wifi Adapter für die Raspberry Pi. Das Einrichten ist relativ einfach für einigermassen versierte Linux User. Bei Distributionen wie z.B OpenElec 4.0 kann der Wifi Adapter auch direkt in XBMC konfiguriert werden.
Beim konfigurieren unter Raspbian habe ich bemerkt, dass wenn länger keine Aktivität auf dem Adapter stattfindet, dieser in einen Sleep Mode ähnlichen Zuständ fällt und ich ihn nicht mehr wecken konnte. Weiter unten wird beschrieben wie dieser Zustand verhindert werden kann.
raspberry_pi_edimax

Installation Edimax USB Wifi Adapter

Der USB Adapter muss eingesteckt sein. Wird er im laufenden Betrieb eingesteckt startet die Raspberry Pi neu.

OS Update

sudo apt-get update
sudo apt-get upgrade

Dies kann unter Umständen eine Weile dauern

Das Interface konfigurieren

sudo nano /etc/network/interfaces

Die Grundkonfiguration sollte folgendermassen aussehen:

auto lo
auto wlan0
iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

Diese Konfiguration setzt die IP Adresse via DHCP Server.
Möchte man eine fixe IP setzten muss die Konfiguration wie folgt abgeändert werden:
Address, Netmask und Gateway den eigenen Ansprüchen entsprechend anpassen

auto lo
iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug wlan0
iface wlan0 inet manual
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf

WPA Konfiguration 1

In der Datei /etc/network/interfaces folgende Ergänzungen machen

iface wlan0 inet dhcp
        wpa-ssid "ssid"
        wpa-psk "password"

WPA Konfiguration 2

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

SSID und PSK mit den eigenen Angaben ersetzten

network={
ssid="SSID-HIER-EINSETZEN"
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP
psk="WIFI-PASSWORT-HIER-EINSETZTEN"
}

“Sleep” Mode verhindern

sudo nano /etc/modprobe.d/8192cu.conf

Folgende Zeilen hinzufügen

# Disable power management
options 8192cu rtw_power_mgnt=0 rtw_enusbss=0

Neustart

Die Konfiguration ist abgeschlossen, nun die Raspberry Pi neustarten.
 

Das low Budget DIY Media Center Teil 2

Customizing

Zentrale XBMC Library

Achtung: Dieses Feature ist als kompliziert und experimental aufgeführt.
Alle XBMC Instanzen die auf die zentrale Library zugreifen müssen dieselbe Version von XBMC haben!

Da ich mehrere Raspberry Pi’s mit XBMC im Haus habe möchte ich die Library an einem zentralen Ort speichern, damit ich sie nur an einem Ort aktuell halten muss und die “watched” Status überall zur Verfügung habe. Ebenso wird die aktuelle Position in einem Film gespeichert (wenn er beendet wird) und kann dann in einem anderen Zimmer an der Stelle fortgesetzt werden.
Die Lösung dafür heisst: MySQL
Da ich sowiso sämtliche Medien von meinem NAS streame und dieses ohnehin 24/7 online ist war es naheliegend MySQL darauf zu installieren und die XBMC Library zu hosten. Für die XBMC Konfiguration bedeutet das lediglich ein kleiner Eingriff.
Im File (muss von Hand erstellt werden falls noch nicht vorhanden):

nano ~/.xbmc/userdata/advancedsettings.xml

muss foldendes ergänzt werden (wenn das File bereits existiert nur den Text von <videodatabase> bis </videolibrary> kopieren), bei den Tags <host> muss die IP Adresse des MySQL Servers eingetragen werden:

<advancedsettings>
    <videodatabase>
        <type>mysql</type>
        <host>***.***.***.***</host>
        <port>3306</port>
        <user>xbmc</user>
        <pass>xbmc</pass>
    </videodatabase>
    <musicdatabase>
        <type>mysql</type>
        <host>***.***.***.***</host>
        <port>3306</port>
        <user>xbmc</user>
        <pass>xbmc</pass>
    </musicdatabase>
     <videolibrary>
          <importwatchedstate>true</importwatchedstate>
     </videolibrary>
</advancedsettings>

Der vollständige XBMC Artikel dazu ist hier

Der Infrarot Empfänger

Als Infrarot Empfänger dient mir eine einfach TSOP4838 Diode, welche an den GPIO Pins des Raspberry angeschlossen werden. Für die Verbindung habe ich aus einem alten Computer das Speaker Kabel, welches vom Mainboard zum Gehäuse führt genommen.
tsop4838_wiring]20130611-185242.jpg

Harmony Konfiguration

Als Fernbedienung verwende ich eine Logitech Harmony One+. Diese ist etwas komplizierter zum konfigurieren als eine herkömmliche RC6 Infrarot Fernbedienung. Die wichtigesten Punkte:

  • XBMC als Microsoft Media Center SE einrichten
  • Device Delay Settings für XBMC gemäss Screenshot einstellen
  • Device Command Repeat für XBMC gemäss Screenshot einstellen

XBMC Device Typ
harmony_deviceTyp
Device Delay Settings
harmony_devicedelay
Device Command Repeat Settings
harmony_deviceCMDrepeat

Die Lirc Konfiguration

# Please make this file available to others
# by sending it to <lirc@bartelmus.de>
#
# this config file was automatically generated
# using lirc-0.9.0-pre1(default) on Thu Jun  6 17:16:50 2013
#
# contributed by
#
# brand:                       HarmonyOne.conf
# model no. of remote control:
# devices being controlled by this remote:
#
begin remote
  name  HarmonyOne.conf
  bits           13
  flags RC6|CONST_LENGTH
  eps            30
  aeps          100
  header       2665   860
  one           472   414
  zero          472   414
  pre_data_bits   24
  pre_data       0x1BFF83
  gap          105899
  min_repeat      2
#  suppress_repeat 2
#  uncomment to suppress unwanted repeats
  toggle_bit_mask 0x8000
  rc6_mask    0x100000000
      begin codes
          KEY_UP                   0x1BE1
          KEY_LEFT                 0x1BDF
          KEY_DOWN                 0x1BE0
          KEY_RIGHT                0x1BDE
          KEY_OK                   0x1BDD
          KEY_BACK                 0x1BDC
          KEY_PAUSE                0x1BE9
          KEY_STOP                 0x1BE6
          KEY_PLAY                 0x1BE9
          KEY_FASTFORWARD          0x1BEB
      end codes
end remote

Das low Budget DIY Media Center Teil 1

Die Idee XBMC als Media Center auf meinem TV zu verwenden geisterte schon lange in meinem Kopf herum. Was sollte aber als Hardware dienen? Ich hatte diverse Ansprüche wie: lüfterloser Betrieb, kleine Bauform, geringer Stromverbrauch, Infrarot bedienbar, TOSLINK Out etc.
Den Toslink Out benötige ich um Musik von iOS Devices via Media Center auf mein Sound System zu streamen ohne dabei immer den TV anschalten zu müssen.
[column-group]
[column]Nach unzähligen Stunden Testen und Konfigurieren der ATV2 und Dlink BoxeeBox wurde ich per Zufall auf die Raspberry Pi aufmerksam. Das kleine kreditkartengrosse Wunderding ist mit einem 700Mhz ARM11 CPU und 512 MB Ram (Model B Revision2) ausgestattet und lässt sich mit Linux betreiben.

]RaspberryPi
Dank des heute 19 Jährigen Sam Nazarko aus London der das Media Center XBMC für die Raspberry Pi portiert hatte (Raspbmc) war für mich die Wahl der Hardware klar, vom fehlenden Toslink abgesehen.
Nun die Schritt für Schritt Anleitung zum Media Center:

Equipement:

Installation:

Kühlkörper montieren

Da die Kühlkörper mit einer selbstklebenden Wärmeleitpaste ausgestattet sind ist es relativ einfach diese zu montieren. Einfach die Schutzfolie von der Paste abziehen und den Kühlkörper gut auf das entsprechende Element andrücken.
Raspi_Heatsinks

Raspbmc installieren

SD Card in einen Kartenleser stecken und den entsprechenden Installer ausführen:
Windows
Gemäss Anleitung hier
Linux

wget http://svn.stmlabs.com/svn/raspbmc/testing/installers/python/install.py
chmod +x install.py
./install.py

Mac OS

curl -O http://svn.stmlabs.com/svn/raspbmc/testing/installers/python/install.py
chmod +x install.py
./install.py

Danach die SD Card in die Raspberry Pi stecken und die Installation fertig laufen lassen.
Weiter zu Teil 2 ->