Asus Xonar D2X unter Linux / Opensuse 13.1 – II

In meinem ersten Artikel über die die Asus Xonar D2X unter Linux
Asus Xonar D2X unter Linux / Opensuse 13.1 – I
hatte ich – etwas oberflächlich und subjektiv – ein paar Aspekte dieser Karte mit denen konkurrierender Karten von Creative verglichen. Nun wenden wir uns folgenden Fragen zu:

  • der Inbetriebnahme der Karte unter Opensuse/KDE über YaST2
  • Wie präsentiert sich die Karte unter KDE – im speziellen unter KMix ?

Bei all dem, was ich nachfolgend darstelle, gilt: Pulseaudio ist natürlich vollständig deaktiviert :-).

Sonst erhält man unter KDE nicht den direkten Zugriff auf die dargestellten Features. Zudem produziert eine Trennung der Soundkanal-Regler unter “pavucontrol” von Pulseaudio für avanciertere Karten faktisch nur Mist. Und wer will schon anfangen, an den schwer zu verstehenden Pulseaudio-Systemdateien herumzufrickeln ?

Ich verlasse mich da lieber auf ALSA und seine (halbwegs) verständlichen Konfigurationsmöglichkeiten – das Leben ist einfach zu kurz, als dass ich mich als normaler End User mit einer fehlerhaften bis nicht funktionierenden und z.T. völlig überzogenen Abstraktionsschicht des Soundsystems namens Pulseaudio herumschlagen möchte. Das Teil hat mich schon zu viele Nerven gekostet … weg damit.

Unter Opensuse 13.1 deaktiviert man Pulseaudio am einfachsten über

YaST2 > Hardware > Sound > Other > PulseAudio Configuration

und durch Betätigen der dortigen Checkbox. Ansonsten findet man Anregungen zur Deaktivierung unter
http://www.beastwithin.org/blogs/wolfheadofselfrepair/2013/07/pulseaudio-insidious-linux-malware

Im Linux-System sollte man für den ordnungsgemäßen Soundbetrieb ferner die erforderlichen Module von ALSA und der “gstreamer”-Software aus einem der einschlägigen Repositories (SuSE Update, Packman, SuSE Multimedia Libs) konsistent installiert haben, z.B.von

  • http://download.opensuse.org/update/13.1/
  • http://download.opensuse.org/repositories/multimedia:/libs/openSUSE_13.1/
  • http://ftp.gwdg.de/pub/linux/packman/suse/openSUSE_13.1/

Bei einer Standardinstallation von Opensuse 13.1 sind die minimal erforderlichen Alsa und Gstreamer-Module schon installiert. Es lohnt sich jedoch, sich mal in anderen als den Opensuse Basis-Repositories nach Erweiterungen umzusehen.

“Gstreamer” wird als Backend für KDE’s Soundabstraktionsschicht “Phonon” eingesetzt. Phonon nutzt letztlich wiederum ALSA – soweit installiert. Das Gstreamer Backend funktioniert übrigens nach meiner Erfahrung inzwischen sehr viel besser als noch vor ca. 2 Jahren, als es unter KDE das “xine”-Backend für Phonon dauerhaft ersetzte. Für mich ein Muster-Beispiel für einen nach einer Übergangszeit wirklich gelungenen Ersatz einer wichtigen Opensource-Komponente durch einen andere.

Grundinstallation der Xonar D2X unter OS 13.1

Voraussetzung für das folgende ist natürlich eine abgeschlossene Installation der Hardware – also der Soundkarte in einem frein PCIe-X1 slot. Man achte dabei auf ein eventuelles boardspezifisches “lane und bandwidth sharing” mit anderen Slots.

Die Inbetriebnahme der Xonar D2X unter Opensuse 13.1 ist relativ simpel. Unter KDE 4 führt man die Basisinstallation z.B. mit Hilfe von

YaST2 > Hardware > Sound

durch.
Man wählt dann die Soundkarte Virtuoso 200 (Xonar D2X) aus der Liste

yast_sound_1_600

aus, drückt dann auf den “Edit-Button” und bestätigt die nachfolgenden Dialoge. Die Soundkarte wird nach dem Verlassen des Konfigurations-Dialogs dann auch direkt als reines Alsa Device gestartet. Benötigt werden für den reibungslosen Betrieb der Asus D2X unter KDE zumindest die Kernelmodule
“snd_virtuoso”, “snd”, “sndcore”, “snd_oxygen_lib”, “snd_pcm”, “snd_page_alloc”, “snd_timer”.
Siehe die Liste der geladenen Kernelmodule weiter unten. Diejenigen, die mit Midi operieren wollen (extra “Board” im Lieferumfang) sollten (vermutlich) auch die Module “snd_mpu401_uart”,”snd_rawmidi”, “snd_seq_device” und “snd_seq” zum Einsatz bringen.

YaST startet je nach erkannter HW diese Module. Sind in einem System mehrere Soundkarten im Spiel erweitert sich die Modulliste entsprechend. Hat man mehrere Soundkarten aktiv, so kann man mit Hilfe von

YaST2 > Hardware > Sound > Other > Set as the primary card

eine der vorhandenen Karten auswählen und als primäre auswählen. Ein anderer direkter Weg zur Soundkarten-Priorisierung wird im nächsten Artikel dieser Serie angesprochen. Ich will auf die Grundkonfiguration mehrerer gleichzeitig aktiver Karten unter KDE und ALSA hier aber nicht weiter eingehen.

Nach der YaST-Installation sehen die KDE-Systemeinstellungen wie folgt aus:

KDE_sound_1_600

Ich empfehle, das System nun komplett neu zu starten. KDE4 und Phonon reagieren nämlich auf die neu vorhandene Karte und stellen dann unter KDE’s “Systemeinstellungen > Hardware > Multimedia” mehr als die puren Alsa Standard Devices dar. Nach dem Neustart ergibt sich auf meinem System unter KDE etwa folgendes Bild (ohne Option erweiterte Geräte):

KDE_sound_2_1000

Mit der aktivierten Option “Erweiterte Geräte” erhalte ich auf meinem System folgende lange Liste:

KDE_sound_3_1000

Sie ist in meinem Fall so komplex, weil ich drei Karten im System installiert habe und diese alle in der Vergangenheit auch erfolgreich getestet habe. Systemd, udev und KDE vergessen das offenbar nicht so ohne weiteres, selbst wenn unter YaST die Module für die anderen Karten im Moment gar nicht aktiviert erscheinen (s. Bild oben). Die erforderlichen Kernel-Module werden von systemd über udev beim Systemstart trotzdem geladen:

mytux:~ # lsmod | grep snd
snd_hda_codec_hdmi     45213  4 
snd_virtuoso           45131  2 
snd_oxygen_lib         45235  1 snd_virtuoso
snd_mpu401_uart        14169  1 snd_oxygen_lib
snd_emu10k1           169303  2 
snd_hda_intel          48171  2 
snd_rawmidi            34523  2 snd_mpu401_uart,snd_emu10k1
snd_ac97_codec        138428  1 snd_emu10k1
snd_hda_codec         205080  2 snd_hda_codec_hdmi,snd_hda_intel
ac97_bus               12730  1 snd_ac97_codec
snd_pcm               110211  6 snd_hda_codec_hdmi,snd_oxygen_lib,<br>snd_emu10k1,snd_hda_intel,<br>snd_ac97_
codec,snd_hda_codec
snd_util_mem           14117  1 snd_emu10k1
snd_hwdep              13602  2 snd_emu10k1,snd_hda_codec
snd_seq                69752  0 
snd_timer              29423  3 snd_emu10k1,snd_pcm,snd_seq
snd_seq_device         14497  3 snd_emu10k1,snd_rawmidi,snd_seq
snd                    87417  26 snd_hda_codec_hdmi,snd_virtuoso,<br>snd_oxygen_lib,snd_mpu401_uart,snd_emu10k1,<br>snd_hda_intel,snd_rawmidi,snd_ac97_codec,<br>snd_hda_codec,snd_pcm,snd_hwdep,<br>snd_seq,snd_timer,snd_seq_device
soundcore              15047  1 snd
snd_page_alloc         18710  3 snd_emu10k1,snd_hda_intel,snd_pcm
mytux:~ # 

Mir ist unklar, ob das eine Inkonsistent zwischen YaST, der sonstigen SuSE-Soundkonfiguration, den systemd- oder udev-Einstellungen darstellt. Vermutlich erkennt udev die onboard Karte sowie die Audigy automatisch und lädt unter systemd die zugehörigen Treiber. Ich habe das im Moment nicht weiter untersucht. Blacklisten wollte ich die Module auch nicht, da ich bisher keine negativen Effekte der geladenen Kernelmodule feststellen konnte. Alsa kann jedenfalls auch auf die anderen Karten zugreifen.

Verfügbare Regler der D2X unter Kmix – Vergleich mit einer Audigy 2

Ich hatte im ersten Beitrag bereits festgestellt, dass eine Asus D2X eher etwas für Puristen ist, die einfach nur guten Sound hören wollen. Dieser Eindruck bestätigt sich im Vergleich zu Creative Karten beim Angebot an einstellbaren Kanälen und Features.

Ich zeige zunächst das vollständige Kanalbild unter Kmix, das uns KDE und Alsa auf Basis eines über die Jahre sehr hoch entwickelten Kernelmoduls bieten. Ich verwende wegen der großen Anzahl der Kanäle 4 Bilder:

Kmix-Regler der Audigy 2

audigy2_1_600
audigy2_2_600
audigy2_3_600
audigy2_4_600

Man ist regelrecht erschlagen von der Vielfalt der Regelungsmöglichkeiten, die in der Regel aber auch funktionieren. Die Audigy 2 ist hier üppigst ausgestattet. (Übrigens: Unter PulseAudio würde man als End User davon leider gar nichts mitbekommen …)

Nun zur Xonar D2X. Sie gibt sich sehr viel bescheidener:

Kmix-Regler der Xonar D2X

xonar_d2x_1_600
xonar_d2x_2_600

Ob dieser bescheidene Eindruck an Regelbarkeit nun allein am Treiber liegt, vermag ich nicht wirklich zu beurteilen. Die Trennung der Output-Kanäle habe ich hier
übrigens unter KMIX manuell vorgenommen.

Keine Klangregelung
Was sofort ins Auge fällt: Es gibt keine Regler für Höhen und Tiefen. Das hatte ich bereits im ersten Beitrag dieser Serie angesprochen. Auch separate Regler für Synth, Wave und PCM sind nicht vorhanden.

Keine Anhebung des Sounds über alle Kanäle unter Beibehaltung der Lautstärkeverhältnisse zwischen den Kanälen
Alle getrennt erscheinenden Regler für die Output-Kanäle ergeben sich aus der Trennung genau eines Master-Kanals. Man kann den Master nicht im Sinne einer gemeinsamen prozentualen Anhebung aller Kanäle – bei ansonsten unterschiedlichen und gleichbleibenden relativen Niveaus der Kanäle zueinander – separat steuern, wie dies etwa bei der Audigy 2 der Fall ist. Dies ist ein weiterer sehr ärgerlicher Punkt der D2X-Karte unter Linux – denn regelt man in der verkürzten Ansicht des Mixers (etwa beim Klick auf das Symbol im Systemabschnitt der Steuerleiste) den Master, so werden alle Output-Kanäle auf ein- und dasselbe Lautstärke-Niveau gesetzt – auch z.B. der Bass-Lautsprecher. Das verändert dann natürlich das Klangbild insgesamt. Und es ist mühsam, die Verhältnisse der Kanäle wieder nachzuregulieren.

Hier erweist es sich als Vorteil, wenn die betriebene Lutsprecher-Anlage einen externen, unabhängig von der Soundkarte bedienbaren Lautstärkeregler aufweist. Dann stellt man mit Kmix einmal die Lautstärkeverhältnisse zwischen den Kanälen auf dem Linux-PC fest ein und regelt die Gesamtlautstärke nur noch über den externen Regler.

Zeit für eine Zwischenbilanz. Rein auf Basis des mageren Erscheinungsbildes unter Kmix kommt man zu folgender Aussage:

Die Asus D2X entpuppt sich (unter Linux) tatsächlich als Karte, die digitalen Input

  • in analoge Signale umwandelt und dann unmodifiziert an die analogen Output-Kanäle weiterreicht oder
  • unmodifiziert an einen optischen Digitalausgang durchreicht.

Wir sprechen im Kern also über einen hochwertigen Digital-Analog-Wandler.
 
Eine digitale und durch den Anwender in Grenzen regelbare Manipulation des eingehenden Sound-Signals wie durch den Soundprozessor der Audigy2 findet entweder von Haus aus nicht statt oder ist eben über die aktuellen Linux-Treiber zumindest nicht zugänglich und/oder regelbar. Die Karte hinterlässt hinsichtlich der Features unter Linux einen wirklich sehr puristisch Eindruck – wie schon gesagt.

Angesichts des Preises der Karte fängt es hier an, doch etwas ärgerlich zu werden …. Ich finde, dass dieser Befund für manch einen ein sehr guter Grund sein kann, die Finger von der Karte zu lassen. Ich möchte es nochmals betonen: Die Karte lohnt sich nicht für einen Linux-Anwender, der gelegentlich neben der Arbeit am PC mal Musik hören will, und der dennoch vielfältige Einstellmöglichkeiten erwartet.

Dieser vorläufige Befund hat aber noch eine weitere Auswirkung (s. nächste Abschnitt).

Einschränkung der Xonar D2X : 2-Kanal-Stereo-Output für Stereo-Input – Spiegelung des Sounds durch Mixer-Schalter nur eingeschränkt möglich

Ohne weitere Schritte gilt:
2 Stereo Kanäle in – 2 Stereo Kanäle out. Wieso sollte man eigentlich mehr erwarten? Nun, von sämtlichen bisher betriebenen Audigy- oder X-Fi-Karten war ich es gewohnt, dass Stereo-Input durch den Soundprozessor automatisch auf andere analoge Output-Kanäle als “Front Left” und “Front Right” vervielfältig bzw. gespiegelt wurde. Natürlich wurden dabei auch ein Center-Speaker und eine Bass-Speaker angemessen berücksichtigt. Bzgl. des Tiefton-Kanals wurde der Sound angeblich sogar frequenzabhängig zugewiesen. Das kann man bei der Xonar D2X für reine ogg-vorbis-, flac-, wav-, mp3-Musik-Player (Amarok, Clementine, Banshee etc.) in einer Standardeinrichtung weitgehend vergessen. Es ist auf einfache
Weise keine umfassende Sound-Verteilung auf 5.1 oder 7.1 Speaker-Systeme möglich …. Kanal für Kanal wird durchgereicht.

Bei Mehrkanal-Input wie z.B. von einem Video-Player wie MPLAYER gilt dann aber auch: da schleift auch die Xonar D2X den Sound kanalgetreu durch. Hier erhält man also echten Mehrkanal-Ton, wenn der Film einen solchen aufwies.

Nun könnte man bzgl. der reinen Stereo-Musikwiedergabe theoretisch mit der Einschränkung des 2-Kanal-Outputs leben, aber mich persönlich hat das erstmal frustriert. Schließlich habe ich – wie im letzten Abschnitt erwähnt – eine eine kleine billige Mehrkanal-Anlage an meinem Linux-System hängen. Und manchmal hätte man gerne – speziell bei SW-Entwicklungsarbeiten – eine Rundum-Beschallung.

Was also tun? Ein erste einfache Einstellmöglichkeit liefert die Karte doch ! Auf den Kmix-Bildern weiter oben erkennt man bei genauerem Hinsehen einen Schalter für einen “Stereo-Upmix”. Aber nicht zu früh gefreut: Dieser Schalter erlaubt zwar eine Spiegelung

Front Left => Rear Left (und ggf. => Side Left)
Front Right => Rear Right (und ggf. => Side Right)

Ein vorhandener Centre Speaker und ein Bass Speaker bleiben dabei aber leider außen vor.

Linux wäre nicht Linux, wenn es hierfür nicht eine Lösung gäbe. Und dazu müssen wir im nächsten Beitrag
Asus Xonar D2X unter Linux / Opensuse 13.1 – III – Alsa Upmix 2.0 auf 5.1
ein klein wenig an einer persönlichen Alsa-Konfiguration basteln.

Asus Xonar D2X unter Linux / Opensuse 13.1 – I

In meinem Linux-PCs habe ich seit ca. einem Jahrzehnt eine Audigy 2 Platinum am Werkeln, die mir schon seit OSS-Zeiten gute Dienste geleistet hat. Leider gibt es die Karte nur noch antiquarisch und auch die PCI-Slots werden auf modernen Mainboards eine Seltenheit. Aus diesem Grunde war ich seit längerem an einer Alternative interessiert.

Ein Bekannter von mir hatte im Frühjahr bei Amazon gute Testberichte zur Xonar D2X PCIe gelesen. Er hat sich schließlich die Karte gekauft und mich gebeten, sie auf seinem PC unter Opensuse 13.1 zum Laufen zubringen. Ich habe mir dann vorab erlaubt, zunächst auf meinem eigenen Systemen Tests durchzuführen. Inzwischen besitze ich die Karte selber.

RM_D2X_600

Daten zu dieser Karte, die 2008 auf den Markt kam und immer noch ca. 120 Euro kostet, findet man z.B. hier:

http://www.guru3d.com/articles_pages/asus_xonar_d2x_sound_card_review,1.html
http://sound-cards-review.toptenreviews.com/asus-xonar-d2x-review.html
http://www.bit-tech.net/hardware/2008/01/13/asus_xonar_d2x_pci-express_soundcard/1
http://www.hardwareluxx.de/index.php/artikel/hardware/multimedia/2255-asus-xonar-d2x.html?start=1
http://www.overclockers.co.uk/showproduct.php?prodid=SC-001-AS&tool=3
http://www.thinkcomputers.org/asus-xonar-dx2-sound-card-review/1/

Die Tatsache, das die Karte schon etwas älter ist, bewerte ich nicht als negativ – insbesondere nicht unter Linux. Es ist dann einfach wahrscheinlicher, dass die Alsa-Integration ausgereift ist.

Bevor ich in einem nachfolgenden Beitrag auf die Grund-Konfiguration unter Opensuse 13.1 eingehe, möchte ich an dieser Stelle zunächst ein paar Worte zur Anschaffung und Einschätzung der Karte verlieren. Vorausschicken will ich, dass ich zur Zeit ein reiner Audio-Endverbraucher bin und beim Arbeiten gelegentlich Musik sowohl über Lautsprecher als auch Kopfhörer höre.

Die Lautsprecher an meinem Arbeitsplatz entstammen einem in die Jahre gekommenen, billigen Inspire T7900 7.1 Speaker Set von Creative Lautsprecher. Eine optische Verbindung zu einer höherwertigen Stereo-Anlage mit Elac 4Pi Lautsprechern wird gelegentlich benutzt. Meistens höre ich allerdings Musik (Klassik, Jazz, Heavy Metal) mit einem Kopfhörer (Sennheiser HD600). Spiele und zugehörige Soundeffekte haben für mich kaum Bedeutung. Zum Spielen bleibt mir schlicht zu wenig Zeit – echter Surround-Sound spielt daher für mich keine entscheidende Rolle. Wohl aber ein UpMix von Stereo auf 7.1 Kanäle.

Alternative zur D2X: 24bit-Karten von Creative

Sowohl meine “Audigy 2 Platinum” wird durch passende Kernelmodule und Alsa unter Linux hervorragend unterstützt. Wie so oft, muss man allerdings Pulseaudio komplett abschalten, um in den Genuss einer vollständig und vernünftig bedienbaren Audio-Karte zu kommen. Zu Pulseaudio und seinen Bugs habe ich sowieso nur einen einzigen Kommentar: Bei Opensuse mit Hilfe von Yast >> Hardware >> Sound >> Andere” komplett deaktivieren und statt dessen mit “Alsa pur” arbeiten. 🙂

Auf einem anderen System PC nutze ich eine Creative X-Fi-
Platinum – allerdings ohne Creatives Frontpanel – und bin damit ähnlich zufrieden wie mit der Audigy 2. Auch hier ist der Einsatz unter Linux inzwischen relativ problemfrei. Angeblich soll ja die Klangqualität der X-Fi Titanium deutlich besser als die der Audigy 2 sein. Na ja, auf den bei uns angeschlossenen Lautsprechern hört man davon nicht so viel. Bei Benutzung von Kopfhörern werden die Unterschiede eher spürbar.

Vorteil der alternativen Creative-Karten

Unter Alsa kommt bei beiden Creative-Karten direkt ein großer Vorteil zum Tragen, der für KDE4 User durchaus von Bedeutung ist:

Höhen und Bass können mit Kmix direkt über den Audio-Prozessor der Creative Karten und damit systemweit geregelt werden.

Zu alten KDE 3.5 Zeiten hätte man darüber nur gelächelt. Die Elimination eines systemweiten Equalizers unter KDE 4.x hat mir das Lachen in der Vergangenheit eher vergehen lassen. Schließlich hat man im Normalfall keine HiFi-Anlage mit allem Schnickschnack an seinen PC angeschlossen. Eher eben irgendwelche Stereo- oder Surround-Speaker in der 100 bis 200 Euro-Klasse. Und dann will man doch gerne die Schwächen der Lautsprecher systemweit kompensieren. Eben durch einen Equalizer des Desktops – oder durch direkte Einstellungen der Soundkarte über Kmix. Dieses Problem ist auf Laptops mit kleinem angeschlossenem Lautsprecher natürlich noch drängender.

Etwas Ähnliches gilt zudem für die Kompensation nachlassender Hörfähigkeiten älterer Mitbürger, zu denen ich mich inzwischen selbst zählen darf (wir haben andere wichtige Qualitäten 🙂 ). Betroffen ist ja meist die Fähigkeit zur Differenzierung im Hochton-Bereich.

Den tragenden KDE-Entwicklern war das Thema eines systemweiten Equalizers aber leider egal oder zu uninteressant – trotz der Einführung der Zwischenschicht Phonon für darunterliegende Audio-Systeme. Gott sei Dank haben wenigstens die Entwickler der verschiedenen Audio-Player diesem KDE-Mangel für ihre eigenen Applikationen abgeholfen – siehe u.a. Clementine und auch Amarok. Ergänzend ist eine systemweite Höhen- und Tiefen-Regelung, wie sie die Audigy2- oder X-Fi-Titanium-Karten von Creative bieten, ein ganz brauchbarer Ersatz für einen fehlenden systemweiten Equalizer.

Zur Xonar D2X und ihrem Klangbild

Den Luxus einer systemweiten Höhen- oder Bass-Regelung wird man bei der Xonar leider nicht bekommen – jedenfalls nicht ohne zusätzliche Einbindung anderer Linux-SW-Module (wie z.B. Ladspa). Warum also doch die Entscheidung für die relativ teure Xonar D2X?

Ganz einfach: Es ist letztlich die für meinen Geschmack und mein Gehör die bessere Karte. Das merkt man aber erst, wenn man mal auf ein und demselben System sowohl die Audigy2, die Titanium als auch die Xonar D2X installiert hat und zwischen den Karten oder deren Ausgängen hin- und herschalten kann. Mit einem höherwertigen Kopfhörer. In meinem Fall durch einfaches Umstecken der Kopfhörer-Stecker und durch Umschalten unter Phonon.

Zu der in diesem Zusammenhang berechtigten Frage, wie man mit Hilfe von Alsa simultan Sound auf den Kanälen zweier installierter Soundkarten abspielen kann, siehe die Links ganz unten. Bei der Hörprobe sollte man natürlich alle Equalizer-Funktionalitäten irgendwelcher Player abschalten. Resultat:

Die Xonar D2X hat meiner Meinung nach ein klareres, konturreicheres Klangbild als die Creative Karten. Ich kann es nicht anders beschreiben. Die Verortung von Instrumenten wirkt präziser, schärfer. In jedem Fall gegenüber der Audigy 2 als auch gegenüber der XFi Titanium. Eine gute Platte zum Testen ist etwa “Grace” von Kjetil Bjørnstad. Tests von Heavy Metal Musik zeigen einen knackigen Bass, der nach meinem Gehör nicht so übertrieben und künstlich wie bei den Creative Karten daherkommt.

Der Rauschabstand ist mit 118 dB
hervorragend. Rauschen ist somit in der Praxis nicht wahrnehmbar.

Für wen ist die Xonar D2X etwas ?

Wer also sollte als die gut 125 Euro in eine Xonar D2X investieren? Aus meiner Sicht Leute, die Musik unverfälscht vom PC über einen hochwertigen Kopfhörer oder eine hochwertige Sound-Anlage hören wollen. Am besten im wav- oder flac-Format.

Die Karte lohnt sich keinesfalls für Spiele; sie lohnt sich definitiv auch nicht bei Einsatz billiger Lautsprecher oder Surround-Sets für PCs.

Was ist an der Xonar D2X störend?

  • Viel weniger Regelmöglichkeiten der Soundverarbeitung als z.B. bei Creative Audigy Karten
    Wir werden im nachfolgenden Artikel feststellen, dass das Spektrum der Regelmöglichkeiten der Karte unter Linux im Vergleich zu Creative-Karten sehr begrenzt ist.
  • Begrenzte Default Upmix-Möglichkeiten:
    Einen Upmix von Stereo auf 5.1, 6.1 bekommt man standardmäßig auch unter Alsa und Kmix nicht frei Haus. Unter Alsa und Kmix wird ein Upmix von 2.0 auf 2.1, 4.0, 7.1 angeboten. Diese Upmix-Varianten funktionieren auch. Will man für andere Situationen einen Upmix, muss entweder die Surround-Anlage dafür einen Schalter bieten – oder man muss etwas tiefer in die Alsa Konfigurationskiste greifen. Hierzu im nächsten Beitrag mehr. Das Thema Upmix lösen die Creative-Karten und ihre Treiber besser – nämlich über ihren internen Prozesssor.
  • Kein Front-Panel-Anschluss
    Es gibt keinen Front-Panel-Anschluss auf der Karte! Das ist völlig nervig! Auch für die Kopfhörer muss man hinten an den PC und ihre analogen Ausgänge! Und auch dort wird kein separater Ausgang angeboten, sondern eben der analoge Ausgang für die Front-Stereo-Kanäle. Da hängt ja aber im Normalfall eine analoge Verbindung zum Verstärker der Soundanlage dran – zumindest dann, wenn man dafür nicht den optischen Ausgang benutzen kann. Sprich: Wenn die Rückseite des PCs schlecht zugänglich ist, muss man sich einen Adapter/Schalter beschaffen oder basteln, der ein Umschalten erlaubt. Aus meiner Sicht ist das ein Design-Fehler!
    Gott sei Dank, hat der Verstärker für das Inspire T7900 7.1 Set einen beweglichen, kabelgebundenen Controller für die manuelle Regelung von Lautstärke und Bass – und an dem Teil befindet sich auch ein Kopfhörerausgang, der die Lautsprecher abschaltet. Damit muss ich die hinteren Anschlüsse der Karte für den Kopfhörer nicht benutzen.
  • Extra Stromanschluss mit veralteten Floppy Steckern erforderlich
    Die Karte erfordert einen zusätzlichen Stromanschluss per Floppy-Strom-Kabel – sonst weigert sie sich zu funktionieren. Ein entsprechendes Kabel wird jedoch nicht mitgeliefert. Ich selbst hatte solche Kabel aber noch vorrätig. Der Anschluss wirkt altertümlich; eine etwas wackelige Angelegenheit.

Sonstige Verarbeitung der Xonar D2X

Ansonsten gibt es an der Verarbeitung der Karte kaum etwas zu meckern. Für eine gute Abschirmung ist durch eine kastenartige EMI-Ummantelung gesorgt. Die kann wegen ihrer Ausdehnung evtl. bei voluminöseren Karten in der Nachbarschaft Probleme bereiten. Schwierigkeiten mit der Wärmeabfuhr konnte ich bislang nicht feststellen, obwohl die Karte direkt über einer Nvidia GTX 460 Grafik-Karte verbaut ist. Die analogen Anschlüsse hinten sind veredelt. Auf den Beleuchtungsschnickschnak – ja, die Anschlüsse leuchten in unterschiedlichen Farben ! – hätte ich allerdings auch gut verzichten können. Ist eher was für Modder.

Im nächsten Beitrag

Asus Xonar D2X unter Linux /
Opensuse 13.1 – II

stelle ich dar, wie die (einfache) Basis-Installation unter Opensuse 13.1 erfolgt und welche Regelmöglichkeiten z.B. Kmix danach für die Karte anbietet. Wir werden dann merken, dass die Einstellmöglichkeiten im Vergleich zu einer Audigy (leider) dramatisch geringer ausfallen. In einem weiteren danach folgenden Artikel
Asus Xonar D2X unter Linux / Opensuse 13.1 – III – Alsa Upmix 2.0 auf 5.1
liefere ich eine einfache “.asoundrc”-Konfiguration für evtl. Upmix-Probleme nach.

Links zum parallelen Einsatz mehrer Soundkarten unter Alsa

http://slack4dummies.blogspot.de/2012/02/alsa-multiple-output-multiple-sound.html
https://www.6by9.net/output-to-multiple-audio-devices-with-alsa/

Opensuse 13.1 – Kernelmodule beim Booten statisch laden

Nach einer kompletten Neuinstallation von Opensuse 13.1 auf einem meiner Systeme gab es keinen Eintrag mehr für das automatische, statische Laden von Kernelmodulen beim Booten in YaST’s Modul “/etc/sysconfig”-editor”. Normalerweise fand sich ein solcher Eintrag unter:

YaST2 >> Editor für /etc/sysconfig >> System >> Kernel >> MODULES_LOADED_ON_BOOT

Unter OS 13.1 fehlt der Punkt MODULES_LOADED_ON_BOOT dagegen einfach. Ich hatte diese Konfigurationsmöglichkeit in der Vergangenheit immer mal wieder benutzt, um bestimmte Module automatisch zur Bootzeit zu laden. Ein Beispiel ist etwa das Module “loop” zur Behandlung von Loop-Devices. Solche Devices brauche ich etwa im Zusammenhang mit Tests von virtuellen Maschinen oder aber um Realcrypt-Container ins Filesystem einzuhängen.

YaST2’s “/etc/sysconfig”-Editor-Modul editiert unter “System >> Kernel” über Schlüsselwörter entsprechende Einträge in der Datei “/etc/sysconfig/kernel“. Natürlich konnte man diese Datei auch manuell editieren. Unter OS 13.1 findet sich in der Datei selbst kein Bereich mehr zum Schlüsselwort MODULES_LOADED_ON_BOOT.

Dass der Punkt zum Laden von Kernelmodulen unter YaST2 nicht mehr automatisch vorhanden ist, war mir bislang nicht aufgefallen, da ich die meisten meiner Systeme von Opensuse 12.3 aus upgegradet hatte. Offenbar wurden auf den upgegradeten Maschinen die ursprünglich unter MODULES_LOADED_ON_BOOT angegebenen Module aber anstandslos geladen.

Anlass genug, den Änderungen auf den Grund zu gehen.

Korrespondierende Einstellungen konnte man früher übrigens unter Red Hat in der Datei “/etc/rc.modules”, unter Arch Linux unter der “/etc/rc.conf” und unter Debian in der “/etc/modules” vornehmen. Wenn sich bewährte sysconfig-Dinge im einstmals überschaubaren, script-getriebenen Boot-Prozess plötzlich verändern oder entfernt werden, liegt der Verdacht nahe, dass das mit Auswirkungen der Einführung von “systemd” zu tun hat.

Tatsächlich ist dem auch in diesem Fall so. Eigentlich logischerweise – ob man systemd nun mag oder nicht …. Immerhin sorgt es nun zwischen den Distributionen, die heute “systemd” einsetzen, für eine gewisse Vereinheitlichung – auch wenn bisherige Einstellmöglichkeiten über bewährte Admin-Tools dadurch wegfallen.

Interessanterweise legte aber der bei einer Internet-Recherche auftauchende Artikel
http://b.agilob.net/opensuse-how-to-install-truecrypt/
nahe, dass das Schlüsselwort MODULES_LOADED_ON_BOOT in der Datei “/etc/sysconfig/kernel” auch von Opensuse 13.1 sehr wohl noch beachtet wird.

Nach einem Blick auf die systemd-bedingten Änderungen diskutiere ich weiter unten daher 3 Wege, um Kernelmodule unter Opensuse 13.1 gezielt zu laden – ohne dies in Grub oder Grub2 zu verankern. Zukunftsträchtig ist wegen “systemd” vermutlich nur der letzte der Wege sein, obwohl gerade das dortige Vorgehen nicht mehr die Möglichkeit bietet, YaST zur Konfiguration heranzuziehen. Ich beschreibe das Vorgehen jeweils am Beispiel des Moduls “loop”. Zunächst gehe ich aber auf das statische Laden von Kernelmodulen unter “systemd”-Bedingungen ein.

systemd und das statische Laden von Kernel-Modulen im Boot-Prozess

systemd liegt u.a. die Vorstellung zugrunde, dass der Boot-Prozess letztlich das Bereitstellen von Service-, Socket, Mount und Device-Units für bestimmte Target-Zustände leistet und dabei bestehende Abhängigkeiten auflöst. Im Rahmen dieser Philosophie erwartet man einen relativ freistehenden elementaren Service, der Kernel-Module lädt. Wie das prinzipiell funktioniert beschreiben folgende Artikel:
http://0pointer.de/blog/projects/the-new-configuration-files
https://wiki.archlinux.org/index.php/systemd
https://wiki.archlinux.de/title/Wechsel_von_Sysvinit_zu_systemd
https://wiki.archlinux.de/title/Kernelmodule#Module_beim_Systemstart_automatisch_laden

Wir zitieren aus dem zweiten wiki-Artikel für Arch-Linux:

Alle Module die bisher in der rc.conf bei MODULES=() eingetragen waren müssen jetzt in eine Datei in /etc/modules-load.d/ eingetragen werden.

Unter Opensuse 13.1 gilt das Analoge für diejenigen Module, die bisher in der “/etc/sysconfig/kernel” unter dem Parameter MODULES_LOADED_ON_BOOT eingetragen wurden.

Und weiter aus dem dritten wiki-Arch-Artikel:

Die meisten benötigten Module werden beim Systemstart vom Init System erkannt und automatisch geladen. Es kann allerdings vorkommen, dass einige Module nicht automatisch erkannt werden. Sollen diese dennoch bei jedem Systemstart geladen werden, müssen sie in eine Datei mit der Endung .conf im Verzeichnis /etc/modules-load.d/ eingetragen werden. Der Name der Datei ist frei wählbar, sie muss nur die Endung .conf haben. Zum Beispiel /etc/modules-load.d/my-modules.conf. Die zu ladenden Module werden zeilenweise in diese Datei eingetragen.

Wie systemd konkret mit einem solchen File unter “/etc/modules-load.d/” umgeht, beschreibt konkret die Antwort auf eine entsprechende Frage in folgendem Forum
http://unix.stackexchange.com/questions/71064/automate-modprobe-command-at-boot-time-on-fedora

Weitere Auskünfte geben folgende man-Seiten:

man systemd-modules-load.service
man modules-load.d

Mit eigenen Worten zusammengefasst:

Unter systemd sorgt ein spezieller Service “systemd-modules-load.service” für das gezielte statische Laden von Kernelmodulen. Die Service-Unit “systemd-modules-load.service” wird spätestens vom systemd-Target “sysinit.target” angefordert. Welche Module durch diese spezielle Unit geladen werden, wird u.a. über Dateien der Form “*.conf” unter dem Verzeichnis “/etc/modules-load.d/” gesteuert. In jeder dieser Dateien kann eine Liste von Modulen angegeben werden. Jedes Modul wird in eine separate Zeile eingetragen.

Hingewiesen sei darauf, dass der Service neben den dateien unter “/etc/modules-load.d/”
auch noch Dateien aus anderen Verzeichnissen aufsammelt! Vorgegeben ist das durch die Datei
“/usr/lib/systemd/system/sysinit.target.wants/systemd-modules-load.service”:

# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
 
[Unit]
Description=Load Kernel Modules
Documentation=man:systemd-modules-load.service(8) man:modules-load.d(5)
DefaultDependencies=no
Conflicts=shutdown.target
After=systemd-readahead-collect.service systemd-readahead-replay.service
Before=sysinit.target shutdown.target
ConditionCapability=CAP_SYS_MODULE
ConditionPathExists=|/etc/sysconfig/kernel
ConditionDirectoryNotEmpty=|/lib/modules-load.d
ConditionDirectoryNotEmpty=|/usr/lib/modules-load.d
ConditionDirectoryNotEmpty=|/usr/local/lib/modules-load.d
ConditionDirectoryNotEmpty=|/etc/modules-load.d
ConditionDirectoryNotEmpty=|/run/modules-load.d
r
ConditionKernelCommandLine=|modules-load
ConditionKernelCommandLine=|rd.modules-load
 
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/lib/systemd/systemd-modules-load

Siehe auch:
https://disunitedstates.org/wiki/index.php/Systemd-modules-load.service

Wie man die Module nach Einsatzzwecken in separaten Dateien unter “/etc/modules-load.d/” organisiert, kann man selbst festlegen. Ich habe nicht überprüft, ob eine Nummernvergabe am Anfang des Namens im Stile “nn-name.conf”, wie sie unter Opensuse z.B. im Verzeichnis “/etc/modprobe.d/” vorgenommen wird, auch im Verzeichnis “etc/modules-load.d/” wirksam wirkt, um eine Reihenfolge der Abarbeitung zu erzwingen. Wahrscheinlich nicht. Was wiederum zu Problemen führen kann – siehe
http://archlinux.2023198.n4.nabble.com/systemd-fails-to-set-console-font-td4657110.html

Was ist zu tun, wenn dem Modul auch noch Parameter übergeben werden sollen? Hier hat sich eigentlich nicht viel geändert – im zweiten Artikel findet man eine Beschreibung des klassischen Vorgehens, um den geladenen Modulen Parameter zu übergeben. Dazu sind zusätzliche Dateien unter “/etc/modeprobe.d/” anzulegen.

Unter dem Verzeichnis “/etc/modprobe.d” findet man unter OS 13.1 in der Regel denn auch mit hoher Wahrscheinlichkeit einige Beispiele (u.a. für die jeweilie Soundkarte), die zeigen, wie die Übergabe von Parametern funktioniert. Zur Namensgebung und der Bedeutung der spezifischen Ziffern (seit OS 11.2) siehe
http://forums.opensuse.org/showthread.php/419615-11-2-new-modprobe-d-naming-convention
und dort den letzten Beitrag. Oder auch an einem konkreten Beispiel:
http://en.opensuse.org/SDB:Intel-HDA_sound_problems

Unter Opensuse kann man spezifische lokale Parameterübergaben demnach am besten in einer Datei

/etc/modprobe.d/99-local.conf

abhandeln.

Siehe zur Parameterübergabe an die Module aber auch:
https://bbs.archlinux.org/viewtopic.php?id=176942
http://www.opensuse-forum.de/allgemeines/opensuse-installation/8793-gel%C3%B6st-deprecated-config-file/

Wodurch wurde das früher MODULES_LOADED_ON_BOOT in der Datei “/etc/sysconfig/kernel” unter OS 13.1 ersetzt?

Nach dem erarbeiteten Wissen zum Laden von Kernelmodulen über die systemd-Service-Unit “systemd-modules-load.service” liegt es nahe, dass die unter älteren Opensuse-Versionenen vorgebenen Einträge in “/etc/sysconfig/kernel” beim Upgrade auf OS 13.1 in eine Datei unter “/etc/modules-load.d” verschoben wurden. Tatsächlich findet man dort auf meinen upgegradeten Systemen die Datei

/etc/modules-load.d/MODULES_LOADED_ON_BOOT.conf

Die enthält erwartungsgemäß alle ursprünglich mal über YaST vorgebenen statisch zu ladenden Module.

Ich beschreibe nachfolgend nun drei Wege, wie man unter OS 13.1 z.B. das Modul “loop” statisch beim Booten laden kann.

Weg 1 – händischer Eintrag MODULES_LOADED_ON_BOOT in der Datei
“/etc/sysconfig/kernel”

Folgender händischer Eintrag am Ende der Datei “/etc/sysconfig/kernel” führt zum Erfolg :

## Type: string
## Default: “”
#

# Old fashioned way to load kernel modules under OS 13.1
# Added by root, 27.05.2014
MODULES_LOADED_ON_BOOT=”loop”

Für die Dateiänderung sind natürlich root-Rechte erforderlich. Beim nächsten Start von OS 13.1 wird das Kernel-Module “loop” tatsächlich geladen.

Netterweise taucht nun auch in YaST’s “/etc/sysconfig”-Editor wieder die Möglichkeit zum Editieren des Eintages auf. Ich nehme an, dass Weg 1 z.Z. noch durch nicht bereinigte YaST-Überbleibsel aus vergangenen Zeiten ermöglicht wird. Erweitert oder ändert man übrigens den händisch vorgenommenen Datei-Eintrag mittels YaST’s sysconfig-Editor und nicht durch direktes Bearbeiten der Datei, so wird der Eintrag von YaST auch an “mkinitrd” übergeben. Ich weiß nicht, wie man das unterbinden kann. Notwendig ist diese Übergabe nicht; eigentlich sollten über mkinitrd ja nur Module zu beginn des Bootprozesses zum Tragen kommen, die zum Auslesen von Boot-Devices und zum Ansteuern anderer wichtiger Hardware unumgänglich sind.

Weg 2 – Ergänzen der Module unter
YaST2 >> Editor für /etc/sysconfig >> System >> Kernel >> INITRD_MODULES

Bei diesem Weg verankert man das Laden des gewünschten Modules explizit über “mkinitrd” in die initiale Auswertung eines “initramfs” cpio-Archivs des Kernels (im RAM). Ein totaler Overkill – aber möglich. Natürlich könnte man den Abschnitt zu INITRD_MODULES auch direkt in der Datei “/etc/sysconfig/kernel” editieren. Dieser zweite Weg gefällt mir nicht, weil er explizit ein Modul in das “initramfs”-cpio-Archiv des Kernels verlagert, das aus meiner Sicht dort eigentlich wenig zu suchen hat.

Weg 3 – Anlegen einer Datei
“/etc/modules-load.d/MODULES_LOADED_ON_BOOT.conf”
mit einer Zeile zu dem gewünschten Modul

Der Inhalt der Datei “/etc/modules-load.d/MODULES_LOADED_ON_BOOT.conf” ist in unserem Beispiel für das Modul “loop” denkbar simpel:

mytux:~ # echo loop > /etc/modules-load.d/MODULES_LOADED_ON_BOOT.conf
mytux:~ # cat /etc/modules-load.d/MODULES_LOADED_ON_BOOT.conf
loop

Weitere benötigte statische Module ergänzt man durch neue Zeilen pro Modul. Natürlich hätte man die Datei auch “loop.conf” nennen können. Ich finde die auch von Opensuse selbst gewählten Namen aber instruktiv.

Nach dem erneuten Starten des Systems kann man den Status des zugehörigen systemd-Services abfragen mit:

mytux:~ # systemctl status systemd-modules-load.service
systemd-modules-load.service – Load Kernel Modules
Loaded: loaded (/usr/lib/systemd/system/systemd-modules-load.service; static)
Active: active (exited) since Tue 2014-05-27 17:36:06 CEST; 1min 2s ago
Docs: man:systemd-modules-load.service(8)
man:modules-load.d(5)
Process: 353 ExecStart=/usr/lib/systemd/systemd-modules-load (code=exited, status=0/SUCCESS)
Main PID: 353 (code=exited, status=0/SUCCESS)

May 27 17:36:06 mytux systemd[1]: Starting Load Kernel Modules…
May 27 17:36:06 mytux systemd-modules-load[353]: Inserted module ‘loop’
May 27 17:36:06 rux systemd[1]: Started Load Kernel Modules.
 
 
mytux:~ # lsmod | grep loop
loop 27985 0
mytux:~ #

Obwohl ich systemd nicht mag, empfehle ich, diesen Weg 3 zum statischen Laden von Kernelmodulen ab Opensuse 13.1 zu gehen. Auch wenn man dann auf eine einfache Konfiguration mit YaST verzichten muss.