pipewire issueshttps://gitlab.freedesktop.org/pipewire/pipewire/-/issues2023-05-11T14:53:41Zhttps://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3192[pipewire-pulse][module-combine-sink] Switching a physical device configurati...2023-05-11T14:53:41ZBastien Orivel[pipewire-pulse][module-combine-sink] Switching a physical device configuration results in a segfault<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
- PipeWire version (`pipewire --version`): master (c23c27b566bec021edcd84a7b199fb7c31b95288)
- Distribution and distribution ve...<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
- PipeWire version (`pipewire --version`): master (c23c27b566bec021edcd84a7b199fb7c31b95288)
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`): Archlinux
- Desktop Environment: i3, nothing fancy
- Kernel version (`uname -r`): 6.3.0-arch1-1
## Description of Problem:
When using `module-combine-sink` (used through `pactl load-module module-combine-sink`), if I switch a device configuration (in my case switching which HDMI port to use) a few times quickly, I get the following segfault:
```
(gdb) bt
#0 0x00007f65171a96a4 in pw_stream_trigger_process (stream=0x0) at ../src/pipewire/stream.c:2465
#1 0x00007f6514ee8d05 in combine_input_process (d=0x55ee3eee5210) at ../src/modules/module-combine-stream.c:753
#2 0x00007f651719dd19 in impl_node_process_input (object=0x55ee3eef92a0) at ../src/pipewire/stream.c:1000
#3 0x00007f65157a4279 in impl_node_process (object=0x55ee3eefb1e8) at ../spa/plugins/audioconvert/audioadapter.c:1502
#4 0x00007f65171736f9 in process_node (data=0x55ee3ef18f20) at ../src/pipewire/impl-node.c:1148
#5 0x00007f6517171370 in node_on_fd_events (source=<optimized out>) at ../src/pipewire/impl-node.c:1199
#6 0x00007f6517221e4e in loop_iterate (object=0x55ee3e2a67f8, timeout=-1) at ../spa/plugins/support/loop.c:439
#7 0x00007f6517147e1c in do_loop (user_data=0x55ee3e2a6690) at ../src/pipewire/data-loop.c:61
#8 0x00007f6516f9cbb5 in start_thread (arg=<optimized out>) at pthread_create.c:444
#9 0x00007f651701ecb4 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:100
```
## How Reproducible:
Pretty much 100%
### Steps to Reproduce:
1. `pactl load-module module-combine-sink`
2. Get something playing sound on the `combined` sink
3. Go to `Configuration` on pavucontrol, take a device that has multple configurations, use the scroll wheel to quickly switch between them
4. Do that until it crashes. Note that it might take a while or happen immediately, it's kinda random
### Actual Results:
Crash
### Expected Results:
No crash
# Additional Info (as attachments):
- `pw-dump > pw-dump.log`:
[pw-dump.log](/uploads/da5861542542d0cdee0d89b9add86945/pw-dump.log)https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/2833pipewire-jack doesn't properly honor jack_open_client() JackUseExactName flag...2023-05-11T14:53:41ZEthan Funkpipewire-jack doesn't properly honor jack_open_client() JackUseExactName flag option flagpipewire --version
pipewire
Compiled with libpipewire 0.3.58
Linked with libpipewire 0.3.58
jack_client_open function should fail with a returned status code of JackNameNotUnique when a new client requests a name that already exists. I...pipewire --version
pipewire
Compiled with libpipewire 0.3.58
Linked with libpipewire 0.3.58
jack_client_open function should fail with a returned status code of JackNameNotUnique when a new client requests a name that already exists. Instead, jack_client_open returns a client with a jack name slightly different than the requested conflicting name, and a subsequent call on the new client of jack_get_client_name(client) returns the original conflicting name, not the modified name.
Here is a simple example program that you can use to see the problem by running with the first parameter to a client name that already in use:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <jack/jack.h>
int main(int argc, char *argv[]){
// name to assign is first parameter
const char *server = NULL;
jack_options_t options = JackUseExactName;
jack_client_t *client;
jack_status_t status;
client = jack_client_open(argv[1], options, &status, server);
if(client == NULL) {
if(status & JackServerFailed)
fprintf(stderr, "\nERROR: Unable to connect to JACK server\n");
else
fprintf(stderr, "\nERROR: jack_client_open() failed\n");
return -1;
}
if(status & JackNameNotUnique)
fprintf(stdout, "\nSTATUS: jack_client_open() assigned different client name.\n");
fprintf(stdout, "\nNAME: jack_client_open() client name = %s\n", jack_get_client_name(client));
sleep(30);
finish:
jack_client_close(client);
return 0;
}https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3199pipewire-pulse crashes while loading module2023-05-11T14:53:41ZAlban Browaeyspipewire-pulse crashes while loading module<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
- PipeWire version (`pipewire --version`): master 11c478d0f
- Distribution and distribution version (`Debian GNU/Linux 11 (bull...<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
- PipeWire version (`pipewire --version`): master 11c478d0f
- Distribution and distribution version (`Debian GNU/Linux 11 (bullseye)`):
- Desktop Environment: Gnome Shell 43
- Kernel version (`6.1.0-7-amd64`):
## Description of Problem:
pipewire-pulse segfault
## How Reproducible:
always with 0.3.70 package with pipewire-pulse service
most of the time with git master or 0.3.70 branch with "make run"
### Steps to Reproduce:
1. setup module-zeroconf-discover load in piipewire-conf on box
2. setup module-native-protocol-tcp and module-zeroconf-publish on another box
3. start pipewire-pulse
### Actual Results:
pipewire-pulse segfault
### Expected Results:
pipewire-pulse provide the remotely published audio devices.
# Additional Info (as attachments):
running master "11c478d0f (HEAD -> master, upstream/master) improve debug of commands and events"
from the build the directory.
I cannot debug with "make run" from the build directory as coredumpctl is unable to get a backtrace if run so, ie I only get:
```
coredumpctl info 3108048
PID: 3108048 (pipewire)
UID: 1000 (prahal)
GID: 1000 (prahal)
Signal: 11 (SEGV)
Timestamp: Thu 2023-05-04 16:01:01 CEST (20s ago)
Command Line: /home/prahal/Projects/WIP/pipewire_avahi/upstream/build/src/daemon/pipewire -c pipewire-pulse.conf
Executable: /home/prahal/Projects/WIP/pipewire_avahi/upstream/build/src/daemon/pipewire
Control Group: /user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/vte-spawn-6f1c858a-9dce-448e-bd51-ba4ff4414cbf.scope
Unit: user@1000.service
User Unit: vte-spawn-6f1c858a-9dce-448e-bd51-ba4ff4414cbf.scope
Slice: user-1000.slice
Owner UID: 1000 (prahal)
Boot ID: 3924ba608a364e7d9561905bc8db2307
Machine ID: 2b483dcbcecb6729df407c5b5382b0d1
Hostname: cyclope
Storage: /var/lib/systemd/coredump/core.pipewire.1000.3924ba608a364e7d9561905bc8db2307.3108048.1683208861000000.zst (present)
Size on Disk: 353.4K
Message: Process 3108048 (pipewire) of user 1000 dumped core.
Stack trace of thread 3108048:
#0 0x00007fa0df60b820 n/a (/home/prahal/Projects/WIP/pipewire_avahi/upstream/build/src/pipewire/libpipewire-0.3.so.0.370.0 + 0x6e820)
ELF object binary architecture: AMD x86-64
```
So by running in one shell:
```
$ ../pipewire/pw-uninstalled.sh -b
Using build directory: ./subprojects/wireplumber
$ .//src/daemon/pipewire-uninstalled
Using build directory: /home/prahal/Projects/WIP/pipewire_avahi/upstream/build/subprojects/wireplumber
C 16:11:30.238046 GLib (null):(null):(null): Failed to set scheduler settings: Op?ration non permise
[430:05:16.203963432] [3108837] WARN IPAManager ipa_manager.cpp:154 No IPA found in '/usr/lib/x86_64-linux-gnu/libcamera'
[430:05:16.204007516] [3108837] INFO Camera camera_manager.cpp:299 libcamera v0.0.4
W 16:11:31.000596 m-portal-permissio ../pipewire/subprojects/wireplumber/modules/module-portal-permissionstore.c:63:wp_portal_permissionstore_plugin_lookup: <WpPortalPermissionStorePlugin:0x5645e36e1990> Failed to call Lookup: GDBus.Error:org.freedesktop.portal.Error.NotFound: No entry for camera
[E][48281.723106] mod.pulse-tunnel | [module-pulse-tun: 928 create_pulse_stream()] failed to connect: Connection refused
[E][48281.723424] mod.zeroconf-discover | [module-zeroconf-: 358 resolver_cb()] Can't load module: Connexion refus?e
[430:05:16.756260969] [3108830] WARN IPAManager ipa_manager.cpp:154 No IPA found in '/usr/lib/x86_64-linux-gnu/libcamera'
[430:05:16.756314401] [3108830] INFO Camera camera_manager.cpp:299 libcamera v0.0.4
M 16:11:31.102713 m-lua-scripting ../pipewire/subprojects/wireplumber/modules/module-lua-scripting/api/api.c:376:object_activate_done: <WpSiAudioAdapter:0x5645e3ae9050> Object activation aborted: proxy destroyed
M 16:11:31.102754 script/create-item create-item.lua:80:chunk: <WpSiAudioAdapter:0x5645e3ae9050> failed to activate item: Object activation aborted: proxy destroyed
M 16:11:40.339508 m-lua-scripting ../pipewire/subprojects/wireplumber/modules/module-lua-scripting/api/api.c:376:object_activate_done: <WpSiAudioAdapter:0x5645e3ae9240> Object activation aborted: proxy destroyed
M 16:11:40.339997 script/create-item create-item.lua:80:chunk: <WpSiAudioAdapter:0x5645e3ae9240> failed to activate item: Object activation aborted: proxy destroyed
M 16:11:40.342585 m-lua-scripting ../pipewire/subprojects/wireplumber/modules/module-lua-scripting/api/api.c:376:object_activate_done: <WpSiAudioAdapter:0x5645e3ae9430> Object activation aborted: proxy destroyed
M 16:11:40.342620 script/create-item create-item.lua:80:chunk: <WpSiAudioAdapter:0x5645e3ae9430> failed to activate item: Object activation aborted: proxy destroyed
W 16:11:41.359398 m-portal-permissio ../pipewire/subprojects/wireplumber/modules/module-portal-permissionstore.c:63:wp_portal_permissionstore_plugin_lookup: <WpPortalPermissionStorePlugin:0x5645e36e1990> Failed to call Lookup: GDBus.Error:org.freedesktop.portal.Error.NotFound: No entry for camera
W 16:11:41.365401 m-portal-permissio ../pipewire/subprojects/wireplumber/modules/module-portal-permissionstore.c:63:wp_portal_permissionstore_plugin_lookup: <WpPortalPermissionStorePlugin:0x5645e36e1990> Failed to call Lookup: GDBus.Error:org.freedesktop.portal.Error.NotFound: No entry for camera
```
when pipewire pulse crashes (it does always in my debian 0.3.70 install but when running via "make run" it does not always crash), then
running pipwire-pulse in another shell I get the same backtrace with master than I got with 0.3.70 from the Debian experimental package (there pipewire-pulse is always crashing see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1035280):
```
$ ../pipewire/pw-uninstalled.sh -b
Using build directory: ./subprojects/wireplumber
$ gdb --args ./src/daemon/pipewire -c pipewire-pulse.conf
[New Thread 0x7ffff19fe6c0 (LWP 3109304)]
[New Thread 0x7fffe37fe6c0 (LWP 3109305)]
[E][48460.953808] mod.pulse-tunnel | [module-pulse-tun: 928 create_pulse_stream()] failed to connect: Connection refused
[Thread 0x7ffff19fe6c0 (LWP 3109304) exited]
[Thread 0x7fffe37fe6c0 (LWP 3109305) exited]
[E][48460.954181] mod.zeroconf-discover | [module-zeroconf-: 358 resolver_cb()] Can't load module: Connexion refus?e
Thread 1 "pipewire" received signal SIGSEGV, Segmentation fault.
pw_impl_module_schedule_destroy (module=0xf000001f0) at ../pipewire/src/pipewire/impl-module.c:403
403 if (impl->destroy_work_id != SPA_ID_INVALID)
(gdb) bt
#0 pw_impl_module_schedule_destroy (module=0xf000001f0) at ../pipewire/src/pipewire/impl-module.c:403
#1 0x00007ffff7395a8d in do_schedule_destroy
(loop=<optimized out>, async=<optimized out>, seq=<optimized out>, data=<optimized out>, size=<optimized out>, user_data=<optimized out>)
at ../pipewire/src/modules/module-pulse-tunnel.c:503
#2 0x00007ffff7eb56ff in flush_items (impl=0x555555564f18) at ../pipewire/spa/plugins/support/loop.c:171
#3 0x00007ffff7eb5569 in source_event_func (source=0x55555556d040) at ../pipewire/spa/plugins/support/loop.c:602
#4 0x00007ffff7eb7a8e in loop_iterate (object=0x555555564f18, timeout=-1) at ../pipewire/spa/plugins/support/loop.c:439
#5 0x00007ffff7f3a2c7 in pw_main_loop_run (loop=loop@entry=0x555555564dc0) at ../pipewire/src/pipewire/main-loop.c:128
#6 0x00005555555553ff in main (argc=<optimized out>, argv=<optimized out>) at ../pipewire/src/daemon/pipewire.c:111
(gdb) bt full
#0 pw_impl_module_schedule_destroy (module=0xf000001f0) at ../pipewire/src/pipewire/impl-module.c:403
impl = 0xf000001f0
#1 0x00007ffff7395a8d in do_schedule_destroy
(loop=<optimized out>, async=<optimized out>, seq=<optimized out>, data=<optimized out>, size=<optimized out>, user_data=<optimized out>)
at ../pipewire/src/modules/module-pulse-tunnel.c:503
impl = <optimized out>
#2 0x00007ffff7eb56ff in flush_items (impl=0x555555564f18) at ../pipewire/spa/plugins/support/loop.c:171
item = 0x555555565088
block = false
func = <optimized out>
index = 128
flush_count = 1
avail = 64
res = <optimized out>
__func__ = "flush_items"
#3 0x00007ffff7eb5569 in source_event_func (source=0x55555556d040) at ../pipewire/spa/plugins/support/loop.c:602
s = 0x55555556d040
count = 3
res = <optimized out>
__func__ = "source_event_func"
#4 0x00007ffff7eb7a8e in loop_iterate (object=0x555555564f18, timeout=-1) at ../pipewire/spa/plugins/support/loop.c:439
s = <optimized out>
__cancel_buf =
{__cancel_jmp_buf = {{__cancel_jmp_buf = {93824992300992, -7771112215202645496, 4294967295, 93824992300080, 93824992247064, 140737354125344, -4507500908969084408, -4507483208008353272}, __mask_was_saved = 0}}, __pad = {0x7fffffffd380, 0x0, 0x636f6c6220796369, 0x706572206120646e}}
__cancel_routine = 0x7ffff7eb5120 <cancellation_handler>
__cancel_arg = <optimized out>
__not_first_call = <optimized out>
impl = 0x555555564f18
ep =
{{events = 1, data = 0x5555555b69a0}, {events = 1, data = 0x5555555b1cd0}, {events = 1, data = 0x5555555afcd0}, {events = 1, data = 0x555555604600}, {events = 1, data = 0x5555556977e0}, {events = 1, data = 0x5555555b32b0}, {events = 4, data = 0x555555726250}, {events = 1, data = 0x555555618110}, {events = 1, data = 0x55555556d040}, {events = 1432065584, data = 0x5555555b9440}, {events = 1432065008, data = 0x5555555b9630}, {events = 4160233443, data = 0x7ffff7f5cab2 <do_replace+402>}, {events = 1432065328, data = 0x1ad0}, {events = 4159151200, data = 0xc}, {events = 2, data = 0x0}, {events = 0, data = 0x0} <repeats 17 times>}
e = <optimized out>
i = 8
nfds = 9
--Type <RET> for more, q to quit, c to continue without paging--
cdata = {ep = 0x7fffffffc0e0, ep_count = 9}
__func__ = "loop_iterate"
#5 0x00007ffff7f3a2c7 in pw_main_loop_run (loop=loop@entry=0x555555564dc0) at ../pipewire/src/pipewire/main-loop.c:128
_f = <optimized out>
_res = -95
_o = <optimized out>
res = 0
__func__ = "pw_main_loop_run"
#6 0x00005555555553ff in main (argc=<optimized out>, argv=<optimized out>) at ../pipewire/src/daemon/pipewire.c:111
context = 0x55555556d1b0
loop = 0x555555564dc0
properties = 0x0
long_options =
{{name = 0x555555556076 "help", has_arg = 0, flag = 0x0, val = 104}, {name = 0x55555555607b "version", has_arg = 0, flag = 0x0, val = 86}, {name = 0x555555556083 "config", has_arg = 1, flag = 0x0, val = 99}, {name = 0x55555555608a "verbose", has_arg = 0, flag = 0x0, val = 118}, {name = 0x0, has_arg = 0, flag = 0x0, val = 0}}
c = <optimized out>
res = 0
path = "/home/prahal/Projects/WIP/pipewire_avahi/upstream/build/src/daemon/pipewire.conf\000\350\034\000\000\000\000\000\020\000\000\000\000\000\000\000\220\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000S\345td\004\000\000\000P\003\000\000\000\000\000\000P\003\000\000\000\000\000\000P\003\000\000\000\000\000\000 \000\000\000\000\000\000\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\000\000P\345td\004\000\000\000\254\n\032\000\000\000\000\000\254\n\032\000\000\000\000\000\254\n\032\000\000\000\000\000"...
config_name = <optimized out>
level = <optimized out>
__func__ = "main"
(gdb) up
#1 0x00007ffff7395a8d in do_schedule_destroy (loop=<optimized out>, async=<optimized out>, seq=<optimized out>, data=<optimized out>, size=<optimized out>,
user_data=<optimized out>) at ../pipewire/src/modules/module-pulse-tunnel.c:503
503 pw_impl_module_schedule_destroy(impl->module);
(gdb)
#2 0x00007ffff7eb56ff in flush_items (impl=0x555555564f18) at ../pipewire/spa/plugins/support/loop.c:171
171 item->res = func(&impl->loop, true, item->seq, item->data,
(gdb)
#3 0x00007ffff7eb5569 in source_event_func (source=0x55555556d040) at ../pipewire/spa/plugins/support/loop.c:602
602 s->func.event(source->data, count);
(gdb)
#4 0x00007ffff7eb7a8e in loop_iterate (object=0x555555564f18, timeout=-1) at ../pipewire/spa/plugins/support/loop.c:439
439 s->func(s);
(gdb)
#5 0x00007ffff7f3a2c7 in pw_main_loop_run (loop=loop@entry=0x555555564dc0) at ../pipewire/src/pipewire/main-loop.c:128
128 if ((res = pw_loop_iterate(loop->loop, -1)) < 0) {
(gdb)
#6 0x00005555555553ff in main (argc=<optimized out>, argv=<optimized out>) at ../pipewire/src/daemon/pipewire.c:111
111 pw_main_loop_run(loop);
(gdb)
```
I believe this is the module unloading that is broken.
It could be that the module unloading issue is older but only triggers because the module loading behavior changed.
My pulse config on the pulse client running pipewire master is:
```
cat src/daemon/pipewire-pulse.conf.d/pulse-native-tcp-client.conf
pulse.cmd = [
{ cmd = "load-module", args = "module-zeroconf-discover" }
]
```
The pipewire-pulse configuration on the pulse server running pipewire 0.3.70 Debian package is:
```
cat .config/pipewire/pipewire-pulse.conf.d/pulse-native-tcp-server.conf
pulse.cmd = [
{ cmd = "load-module", args = "module-native-protocol-tcp" }
{ cmd = "load-module", args = "module-zeroconf-publish" }
]
```
zeroconf on client:
```
$ avahi-browse --resolve _pulse-sink._tcp -t
+ enx0050b66daf43 IPv4 prahal@hermes: Audio interne St__r__o analogique PulseAudio Sound Sink local
+ enx0050b66daf43 IPv4 prahal@hermes: Lenovo Smart Dock 7AB0C6 PulseAudio Sound Sink local
+ enx0050b66daf43 IPv4 root@tv: Dummy Output PulseAudio Sound Sink local
+ wlp4s0 IPv4 prahal@hermes: Audio interne St__r__o analogique PulseAudio Sound Sink local
+ wlp4s0 IPv4 prahal@hermes: Lenovo Smart Dock 7AB0C6 PulseAudio Sound Sink local
+ wlp4s0 IPv4 root@tv: Dummy Output PulseAudio Sound Sink local
= enx0050b66daf43 IPv4 prahal@hermes: Audio interne St__r__o analogique PulseAudio Sound Sink local
hostname = [hermes.local]
address = [192.168.10.175]
port = [4713]
txt = ["org.freedesktop.Avahi.cookie=1359232070" "description=Audio interne St\195\169r\195\169o analogique" "subtype=hardware" "channel_map=front-left,front-right" "format=s32le" "channels=2" "rate=48000" "device=alsa_output.pci-0000_00_1f.3.analog-stereo" "cookie=0xca9cd2a7" "fqdn=hermes" "uname=Linux x86_64 6.1.0-7-amd64" "user-name=prahal" "server-version=PipeWire 0.3.70"]
= enx0050b66daf43 IPv4 prahal@hermes: Lenovo Smart Dock 7AB0C6 PulseAudio Sound Sink local
hostname = [hermes.local]
address = [192.168.10.175]
port = [4713]
txt = ["org.freedesktop.Avahi.cookie=1359232070" "description=Lenovo Smart Dock 7AB0C6" "subtype=hardware" "channel_map=front-left,front-right" "format=s16le" "channels=2" "rate=48000" "device=bluez_output.84_B8_B8_7A_B0_C6.1" "cookie=0xca9cd2a7" "fqdn=hermes" "uname=Linux x86_64 6.1.0-7-amd64" "user-name=prahal" "server-version=PipeWire 0.3.70"]
= enx0050b66daf43 IPv4 root@tv: Dummy Output PulseAudio Sound Sink local
hostname = [tv.local]
address = [192.168.10.220]
port = [4713]
txt = ["icon-name=computer" "class=abstract" "description=Dummy Output" "subtype=virtual" "channel_map=front-left,front-right" "format=s16le" "channels=2" "rate=44100" "device=auto_null" "cookie=0x022d828c" "fqdn=tv" "uname=Linux aarch64 6.1.19 #1 SMP PREEMPT Sat Mar 18 14:45:52 UTC 2023" "machine-id=a730fa22a179b7996d19d4d2617bbd5d" "user-name=root" "server-version=pulseaudio 16.1"]
= wlp4s0 IPv4 prahal@hermes: Audio interne St__r__o analogique PulseAudio Sound Sink local
hostname = [hermes.local]
address = [192.168.10.175]
port = [4713]
txt = ["org.freedesktop.Avahi.cookie=1359232070" "description=Audio interne St\195\169r\195\169o analogique" "subtype=hardware" "channel_map=front-left,front-right" "format=s32le" "channels=2" "rate=48000" "device=alsa_output.pci-0000_00_1f.3.analog-stereo" "cookie=0xca9cd2a7" "fqdn=hermes" "uname=Linux x86_64 6.1.0-7-amd64" "user-name=prahal" "server-version=PipeWire 0.3.70"]
= wlp4s0 IPv4 prahal@hermes: Lenovo Smart Dock 7AB0C6 PulseAudio Sound Sink local
hostname = [hermes.local]
address = [192.168.10.175]
port = [4713]
txt = ["org.freedesktop.Avahi.cookie=1359232070" "description=Lenovo Smart Dock 7AB0C6" "subtype=hardware" "channel_map=front-left,front-right" "format=s16le" "channels=2" "rate=48000" "device=bluez_output.84_B8_B8_7A_B0_C6.1" "cookie=0xca9cd2a7" "fqdn=hermes" "uname=Linux x86_64 6.1.0-7-amd64" "user-name=prahal" "server-version=PipeWire 0.3.70"]
= wlp4s0 IPv4 root@tv: Dummy Output PulseAudio Sound Sink local
hostname = [tv.local]
address = [192.168.10.220]
port = [4713]
txt = ["icon-name=computer" "class=abstract" "description=Dummy Output" "subtype=virtual" "channel_map=front-left,front-right" "format=s16le" "channels=2" "rate=44100" "device=auto_null" "cookie=0x022d828c" "fqdn=tv" "uname=Linux aarch64 6.1.19 #1 SMP PREEMPT Sat Mar 18 14:45:52 UTC 2023" "machine-id=a730fa22a179b7996d19d4d2617bbd5d" "user-name=root" "server-version=pulseaudio 16.1"]
$ avahi-browse --resolve _pulse-source._tcp -t
+ enx0050b66daf43 IPv4 prahal@hermes: Audio interne St__r__o analogique PulseAudio Sound Source local
= enx0050b66daf43 IPv4 prahal@hermes: Audio interne St__r__o analogique PulseAudio Sound Source local
hostname = [hermes.local]
address = [192.168.10.175]
port = [4713]
txt = ["org.freedesktop.Avahi.cookie=1359232070" "description=Audio interne St\195\169r\195\169o analogique" "subtype=hardware" "channel_map=front-left,front-right" "format=s32le" "channels=2" "rate=48000" "device=alsa_input.pci-0000_00_1f.3.analog-stereo" "cookie=0xca9cd2a7" "fqdn=hermes" "uname=Linux x86_64 6.1.0-7-amd64" "user-name=prahal" "server-version=PipeWire 0.3.70"]
+ wlp4s0 IPv4 prahal@hermes: Audio interne St__r__o analogique PulseAudio Sound Source local
= wlp4s0 IPv4 prahal@hermes: Audio interne St__r__o analogique PulseAudio Sound Source local
hostname = [hermes.local]
address = [192.168.10.175]
port = [4713]
txt = ["org.freedesktop.Avahi.cookie=1359232070" "description=Audio interne St\195\169r\195\169o analogique" "subtype=hardware" "channel_map=front-left,front-right" "format=s32le" "channels=2" "rate=48000" "device=alsa_input.pci-0000_00_1f.3.analog-stereo" "cookie=0xca9cd2a7" "fqdn=hermes" "uname=Linux x86_64 6.1.0-7-amd64" "user-name=prahal" "server-version=PipeWire 0.3.70"]
```
Note that I get these errors when "pipewire-pulse from master" works or when it segfaults:
```
[E][48281.723106] mod.pulse-tunnel | [module-pulse-tun: 928 create_pulse_stream()] failed to connect: Connection refused
[E][48281.723424] mod.zeroconf-discover | [module-zeroconf-: 358 resolver_cb()] Can't load module: Connexion refusée
```
but with git master when pipewire-pulse successfully starts I get these messages twice.
When pipewire-pulse crashes I get these messages only once (probably because it crashes before the second load attempt).
("Connexon refusée" means "Connection refused").
The dummy output from the tv host might be at fault (as it shares dummy output I am suspicious. It is a LibreELEC host running kodi. "LibreELEC (official): 11.0.1", kernel 6.1.19, pulseaudio 16.1. It is supposed to playback via hdmi audio( right now the tv the hdmi cable is plugged into is powered off).
```
tv:~ # pactl info
Server String: /var/run/pulse/native
Library Protocol Version: 35
Server Protocol Version: 35
Is Local: yes
Client Index: 3
Tile Size: 65496
User Name: root
Host Name: tv
Server Name: pulseaudio
Server Version: 16.1
Default Sample Specification: s16le 2ch 44100Hz
Default Channel Map: front-left,front-right
Default Sink: auto_null
Default Source: auto_null.monitor
Cookie: 022d:828c
tv:~ # pactl list
Module #0
Name: module-native-protocol-unix
Argument:
Usage counter: n/a
Properties:
module.author = "Lennart Poettering"
module.description = "Native protocol (UNIX sockets)"
module.version = "16.1"
Module #1
Name: module-stream-restore
Argument:
Usage counter: n/a
Properties:
module.author = "Lennart Poettering"
module.description = "Automatically restore the volume/mute/device state of streams"
module.version = "16.1"
Module #2
Name: module-device-restore
Argument:
Usage counter: n/a
Properties:
module.author = "Lennart Poettering"
module.description = "Automatically restore the volume/mute state of devices"
module.version = "16.1"
Module #3
Name: module-card-restore
Argument:
Usage counter: n/a
Properties:
module.author = "Lennart Poettering"
module.description = "Automatically restore profile of cards"
module.version = "16.1"
Module #4
Name: module-default-device-restore
Argument:
Usage counter: n/a
Properties:
module.author = "Lennart Poettering"
module.description = "Automatically restore the default sink and source"
module.version = "16.1"
Module #5
Name: module-always-sink
Argument:
Usage counter: n/a
Properties:
module.author = "Colin Guthrie"
module.description = "Always keeps at least one sink loaded even if it's a null one"
module.version = "16.1"
Module #6
Name: module-null-sink
Argument: sink_name=auto_null sink_properties='device.description="Dummy Output"'
Usage counter: 0
Properties:
module.author = "Lennart Poettering"
module.description = "Clocked NULL sink"
module.version = "16.1"
Module #7
Name: module-suspend-on-idle
Argument:
Usage counter: n/a
Properties:
module.author = "Lennart Poettering"
module.description = "When a sink/source is idle for too long, suspend it"
module.version = "16.1"
Module #8
Name: module-dbus-protocol
Argument:
Usage counter: n/a
Properties:
module.author = "Tanu Kaskinen"
module.description = "D-Bus interface"
module.version = "16.1"
Module #9
Name: module-bluetooth-policy
Argument:
Usage counter: n/a
Properties:
module.author = "Fr?d?ric Dalleau, Pali Roh?r"
module.description = "Policy module to make using bluetooth devices out-of-the-box easier"
module.version = "16.1"
Module #10
Name: module-bluetooth-discover
Argument:
Usage counter: n/a
Properties:
module.author = "Jo?o Paulo Rechi Vita"
module.description = "Detect available Bluetooth daemon and load the corresponding discovery module"
module.version = "16.1"
Module #11
Name: module-bluez5-discover
Argument:
Usage counter: n/a
Properties:
module.author = "Jo?o Paulo Rechi Vita"
module.description = "Detect available BlueZ 5 Bluetooth audio devices and load BlueZ 5 Bluetooth audio drivers"
module.version = "16.1"
Module #12
Name: module-zeroconf-publish
Argument:
Usage counter: n/a
Properties:
module.author = "Lennart Poettering"
module.description = "mDNS/DNS-SD Service Publisher"
module.version = "16.1"
Module #13
Name: module-switch-on-connect
Argument:
Usage counter: n/a
Properties:
module.author = "Michael Terry"
module.description = "When a sink/source is added, switch to it or conditionally switch to it"
module.version = "16.1"
Sink #0
State: SUSPENDED
Name: auto_null
Description: Dummy Output
Driver: module-null-sink.c
Sample Specification: s16le 2ch 44100Hz
Channel Map: front-left,front-right
Owner Module: 6
Mute: no
Volume: front-left: 65536 / 100% / 0.00 dB, front-right: 65536 / 100% / 0.00 dB
balance 0.00
Base Volume: 65536 / 100% / 0.00 dB
Monitor Source: auto_null.monitor
Latency: 0 usec, configured 0 usec
Flags: DECIBEL_VOLUME LATENCY SET_FORMATS
Properties:
device.description = "Dummy Output"
device.class = "abstract"
device.icon_name = "audio-card"
Formats:
pcm
Source #0
State: SUSPENDED
Name: auto_null.monitor
Description: Monitor of Dummy Output
Driver: module-null-sink.c
Sample Specification: s16le 2ch 44100Hz
Channel Map: front-left,front-right
Owner Module: 6
Mute: no
Volume: front-left: 65536 / 100% / 0.00 dB, front-right: 65536 / 100% / 0.00 dB
balance 0.00
Base Volume: 65536 / 100% / 0.00 dB
Monitor of Sink: auto_null
Latency: 0 usec, configured 0 usec
Flags: DECIBEL_VOLUME LATENCY
Properties:
device.description = "Monitor of Dummy Output"
device.class = "monitor"
device.icon_name = "audio-input-microphone"
Formats:
pcm
Client #1
Driver: protocol-native.c
Owner Module: 0
Properties:
application.name = "KodiDriver"
native-protocol.peer = "UNIX socket client"
native-protocol.version = "35"
application.process.id = "712"
application.process.user = "root"
application.process.host = "tv"
application.process.binary = "kodi.bin"
application.language = "C"
application.process.machine_id = "a730fa22a179b7996d19d4d2617bbd5d"
Client #4
Driver: protocol-native.c
Owner Module: 0
Properties:
application.name = "pactl"
native-protocol.peer = "UNIX socket client"
native-protocol.version = "35"
application.process.id = "11630"
application.process.user = "root"
application.process.host = "tv"
application.process.binary = "pactl"
application.language = "C.UTF-8"
application.process.machine_id = "a730fa22a179b7996d19d4d2617bbd5d"
```https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3203multiple output nodes not mixed on input node2023-05-10T15:28:38ZDouglas Coopermultiple output nodes not mixed on input node<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
- PipeWire version (`pipewire --version`): 0.3.50
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`...<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
- PipeWire version (`pipewire --version`): 0.3.50
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`): custom
- Desktop Environment: none
- Kernel version (`uname -r`): 5.15.7
## Description of Problem:
I have multiple sources (an audio device and a custom rtp receiver stream) connected to a custom input stream...a many to one scenario.
## How Reproducible:
connect the output of two sources to a sink where the multiple outputs nodes are connected to a single input node.
### Steps to Reproduce:
1. load my input stream with autoconnect flag which connects the sound card output automatically
2. load my rtp receiver stream
3. connect the rtp receiver output to my client input with an already connected sound card link
4. generate rtp traffic to stimulate the receiver
### Actual Results:
no audio is output on the custom input stream.
### Expected Results:
the sound card and rtp receiver audio is mixed.
# Additional Info (as attachments):https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/591Scarlett 4i4 (3rd gen) not listed as input device by libgnome-volume-control2023-05-10T03:40:32ZGeorges Basile Stavracas NetoScarlett 4i4 (3rd gen) not listed as input device by libgnome-volume-controlDistro: Arch
Version: master (d46c58e9)
Dump: [pw-dump](/uploads/f8db24ea080b44cce9d5fda29850f765/pw-dump)
I have a Scarlett 4i4 USB DAC that has its quirks, but generally works well enough. As of lately, however, the Sound panel of GNO...Distro: Arch
Version: master (d46c58e9)
Dump: [pw-dump](/uploads/f8db24ea080b44cce9d5fda29850f765/pw-dump)
I have a Scarlett 4i4 USB DAC that has its quirks, but generally works well enough. As of lately, however, the Sound panel of GNOME Settings stopped listing it as an input device - only as output.
![Captura_de_tela_de_2021-01-18_20-39-17](/uploads/5fc626da17b1006ebaf8b4db09736d76/Captura_de_tela_de_2021-01-18_20-39-17.png)
`pavucontrol`, however, properly lists it:
![Captura_de_tela_de_2021-01-18_20-39-54](/uploads/38cf62e53f13b84b4690e76289648ec1/Captura_de_tela_de_2021-01-18_20-39-54.png)
I see the following couple of lines in the journal:
```
jan 18 20:32:53 feareniar-x1 gnome-control-c[95325]: Couldn't match the portless stream (with card) - 'Scarlett 4i4 USB Multichannel' is it an input ? -> 1, streams card id -> 46
jan 18 20:32:53 feareniar-x1 gnome-control-c[95325]: gvc_mixer_ui_device_get_id: assertion 'GVC_IS_MIXER_UI_DEVICE (device)' failed
```
I bisected as far as 0.3.18, and all commits seem to be bad, but this was working okay until yesterday. Coincidentally, yesterday was the day I tried to reproduce old friend HDMI problem (https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/377, https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/390) so I suspect it must be related.https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3021RTP-MIDI support2023-05-09T07:10:31ZDmitry SharshakovRTP-MIDI supportAlso called AppleMIDI. Supported by many music instruments and controllers which have Ethernet/Wi-Fi, as well as computers and special adapters.
Looking into this myself solely, task assigned for now.Also called AppleMIDI. Supported by many music instruments and controllers which have Ethernet/Wi-Fi, as well as computers and special adapters.
Looking into this myself solely, task assigned for now.https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3123PipeWire’s JACK frontend causes Ardour 7 to hang on exit2023-05-09T06:31:29ZgitterdudePipeWire’s JACK frontend causes Ardour 7 to hang on exitSimilar to the old issue here (https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/2781) pipewire commit 90b11e3c49 and later, up to at lease the current aa0d9c5b41 one, causes Ardour7 to hang on exit when started using `pw-jack -p...Similar to the old issue here (https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/2781) pipewire commit 90b11e3c49 and later, up to at lease the current aa0d9c5b41 one, causes Ardour7 to hang on exit when started using `pw-jack -p 512 /path/to/ardour`
Tested under Ubuntu 18.04 and 22.04 and openSuse-15.5 beta
This happens even if I don't do anything in Ardour; I usually just open the Help->About dialog and then close it and close Ardour when testing for this problem.https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/2445Bluetooth is disconnecting frequently when used with HSP/HFP CVSD or HSP/HFP ...2023-05-09T00:49:58ZTejaskumar KasundraBluetooth is disconnecting frequently when used with HSP/HFP CVSD or HSP/HFP mSBC codec<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
<!-- If you can, test also with Pulseaudio and list `pulseaudio --version`. -->
- PipeWire version (`pipewire --version`):
```...<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
<!-- If you can, test also with Pulseaudio and list `pulseaudio --version`. -->
- PipeWire version (`pipewire --version`):
```
pipewire
Compiled with libpipewire 0.3.52
Linked with libpipewire 0.3.52
```
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`):
```
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.4 LTS
Release: 20.04
Codename: focal
```
- Desktop Environment: Yes
- Kernel version (`uname -r`):
```5.4.0-117-generic```
- BlueZ version (`bluetoothctl: 5.64`):
```
00:00.0 Host bridge: Intel Corporation Device 9b61 (rev 0c)
00:02.0 VGA compatible controller: Intel Corporation UHD Graphics (rev 02)
00:04.0 Signal processing controller: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Thermal Subsystem (rev 0c)
00:08.0 System peripheral: Intel Corporation Xeon E3-1200 v5/v6 / E3-1500 v5 / 6th/7th/8th Gen Core Processor Gaussian Mixture Model
00:12.0 Signal processing controller: Intel Corporation Comet Lake Thermal Subsytem
00:14.0 USB controller: Intel Corporation Device 02ed
00:14.2 RAM memory: Intel Corporation Device 02ef
00:14.3 Network controller: Intel Corporation Wireless-AC 9462
00:15.0 Serial bus controller [0c80]: Intel Corporation Serial IO I2C Host Controller
00:15.1 Serial bus controller [0c80]: Intel Corporation Comet Lake Serial IO I2C Host Controller
00:16.0 Communication controller: Intel Corporation Comet Lake Management Engine Interface
00:1c.0 PCI bridge: Intel Corporation Device 02b8 (rev f0)
00:1d.0 PCI bridge: Intel Corporation Device 02b0 (rev f0)
00:1d.4 PCI bridge: Intel Corporation Device 02b4 (rev f0)
00:1f.0 ISA bridge: Intel Corporation Device 0284
00:1f.3 Audio device: Intel Corporation Device 02c8
00:1f.4 SMBus: Intel Corporation Device 02a3
00:1f.5 Serial bus controller [0c80]: Intel Corporation Comet Lake SPI (flash) Controller
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (10) I219-V
02:00.0 Wireless controller [0d40]: Intel Corporation XMM7360 LTE Advanced Modem (rev 01)
03:00.0 Non-Volatile memory controller: Sandisk Corp Device 5006
05:00.0 PCI bridge: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] (rev 02)
06:00.0 PCI bridge: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] (rev 02)
06:01.0 PCI bridge: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] (rev 02)
06:02.0 PCI bridge: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] (rev 02)
06:04.0 PCI bridge: Intel Corporation JHL6540 Thunderbolt 3 Bridge (C step) [Alpine Ridge 4C 2016] (rev 02)
07:00.0 System peripheral: Intel Corporation JHL6540 Thunderbolt 3 NHI (C step) [Alpine Ridge 4C 2016] (rev 02)
2d:00.0 USB controller: Intel Corporation JHL6540 Thunderbolt 3 USB Controller (C step) [Alpine Ridge 4C 2016] (rev 02)
```
## Description of Problem:
```
- Using Nothing ear 1 bluetooth headset
- Using HSP/HFP CVSD or mSBC codec while taking call with google meet or zoom
- Bluetooth disconnecting very frequently
```
```Server String: /run/user/1000/pulse/native
Library Protocol Version: 33
Server Protocol Version: 35
Is Local: yes
Client Index: 845
Tile Size: 65472
User Name: tejaskumar
Host Name: tejaskumar
Server Name: PulseAudio (on PipeWire 0.3.52)
Server Version: 15.0.0
Default Sample Specification: float32le 2ch 48000Hz
Default Channel Map: front-left,front-right
Default Sink: bluez_output.2C_BE_EB_03_EC_E4.headset-head-unit
Default Source: bluez_input.2C_BE_EB_03_EC_E4.headset-head-unit
Cookie: 8cb5:da1c
```
Syslogs while issue happening
```
Jun 14 14:24:49 tejaskumar bluetoothd[830]: src/profile.c:ext_io_disconnected() Unable to get io data for Hands-Free Voice gateway: getpeername: Transport endpoint is not connected (107)
Jun 14 14:24:49 tejaskumar kernel: [13575.109188] Bluetooth: hci0: SCO packet for unknown connection handle 257
Jun 14 14:24:50 tejaskumar bluetoothd[830]: src/profile.c:ext_connect() Hands-Free Voice gateway failed connect to 2C:BE:EB:03:EC:E4: Connection refused (111)
Jun 14 14:24:50 tejaskumar kernel: [13576.441067] Bluetooth: hci0: SCO packet for unknown connection handle 0
Jun 14 14:24:50 tejaskumar kernel: [13576.441070] Bluetooth: hci0: SCO packet for unknown connection handle 0
Jun 14 14:24:50 tejaskumar kernel: [13576.451115] Bluetooth: hci0: SCO packet for unknown connection handle 0
Jun 14 14:24:50 tejaskumar kernel: [13576.451129] Bluetooth: hci0: SCO packet for unknown connection handle 0
Jun 14 14:24:50 tejaskumar kernel: [13576.451136] Bluetooth: hci0: SCO packet for unknown connection handle 0
Jun 14 14:24:50 tejaskumar kernel: [13576.451162] Bluetooth: hci0: SCO packet for unknown connection handle 0
```
## How Reproducible:
```
- Always reproducible
- Even when bluetooth device is idle, disconnect happening at that time as well
```
[pw-dump.log](/uploads/c0dfece0d39aa1de7be70dbd4a7c56e8/pw-dump.log)
### Expected Results:
- It should not disconnect every now and then
# Additional Info (as attachments):
- `pw-dump > pw-dump.log`:
- Bluetooth debug log, see [here](https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Troubleshooting#bluetooth):https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1576Ardour hangs in `graph_callback` when connecting/disconnecting inputs or outputs2023-05-05T17:50:12ZStefan BenderArdour hangs in `graph_callback` when connecting/disconnecting inputs or outputsHi,
Version, Distribution, Desktop Environment:
pipewire 0.3.32+, Ubuntu 18.04, Ardour 5.12.0 (ubuntu package)
Description of Problem:
As of version 0.3.32, Ardour's patchbay (and UI) hangs when trying to connect/disconnect nodes in it...Hi,
Version, Distribution, Desktop Environment:
pipewire 0.3.32+, Ubuntu 18.04, Ardour 5.12.0 (ubuntu package)
Description of Problem:
As of version 0.3.32, Ardour's patchbay (and UI) hangs when trying to connect/disconnect nodes in it when using pipewire. This is independent from the nodes being virtual or real devices.
Git bisect told me: aab72ded6e757c7edad5404ffdcd6072fa9740fe is the first bad commit.
This commit added calls to the `graph_callback` in `pipewire-jack/src/pipewire-jack.c`, and in the recent master version (abc01083d4e085cbb7b47327ce678ed50bb5e814), these calls have moved to lines 2772 in `registry_event_global()` and 2833 in `registry_event_global_remove()` in that file.
Removing/commenting these calls fixes it for me.
Trying to connect from outside (using `pw-link` or `qjackctl`) results in a popup-window with: "programming error: no per-thread pool "" for thread unknown". The same happens when starting ardour first and then any other app (pavucontrol, qjackctl, ...) that seems to trigger the `graph_callback`.
I am not sure what breaks there, I suppose it is some kind of race condition. Maybe it is a bug in Ardour, but it works fine with pulseaudio and jack.
How Reproducible:
Every time.
Steps to Reproduce:
1. compile pipewire
2. start pipewire
3. run ardour
4. try to connect or disconnect some inputs or outputs
Actual Results: Ardour's UI freezes.
Expected Results: Ardour's UI stays responsive.
Let me know what else I can do to debug that, but it hangs exactly at `do_callback()` and the callback seems to have been set, i.e. is not (nil).https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3191pavucontrol running halves reported latency2023-05-03T18:06:52ZP Vpavucontrol running halves reported latencyWhen pavucontrol is running, it creates monitor streams to everywhere, whose ports have all Latency fields set to zero.
This affects latency reporting: `pw-dump 71` (id of paplay node) when pavucontrol is not running:
```
"Laten...When pavucontrol is running, it creates monitor streams to everywhere, whose ports have all Latency fields set to zero.
This affects latency reporting: `pw-dump 71` (id of paplay node) when pavucontrol is not running:
```
"Latency": [ { "direction": "Input",
"minQuantum": 1.000000, "maxQuantum": 1.000000,
"minRate": 512, "maxRate": 512,
"minNs": 0, "maxNs": 0 }
],
```
and when pavucontrol is running
```
"Latency": [ { "direction": "Input",
"minQuantum": 0.000000, "maxQuantum": 1.000000,
"minRate": 0, "maxRate": 512,
"minNs": 0, "maxNs": 0 } ],
```
`pw_get_time_n` calculates the delay by taking the average of max+min, so it is halved when pavucontrol runs. This then affects all clients and also eg. pulseaudio latency reporting.
There probably should be something in the port latency calculation so that it ignores e.g. stream ports that don't have valid defined latency.https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3182Bad quality sound on intel HDA HDMI output2023-05-02T19:39:40ZMatthieuBad quality sound on intel HDA HDMI output<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
- PipeWire version (`pipewire --version`):
pipewire
Compiled with libpipewire 0.3.65
Linked with libpipewire 0.3.65
- Distribut...<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
- PipeWire version (`pipewire --version`):
pipewire
Compiled with libpipewire 0.3.65
Linked with libpipewire 0.3.65
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`): Ubuntu 23.04
- Desktop Environment: Default (gnome I guess)
- Kernel version (`uname -r`): 6.2.0-20-generic
## Description of Problem:
The sound quality is degraded, it's hard to explain, there is some reverb / hissing on quite high pitch sound, like the [S] sound when talking. And this problem seems to be not consistent, sometimes it's more pronounced. Even on same audio file, at one time it will be subtle, and little after really obvious that ther is a trouble.
When I revert back on pulseaudio on the 22.10 install, the problem was solved. (So same hardware, same global Ubuntu settings ...)
## How Reproducible:
I've tried with Ubuntu 22.10 installed and in live CD. And with the 23.04 installed
This problem appear with every program (pw-cat, aplay or Internet Browser).
### Steps to Reproduce:
1. Just listen music or movie with bad sound
2. Revert to pulseaudio
3. The sound is now great, at least normal.
### Actual Results:
Bad quality sound
### Expected Results:
Normal qyality sound
# Additional Info (as attachments):
- `pw-dump > pw-dump.log`:
[pw-dump.log](/uploads/810e9e77fce565b37a97e855c6383356/pw-dump.log)https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3188Pipewire 0.3.70 not respecting user defined quantum2023-05-01T14:44:33ZFilippo LandiPipewire 0.3.70 not respecting user defined quantum<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
- PipeWire version (`pipewire --version`): 0.3.70
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`...<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
- PipeWire version (`pipewire --version`): 0.3.70
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`): Fedora Linux 37 (Thirty Seven)
- Desktop Environment: i3-wm
- Kernel version (`uname -r`): 6.2.12-200.fc37.x86_64
## Description of Problem:
With recent versions of pipewire to avoid xruns I had to copy /usr/share/pipewire/pipewire.conf in .config/pipewire/, and change the pulse.min.quantum to 1024, looking at pw-top the latest version seems to not respect this setting and I get xruns.
## How Reproducible:
Opening a video with mpv I can see 512 quantum.https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3184combine-sink fails to output data to all sinks / node activation issue2023-05-01T09:48:24ZP Vcombine-sink fails to output data to all sinks / node activation issueUsing combine-sink to play to both ALSA and Bluetooth output results to audio not being to sent one of them,
```
$ pw-top
S ID QUANT RATE WAIT BUSY W/Q B/Q ERR FORMAT NAME ...Using combine-sink to play to both ALSA and Bluetooth output results to audio not being to sent one of them,
```
$ pw-top
S ID QUANT RATE WAIT BUSY W/Q B/Q ERR FORMAT NAME
S 29 0 0 --- --- --- --- 0 Dummy-Driver
S 30 0 0 --- --- --- --- 0 Freewheel-Driver
S 40 0 0 --- --- --- --- 0 Midi-Bridge
S 50 0 0 --- --- --- --- 0 libcamera_input.__SB_.PCI0.XHC_.RHUB.HSP3-3_1.0-0c45_6368
S 52 0 0 --- --- --- --- 0 v4l2_input.pci-0000_00_14.0-usb-0_3_1.0
R 66 2048 48000 +++ 359,3us +++ 0,01 1 S16LE 2 48000 bluez_output.48_D8_45_AD_F1_2B.1
R 113 0 0 7,6us 24,2us 0,00 0,00 1 F32P 2 48000 + combined
R 116 0 0 --- 0,0us --- 0,00 25 F32P 2 48000 + output.combined_bluez_output.48_D8_45_AD_F1_2B.1
R 35 0 0 1,8us 120,3us 0,00 0,00 25 S16LE 2 48000 + alsa_output.usb-Logitech_PRO_000000000000-00.analog-stereo.2
R 115 0 0 0,0us 0,0us 0,00 0,00 25 F32P 2 48000 + output.combined_alsa_output.usb-Logitech_PRO_000000000000-00.analog-stereo.2
R 74 8192 44100 32,1us 102,1us 0,00 0,00 1 F32LE 2 44100 + paplay
```
In this case, there was no output on the ALSA device. If I unlink the output.combined from the bluez sink in Helvum, the ALSA node starts to play. If the Bluetooth node is linked again in Helvum, ALSA node starts to play a short loop as if repeating some current buffer.
Reproducer: have Bluetooth and ALSA outputs, do `pactl load-module module-combine-sink`, play something, doesn't play on one of the devices. If you remove links in Helvum from combine-output to one sink, the other starts playing. If you reconnect, the problematic sink starts playing a short sample loop.
Git bisect: 3cae535da08bb78bae540772085f5700beed0c6c is the first bad commit
So looks like some node activation problem. <s>Bluetooth is maybe relevant because it's a driver in a different process.</s> This seems to occur also with only ALSA nodes.
[pw-dump.txt](/uploads/16e12966f3d7bd6433b87e3fa4da4b27/pw-dump.txt)https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/2682module-profiler/pw-top ERR with node in different process is probably spurious2023-04-30T12:29:59ZP Vmodule-profiler/pw-top ERR with node in different process is probably spuriousI've been looking at why Bluetooth nodes rack up the ERR count in pw-top. This seems to be because impl-node.c:process_node does not wait for the remote driver node async return to complete before emitting the `complete` event, so that p...I've been looking at why Bluetooth nodes rack up the ERR count in pw-top. This seems to be because impl-node.c:process_node does not wait for the remote driver node async return to complete before emitting the `complete` event, so that profiling data sometimes gets recorded at the same time as the remote node is still processing. I think this doesn't occur with ALSA nodes just because they run in the server process, so the process call is not async, and always completes first.
With some added debug (https://gitlab.freedesktop.org/pvir/pipewire/-/commits/bt-err-debug), things look like this:
```
# pipewire server process
[T][13:56:42.896603] pw.node | [ impl-node.c: 1624 node_ready()] 0x61d000028a80 (bluez_output.00_00_AB_CD_7A_DE.headset-head-unit): ready driver:1 exported:0 0x61d0
00028a80 status:2
[T][13:56:42.896624] pw.node | [ impl-node.c: 1054 resume_node()] 0x61d000028a80 (bluez_output.00_00_AB_CD_7A_DE.headset-head-unit): trigger peers 9614896808539
[T][13:56:42.896636] pw.node | [ impl-node.c: 1060 resume_node()] 0x61d000028a80 (bluez_output.00_00_AB_CD_7A_DE.headset-head-unit): state:0x7f1edc4e8008 pending:4/
4
[T][13:56:42.896649] pw.node | [ impl-node.c: 1060 resume_node()] 0x61d000028a80 (bluez_output.00_00_AB_CD_7A_DE.headset-head-unit): state:0x7f1edc4e8008 pending:3/
4
[T][13:56:42.896661] pw.node | [ impl-node.c: 1060 resume_node()] 0x61d00002b280 (pw-play): state:0x7f1edbe2e008 pending:1/1
[D][13:56:42.896672] pw.node | [ impl-node.c: 1093 process_node()] 0x61d00002b280 (pw-play) awaken for process
[T][13:56:42.896682] pw.node | [ impl-node.c: 1105 process_node()] 0x61d00002b280 (pw-play): process 9614896867028
[T][13:56:42.896694][ client-node.c: 932 impl_node_process()] 0x617000002720: send process driver:0x61d000028a80
[T][13:56:42.896708][ client-node.c: 943 impl_node_process()] 0x617000002720: send process async return
[T][13:56:42.896717] pw.node | [ impl-node.c: 1116 process_node()] 0x61d00002b280 (pw-play): process returns 0
[T][13:56:42.896727] pw.node | [ impl-node.c: 1145 process_node()] 0x61d00002b280: async continue
[D][13:56:42.896815] pw.node | [ impl-node.c: 1093 process_node()] 0x61d000028a80 (bluez_output.00_00_AB_CD_7A_DE.headset-head-unit) awaken for process
[T][13:56:42.896827] pw.node | [ impl-node.c: 1105 process_node()] 0x61d000028a80 (bluez_output.00_00_AB_CD_7A_DE.headset-head-unit): process 9614897011672
[T][13:56:42.896842][ client-node.c: 932 impl_node_process()] 0x6170000023a0: send process driver:0x61d000028a80
[T][13:56:42.896857][ client-node.c: 943 impl_node_process()] 0x6170000023a0: send process async return
[T][13:56:42.896869] pw.node | [ impl-node.c: 1116 process_node()] 0x61d000028a80 (bluez_output.00_00_AB_CD_7A_DE.headset-head-unit): process returns 0
[T][13:56:42.896890] pw.node | [ impl-node.c: 1132 process_node()] 0x61d000028a80 (bluez_output.00_00_AB_CD_7A_DE.headset-head-unit): graph completed wait:203133 run:62445 busy:265578 period:81838 cpu:4,270493:5,083025:5,204981 status:3
[T][13:56:42.896905] mod.profiler | [module-profiler.: 199 context_do_profile()] 0x61d000028a80 (bluez_output.00_00_AB_CD_7A_DE.headset-head-unit): do profile status:2
[T][13:56:42.896931] pw.node | [ impl-node.c: 1143 process_node()] 0x61d000028a80 (bluez_output.00_00_AB_CD_7A_DE.headset-head-unit): driver emit complete done
# at the same time, in wireplumber:
D 13:56:42.896504 spa.bluez5.sink.sc ../spa/plugins/bluez5/sco-sink.c:611:sco_on_timeout: 0x623000016d28: timer 9614896644587 42666666
T 13:56:42.896528 spa.bluez5.sink.sc ../spa/plugins/bluez5/sco-sink.c:633:sco_on_timeout: 0x623000016d28: 0
T 13:56:42.896537 mod.client-node ../src/modules/module-client-node/remote-node.c:1189:node_ready: node 0x61d000663a80: ready driver:1 exported:1 status:1
D 13:56:42.896888 pw.node ../src/pipewire/impl-node.c:1093:process_node: 0x61d000663a80 (bluez_output.00_00_AB_CD_7A_DE.headset-head-unit) awaken for process
T 13:56:42.896902 pw.node ../src/pipewire/impl-node.c:1105:process_node: 0x61d000663a80 (bluez_output.00_00_AB_CD_7A_DE.headset-head-unit): process 9614897084080
T 13:56:42.897047 spa.bluez5.sink.sc ../spa/plugins/bluez5/sco-sink.c:1259:impl_node_process: 0x623000016d28: queue buffer 0
T 13:56:42.897057 spa.bluez5.sink.sc ../spa/plugins/bluez5/sco-sink.c:1282:impl_node_process: 0x623000016d28: flush on process
T 13:56:42.897072 spa.bluez5.sink.sc ../spa/plugins/bluez5/sco-sink.c:526:flush_data: 0x623000016d28: send wrote:60 dt:9902009
T 13:56:42.897079 spa.bluez5.sink.sc ../spa/plugins/bluez5/sco-sink.c:531:flush_data: write socket data 60
T 13:56:42.897088 pw.node ../src/pipewire/impl-node.c:1116:process_node: 0x61d000663a80 (bluez_output.00_00_AB_CD_7A_DE.headset-head-unit): process returns 3
T 13:56:42.897095 pw.node ../src/pipewire/impl-node.c:1054:resume_node: 0x61d000663a80 (bluez_output.00_00_AB_CD_7A_DE.headset-head-unit): trigger peers 9614897278496
```
Profiler recording data with activation status 2 here triggers ERR count increase in pw-top. It changed from 3 to 2 during `pw_context_driver_emit_complete`, apparently since the flag is on shared memory, and was changed due to the node in the remote process awakening for the async process call.
Probably it should somehow wait for the remote driver node to complete processing, before emitting the driver complete event.https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3181Add jack_position_t::tick_double, and flags around it2023-04-28T15:32:54ZDaniel AppeltAdd jack_position_t::tick_double, and flags around it<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
- PipeWire version (`pipewire --version`): 0.3.70
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`...<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
- PipeWire version (`pipewire --version`): 0.3.70
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`): Arch Linux
- Desktop Environment: awesome-wm
- Kernel version (`uname -r`): 6.2.12-arch1-1
## Description of Problem:
The original jack(2) is receiving new features from time to time. One of these is more precise timing information introduced in [release 1.9.19](https://github.com/jackaudio/jack2/releases/tag/v1.9.19) of jack2.
Software that makes use of this new feature does not compile against pipewire-jack, [for example mod-host](https://github.com/moddevices/mod-host/issues/55).
## How Reproducible:
Always
### Steps to Reproduce:
1. git clone https://github.com/moddevices/mod-host.git
2. cd mod-host
3. make
### Actual Results:
Compilation fails with `JackTickDouble` not declared.
### Expected Results:
Compilation does not fail..https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3174check_realtime_privileges(): Can't set rt prio to 88: Operation not permitted...2023-04-26T13:07:08ZAtemucheck_realtime_privileges(): Can't set rt prio to 88: Operation not permitted (try increasing rlimits)I'm trying to get pipewire to run with realtime priority.
```
$ PIPEWIRE_DEBUG=5 pipewire
...
[I][12603.799702] pw.conf | [ conf.c: 953 pw_context_conf_section_for_each()] handle override '/Users/atemu/.config/pipewire/pi...I'm trying to get pipewire to run with realtime priority.
```
$ PIPEWIRE_DEBUG=5 pipewire
...
[I][12603.799702] pw.conf | [ conf.c: 953 pw_context_conf_section_for_each()] handle override '/Users/atemu/.config/pipewire/pipewire.conf.d/test.conf' section 'context.modules'
[I][12603.799709] pw.module | [ impl-module.c: 162 pw_context_load_module()] 0x55f27b2551a0: name:libpipewire-module-rt args:{
nice.level = -11
rt.prio = 88
#rt.time.soft = -1
#rt.time.hard = -1
}
[D][12603.799716] pw.module | [ impl-module.c: 167 pw_context_load_module()] moduledir set to: /nix/store/7zblgkp9iakf9hh21xzq9g397h9zf2ff-pipewire-0.3.68-lib/lib/pipewire-0.3
[D][12603.799723] pw.module | [ impl-module.c: 177 pw_context_load_module()] trying to load module: libpipewire-module-rt (/nix/store/7zblgkp9iakf9hh21xzq9g397h9zf2ff-pipewire-0.3.68-lib/lib/pipewire-0.3/libpipewire-module-rt.so) args({
nice.level = -11
rt.prio = 88
#rt.time.soft = -1
#rt.time.hard = -1
})
[D][12603.799732] pw.global | [ global.c: 88 pw_global_new()] 0x55f27b298ba0: new PipeWire:Interface:Module 29
[D][12603.799738] mod.rt | [ module-rt.c: 966 pipewire__module_init()] module 0x55f27b2db2a0: new
[I][12603.799745] mod.rt | [ module-rt.c: 610 check_realtime_privileges()] Can't set rt prio to 88: Operation not permitted (try increasing rlimits)
[I][12603.799778] mod.rt | [ module-rt.c: 640 set_nice()] main thread nice level set to -11
[I][12603.803584] mod.rt | [ module-rt.c: 640 set_nice()] main thread nice level set to -11
[D][12603.803696] mod.rt | [ module-rt.c: 661 set_rlimit()] clamping rt.time.soft from 18446744073709551615 to 200000 because of RTKit
[D][12603.803715] mod.rt | [ module-rt.c: 677 set_rlimit()] rt.time.soft:200000 rt.time.hard:200000
[D][12603.803727] pw.module | [ impl-module.c: 363 pw_impl_module_update_properties()] 0x55f27b298970: updated 4 properties
[D][12603.803738] pw.module | [ impl-module.c: 363 pw_impl_module_update_properties()] 0x55f27b298970: updated 2 properties
[D][12603.803750] mod.rt | [ module-rt.c: 1057 pipewire__module_init()] initialized using RTKit
[D][12603.803760] pw.global | [ global.c: 164 pw_global_register()] 0x55f27b298ba0: registered 29
[D][12603.803771] pw.module | [ impl-module.c: 256 pw_context_load_module()] 0x55f27b298970: loaded module: libpipewire-module-rt
[I][12603.803781] pw.conf | [ conf.c: 582 load_module()] 0x55f27b2551a0: loaded module libpipewire-module-rt
...
```
```
$ chrt -p $(pidof -o $(pidof pipewire-pulse) pipewire)
pid 47742's current scheduling policy: SCHED_OTHER|SCHED_RESET_ON_FORK
pid 47742's current scheduling priority: 0
```
But I can run `chrt 88 echo test` just fine and the `echo` command does get rt prio.
```
$ ulimit -a
real-time non-blocking time (microseconds, -R) unlimited
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 127949
max locked memory (kbytes, -l) 8192
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 99
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 127949
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
```
```
$ cat /proc/$(pidof -o $(pidof pipewire-pulse) pipewire)/limits
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 8388608 unlimited bytes
Max core file size unlimited unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 127949 127949 processes
Max open files 1024 524288 files
Max locked memory 8388608 8388608 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 127949 127949 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 99 99
Max realtime timeout 200000 200000 us
```
What's going on? Am I doing something wrong?
```
$ pipewire --version
pipewire
Compiled with libpipewire 0.3.68
Linked with libpipewire 0.3.68
```https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3151Upmixing LFE not working despite manual configuration2023-04-26T08:21:47ZRobotRossUpmixing LFE not working despite manual configuration<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
- PipeWire version (`pipewire --version`): pipewire
Compiled with libpipewire 0.3.68
Linked with libpipewire 0.3.68
- Distribut...<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
- PipeWire version (`pipewire --version`): pipewire
Compiled with libpipewire 0.3.68
Linked with libpipewire 0.3.68
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`): Fedora Workstation 37
- Desktop Environment: GNOME 43.4
- Kernel version (`uname -r`): 6.2.9-200.fc37.x86_64
## Description of Problem:
LFE channel mixing nonfunctional from stereo channels.
## How Reproducible:
Always.
### Steps to Reproduce:
1. Configure pipewire for output to 2.1 ( FL, FR, LFE )
2. Enable upmixing via config file in `{HOME}/.config/pipewire/pipewire.conf.d` . [20-upmix.conf](/uploads/cc61e499e418132fd78501879a2b7ca0/20-upmix.conf)
### Actual Results:
No mixed LFE present (Applications which can output directly to LFE work fine, but applications which should have a mixed LFE signal do nothing)
### Expected Results:
LFE channel should be mixed from speaker channels based on cutoff frequency.
# Additional Info (as attachments):
- `pw-dump > pw-dump.log`: [pw-dump.log](/uploads/5c740186c2244388bf562887047449af/pw-dump.log)https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3069does not work with non-interleaved audio devices2023-04-25T09:30:23ZOswald Buddenhagendoes not work with non-interleaved audio devices<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
- PipeWire version: 0.3.65
- Distribution and distribution version: debian sid
- Desktop Environment: none
- Kernel version: 6....<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
- PipeWire version: 0.3.65
- Distribution and distribution version: debian sid
- Desktop Environment: none
- Kernel version: 6.2.0-rc2
## Description of Problem:
i configured pipewire with the multi-channel output device of an e-mu 0404 card (emu10k1 driver). this device has the peculiarity that it is non-interleaved. the result is that the right channel is playing back garbage.
note that with the upstream driver, pipewire will pick the regular pcm device by default, which works fine. i have a kernel patch series in the works which introduces a driver mode where the multi-channel device is the only available one, so that becomes the default.
the patch series also introduces support for 96 & 192 khz sampling rates, which for internal reasons are interleaved again (and without mmap support), and with that pipewire works again.
i suppose i could force pipewire to use a plughw device which provides a virtual interleaved device, but that's not what happens out of the box.https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3159Multiple allowed sample rates + virtual surround sink = loss of audio output2023-04-25T08:26:47ZBrisse89Multiple allowed sample rates + virtual surround sink = loss of audio output- PipeWire version: 0.3.68
- Distribution and distribution version: Debian GNU/Linux 12 (bookworm)
- Desktop Environment: GNOME
- Kernel version): 6.1.0-7-amd64
## Description of Problem:
Allowing multiple sample rates while using [virt...- PipeWire version: 0.3.68
- Distribution and distribution version: Debian GNU/Linux 12 (bookworm)
- Desktop Environment: GNOME
- Kernel version): 6.1.0-7-amd64
## Description of Problem:
Allowing multiple sample rates while using [virtual-surround-sink](https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/master/src/daemon/filter-chain/sink-virtual-surround-7.1-hesuvi.conf) causes issues, potentially leading to loss of audio output.
## How Reproducible:
100% if following steps below
### Steps to Reproduce:
1. Set `default.clock.allowed-rates = [ 44100 48000 ]` in pipewire.conf
2. Add a [virtual-surround-sink](https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/master/src/daemon/filter-chain/sink-virtual-surround-7.1-hesuvi.conf)
3. Restart PipeWire `systemctl --user restart pipewire`
4. Run pw-top and observe while doing following steps
5. Play any 44.1khz content (I play music in Rhythmbox) to make the audio chain switch to 44.1khz and then stop.
6. In pw-top, effect_output.virtual-surround-7.1 is now stuck at a rate of 44100.
7. Play any 48khz content (I use video in MPV) and note in pw-top that the rates displayed do not match, and the audio is completely gone
### Actual Results:
Complete loss of audio and effect_output.virtual-surround-7.1 stuck at the wrong sample rate.
### Expected Results:
Sample rates should switch back and forth seamlessly without loss of audio, and since we stopped playing the 44.1khz content before starting the 48khz content, there should be no simultaneous mismatch of sample rates displayed in pw-top, i.e. effect_output.virtual-surround-7.1 should switch back to 48khz rather than being stuck at 44.1khz.
### Additional information
Here are my specific configuration files. The virtual-surround-sink is slightly different from PipeWire's sample config but I don't know if it matters. Specifically, it has IR's for both sample rates and I've added an extra convolution step to correct the frequency response for my headphones.
[pipewire.conf](/uploads/18cc5ad5a2e0d9479ee8115afc40bcfc/pipewire.conf)
[sink-virtual-surround-7.1-hd555.conf](/uploads/ea65ab4d8f74d245579649eaa4c54746/sink-virtual-surround-7.1-hd555.conf)https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1369Suspend on idle can't be disabled2023-04-24T19:40:53ZJeffrey BouterSuspend on idle can't be disabled**Version, Distribution, Desktop Environment:**
KDE Neon (Ubuntu 20.04 LTS)
Pipewire 0.3.31 (using debian PPA)
KDE Plasma
**Description of Problem:**
Since yesterday's update on the PPA, my external sound card keeps getting cut off w...**Version, Distribution, Desktop Environment:**
KDE Neon (Ubuntu 20.04 LTS)
Pipewire 0.3.31 (using debian PPA)
KDE Plasma
**Description of Problem:**
Since yesterday's update on the PPA, my external sound card keeps getting cut off when no device is using it. In pulseaudio, I could work around this issue by disabling suspend-on-idle module. There's currently no documented way (that I can find, at least) on how to disable said module on pipewire. Though I am fairly certain there's an suspend-on-idle module in there.
**How Reproducible:**
Every single boot
**Steps to Reproduce:**
1. Use an external sound card
2. Use pipewire
3. Notice it "disconnects" the sound card
**Actual Results:**
External sound card keeps getting disconnected, making the speakers connected to it pop.
**Expected Results:**
External sound card remains in a "powered on" state at all times.
Additional Info Eg. `pw-dump -N > file` (As Attachment Please): [gitlab.txt](/uploads/d4e446a0888f606ba4a96932e6653ba5/gitlab.txt)