Schneller booten, Fehler beheben – die besten FAQs und Tweaks für Deine Phoniebox (Stand: April 21)
5 (4)

Deine Phoniebox ist fertig, darf aber noch schneller booten oder hier und da etwas „gepimpt“ werden, dann bist Du hier richtig. Außerdem bekomme ich häufig die selben Fragen in Kommentaren, per Mail oder auch im Forum gestellt. Daher versuche ich mit diesem Beitrag einige davon abzufangen…

Beim Abspielen mit dem HifiBerry MiniAmp kommt kein Ton…

Hierfür gibt es häufig zwei Hauptgründe:

  1. Die Datei gpio-buttons.py hat standardmäßig einige Ports in Beschlag genommen, die auch vom HifiBerry benötigt werden. Der HifiBerry benötigt folgende GPIOs + Stromversorung:

    – Pins 3V, 5V, GND
    – GPIO 18 (Pin 12)
    – GPIO 19 (Pin 35)
    – GPIO 20 (Pin 38)
    – GPIO 21 (Pin 40)

    Die GPIOs 19 (Volume down), 20 (Previos) und 21 (Next) sind allerdings vorbelegt und müssen angepasst werden. Daher bitte gut aufpassen welche GPIOs wie belegt sind und diese unbedingt in der gpio-buttons.py pflegen!

    Die Datei kann wird im Regelfall hier liegen:
    /home/pi/RPi-Jukebox-RFID/scripts/gpio-buttons.py
    Falls das Script zum installieren des Displays verwendet und die Datei aus dem Repository gezogen wurde, dann liegt die Konfiguration hier:
    /home/pi/oled_phoniebox/scripts/gpio-buttons/gpio-buttons.py
    Es reicht zwar den Dienst neu zu starten, aber tatsächlich teste ich es eher, indem ich die komplette Box reboote…
  2. Bei der Installation der Jukebox4Kids wird irgendwann nach einem iFace-Name gefragt. Diesen setze ich aus Gewohnheit auf Master, kann selbstverständlich auch was anderes sein. Die asound.conf ist dann allerdings auch zu pflegen. Dies ist auch hier beschrieben. Recht häufig wird die Installation in anderer Reihenfolge durchgeführt, so dass der HifiBerry nicht angesprochen wird.

    Dann ist die Datei
    /etc/mpd.conf
    zu editieren und der control.name aus der asound.conf als Audio_iFace_Name zu hinterlegen. Einmal die Box neu starten und der Sound ist hoffentlich da 😉

Shutdown-Sound mit OnOffShim

Um den Shutdownsound einzuarbeiten müsst Ihr etwas „dreckig“ am Code rumwurschteln. Dafür ist es notwendig die Datei /usr/bin/cleanshutd zu bearbeiten. Fügt nach

   if shutdown_trigger; then

folgendes ein (sollte bei Zeile 85 sein):

          /usr/bin/mpg123 /home/pi/RPi-Jukebox-RFID/shared/shutdownsound.mp3

Wer sich nicht ran traut und einen fertigen Befehl sucht:

sudo sed -i '/        if shutdown_trigger; then/a \            /home/pi/RPi-Jukebox-RFID/scripts/./resume_play.sh -c=savepos && mpc clear\n            /usr/bin/mpg123 /home/pi/RPi-Jukebox-RFID/shared/shutdownsound.mp3' /usr/bin/cleanshutd

Danach noch den Service neu starten und es funktioniert:

sudo service cleanshutd restart

Hier funktioniert natürlich auch jede andere MP3. Ich persönlich finde folgende Sounds gut:

Start-Sound Quelle: success 1 by Leszek_Szary
Shutdown-Sound Quelle: game over by Leszek_Szary

Musikdatenbank aktualisieren

Immer wieder gibt es Probleme mit der lokalen Musikdatenbank. Problem ist hier, dass kopierte Musik auf die Phoniebox zwar in der Weboberfläche angezeigt wird, aber nicht automatisch „verfügbar“ und „abspielbar“ ist.

Hierfür habe ich zwei Lösungswege:

Aktualisierung über die Web-Oberfläche

Öffne die Weboberfläche der Phoniebox. Unter dem Reiter Files & Folders gibt es eine unscheinbare Schaltfläche „Scan Music Libary“. Durch einen simplen Klick wird lokal nach Musik gescannt. Das kann dann auch mal ein paar Sekunden dauern. Beachte, dass bei laufendem Scan kann keine Musik abgespielt werden!

Aktualisierung per Shell

sudo service mpd restart
sudo mpc update

Auto-Idle-Shutdown mit OnOffShim: Phoniebox lässt sich nicht einschalten

Diverse Anwender haben über Probleme berichtet, dass nach dem Idle-Shutdown die Box nicht mehr über den OnOffShim + Powerbank eingeschaltet werden kann. Hintergrund ist, dass es verschiedene Arten gibt die Box auszuschalten. Bei Poweroff wird wohl dem System das Ausschalten per ACPI befohlen, also auch das „Auschalten der Stromversorgung“ um es leichter verständlich zu machen. Dagegen werden bei Halt alle Dienste beendet und die Maschine müsste „manuell“ ausgeschaltet werden. Das übernimmt hier der OnOffShim.

Im Endeffekt hatte ich keine Probleme beim Shutdown mit dem Befehel:

sudo shutdown -h 0

Dieser kann einfach in der Datei /home/pi/RPi-Jukebox-RFID/scripts/playout_controls.sh gegen poweroff ausgetauscht werden:

sed -i -e 's/sudo poweroff/sudo shutdown -h 0/g' /home/pi/RPi-Jukebox-RFID/scripts/playout_controls.sh

Speed Up: So startet die Box noch schneller

Das Thema hab ich ewig vor mich her geschoben, aber dank dieses Forenbeitrages vom User bCid ist Schwung ins Thema gekommen. Ich konnte meine Box damit 7 Sekunden schneller booten! Folgende Möglichkeiten bestehen die Box schneller zu booten:

Tweaks in der config.txt

Die folgenden beiden Werte sind teils selbsterklärend:

# Disables loading Bluetooth
dtoverlay=disable-bt
# Boot Delay Time
boot_delay=0
# avoid_warnings=2 disables the warning overlays, but additionally allows turbo mode even when low-voltage is present; avoid_warnings=1 disables the warning overlays
avoid_warnings=2
# the rainbow splash screen will not be shown on boot
disable_splash=1
# Initial Turbo in seconds; max. 60 seconds
initial_turbo=20

Die ersten beiden Parameter sind einmal ein delay, also eine Wartezeit beim booten, die auf 0 gestellt wird, und mit pi3-disable-bt wird Bluetooth nicht gestartet bzw. geladen.

Die Parameter avoid_warnings und initial_turbo sind mit Vorsicht zu genießen. Vor avoid_warnings möchte ich auch ausdrücklich warnen, damit hab ich schon Bootloops hervorgerufen, auch wenn damit ein subjektiv spürbarer Zeitgewinn möglich ist. Das Abschalten lief dann leider ebenso suboptimal. Die Zeiten für initial_turbo könnt Ihr bis 60 Sekunden hoch schrauben, tastet Euch mal ran, Zuviel des Guten macht auch keinen Sinn!

Das hinzufügen geht mittels dieses Befehls:

sudo sh -c "  cat >> /boot/config.txt << EOF
# Disables loading Bluetooth
dtoverlay=disable-bt
# Boot Delay Time
boot_delay=0
# avoid_warnings=2 disables the warning overlays, but additionally allows turbo mode even when low-voltage is present; avoid_warnings=1 disables the warning overlays
avoid_warnings=2
# the rainbow splash screen will not be shown on boot
disable_splash=1
# Initial Turbo in seconds; max. 60 seconds
initial_turbo=20
EOF"

Deaktvieren von Exim4 (1,4 Sekunden)

Hierbei handelt es sich um einen MTA (Message Transfer Agend) Dienst, der für Euch nur dann Sinn macht, wenn ihr auch Mails über den Server versendet, falls nicht, kann der Service entfernt werden…

sudo update-rc.d exim4 remove

Anpassungen im dhcp-Client-Dienst (0,82 Sekunden)

Der DHCP-Client-Dienst ist für das Aushandeln einer IP-Adresse für den Client, in unserem Fall der Raspberry, notwendig. Aber es gibt nun verschiedene Netzwerk-Konstellationen. Ein großer Geschwindigkeitszuwachs wird erzielt, wenn noarp aktiviert ist. ARP im Zusammenhang mit dem DHCP-Client-Dienst prüft im lokalen Netz, ob die IP schon vergeben ist. In Heimnetzwerken kann man das im Regelfall vernachlässigen:

sudo sh -c "  cat >> /etc/dhcpcd.conf << EOF
noarp
ipv4only
EOF"

Vergabe einer fest eingestellten IP-Adresse (1,5 Sekunden)

Noch ein wenig Zeit gewinnt man, wenn die IP fest vergeben wird. Vorher solltet Ihr mal in Eurem Router / DHCP-Server schauen, welcher Adressbereich dynamisch vergeben wird und Euch eine IP raus picken, die möglichst nicht vergeben oder anderweitig belegt wird. Mit dem Befehl ifconfig (ifconfig wlan0) findet Ihr das Standardgateway raus (im Regelfall die IP des Routers):

ifconfig wlan0

Das Standardgateway bekommt Ihr über folgenden Befehl raus (das Feld Router in der Zeile von wlan0 im Regelfall:

route -ne

Prüft bitte auch die DNS-Server mit folgendendem Befehl:

cat /etc/resolv.conf

Jetzt geht es ans eingemacht, die Datei /etc/dhcpcd.conf muss editiert werden. Folgender Abschnitt muss dort ergänzt werden (Eingaben sind Beispielwerte):

interface wlan0
static ip_address=192.168.1.99/24
static routers=192.168.1.1
static domain_name_servers=192.168.2.1 8.8.8.8

Übrigens ist 8.8.8.8 ein DNS-Server im Internet, dieser kann, muss aber nicht verwendet werden. Natürlich hab ich wieder was für die Shell für Euch:

sudo sh -c "  cat >> /etc/dhcpcd.conf << EOF
interface wlan0
static ip_address=192.168.0.123/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1 8.8.8.8

noarp
ipv4only
EOF"

Eine Sache ist nun zwingend zu beachten: solltet Ihr zusätzlich zum OnBoard Wlan einen USB WLAN-Adapter im Einsatz haben, sollte man festlegen, dass das OnBoard-WLAN immer als wlan1 geladen oder deaktviert wird. Bevorzugt würde ich dann das OnBoard Wifi deaktivieren, dies geht mit fogendem Eintrag in der config.txt:

dtoverlay=disable-wifi

Folgende Befehle helfen Euch dabei Onboard Wifi als wlan1 zu laden, werden die wenigsten von Euch benötigen (nur durchführen, wenn Ihr wisst, wofür Ihr das braucht…):

if [ -f /etc/systemd/network/99-default.link ]; then
    echo "File already exist, nothing to do!"
else
    sudo ln -nfs /dev/null /etc/systemd/network/99-default.link
    echo "Linked File  /etc/systemd/network/99-default.link  created"
fi
sudo sh -c "echo 'ACTION==\"add\", SUBSYSTEM==\"net\", DRIVERS==\"brcmfmac\", NAME=\"wlan1\"' > /etc/udev/rules.d/72-wlan-geo-dependent.rules"

IPv6 deaktivieren (0,28 Sekunden)

Im Regelfall brauchen Eure Boxen kein IPv6, zumindest noch nicht… Daher könnt Ihr IPv6 mit folgenden Befehlen komplett deaktivieren:

sudo sh -c "echo 'options ipv6 disable=1' >> /etc/modprobe.d/ipv6.conf"
sudo sh -c "echo 'net.ipv6.conf.all.disable_ipv6 = 1' >> /etc/sysctl.conf"
sudo sh -c "echo 'noipv6' >> /etc/dhcpcd.conf"
#sudo sh -c "echo -n ' ipv6.disable=1' >> /boot/cmdline.txt"
sudo sysctl -p

Deaktivieren von weiteren „unnötigen“ Diensten

Folgend werden mehrere Dienste deaktiviert, vorab der Kommentar, worum es sich bei dem Dienst handelt:

# Der Dienst ist notwendig, wenn lokal eine Tastatur angeschlossen ist, sonst kann er deaktiviert werden
sudo systemctl disable keyboard-setup.service

# Der Dienst prüft, ob die WLAN-Ländereinstellungen gesetzt sind...
sudo systemctl disable wifi-country.service

# Damit kann man Tasten einer Tastatur Befehle zuordnen
sudo systemctl disable triggerhappy.service 

# Deaktiviert das SWAP-File
sudo systemctl disable dphys-swapfile.service

# Deaktiviert den Bluetooth Dienst
sudo systemctl disable hciuart.service

# Da ich die rc-local nicht verwende, deaktiviere ich sie. Damit kann man in verschiedenen Runleveln Scripte automatisch starten lassen
sudo systemctl mask rc-local
sudo chmod a-x /lib/systemd/system-generators/systemd-rc-local-generator

# Raspi-config benötigt man idR nur bei der Einrichtung. Sollte man es später benötigen, kann auch wieder alles aktiviert werden mit diesem Befehl: `sudo raspi-config`
sudo systemctl disable raspi-config.service

# Deaktiviert den Avahi Dienst, welcher zur vereinfachten Netzwerkfreigabe von Diensten gedacht ist
sudo systemctl disable avahi-daemon.service

sudo systemctl disable sys-kernel-debug.mount
sudo systemctl disable systemd-udev-trigger.service
sudo systemctl disable rpi-eeprom-update.service
sudo systemctl disable rsyslog.service
sudo systemctl disable systemd-journald.service
sudo systemctl disable systemd-fsck-root.service
sudo update-rc.d exim4 remove

# Wenn die Zeit nicht synchron läuft, können ggf. Pakete nicht geupdatet und und auf Spotify nicht zugegriffen werden - daher folgenden Punkt nur deaktivieren, wenn man weiß was man tut!
# sudo systemctl disable systemd-timesyncd.service

sudo chmod a-x /lib/systemd/system-generators/systemd-rc-local-generator
sudo chmod a-x /lib/systemd/system-generators/systemd-cryptsetup-generator
sudo chmod a-x /lib/systemd/system-generators/systemd-debug-generator
sudo chmod a-x /lib/systemd/system-generators/systemd-bless-boot-generator
sudo chmod a-x /lib/systemd/system-generators/systemd-hibernate-resume-generator
sudo chmod a-x /lib/systemd/system-generators/systemd-run-generator
sudo chmod a-x /lib/systemd/system-generators/systemd-system-update-generator
sudo chmod a-x /lib/systemd/system-generators/systemd-veritysetup-generator

MPD Service eher laden

Diese Option funktioniert nur, wenn Spotify nicht installiert ist!!! Passe dafür die Datei /etc/systemd/system/multi-user.target.wants/mpd.service ab Zeile 5 wie folgt an:

#After=network.target sound.target
After=sound.target

Danach noch folgenden Befehl ausführen und die Box mit reboot neu starten:

sudo systemctl daemon-reload
sudo reboot

SD Karten Speed ausnutzen (0,5 Sekunden)

Unter der Vorraussetzung, dass Ihr eine gute SD Karte habt die UHS-I U3 fähig ist, könnt Ihr die Geschwindigkeit auch auskosten, in dem die config.txt folgende Zeile hinzugefügt bekommt:

dtoverlay=sdtweak,overclock_50=100

Bitte seid Euch sicher, dass die SD Karte wirklich die Geschwindigkeit abkann, ansonsten war es das u.U. mit Eurer Installation! Ich empfehle diese SD: Samsung EVO 64GB microSDXC UHS-I U3

Für diejenigen, die einfach nur den Befehl ausführen wollen zum einfügen:

sudo sh -c "echo 'dtoverlay=sdtweak,overclock_50=100' >> /boot/config.txt"

Wartezeit für Netzwerkboot deaktivieren (0,2 Sekunden)

Es geht nur um Millisekunden, aber auch diese lassen sich sparen, wenn man das Warten auf das Netzwerk deaktiviert.

sudo rm /etc/systemd/system/dhcpcd.service.d/wait.conf

Schneller SSH-Client (2 Sekunden)

Wir befinden uns nun bei den letzten Millisekunden, die man raus kitzeln kann! Dropbear ist ein sehr schlanker SSH Client. Hier ein kleines Script, um Dropbear komplett zu installieren und OpenSSH zu deinstallieren:

sudo apt -y install dropbear
sudo sed -i 's/NO_START=1/NO_START=0/g' /etc/default/dropbear
sudo systemctl enable dropbear && sudo service ssh stop && sudo service dropbear start && sudo apt-get -y remove openssh-server && sudo apt -y autoremove && sudo reboot

Langsamer Start der Spotify Edition

Vorab: die Box arbeitet so, wie sie vor konfiguriert ist! Bei der Spotify Edition kommt die OpenSource Software Mopidy zum Einsatz, die auch einen eigenen MPD (Music Player Daemon) installiert. Der Service verbindet sich logischerweise mit Spotify und hier kommt es je nach Konfiguration zu Wartezeiten. Hier ein paar Kniffe, welche der Box beim booten zu mehr Speed verhelfen können!

Vorladen der Wiedergabelisten verhindern

Du kannst die Konfiguration des Mopidy-Dienstes in der Datei /etc/mopidy/mopidy.conf anpassen. Ich nutze dazu den Editor vi, nano ist ebenso beliebt. Der Dienst hat eine Option standartmäßig aktiviert, welche die Bootzeit der Box stark beeinflusst. Mit dem Parameter allow_playlists wird online jede einzelne vorhandene Playliste abgefragt. Nach meiner Recherche bedeutet das je Playlist min ca. 4 Sekunden Wartezeit, die beim booten dazu addiert werden! Die Option kann bedenkenlos deaktiviert werden, da Playlists trotzdem mit der Phoniebox oder dem IRIS Player verfügbar sind. Hier wieder ein Codeschnipsel, der alles für Dich erledigt:

sudo ed /etc/mopidy/mopidy.conf <<EOF
/#allow_playlists = true/a
allow_playlists = false
.
wq
EOF
sudo service mopidy restart

Weitere Infos zur Mopidy-Spotify Konfiguration findest Du hier: https://pypi.org/project/Mopidy-Spotify/

Bewerte diesen Beitrag
[Total: 4 Durchschnitt: 5]

Abonnieren
Benachrichtige mich bei
Deine Daten werden nicht an Dritte weitergegeben und auf deutschen Servern verarbeitet. Hiermit stimmst Du zu, dass Deine IP-Adresse für maximal 48h gespeichert wird. Außerdem stimmst Du der Speicherung und Veroffentlichung Deines Namens, Deiner Mailadresse, falls vorhanden Deiner Webseite und Deines Kommentares zu.
38 Kommentare
Neueste
Älteste Best bewertet
Inline Feedbacks
Zeige alle Kommentare
Nach oben scrollen