View previous topic :: View next topic |
Author |
Message |
Lynix48 n00b
Joined: 14 Jun 2020 Posts: 38
|
Posted: Sun Oct 22, 2023 12:46 am Post subject: Running pipewire as a jack client |
|
|
Hi,
i want to use pipewire as a jack client.
Pipewire offers a JACK bridge which should make pipewire show up as a node in jack.
Unfortunately, there isn't much documentation on how to do that. The only line about this in the Pipewire documentation is
Quote: | Alternatively, it should be possible to have PipeWire connect to a real jackd and act as a gateway for non-JACK applications, but unless there's already a working JACK setup, this is not recommended for the overall worse user experience with JACK. |
The Pipewire package has a useflag called jack-client which apparently installs a plugin for running PipeWire as a JACK client.
Sadly, there is no more information on how to use that plugin.
After a while i found instructions inside the Pipewire documentation:
https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Config-JACK#jack-bridge
That way, I found out that I needed to start jack in a specific way so that it uses jackdbus which is used to have pipewire connect to the jack server.
After that, I tried to load the jackdbus-detect module into pipewire using `pactl load-module module-jackdbus-detect`.
This resulted in pipewire showing up as a jack node for a very quick moment before it dissappeared again. After that i noticed that the pipewire process was gone.
Loading in the module without having a jack server running or having a jack server running that wasn't using jackdbus worked, but as soon as I started jack with jackdbus, pipewire disappeared again.
The jack logs give me the following errors:
Quote: |
Sun Oct 22 02:13:19 2023: New client 'PipeWire' with PID 25003
Sun Oct 22 02:13:19 2023: ERROR: JackEngine::XRun: client = PipeWire was not finished, state = Triggered
Sun Oct 22 02:13:19 2023: ERROR: JackAudioDriver::ProcessGraphAsyncMaster: Process error
Sun Oct 22 02:13:19 2023: ERROR: JackEngine::XRun: client = PipeWire was not finished, state = Triggered
Sun Oct 22 02:13:19 2023: ERROR: JackAudioDriver::ProcessGraphAsyncMaster: Process error
Sun Oct 22 02:13:19 2023: ERROR: JackEngine::XRun: client = PipeWire was not finished, state = Triggered
Sun Oct 22 02:13:19 2023: ERROR: JackAudioDriver::ProcessGraphAsyncMaster: Process error
Sun Oct 22 02:13:19 2023: ERROR: JackEngine::XRun: client = PipeWire was not finished, state = Triggered
Sun Oct 22 02:13:19 2023: ERROR: JackAudioDriver::ProcessGraphAsyncMaster: Process error
Sun Oct 22 02:13:19 2023: Client 'PipeWire' with PID 25003 is out
|
The Pipewire docs state that since 0.3.81 manually loading in module-jackdbus-detect is not required anymore since its loaded by default.
I upgraded to that version, but it has the exact same problem.
To my surprise the pipewire logs are pretty much empty. Also, dmesg showed no sign of a core dump event.
I noticed that pipewire doesn't crash, it receives a sigkill signal.
I tried to find out what was sending the signal by running pipewire with `strace -e 'trace=!all' pipewire` but it failed me and didn't give me any information.
After some more research, I stumbled accross the following blog post:
https://lantian.pub/en/article/random-notes/pipewire-sigkill-fix.lantian/
It states that the linux kernel might kill real-time processes if they take to much time.
Do you guys think that I could be having the same error as described in the article? (I doubt that because of the jack errors)
Any other ideas on what I can do?
Do you guys think this could be something I should report to the pipewire folks?
I appreciate any help. |
|
Back to top |
|
|
szatox Advocate
Joined: 27 Aug 2013 Posts: 3424
|
Posted: Sun Oct 22, 2023 1:13 am Post subject: |
|
|
First things first, I recently looked into pipewire, and folks behind it recommend using it _instead_ of jack. PW does implement JACK protocol too, it seems like the bridge mode is mostly intended as a stop-gap for people who already have jack running, to make the transition easier. It has some limitations, and is said to be generally less convenient than using pipewire as jack server.
Since it doesn't seem like you're getting the "easy" part out of this easy transition anyway, why not skip troubleshooting it and just go all the way instead? |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|