Hello,

I’m having some issues getting a unified audio setup using PipeWire only, i.e., 
PipeWire alongwith ALSA to route all audio using PulseAudio and JACK emulation. 
I had such a setup previously on the Arch GNU/Linux distribution, but I have 
been struggling since I switched to GNU Guix.

I want first of all the applications to be handled through PipeWire’s 
PulseAudio emulation, such as audio to browser, telegram-desktop etc. I used to 
have a PipeWire configuration with sources and sinks for each of the major 
applications, which was then routed using JACK emulation of PipeWire through 
the help of a patchbay/JACK client such as Carla or qpwgraph/patchage.

I have gone with the barebones configuration of PipeWire that I can find for 
Guix, to that end, my system configuration includes the following services:

#+begin_src guile
(services
       (append (list

       (service pam-limits-service-type
                (list
                      (pam-limits-entry "@realtime" 'both 'rtprio 99)
                      (pam-limits-entry "@realtime" 'both 'memlock 
'unlimited)))))
                      (modify-services %desktop-services
                                       (alsa-service-type config =>
                                                          (alsa-configuration
                                                          (pulseaudio? #f)))))
#+end_src

So I’ve got the realtime configuration declared here, and I also have:

#+begin_src guile
(groups (cons*
          (user-group
            (name "realtime")
            (system? #t))
          %base-groups))
#+end_src

and then realtime is added to `supplementary-groups` in `user-account`.

And, similarly I’ve added the following in my home configuration’s services:

#+begin_src guile
(services (append (list
                  (service home-pipewire-service-type
                      (home-pipewire-configuration
                       (wireplumber wireplumber)
                       (enable-pulseaudio? #t))))))
#+end_src

After this configuration, I can run JACK through jackd, even though I don’t 
have jack installed in system or home configuration. Does it get installed 
through some other package’s dependency?

Furthermore, when I try to use a JACK client through `pw-jack' it doesn’t work. 
For example, running `pw-jack qjackctl' and starting JACK through it gives the 
following error in qjackctl’s messages:

13:13:37.600 JACK is starting...
13:13:37.600 /run/current-system/profile/bin/jackd -dalsa -dhw:0
13:13:37.606 JACK was started with PID=4007.
/run/current-system/profile/bin/jackd: symbol lookup error: 
/run/current-system/profile/bin/jackd: undefined symbol: clock_source
13:13:37.608 JACK was stopped
13:13:39.662 Could not connect to JACK server as client. - Overall operation 
failed. - Unable to initialize client. Please check the messages window for 
more info.

When I try `pw-jack carla' as well, the same thing happens, it says 
libjack.so.0 is loaded successfully but when I start Carla’s engine, it says: 
“Failed to create new JACK client.”

Now, I don’t know what’s going wrong where, but I want to JACK with PipeWire, 
unless one can recommend me good reasons to use JACK externally alongside 
PipeWire. Also, even PipeWire’s pulseaudio seems finicky, sometimes works 
sometimes doesn’t. Sometimes applications like browser (librewolf, 
ungoogled-chromium) can’t access microphone or speaker (while permissions are 
fine), at other times, messing around with pavucontrol makes it work. I am not 
sure what exactly is making it work and what is failing, any suggestions for 
how to conduct some debugging would be of help. I need a consistently 
functioning system of pipewire emulating pulseaudio for applications and jack 
for routing, that doesn’t fail.

Also, how can I configure my ALSA device cards, and have it reproduce gain? 
Ipreviously used to have an ~/.config/asound.state that is stored and restored 
using alsactl. Doing that doesn’t seem to preserve anthing.

I’ve attached my system.scm and home configuration for reference if needed. 
Also CC’ing Ricardo since he’s the “sound guy” I know for GUIX :)

Regards,
-- 
Divya Ranjan,
Philosophy, Mathematics, Libre Software.


  • Using Pipewire fo... Development of GNU Guix and the GNU System distribution.

Reply via email to