Nu mai aveam sunet după ce puneam pauză la un clip pe YouTube
De ceva vreme am observat că după ce pun pauză la un clip pe YouTube și fac altceva, când revin nu mai am sunet. Nu doar la clip, nici extensia de radio din Cinnamon nu mai mergea - nu mai avea sunet deloc. De fiecare dată rezolvam situația deschizând setările de sunet din Cinnamon și schimbând profilul boxelor Bluetooth, după care totul reintra în normal.
Problema nu era cu navigatorul sau cu YouTube. Folosesc boxe Bluetooth, iar PipeWire suspendă dispozitivul audio când nu e activitate. Când navigatorul încearcă să reia redarea după pauză, dispozitivul Bluetooth nu se mai „trezește" corect sau, dacă se trezește, ceva în handshake-ul dintre PipeWire și stack-ul Bluetooth nu merge cum trebuie. Schimbarea profilului din setările Cinnamon forța practic o reinițializare a dispozitivului.
Soluția a fost să dezactivez timpul de suspendare pentru dispozitivele Bluetooth. Asta am făcut-o prin WirePlumber, care e componenta din PipeWire ce gestionează politica de sesiune. Pe Linux Mint cu WirePlumber 0.4.x sintaxa e Lua, deci am creat fișierul:
mkdir -p ~/.config/wireplumber/wireplumber.conf.d
nano ~/.config/wireplumber/wireplumber.conf.d/51-no-bluetooth-suspend.conf
Unde am adăugat conținutul:
table.insert(bluez_monitor.rules, {
matches = {{ "node.name", "matches", "bluez_output.*" }},
apply_properties = {
["session.suspend-timeout-seconds"] = 0,
},
})
Valoarea 0 înseamnă că nu va mai suspenda niciodată dispozitivul Bluetooth. Apoi am dat restart la WirePlumber:
systemctl --user restart wireplumber
Update: Fix-ul cu WirePlumber descris mai sus nu a funcționat. Problema a fost că fișierul Lua trebuia creat în ~/.config/wireplumber/main.lua.d/, nu în wireplumber.conf.d/ cum am făcut inițial. Când l-am mutat în locul corect, boxele nu s-au mai putut conecta deloc - Blueman afișa eroarea No audio endpoints registered. A trebuit să șterg fișierul și să restartez PipeWire și WirePlumber ca să revină la normal.
Am aplicat un alt fix - mărirea buffer-ului PipeWire prin fișierul ~/.config/pipewire/pipewire.conf.d/10-bluetooth-buffer.conf cu conținutul:
context.properties = {
default.clock.min-quantum = 1024
}
Problema reală pare să fie o incompatibilitate între PipeWire 1.0.5 și versiunea de BlueZ din Linux Mint, care generează erori de tip out of buffers pe conexiunea Bluetooth. Buffer-ul mai mare ameliorează situația, dar nu o rezolvă complet. Deocamdată, workaround-ul cu schimbarea profilului din setările de sunet Cinnamon rămâne încă util când sunetul dispare.