====== MP3 Player ====== Gleich vorweg: Ich hatte mir das Alles einfacher vorgestellt. Es gab hier und da so richtig Probleme, sei es mit dem Treiber für das Display, oder mit dem Einrichten von **alsa** mit **mpd**. Aber am Ende hat dann doch nach drei Tagen **man**-Pages lesen und Dr. Google das Gerät widerspenstig seinen Dienst aufgenommen. {{ :raspberry:mp3_player_01.jpg?400 |}} **Die Anmerkungen in diesen Boxen sind unbedingt zu beachten!** ===== Zutaten ===== |Raspberry 3A+ oder 3B+ (Habe es mit beiden probiert)| |TRU COMPONENTS Touchscreen-Monitor 8.9 cm (3.5 Zoll) 320 x 480 Pixel \\ https://www.conrad.de/de/p/tru-components-touchscreen-monitor-8-9-cm-3-5-zoll-320-x-480-pixel-2144982.html \\ Nach dem Auspacken war es dann ein MAKEVMP400 \\ {{:raspberry:display_01.jpg?200|}} | |OS: Raspbian (Release: 2020-05-27) :!: KEINE UPDATES MACHEN :!: Mit dem 5.x Kernen geht das Display aktuell nicht| |USB-Stick mit MP3s (Let's Rock!)| ===== Programme und Treiber ===== * vim * matchbox-keyboard * screen * Display-Treiber => https://github.com/goodtft/LCD-show * alsa-utils * jq * ffmpeg * sxiv * Kunst => https://github.com/sdushantha/kunst * mpd * mpc * RaspiPlayer => https://github.com/granpino/RaspiPlayer ===== Installation ===== ==== Raspbian ==== Noobs V3.4 mit Raspbian \\ Da ich von Grunde auf **FAUL** bin, habe ich mir NOOBS mit Raspbian runtergeladen und auf die SD-Card geschoben und die Installation damit ausgeführt. \\ Die Installation durch Noobs wird hier nicht beschrieben. Versionsinformationen: root@raspberrypi:~# cat /etc/os-release PRETTY_NAME="Raspbian GNU/Linux 10 (buster)" NAME="Raspbian GNU/Linux" VERSION_ID="10" VERSION="10 (buster)" VERSION_CODENAME=buster ID=raspbian ID_LIKE=debian HOME_URL="http://www.raspbian.org/" SUPPORT_URL="http://www.raspbian.org/RaspbianForums" BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs" root@raspberrypi:~# cat /etc/issue Raspbian GNU/Linux 10 root@raspberrypi:~# uname -a Linux raspberrypi 4.19.118-v7+ #1311 SMP Mon Apr 27 14:21:24 BST 2020 armv7l GNU/Linux root@raspberrypi:~# Bei der Installation bitte Default auf **Englisch => en_gb UTF8** stehen lassen. Der Grund: \\ Die interne Soundkarte wird nicht erkannt! \\ Das kann man hier auch nachlesen: https://www.raspberrypi.org/forums/viewtopic.php?t=275400 **Nach der Installtion auf keinen Fall ein Update machen! Grund: \\ Das Display wird mit dem neuen Kernl 5.x nicht mehr funktionieren.** ==== Tools und Anpassung ==== Aktiviert SSH => ''raspi-config'' => auf dem kleinen Display kann man nachträglich nicht wirklich arbeiten Audio aktivieren => in der ''/boot/config.txt'' => ''dtparam=audio=on'' anmachen. Damit man mit dem Touch-Display besser arbeiten kann, sollte man auch den Single-Click aktivieren. \\ En: => ''Accessories'' => ''File Manager'' => ''Edit'' => ''Preference'' => ''Open Files with One Click'' \\ De: => ''Zubehör'' => ''Dateinamanger'' => ''Edit'' => ''Preference'' => ''Open Files with One Click'' ''vim'' installieren, damit man auf der Shell ordentlich mit ''vi'' arbeiten kann (Ich nehme kein ''nano'') root@raspberrypi:~# apt-get install vim ... ... Die Konfiguration von ''vim'' anpassen - kommentiert diese beien Zeilen ein. root@raspberrypi:~# vi /etc/vim/vimrc ... syntax on set background=dark ... Und weil mir der Maus-Support tierisch auf den Sack geht, hier noch schnell den Mist abschalten! root@raspberrypi:~# vi ~/.vimrc set mouse= Und was fehlt nun noch, mein lieblings-Alias ''l'' => aka ''ls -ali %%--%%color'' root@raspberrypi:~# vi /root/.bashrc ... export LS_OPTIONS='--color=auto' ... alias l='ls $LS_OPTIONS -ali' Und noch schnell aktivieren. Ja, da ist ein Leerzeichen nach dem Punkt. root@raspberrypi:~# . /root/.bashrc Und ein absolutes muss, wenn man mal schnell die Logs neben Start/Stop-Dienst angucken will => ''screen'' root@raspberrypi:~# apt-get install screen ==== Rechtsklick ==== Die drei Zeilen in die Konfiguration einfügen... in die vorhandene Sektion. root@raspberrypi:~# vi /etc/X11/xorg.conf.d/99-calibration.conf Option "EmulateThirdButton" "1" Option "EmulateThirdButtonTimeout" "750" Option "EmulateThirdButtonMoveThreshold" "30" ==== Virtuelle Tastatur ==== Damit man dann auch auf dem Display schreiben kann, habe ich mich für ''matchbox-keyboard'' entschieden. root@raspberrypi:~# apt-get install matchbox-keyboard Und weil bei der Tastatur die ''F1 - F12''-Tasten fehlen, diese noch schnell in der Konfiguration einfügen. Sucht in der Konfigurationsdatei das erste Tag ''%%%%'' und fügt dort die folgenden Zeilen davor ein. root@raspberrypi:~# vi /usr/share/matchbox-keyboard/keyboard.xml ... //Ab hier die Zeilen kopieren und.. Und nun noch die Tastatur autom. bei jedem Start mit starten. \\ Legt dazu die Datei ''~/.config/autostart/matchbox-keyboard.desktop'' an und fügt den unten aufgeführten Inhalt ein. \\ Achtung: Dies muss als Benutzer **pi** ausgeführt werden. pi@raspberrypi:~ $ mkdir ~/.config/autostart pi@raspberrypi:~ $ vi ~/.config/autostart/matchbox-keyboard.desktop [Desktop Entry] Name=Matchbox-keyboard Exec=matchbox-keyboard Type=application Hier ein Tastaturlayout mit allen Tasten. Diese könnt Ihr natürlich auch herunter laden und die ''/usr/share/matchbox-keyboard/keyboard.xml'' damit ersetzen. https://github.com/xlab/matchbox-keyboard/blob/matchbox-keyboard-xlab/layouts/keyboard-full.xml ===== Das Display anmachen ===== Der Treiber, den es auf der Conrad-Seite gibt, gleich mal sein lassen. Nach der Installation dieses Treibers endet das Booten in einer **Kernel-Panic**. \\ Benutzt den aktuellen Treiber von der Github-Seite: https://github.com/goodtft/LCD-show \\ * Schalten den RasPi aus * Steckt das Display auf den GPIO-Header * Schaltet den Raspi wieder ein und führt dann die Installation aus \\ root@raspberrypi:~# git clone https://github.com/goodtft/LCD-show.git ... root@raspberrypi:~# chmod -R 755 LCD-show root@raspberrypi:~# cd LCD-show/ root@raspberrypi:~/LCD-show# ./LCD35-show Der RasPi wird nun neu gestartet und Ihr solltet nun den Desktop auf dem 3.5 Zoll Display sehen. Wenn Ihr die Ausgabe wieder über HDMI haben wollt, gibt es zwei Wege. Ich bevorzuge aber den, das Backup wieder herzustellen, welches bei der Installation angelegt wurde. ==== Ausgabe umschalten ==== root@raspberrypi:~# cd LCD-show/ root@raspberrypi:~/LCD-show# ./system_restore.sh Der RasPi wird wieder neu gestartet und die Ausgabe erfolgt nun wieder über HDMI. \\ Wenn nun wieder auf dem 3.5 Zoll Display ausgegeben werden soll, einfach die Installation mit: root@raspberrypi:~# cd LCD-show/ root@raspberrypi:~/LCD-show# ./LCD35-show ausführen. ===== Der Player ===== Als erstes die folgenden Programme installiert werden. root@raspberrypi:~# apt-get install jq ffmpeg sxiv mpd mpc alsa-utils ... ... Nun noch schnell Kunst installieren, um Informationen für Alben/Interpreten herunterzuladen, darzustellen. ( https://github.com/sdushantha/kunst ) root@raspberrypi:~# git clone https://github.com/sdushantha/kunst root@raspberrypi:~/kunst# cd kunst root@raspberrypi:~/kunst# make install Und nun noch die Player-GUI installieren. root@raspberrypi:~# git clone https://github.com/granpino/RaspiPlayer.git root@raspberrypi:~# cd RaspiPlayer root@raspberrypi:~/RaspiPlayer# chmod +x *.sh root@raspberrypi:~/RaspiPlayer# ./install.sh Die **RaspiPlayer**-Installation überschreibt die ''/etc/mpd.conf''. Diese muss dann wieder angepasst werden, damit ''mpd'' den USB-Stick findet oder auch die Soundeinstellungen wieder stimmen (wie bei mir). \\ Bei der Installation des Players wird ein Icon zum Starten auf dem Desktop angelegt. Über dieses Icon kann die GUI gestartet werden. Ihr müsst den Player über die grafische Shell starten! \\ {{:raspberry:mp3_player_02_start.jpg?200|}} Damit der Player seinen Dienst tut, muss **mpd** noch konfiguriert werden. ===== mpd - mpc ===== Ich musste bei mir die Einstellungen von ''mpd'' anpassen, da die Defaultwerte nicht stimmen. * Der USB-Stick Pfad passt nicht * Die Soundkarte hat eine andere Adresse als ''0:0'' Erst mal den USB-Stick suchen: Und gefunden unter => ''/media/pi/Volume'' root@raspberrypi:~# mount ... /dev/sda1 on /media/pi/Volume type fuseblk (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096,uhelper=udisks2) ... Damit mpd auch drauf zugreifen kann und nicht immer die Fehlermeldung **access denied** kommt, muss man gleich noch die Rechte anpassen. Da ich eh nix anders mit dem Ding vorhabe => gleich Quick and dirty! Und auch die Rechte für den Zugriff auf die Playlist setzen.. root@raspberrypi:~# chown -R mpd /media root@raspberrypi:~# chmod -R 777 /var/lib/mpd/playlists Hier der Hinweis, warum ich ''screen'' einsetze: Nutzt ''screen'' um gleichzeitig den Dienst ''mpd'' zu starten und die Log-Datei anzusehen. Hilfe zu ''screen'' findet [[linux:screen|ihr in der Wiki]]. Was man bemötigt ist: ''Strg-a S'' und ''Strg-a ''. Da kommt die **''1''** her, die als Hardwareadresse in der ''mpd.conf'' angegeben wird! root@raspberrypi:~# cat /proc/asound/cards 0 [b1 ]: bcm2835_hdmi - bcm2835 HDMI 1 bcm2835 HDMI 1 1 [Headphones ]: bcm2835_headphonbcm2835 Headphones - bcm2835 Headphones bcm2835 Headphones Befehle, die Helfen können, um die richtigen Einstellungen zu finden: * cat /proc/asound/cards * lsmod | grep "snd" Und nun noch mpd konfigurieren, ich habe die Zeilen kommentiert, die ich angepasst habe. root@raspberrypi:~# vi /etc/mpd.conf # created by RaspiPlayer # An example configuration file for MPD. # Files and directories ####################################################### # #music_directory "/mnt/usbdrive" music_directory "/media/pi/Volume" #USB-Stick :D playlist_directory "/var/lib/mpd/playlists" db_file "/var/lib/mpd/database" log_file "/var/log/mpd/mpd.log" pid_file "/run/mpd/pid" state_file "/var/lib/mpd/state" sticker_file "/var/lib/mpd/sticker.sql" # General music daemon options ################################################ user "mpd" bind_to_address "localhost" # Input ####################################################################### input { plugin "curl" } # Audio Output ################################################################ audio_output { type "alsa" name "My ALSA Device" device "hw:1,0" #Soundkarte normal steht hier 0:0 mixer_type "software" #damit über mpc auch laut/leise getsellt werden kann } # # audio_output { type "alsa" name "bluetooth-speaker " device "bluealsa:HCI=hci0,DEV=xx:xx:xx:xx:xx:xx,PROFILE=a2dp" #Evtl. hier noch die Addr. für Bluetooth anpassen... wenn nötig mixer_type "software" } # filesystem_charset "UTF-8" id3v1_encoding "UTF-8" Jetzt muss der Dienst ''mpd'' neu gestartet werden root@raspberrypi:~# invoke-rc.d mpd restart Nun könnt Ihr schon mal auf der Shell mit ''mpc'' ein wenig testen. Mal alles einlesen zBsp. vom USB-Stick root@raspberrypi:~# mpc update .. .... ..... Anzeigen lassen, was alles so drauf ist. root@raspberrypi:~# mpc listall AC_DC/AC-DC - Highway To Hell(live).mp3 ... Hier sollten dann so einige MP3s die auf dem USB-Stick sind ... auftauchen ... Van Helen/1982 Diver Down/02 Hang 'Em High.mp3 Und nun mal was abspielen => Let's ROCK! :!: root@raspberrypi:~# mpc play AC/DC - Highway to Hell (live) [playing] #3/3722 0:00/5:40 (0%) volume: 65% repeat: off random: off single: off consume: off Und nun noch testen, ob man auch die Lautstärke ändern kann. Das Kommando wird auch von dem RaspiPlayer verwendet. 65% bei AC-DC ist eindeutig zu wenig, wenn man schon mal auf einem Konzert von denen war. **Rock'n Roll** root@raspberrypi:~# mpc volume 100 AC/DC - Highway to Hell (live) [playing] #3/3722 2:40/5:40 (47%) volume:100% repeat: off random: off single: off consume: off So, nun könnt ihr den RaspiPlayer starten - und Spaß damit haben. \\ Ich habe es zum Leid meiner Frau - gleich mal im Auto probiert. ===== Radiosender ===== http://www.radiosure.com/stations/ ===== mpc quick tut ===== Eigene Playlisten für Alben anlegen, bzw löschen. Diese werden unter ''/var/lib/mpd/playlists'' gespeichert und können dann über den RaspiPlayer aufgerufen werden (das grüne Ordnersymbol klicken). # mpc playlist => wenn hier was angezeigt wird... # mpc clear => mal schnell aufräumen # mpc playlist => zeigt nun nichts mehr an # mpc ls | mpc add => lädt alles in die leere Playlist # mpc save all => speichert die Playlist all.m3u oder # mpc ls | grep ACDC | mpd add => lädt ACDC in die leere Playlist # mpc save ACDC => speichert die Playlist ACDC.m3u oder # mpc ls | grep Lyny | mpd add => lädt Lynyrd Skynyrdn die leere Playlist # mpc save Lynyrd_Skynyrd => speichert die Playlist Lynyrd_Skynyrd.m3u Löschen # mpc rm all => löscht die Playlist all.m3u ===== Quellen ===== * https://github.com/goodtft/LCD-show * https://github.com/xlab/matchbox-keyboard * https://github.com/granpino/RaspiPlayer * http://blog.scphillips.com/posts/2013/01/sound-configuration-on-raspberry-pi-with-alsa/ * https://www.raspberrypi.org/forums/viewtopic.php?t=275400 * https://forum.ubuntuusers.de/topic/soundprobleme-mit-alsa-bzw-mpd-aplay-funktioni/ * https://github.com/sdushantha/kunst * https://github.com/granpino/RaspiPlayer * https://www.hackster.io/Granpino/raspiplayer-internet-radio-and-mp3-folder-player-rev2-4-3ddfdf * https://www.raspberrypi.org/forums/viewtopic.php?t=150505 * https://www.conrad.de/de/p/tru-components-touchscreen-monitor-8-9-cm-3-5-zoll-320-x-480-pixel-2144982.html Und hier der Bug mit dem 5.x kernel * https://github.com/goodtft/LCD-show/issues/234 ===== Aussichten ===== Damit das Teil dann an 12V im Auto geht, habe ich derzeit folgende Bauelemente im Sinn: \\ Das sollte normal reichen * https://www.conrad.de/de/p/gaptec-lc78-05-2-0-dc-dc-wandler-print-12-v-dc-5-v-dc-2000-ma-10-w-anzahl-ausgaenge-1-x-1603626.html Aber wenn man schon baut... 3A sind besser als 2A ;) * https://www.conrad.de/de/p/gaptec-lc78-05-3-0-dc-dc-wandler-print-12-v-dc-5-v-dc-3-a-15-w-anzahl-ausgaenge-1-x-1603628.html Das Programm RaspiPlayer anpassen, dass man Musikstücke suchen und diese dann abspielen kann. * Suchmaske für Titel/Interpret-Suche * Auswahl der Suchergebnisse * Und Abspielfunktion dieser Auswahl ===== Aussichten => Suchmaske ===== Die Änderung am RaspiPlayer zum Suchen nach Musikstücken wurde umgesetzt. Den Code könnt Ihr unter \\ https://github.com/raiserle/RaspiPlayer herunterladen und wie mit der alten RaspiPlayer-Version verwenden. ==== Die Neuerungen im Überblick ==== Der Button für die Playlistumschaltung wurde umfunktioniert. Über diesen Button wird nun die Tastatur für die Suche eingeblendet. \\ {{:raspberry:player_refactored_01.jpg|}} \\ Über die Tastatur könnt Ihr nun nach einem Musikstück suchen. Der ''*'' hat dabei eine Platzhalterfunktion. \\ Die Suche ist wie folgt aufgebaut: - Das erste Token vor dem ''*'' wird als Suche auf den Dateinamen angewendet - Jedes weitere Token wird auf das Ergebnis der Dateinamen mit einem ''&'' angewendet Die Suchfunktion bzw. die Tastatur sind ggf. noch einmal anzupassen. \\ Ich habe zBsp. **//AC/DC - Thunderstruck//** auf dem USB-Stick. Die Suche danach gestaltet sich ein wenig schwierig, da der Tastatur der ''/'' fehlt. \\ Die Suche sieht dann so aus: ''AC*AC*DC*Thunder'' => \\ - Alle MP3s mit ''AC'' im Dateinamen werden gesucht - In den Ergebnissen muss im Text ''AC'' und ''DC'' und ''Thunder'' vorkommen. Das Ergebnis ist: - AC/DC - Thunderstruck - AC/DC - Got some Rock & Roll Thunder {{:raspberry:player_refactored_03_search.jpg|}} \\ Mit dem ''RETURN''-Button bestätigt Ihr die Suche. Die Tastatur kann nur über den ''RETURN''-Button geschlossen werden. Soll nichts gesucht werden, einfach nichts eintippen und blos den ''RETURN'' klicken. \\ Das Suchergebnis kann dann wie folgt aussehen. \\ {{:raspberry:player_refactored_04_selecting_and_playing_a_song.jpg|}} \\ Wählt über ''UP'' oder ''DOWN'' den Song aus und bestätigt dies mit ''OK''. Der Song wird nun in die aktuelle Playliste eingefügt und abgespielt. \\ Die Playlisten bleiben dabei unverändert, sie werden nicht gespeichert.