Σε αυτό τον οδηγό θα καλύψω τα βασικά βήματα για τη δημιουργία ενός MPD server για bit perfect (όσο αυτό είναι δυνατόν στο Rpi) αναπαραγωγή σε Raspberry Pi model B με χρήση USB DAC.
H διανομή που θα χρησιμοποιήσουμε ειναι το Archlinux ARM.
1. Κατεβάζετε τη διανομη και την γράφετε στην SD Card.
Παρότι είμαι linux user, δεν έχω card reader σε μηχάνημα με linux και έτσι χρησιμοποιώ το W32Diskmanager με απόλυτη επιτυχία. Για κατέβασμα και οδηγίες πατάτε το παρακάτω link:
http://archlinuxarm.org/platforms/armv6/raspberry-pi
2. Mπουτάρετε με την SD Card που ετοιμάσατε παραπάνω και κάνετε login στη νέα σας διανομή με χρήση SSH
Username: root
Password: root
- Όσοι θα το κάνουν από Linux/Unix, δίνουν απλά την εντολή:
ssh [email protected] (όπου xxx.xxx.xxx.xxx η ip που έχει πάρει το raspberry μέσω dhcp. Εγώ βρίσκω ποιά είναι αυτή μέσα από το administration control του router μου)
- Oι χρήστες Windows θα χρησιμοποιήσουν το putty το οποίο θα κατεβάσουν από εδώ --> http://www.putty.org/
3. Βασικές ρυθμίσεις συστήματος (από εδώ και πέρα χρησιμοποιώ τον editor "nano". Όταν θέλουμε να σώσουμε και να βγούμε από το αρχείο με nano, πατάμε CTRL+X και μετά Υ )
- αλλαγή root password:
- αλλαγή hostname με ένα της προτίμησής μας (εγώ ονόμασα το σύστημά μου "archphile")
- ορισμός στατικής ip
To αρχείο σας θα πρέπει να είναι με αυτή τη μορφή, εννοείται με τις δικές σας ρυθμίσεις δικτύου:
Και στη συνέχεια:
Από το επόμενο boot το δίκτυό θα έχει την επιθυμητή ip
- disable στον cron ο οποίος όποτε τρέχει τρώει πολλή CPU
- ορισμός του performance governor ως default:
Ασχολούμαστε μόνο με το αρχικό section το οποίο πρέπει να είναι όπως το παρακάτω:
και στη συνέχεια:
- Βελτιστοποίηση για λιγότερα writes:
το αρχείο θα πρέπει να είναι όπως το παρακάτω:
To αρχείο θα πρέπει να είναι ως εξής:
- Ορισμός locales
Βγάζετε το "#" από όποια γραμμή επιθυμείτε. Εγώ ενεργοποιώ το αγγλικό(en_US) UTF-8 και το ελληνικό(el_GR) UTF-8. Στη συνέχεια:
To παραπάνω αρχείο θα πρέπει να περιέχει την παρακάτω γραμμή:
Τέλος δίνετε την παρακάτω εντολή:
- Ρύθμιση Zώνης/Ώρας και συγχρονισμός ώρας με ntp
το ntp.conf θα πρέπει να είναι κάπως έτσι για Ελλάδα:
Τέλος δίνετε τις εντολές:
4. Εγκατάσταση των πακέτων που θα χρειαστούμε για MPD server με samba και nfs shares:
5. Ρύθμιση της alsa να βλέπει μόνο το USB DAC και κάποιες έξτρα βελτιώσεις στην αναπαραγωγή:
Το αρχείο θα πρέπει να είναι ως εξής:
6. Δημιουργία των φακέλων που θα γίνoνται mount τα shares και πιθανώς κάποιος USB δίσκος (δε θα ασχοληθούμε με τον δίσκο γι αρχή).
7. Στήσιμο του mpd:
To /etc/mpd.conf θα πρέπει να είναι κάπως έτσι:
- To τελικό βήμα (που δεν καταλαβαίνω και καλά γιατί απαιτείται) είναι να γίνει edit το παρακάτω:
και να αλλαχτεί το ipv6.disable=1 σε ipv6.disable=0
Μερικά σχόλια για τα παραπάνω:
Aυτό που κάνατε με τις παραπάνω εντολές ήταν οτι δημιουργήσατε τον φάκελο /var/lib/mpd/music, ορίσατε ότι το /var/lib/mpd ανήκει στον χρήστη mpd κάνατε
links των φακέλων που προσαρτείτε τα mounts σας στο φάκελο /var/lib/mpd/music που έιναι και το σημείο που βλέπεi την library o mpd και ορίσατε ότι ο χρήστης mpd ανήκει στο audio group.
To audio buffer size στο /etc/mpd.conf παίζει επίσης ρόλο στην αναπαραγωγη και πρέπει να γίνουν δοκιμές με διάφορες τιμές.
- Δοκιμάζετε ότι όλα πάνε καλά και μπορεί να τρέξει ο mpd:
και τέλος σηκώνετε το service και το ενεργοποιείτε στην εκκίνηση:
8. Ορισμός των SAMBA και ΝFS shares:
Παραθέτω το δικό μου αρχείο:
Mερικά σχόλια για το παραπάνω:
Στο παραπάνω σενάριο έχω κάνει comment to ΝFS και χρησιμοποιώ μόνο samba.
Tα παραπάνω θα πρέπει να προσαρμοστούν ανάλογα με το ΝΑS. Στην περίπτωσή μου έχω ένα Archlinux Desktop και οι ρυθμίσεις είναι έγκυρες γι αυτό. Ο κάθε ένας θα πρέπει να βρει τα δικά του mount options ή να ποστάρει από κάτω το σενάριό του και να το βρούμε μαζί.
Οι τιμές των rsize και wsize είναι τρομερά σημαντικές για την τελική αναπαραγωγή. Επίσης είναι θέμα του κάθε συστήματος. Πειραματιστείτε!!
Καλό είναι όταν γίνονται αλλαγές στο παραπάνω αρχείο να γίνονται πρώτα και χειροκίνητες δοικιμές προσάρτησης, πχ:
ώστε να βλέπετε ότι δεν υπάρχει error.
9. Προσθήκη μερικών πολύ ενδιαφέροντων webradio που βρήκα από το forum του Volumio:
Πηγαίνετε στο παρακάτω link και κάνετε download πάνω δεξιά το zip:
https://www.dropbox.com/sh/uvoj146f907f1f4/dssh0hfZRs
To κάνετε extract στο pc σας και μετά με χρήση προγράμματος όπως το filezilla (επιλέγοντας SFTP, username:root, password: το password που βάλατε και ip την στατική ip σας)
προσθέτετε τα extracted pls αρχεία στο /mnt/webradio.
10. Reboot και προσευχή στο θεό που πιστεύετε
11. login ακόμα μια φορά με ssh και update της library:
Kαλό είναι να γίνει και ένα τσεκάρισμα ότι το volume είναι στο 100%
12. Χειρίσμός του νέο σας mpd headless server με ένα πρόγραμμα όπως το Ario, ή από κινητά με τα mpdroid, mpod.
http://ario-player.sourceforge.net/
https://play.google.com/store/apps/details?id=com.namelessdev.mpdroid&hl=el
https://itunes.apple.com/us/app/mpod/id285063020?mt=8
13. Eπισκόπηση απόδοσης
Για παρακολούθηση cpu/ram/proccesses:
Για επαλήθευση ότι δε γίνεται downsampling κλπ:
Πηγές:
- conf files του Volumio: http://volumio.org/
- conf files του Runeaudio: http://www.runeaudio.com/
- http://www.raspyfi.com/raspyfi-rc2-how-its-made-and-list-of-all-the-optimizations/
- http://volumio.org/forum/internet-radio-stations-volumio-t641.html
Τοdo:
- χρήση usb δίσκου
- εύρεση τρόπου να κλείνει ο server χωρίς να χρειάζετε να κάνουμε login με ssh και να δίνουμε εντολή shutdown.
H διανομή που θα χρησιμοποιήσουμε ειναι το Archlinux ARM.
1. Κατεβάζετε τη διανομη και την γράφετε στην SD Card.
Παρότι είμαι linux user, δεν έχω card reader σε μηχάνημα με linux και έτσι χρησιμοποιώ το W32Diskmanager με απόλυτη επιτυχία. Για κατέβασμα και οδηγίες πατάτε το παρακάτω link:
http://archlinuxarm.org/platforms/armv6/raspberry-pi
2. Mπουτάρετε με την SD Card που ετοιμάσατε παραπάνω και κάνετε login στη νέα σας διανομή με χρήση SSH
Username: root
Password: root
- Όσοι θα το κάνουν από Linux/Unix, δίνουν απλά την εντολή:
ssh [email protected] (όπου xxx.xxx.xxx.xxx η ip που έχει πάρει το raspberry μέσω dhcp. Εγώ βρίσκω ποιά είναι αυτή μέσα από το administration control του router μου)
- Oι χρήστες Windows θα χρησιμοποιήσουν το putty το οποίο θα κατεβάσουν από εδώ --> http://www.putty.org/
3. Βασικές ρυθμίσεις συστήματος (από εδώ και πέρα χρησιμοποιώ τον editor "nano". Όταν θέλουμε να σώσουμε και να βγούμε από το αρχείο με nano, πατάμε CTRL+X και μετά Υ )
- αλλαγή root password:
Code:
passwd
- αλλαγή hostname με ένα της προτίμησής μας (εγώ ονόμασα το σύστημά μου "archphile")
Code:
hostnamectl set-hostname archphile
- ορισμός στατικής ip
Code:
nano /etc/netctl/eth0
To αρχείο σας θα πρέπει να είναι με αυτή τη μορφή, εννοείται με τις δικές σας ρυθμίσεις δικτύου:
Code:
Description='A basic static ethernet connection'
Interface=eth0
Connection=ethernet
AutoWired=yes
IP=static
Address=('192.168.1.149/24')
Gateway='192.168.1.1'
DNS=('8.8.8.8' '8.8.4.4')
#Description='A basic dhcp ethernet connection'
#Interface=eth0
#Connection=ethernet
#IP=dhcp
#ExecUpPost='/usr/bin/ntpd -gq || true'
## for DHCPv6
#IP6=dhcp
## for IPv6 autoconfiguration
#IP6=stateless
Και στη συνέχεια:
Code:
netctl enable eth0
Από το επόμενο boot το δίκτυό θα έχει την επιθυμητή ip
- disable στον cron ο οποίος όποτε τρέχει τρώει πολλή CPU
Code:
systemctl disable cronie
- ορισμός του performance governor ως default:
Code:
pacman -Syu
pacman -S cpupower
nano /etc/default/cpupower
Ασχολούμαστε μόνο με το αρχικό section το οποίο πρέπει να είναι όπως το παρακάτω:
Code:
# Define CPUs governor
# valid governors: ondemand, performance, powersave, conservative, userspace.
governor='performance'
Code:
systemctl start cpupower
systemctl enable cpupower
- Βελτιστοποίηση για λιγότερα writes:
Code:
nano /etc/fstab
το αρχείο θα πρέπει να είναι όπως το παρακάτω:
Code:
#
# /etc/fstab: static file system information
#
# <file system> <dir> <type> <options> <dump> <pass>
/dev/mmcblk0p1 /boot vfat defaults 0 0
#Finetuning for less writes on SD Card - Warning!!! Logs are deleted after each reboot.
tmpfs /var/log tmpfs defaults 0 0
Code:
nano /etc/sysctl.d/99-sysctl.conf
To αρχείο θα πρέπει να είναι ως εξής:
Code:
vm.swappiness = 0
vm.min_free_kbytes=32768
vm.vfs_cache_pressure = 300
- Ορισμός locales
Code:
nano /etc/locale.gen
Βγάζετε το "#" από όποια γραμμή επιθυμείτε. Εγώ ενεργοποιώ το αγγλικό(en_US) UTF-8 και το ελληνικό(el_GR) UTF-8. Στη συνέχεια:
Code:
nano /etc/locale.conf
To παραπάνω αρχείο θα πρέπει να περιέχει την παρακάτω γραμμή:
Code:
LANG="en_US.UTF-8"
Τέλος δίνετε την παρακάτω εντολή:
Code:
locale-gen
- Ρύθμιση Zώνης/Ώρας και συγχρονισμός ώρας με ntp
Code:
rm -r /etc/localtime
ln -s /usr/share/zoneinfo/Europe/Athens /etc/localtime
pacman -S ntp
nano /etc/ntp.conf
το ntp.conf θα πρέπει να είναι κάπως έτσι για Ελλάδα:
Code:
# With the default settings below, ntpd will only synchronize your clock.
#
# For details, see:
# - the ntp.conf man page
# - http://support.ntp.org/bin/view/Support/GettingStarted
# - https://wiki.archlinux.org/index.php/Network_Time_Protocol_daemon
# Associate to public NTP pool servers; see http://www.pool.ntp.org/
#server 0.pool.ntp.org iburst
#server 1.pool.ntp.org iburst
#server 2.pool.ntp.org iburst
server 3.gr.pool.ntp.org iburst
server 0.europe.pool.ntp.org iburst
server 2.europe.pool.ntp.org iburst
# Only allow read-only access from localhost
restrict default noquery nopeer
restrict 127.0.0.1
#restrict ::1
# Location of drift file
driftfile /var/lib/ntp/ntp.drift
Τέλος δίνετε τις εντολές:
Code:
systemctl start ntpd
systemctl enable ntpd
4. Εγκατάσταση των πακέτων που θα χρειαστούμε για MPD server με samba και nfs shares:
Code:
pacman -Syu
pacman -S mpd mpc alsa-utils htop cifs-utils nfs-utils
5. Ρύθμιση της alsa να βλέπει μόνο το USB DAC και κάποιες έξτρα βελτιώσεις στην αναπαραγωγή:
Code:
nano /etv/modprobe.d/alsa-base.conf
Το αρχείο θα πρέπει να είναι ως εξής:
Code:
options snd slots=snd_usb_audio
options snd_usb_audio index=0 nrpacks=1
6. Δημιουργία των φακέλων που θα γίνoνται mount τα shares και πιθανώς κάποιος USB δίσκος (δε θα ασχοληθούμε με τον δίσκο γι αρχή).
Code:
mkdir /mnt/nas-nfs
chmod 777 /mnt/nas-nfs
mkdir /mnt/nas-samba
chmod 777 /mnt/nas-samba
mkdir /mnt/webradio
chmod 777 /mnt/webradio
mkdir /mnt/usb-disk
chmod 777 /mnt/usb-disk
7. Στήσιμο του mpd:
Code:
mkdir /var/lib/mpd/music
chown -R mpd /var/lib/mpd
cd /var/lib/mpd/music
ln -s /mnt/nas-nfs
ln -s /mnt/nas-samba
ln -s /mnt/webradio
ln -s /mnt/usb-disk
gpasswd -a mpd audio
nano /etc/mpd.conf
To /etc/mpd.conf θα πρέπει να είναι κάπως έτσι:
Code:
###################################
##Archphile Default Configuration##
follow_outside_symlinks "yes"
follow_inside_symlinks "yes"
db_file "/var/lib/mpd/mpd.db"
log_file "/var/log/mpd.log"
pid_file "/var/run/mpd/pid"
music_directory "/var/lib/mpd/music"
playlist_directory "/var/lib/mpd/playlists"
state_file "/var/lib/mpd/mpdstate"
user "mpd"
bind_to_address "any"
port "6600"
log_level "default"
zeroconf_enabled "yes"
zeroconf_name "archphile"
volume_normalization "no"
audio_buffer_size "2048"
buffer_before_play "20%"
filesystem_charset "UTF-8"
id3v1_encoding "UTF-8"
gapless_mp3_playback "yes"
auto_update "yes"
mixer_type "disabled"
group "audio"
max_connections "20"
decoder {
plugin "ffmpeg"
enabled "no"
}
input {
plugin "curl"
}
audio_output {
enabled "yes"
type "alsa"
name "USB-Audio"
device "hw:0,0"
dsd_usb "yes"
}
- To τελικό βήμα (που δεν καταλαβαίνω και καλά γιατί απαιτείται) είναι να γίνει edit το παρακάτω:
Code:
nano /boot/cmdline.txt
και να αλλαχτεί το ipv6.disable=1 σε ipv6.disable=0
Μερικά σχόλια για τα παραπάνω:
Aυτό που κάνατε με τις παραπάνω εντολές ήταν οτι δημιουργήσατε τον φάκελο /var/lib/mpd/music, ορίσατε ότι το /var/lib/mpd ανήκει στον χρήστη mpd κάνατε
links των φακέλων που προσαρτείτε τα mounts σας στο φάκελο /var/lib/mpd/music που έιναι και το σημείο που βλέπεi την library o mpd και ορίσατε ότι ο χρήστης mpd ανήκει στο audio group.
To audio buffer size στο /etc/mpd.conf παίζει επίσης ρόλο στην αναπαραγωγη και πρέπει να γίνουν δοκιμές με διάφορες τιμές.
- Δοκιμάζετε ότι όλα πάνε καλά και μπορεί να τρέξει ο mpd:
Code:
mpd --no-daemon
και τέλος σηκώνετε το service και το ενεργοποιείτε στην εκκίνηση:
Code:
systemctl start mpd
systemctl enable mpd
8. Ορισμός των SAMBA και ΝFS shares:
Code:
nano /etc/fstab
Παραθέτω το δικό μου αρχείο:
Code:
#
# /etc/fstab: static file system information
#
# <file system> <dir> <type> <options> <dump> <pass>
/dev/mmcblk0p1 /boot vfat defaults 0 0
#Finetuning for less writes on SD Card - Warning!!! Logs will be deleted after reboot.
tmpfs /var/log tmpfs defaults 0 0
#SAMBA Share
//192.168.1.150/Music /mnt/nas-samba cifs guest,noauto,x-systemd.automount,x-systemd.device-timeout=10,sec=ntlm,rsize=16384,wsize=16384
#NFS Share
#192.168.1.150:/music /mnt/nas-nfs nfs4 noauto,x-systemd.automount,x-systemd.device-timeout=10,rsize=16384,wsize=16384
Mερικά σχόλια για το παραπάνω:
Στο παραπάνω σενάριο έχω κάνει comment to ΝFS και χρησιμοποιώ μόνο samba.
Tα παραπάνω θα πρέπει να προσαρμοστούν ανάλογα με το ΝΑS. Στην περίπτωσή μου έχω ένα Archlinux Desktop και οι ρυθμίσεις είναι έγκυρες γι αυτό. Ο κάθε ένας θα πρέπει να βρει τα δικά του mount options ή να ποστάρει από κάτω το σενάριό του και να το βρούμε μαζί.
Οι τιμές των rsize και wsize είναι τρομερά σημαντικές για την τελική αναπαραγωγή. Επίσης είναι θέμα του κάθε συστήματος. Πειραματιστείτε!!
Καλό είναι όταν γίνονται αλλαγές στο παραπάνω αρχείο να γίνονται πρώτα και χειροκίνητες δοικιμές προσάρτησης, πχ:
Code:
mount /mnt/nas-samba
ώστε να βλέπετε ότι δεν υπάρχει error.
9. Προσθήκη μερικών πολύ ενδιαφέροντων webradio που βρήκα από το forum του Volumio:
Πηγαίνετε στο παρακάτω link και κάνετε download πάνω δεξιά το zip:
https://www.dropbox.com/sh/uvoj146f907f1f4/dssh0hfZRs
To κάνετε extract στο pc σας και μετά με χρήση προγράμματος όπως το filezilla (επιλέγοντας SFTP, username:root, password: το password που βάλατε και ip την στατική ip σας)
προσθέτετε τα extracted pls αρχεία στο /mnt/webradio.
10. Reboot και προσευχή στο θεό που πιστεύετε
Code:
reboot
11. login ακόμα μια φορά με ssh και update της library:
Code:
mpc update
Kαλό είναι να γίνει και ένα τσεκάρισμα ότι το volume είναι στο 100%
Code:
alsamixer
12. Χειρίσμός του νέο σας mpd headless server με ένα πρόγραμμα όπως το Ario, ή από κινητά με τα mpdroid, mpod.
http://ario-player.sourceforge.net/
https://play.google.com/store/apps/details?id=com.namelessdev.mpdroid&hl=el
https://itunes.apple.com/us/app/mpod/id285063020?mt=8
13. Eπισκόπηση απόδοσης
Για παρακολούθηση cpu/ram/proccesses:
Code:
htop
Για επαλήθευση ότι δε γίνεται downsampling κλπ:
Code:
cat /proc/asound/card0/pcm0p/sub0/hw_params
Πηγές:
- conf files του Volumio: http://volumio.org/
- conf files του Runeaudio: http://www.runeaudio.com/
- http://www.raspyfi.com/raspyfi-rc2-how-its-made-and-list-of-all-the-optimizations/
- http://volumio.org/forum/internet-radio-stations-volumio-t641.html
Τοdo:
- χρήση usb δίσκου
- εύρεση τρόπου να κλείνει ο server χωρίς να χρειάζετε να κάνουμε login με ssh και να δίνουμε εντολή shutdown.
Last edited by a moderator: