pipewire issueshttps://gitlab.freedesktop.org/pipewire/pipewire/-/issues2023-05-21T22:20:43Zhttps://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3232'Random' assertion caused by libpipewire crashed Music Player Daemon (MPD)2023-05-21T22:20:43ZGuilherme'Random' assertion caused by libpipewire crashed Music Player Daemon (MPD)- PipeWire version (`pipewire --version`): 0.3.70
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`): Arch Linux
- Desktop Environment: KDE Plasma 5.27
- Kernel version (`uname -r`): 6.1.29
## Description of ...- PipeWire version (`pipewire --version`): 0.3.70
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`): Arch Linux
- Desktop Environment: KDE Plasma 5.27
- Kernel version (`uname -r`): 6.1.29
## Description of Problem:
Music Player Daemon (MPD) recently crashed for me, and after [I reported the crash on the MPD bug tracker](https://github.com/MusicPlayerDaemon/MPD/issues/1812), the developer mentioned this could be caused by libpipewire.
As I mentioned in the MPD bug report, I was able to get a stack trace, but I'm not sure if it's useful (feel free to close this if it isn't):
```
Thread 9 (Thread 0x7f15e41650c0 (LWP 640)):
#0 0x00007f15f4c34266 in epoll_wait (epfd=4, events=0x7ffd09f46500, maxevents=16, timeout=60438) at ../sysdeps/unix/sysv/linux/epoll_wait.c:30
#1 0x000055ef5dcb9fd0 in EpollFD::Wait(epoll_event*, int, int) (timeout=<optimized out>, maxevents=16, events=0x7ffd09f46500, this=0x7ffd09f47438) at ../mpd-0.23.12/src/io/FileDescriptor.hxx:104
#2 EpollBackend::ReadEvents(int) (timeout_ms=<optimized out>, this=0x7ffd09f47438) at ../mpd-0.23.12/src/event/EpollBackend.hxx:60
#3 EventLoop::Wait(std::chrono::duration<long, std::ratio<1l, 1000000000l> >) (timeout=Python Exception <class 'gdb.error'>: value has been optimized out
, this=0x7ffd09f46ba8) at ../mpd-0.23.12/src/event/Loop.cxx:252
#4 EventLoop::Run() (this=0x7ffd09f46ba8) at ../mpd-0.23.12/src/event/Loop.cxx:343
#5 0x000055ef5dc81706 in MainConfigured(CommandLineOptions const&, ConfigData const&) (options=..., raw_config=...) at ../mpd-0.23.12/src/Main.cxx:576
#6 0x000055ef5dc827bc in MainOrThrow(int, char**) (argc=<optimized out>, argv=0x7ffd09f48b88) at ../mpd-0.23.12/src/Main.cxx:691
#7 0x000055ef5dc794ce in mpd_main(int, char**) (argv=<optimized out>, argc=<optimized out>) at ../mpd-0.23.12/src/Main.cxx:697
#8 main(int, char**) (argc=<optimized out>, argv=<optimized out>) at ../mpd-0.23.12/src/Main.cxx:709
Thread 8 (LWP 702):
#0 0x0000000000000000 in ()
Thread 7 (Thread 0x7f15e3dae6c0 (LWP 692)):
#0 0x00007f15f4c34266 in epoll_wait (epfd=6, events=0x7f15e3dad440, maxevents=16, timeout=-1) at ../sysdeps/unix/sysv/linux/epoll_wait.c:30
#1 0x000055ef5dcb9fd0 in EpollFD::Wait(epoll_event*, int, int) (timeout=<optimized out>, maxevents=16, events=0x7f15e3dad440, this=0x7ffd09f47ce8) at ../mpd-0.23.12/src/io/FileDescriptor.hxx:104
#2 EpollBackend::ReadEvents(int) (timeout_ms=<optimized out>, this=0x7ffd09f47ce8) at ../mpd-0.23.12/src/event/EpollBackend.hxx:60
#3 EventLoop::Wait(std::chrono::duration<long, std::ratio<1l, 1000000000l> >) (timeout=Python Exception <class 'gdb.error'>: value has been optimized out
, this=0x7ffd09f47458) at ../mpd-0.23.12/src/event/Loop.cxx:252
#4 EventLoop::Run() (this=0x7ffd09f47458) at ../mpd-0.23.12/src/event/Loop.cxx:343
#5 0x000055ef5dcb4c21 in BoundMethod<void () noexcept>::operator()() const (this=<optimized out>, this=<optimized out>) at ../mpd-0.23.12/src/util/BindMethod.hxx:78
#6 Thread::Run() (this=<optimized out>) at ../mpd-0.23.12/src/thread/Thread.cxx:63
#7 Thread::ThreadProc(void*) (ctx=<optimized out>) at ../mpd-0.23.12/src/thread/Thread.cxx:92
#8 0x00007f15f4bb044b in start_thread (arg=<optimized out>) at pthread_create.c:444
#9 0x00007f15f4c33d64 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:100
Thread 6 (Thread 0x7f15e25ab6c0 (LWP 695)):
#0 0x00007f15f780d15b in III_huffdecode (part3_length=<optimized out>, sfbwidth=<optimized out>, channel=<optimized out>, xr=0x7f15e2597860, ptr=0x7f15e2598230) at /usr/src/debug/libmad/libmad-0.15.1b/layer3.c:1284
#1 III_decode (ptr=ptr@entry=0x7f15e2598230, frame=frame@entry=0x7f15e2598568, si=si@entry=0x7f15e2598240, nch=nch@entry=2, md_len=md_len@entry=381) at /usr/src/debug/libmad/libmad-0.15.1b/layer3.c:2479
#2 0x00007f15f780fba5 in mad_layer_III (stream=0x7f15e25984f0, frame=0x7f15e2598568) at /usr/src/debug/libmad/libmad-0.15.1b/layer3.c:2736
#3 0x00007f15f7811566 in mad_frame_decode (frame=0x7f15e2598568, stream=0x7f15e25984f0) at /usr/src/debug/libmad/libmad-0.15.1b/frame.c:467
#4 0x000055ef5dd051fc in MadDecoder::DecodeNextFrame(bool, Tag*) (this=this@entry=0x7f15e25984f0, skip=<optimized out>, tag=tag@entry=0x7f15e25984e0) at ../mpd-0.23.12/src/decoder/plugins/MadDecoderPlugin.cxx:403
#5 0x000055ef5dd06465 in MadDecoder::LoadNextFrame() (this=<optimized out>) at ../mpd-0.23.12/src/decoder/plugins/MadDecoderPlugin.cxx:913
#6 MadDecoder::Read() (this=0x7f15e25984f0) at ../mpd-0.23.12/src/decoder/plugins/MadDecoderPlugin.cxx:937
#7 MadDecoder::RunDecoder() (this=0x7f15e25984f0) at ../mpd-0.23.12/src/decoder/plugins/MadDecoderPlugin.cxx:964
#8 mad_decode(DecoderClient&, InputStream&) (client=<optimized out>, input_stream=<optimized out>) at ../mpd-0.23.12/src/decoder/plugins/MadDecoderPlugin.cxx:971
#9 0x000055ef5dc84a1e in DecoderPlugin::StreamDecode(DecoderClient&, InputStream&) const (is=..., client=..., this=0x55ef5ddb1ac0 <mad_decoder_plugin>) at ../mpd-0.23.12/src/decoder/DecoderPlugin.hxx:202
#10 decoder_stream_decode(DecoderPlugin const&, DecoderBridge&, InputStream&, std::unique_lock<std::mutex>&) (plugin=..., bridge=..., input_stream=..., lock=...) at ../mpd-0.23.12/src/decoder/Thread.cxx:119
#11 0x000055ef5dc8edee in TryDecoderFile (plugin=..., input_stream=..., suffix="mp3", path_fs=..., bridge=...) at ../mpd-0.23.12/src/decoder/Thread.cxx:349
#12 operator() (plugin=..., __closure=<synthetic pointer>) at ../mpd-0.23.12/src/decoder/Thread.cxx:430
#13 decoder_plugins_try<decoder_run_file(DecoderBridge&, char const*, Path)::<lambda(const DecoderPlugin&)> > (f=...) at ../mpd-0.23.12/src/decoder/DecoderList.hxx:72
#14 decoder_run_file (path_fs=..., uri_utf8=0x55ef5df3c970 "/mnt/Music/Joey Bada$$/2015 - B4.DA.$$/14 - O.C.B.mp3", bridge=...) at ../mpd-0.23.12/src/decoder/Thread.cxx:428
#15 DecoderUnlockedRunUri (path_fs=..., real_uri=0x55ef5df3c970 "/mnt/Music/Joey Bada$$/2015 - B4.DA.$$/14 - O.C.B.mp3", bridge=...) at ../mpd-0.23.12/src/decoder/Thread.cxx:448
#16 decoder_run_song (path_fs=..., uri=0x55ef5df3c970 "/mnt/Music/Joey Bada$$/2015 - B4.DA.$$/14 - O.C.B.mp3", song=..., dc=...) at ../mpd-0.23.12/src/decoder/Thread.cxx:510
#17 decoder_run(DecoderControl&) (dc=...) at ../mpd-0.23.12/src/decoder/Thread.cxx:551
#18 0x000055ef5dc8f649 in DecoderControl::RunThread() (this=0x7f15e2dab3a0) at ../mpd-0.23.12/src/decoder/Thread.cxx:576
#19 BindMethodDetail::WrapperGenerator<void (DecoderControl::*)() noexcept, &DecoderControl::RunThread>::Invoke(void*) (_instance=0x7f15e2dab3a0) at ../mpd-0.23.12/src/util/BindMethod.hxx:130
#20 0x000055ef5dcb4c21 in BoundMethod<void () noexcept>::operator()() const (this=<optimized out>, this=<optimized out>) at ../mpd-0.23.12/src/util/BindMethod.hxx:78
#21 Thread::Run() (this=<optimized out>) at ../mpd-0.23.12/src/thread/Thread.cxx:63
#22 Thread::ThreadProc(void*) (ctx=<optimized out>) at ../mpd-0.23.12/src/thread/Thread.cxx:92
#23 0x00007f15f4bb044b in start_thread (arg=<optimized out>) at pthread_create.c:444
#24 0x00007f15f4c33d64 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:100
Thread 5 (Thread 0x7f15e2dac6c0 (LWP 694)):
#0 0x00007f15f4bacf0e in __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x0, op=393, expected=0, futex_word=0x55ef5de9d9d4) at futex-internal.c:57
#1 __futex_abstimed_wait_common (futex_word=futex_word@entry=0x55ef5de9d9d4, expected=expected@entry=0, clockid=clockid@entry=0, abstime=abstime@entry=0x0, private=private@entry=0, cancel=cancel@entry=true) at futex-internal.c:87
#2 0x00007f15f4bacf8f in __GI___futex_abstimed_wait_cancelable64 (futex_word=futex_word@entry=0x55ef5de9d9d4, expected=expected@entry=0, clockid=clockid@entry=0, abstime=abstime@entry=0x0, private=private@entry=0) at futex-internal.c:139
#3 0x00007f15f4baf7a0 in __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x55ef5de9d980, cond=0x55ef5de9d9a8) at pthread_cond_wait.c:503
#4 ___pthread_cond_wait (cond=0x55ef5de9d9a8, mutex=0x55ef5de9d980) at pthread_cond_wait.c:618
#5 0x00007f15f4ed9e11 in __gthread_cond_wait (__mutex=<optimized out>, __cond=0x55ef5de9d9a8) at /usr/src/debug/gcc/gcc-build/x86_64-pc-linux-gnu/libstdc++-v3/include/x86_64-pc-linux-gnu/bits/gthr-default.h:865
#6 std::__condvar::wait(std::mutex&) (__m=<optimized out>, this=0x55ef5de9d9a8) at /usr/src/debug/gcc/gcc-build/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/std_mutex.h:171
#7 std::condition_variable::wait(std::unique_lock<std::mutex>&) (this=this@entry=0x55ef5de9d9a8, __lock=...) at /usr/src/debug/gcc/gcc/libstdc++-v3/src/c++11/condition_variable.cc:41
#8 0x000055ef5dc99b0d in PlayerControl::Wait(std::unique_lock<std::mutex>&) (lock=..., this=0x55ef5de9d938) at ../mpd-0.23.12/src/player/Control.hxx:377
#9 PlayerControl::WaitOutputConsumed(std::unique_lock<std::mutex>&, unsigned int) (threshold=64, lock=..., this=0x55ef5de9d938) at ../mpd-0.23.12/src/player/Control.cxx:54
#10 PlayerControl::WaitOutputConsumed(std::unique_lock<std::mutex>&, unsigned int) (this=this@entry=0x55ef5de9d938, lock=..., threshold=threshold@entry=64) at ../mpd-0.23.12/src/player/Control.cxx:49
#11 0x000055ef5dc9f96c in PlayerControl::LockWaitOutputConsumed(unsigned int) (threshold=64, this=0x55ef5de9d938) at ../mpd-0.23.12/src/player/Control.hxx:437
#12 Player::PlayNextChunk() (this=0x7f15e2dab2d0) at ../mpd-0.23.12/src/player/Thread.cxx:836
#13 Player::Run() (this=0x7f15e2dab2d0) at ../mpd-0.23.12/src/player/Thread.cxx:1078
#14 do_play (buffer=..., dc=..., pc=...) at ../mpd-0.23.12/src/player/Thread.cxx:1158
#15 PlayerControl::RunThread() (this=0x55ef5de9d938) at ../mpd-0.23.12/src/player/Thread.cxx:1184
#16 0x000055ef5dcb4c21 in BoundMethod<void () noexcept>::operator()() const (this=<optimized out>, this=<optimized out>) at ../mpd-0.23.12/src/util/BindMethod.hxx:78
#17 Thread::Run() (this=<optimized out>) at ../mpd-0.23.12/src/thread/Thread.cxx:63
#18 Thread::ThreadProc(void*) (ctx=<optimized out>) at ../mpd-0.23.12/src/thread/Thread.cxx:92
#19 0x00007f15f4bb044b in start_thread (arg=<optimized out>) at pthread_create.c:444
#20 0x00007f15f4c33d64 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:100
Thread 4 (Thread 0x7f15e08346c0 (LWP 11653)):
#0 0x00007f15f4c34266 in epoll_wait (epfd=24, events=events@entry=0x7f15e0833120, maxevents=32, timeout=-1) at ../sysdeps/unix/sysv/linux/epoll_wait.c:30
#1 0x00007f15fa15e779 in impl_pollfd_wait (object=<optimized out>, pfd=<optimized out>, ev=0x7f15e08332f0, n_ev=<optimized out>, timeout=<optimized out>) at ../pipewire/spa/plugins/support/system.c:137
#2 0x00007f15fa150213 in loop_iterate (object=0x7f15cc00b728, timeout=-1) at ../pipewire/spa/plugins/support/loop.c:409
#3 0x00007f15f73f84cf in do_loop (user_data=0x7f15cc009250) at ../pipewire/src/pipewire/data-loop.c:61
#4 0x00007f15f4bb044b in start_thread (arg=<optimized out>) at pthread_create.c:444
#5 0x00007f15f4c33d64 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:100
Thread 3 (Thread 0x7f15e19aa6c0 (LWP 696)):
#0 futex_wait (private=0, expected=2, futex_word=0x7f15cc000b98) at ../sysdeps/nptl/futex-internal.h:146
#1 __GI___lll_lock_wait (futex=futex@entry=0x7f15cc000b98, private=0) at lowlevellock.c:49
#2 0x00007f15f4bb391a in lll_mutex_lock_optimized (mutex=0x7f15cc000b98) at pthread_mutex_lock.c:48
#3 ___pthread_mutex_lock (mutex=mutex@entry=0x7f15cc000b98) at pthread_mutex_lock.c:128
#4 0x00007f15f743b863 in do_lock (this=this@entry=0x7f15cc000b70) at ../pipewire/src/pipewire/thread-loop.c:52
#5 0x00007f15f743bb4d in pw_thread_loop_lock (loop=0x7f15cc000b70) at ../pipewire/src/pipewire/thread-loop.c:362
#6 0x000055ef5dcf344e in PipeWire::ThreadLoopLock::ThreadLoopLock(pw_thread_loop*) (_loop=0x7f15cc000b70, this=<synthetic pointer>) at ../mpd-0.23.12/src/lib/pipewire/ThreadLoop.hxx:45
#7 PipeWireOutput::Play(void const*, unsigned long) (this=0x55ef5decc1d0, chunk=0x7f15e19ab048, size=4024) at ../mpd-0.23.12/src/output/plugins/PipeWireOutputPlugin.cxx:842
#8 0x000055ef5dce5f10 in FilteredAudioOutput::Play(void const*, unsigned long) (size=<optimized out>, data=<optimized out>, this=<optimized out>) at ../mpd-0.23.12/src/output/Filtered.cxx:179
#9 AudioOutputControl::PlayChunk(std::unique_lock<std::mutex>&) (lock=..., this=0x55ef5decc690) at ../mpd-0.23.12/src/output/Thread.cxx:268
#10 AudioOutputControl::InternalPlay(std::unique_lock<std::mutex>&) (lock=..., this=0x55ef5decc690) at ../mpd-0.23.12/src/output/Thread.cxx:323
#11 AudioOutputControl::Task() (this=0x55ef5decc690) at ../mpd-0.23.12/src/output/Thread.cxx:447
#12 BindMethodDetail::WrapperGenerator<void (AudioOutputControl::*)() noexcept, &AudioOutputControl::Task>::Invoke(void*) (_instance=0x55ef5decc690) at ../mpd-0.23.12/src/util/BindMethod.hxx:130
#13 0x000055ef5dcb4c21 in BoundMethod<void () noexcept>::operator()() const (this=<optimized out>, this=<optimized out>) at ../mpd-0.23.12/src/util/BindMethod.hxx:78
#14 Thread::Run() (this=<optimized out>) at ../mpd-0.23.12/src/thread/Thread.cxx:63
#15 Thread::ThreadProc(void*) (ctx=<optimized out>) at ../mpd-0.23.12/src/thread/Thread.cxx:92
#16 0x00007f15f4bb044b in start_thread (arg=<optimized out>) at pthread_create.c:444
#17 0x00007f15f4c33d64 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:100
Thread 2 (Thread 0x7f15e35ad6c0 (LWP 693)):
#0 0x00007f15f4c34266 in epoll_wait (epfd=8, events=0x7f15e35ac440, maxevents=16, timeout=-1) at ../sysdeps/unix/sysv/linux/epoll_wait.c:30
#1 0x000055ef5dcb9fd0 in EpollFD::Wait(epoll_event*, int, int) (timeout=<optimized out>, maxevents=16, events=0x7f15e35ac440, this=0x7ffd09f485a8) at ../mpd-0.23.12/src/io/FileDescriptor.hxx:104
#2 EpollBackend::ReadEvents(int) (timeout_ms=<optimized out>, this=0x7ffd09f485a8) at ../mpd-0.23.12/src/event/EpollBackend.hxx:60
#3 EventLoop::Wait(std::chrono::duration<long, std::ratio<1l, 1000000000l> >) (timeout=Python Exception <class 'gdb.error'>: value has been optimized out
, this=0x7ffd09f47d18) at ../mpd-0.23.12/src/event/Loop.cxx:252
#4 EventLoop::Run() (this=0x7ffd09f47d18) at ../mpd-0.23.12/src/event/Loop.cxx:343
#5 0x000055ef5dcb4c21 in BoundMethod<void () noexcept>::operator()() const (this=<optimized out>, this=<optimized out>) at ../mpd-0.23.12/src/util/BindMethod.hxx:78
#6 Thread::Run() (this=<optimized out>) at ../mpd-0.23.12/src/thread/Thread.cxx:63
#7 Thread::ThreadProc(void*) (ctx=<optimized out>) at ../mpd-0.23.12/src/thread/Thread.cxx:92
#8 0x00007f15f4bb044b in start_thread (arg=<optimized out>) at pthread_create.c:444
#9 0x00007f15f4c33d64 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:100
Thread 1 (Thread 0x7f15e11a96c0 (LWP 697)):
#0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
#1 0x00007f15f4bb22d3 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
#2 0x00007f15f4b62a08 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#3 0x00007f15f4b4b538 in __GI_abort () at abort.c:79
#4 0x00007f15e08f5adf in assert_single_pod (builder=<optimized out>) at ../pipewire/src/modules/module-protocol-native.c:1375
#5 assert_single_pod (builder=0x7f15cc071c70) at ../pipewire/src/modules/module-protocol-native.c:1368
#6 impl_ext_end_proxy (proxy=<optimized out>, builder=0x7f15cc071c70) at ../pipewire/src/modules/module-protocol-native.c:1385
#7 0x00007f15e08fa7f3 in core_event_demarshal_ping (data=<optimized out>, msg=<optimized out>) at ../pipewire/src/modules/module-protocol-native/protocol-native.c:348
#8 0x00007f15e08f2d6b in process_remote (impl=impl@entry=0x7f15cc08a6b0) at ../pipewire/src/modules/module-protocol-native.c:946
#9 0x00007f15e08f3410 in on_remote_data (data=0x7f15cc08a6b0, fd=28, mask=1) at ../pipewire/src/modules/module-protocol-native.c:980
#10 0x00007f15fa15035d in loop_iterate (object=<optimized out>, timeout=<optimized out>) at ../pipewire/spa/plugins/support/loop.c:439
#11 0x00007f15f743b9ba in do_loop (user_data=0x7f15cc000b70) at ../pipewire/src/pipewire/thread-loop.c:286
#12 0x00007f15f4bb044b in start_thread (arg=<optimized out>) at pthread_create.c:444
#13 0x00007f15f4c33d64 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:100
```
I'm also fairly certain that this crash never happened with PipeWire 0.3.69 (and older).
## How Reproducible:
0/5. I couldn't reproduce the crash anymore, even though I remember the exact steps I took:
1. Added two songs from the same album to the MPD queue using [Cantata](https://github.com/CDrummond/cantata/)
2. Tried to play the first song using Cantata (double-clicked on it)
3. Cantata disconnects because MPD crashed
### Steps to Reproduce:
N/A
### Actual Results:
libpipewire causes an assertion crashing MPD
### Expected Results:
No assertion/crash
# Additional Info (as attachments):
- `pw-dump > pw-dump.log`: [pw-dump.log](/uploads/9e3c41269a798922d5841138ec850ff6/pw-dump.log)https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3231Prevent changing channel number (zero-indexing vs one-indexing)2023-12-10T12:49:12ZMark KnoopPrevent changing channel number (zero-indexing vs one-indexing)- PipeWire version (`pipewire --version`): 0.3.71
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`): Fedora Linux 38 (Workstation Edition)
- Desktop Environment: Sway
- Kernel version (`uname -r`): 6.2.15-300...- PipeWire version (`pipewire --version`): 0.3.71
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`): Fedora Linux 38 (Workstation Edition)
- Desktop Environment: Sway
- Kernel version (`uname -r`): 6.2.15-300.fc38.x86_64
## Description of Problem:
PipeWire re-numbers client ports to start at 1 even when the client numbers its own ports starting at 0. This is confusing, and doubly so when using with devices in "Pro Audio" profile, which numbers ports starting at AUX0.
It would be great if there were a way to turn this feature off or override it in some way.
## How Reproducible: 100%
### Steps to Reproduce:
1. Start a client which uses zero-indexed channels (e.g. SuperCollider)
2. Observe channel ports named out_1, out_2, etc...
### Actual Results
"info": {
"direction": "input",
"change-mask": [ "props", "params" ],
"props": {
"format.dsp": "32 bit float mono audio",
"node.id": 108,
"object.id": 110,
"object.path": "SuperCollider:input_0",
"object.serial": 122,
"port.alias": "SuperCollider:in_1",
"port.direction": "in",
"port.id": 0,
"port.name": "in_1"
},
### Expected Results:
"info": {
"direction": "input",
"change-mask": [ "props", "params" ],
"props": {
"format.dsp": "32 bit float mono audio",
"node.id": 108,
"object.id": 110,
"object.path": "SuperCollider:input_0",
"object.serial": 122,
"port.alias": "SuperCollider:in_0",
"port.direction": "in",
"port.id": 0,
"port.name": "in_0"
},
# Additional Info (as attachments):
- `pw-dump > pw-dump.log`: [pw-dump.log](/uploads/1ca50b4b387f7871bbd58d19533ddab6/pw-dump.log)https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3230A way to combine several connected headsets2023-07-06T12:07:38ZpromeneurA way to combine several connected headsetsWith Bluetooth 5.2 there is a new feature.
We can connect several headsets according several persons can hear the song coming from VLC for example.
I get two headsets connected with bluetooth kde management, but pipewire only offers to ...With Bluetooth 5.2 there is a new feature.
We can connect several headsets according several persons can hear the song coming from VLC for example.
I get two headsets connected with bluetooth kde management, but pipewire only offers to select one headset at the same time.https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3228[enhancement] displaying bluetooth codecs type for smartphone2023-05-21T18:01:14Zpromeneur[enhancement] displaying bluetooth codecs type for smartphoneHello
It would be a good thing to know what codec is in use when connecting a smartphone.Hello
It would be a good thing to know what codec is in use when connecting a smartphone.https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3227bluetooth, no way to choose the codec2023-05-19T11:40:03Zpromeneurbluetooth, no way to choose the codecSamsung S7, android 8.0, bluetooth 4.2
OpenSUSE tumbleweed, pipewire 0.3.70, bluetooth 5.2
I play a video with VLC at my phone.
I hear well the sound at my PC.
There is nowhere a hamburger menu to select the codec as for example sbc, ...Samsung S7, android 8.0, bluetooth 4.2
OpenSUSE tumbleweed, pipewire 0.3.70, bluetooth 5.2
I play a video with VLC at my phone.
I hear well the sound at my PC.
There is nowhere a hamburger menu to select the codec as for example sbc, ldac, aptx.
In the past, there was a menu to select the codec.
See the capture
![no_codec_choice_1](/uploads/f33143edbbf504bf266f14b2cbb25847/no_codec_choice_1.png)https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3226Setting PIPEWIRE_LATENCY lower than 1024 no longer works with Qemu Jack drive...2023-05-31T17:20:42Zaqxa1Setting PIPEWIRE_LATENCY lower than 1024 no longer works with Qemu Jack driver [regression]<!-- 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.71 (including master)
- Distribution and distribution version (`PRETTY_NAME` f...<!-- 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.71 (including master)
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`): Gentoo Linux
- Desktop Environment: Sway
- Kernel version (`uname -r`): 6.3.2-extra2+
## Description of Problem:
Setting a client specific quantum lower than 1024 with Qemu's Jack driver results in no sound and setting >=1024 results in crackling sound (tested up to 4096). With 0.3.70 or earlier I could use a 512 quantum with glitch-free audio.
## How Reproducible:
100% of the time when using Qemu 7.2.0 + libvirt 9.3.0 + Qemu jack driver with Windows and Linux guests.
### Steps to Reproduce:
1. Launch a VM configured to use Qemu's jack driver (https://looking-glass.io/wiki/Using_JACK_and_PipeWire)
2. Test audio in guest (e.g. run speaker test etc)
### Actual Results:
No audio with `PIPEWIRE_LATENCY=512/48000` or lower. Crackling audio with `PIPEWIRE_LATENCY=1024` or higher and when not configuring PIPEWIRE_LATENCY.
### Expected Results:
Mostly glitch free audio with `PIPEWIRE_LATENCY=512` or higher.
### Workaround:
Set global quantum with `pw-metadata -n settings 0 clock.force-quantum 512`. Must be set before VM is launched. Or revert to pipewire-0.3.70 or earlier.
# Additional Info (as attachments):
- `pw-dump > pw-dump.log`: [pw_dump.log](/uploads/2bcbb794b5632519fc417d4a0deb3743/pw_dump.log)https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3225Turn off hw-volume feature on Audio Pro A262023-05-20T09:26:31ZGhost UserTurn off hw-volume feature on Audio Pro A26- 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`): `Debian GNU/Linux 12 (bookworm)`
...- 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`): `Debian GNU/Linux 12 (bookworm)`
- Desktop Environment (`gnome-shell --version`): `GNOME Shell 43.4`
- Kernel version (`uname -r`): `6.1.0-9-amd64`
- BlueZ version (`bluetoothctl --version`): `bluetoothctl: 5.66`
- `lsusb`: (appears irrelevant; two USB hubs and one multitouch interface)
- Bluetooth devices:
```
$ bluetoothctl devices
Device 7C:96:D2:XX:XX:XX Audio Pro_A26
```
## Description of Problem:
After pairing and device connection, volume can be adjusted and the hardware emits a 'blip' sound to demonstrate the updated volume level with each adjustment.
However, after the device is disconnected and reconnected (by disabling and re-enabling the 'bluetooth' option in GNOME, in this case), the volume output by the device is reset to 100% (potentially resulting in high-volume output if audio playback was in progress).
## How Reproducible:
Occurs reliably after every disconnect and reconnect.
### Steps to Reproduce:
1. Pair with the Audio Pro A26 using the GNOME control panel bluetooth settings area.
2. Connect to the device (this should occur automatically after pairing, and the device should be confirmed as an audio output).
3. Adjust the volume to below 100%.
4. Disconnect from the device (either by disabling bluetooth entirely, or by disconnecting from the individual device in the control panel -- either approach reproduces the problem).
5. Reconnect to the device.
### Actual Results:
Audio output volume for the device is reset to 100% (both as displayed within the GNOME desktop environment, and as the output level of the audio produced by the speakers).
### Expected Results:
The volume level selected during step three of the steps-to-reproduce should be restored, so that the audio output volume remains at the level chosen by the user previously.
# Additional Info (as attachments):
- `pw-dump > pw-dump.log`:[pw-dump.log](/uploads/1b3762d0dbbcb9c498780e318d90a024/pw-dump.log)
- Bluetooth debug log: [pipewire-bluez.log](/uploads/5a672ed41d4a103e5639aed192829d25/pipewire-bluez.log)
### Patch
```
From 3d881074de2c034e424b9a5d0d9bddbdd29ea912 Mon Sep 17 00:00:00 2001
From: James Addison <jay@jp-hosting.net>
Date: Wed, 17 May 2023 22:53:15 +0100
Subject: [PATCH] Audio Pro A26: disable hw-volume feature, because volume was
being reset to 100% on each reconnect
---
spa/plugins/bluez5/bluez-hardware.conf | 1 +
1 file changed, 1 insertion(+)
diff --git a/spa/plugins/bluez5/bluez-hardware.conf b/spa/plugins/bluez5/bluez-hardware.conf
index 9004675ea..83b3212f0 100644
--- a/spa/plugins/bluez5/bluez-hardware.conf
+++ b/spa/plugins/bluez5/bluez-hardware.conf
@@ -30,6 +30,7 @@ bluez5.features.device = [
{ name = "Air 1 Plus", no-features = [ hw-volume-mic ] },
{ name = "AirPods", no-features = [ msbc-alt1, msbc-alt1-rtl ] },
{ name = "AirPods Pro", no-features = [ msbc-alt1, msbc-alt1-rtl ] },
+ { name = "Audio Pro_A26", address = "~^7c:96:d2:", no-features = [ hw-volume ]}, # doesn't remember volume
{ name = "AXLOIE Goin", no-features = [ msbc-alt1, msbc-alt1-rtl ] },
{ name = "BAA 100", no-features = [ hw-volume ] }, # Buxton BAA 100, doesn't remember volume, #pipewire-1449
{ name = "D50s", address = "~^00:13:ef:", no-features = [ hw-volume ] }, # volume has no effect, #pipewire-1562
--
2.39.2
```
Edit: add bluetooth debug log
Edit 2: add missing space (there should be two spaces before the comment marker)https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3224dbusless libpipewire-module-rt fails in 0.3.712023-05-17T15:12:34ZJason A. Donenfelddbusless libpipewire-module-rt fails in 0.3.71I just updated from 0.3.68 to 0.3.71, to this unpleasant surprise on my system-wide daemon:
```
May 17 15:41:27 martino pipewire[21328]: mod.rt: regular realtime scheduling not available (Portal/RTKit fallback disabled)
May 17 15:41:27 ...I just updated from 0.3.68 to 0.3.71, to this unpleasant surprise on my system-wide daemon:
```
May 17 15:41:27 martino pipewire[21328]: mod.rt: regular realtime scheduling not available (Portal/RTKit fallback disabled)
May 17 15:41:27 martino pipewire[21328]: pw.conf: 0x55f11af4c810: could not load mandatory module "libpipewire-module-rt": Operation not supported
May 17 15:41:27 martino wireplumber[21329]: 0x55ad80728080: can't load dbus library: support/libspa-dbus
May 17 15:41:27 martino pipewire[21328]: default: failed to create context: Operation not supported
May 17 15:41:27 martino wireplumber[21329]: regular realtime scheduling not available (Portal/RTKit fallback disabled)
May 17 15:41:27 martino systemd[1]: pipewire.service: Main process exited, code=exited, status=161/n/a
May 17 15:41:27 martino systemd[1]: pipewire.service: Failed with result 'exit-code'.
```
My pipewire.conf is:
```
context.properties = {
support.dbus = false
core.daemon = true
core.name = pipewire-0
}
context.spa-libs = {
api.alsa.* = alsa/libspa-alsa
}
context.modules = [
{ name = libpipewire-module-rt
args = {
nice.level = -11
}
}
{ name = libpipewire-module-protocol-native }
{ name = libpipewire-module-profiler }
{ name = libpipewire-module-metadata }
{ name = libpipewire-module-client-node }
{ name = libpipewire-module-client-device }
{ name = libpipewire-module-access }
{ name = libpipewire-module-adapter }
{ name = libpipewire-module-link-factory }
{ name = libpipewire-module-protocol-pulse
args = {
server.address = [
{ address = "tcp:0.0.0.0:4713"
client.access = "unrestricted"
}
]
}
}
]
```
I had to remove the libpipewire-module-rt section for it to start.
The goal is a minimal system-wide pulseaudio tunnel server.https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/32237.1 Virtual Surround Sink No Output.2023-05-17T19:43:10ZShaunTheQuietGamer7.1 Virtual Surround Sink No Output.Currently trying to get the `sink-virtual-surround-7.1-hesuvi.conf` example config working. Got it to the point where the sink exists, but when i send audio through it, there's no output and the following pops up in `systemctl --user sta...Currently trying to get the `sink-virtual-surround-7.1-hesuvi.conf` example config working. Got it to the point where the sink exists, but when i send audio through it, there's no output and the following pops up in `systemctl --user status pipewire`.
```
May 16 12:20:49 natrix pipewire[8736]: mod.client-node: 0x558d3c472440: error seq:1527 -2 (can't start graph: No such file or directory)
May 16 12:20:49 natrix pipewire[8736]: pw.core: 0x558d3c2f19a0: error -5 for resource 2: start failed
May 16 12:20:49 natrix pipewire[8736]: mod.client-node: 0x558d3c472440: error seq:1527 -5 (start failed)
May 16 12:20:53 natrix pipewire[8736]: mod.filter-chain: cannot create plugin instance: No such file or directory
May 16 12:20:53 natrix pipewire[8736]: pw.node: (effect_input.virtual-surround-7.1-hesuvi-0) start node error -5: Input/output error
May 16 12:20:53 natrix pipewire[8736]: mod.client-node: node 0x558d3c3ae720: start failed
May 16 12:20:53 natrix pipewire[8736]: pw.core: 0x558d3c2f19a0: error -2 for resource 2: can't start graph: No such file or directory
May 16 12:20:53 natrix pipewire[8736]: mod.client-node: 0x558d3c472440: error seq:1538 -2 (can't start graph: No such file or directory)
May 16 12:20:53 natrix pipewire[8736]: pw.core: 0x558d3c2f19a0: error -5 for resource 2: start failed
May 16 12:20:53 natrix pipewire[8736]: mod.client-node: 0x558d3c472440: error seq:1538 -5 (start failed)
```
`PIPEWIRE_DEBUG=3 pipewire -c filter-chain.conf 2> log.txt` is [attached](/uploads/b543f99e19b087d8efb03360a10a5fc0/log.txt).https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3221pipewire-pulse often hangs as another device wakes up from sleep when using n...2023-11-30T09:42:57ZJulespipewire-pulse often hangs as another device wakes up from sleep when using native-protocol-tcp and zeroconf-{publish,discover} on both devices- PipeWire version (`pipewire --version`): 3.70.0
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`): Arch Linux
- Desktop Environment: i3wm
- Kernel version (`uname -r`): `6.3.1-zen2-1-zen`
## Description of...- PipeWire version (`pipewire --version`): 3.70.0
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`): Arch Linux
- Desktop Environment: i3wm
- Kernel version (`uname -r`): `6.3.1-zen2-1-zen`
## Description of Problem:
When using the following configuration on two devices on the same LAN:
```
context.exec = [
{ path = "pactl" args = "load-module module-native-protocol-tcp" }
{ path = "pactl" args = "load-module module-zeroconf-publish" }
{ path = "pactl" args = "load-module module-zeroconf-discover" }
]
```
pipewire-pulse might hang as another device wakes up after being suspended. This causes all the programs that use PulseAudio (like Firefox, pavucontrol-qt, pactl...) to hang too as a consequence.
## How Reproducible:
### Steps to Reproduce:
1. Apply following config to two devices on the same LAN:
```
context.exec = [
{ path = "pactl" args = "load-module module-native-protocol-tcp" }
{ path = "pactl" args = "load-module module-zeroconf-publish" }
{ path = "pactl" args = "load-module module-zeroconf-discover" }
]
```
2. Suspend one of the devices, and turn it back on
### Actual Results:
After a few seconds pipewire-pulse might hang on the device that wasn't suspended, and programs that use PulseAudio will hang too until they supposedly timeout. After a bit of time (1~5 minutes) things might get back in order.
### Expected Results:
No hang.https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3220Output of a Virtual Sink won't make any audio plugin go out of suspend.2023-05-24T09:24:00ZAndrej Halvelandandrej.halv@gmail.comOutput of a Virtual Sink won't make any audio plugin go out of suspend.<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
- PipeWire version: master 26e9a4ce1333b371a548f09e098e6c69a757e8ef
- Distribution and distribution version (`PRETTY_NAME` from...<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
- PipeWire version: master 26e9a4ce1333b371a548f09e098e6c69a757e8ef
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`): Arch Linux
- Desktop Environment: KDE Plasma 5.27.5 (Wayland)
- Kernel version (`uname -r`): 6.3.1-arch2-1
## Description of Problem:
After commit https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/9664787cffb3eec096b257f52f7420afc6e381f6 the output of a Virtual Sink won't make any plugin connected to the output of the Virtual Sink go out of suspend.
I also made some observations since https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3100#note_1864217
1. Bypassing the Virtual Sink by sending the audio signal from Spotify straight to the audio plugin (that's right after the Virtual Sink) makes everything work again, and also makes the sound card suspend if nothing is playing.
2. Bypassing the plugins by connecting the output of the Virtual Sink straight to the Sound Card makes audio work again, but the sound card will never suspend.
## How Reproducible:
Always
### Steps to Reproduce:
1. Create a Virtual Sink using `pactl load-module module-null-sink media.class=Audio/Sink sink_name="Carla" channel_map=stereo`
2. Start Carla with `PIPEWIRE_PROPS='{ node.passive=true node.always-process=false }' carla-jack-multi`
3. Add some kind of LSP Plugin (havent tried anything else) and connect it between a the Virtual Sink and your sound card
4. Play any audio to the Virtual Sink
### Actual Results:
No audio output. Plugins stay suspended.
### Expected Results:
Audio should start playing, and if nothing plays the sound card should enter suspend.
# Additional Info (as attachments):
- `pw-dump > pw-dump.log`: [pw-dump.log](/uploads/73e94b99b953af1b85f9959b06d7b26b/pw-dump.log)https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3219Streaming over network is choppy while the screen is recorded on Gnome2023-09-22T13:46:32ZStrangiatoStreaming over network is choppy while the screen is recorded on GnomeHi
I use Pipewire to redirect the audio output of my laptop to the speakers connected to my desktop computer over network.
If I record the laptop screen with the native recorder of Gnome (we can trigger it by pressing the printscreen k...Hi
I use Pipewire to redirect the audio output of my laptop to the speakers connected to my desktop computer over network.
If I record the laptop screen with the native recorder of Gnome (we can trigger it by pressing the printscreen key) while my laptop streams audio, the audio becomes extremely choppy. The audio becomes choppy regardless the laptop streams it with ROC or native-protocol-tcp modules. journal and dmesg logs do not print any suspicious message
while the audio is choppy. I'm not sure if this problem is a pipewire issue because it does not occur if I record the screen with OBS Studio 29.0.2-5. I'm reporting because I prefer the simplier screen recorder of Gnome.
laptop: Arch Linux, Gnome 44.1, pipewire 1:0.3.70-2
desktop: Arch Linux, KDE Plasma 5.27.5, pipewire 1:0.3.70-2https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3218Connect output sink to different devices automatically2023-06-26T09:57:12ZJuan Jose CasafrancaConnect output sink to different devices automaticallyI have a system with several audio devices. I have configured an output sink as my default audio device, and I want to route the monitor of that output sink to my real audio devices. Right now I am doing that by hand with qpwgraph each t...I have a system with several audio devices. I have configured an output sink as my default audio device, and I want to route the monitor of that output sink to my real audio devices. Right now I am doing that by hand with qpwgraph each time I turn on my system.
![image](/uploads/7d8a166a466860028522fa6328fcd475/image.png)
Is there a way I can automatically connect the output sink to the real devices automatically? Another option would be to automatically connect all the audio sources directly to all the audio devices, but I haven't found a way to do that.https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3215pw-top reported some errors2023-05-24T09:23:59ZCsaba R.pw-top reported some errorsIf missing client for echo-cancel - tipically Seren VoIP client -, pw-top reported errors. ERR is constantly growing. I built from latest master (a25c0210).
![Screenshot_2023-05-12_23-15-57](/uploads/c88ad62140be2ff99586d82c74e1eeaa/Scr...If missing client for echo-cancel - tipically Seren VoIP client -, pw-top reported errors. ERR is constantly growing. I built from latest master (a25c0210).
![Screenshot_2023-05-12_23-15-57](/uploads/c88ad62140be2ff99586d82c74e1eeaa/Screenshot_2023-05-12_23-15-57.png)https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3213Various JACK options do not work2023-05-12T21:16:40ZPlesa RaspoontVarious JACK options do not work<!-- 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.66 - 0.3.70
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os...<!-- 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.66 - 0.3.70
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`): Arch Linux
- Desktop Environment: XFCE
- Kernel version (`uname -r`): 6.3.1-zen2-1-zen
## Description of Problem:
Version 0.3.67 and since, when using QPWGraph the playback and monitor/capture ports are combined in the same device for virtual devices, instead of being in separate devices.
The wiki suggests that the option `jack.merge-monitor` in `jack.conf` should do something, but it doesn't, in fact none of the options do anything at all (`jack.show-monitor = false` doesn't hide the monitors for example).
The 0.3.67 has a commit that supposedly changes the default of this variable from false to true, however when recompiling version 0.3.66 with the option set to `true` by default, the devices are actually split, which suggests the option never worked in the first place and some other code was responsible for this.
There is no way to merge the virtual devices in versions 0.3.66 and prior, and no way to split them 0.3.67 forward.
Additionally, non-virtual devices are always split no matter what, regardless of version.
This behaviour occurs when running the program with either `qpwgraph` or `pw-jack qpwgraph`
## How Reproducible:
Very
### Steps to Reproduce:
1. Install QPWGraph
2. in `~/.config/pipewire/pipewire.conf.d/pipewire.conf`:
```
context.objects = [
{ factory = adapter
args = {
factory.name = "support.null-audio-sink"
node.name = "PW-Test"
node.description = "Test"
media.class = "Audio/Sink"
object.linger = true
audio.channels = 2
audio.position = "FL,FR"
#jack.show-monitor = "false"
#for the heck of it I even tried it here, it doesn't work anywhere.
}
}
]
```
3. Install a pipewire version from 0.3.67 to 0.3.70
4. in `~/.config/pipewire/jack.conf.d/jack.conf`:
```
jack.properties = {
#jack.show-monitor = false
jack.merge-monitor = false
}
```
5. Restart everything and check QPWGraph to see how nothing matches the configs
6. Install pipewire version 0.3.66 or older
7. in `~/.config/pipewire/jack.conf.d/jack.conf`:
```
jack.properties = {
#jack.show-monitor = false
jack.merge-monitor = true
}
```
8. Restart everything and check QPWgraph to see how nothing matches the configs again
### Actual Results:
Real devices are always split regardless of version
Virtual devices are split 0.3.66 and prior, merged 0.3.67 and after
### Expected Results:
That options in `jack.conf` did something.https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3211API docs confused about logging function return type2024-01-29T08:50:54ZDaniel BerrangeAPI docs confused about logging function return typeTake a look at the API docs for the `pw_log_logtv`, `pw_log_log`, `pw_log_logv`, and `_pw_log_topic_new` methods, and you'll find they are very void, eg
```
void void void void void _pw_log_topic_new(struct spa_log_topic *topic)
```
O...Take a look at the API docs for the `pw_log_logtv`, `pw_log_log`, `pw_log_logv`, and `_pw_log_topic_new` methods, and you'll find they are very void, eg
```
void void void void void _pw_log_topic_new(struct spa_log_topic *topic)
```
One `void` ought to be enough !
The actual C header file looks fine, so something presumably got confused in the API docs generation process.https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3208Microphone not working in bluetooth headphones and headphones diconnecting an...2023-09-25T15:53:58ZKrassimir GrozdanovMicrophone not working in bluetooth headphones and headphones diconnecting and reconnecting after switching profiles.<!-- 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`): 0.3...<!-- 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`): 0.3.70
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`): Fedora Linux 38 (Workstation Edition)
- Desktop Environment: Cinnamon
- Kernel version (`uname -r`):6.2.14-300.fc38.x86_64
- BlueZ version (`bluetoothctl --version`): 5.66
- `lsusb`:
```
Bus 002 Device 002: ID 8087:8001 Intel Corp. Integrated Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 04f2:b444 Chicony Electronics Co., Ltd Lenovo Integrated Webcam
Bus 001 Device 007: ID 8087:07dc Intel Corp. Bluetooth wireless interface
Bus 001 Device 003: ID 138a:0011 Validity Sensors, Inc. VFS5011 Fingerprint Reader
Bus 001 Device 002: ID 046d:c542 Logitech, Inc. M185 compact wireless mouse
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
```
- Bluetooth devices:
```
Device 80:C3:BA:30:E2:1C HD 458BT
Device 00:1B:66:16:60:F0 CX Plus True Wireless
Device 74:45:CE:68:D2:0E WI-XB400
```
## Description of Problem:
The microphone in the bluetooth headphens is not working (tested with Senheiser CX Plus True Wireless, HD 458BT and Sony WI-XB400). When I switch from High Fidelity Playback to HSP/HFP Headset unit, the headphones microphone does not work at all. Laptop microphone works fine.
In addition sometimes after the switch to HSP/HFP the Bluetooth disconnects and after some time reconnects.
The same headphones do not have problems on another laptop with Ubuntu 22.04 and pipewire 0.3.48.
## How Reproducible:
No sound in microphone - every time
Disconnect and reconnect of Bluetooth - ~ 80 % of cases.
### Steps to Reproduce:
1. Connect headphones
2. Open sound control and switch profile to HSP/HFP (or use applications like Teams or Skype for a call)
3.
### Actual Results:
No microphone and Bluetooth disconnect and reconnect
### Expected Results:
Microphone working and no disconnects.
# Additional Info (as attachments):
- `pw-dump > pw-dump.log`: [pw-dump.log](/uploads/c8eb496c5eb1c33939af1414fe2d5f62/pw-dump.log)
- Bluetooth debug log, see [here](https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Troubleshooting#bluetooth): [pipewire-bluez.log](/uploads/146f7ad5ac7cf43a5d5468401c187ed1/pipewire-bluez.log)https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3204Reproducable crash/freeze after at least 20 minutes of playing Red Dead Redem...2023-05-18T17:12:16ZRoy ColeReproducable crash/freeze after at least 20 minutes of playing Red Dead Redemption 2<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
- PipeWire version: 0.3.70
- Distribution and distribution version: EndeavourOS
- Desktop Environment: KDE Plasma 5.27.4
- Kern...<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
- PipeWire version: 0.3.70
- Distribution and distribution version: EndeavourOS
- Desktop Environment: KDE Plasma 5.27.4
- Kernel version: 6.3.1-arch1-1
## Description of Problem:
Reproducible crash/freeze after at least 20 minutes of playing Red Dead Redemption 2 (see journalctl results). When the issue occurs, the sound starts to get distorted and performance slows down over the course of a few seconds before the computer becomes fully unresponsive and needs a hard reboot. This problem started occurring after [Arch updated to 0.3.70](https://github.com/archlinux/svntogit-packages/commits/packages/pipewire/trunk) so it may be related to that version specifically.
I have not played any other games within the past few weeks so it may impact others as well. Red Dead Redemption 2 (RDR2) is played through Steam using the current Proton-experimental version (which I'm unsure how to track down the specific commit). I am going to try using a fixed Proton version next to see if that is potentially the cause.
I thought the problem may have been with KDE Plasma and the problem is reproducable even if the plasmashell process is killed, if that is of any use (as a note, the attached log is from when plasmashell was running). This problem is very repeatable so I can run with debugging or other tools to gather more information if needed.
```
May 07 23:52:09 rcDesktop pipewire[2074]: spa.alsa: front:2: (0 missed) snd_pcm_avail after recover: Broken pipe
May 07 23:52:13 rcDesktop pipewire[2074]: spa.alsa: front:2: (0 missed) snd_pcm_avail after recover: Broken pipe
May 07 23:52:14 rcDesktop pipewire[2074]: spa.alsa: front:2: snd_pcm_mmap_commit error: Broken pipe
May 07 23:52:15 rcDesktop pipewire[2074]: spa.alsa: front:2: snd_pcm_mmap_commit error: Broken pipe
```
## How Reproducible:
This crash will occur every time RDR2 is run, sometimes within 20-30 minutes but the most recent one was around 50 minutes.
### Steps to Reproduce:
1. Using Steam, launch RDR2
2. Play game as normal
### Actual Results:
Computer freezes until hard power reset.
### Expected Results:
No crash/freeze
# Additional Info (as attachments):
I attached the journalctl for when the game was launched until crash, but here is the snippet for Pipewire:
`pw-dump > pw-dump.log`: [pw-dump.log](/uploads/d7276dd38e75269c9afb45975cf0cd85/pw-dump.log)
`journalctl (From game launch)`: [pipewire_journalctl.txt](/uploads/3661011abd07227c6219c724ca4b4210/pipewire_journalctl.txt)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/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"
```