Linux – Pulseaudio HDMI Sink umbenennen

Im deutschen Fußballspiel bei der WM in Russland ist einiges im Argen, so auch in Pulseaudio 🙂 Seit meinem Upgrade auf Fedora 27 haben meine Pulseaudio Sinks andere Namen bekommen und die sind zum Teil echte Monster 🙂

Sinks auflisten

Schauen wir uns erstmal den Ist-Zustand an :

[marius@eve ~]$ pacmd list-sinks|grep -E „(name:|description)“
name: <alsa_output.pci-0000_01_00.1.hdmi-stereo-extra1>
device.profile.description = „Digital Stereo (HDMI 2)“
device.description = „GP107GL High Definition Audio Controller Digital Stereo (HDMI 2)

Wenn man jetzt in der PA Lautstärkenkontrolle die Selectboxen mit den verfügbaren Audioausgängen anklickt, springt einem so ein Name natürlich ins Auge. Viel zu lang 🙂

Das können wir ändern

Dafür gibt es den Befehl „pacmd“ . Der kann einiges mit PA anstellen, aber da wir nur den Namen updaten wollen, ist es eigentlich recht simple:  pacmd befehl option1 option2 …

Wir brauchen als Befehl update-sink-proplist und dazu das Audiodevice das wir ändern möchten und natürlich das Feld, welches wir anpassen müssen.

Beispiel:

pacmd update-sink-proplist alsa_output.pci-0000_01_00.1.hdmi-stereo-extra1 device.description=“HDMI2-(Stereo)“

Wenn man jetzt ein Leerzeichen im Namen haben will, wie das ja wohl möglich sein muß, weil es ja vorher auch drin war, dann hat man ein kleines Problem, denn der Kommandozeilenparser von pacmd hat einen Bug: Er kann keine Leerzeichen verarbeiten 😉

Wenn man das braucht, muß man den Interaktiven Modus wählen:

$ pacmd
Welcome to PulseAudio 11.1-rebootstrapped! Use „help“ for usage information.
>>> update-sink-proplist alsa_output.pci-0000_01_00.1.hdmi-stereo-extra1 device.description=HDMI2 (Stereo)
>>>

Wenn man jetzt in dem Modus „exit“ zum Verlassen der Konsole  eintippt, dann passiert nicht was man erwarten würde, denn „exit“ steht für Pulseaudio-Exit und beendet den Server 😉 Wer da raus will muß mit CTRL+C arbeiten… allgemeines Kopfschütteln ..

Anmerkung:

Das ist leider keine permanente Einstellung, daß muß man nach jedem Start machen.

Wenn die Hardware anders heißt…

Neulich erreichte mich folgende (leicht geänderte) Problemanfrage:

„Hi,

hat schon jemand von euch mit der neuen Ubuntu Version herum gespielt?

Ich habe gerade meinen ersten Cleaninstall unter Ubuntu 16.04 gemacht und bekomme hier gerade Probleme mit meinen Scripten. Die verdammte Netzwerkkarte heißt nicht mehr eth0

Weiß jemand von euch, wie meinen alten Interface Name wieder bekomme ?

Die Lösung ist zwar nicht naheliegend, aber recht einfach : „udevd sagen, er solls richten“ 🙂

Was ist udevd ?

Der udevd war früher mal eigenständig, wurde aber auf Fedora in Systemd integriert und ist für eine Art Hausmädchen für Hardwaresachen und andere organisatorische Konfigurationsdinge.

Die Definition liest sich das dann so :

„udev supplies the system software with device events, manages permissions of device nodes and may create
additional symlinks in the /dev directory, or renames network interfaces. The kernel usually just assigns
unpredictable device names based on the order of discovery. Meaningful symlinks or network device names
provide a way to reliably identify devices based on their properties or current configuration.“

und meint einfach „Hausmeister“ 😉

Und wie löse ich das jetzt mit Hilfe des udevd ?

Im Verzeichnis „/etc/udev“ gibt es den Ordner „rules.d“ in dem Konfigurationen abgelegt werden, die durch die Nummern am Anfang der Dateinamen sortiert ausgeführt werden. Wir legen eine neue Datei namens „/etc/udev/rules.d/70-persistent-net.rules“ an und schreiben das hier rein :

# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# PCI device 0x10ec:0x8139 (8139cp) (custom name provided by external tool)
SUBSYSTEM==“net“, ACTION==“add“, ATTR{dev_id}==“0x0″, ATTR{type}==“1″, KERNEL==“eth*“, NAME=“eth0″

Wenn man nun den Rechner rebootet, wird das Netzwerkinterface vom Kernelnamen ( und das wurde bei Ubuntu geändert, was bei Fedora schon vor Jahren gemacht wurde ) auf „eth0“ umbenannt.

Was ist wenn ich mehr als eine Netzwerkkarte habe ?

Dann kann man sich über die DEV_ID ( Device-ID ) identifizierte einzelne Regeln anlegen, die jede einzelne Netzwerkkarte umbenennen, in was auch immer man will.