[PlanetCCRMA] Re: Problem with /usr/bin/jackstart

Mark Knecht markknecht@gmail.com
Sat Aug 6 19:14:00 2005


On 8/6/05, Ron Pepper <feffer777@yahoo.com> wrote:
>
> >
> > jackd -d alsa -r 44100 -n 4 -p 1024 -d hw
> 
> [rp@localhost ~]$ jackd -d alsa -r 44100 -n 4 -p 1024 -d hw
> jackd 0.99.36
> Copyright 2001-2003 Paul Davis and others.
> jackd comes with ABSOLUTELY NO WARRANTY
> This is free software, and you are welcome to redistribute it
> under certain conditions; see the file COPYING for details
> 
> JACK compiled with System V SHM support.
> loading driver ..
> apparent rate = 44100
> creating alsa driver ... hw|hw|1024|4|44100|0|0|nomon|swmeter|-|32bit
> configuring for 44100Hz, period = 1024 frames, buffer = 4 periods
> Couldn't open hw for 32bit samples trying 24bit instead
> Couldn't open hw for 24bit samples trying 16bit instead
> ALSA: got smaller periods 2 than 4 for capture
> ALSA: cannot configure capture channel
> cannot load driver module alsa
> no message buffer overruns
> >
> > This sets the sample rate and the basic transfer size. See man
> > jackd
> > for more info. If this still doesn't work then try raising -p to
> > 2048/4096/etc. as an experiement.
> 
> Same result for -p 2048/4096/8192/16384

Right. You can see from the message above that it doesn't like n=4 and
sseems to want you to use n=2.

In terms of latency, n=2/p=1024 is the same as n=4/p=512.

> 
> > The issue here is why you are not able to run realtime. Do you have
> > the realtime-lsm module loaded? As root
> >
> > lsmod
> 
> [root@localhost rp]# /sbin/lsmod
> Module                  Size  Used by
<SNIP>
> realtime                5256  0
> commoncap               7040  1 realtime
<SNIP>

So realtime is loaded but apparently your user account is not able to
access the capability...

I'm mostly running Gentoo today so I don't have access right now to a
machine similar to yours but from this laptop I can run modinfo and
get some data. I've added a few line feeds to make it more readable
for you:

flash ~ # modinfo realtime
vermagic:       2.6.12-gentoo-r3 preempt PENTIUM4 gcc-3.3

parmtype:       any:int
parm:           any: grant realtime privileges to any process.

parmtype:       gid:int
parm:           gid: the group ID with access to realtime privileges.

parmtype:       mlock:int
parm:           mlock: enable memory locking privileges.

description:    Realtime Capabilities Security Module
license:        GPL
description:    Standard Linux Common Capabilities Security Module
license:        GPL
vermagic:       2.6.12-gentoo-r3 preempt PENTIUM4 gcc-3.3
depends:
flash ~ #

So there are three parameters - any, gid and mlock

I load realtime like this:

modprobe realtime gid=408 any=1

This grants group 408 the rights to use realtime capabilities. In my
/etc/group file I have this line:
realtime:x:408:mark

which places user mark in group 408. With my laptop I can then run jackd -R

flash ~ # jackd -R -d alsa -r 44100 -n 2 -p 128 -d hw
jackd 0.99.0
Copyright 2001-2003 Paul Davis and others.
jackd comes with ABSOLUTELY NO WARRANTY
This is free software, and you are welcome to redistribute it
under certain conditions; see the file COPYING for details

loading driver ..
apparent rate = 44100
creating alsa driver ... hw|hw|128|2|44100|0|0|nomon|swmeter|-|32bit
configuring for 44100Hz, period = 128 frames, buffer = 2 periods


There really isn't much more to it than that. I think if you great a
group, add your user account to that group, reload realtime to allow
that group to use the capability, and then try running jackd again
you'll have a pretty good chance of getting it to work.

What confuses me about all of this is that I thought Fernando's
scripts set all this up automatically, although I know I had to do a
lot of this by hand in the old days.

Down't worry about being a newbie. We all were once. Learn and give back later.

Cheers!

- Mark