[ubuntu-studio-devel] jack_control

Len Ovens len at ovenwerks.net
Sat Apr 25 17:36:42 UTC 2015

I didn't want to clog up the IRC with this...

Here are some of the things I have learned about jack_control and how it 
works. Here is a list of what commands it understands:
Usage: jack_control [command] [command] ...
     exit                       - exit jack dbus service (stops jack server 
if currently running)
     help                       - print this help text
     status                     - check whether jack server is started, 
return value is 0 if running and 1 otherwise
     start                      - start jack server if not currently 
     stop                       - stop jack server if currently started
     sm                         - switch master to currently selected 
     dl                         - get list of available drivers
     dg                         - get currently selected driver
     ds <driver>                - select driver
     dp                         - get parameters of currently selected 
     dpd <param>                - get long description for driver parameter
     dps <param> <value>        - set driver parameter
     dpr <param>                - reset driver parameter to its default 
     asd <driver>               - add slave driver
     rsd <driver>               - remove slave driver
     il                         - get list of available internals
     ip <name>                  - get parameters of given internal
     ipd <name> <param>         - get long description for internal 
     ips <name> <param> <value> - set internal parameter
     ipr <name> <param>         - reset internal parameter to its default 
     iload <name>               - load internal
     iunload <name>             - unload internal
     ep                         - get engine parameters
     epd <param>                - get long description for engine parameter
     eps <param> <value>        - set engine parameter
     epr <param>                - reset engine parameter to its default 

I spent some time looking at the output "get" forms of these commands as 
this tells you which params are available to change. The main commands 
that are used are the stop, start and exit commands which are obvious. The 
next most important command is sm. This is the last command to send after 
changing any parameters to make them take effect. For an example, here is 
the command that starts my jackdbus when I login:

#sleep $DELAY

jack_control ds $DRIVER dps device $DEV dps rate $RATE dps period $FRAME \
         dps nperiods $PERIOD start

I should be using DEV=hw:D66, Frame could be 1024 or even 512 on this 
machine. (I use 64 with PA still connected with no issues) USB,FW and AoIP 
should probably use PERIOD=3

I have made the settings variables for now with the idea that they may 
someday come from a config file or the environment. Notice the start is at 
the end after all the parameters are loaded. If I was changing these 
parameters "on the fly" then the start would be replaced by sm.

pretty simple. Basically, all the things jackd commandline can do 
jack_command can do too. Just a different syntax and the configuration is 
stored to a different place as well. So just going jack_control start will 
use the same settings as last run.

To change the latency on the fly, the command to use is jack_bufsize $FRAME

As with many things if the PA system files (in /etc) are changed there are 
errors when upgrading pulse because it notices the file has changed. I 
need to find out where I could add a file afterwards that would not 
interfere with upgrades.

Len Ovens

More information about the ubuntu-studio-devel mailing list