24bit96

  |  

USB HiFi und Hi-Res Musik

24bit96 - hi-res audio und hd musik - Startseite

Amazon Music
MPD, Debian, ALSA mit Realtime-Kernel für einen Lowlatency Linux Musikserver

MPD, Debian, ALSA - Realtime Lowlatency USB Musikserver konfigurieren

Bitgenaue Wiedergabe ist für einen HighEnd USB-Audio-PC in Kombination mit einem guten USB D/A Wandlers das Non-Plus-Ultra - und hier führt an Linux kein Weg vorbei. Bestens geeignet ist hier die einfach zu installierende Linux-Distribution "Debian" die mit nahezu allen DAC-Chips gängiger D/A Wandler auf problemlos funktioniert (XMOS, Sabre, Wolfson, TI etc.) und alle HiRes-Audio-Formate wie WAV, FLAC, AIFF, ALAC, DSD & DXD als auch MP3 und OGG-Vorbis abspielt.

Nachfolgend beschrieben ist die Installation eines Audio-PCs für den Betrieb ohne grafische Benutzeroberfläche aber mit einem Realtime-Kernel für die perfekte Wiedergabe mit niedrigster Latenz unter Verwendung von ALSA und dem Music Player Daemon (MPD), welcher remote über ein iPhone/iPad/Android-Gerät fernbedient wird so dass der Linux-Audio-Server ohne Tastatur, Maus und Monitor verwendet werden kann.

Für bitperfekte Audio Wiedergabe mit dem PC mit MPD, Debian, ALSA eignet sich die Version "Debian Stretch" mit dem auch native DSD-Dateien abgespielt werden können.

Wie man den HighEnd Audio-PC optimal vorbereitet steht in der Konfiguration des BIOS.

Eine Hardware Plattform basierend auf Intels Atom Prozessor wird für bitakkurate HighEnd Wiedergabe empfohlen. Wer möchte kann auch einen fertigen Audio Server kaufen.




A) Installation von Debian-Linux und dem Music Player Daemon (MPD)


1) Download von Debian-Linux

Zur Verwendung kommt hier das sogenannte "Netzinstallations-CD-Images" bei der während der Installation die aktuellen Dateien aus dem Internet nachgeladen werden. Es wird empfohlen, sich vor der Installation das aktuelle Firmware-Paket zu laden und diese Dateien in den Ordner "firmware" auf das Installations-Medium zu kopieren um alle benötigten Treiber für Ihre Hardware zur Verfügung zu haben (mehr Info).

Wenn Sie Debian von USB-Stick installieren wollen laden sie sich den Universal USB-Installer. Mit dieser Software können Sie einfach bootfähige USB-Installationsmedien unter Verwendung der downgeloadeten Debian-ISO-Datei erstellen.


2) Installation von Debian "Stretch" (Debian 9)

Schließen Sie Ihren USB-DAC an den PC an und diesen an das Internet. Booten Sie Ihr System von dem von Ihnen erstellten Installationsmedium und verfahren Sie dann wie folgt
  • Nach dem Aufruf des Installationsscreen "Advanced Options", und hier "Expert install" wählen
  • Mit "Choose language" die von Ihnen gewünschte "Sprache" und "Gebietsschema" einstellen
  • Danach das "Tastatur-Layout" wählen
  • Auch wenn Sie von einem USB-Stick installieren "CD-ROM erkennen und einbinden" wählen
  • Auswahl "Installer-Komponenten von CD laden" wählen und hier alles leer lassen. Mit "Weiter" fortfahren
  • Es folgt die Erkennung der Netzwerkkarte und die automatische Einrichtung des Netzwerks ("Netzwerk-Hardware erkennen" / "Netzwerk einrichten", bei DHCP-basierten Netzen kann man hier "Netzwerk automatisch einrichten" wählen
  • Danach wird der "Hostname" festgelegt, hier "debianmusic", den "Domain name" kann man im Regelfall leer lassen
  • Mit "Benutzer und Passwörter erstellen" werden die Benutzer eingerichtet ("shadow passwords" wählen!). "Einloggen als Root" nicht erlauben
  • Nach dem Anlegen von "root" wird ein "Normaler Benutzerkonto" erstellt. In diesem Beispiel der User "usbaudio"
  • Bei der Frage nach "Uhr mittels NTP einstellen" mit "nein" antworten, die "Zeitzone" ist dann manuell zu wählen
  • Mit "Festplatten erkennen" wird die Festplatte erkannt, danach erfolgt mit "Festplatten partitionieren" das Partitionieren der Festplatte. Am einfachsten ist es, hier "Geführte Partitionierung" zu wählen und danach mittels "Geführt - vollständige Festplatte verwenden" die gesamte Festplatte anzugeben. Das Partitionierungsschema wird mit "Alle Dateien auf eine Partition" festgelegt, in der folgenden Auflistung sollte die primäre Partition ("Nr. 1 primär") ausgewählt werden und bei "Benutzen als" das Filesystem auf "ext4" gesetzt und der "Boot-Flag" auf "Ein" eingestellt werden. "Partition formatieren" zu "ja, formatieren" ändern, alle anderen Optionen unangetastet lassen. Das Ganze mit "Anlegen der Partition beenden" bestätigen und mit "Partitionierung beenden und Änderungen übernehmen" abschließen und diese Einstellungen auf die Festplatte schreiben lassen
  • Mit "Grundsystem installieren" wird jetzt das Basissystem installiert
  • Als Kernel wählen Sie den vorselektierten "linux-image-amd64"-Kernel
  • Bei der Auswahl der Treiber langt es, nur die "für das System benötigten Treiber einzubinden"
  • Wenn nach "Non-Free und/oder Contrib"-Software gefragt wird "nein" wählen, bei "APT" "ja" auswählen
  • Der "Paket-Manager" dient dazu, einen Download-Mirror für weitere Software-Pakete festzulegen, hier sollte man sich einen Server im eigenen Land suchen. Die "Sicherheitsaktualisierungen" und "Release-Updates" kann man im Folgeschritt deaktivieren
  • Weiter geht es mit "Software auswählen und installieren"
  • "man and mandb program" kann man weglassen
  • Bei der Software-Auswahl beschränkt man sich auf die "Standard System Werkzeuge"
  • Der Bootloader GRUB wird in den Master Boot Sector (MBR) installiert ("GRUB Bootloader auf einer Festplatte installieren", evtl. noch die betreffende Festplatte wählen - in der Regel "/dev/sda1"). Bei der Frage nach "EFI" mit "Nein" antworten (es sei denn, sie haben ein EFI-basiertes System) und die Installation mit "Installation abschließen" fertiggstelle und das so installierte Debian System gebootet. Sollte GRUB nicht funktionieren kann der LILO Bootmanager ausproboert werden


3) Den Realtime-Kernel installieren

Der Realtime-Kernel sorgt für minimale Latenz, dies ist zwar eher für Audio-Aufnahmen von Bedeutung, wirkt sich aber auch auf die Wiedergabe von Audio-Dateien über USB aus.
Hierfür als "root" einloggen und folgende Befehle eingeben:
sudo apt-get update
sudo apt-get install linux-image-rt-amd64

Wenn dies geschehen ist sollten Sie Ihr System rebooten. Es erscheint ein Auswahlmenü mit den installierten Kerneln und Debian startet nach kurzer Wartezeit automatisch mit dem Realtime-Kernel. In der Konsole können Sie dies mit folgendem Befehl überprüfen:
sudo uname -a

Die Ausgabe sollte wie folgt aussehen ("RT" steht für "Real Time")
usbaudio@debianmusic:~$ uname -a
Linux debianmusic 4.9.0-11-rt-amd64 #1 SMP PREEMPT RT Debian 4.9.189-3 (2019-09-02) x86_64 GNU/Linux


4) ALSA installieren und konfigurieren

ALSA (Advanced Linux Sound Architecture) ist eine freie Soundarchitektur für Linux-Systeme und übernimmt die Ansteuerung des USB-DACs. Mit dem folgenden Befehl wird ALSA installiert
sudo apt-get install alsa-utils alsa-tools

Editieren Sie jetzt die Datei "/etc/security/limits.conf" und fügen Sie folgende Zeilen hinzu:
@audio - rtprio 99
@audio - memlock unlimited
@audio - nice -10


5) MPD installieren

MPD (Music Player Daemon) ist der eigentliche Musik-Server und wird wie folgt installiert:
sudo apt-get install mpd

Jetzt wird "mpd" der Gruppe "audio" zugeordnet:
sudo adduser mpd audio

Anlegen des Verzeichnisses für die Musik- und Playlist-Dateien mit
sudo mkdir /home/usbaudio/share /home/usbaudio/share/music /home/usbaudio/share/playlist

Hier müssen die Schreibrechte wie folgt gesetzt werden:
sudo chmod 777 /home/usbaudio/share /home/usbaudio/share/music /home/usbaudio/share/playlist


6) SAMBA installieren und konfigurieren

Um auf die Musikdateien auch von Windows-Rechnern zugreifen zu können und neue Musikstücke auf den Debian-Audio-Server zu laden benötigt man Samba:
sudo apt-get install samba samba-common

Benutzer "usbaudio" für den Zugriff über das Windows-Netzwerk anlegen:
sudo smbpasswd -a usbaudio

Dann die Datei "/etc/samba/smb.conf" editieren und wie folgt ergänzen:
[music]
	path = /home/usbaudio/share/music
	writeable = yes
;	browseable = yes
	guest ok = yes
	comment = debianmusic
	wins support = yes

[playlist]
	path = /home/usbaudio/share/playlist
	writeable = yes
;	browseable = yes
	guest ok = yes
	comment = debianmusic
	wins support = yes	
Die Sektionen "#[printers]" und "#[print$]" können mit "#" auskommentiert werden.

Testen ob die Samba-Konfiguration ok ist:
sudo testparm /etc/samba/smb.conf


7) SSH installieren

Damit man später von einem anderen Rechner per Telnet/SSH-Client auf den Musik-Server zugreifen kann um z.B. die Konfiguration zu ändern oder zu testen benötigt man den Open-SSH-Server. Diesen installiert man mittels
sudo apt-get install openssh-server


8) LIGHTTPD installieren und konfigurieren

Um mit einigen mobilen Clients nachher auch per Remote-App die Cover anzuzeigen bzw. MPD-Webfrontends wie Rompr zu installieren benötigt man einen Web-Server. Hier eignet sich der kleine Webserver lighttpd, den man mit dem folgenden Befehl installiert:
sudo apt-get install lighttpd

Nach der Installation von lighttpd muss man in der Datei "/etc/lighttpd/lighttpd.conf" die folgende Zeile entsprechend dem Verzeichnis, welches oberhalb des Verzeichnisses, in dem die Musikdateien liegen, anpassen:
server.document-root = "/home/usbaudio/share"
und darunter den folgenden Eintrag machen
dir-listing.activate = "enable"
um das Directory-Browsing zu aktivieren


9) DHCP oder feste IP-Adresse einrichten

Feste IP-Adresse:

Unter Debian empfiehlt es sich, DHCP zu deaktivieren und eine feste IP-Adresse zu verwenden. Diese kann man in der Datei "/etc/network/interfaces" festlegen um später einfach mit dem Windows-Datei-Explorer auf das freigegebene Verzeichnis zugreifen zu können (in diesem Beispiel "\\192.168.1.151")
# The primary network interface
allow-hotplug eth0
#iface eth0 inet dhcp
iface eth0 inet static
address 192.168.1.151
netmask 255.255.255.0
gateway 192.168.1.254

DHCP:

Um DHCP zu verwenden sieht die "/etc/network/interfaces" wie folgt aus
# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp
#iface eth0 inet static
#address 192.168.1.151
#netmask 255.255.255.0
#gateway 192.168.1.254
Zusätzlich wird noch die Datei "/etc/dhcp/dhclient.conf" editiert und um ihre Mac-Adresse (= dhcp-client-identifier) und den Hostnamen (= send host-name) ergänzt
send host-name = "debianmusic";
#send host-name = gethostname();
send dhcp-client-identifier 00:11:22:33:44:55;
Die Mac-Adresse (dhcp-client-identifier) bekommen Sie mit dem folgenden Befehl angezeigt:
sudo ip addr siehe ("link/ether")

Mit "\\debianmusic" greift man dann über Windows auf den freigegebenen Ordner zu (dies funktioniert mit der DHCP als auch der festen IP-Adress-Konfiguration).


10) AVAHI installieren und konfigurieren

Damit alle Remote-Clients den mpd-Server finden installiert man den Avahi Daemon mit dem Kommando
sudo apt-get install avahi-daemon

und löscht in der Datei "/etc/avahi/avahi-daemon.conf" das "#" in der folgenden Zeile:
enable-dbus=yes


11) ACPID installieren

ACPID wird benötigt wenn der Rechner beim Betätigen des Ein-/Ausschalters nicht automatisch herunterfahren sollte:
sudo apt-get install acpi acpid

In der zu erstellenden Datei "/etc/acpi/powerbtn.sh" trägt man dann das Folgende ein:
/sbin/shutdown -h now "Power button pressed"
exit 0


12) Abschluß der Installation und Reboot

Damit sind eigentlich alle nötigen Schritte der Grund-Konfiguration des USB-Audio-Servers erledigt. Jetzt kann man das System auf der Konsole mittels sudo reboot neu starten und sich dem Setup der MPD-Konfiguration widmen.

Wer möchte bringt das System vorher noch einmal auf den neuesten Stand:
sudo apt-get update
sudo apt-get upgrade


B) Konfiguration des Music Player Daemons (MPD) für bitgenaue Wiedergabe über einen USB-DAC (D/A-Wandler)


1) USB D/A-Wandler (DAC) prüfen

Den USB DAC anschließen und in der Konsole die Belegung der Anschlüsse des D/A-Wandlers anzeigen lassen:
sudo aplay --list-devices

Dies ist sowohl für die Konfiguration des Music Player Daemons als auch für die der Zuordnung des D/A-Wandlers als Default-Audio-Gerät wichtig.

Die Ausgabe von "aplay" sollte in etwa so aussehen (Beispiel mit dem Firestone I Love Taiwan D/A Wandler):
usbaudio@debianmusic:~$ sudo aplay --list-devices
**** Liste der Hardware-Geräte (PLAYBACK) ****
Karte 1: TW [I Love TW], Gerät 0: USB Audio [USB Audio]
  Sub-Geräte: 0/1
  Sub-Gerät #0: subdevice #0
Anhand der angezeigten Werte muss die Datei "/usr/share/alsa/alsa.conf" entsprechend angepasst werden und z.B "0" gegen "1" getauscht werden wenn die "Karte 1" und nicht "Karte 0" ist:
defaults.ctl.card 1
defaults.pcm.card 1
defaults.pcm.device 1
Die installierten Soundkarten kann man mit dem folgenden Befahl anzeigen lassen:
sudo cat /proc/asound/cards
 1 [TW             ]: USB-Audio - I Love TW
                      Firestone Audio Co., Ltd. I Love TW at usb-0000:00:1d.7-7, high speed


2) Music Player Daemon (MPD) konfigurieren

Das Wichtigste hier ist die MPD-Konfigurations-Datei "/etc/mpd.conf". In dieser Datei sind etliche Optionen, die nicht benötigt werden und einiges, was aktiviert werden muss. Als Beispiel ist hier die Konfiguration für den "debianmusic", als User wird der bei der Installation angelegte User "usbaudio" genommen, die Hardware wird wie mittels sudo aplay --list-devices ausgelesen eingetragen. Bei den Verzeichnissen ist lediglich das "music_directory" und "playlist_directory" geändert worden.
# Files and directories #######################################################
music_directory         "/home/usbaudio/share/music"
playlist_directory      "/home/usbaudio/share/playlist"
db_file                 "/var/lib/mpd/tag_cache"
log_file                "/var/log/mpd/mpd.log"
pid_file                "/var/run/mpd/pid"
state_file              "/var/lib/mpd/state"
sticker_file            "/var/lib/mpd/sticker.sql"
# General music daemon options ################################################
user                            "mpd"
group                          	"audio"
# For network
#bind_to_address                "localhost"
port                            "6600"
auto_update     				"yes"
# Symbolic link behavior ######################################################
follow_outside_symlinks        "yes"
follow_inside_symlinks        "yes"
# Zeroconf / Avahi Service Discovery ##########################################
zeroconf_enabled               "yes"
zeroconf_name                  "debianmusic"
# Input #######################################################################
#input {
#       plugin "curl"
#       proxy "proxy.isp.com:8080"
#       proxy_user "user"
#       proxy_password "password"
#}
# Audio Output ################################################################
audio_output {
        type            "alsa"
        name            "My ALSA Device"
        device          "hw:1,0"        # optional
        mixer_type      "disabled"      # optional
#       mixer_device    "default"       # optional
#       mixer_control   "PCM"           # optional
#       mixer_index     "0"             # optional
}
# Character Encoding ##########################################################
filesystem_charset              "UTF-8"
id3v1_encoding                  "UTF-8"
###############################################################################


3) Test für bitgenaue Audio Wiedergabe über USB

Wer keinen DAC besitzt der die Bit/Samplerate anzeigt kann die korrekte, bitgenaue Wiedergabe direkt im Terminal beim Abspielen eines Songs erledigen:
sudo cat /proc/asound/card0/pcm0p/sub0/hw_params

Dies sollte bei einem 24 bit /176 kHz File so aussehen:
usbaudio@debianmusic:~$ sudo cat /proc/asound/card1/pcm0p/sub0/hw_params
access: RW_INTERLEAVED
format: S24_3LE
subformat: STD
channels: 2
rate: 176400 (176400/1)
period_size: 22050
buffer_size: 88200
Beim Aufruf ist darauf zu achten, "card1" durch die eigene Hardware laut sudo aplay --list-devices zu ersetzen.


C) Inbetriebnahme


  1. USB-DAC an USB-Musik-Server anschließen
  2. Netzkabel an USB-Musik-Server anschließen
    Je nach Netzwerkkonfiguration sollte der Router als DHCP-Server konfiguriert sein.
  3. DAC anschalten
    Der DAC muss vor dem USB-Musik-Server angeschaltet werden
  4. USB-Musik-Server anschalten
  5. Musik auf den USB-Musik-Server kopieren
    Unter Windows z.B. im Explorer den USB-Musik-Server mit "\\debianmusic" verbinden und Dateien auf den Musikserver kopieren
  6. Remotezugriff einrichten (siehe Punkt E)


D) Remote-Zugriff auf MPD mit iOS, Android und Windows mobile


MPDluxe oder yaMPC für iOS basierte mobile Endgeräte

Die App MPDluxe installieren, aufrufen und unter "Settings / Connection / Host name/address" den Server eintragen: "debianmusic.local" bzw. die IP-Adresse eingeben. Der Port "6600" kann belassen werden, Password wird nicht benötigt

MPDroid oder M.A.L.P. für Android Mobil-Geräte

MPDroid ist schnell und einfach eingerichtet: Nach dem ersten Start wählt man den Verbindungstyp (in den meisten Fällen ist das "WLAN"). Dann bei "Host" die IP-Adresse eintragen (Achtung: nicht den Hostnamen eintragen, wenn die IP Adresse nicht bekannt ist einfach das Tool "Fing" aus dem Play Store laden und damit das Netzwerk scannen) - alle anderen Optionen können unverändert übernommen werden.

sevenMPC für Windows Mobile

Einfach und selbsterklärend ist sevenMPC für Windows basierende Smartphones.


E) Remote-Zugriff auf MPD (Desktop)


Auremo für Windows

Um von Windows-Rechnern einfach auf den Music Player Daemon zugreifen zu können eignet sich Auremo sehr gut. Nach der Installation trägt man lediglich unter "Settings / Server name or adress" die IP-Adresse des Musikservers ein, hier z.B. "192.168.1.151" bzw. "debianmusic". "Enable volume slider" wird deaktiviert, das würde in der oben genannten bitperfekten Konfiguration ohnehin nicht greifen. Mit "Apply and save settings" speichert man das Setup ab und Aremo greift, wenn alles richtig konfiguriert ist, sofort auf den MPD-Server zu. Auremo benötigt Microsoft .NET Framework.

GMPC für Linux

Als grafisches Frontend für MPD auf Linux-System mit grafischer Benutzeroberfläche bietet sich GMPC an, einfach zu installieren über den Paketmanager des Linux-Desktops oder via Terminal mit
sudo apt-get install gmpc.

Cantata für Mac OS X

Für Mac OS X Nutzer ist Cantata einer der besten grafischen Clients für den Music Player Daemon, verfügt über eine Menge von Funktionen und ist sehr anpassbar.


Anmerkungen


Voraussetzungen

Grundkenntnisse von Linux sind von Vorteil, der Umgang mit Editoren wie "Nano" oder "VIM" beim Arbeiten auf der Konsole sollte keine Schwierigkeit darstellen.
Sicherheitshinweis Die hier beschriebene Konfiguration dient dazu, einen Debian Server für das bitgenaue Abspielen von Musikdateien via USB in bestmöglicher Qualität zu ermöglichen. Ein Login mittels "root" ist nicht vorgesehen, d.h. es wird mit dem Standarduser unter Verwendung von "sudo" als root gearbeitet. Der Netzwerk-Sicherheit wird bei dieser Konfiguration keine Beachtung geschenkt - Soweit ihr nach dieser Anleitung konfigurierter Debian-Musik-Server mit dem Internet verbunden ist berücksichtigen Sie dies bitte.