Skype 4.3 for Linux – no sound without pulseaudio – grrrr …

Sometimes, if something does not work on a Linux installation, one may find that frustrating. You hope for the best and try to find a solution – and in contrast to Windows I always had the impression that with Linux you have a chance to solve or circumvent your problems after some time. So, after the frustration about a Linux problem comes the interest in its details, then hope and after some work and information gathering even an improved knowledge about system configuration aspects and eventually some workaround … At least most of the times …

However, yesterday morning, when the cause of anger was a combination of Microsoft, Skype AND PulseAudio, I thought this was too much of an ordeal and there was not much room left for hope. Having last used Skype successfully on Aug, 1st, I needed to use it urgently again yesterday. But I had to learn: It does not work anymore despite the fact that I had not changed my system. No login to the Skype service possible. It took some time and tests to find out that, since some days ago, they only allow for connections from 4.3 Skype clients. After an update to the latest version I could log in to Skype again – however, sound did not work any more on my Linux system with – of course – plain ALSA. My blood pressure broke some records ….

It’s no secret: I neither like Microsoft, nor their proprietary Skype nor PulseAudio as a sound system layer for Linux.

Although, if you once forget about the security and confidentiality risks associated with the use of Skype, there is one thing I have to admit:

Until the beginning of August Skype (4.2) worked quite well on Linux. Something I can not at all say about PulseAudio. And Skype is handy (although only available as a 32 bit solution), it works with good performance world wide – and (unfortunately) many of my customers use it. As I cannot convince all customers to change to a Linux desktop I adapted in the past to this situation and used Skype on a separate Linux system, which I boot on a laptop only for Skype sessions.

Up to now, my motives for that separate Linux were security related. Now, it seems there is one more reason to do so:

Skype 4.2 clients and below for Linux can no longer connect to the Skype service. [Why ???? – a really good question … which makes me somewhat suspicious by the way … ] So, you have to upgrade to Skype 4.3. However, Skype 4.3 ignores any ALSA sound configuration without PulseAudio. It took me some time to find that out. See:

http://www.skype.com/ene/download-skype/skype-for-linux/
and
https://support.skype.com/en/faq/FA10964/how-do-i-adjust-the-sound-settings-on-my-computer-and-in-skype-for-linux.
(Interestingly, in this last article Microsoft only refers to Ubuntu – maybe Skype only will work on Ubuntu, soon?.)

The requirement of PulseAudio – that’s were the real frustration and anger for me begins. Microsoft forces me to use a special Linux sound system layer – which from my own experience generates more problems than it solves under many circumstances and on many systems.

Can a day start worse?

Ok, Microsoft does not force me to use Skype, after all. And, actually, I do not care so much to configure a separate bootable Linux version on my laptop which – for the sake of a working Skype – may use PulseAudio. As long as I do not have to use it otherwise and especially not on my desktops 🙂 . And the good thing with Opensuse is that (up to now !) PulseAudio can be deactivated relatively easily and system wide by YaST without having to reboot everything 🙂 . And even regarding the boot time for a special Linux installation as in my case – shutdown and boot times are pretty short on SSD driven laptops of the present generation. (Ironically
this is partially due to “systemd” from just the same developer as PulseAudio.)

However, one can even understand that and why Microsoft wanted to use a common layer for an existing variety of possible underlying Linux sound architectures. So, the real dilemma is: Why do all major Linux distributions promote and configure a sound system layer and associated applications which after years of upgrades still are a pain in the ass for many Linux users ? One rather desperate person wrote this article last year:

http://www.beastwithin.org/blogs/wolfheadofselfrepair/2013/07/pulseaudio-insidious-linux-malware

Believe me, I understand this guy. I, personally, have had bad experiences with many soundcards and PulseAudio on Opensuse Linux for years. Crackling sound, distorted sound, sliders in “pavumeter” not all working as expected for multichannel cards, sound delay, sudden sound level increases to 100 %, some applications no longer working after PA upgrades, …. you name it. After some time with such experiences and one set of destroyed speakers, it became a habit for me to deactivate or deinstall PulseAudio on almost all of my Opensuse installations directly after the first system setup – which did a lot of good for my nerves, the soundcards and the speakers. Pure ALSA did and does a perfect job for me.

See also the small but interesting statistics on the following blog article:

http://www.techrepublic.com/blog/linux-and-open-source/pulseaudio-an-achilles-heel-that-needs-repair/

I agree with the author of that blog: Either, the Linux distributors

  • find an alternative or finance the work on an alternative
  • or the effort to change PulseAudio to something useful must be intensified.

Not only because of the Steam games engine …

Until then:

  1. I have an additional reason to use a separate Linux installation for Skype.
  2. I am looking for Skype alternatives, usable both on Linux and Windows. Yesterday, I tried Jitsi/XMPP with a jabber account on a German server. Works well within the country, at least. What I like about Jitsi is the end to end encryption. I also like its simple interface and the fact that it is available both for Linux and Windows. However, when I tried to communicate with my wife, who presently is in Norway, the performance with sound and video transmission in parallel was very poor despite ADSL on both sides. But she was using a German server, too. We did not yet try with accounts on German and Norwegian servers. But this is stuff for another article.
  3. I see some positive aspects in Skype’s present dependency on Pulseaudio, too. Maybe, other Linux users now start looking for Skype alternatives, too. And some geeks and Linux companies may find interest in developing such alternatives or supplying servers for it. E.g., Tox (see: https://tox.im/) is under development. Or, the pressure on the PulseAudio people may grow to eventually improve their baby to the level of reasonable usability.

So, eventually, there may be some hope even after yesterday’s suffering …

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.