Headless Jackd (with SuperCollider as an example)


Sometimes you want to run jackd like a real server so it is simply always there. Fiddling with starting up apps is a terrible thing to be doing when you should be playing music and your friends are waiting for your dumb fancy linux noise toy. If it starts automatically, it goes a long way to creating the impression of a serious machine.

Step 1: Get jack without dbus

Jack comes with dbus by default, which is a great thing when you are running a desktop. When you are not, it is a pain in the (insert body part of choice here).

Ubuntu 14.04 does not come with a dbus-less version of jackd, so you need to compile it yourself. It's not hard.

# Prerequisites
sudo -s
apt-get install build-essential libsamplerate-dev libasound-dev libsndfile-dev git

# Get source
cd /usr/local/src
git clone git://
cd jack2

# version from distro may prevent surprises
git checkout v1.9.10

# add --firewire if you use it
./waf configure --alsa --prefix=/usr/local --libdir=/usr/lib/x86_64-linux-gnu
./waf install

You can still install the normal jackd package to satisfy dependencies. If you run jackd from the command line, it will take precedence because it is in /usr/local/bin. Just make sure to run /usr/local/bin/jackd in startup scripts and other places where you need to provide the full path.

Step 2: Make it run on startup

Ubuntu uses upstart to start things on startup in 14.04. This may need to be converted to a systemd job later, but not until the fall of 2016 if you are sticking to LTS point releases.

Place the following in /usr/init/jackd.conf:

start on runlevel [2345]
stop on runlevel [06]
limit memlock unlimited unlimited
limit rtprio 95 95
setuid carlo
setgid audio
exec /usr/local/bin/jackd -R -dalsa -dhw:PCH -r48000 -p512 -n3

Adapt the jackd settings to what is best for your setup.

Note that jackd considers itself more or less single-user, so enter the user you will be using it with. It may be possible to use it with different users, so if you come up with a use case you need that for, go ahead, but this guide is not tested with it.

Step 3: Daemons that depend on jackd

You might want to run other services that depend on jackd. Here we will use the multicore version of the supercollider sound server, supernova. supernova needs realtime priority, so we keep the limit settings. Other daemons may not need that. The key is to use start on jackd, so that upstart handles depending daemons.

description "Supernova supercollider audio daemon"
start on jackd
stop on runlevel [06]
limit memlock unlimited unlimited
limit rtprio 95 95
setuid carlo
setgid audio
exec /usr/bin/supernova -S48000 -u57110