JACKD(1)
๐ JACKD ๐
ok so bestie, you've stumbled onto JACKD(1) โ the manual page for jackd, and honestly? she's iconic. grab a boba, we're getting into it ๐
โจ NAME โจ
jackd โ the JACK Audio Connection Kit sound server. that's the whole vibe. ๐
๐ SYNOPSIS ๐
jackd [options] -d backend [backend-parameters]
jackd --help
๐ฆ DESCRIPTION ๐ฆ
okay so jackd is the JACK audio server daemon, and what she does is let JACK client programs process and route audio and MIDI data in a synchronous, sample-accurate and low-latency way. like, she's not messy โ she's precise. โจ
she was originally written for the GNU/Linux operating system, but she also runs on various Unix platforms, Mac OS X and MS Windows. versatile queen ๐
JACK can connect a number of different client applications to an audio device and also to each other. most clients are external โ running in their own processes as normal applications. JACK also supports internal clients, which run within the jackd process using a loadable "plugin" interface. iykyk ๐ซถ
JACK differs from other audio servers in being designed from the ground up for professional audio work. she focuses on two key areas: synchronous execution of all clients and low latency operation. main character energy, no cap. ๐ฅ
fun lore moment: the name JACK makes a reference to the classical way of patching audio connections with physical audio jack cables. and it's also a recursive acronym โ that's an abbreviation which is part of itself. JACK Audio Connection Kit. the way that she's literally named after herself ๐ญ iconic behavior
for the latest JACK info please consult the web site: <http://www.jackaudio.org/>. ๐ป
๐ OPTIONS ๐
okay this is the big one, stay with me bestie ๐ซถ
-d,--driverbackend [backend-parameters ] โ select the audio interface backend. the current list of supported backends is:alsa,coreaudio,dummy,firewire,osssunandportaudio. heads up, they're not all available on all platforms. all backend-parameters are optional.-h,--helpโ print a brief usage message describing the mainjackdoptions. these do not include backend-parameters, which are listed using the--helpoption for each specific backend. examples below show how to list them. ๐-a,--autoconnectmodechar โ select how to handle self connect requests. they can beignoreorfail, on all port or just external ones. use the--helpoption to know your system specific options. the default is to not restrict self connect requests.-m,--no-mlockโ do not attempt to lock memory, even if--realtime. ๐-n,--nameserver-name โ name thisjackdinstance server-name. if unspecified, this name comes from the$JACK_DEFAULT_SERVERenvironment variable. (default:"default")-p,--port-maxn โ set the maximum number of ports the JACK server can manage. (default:256)--replace-registryโ remove the shared memory registry used by all JACK server instances before startup. this should rarely be used, and is intended only for occasions when the structure of this registry changes in ways that are incompatible across JACK versions (which is rare). like, genuinely rare. don't just vibe with it ๐-R,--realtimeโ use realtime scheduling. this is needed for reliable low-latency performance. on many systems, it requiresjackdto run with special scheduler and memory allocation privileges, which may be obtained in several ways. (default:true)-r,--no-realtimeโ do not use realtime scheduling. the opposite vibe.-P,--realtime-priorityint โ when running--realtime, set the scheduler priority to int.--silentโ silence any output during operation. ๐คซ-T,--temporaryโ exit once all clients have closed their connections. she leaves when the party's over ๐-t,--timeoutint โ set client timeout limit in milliseconds. in realtime mode the client timeout must be smaller than the watchdog timeout (5000msec). (default:500)-Z,--nozombiesโ prevent JACK from ever kicking out clients because they were too slow. this cancels the effect of any specified timeout value, but JACK and its clients are still subject to the supervision of the watchdog thread or its equivalent. no zombies allowed bestie ๐งโโ๏ธ-C,--internal-session-fileinternal-session-file โ load internal clients and connections from internal-session-file. each line of this configuration file starts with a command. the following commands are available:l(oad)client-name lib-name client-args โ with this command an internal JACK client will be instantiated. client-name and lib-name cannot contain spaces. the rest of the line will be interpreted as client-args and sent to the client library.c(on)source-port destination-port โ with this command a source port will be connected to a destination port. source-port and destination-port cannot contain spaces. ๐
comments are allowed, they start with #.
an example configuration could look like the following:
l inprocess1 inprocess
l amp1 jalv http://lv2plug.in/plugins/eg-amp
c amp:out system:playback_1
-u,--unlockโ unlock libraries GTK+, QT, FLTK, Wine. set them free ๐-v,--verboseโ give verbose output. she's a talker ๐ฌ-c,--clocksource( h(pet) | s(ystem) ) โ select a specific wall clock (HPET timer, System timer). โฐ-V,--versionโ print the current JACK version number and exit.
๐ธ ALSA BACKEND OPTIONS ๐ธ
these are the ALSA-specific girlypops ๐
-C,--capture[ name ] โ provide only capture ports, unless combined with-Dor-P. optionally set capture device name.-d,--devicename โ the ALSA pcm device name to use. if none is specified, JACK will use"hw:0", the first hardware card defined in/etc/modules.conf.-z,--dither[rectangular,triangular,shaped,none] โ set dithering mode. ifnoneor unspecified, dithering is off. only the first letter of the mode name is required.-D,--duplexโ provide both capture and playback ports. defaults to on unless only one of-Por-Cis specified. (default:true)-h,--helpโ print a brief usage message describing only the alsa backend parameters.-M,--hwmeterโ enable hardware metering for devices that support it. otherwise, use software metering.-H,--hwmonโ enable hardware monitoring of capture ports. this is a method for obtaining "zero latency" monitoring of audio input. it requires support in hardware and from the underlying ALSA device driver. ๐
when enabled, requests to monitor capture ports will be satisfied by creating a direct signal path between audio interface input and output connectors, with no processing by the host computer at all. this offers the lowest possible latency for the monitored signal. slay.
presently (March 2003), only the RME Hammerfall series and cards based on the ICE1712 chipset (M-Audio Delta series, Terratec, and others) support --hwmon. in the future, some consumer cards may also be supported by modifying their mixer settings. ๐
without --hwmon, port monitoring requires JACK to read audio into system memory, then copy it back out to the hardware again, imposing the basic JACK system latency determined by the --period and --nperiods parameters.
-i,--inchannelsint โ number of capture channels. (default: maximum supported by hardware)-I,--input-latencyโ extra input latency (frames). (default:0)-n,--nperiodsint โ number of periods of playback latency. in seconds, this corresponds to--nperiodstimes--perioddivided by--rate. the default is2, the minimum allowed. for most devices, there is no need for any other value with the--realtimeoption. without realtime privileges or with boards providing unreliable interrupts (likeymfpci), a larger value may yield fewer xruns. this can also help if the system is not tuned for reliable realtime scheduling. ๐ซถ
for most ALSA devices, the hardware buffer has exactly --period times --nperiods frames. some devices demand a larger buffer. if so, JACK will use the smallest possible buffer containing at least --nperiods, but the playback latency does not increase.
for USB audio devices it is recommended to use -n 3. Firewire devices supported by FFADO (formerly FreeBoB) are configured with -n 3 by default.
-o,--outchannelsint โ number of playback channels. (default: maximum supported by hardware)-O,--output-latencyโ extra output latency (frames). (default:0)-P,--playback[ name ] โ provide only playback ports, unless combined with-Dor-C. optionally set playback device name.-p,--periodint โ number of frames between JACKprocess()calls. this value must be a power of 2. if you need low latency, set-pas low as you can go without seeing xruns. a larger period size yields higher latency, but makes xruns less likely. the JACK capture latency in seconds is--perioddivided by--rate. (default:1024)-r,--rateint โ sample rate. (default:48000)-S,--shortsโ try to configure card for 16-bit samples first, only trying 32-bits if unsuccessful. (default: 32-bit samples)-s,--softmodeโ ignore xruns reported by the ALSA driver. this makes JACK less likely to disconnect unresponsive ports when running without--realtime.-X,--midi[seq|raw] โ which ALSA MIDI system to provide access to. usingrawwill provide a set of JACK MIDI ports that correspond to each raw ALSA device on the machine. usingseqwill provide a set of JACK MIDI ports that correspond to each ALSA "sequencer" client (which includes each hardware MIDI port on the machine).rawprovides slightly better performance but does not permit JACK MIDI communication with software written to use the ALSA "sequencer" API. choose wisely ๐น
๐ COREAUDIO BACKEND PARAMETERS ๐
mac girlies this one's for you ๐โจ
-c,--channelsโ maximum number of channels. (default:2)-i,--inchannelsโ maximum number of input channels. (default:2)-o,--outchannelsโ maximum number of output channels. (default:2)-C,--captureโ whether or not to capture. (default:true)-P,--playbackโ whether or not to playback. (default:true)-D,--monitorโ provide monitor ports for the output. (default:false)-D,--duplexโ capture and playback. (default:true)-r,--rateโ sample rate. (default:44100)-p,--periodโ frames per period, must be a power of 2. (default:128)-d,--deviceโ CoreAudio device name. (default: none)-I,--input-latencyโ extra input latency (frames). (default:0)
and that's part 1 bestie, hold on, more coming ๐
-O,--output-latencyโ Extra output latency, measured in frames. (default:0)-l,--list-devicesโ Shows you every CoreAudio device it can find. Iconic for figuring out what to feed to-d. (default:false)-H,--hogโ Takes exclusive access of the audio device, so nobody else gets to touch it. (default:false)-L,--async-latencyโ Extra output latency in asynchronous mode, as a percent. (default:100)-G,--grainโ Computation grain in the RT thread, as a percent. (default:100)-s,--clock-driftโ Whether or not to compensate clock drift in a dynamically created aggregate device. (default:false)
๐ DUMMY BACKEND PARAMETERS ๐
The test-drive backend โ no real hardware, all vibes. ๐ฆ
-C,--capture intโ How many capture ports you want. (default:2)-P,--playback intโ How many playback ports you want. (default:2)-r,--rate intโ Sample rate. (default:48000)-p,--period intโ Number of frames between JACKprocess()calls. โ ๏ธ This value must be a power of 2. Chasing low latency? Set-pas low as you can go without seeing xruns. A larger period size yields higher latency, but makes xruns less likely. The JACK capture latency in seconds is--perioddivided by--rate. (default:1024)-w,--wait intโ Number of usecs to wait between engine processes. (default:21333)
๐ NETONE BACKEND PARAMETERS ๐
Network audio, bestie. Sending your tunes across the wire. โจ
-i,--audio-ins intโ Number of capture channels. (default:2)-o,--audio-outs intโ Number of playback channels. (default:2)-I,--midi-ins intโ Number of midi capture channels. (default:1)-O,--midi-outs intโ Number of midi playback channels. (default:1)-r,--rate intโ Sample rate. (default:48000)-p,--period intโ Frames per period. (default:1024)-n,--num-periods intโ Network latency setting, measured in no. of periods. (default:5)-l,--listen-port intโ The socket port we're listening on for sync packets. (default:3000)-f,--factor intโ Factor for sample rate reduction. (default:1)-u,--upstream-factor intโ Factor for sample rate reduction on the upstream. (default:0)-c,--celt intโ Sets celt encoding and number of kbits per channel. (default:0)-b,--bit-depth intโ Sample bit-depth (0for float,8for 8bit and16for 16bit). (default:0)-t,--transport-sync intโ Whether or not to slave the transport to the master transport. (default:true)-a,--autoconf intโ Whether or not to use Autoconfig, or just start. (default:true)-R,--redundancy intโ Send packets N times. (default:1)-e,--native-endian intโ Don't convert samples to network byte order. (default:false)-J,--jitterval intโ Attempted jitterbuffer microseconds on master. (default:0)-D,--always-deadline intโ Always use deadline. (default:false)
๐ OSS BACKEND PARAMETERS ๐
Old-school sound system energy. Lowkey nostalgic. ๐
-r,--rate intโ Sample rate. (default:48000)-p,--period intโ Number of frames between JACKprocess()calls. This value must be a power of 2. If you need low latency, set-pas low as you can go without seeing xruns. A larger period size yields higher latency, but makes xruns less likely. The JACK capture latency in seconds is--perioddivided by--rate. (default:1024)-n,--nperiods intโ Number of periods in the hardware buffer. The period size (-p) times--nperiodstimes four is the JACK buffer size in bytes. The JACK output latency in seconds is--nperiodstimes--perioddivided by--rate. (default:2)-w,--wordlength intโ Sample size in bits. (default:16)-i,--inchannels intโ Number of capture channels. (default:2)-o,--outchannels intโ Number of playback channels. (default:2)-C,--capture device_fileโ Input device for capture. (default:/dev/dsp)-P,--playback device_fileโ Output device for playback. (default:/dev/dsp)-b,--ignorehwbuf booleanโ Whether or not to ignore hardware period size. (default:false)-e,--excl booleanโ Requests exclusive and direct access to the sound device. This avoids mixing and automatic audio conversion in the OSS driver, and the extra latency that comes with that. (default:false)-I,--input-latencyโ Extra input latency, in frames. (default:0)-O,--output-latencyโ Extra output latency, in frames. (default:0)
โ๏ธ SUN BACKEND PARAMETERS โ๏ธ
Sun/Solaris hardware. Retro but make it fashion. ๐ธ
-r,--rate intโ Sample rate. (default:48000)-p,--period intโ Number of frames between JACKprocess()calls. Must be a power of 2. Want low latency? Set-pas low as you can go without seeing xruns. A larger period size yields higher latency, but makes xruns less likely. JACK's capture latency in seconds is--perioddivided by--rate. (default:1024)-n,--nperiods intโ Number of periods in the hardware buffer. The period size (-p) times--nperiodstimes four (assuming 2 channels 16-bit samples) is the JACK buffer size in bytes. The JACK output latency in seconds is--nperiodstimes--perioddivided by--rate. (default:2)-w,--wordlength intโ Sample size in bits. (default:16)-i,--inchannels intโ Number of capture channels. (default:2)-o,--outchannels intโ Number of playback channels. (default:2)-C,--capture device_fileโ Input device for capture. (default:/dev/audio)-P,--playback device_fileโ Output device for playback. (default:/dev/audio)-b,--ignorehwbuf booleanโ Whether or not to ignore hardware period size. (default:false)
๐ง PORTAUDIO BACKEND PARAMETERS ๐ง
PortAudio does the cross-platform thing so you don't have to. Cross-platform slay. ๐
-c,--channelโ Maximum number of channels. (default: all available hardware channels)-i,--channelinโ Maximum number of input channels. (default: all available hardware channels)-I,--input-latencyโ Extra input latency, in frames. (default:0)-o,--channeloutโ Maximum number of output channels. (default: all available hardware channels)-O,--output-latencyโ Extra output latency, in frames. (default:0)-C,--captureโ Whether or not to capture. (default:true)-P,--playbackโ Whether or not to playback. (default:true)-D,--duplexโ Capture and playback. (default:true)-r,--rateโ Sample rate. (default:48000)-p,--periodโ Frames per period, must be a power of 2. (default:1024)-n,--nameโ Driver name. (default: none)-z,--ditherโ Dithering mode. (default: none)
๐ฅ FIREWIRE BACKEND PARAMETERS ๐ฅ
The FFADO-flavoured one. Serious hardware, serious vibes. โญ
-d,--device nameโ The Firewire device name to use. If none is specified, JACK will try to use"hw:0". To get a list of available Firewire devices, seeffado-test. It's recommended to use the GUID of a Firewire device to rule out any ambiguities. Once the GUID of the device is known ("ffado-test ListDevices"), it can be used like-dguid:0xff2584e39b078a2eto tell JACK which interface to use. Sometimes resetting the Firewire bus can help ("ffado-test BusReset") if there is any problem. (default:hw:0)-p,--period intโ Number of frames between JACKprocess()calls. This value must be a power of 2. If you need low latency, set-pas low as you can go without seeing xruns. A larger period size yields higher latency, but makes xruns less likely. The JACK capture latency in seconds is--perioddivided by--rate. (default:1024)-n,--nperiods intโ Number of periods of playback latency. โ ๏ธ Value must be greater or equal2. In seconds, this corresponds to--nperiodstimes--perioddivided by--rate. (default:3)-r,--rate intโ Sample rate. (default:48000)-C,--capture [ name ]โ Provide only capture ports, unless combined with-Dor-P. Optionally set capture device name.-P,--playback [ name ]โ Provide only playback ports, unless combined with-Dor-C. Optionally set playback device name.-D,--duplexโ Provide both capture and playback ports. This option is the default behaviour and can normally be omitted.-Dcan not be combined with-Por-C.-I,--input-latencyโ Extra input latency, in frames. (default:0)-O,--output-latencyโ Extra output latency, in frames. (default:0)-v,--verboseโ libffado verbose level. (default:3)-X,--snoopโ Snoop Firewire traffic. (default:false)-h,--helpโ Print a brief usage message describing only the firewire backend parameters.
๐ EXAMPLES ๐
Okay so here's where it gets fun โ actual commands you can steal. ๐ซถ
Print usage message for the parameters specific to each backend:
jackd -d alsa --help
jackd -d coreaudio --help
jackd -d net --help
jackd -d dummy --help
jackd -d firewire --help
jackd -d oss --help
jackd -d sun --help
jackd -d portaudio --help
Run the JACK daemon with realtime priority using the first ALSA hardware card defined in /etc/modules.conf:
jackstart --realtime --driver=alsa
Run the JACK daemon with low latency giving verbose output, which can be helpful for trouble-shooting system latency problems. A reasonably well-tuned system with a good sound card and a low-latency kernel can handle these values reliably. Some can do better. If you get xrun messages, try a larger buffer. Tuning a system for low latency can be challenging. Please consult the JACK FAQ for more suggestions:
jackstart -Rv -d alsa -p 128 -n 2 -r 44100
Run jackd with realtime priority using the "sblive" ALSA device defined in ~/.asoundrc. Apply shaped dithering to playback audio:
jackd -R -d alsa -d sblive --dither=shaped
Run jackd with no special privileges using the second ALSA hardware card defined in /etc/modules.conf. Any xruns reported by the ALSA backend will be ignored. The larger buffer helps reduce data loss. Rectangular dithering will be used for playback:
jackd -d alsa -d hw:1 -p2048 -n3 --softmode -zr
Run jackd in full-duplex mode using the ALSA hw:0,0 device for playback and the hw:0,2 device for capture:
jackd -d alsa -P hw:0,0 -C hw:0,2
Run jackd in playback-only mode using the ALSA hw:0,0 device:
jackd -d alsa -P hw:0,0
๐ธ ENVIRONMENT ๐ธ
okay bestie, this section is literally all about the little environment variables that make JACK do its thing behind the scenes โ no cap, these matter ๐
JACK is evolving a mechanism for automatically starting the server when needed. Any client started without a running JACK server will attempt to start one itself using the command line found in the first line of $HOME/.jackdrc if it exists, or /etc/jackdrc if it does not. If neither file exists, a built-in default command will be used, including the -T flag, which causes the server to shut down when all clients have exited. โจ
As a transition, this only happens when $JACK_START_SERVER is defined in the environment of the calling process. In the future this will become normal behavior. In either case, defining $JACK_NO_START_SERVER disables this feature. ๐ซถ
$JACK_DRIVER_DIRโ set this to change where JACK looks for the backend drivers. lowkey important if you've got your drivers in a weird spot ๐ฆ$JACK_DEFAULT_SERVERโ specifies the default server name. If not defined, the string"default"is used. If set in their respective environments, this affectsjackdunless its--nameparameter is set, and all JACK clients unless they pass an explicit name tojack_client_open(). iykyk ๐$JACK_NO_AUDIO_RESERVATIONโ defining this will bypass audio device reservation via session bus (DBus). This can be useful if JACK was compiled with DBus support but should run on a headless system. very much the move for your lil headless setup ๐ง$JACK_PROMISCUOUS_SERVERโ enables an alternate way of handling the various shared resources (Unix sockets, semaphores, ...). In this mode, the generated names will not contain the user id anymore, and the permissions of those resources will be relaxed, allowing clients from different users to talk with the same server. Moreover, on platforms that support it (all POSIX variants), if set to a valid Unix group name or id, the permissions will be restricted to that group, so only members of that group will be able to launch clients that talk to this server.
โ ๏ธ Important note: it must be set with the same value for both server and clients to work as expected. fr fr, mismatch it and everything just vibes wrong ๐
๐ SEE ALSO ๐
- <http://www.jackaudio.org/> โ The official JACK website with news, docs and a list of JACK clients. your first stop, bestie โญ
- <http://www.github.com/jackaudio/> โ The official JACK github code repository. Pull requests are welcome. yes queen, contribute ๐
- <http://lists.jackaudio.org/listinfo.cgi/jack-devel-jackaudio.org> โ The JACK developers' mailing list. Subscribe to take part in development of JACK or JACK clients. User questions are also welcome, there is no user-specific mailing list. so don't be shy ๐
- <http://www.jackosx.com/> โ Tools specific to the Mac OS X version of JACK. ๐
- <http://www.alsa-project.org/> โ The Advanced Linux Sound Architecture.
- <http://www.ffado.org/> โ The Free Firewire Audio Drivers (FFADO) Site. firewire girlies rise ๐ฅ
irc.freenode.net#jackโ Join the JACK community with your favourite IRC client. come hang out ๐
๐ฆ BUGS ๐ฆ
Please report bugs as issues to the corresponding repository: <http://www.github.com/jackaudio/>
like, genuinely, if something's broken just tell them โ they wanna know ๐
๐ AUTHORS ๐
Architect and original implementer: Paul Davis โ the main character himself โจ
Original design group: Paul Davis, David Olofson, Kai Vehmanen, Benno Sennoner, Richard Guenther and other members of the Linux Audio Developers group. iconic collective behavior ๐
Programming: Paul Davis, Jack O'Quin, Taybin Rutkin, Stรฉphane Letz, Fernando Pablo Lopez-Lezcano, Steve Harris, Jeremy Hall, Andy Wingo, Kai Vehmanen, Melanie Thielker, Jussi Laako, Tilman Linneweh, Johnny Petrantoni, Torben Hohn. look at this lineup, absolute legends ๐ซถ
Manpage written by Stefan Schwandter, Jack O'Quin, Alexandre Prokoudine and Thomas Brand.
Create a PDF file from this manpage โ yes you can turn this whole thing into a PDF, slay:
man -t jackd | ps2pdf - > jackd.pdf
that's the whole page bestie, you made it to the end ๐ this is JACK 1.9.22, dated November 2024 โ go make some noise, ily, bye! ๐
๐ฆ where this page comes from
- opensuse-leap 16.0: jack 1.9.22-160000.2.2 ยท GPL-2.0-or-later AND LGPL-2.1-or-later
- opensuse-leap 16.0: jack 1.9.22-160000.2.2 ยท GPL-2.0-or-later AND LGPL-2.1-or-later
- opensuse-leap 16.0: jack 1.9.22-160000.2.2 ยท GPL-2.0-or-later AND LGPL-2.1-or-later
- opensuse-leap 16.0: jack 1.9.22-160000.2.2 ยท GPL-2.0-or-later AND LGPL-2.1-or-later
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms