Tipps und Tricks rund um Linux

Im Folgenden wollen wir ein paar Befehle für die Kommandozeile von Linux® zeigen, mit denen Du die Soundkarte steuern kannst. Wir setzen voraus, dass ALSA mit PipeWire oder PulseAudio installiert ist. Ebenso setzen wir voraus, dass die Soundkarte im "Full-Featured Mode" gestartet wurde. Näheres dazu haben wir im Handbuch beschrieben.

Bei den meisten Linux®-Distributionen ist das der Fall. Darüber hinaus solltest Du noch die Programme ffmpeg, ffplay, alsamixer, amixer und pactl installieren. Bei Ubuntu musst Du dazu z.B. die Pakete ffmpeg und alsa-utils installieren. Bei anderen Linux®-Distributionen kannst Du Dich bzgl. der Installation der oben genannten Programme auf den Webseiten des Distributors oder bei einschlägigen Foren informieren.

ALSA vs. Sound Server

Bei der Verwendung von Linux® ist typischerweise ein sogenannter Sound Server wie z.B. PulseAudio oder PipeWire installiert. Diese Sound Server zeigen die Bedienelemente der Audio-Hardware nicht an. Die Lautstärkeregler dieser Sound Server sind rein softwarebasiert und verändern daher nicht das entsprechende Bedienelement auf der Soundkarte. Die Sound Server kommunizieren nicht direkt mit der Audio-Hardware, sondern nur mit einer Abstraktionsschicht namens ALSA (Advanced Linux Sound Architecture). Mit ALSA steht eine vereinheitlichte Programmierschnittstelle zur Verfügung, die es einem Programm erlauben, wie z.B. auch einem Sound Server, jede von ALSA unterstützte Soundkarte anzusteuern, ohne sich um die spezifischen Implementierungsdetails für die jeweilige Audio-Hardware kümmern zu müssen. Natürlich ist es auch möglich, mit einem Programm direkt über ALSA Audio auszugeben. Allerdings bieten die Sound Server einige Komfortfunktionen, die bei ALSA nicht zur Verfügung stehen oder nur mit einigem Aufwand zu konfigurieren sind.

ALSA mit textbasierten Oberfläche steuern

Bei ALSA können die Zustände der Steuerelemente mit folgendem Kommando angezeigt und auch geändert werden:

alsamixer -c DSC8

Das Programm lässt sich im Wesentlichen durch die Cursortasten und Leertaste steuern. Weiteres ist in der Hilfe des Programms beschrieben.

Lautstärke und Stummschaltung

Genau genommen hast Du zwei Lautstärkeregler. Ein Regler steuert die Lautstärke beim Sound Server und der andere bei ALSA. Bei den meisten Distributionen kannst Du die Lautstärke des Sound Servers schon über die Multimedia-Tasten Deiner Tastatur ohne weiteres Zutun regeln. Dann ist es sinnvoll, die Lautstärke bei ALSA auf das Maximum zu stellen ändern, sofern das noch nicht der Fall ist. Mit dem Programm alsamixer, das wir oben schon beschrieben haben, kannst Du die Lautstärke anpassen.

Lautstärkeregelung bei ALSA

Sämtliche Lautstärkeregler abfragen:

amixer -D hw:DSC8 sget Volume

Hauptregler abfragen:

amixer -D hw:DSC8 sget Volume,1

Die Lautstärke kann in dem Bereich 0-127 absolut gesetzt werden, wobei 0 unhörbar leise ist und 127 die maximale Lautstärke repräsentiert:

amixer -D hw:DSC8 sset Volume,1 10

Die Lautstärke kann prozentual absolut gesetzt werden, wobei 0% unhörbar leise ist und 100% die maximale Lautstärke repräsentiert:

amixer -D hw:DSC8 sset Volume,1 15%

Die Lautstärke kann aber auch relativ erhöht werden mit dem Befehl:

amixer -D hw:DSC8 sset Volume,1 3%+

oder

amixer -D hw:DSC8 sset Volume,1 5+

Entsprechend kann die Lautstärke aber auch relativ reduziert werden mit dem Befehl:

amixer -D hw:DSC8 sset Volume,1 3%-

oder

amixer -D hw:DSC8 sset Volume,1 5-

Das folgende Kommando schaltet die Ausgabe stumm:

amixer -D hw:DSC8 sset Volume,1 mute

Das folgende Kommando schaltet die Stummschaltung der Ausgabe aus:

amixer -D hw:DSC8 sset Volume,1 unmute

Die Stummschaltung der Ausgabe kannst Du wie folgt umschalten:

amixer -D -D hw:DSC8 sset Volume,1 toggle

Lautstärkeregelung beim Sound Server über ALSA

Der Sound Server PipeWire und PulseAudio haben nur einen Lautstärkeregler. Die Kommandos sind ähnlich zu ALSA. Es wird nur der Gerätename hw:DSC8 mit pulse ersetzt und der Name des Reglers von Volume,1 auf Master geändert. Um die Lautstärke abzufragen, musst Du also folgenden Befehl ausführen:

amixer -D pulse sget Master

Die anderen Befehle dokumentieren wir hier nicht weiter, da diese analog umgeschrieben werden können.

Es gibt noch einen Unterschied zu ALSA. Der Wertebereich beim Sound Server geht von 0 bis 65535.

Lautstärkeregelung bei Pipewire

Bei Pipewire kannst Du das Kommandozeilentool wpctrl benutzen, um jede Einstellung von PipeWire anzuschauen und zu verändern. Der Wertebereich der Lautstärke geht bei Pipewire von 0 bis 1, wobei 0 die minmale und 1 die maximale Lautstärke repräsentiert. Es sind auch Nachkommastellen möglich wie z.B. 0.5.

Die aktuelle Lautstärke kannst Du Dir wie folgt anzeigen:

wpctl get-volume @DEFAULT_AUDIO_SINK@

Die Lautstärke kannst Du z.B. absolut auf 0.75 setzen:

wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.75

Dieses entspricht 75% der maximalen Lautstärke. Alternativ kannst Du auch folgendes schreiben:

wpctl set-volume @DEFAULT_AUDIO_SINK@ 75%

Die Lautstärke kannst Du auch relativ um 5% verringern mit:

wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-

Mit folgendem Kommando kannst du die Lautstärke um 5% erhöhen:

wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+

Die Ausgabe kannst Du mit folgendem Kommando stumm schalten:

wpctl set-mute @DEFAULT_AUDIO_SINK@ 1

Und mit diesem Kommando schaltest Du die Stummschaltung aus:

wpctl set-mute @DEFAULT_AUDIO_SINK@ 0

Und mit diesem Kommando schaltest Du die Stummschaltung um, d.h. entweder auf an oder aus, abhängig davon, welcher Zustand vorher war:

wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle

Den aktuellen Zustand der Stummschaltung wird Dir bei dem folgenden Kommando angezeigt:

wpctl get-volume @DEFAULT_AUDIO_SINK@

Es wird hinter der Lautstärke noch ein [MUTED] angezeigt. Ein explizites Kommando get-mute gibt es bei dem Tool nicht.

Eingänge umschalten

Sofern Du eine Eingangserweiterungskarte mit der Soundkarte verbunden hast, kannst Du mit den folgenden Befehlen die Eingänge steuern. Das folgende Kommando gibt den aktuellen Status der Eingänge zurück:

amixer -D hw:DSC8 sget 'Input Capture Source',0

In der Zeile, die mit Items: beginnt, sind alle verfügbaren Eingänge aufgelistet. In der Zeile, die mit Item0: beginnt, wird der aktuell ausgewählte Eingang angezeigt.

Im Folgenden nehmen wir an, dass bei Items: unter anderem der Eingang 'Input 2: card = 1 (SPDIF), port = 2' angezeigt wird. Diesen Eingang können wir wie folgt auswählen:

amixer -D hw:DSC8 sset 'Input Capture Source',0 'Input 2: card = 1 (SPDIF), port = 2'

Leider lässt sich das Auswählen des nächsten oder vorherigen Eingangs nicht mehr mit einem einfachen Befehl realisieren. Dazu ist ein Skript erforderlich. Dieses Skript kannst Du hier herunterladen. Nach dem Download musst Du das Skript nur noch ausführbar machen mit folgenden Befehl:

chmod +x input.sh

Nun kannst Du den nächsten Eingang auswählen mit:

./input.sh next

Den vorhergehenden Eingang kannst Du wie folgt auswählen:

./input.sh prev

Das Skript kann noch mehr. Rufe einfach folgendes auf, um alle Möglichkeiten angezeigt zu bekommen:

./input.sh

Status der Soundkarte anzeigen

Mit dem folgenden Befehl kannst Du Dir z.B. anschauen, ob die Aufnahme- oder Wiedergabefunktion der Soundkarte gerade in Benutzung ist oder nicht:

cat /proc/asound/DSC8/stream0

Folgt dem Zeilenanfang Status: ein Stop, dann ist die jeweilige Funktion nicht in Benutzung. Anderenfalls werden Dir die Parameter angezeigt, mit der die Wiedergabe bzw. Aufnahme gestartet wurde. Diese Statusinformation kannst Du z.B. benutzen, um zeitversetzt die Aktivlautsprecher ein- bzw. auszuschalten.

Datenstrom vom Eingang zum Ausgang umleiten

Dieser Abschnitt ist nur relevant, wenn Du eine Eingangserweiterungskarte mit der Soundkarte verbunden hast. Der Datenstrom muss vom Eingang zum Ausgang mit einer Software umgeleitet werden. Das Tool alsaloop von alsautils kann das. Leider kann das Tool nur PCM Signale verarbeiten und keinen komprimierten Surround-Signale. Das Tool gibt komprimierte Surround-Signale unverändert aus, wodurch nur ein unangenehmes Rauschen zu hören ist.

Allerdings gibt die Möglichkeit, dieses Problem mit dem Tool ffmpeg zu lösen. Sofern noch nicht geschehen, muss dieses zuvor auf dem System installiert werden.

Mit folgendem Kommando kannst Du das automatische Dekodieren bewirken:

ffmpeg -hide_banner -loglevel panic -f alsa -ac 2 -ar 48000 -i plughw:CARD=DSC8,DEV=0 -c:a pcm_s16le -f wav - | ffplay -loglevel quiet -nodisp -fflags nobuffer -flags low_delay -framedrop -

Ok, der Befehl ist ein bisschen unhandlich. Des Weiteren muss der Befehl an die Samplerate angepasst werden, die aktuell an dem Eingang anliegt, da ansonsten die Soundkarte nur Stille aufnimmt. Dafür ist der Parameter -ar 48000 zuständig. Um das ganze für Dich zu automatisieren, haben wir ein Skript geschrieben. Dieses kannst Du hier herunterladen. Das Skript ist noch nicht perfekt. Wenn Du den Computer aus dem Stand-by-Modus holst, dann solltest Du das Skript unbedingt neu starten, da sich gelegentlich ein Prozess des Skripts verklemmt und dieses zu unangenehmen Störgeräuschen führt. Wir arbeiten aber daran, dieses zu beheben.