Pipewire and JACK on Arch Linux

This is a quick post to talk about my recent experience configuring Pipewire and JACK on Arch Linux. Now, I’m not an Arch adherent and maybe you aren’t either. That’s fine because I’ll talk about the minimal install and the packages that are required to get Pipewire and JACK working. This will not cover moving from an existing Pro Audio system to Pipewire because, well, I don’t recommend it at all. Either wait until there’s good OS support from your distro or, well, take your chances.

TLDR:

Installing pipewire installs libjack.so for pipewire. You do *not* need nor do you want an independent jack2 package (they conflict anyway, so Arch will try to get you to uninstall one when installing the other). You *do* need to have your user in the realtime group by installing the realtime-privileges package and then adding your user to that group. Working with pipewire-jack is transparent. You do not need to launch jack independently. Just fire up SuperCollider (or the jack audio client of your choice) and boot the server. Pipewire will present itself as JACK to SuperCollider using libjack automatically. Brilliantly, audio works from your browser simultaneously without weird tricks like bridging PulseAudio to JACK and ALSA via a loopback BLAH BLAH BLAH.

Why Arch? Why Pipewire?

Well, it’s more like I wanted to try out Pipewire’s JACK support and Arch ships with pipewire native. I also have an older, weaker laptop I’ve been wanting to try a minimal install on to see if I could increase performance. On that front, so far so good. But why Pipewire? See my post here for reasons, but suffice it to say that Pipewire is the audio system of the future for Linux and who doesn’t want a taste of the good life to come?

Archinstaller

If you are new to Arch and want to try Pipewire + JACK for pro audio you will have to get used to a new way of installing Linux systems. There is no pretty, user-friendly installer, but there is the archinstaller which is close. You still have to manually setup networking from the install media before running it. That’s not a fun additional step, but hey, if you don’t like pain maybe Arch isn’t for you.

I won’t go over all my install steps, but I will mention that you *must* install the Network Manager from the installer or manually install networking tools like iw from the chroot stage to do *anything* with your system after installation. If you don’t, you won’t have a network so you won’t be able to easily install anything.

Be sure to create a superuser account or set a root password.

And, of course, you should choose Pipewire as the audio system (which defaults to none in the installer.)

I also installed i3-gaps for my window manager, but still needed a lot of other tools to get that going. I followed this handy guide for getting that setup. It also walks through setting up some other nice things like a better Terminal emulator and the AUR (additional, community packages.)

Post Install Steps

If you are used to Ubuntu, Debian, Fedora, etc, you are probably used to logging in to a system that has working applications and applets for everything like word processing, file editing, audio and video players and web tools including settings utilities and browsers. With Arch, however, you have nothing. Or rather, you have a blank canvas from which to start. You also don’t have a graphical interface at that point — you log into a TTY session and must 1) get a network connection going and then 2) install everything necessary to begin actual work with your system like a text editor, a terminal emulator, etc. That’s beyond the scope of this post. Below we will assume you have correctly installed and configured all of the above and are ready to dive in.

On first login your user will not be in the sudoers file. This is bad because you will need sudo to install packages. So switch user to the root account or superuser account you created during the installation phase.

$ su

Then get the network up and running:

$ nmcli device wifi connect YOURNETWORK password YOURPASSWORD

Install vi so you can visudo to give your user sudo privs. Install realtime-privileges so you can use pipewire-jack later:

$ pacman -S vi realtime-privileges

Then use visudo:

$ visudo

Uncomment the wheel line to allow all members of wheel to execute all commands

Add self to new groups:

$ sudo usermod -aG storage,audio,power,realtime

Add standard directories to your home directory (things like Documents, Downloads, etc):

$ sudo pacman -S xdg-user-dirs

Then create them:

$ xdg-user-dirs-update

Then restart to log back in:

$ sudo reboot

Once you log back in you should be able to install SuperCollider, QJackCtl, Carla and/or any other packages you desire. As mentioned in the TLDR above, you do not need to start JACK. Just fire up SuperCollider, boot the server, and make some bloops!

My Minimal Package Set

The following are the minimum packages I have installed on my fresh Arch system. You will also probably want the SuperCollider Plugins package, etc, but this is what you need to get SC3 running with Pipewire and its JACK support.

  • supercollider [manual]
  • qjackctl [manual]*
  • carla [manual]*
  • pipewire –needed (installs more pipewire packages below including wireplumber) – installed as option during the system installation
  • gst-plugin-pipewire (installed with pipewire)
  • libpipewire02 (installed with pipewire)
  • pipewire-alsa (installed with pipewire)
  • pipewire-jack [manual]
  • pipewire-pulse [manual]
  • wireplumber (installed with pipewire)
  • realtime-privileges [manual] (arch page for package shows it’s required by pipewire, but it was not installed)
  • alsa-utils [manual] *
  • alsa-tools [manual] *

* Not strictly necessary, just nice to have.

There you have it. Configuring pipewire and JACK on Arch Linux isn’t a big chore. If you found this post helpful and want to be alerted when I create a new post, just mash the Subscribe button!