Remediați distorsiunea sunetului în Ubuntu 24.04 cu modificările de configurare ALSA

Distorsiunea sunetului pe Ubuntu 24.04 poate proveni din mai multe straturi: aplicația, PipeWire, WirePlumber, ALSA, driverul kernelului sau hardware-ul audio în sine. Abordarea practică este de a identifica mai întâi dispozitivul afectat, apoi de a modifica câte o setare a tamponului sau a dispozitivului pe rând. Pe un desktop standard Ubuntu 24.04, PipeWire se află deasupra ALSA, iar WirePlumber gestionează dispozitivele ALSA, așa că majoritatea utilizatorilor ar trebui să ajusteze proprietățile ALSA expuse prin WirePlumber înainte de a înlocui configurația ALSA implicită a sistemului.

Ubuntu 24.04 a livrat inițial PipeWire 1.0.4, iar pachetele Noble actuale ale Ubuntu continuă să utilizeze WirePlumber 0.4.17 în loc de noul format de configurare 0.5. Acest detaliu al versiunii este important deoarece WirePlumber 0.4 folosește fragmente Lua sub ~/.config/wireplumber/main.lua.d/. Sintaxa mai nouă pe wireplumber.conf.dcare o puteți vedea în documentația actuală upstream se aplică la WirePlumber 0.5 și versiunile ulterioare. Verificați versiunea instalată înainte de a copia orice configurație.

Referințe oficiale: Note de lansare Ubuntu 24.04 LTS , pachetul WirePlumber de la Ubuntu pentru actualizările Noble , referința de configurare ALSA pentru WirePlumber 0.4 și referința pluginului ALSA PCM .

Referință rapidă: ce să încerci mai întâi

SimptomPrima verificare practicăPosibilă modificare
Pocnituri sub sarcină CPUConfirmați chiuveta corectă și urmăriți eventualele scurgeriTestați o perioadă ALSA mai mare, cum ar fi 1024 sau 2048 de cadre
Distorsiune doar pe un DAC USBIdentificați nodul ALSA/PipeWire exactAplicați regula doar acelui nod; evitați o regulă globală
Zgomot când un dispozitiv se trezește din repausReproduceți după câteva secunde de tăcereMăriți sau dezactivați timeout-ul de suspendare pentru acel nod specific
Probleme într-o aplicație veche doar pentru ALSATestați aplicația cu aplaysau cu un PCM explicitFolosește un per utilizator ~/.asoundrccu plug/dmix
Distorsiune la o rată de eșantionareTestați materialul de 44,1 kHz și 48 kHzPreferați o rată hardware acceptată și permiteți PipeWire să reeșantioneze atunci când este nevoie.

1. Identificați hardware-ul ALSA și stiva audio

Începeți prin a lista dispozitivele de redare și a verifica care server audio este activ. Nu presupuneți că hw:0,0este vorba de difuzoare; porturile HDMI, căștile USB, camerele web și stațiile de andocare pot schimba numerotarea cardurilor între porniri.

aplay -l
wpctl status
pactl info
wireplumber --version
pipewire --version
Terminal Ubuntu care afișează ieșirea aplay -l cu un dispozitiv analogic integrat și un dispozitiv de redare HDMI

Legendă: aplay -lListarea separă dispozitivul de redare analogică integrat de HDMI, ceea ce ajută la evitarea aplicării unei modificări ALSA pe placa greșită.

Dacă pactl infoapare mesajul „PulseAudio (pe PipeWire)”, acest lucru este normal pe Ubuntu 24.04. Interfața compatibilă cu PulseAudio este furnizată de PipeWire. Pentru Ubuntu 24.04/Noble standard, wireplumber --versionar trebui să afișeze în mod normal seria 0.4.x, cu excepția cazului în care ați instalat o altă versiune.

2. Confirmați distorsiunea înainte de a schimba configurația

Folosește un test repetabil, în loc să evaluezi modificările din videoclipuri web aleatorii. Un fișier WAV scurt speaker-testsau o piesă muzicală cunoscută fac comparațiile înainte/după mai semnificative. De asemenea, verifică dacă problema apare în mod egal pe ieșirea analogică, HDMI, Bluetooth și USB. Dacă este afectată o singură cale, restrânge soluția la acea cale.

speaker-test -c 2 -t wav
aplay /usr/share/sounds/alsa/Front_Center.wav

Pentru dispozitivele USB, kernelul expune informațiile de flux sub /proc/asound/. Calea exactă variază în funcție de card, așa că verificați /proc/asound/cardsmai întâi în loc să copiați orbește numărul unui card.

Terminal Ubuntu care afișează informații despre fluxul ALSA PCM, inclusiv o rată de 48000 Hz, două canale și formatul S16_LE

Legendă: Informațiile despre fluxul ALSA pot dezvălui rata de eșantionare activă, numărul de canale și formatul eșantionului pentru un flux de redare; numărul cardului depinde de hardware.

3. Faceți o copie de rezervă a configurației curente a utilizatorului

Înainte de a edita orice, păstrați orice suprascrieri ALSA sau WirePlumber existente. Modificările la nivel de utilizator sunt mai sigure decât editarea fișierelor sub /usr/share, deoarece actualizările pachetelor pot înlocui fișierele de sistem.

cp -a ~/.asoundrc ~/.asoundrc.backup 2>/dev/null || true
mkdir -p ~/.config/wireplumber/main.lua.d
cp -a ~/.config/wireplumber/main.lua.d ~/.config/wireplumber/main.lua.d.backup 2>/dev/null || true

Dacă ați copiat anterior o configurație dintr-un ghid scris pentru WirePlumber 0.5, eliminați-o sau mutați-o înainte de a testa pe Ubuntu 24.04 standard. WirePlumber 0.4 și 0.5 utilizează formate de configurare diferite.

4. Ajustați comportamentul bufferului ALSA prin WirePlumber 0.4

Pe Ubuntu 24.04, aceasta este de obicei cea mai relevantă modificare la nivel ALSA, deoarece WirePlumber creează și configurează nodurile PipeWire bazate pe ALSA. Documentația WirePlumber din amonte descrie api.alsa.period-sizedimensiunea perioadei în eșantioane și api.alsa.headroombuffering suplimentar între pointerii hardware și software. Majoritatea dispozitivelor USB sunt tratate ca dispozitive batch, iar dimensiunea perioadei afectează atât frecvența întreruperilor, cât și comportamentul de buffering.

Creați o regulă de utilizator:

nano ~/.config/wireplumber/main.lua.d/51-alsa-tuning.lua

Folosește o regulă care vizează doar nodul de ieșire problematic. Mai întâi obține numele nodului cu wpctl statussau pw-cli list-objects Node. Apoi adaptează acest exemplu:

local rule = {
  matches = {
    {
      { "node.name", "matches", "alsa_output.*" },
    },
  },
  apply_properties = {
    ["api.alsa.period-size"] = 1024,
    ["api.alsa.headroom"] = 0,
  },
}

table.insert(alsa_monitor.rules, rule)

Nu tratați 1024 ca o valoare magică universală. Este un punct de testare conservator. Dacă distorsiunea persistă, comparați 512, 1024 și 2048 pe rând. Perioadele mai mari pot îmbunătăți toleranța la întârzierile de programare pe unele sisteme, dar adaugă latență; perioadele mai mici pot reduce latența, dar cresc frecvența întreruperilor și pot expune deficiențe de funcționare pe o mașină solicitată. Păstrați cea mai mică valoare care rămâne stabilă pentru sarcina de lucru.

Dacă dispozitivul are I/O mapate în memorie defect, WirePlumber expune și [numele api.alsa.disable-mmapfișierului]. Documentația din amonte descrie explicit acest lucru ca o soluție de compatibilitate și notează că accesul la citire/scriere este mai lent, așa că nu îl activați decât dacă distorsiunea se corelează în mod clar cu comportamentul mmap.

["api.alsa.disable-mmap"] = true,

O altă opțiune specifică dispozitivului este session.suspend-timeout-seconds. Dacă un DAC se aude o eroare sau distorsionează de fiecare dată când se activează, testarea unui timeout mai lung - sau 0dezactivarea suspendării pentru nodul respectiv - poate ajuta la izolarea cauzei. Dezactivarea suspendării menține dispozitivul ALSA ocupat, deci este un compromis mai degrabă decât o recomandare implicită.

5. Folosește .asoundrc doar atunci când aplicația folosește ALSA direct

O valoare per utilizator ~/.asoundrcpoate fi utilă pentru aplicațiile mai vechi care ocolesc PipeWire și deschid direct PCM-uri ALSA. De asemenea, poate fi utilă pentru testarea comportamentului cu rată de eșantionare fixă ​​sau mixare software. Cu toate acestea, suprascrierea la nivel global a valorii implicite ALSA poate interfera cu pluginul PipeWire ALSA, așadar folosiți un PCM denumit atunci când este posibil, în loc să înlocuiți pcm.!default.

De exemplu, pluginul ALSA dmixacceptă valori explicite rate, period_size, și buffer_size. Un PCM de test denumit poate arăta astfel:

pcm.stable_test {
    type plug
    slave.pcm "stable_dmix"
}

pcm.stable_dmix {
    type dmix
    ipc_key 2048
    ipc_key_add_uid true
    slave {
        pcm "hw:0,0"
        rate 48000
        period_time 0
        period_size 1024
        buffer_size 4096
    }
}

Înlocuiți hw:0,0cu cardul și dispozitivul real de la aplay -l. Apoi testați fără a modifica setările implicite ale sistemului:

aplay -D stable_test /usr/share/sounds/alsa/Front_Center.wav
GNU nano pe Ubuntu editând un fișier .asoundrc de utilizator cu un PCM hardware, o rată de 48000 Hz, o perioadă de 1024 și o dimensiune a bufferului de 4096

Legendă: Un utilizator .asoundrcpoate defini parametri ALSA ficși pentru testare controlată; o hwțintă directă ar trebui utilizată cu atenție, deoarece ocolește conversia automată a formatului.

Proiectul ALSA notează că dmixare o configurație de bază fixă, cu excepția cazului în care specificați valori în definiția sa slave, în timp ce plugpluginul poate efectua conversii de format și rată. De aceea, combinarea unui plugPCM denumit cu un PCM reglat separat dmixeste mai sigură pentru experimente decât forțarea fiecărui program să deschidă direct hardware brut.

6. Reporniți serviciile audio ale utilizatorului și testați din nou

După modificarea regulii WirePlumber, reporniți stiva audio a utilizatorului. Închideți mai întâi aplicațiile care utilizează în mod activ sunetul.

systemctl --user restart wireplumber pipewire pipewire-pulse

Apoi repetați același material de testare folosit înainte de modificare. Deschideți Setări > Sunet și asigurați-vă că dispozitivul și profilul de ieșire așteptate sunt încă selectate.

Panoul Sunet din Setările Ubuntu afișează difuzoarele încorporate selectate cu un profil de ieșire stereo analogică

Legendă: După repornirea serviciilor audio, verificați dacă Ubuntu selectează în continuare dispozitivul și profilul de ieșire dorite înainte de a evalua dacă distorsiunea este remediată.

Cum să evaluezi dacă modificarea a funcționat

  • Același fișier de test se redă în mod repetat, fără trosnituri, bâzâit, saturații sau întreruperi scurte.
  • Distorsiunea nu revine după ce dispozitivul intră în inactivitate și se activează.
  • Aplicațiile desktop normale, browserele și apelurile video utilizează în continuare dispozitivul de ieșire așteptat.
  • Latența rămâne acceptabilă pentru cazul dvs. de utilizare; redarea muzicii poate tolera mai mult buffering decât monitorizarea live sau jocurile.
  • Remedierea rămâne stabilă după deconectare și reconectare sau repornire.

Când modificările ALSA nu sunt soluția corectă

Nu continuați să măriți bufferele dacă simptomul este în mod clar o saturație hardware, un cablu slăbit, o intrare analogică suprasolicitată, un hub USB defect sau un difuzor defect. Verificați și nivelurile mixerului cu alsamixer; distorsiunea care apare doar în apropierea volumului de 100% poate fi legată de gain și nu o problemă de programare.

Dacă problema a început după o actualizare a kernelului sau a firmware-ului, testați un alt kernel compatibil din meniul GRUB înainte de a construi reguli audio din ce în ce mai complexe. Dacă este afectat doar Bluetooth, concentrați-vă pe codecul/profilul Bluetooth, mai degrabă decât pe setările perioadei ALSA. Dacă este afectat doar HDMI, verificați mai întâi profilul HDMI și receptorul/monitorul.

Listă de verificare pentru revenirea la normal

  • Eliminați sau redenumiți ~/.config/wireplumber/main.lua.d/51-alsa-tuning.lua.
  • Restaurați ~/.asoundrcdin copia de rezervă sau eliminați fișierul de testare.
  • Reporniți wireplumber, pipewire, și pipewire-pulse.
  • Executați din nou wpctl statusși speaker-testconfirmați revenirea la comportamentul implicit.

Concluzie

Pentru Ubuntu 24.04, începeți cu reguli ALSA specifice WirePlumber 0.4, mai degrabă decât cu o .asoundrcînlocuire generală la nivel de sistem. Identificați nodul de ieșire exact, modificați câte o proprietate pe rând și comparați același test audio după fiecare modificare. O dimensiune a perioadei, cum ar fi 1024, este un punct de plecare rezonabil pentru diagnosticare, dar valoarea corectă depinde de dispozitiv și de sarcina de lucru. Rezervați disable-mmap, suspendați modificările și personalizați dmixPCM-urile pentru cazurile în care testele dvs. indică în mod specific acele comportamente.

Lasă un comentariu

Descărcați FlightGear gratuit: Ghid oficial de instalare

Descărcați FlightGear gratuit: Ghid oficial de instalare

Descarcă FlightGear gratuit de pe site-ul oficial. Compară pachetele Windows, macOS și Linux, instalează fișierele de date și începe primul tău zbor.

Aplicația desktop Google Tasks: Cum se utilizează pe computer

Aplicația desktop Google Tasks: Cum se utilizează pe computer

Deschide Google Tasks într-un browser, adaugă o comandă rapidă pentru Chrome sau o lansare în stilul aplicației și gestionează activitățile de făcut în avans prin Calendar și Gmail.

OKSampler: Un sampler muzical gratuit și simplu pentru ritmuri de claviatură

OKSampler: Un sampler muzical gratuit și simplu pentru ritmuri de claviatură

OKSampler mapează clipuri MP3 pe tastele tastaturii și poate reda audio în buclă. Află ce face software-ul gratuit vechi, unde se termină funcțiile sale vechi și ce trebuie să verifici înainte de descărcare.

Cum să joci Don't Starve Together pe Linux

Cum să joci Don't Starve Together pe Linux

Instalează versiunea Linux a jocului Don't Starve Together prin Steam, creează o lume sau alătură-te prietenilor urmând acești pași de configurare și depanare.

Cum să joci Squad pe Linux cu Steam Proton

Cum să joci Squad pe Linux cu Steam Proton

Configurează Squad pe Linux cu Steam Play și Proton, instalează jocul, alege un instrument de compatibilitate și depanează problemele anti-cheat.

Cum se instalează Linux Mint Debian Edition 5 „Elsie” de pe USB

Cum se instalează Linux Mint Debian Edition 5 „Elsie” de pe USB

Descărcați și verificați fișierul ISO LMDE 5 arhivat, creați un USB bootabil și alegeți setările de instalare sigure. Elsie a ajuns la sfârșitul duratei de viață; consultați versiunea curentă a LMDE.

Cum se creează o unitate USB bootabilă cu Windows 11 pe Linux

Cum se creează o unitate USB bootabilă cu Windows 11 pe Linux

Creați un USB de instalare Windows 11 pe Linux cu Ventoy: obțineți fișierul ISO oficial, instalați Ventoy în siguranță, copiați imaginea și porniți PC-ul țintă.

Cum se instalează Wireshark pe Linux: Ubuntu, Fedora, Arch și altele

Cum se instalează Wireshark pe Linux: Ubuntu, Fedora, Arch și altele

Instalați Wireshark pe Ubuntu, Debian, Fedora, Arch sau openSUSE cu comenzile actuale ale pachetului, apoi configurați captura de pachete live în siguranță.

Cum se joacă DiRT Rally pe Linux: Configurarea Steam și remedierile Proton

Cum se joacă DiRT Rally pe Linux: Configurarea Steam și remedierile Proton

Învață cum să joci DiRT Rally pe Linux dacă îl deții deja pe Steam: instalează versiunea nativă, lansează-l și folosește Proton doar ca soluție de rezervă.

Cum se instalează Devuan Linux de pe un USB bootabil

Cum se instalează Devuan Linux de pe un USB bootabil

Instalați Devuan Excalibur din fișierul ISO Desktop Live. Verificați descărcarea, creați un USB bootabil, protejați partițiile existente și finalizați configurarea cu Refracta Installer.