Δημιουργία headless Archlinux MPD server σε Raspberry Pi model B με USB DAC

  • Αγαπητοί φίλοι και φίλες.

    Με ιδιαίτερη χαρά σας προσκαλούμε στην κοπή της πρωτοχρονιάτικης πίτας του AVClub στη Θεσσαλονίκη για το 2024 την Κυριακή 07 Απριλίου και ώρα 14.00

    Δηλώστε τη συμμετοχή σας εδώ, θα χαρούμε πολύ να σας γνωρίσουμε από κοντά.

tuxx

Supreme Member
3 January 2014
3,319
/dev/null
Σε αυτό τον οδηγό θα καλύψω τα βασικά βήματα για τη δημιουργία ενός 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:


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:

tmjuju

Administration Team
Staff member
21 January 2007
21,651
Re: Δημιιοργία headless Archlinux MPD server σε Raspberry Pi model B με USB DAC

yatuxxg
yet another tuxx guide
Άλλος ένας οδηγός από τον tuxx!

Keep up the good work :music-smiley-005:
 

tuxx

Supreme Member
3 January 2014
3,319
/dev/null
Re: Δημιιοργία headless Archlinux MPD server σε Raspberry Pi model B με USB DAC

Μερικές διαπιστώσεις μετά από ενάμιση περίπου μήνα χρήσης:

- Ότι και να έχω δοκιμάσει δεν έχω καταφέρει να εξολοθρεύσω έναν ενοχλητικό θόρυβο που εμφανίζεται κατά διαστήματα. Φανταστείτε έναν ψηφιακό θόρυβο "βελόνας πικάπ".
- Προετοιμαστείτε για πολύ πειραματισμό, ειδικά με τα rsize και wsize ώστε να καταφέρετε την καλύτερη δυνατή αναπαραγωγή.
- Όποιος δεν έχει πάρει raspberry γι αυτή τη χρήση, ας ΜΗΝ το κάνει. Ας προτιμήσει κάποια άλλη συσκευή (UDOO, cubox κλπ) καθώς ο περιορισμός της shared USB/ETHERNET είναι σκέτος πονοκέφαλος με τους θορύβους που εισάγει κατά την αναπαραγωγη.


EDIT:

Eυχαριστώ πολύ tmjuju!
 
Last edited:

tuxx

Supreme Member
3 January 2014
3,319
/dev/null
Re: Δημιιοργία headless Archlinux MPD server σε Raspberry Pi model B με USB DAC

Ένα σχόλιο για τα webradios:

Παρότι έχω κάνει symlink τον φάκελο στο /var/lib/mpd/music, απ' ότι φαίνεται δεν μπορούν να μπουν στην library του mpd pls αρχεία.

Ο τρόπος που τα επιλέγω είναι μέσω του mpdroid, έχοντας ορίσει να βλέπω files.
 

tuxx

Supreme Member
3 January 2014
3,319
/dev/null
Re: Δημιιοργία headless Archlinux MPD server σε Raspberry Pi model B με USB DAC

Κάνω διάφορες δοκιμές προσπαθώντας να δω τι παίζει με τον δικτυακό θόρυβο και νομίζω ότι το nfs κερδίζει συνολικά σε αυτό το θέμα. Tα rsize και wsize είναι και τα 2 με την τιμή 8096.
 

tmjuju

Administration Team
Staff member
21 January 2007
21,651
Re: Δημιιοργία headless Archlinux MPD server σε Raspberry Pi model B με USB DAC

Δοκίμασε και 4ΚB , καθώς και τα Mount Options
noatime, nolock

Το noatime πιθανά να είναι η λύση σου ανάλογα και με το nas.
Ενώ γενικά για όσους κάνουν εγκαταστάσεις λειτουργικού σε usb-disks / sdcards , είναι καλή πρακτική να αφαιρούν το atime.
Οπότε εάν θες άλλαξε και τα mount options στα root usr home var partitions σου

Παρεμπιπτόντως δες ένα νήμα από τα παλιά, να δεις πόσο πίσω με πάς και εμένα, σε Troubleshooting της προβληματικής Ethernet του DM500 , που είχε ένα ακόμα πιο μικρό CPU, PowerPC @ 252MHz
http://www.avclub.gr/forum/showthre...wav-mp3-player?p=488939&viewfull=1#post488939
τότε είχα ακόμα σε χρήση και ένα IBM παρόμοιων και καλά δυνατοτήτων, Pentium MMX, με Intel Ethernet, φυσικά πολύ πιο ενεργoβόρο , αλλά τουλάχιστο δεν αντιμετώπιζε βρεφικά προβλήματα με το δίκτυο που βλέπουμε σε SoC όπως του Pi.

Γενικά, τα πάμφθηνα τσιπάκια που κυκλοφορούν σήμερα μέσα σε κινητά είναι πολύ ανώτερα του rPi αλλά τι να το κάνεις που δεν κυκλοφορεί φθηνή dev-board με ένα σύγχρονο Krait/Snapdragon etc. Εκεί όλα τα παραπάνω προβλήματα απλά δεν θα μας απασχολούσαν.
 

tuxx

Supreme Member
3 January 2014
3,319
/dev/null
Re: Δημιιοργία headless Archlinux MPD server σε Raspberry Pi model B με USB DAC

Σε ευχαριστώ πολύ για τις επισημάνσεις!

Να ξεκαθαρίσω ότι έχω παρατήσει τις προσπάθειές για προσωπικό όφελος. Έχω ήδη αποφασίσει ότι το raspberry θα αντικατασταθεί. Κάνει τέλεια τη δουλειά του για xbmc box και ήδη δυο rpi με βγάζουν ασπροπρόσωπο γι αυτή τη χρήση, αλλά έχω χωνέψει ότι για audio χρειάζομαι μια αλλαγή.

Ο λόγος που το παλεύω είναι κυρίως η γνώση. Μέσα από αυτό το πλακετάκι έμαθα ότι δεν είχα ακουμπήσει όλα αυτά τα χρόνια. Mpd, samba, nfs πλέον αποτελούν κομμάτι γνώσης για μένα και δε μετανιώνω ποτέ που έμπλεξα με αυτή τη συσκευή.

Τώρα ήρθε η ώρα να ακούσω και λίγη μουσική όμως όποτε άμεσα θα μπει παραγγελία είτε το udoo quad είτε το cubox-i4 pro.
 

tuxx

Supreme Member
3 January 2014
3,319
/dev/null
Re: Δημιιοργία headless Archlinux MPD server σε Raspberry Pi model B με USB DAC

Επίσης για όποιον θέλει να το παλέψει υπάρχουν και τα εξής σετ ρυθμίσεων που μπορούν να δοκιμάσουν:

Code:
nano /etc/sysctl.d/99-sysctl.conf

Και κάνουμε paste αυτό:

Code:
vm.swappiness = 0
vm.min_free_kbytes=32768
vm.vfs_cache_pressure = 300
net.core.rmem_max=12582912
net.core.wmem_max=12582912
net.ipv4.tcp_rmem= 10240 87380 12582912
net.ipv4.tcp_wmem= 10240 87380 12582912
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_sack = 0
net.ipv4.tcp_no_metrics_save = 1
net.core.netdev_max_backlog = 5000
#vm.overcommit_memory = 2
#vm.overcommit_ratio = 50


Και επίσης μπορούν να δοκιμαστούν και διαφορετικές τιμές στο mtu:

Code:
nano /etc/systemd/system/[email protected]

Και κάνουμε paste αυτό:

Code:
[Unit]
Description=Set mtu on device
Before=network.target

[Service]
Type=oneshot
EnvironmentFile=/etc/conf.d/setmtu
ExecStart=/usr/bin/ip link set dev %i up mtu ${%i}

[Install]
WantedBy=multi-user.target


Code:
nano /etc/conf.d/setmtu

Και κάνουμε paste αυτό:

Code:
eth0=746

Code:
systemctl start setmtu@eth0
systemctl enable setmtu@eth0

H τιμή αλλάζει από το αρχείο /etc/conf.d/setmtu
 
Last edited:

tmjuju

Administration Team
Staff member
21 January 2007
21,651
Re: Δημιιοργία headless Archlinux MPD server σε Raspberry Pi model B με USB DAC

Σήμερα πάντως μπορείς να πάρεις intel/amd motherboard+cpu από 80 ευρώ και αλλά 2GB RAM σε τιμή για τσιπς και γαριδάκια
Δηλαδή με 100 ευρώ έχεις χ86 πλατφόρμα, αντί για ARM, έχει πολλά θετικά μια αντίστοιχη προσέγγιση, με μονό μείον την κατανάλωση.
Ή μπορείς να δεις τα microserver / nuc στα <200

Γενικά από όσο είδες δεν είναι θέμα επεξεργαστικής ισχύς τα προβλήματα του Pi, αλλά προβλήματα ‛πλατφόρμας’, σε χ86 έχεις το απίθανο PCIe bandwidth και φυσικά Gbit, usb3 κ.ο.κ. πράγματα πολύ χρήσιμα στις μέρες μας.
Οπότε στην όποια επιλογή σου, καλό είναι να δεις πολύ προσεκτικά το όποιο ΑΡΜ SoC , και τι περιφερικά έχει πάνω του.

Μη με παρεξηγήσεις, δεν είμαι ούτε πολέμιος της ARM ούτε του Pi, ίσα ίσα γουστάρω τρελά γιατί είναι οικονομικά, και έχουν βοηθήσει πολύ κόσμο να μάθει. Άλλωστε αυτό είναι και το σημαντικότερο για το rPi ΙΜΗΟ.
Άλλος θα πάει να πάρει ένα έτοιμο music server, αν τον ρωτήσεις τι επεξεργαστή και λειτουργικό έχει μέσα, δε ξέρει καν, δεν απαντάει κ.ο.κ. Δε το κατηγορώ, αλλά μη ξεχνάμε ότι ο κώδικας είναι εκεί έξω, με λίγη ενασχόληση καθένας μπορεί να φτιάξει τη δική του μικρή διανομή στα μέτρα του. Το arch έχει πολύ κόσμο διεθνώς αλλά και στην Ελλάδα, και έχει φτιάξει καταπληκτική κοινότητα υποστήριξης.
Και είναι ιδιαίτερη χαρά μου να βλέπω άλλο ένα arch , σε ARM Αυτή τη φορά!
 

tuxx

Supreme Member
3 January 2014
3,319
/dev/null
Re: Δημιιοργία headless Archlinux MPD server σε Raspberry Pi model B με USB DAC

Για μένα η arm πλατφόρμα είναι πρόκληση και τίποτε άλλο. Θέλω να καταφέρω αυτό που θα κατάφερνα έυκολα στην x86 πλαφόρμα, με το κέρδος της πιο "πράσινης προσέγγισης" (δεν τσιγγουνεύομαι τη ΔΕΗ, απλά με εξιτάρει η μικρή κατανάλωση σε συσκευές) αλλά και του ελάχιστου όγκου των συσκευών.

Έχω πολλή διάθεση για πειραματισμό και σίγουρα θα συνεχίσω στην ίδια λογική. Πάρα πολύς κόσμος έχει καταφέρει αυτό που θέλω, ακόμα και με rasberry και i2s dac, που κάνει το 1/3 των χρημάτων του φτηνού μου DAC και είμαι σίγουρος ότι σύντομα θα βρω τη συσκευή που θα μου κάνει.

Έχω καταφέρει να συνδυάσω τα δυο μου hobbies, το linux και τη μουσική και ακόμα και τώρα που έχω πρόβλημα δε φαντάζεσαι πόσο το διασκεδάζω!
 

tmjuju

Administration Team
Staff member
21 January 2007
21,651
Re: Δημιιοργία headless Archlinux MPD server σε Raspberry Pi model B με USB DAC

Για μένα η arm πλατφόρμα είναι πρόκληση και τίποτε άλλο. Θέλω να καταφέρω αυτό που θα κατάφερνα έυκολα στην x86 πλαφόρμα, με το κέρδος της πιο "πράσινης προσέγγισης" (δεν τσιγγουνεύομαι τη ΔΕΗ, απλά με εξιτάρει η μικρή κατανάλωση σε συσκευές) αλλά και του ελάχιστου όγκου των συσκευών.

Έχω πολλή διάθεση για πειραματισμό και σίγουρα θα συνεχίσω στην ίδια λογική. Πάρα πολύς κόσμος έχει καταφέρει αυτό που θέλω, ακόμα και με rasberry και i2s dac, που κάνει το 1/3 των χρημάτων του φτηνού μου DAC και είμαι σίγουρος ότι σύντομα θα βρω τη συσκευή που θα μου κάνει.

Έχω καταφέρει να συνδυάσω τα δυο μου hobbies, το linux και τη μουσική και ακόμα και τώρα που έχω πρόβλημα δε φαντάζεσαι πόσο το διασκεδάζω!

Ε ναι αξίζει να δοκιμάσεις και μεσω i2s
Το Pi χωραει εύκολα ολόκληρο μεσα στο κουτί του dac.
Και ναι linux & audio, καλός συνδιασμός για χομπι, αν και λιγο σκληροπυρινικός :D
 

tuxx

Supreme Member
3 January 2014
3,319
/dev/null
Re: Δημιιοργία headless Archlinux MPD server σε Raspberry Pi model B με USB DAC

Εϊναι πολύ αστείο αυτό που συμβαίνει σήμερα:D

Λίγο πριν παραγγείλω το cubox, κατά 99% βρήκα την λύση. H συνέχεια στο νήμα του volumio σε λίγη ώρα (εκεί έγινε το test).


Yγ. Είναι περιττό να πω ότι έχω χεστεί από τη χαρά μου. Ο αγώνας τώρα δικαιώνεται :D :D
 

tuxx

Supreme Member
3 January 2014
3,319
/dev/null
Re: Δημιιοργία headless Archlinux MPD server σε Raspberry Pi model B με USB DAC

Γράφω και εδώ τη λύση στο πρόβλημά μου που θεωρώ ότι θα είναι και η λύση για τους περισσότερους από όσους αντιμετωπίζουν προβλήματα.

Σύνοψη: To Raspberry foundation γνωρίζοντας ότι η usb υλοποίηση έχει πρόβλημα, έχει προσλάβει developer για να το λύσει μέσω software (usb driver). Μετά από άπειρο ψάξιμο, έπεσα πάνω σε ποστ του μερικών ημερών πριν, στο οποίο καλέι για δοκιμή των drivers αυτών. Αποφάσισα να δοκιμάσω αρχικά σε volumio:

http://www.avclub.gr/forum/showthre...olumio?p=1057036986&viewfull=1#post1057036986

Με αποτέλεσμα τα προβλήματα που είχα να εξαφανιστούν και η αναπαραγωγή να γίνει τέλεια.


Τι προβλήματα είχα:

- Περιστασιακούς θορύβους σε αναπαραγωγή 16/44.1 με NAS
- πλήρη αδυναμία αναπαραγωγής 24/96 είτε μέσω NAS είτε μέσω USB δίσκου.

Πως λύνεται το πρόβλημα αυτό σε Archlinux (το δοκίμασα σε runeaudio και δουλεύει - Το runeaudio είναι Archlinux)¨

1. login με ssh

Code:
pacman -Syu
pacman -S git binutils ca-certificates
reboot

Το reboot έγινε για την περίπτωση που υπάρχει update νέου Kernel

2. login πάλι με ssh

Code:
sudo wget https://raw.github.com/Hexxeh/rpi-update/master/rpi-update -O /usr/bin/rpi-update && sudo chmod +x /usr/bin/rpi-update
BRANCH=next rpi-update


κάνουμε υπομονή να τελειώσει και τέλος δινουμε τα παρακάτω:

Code:
nano /boot/cmdline.txt

προσθέτουμε στο τέλος της γραμμής τα παρακάτω:

Code:
dwc_otg.fiq_enable=1 dwc_otg.fiq_fsm_enable=1 dwc_otg.fiq_fsm_mask=0x3

και

Code:
reboot

Είμαστε έτοιμοι!!!

Οι δοκιμές μου έγιναν με samba και rsize=8048, wsize=8096.


Έχω κάνει Posts σε δύο forum και περιμένω να δω αν και άλλος κόσμος λύσει το προβλημά του ώστε να δούμε ποια dacs σώζονται με το παρόν fix:

http://www.runeaudio.com/forum/my-solution-to-pops-and-clicks-t165.html
http://volumio.org/forum/solution-pops-and-clicks-t772.html


Το post του developer του νέου firmware είναι αυτό:

http://www.raspberrypi.org/phpBB3/viewtopic.php?f=28&t=70437


Σε λίγο καιρό όλη αυτή η διαδικασία δεν θα απαιτείται καθώς ο νέος driver με τα fixes λογικά θα αποτελεί μέρος των default kernels.


Το μόνο που μένει τώρα είναι πολλές ώρες ακρόασης για να δω αν υπάρχουν ψεγάδια.
 

tmjuju

Administration Team
Staff member
21 January 2007
21,651
Re: Δημιιοργία headless Archlinux MPD server σε Raspberry Pi model B με USB DAC

Διάβασα λίγο τι γράφει, φαίνεται να γίνεται καλή δουλειά!
 

tuxx

Supreme Member
3 January 2014
3,319
/dev/null
Re: Δημιιοργία headless Archlinux MPD server σε Raspberry Pi model B με USB DAC

Επιβεβαιώνω ότι το πρόβλημά μου έχει λυθεί 100% χρησιμοποιώντας το παρακάτω DAC με flac 16/44.1 και 24/96:

http://hifimediy.com/index.php?route=product/product&path=62&product_id=87 (adaptive mode)
http://hifimediy.com/index.php?route=product/product&path=61&product_id=108

Βέβαια μέχρι στιγμής στα φορουμ που έχω δημοσιεύσει υπάρχει και αρνητικό feedback. Όπως και να χει η λύση που πρότεινα είναι σε development στάδιο και ο ίδιος ο άνθρωπος που έγραψε τον driver αναφέρει ότι ενδεχομένως να υπάρξουν προβλήματα. Το σίγουρο είναι ότι μπορεί να άργησαν αλλά βρίσκονται ένα βήμα πριν τη λύση του ζητήματος αυτού.
 

tmjuju

Administration Team
Staff member
21 January 2007
21,651
φίλτατε, τώρα που άρχισες να κάνεις το χειροποίητο σύστημα σου να σου προτείνω να διαβάσεις στο νέτ για τα patches-δουλειά δύο developers του mpd
Jurgen Kramer (dCS) (κάπου κάπως κάποτε , από τις πρώτες DSD υλοποιήσεις)
Kubota Yo

Ο jurgen ασχολείται χρόνια με debian over arm και σχετικά mpd patches, κατά καιρούς δίνει και binaries, που μπορείς να δοκιμάσεις απλά αντικαθιστώντας το mpd binary, καθώς τα patches καμιά φορά είναι πολυδαίδαλα.
O Yo δοκιμάζει κάποιες αλλαγές που σχετίζονται και με real time kernels (νταξ υπερβολή αλλά γιατί όχι)
Κάμποσα patches τους έχουν πια ενσωματωθεί στον git mpd, αλλά πολλά ακόμα τα δουλεύουν μόνοι τους
Γενικά, ότι και να διαβάσεις από όσα γράφουν δεξιά και αριστερά σε forums κ.ο.κ. χρήσιμο θα σου είναι, θα μάθεις αρκετά πράγματα.
Δε λέω ακολουθα τους υποχρεωτικά, λέω διάβασε τους :) (αχ βαχ που να βρεθεί χρόνος βέβαια)

Ενώ παράλληλα εάν δεν έχεις τον τελευταίο mpd απο git, ΙΜΗΟ, τρέξε κατέβασε τον γιατί και εδώ θα παρατηρήσεις ότι η τελευταία έκδοση αυτή την Κυριακή έχει κύριο θέμα το Pi :
MPD 0.18.9 released
Posted at: March 2, 2014
Music Player Daemon 0.18.9 has been released.
It improves the previous workaround for the Raspberry Pi audio driver bug, eliminating noise during song change. Child processes launched by the “pipe” output plugin no longer ignore signals. Several build failures have been fixed.


Γενικά από όσο βλέπεις , έχει πεισμώσει όλη η κοινότητα να κάνει τα αδύνατα δυνατά , για να καταφέρει το Pi να ξεπεράσει τα όποια προβλήματα!
Το optimization που γίνεται για to Pi δεν έχει γίνει για καμία άλλη πλατφόρμα πέραν της x86.
 

tuxx

Supreme Member
3 January 2014
3,319
/dev/null
Σε ευχαριστώ πολύ!

Σίγουρα θα τα δω όλα αυτά με προσοχή.

Μόλις βρω το χρόνο θα ξαναστήσω το παραπάνω σύστημα του οδηγού. Αυτή τη φορά θα γίνει πιο προσεκτικά (θα περιλάβω και τα mount options που έλεγες και άλλα διάφορα καλούδια) και αφού το τελειώσω θα το κάνω και upload σε κάποιον server να μπορεί να το δοκιμάσει ο κόσμος.

Y.γ. Ο μόνος λόγος που επέλεξα να ασχοληθώ με το rpi ήταν γιατί είχα αντιληφθεί ότι από πίσω υπάρχει μια τεράστια κοινότητα με ότι όφελος μπορεί να έχει αυτό!
 

NikTsel

Senior Member
6 November 2007
451
Αθηνα ,Κεντρο
Γενικα υπαρχει ενα hype για το εν λογω μηχανακι και οχι αδικα μπορεις να το κανεις να κανει σχεδον οτιδηποτε .Διαβαζα καπου εδω οτι και η Broadcom εδωσε τον κωδικα απο την gpu στο κοινο οποτε αναμενονται και απο εκει εξελιξεις .Το Γερμανικο Klang und ton ξαναασχολειται παλι αυτη τη φορα με squezebox server https://www.hifitest.de/shop/magazine-epaper/klang--ton/klang--ton-2-2014-epaper.php http://www.klangundton.de/ .Το προβλημα ισως ειναι οτι (και εμου συμπεριλαμβανομενου) ειμαστε end users και θελουμε στην ουσια ενα ετοιμο προιον DIY out of the box γιατι δεν υπαρχει χρονος και γνωση για να ασχοληθουμε εκ βαθεων .
 

tuxx

Supreme Member
3 January 2014
3,319
/dev/null
Δεν υπάρχει out of the box εδώ. Όλο και κάτι θα χρειαστείς να πειράξεις. Βέβαια από την άλλη, σε λίγο καιρό που ο νέος usb driver θα υπάρχει ενσωματωμένος θα γράφεις απλά το volumio ή το runeaudio στην sdcard και θα είσαι αρχηγός.

Η γνώμη μου όμως είναι ότι όποιος θέλει το out of the box option όπως είπες, θα πρέπει να δώσει και το ανάλογο τίμημα σε μια εταιρία που θα του παρέχει ένα τελικό προιόν.

Η μαγεία του DIΥ είναι ότι πριν 10 λεπτά με εημέρωσε ο tmjuju ότι υπάρχει νέο mpd με rpi fixes και ήδη το κάνω compile για δοκιμή στο Volumio. Αν πετύχει, θα γράψω στο ανάλογο νήμα 3 εντολές που χρειάζεται να κάνεις copy paste και δε θα χρειαστείς ούτε να μάθεις ούτε να κοπιάσεις!