WirePlumber: naamgeving van audioapparaten op Linux wijzigen

Noud van Kruysbergen
0

Inhoudsopgave

    Gebruikers van Linux herkennen het vast wel: de videoconferentiesoftware heeft opnieuw het verkeerde audiokanaal geselecteerd. Van de instellingen word je ook niet veel wijzer door de onbegrijpelijke namen die getoond worden. Op het eerste gezicht weet je dus niet eens welk audioapparaat je moet kiezen. Wij kunnen je helpen met dit probleem.    

    In deze workshop laten we zien hoe je een configuratiescript kunt gebruiken voor multimediasessiemanager WirePlumber om de namen van je audioapparaten te wijzigen.

     WirePlumber: systeembrede naamgeving van audioapparaten op Linux

    Ontvang informatie en tips over Linux en Linux programma’s, abonneer op ons tijdschrift of schrijf je in voor de gratis nieuwsbrief:

    Ontvang elke week het laatste IT-nieuws, de handigste tips en speciale aanbiedingen.


    Van PulseAudio naar PipeWire

    Op moderne Linux-systemen zijn er verschillende componenten die verantwoordelijk zijn voor het beheer van audioapparaten. ALSA (Advanced Linux Sound Architecture) vormt de driverlaag in de kernel, terwijl een geluidsserver in de gebruikersinterface toegang heeft tot de ALSA-interfaces. Deze geluidsserver dient als tussenpersoon tussen de applicaties en de driver. Hierdoor kan het parallel gebruik van hetzelfde audiokanaal door meerdere applicaties worden toegestaan.

    Voorheen was dat vooral PulseAudio, dat in steeds meer distributies wordt vervangen door het multimediaframework PipeWire. Zo wordt PipeWire door Fedora gebruikt sinds Fedora versie 34. Ubuntu daarentegen doet dit pas sinds versie Ubuntu 22.10. Voor oudere versies van Ubuntu, zoals de 22.04 LTS-versie, is PipeWire wel beschikbaar in de softwarebronnen.

    PipeWire wordt geleverd met zijn eigen implementatie van PulseAudio. Hierdoor zullen applicaties die zijn ontworpen voor PulseAudio ook werken met PipeWire, net als de meeste PulseAudio-tools. De Gnome-desktopomgeving die wordt gebruikt door Ubuntu Desktop en Fedora Workstation haalt ook de namen van de audioapparaten op via de PulseAudio-interfaces. Om te achterhalen of PipeWire voor je werkt, kun je het commando pactl uit het “pulseaudio-utils” pakket gebruiken. Voer dit commando uit in een terminal en als het antwoord in de regel “Naam van de server” vermeldt “PulseAudio (op PipeWire 0.3…)”, dan werkt PipeWire voor jou.

    Pipewire vs Wireplumber

    PipeWire verkrijgt de namen van de audioapparaten van ALSA, die ze op hun beurt vormt met behulp van apparaat-ID’s, stuurprogrammagegevens en configuraties die moeilijk te begrijpen zijn. Maar daar heb je niet mee te maken. Om de geluidsapparaten een andere naam te geven, heb je alleen een klein script voor WirePlumber nodig. Deze session manager voor PipeWire beheert de verbindingen tussen apparaten en applicaties en laadt de daarvoor benodigde componenten. Om de naamgeving van de apparaten permanent vast te leggen, worden regels opgeslagen in een configuratiebestand. Deze zijn momenteel nog geschreven in de programmeertaal Lua.

    Standaard installeert Ubuntu “PipeWire Media Session” (pipewire-media-sessie) als sessiebeheerder, maar die wordt als achterhaald beschouwd. Installeer in plaats daarvan WirePlumber vanuit de pakketbronnen, bijvoorbeeld in Terminal met de volgende opdracht:

    sudo apt install wireplumber

    WirePlumber werkt als een systemd-gebruikersservice. Je kunt je persoonlijke configuratie instellen in de homedirectory (~/.config/wireplumber), maar dat hoeft niet. Wat daar niet gespecificeerd is, haalt WirePlumber uit de mappen /etc/wireplumber (indien beschikbaar) en /usr/share/wireplumber.

    Maak eerst de benodigde submappen aan in je homedirectory.

    mkdir -p ~/.config/wireplumber/main.lua.d/

    Maak in deze map een tekstbestand met de naam “51-alsa-rename.lua” en open het met een eenvoudige teksteditor zoals Gedit of de Gnome-teksteditor (gnome-text-editor).

    WirePlumber Lua-script schrijven

    Je zult waarschijnlijk even moeten wennen aan de Lua-syntaxis. Zorg ervoor dat je alle open haakjes sluit en vermijd overlapping van verschillende soorten haakjes. Het basisidee is om een ​​regel te formuleren die het gewenste apparaat identificeert met behulp van een aanduiding (matches ) en er vervolgens een eigenschap aan toe te wijzen (apply_properties).

    regel = {
    matches = {
    {
    {–[[ Vergelijk –]] },
    },
    },
    apply_properties = { [“KEY”]=”VALUE” }
    }

    Laat de ogenschijnlijk overbodige haakjes achter matches niet weg omdat WirePlumber een geneste array verwacht. Hierdoor kunnen meerdere vergelijkingen worden gekoppeld met EN- en OF-voorwaarden, maar dat zou hier te ver leiden.

    Voordat je regels kunt definiëren, heb je de apparaataanduidingen nodig voor de vergelijking. Om die te vinden, open je een terminal en gebruik je wpctl status om alle objecten weer te geven die aan je PipeWire-sessie zijn gekoppeld, van applicaties tot hardware. Zoek onder “Audio / Apparaten” naar het item voor je audioapparaat. Het nummer voor de naam is de huidige ID. Gebruik deze ID (bijv. 32) om met wpctl de eigenschappen van het apparaat weer te geven:

    wpctl inspect 32

    Kopieer de waarde na “device.bus-path” voor PCI-apparaten zoals de ingebouwde geluidskaart en de waarde na “device.bus-id” voor USB-apparaten. Voer nu dit waardenpaar als regel in het configuratiebestand in:

    regel = {
    matches = {
    {
    “device.bus-path”, “equals”,
    “pci-0000:00:1a.3-platform-et¦” },
    }
    },
    apply_properties = {
    [“device.description”] = “Internet¦” }
    }

    Ga volgens hetzelfde principe te werk binnen “apply_properties” en wijs de gewenste naam als tekenreeks toe aan “device.description”.

    Voeg deze regels nu toe aan de speciale tabel “alsa_monitors.rules“. Om dit te doen, voeg je aan het einde de volgende regel toe aan de configuratie:

    table.insert(alsa_monitor.rules,regel)

    Bewaar het bestand. Om de regels toe te passen, start je WirePlumber opnieuw op door systemctl –user restart wireplumber.service in de terminal in te typen. Open vervolgens de systeeminstellingen in Gnome en controleer de namen van de audioapparaten in de sectie Geluid. Als de regels van toepassing zijn, verschijnt de gewijzigde naam daar.

    Als daar geen audioapparaat verschijnt, heb je waarschijnlijk een syntaxisfout in je configuratiebestand. Controleer haakjes en komma’s. Gebruik in een apart terminalvenster journalctl -f –user -u wireplumber om te zien of of WirePlumber een valse start meldt wanneer je de service opnieuw start.

    Om je wat tijd en hoofdpijn te besparen, hebben we een sjabloon van het Lua-script klaargezet voor je om te downloaden.

    Hou rekening met wat wel en wat niet kan

    In plaats van exacte vergelijkingen met equals kun je ook matches gebruiken om naar een patroon te zoeken. Gebruik hiervoor * als jokerteken in de zoekstring. Gebruik de trefwoorden node.description en device.profile.description om de ingangen en uitgangen een naam te geven zoals bijvoorbeeld “Microfoon” of “HDMI / DisplayPort-uitgang”. Helaas accepteert Gnome de waarden niet, maar vraagt ​​via andere velden naar de namen van de kanalen die niet zomaar veranderd kunnen worden. PipeWire-applicaties zoals qpwgraph geven deze namen echter ook correct weer.

    Lees meer over Linux software in c’t 12/2024

    Meer over

    Software

    Deel dit artikel

    Noud van Kruysbergen
    Noud van KruysbergenNoud heeft de 'American Dream' doorlopen van jongste bediende tot hoofdredacteur van c't, waar hij zo veel mogelijk de diepgang, betrouwbaarheid en diversiteit wil bewaken.

    Lees ook

    Met Raspberry Pi port knocking de computers in je netwerk beveiligen

    Iedereen die een computer of server met het openbare internet verbindt, wordt al snel het doelwit van hackers. Sommige wetenschappers gaan ervan uit d...

    Je Raspberry Pi op afstand bedienen? Zo krijg je het voor elkaar met SSH!

    De Raspberry Pi op afstand bedienen is handig en kan op verschillende manieren. Via SSH is het makkelijkste op te zetten, we laten zien hoe.

    0 Praat mee
    avatar
      Abonneer  
    Laat het mij weten wanneer er