Ayuda con Jack Control

#16 por baquetin el 24/10/2010
Buenas, tengo un pequeño problema con esto, edito el fichero /etc/security/limits.conf y añado las líneas de marras para el rtprio y memlock. Incluso las tenga añadidas en /etc/security/limits.d/audio.conf, reinicio pero al ejecutar ulimit -l o ulimit -r no me devuelve esos valores.

Al correr qjackctl e iniciar recibo:
[code]03:59:18.469 Patchbay desactivada.
03:59:18.475 Reiniciar estadísticas.
Cannot connect to server socket err = No existe el fichero o el directorio
Cannot connect to server socket
jack server is not running or cannot be started
03:59:18.482 Cambió el gráfico de conexiones ALSA.
03:59:18.679 Cambios en las conexiones ALSA.
03:59:22.303 Script de inicio...
03:59:22.303 artsshell -q terminate
Cannot connect to server socket err = No existe el fichero o el directorio
Cannot connect to server socket
jack server is not running or cannot be started
sh: artsshell: not found
03:59:22.704 El script de inicio finalizó con estado 32512.
03:59:22.704 JACK está iniciándose...
03:59:22.704 /usr/bin/jackd -r -p128 -t5000 -dalsa -dhw:0,0 -r44100 -p128 -n2 -s
03:59:22.706 JACK se inició con PID=1987.
Cannot create thread 1 Operation not permitted
Cannot create thread 1 Operation not permitted
jackdmp 1.9.6
Copyright 2001-2005 Paul Davis and others.
Copyright 2004-2010 Grame.
jackdmp 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 server starting in non-realtime mode
Cannot lock down memory area (Cannot allocate memory)
Failed to connect to session bus for device reservation /usr/bin/dbus-launch terminated abnormally without any error message
Failed to acquire device name : Audio0 error : Invalid argument
Audio device hw:0,0 cannot be acquired, trying to open it anyway...
creating alsa driver ... hw:0,0|hw:0,0|128|2|44100|0|0|nomon|swmeter|soft-mode|32bit
Using ALSA driver HDA-Intel running on card 0 - HDA Intel at 0xfebf8000 irq 22
configuring for 44100Hz, period = 128 frames (2.9 ms), buffer = 2 periods
ALSA: final selected sample format for capture: 32bit integer little-endian
ALSA: use 2 periods for capture
ALSA: final selected sample format for playback: 32bit integer little-endian
ALSA: use 2 periods for playback
03:59:24.890 Configuración del servidor salvada en "/home/user/.jackdrc".
03:59:24.890 Reiniciar estadísticas.
03:59:24.894 Cliente activado.
03:59:24.899 Cambios en las conexiones JACK.
03:59:24.900 Cambió el gráfico de conexiones de JACK.
Cannot lock down memory area (No se pudo asignar memoria)[/code]

Si después me logeo como root cambio los valores de ulimit, luego desde esa terminal sudo user, y después ejecuto de nuevo qjackctl recibo lo siguiente:
[code]03:58:00.110 Patchbay desactivada.
03:58:00.116 Reiniciar estadísticas.
Cannot connect to server socket err = No existe el fichero o el directorio
Cannot connect to server socket
jack server is not running or cannot be started
03:58:00.123 Cambió el gráfico de conexiones ALSA.
03:58:00.320 Cambios en las conexiones ALSA.
03:58:01.767 Script de inicio...
03:58:01.767 artsshell -q terminate
Cannot connect to server socket err = No existe el fichero o el directorio
Cannot connect to server socket
jack server is not running or cannot be started
sh: artsshell: not found
03:58:02.169 El script de inicio finalizó con estado 32512.
03:58:02.169 JACK está iniciándose...
03:58:02.169 /usr/bin/jackd -r -p128 -t5000 -dalsa -dhw:0,0 -r44100 -p128 -n2 -s
03:58:02.172 JACK se inició con PID=1939.
no message buffer overruns
no message buffer overruns
jackdmp 1.9.6
Copyright 2001-2005 Paul Davis and others.
Copyright 2004-2010 Grame.
jackdmp 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 server starting in non-realtime mode
Failed to connect to session bus for device reservation /usr/bin/dbus-launch terminated abnormally without any error message
Failed to acquire device name : Audio0 error : Invalid argument
Audio device hw:0,0 cannot be acquired, trying to open it anyway...
creating alsa driver ... hw:0,0|hw:0,0|128|2|44100|0|0|nomon|swmeter|soft-mode|32bit
Using ALSA driver HDA-Intel running on card 0 - HDA Intel at 0xfebf8000 irq 22
configuring for 44100Hz, period = 128 frames (2.9 ms), buffer = 2 periods
ALSA: final selected sample format for capture: 32bit integer little-endian
ALSA: use 2 periods for capture
ALSA: final selected sample format for playback: 32bit integer little-endian
ALSA: use 2 periods for playback
03:58:04.336 Configuración del servidor salvada en "/home/user/.jackdrc".
03:58:04.336 Reiniciar estadísticas.
03:58:04.341 Cliente activado.
03:58:04.345 Cambios en las conexiones JACK.
03:58:04.349 Cambió el gráfico de conexiones de JACK.[/code]

Con lo cual entiendo que debería suceder como en el segundo supuesto pero, porque no se quedan los cambios grabados?, el user está en el grupo de audio y las líneas del limits.conf son:
@audio - rtprio 99
@audio - memlock unlimited
@audio - nice -10

Entiendo que la configuración es correcta.., se me está pasando algo?

Debian squeeze con 2.6.32.24 kernel compilado para low_latency_desktop, sin parche real time.
Subir
mod
#17 por Irwin J. Cespedes el 24/10/2010
Alguien escribió:

Entiendo que la configuración es correcta.., se me está pasando algo?

Debian squeeze con 2.6.32.24 kernel compilado para low_latency_desktop, sin parche real time.


Bueno, a mi me dió una vez ese error, y era por que mi usuario no estaba en el grupo: "audio". Entonces lo agregue así:

[code]usuario@tupc ~ $ sudo adduser audio[/code]

donde dice pon tu nombre de usuario. Si no, a seguir investigando. :-k

Ruta 27, Mi nuevo tema hecho en GNU/Linux: https://soundcloud.com/altiplane/ruta-27

También soy Altiplane, esta es mi música.

Subir
#18 por Pablo_F el 24/10/2010
Alguien escribió:
edito el fichero /etc/security/limits.conf y añado las líneas de marras para el rtprio y memlock. Incluso las tenga añadidas en /etc/security/limits.d/audio.conf, reinicio pero al ejecutar ulimit -l o ulimit -r no me devuelve esos valores.


Hola,

Si el script de postinstalación de jackd ya te creó el archivo "/etc/security/limits.d/audio.conf" con las líneas rtprio y memlock (para el grupo audio) no es necesario que añadas las líneas al "/etc/security/limits.conf". Es redundante. Es más, mejor no lo hagas. Si quieres puedes cambiar "@audio" por tu nombre de usuario pero si el comando "groups" te da, entre otros, "audio", ya deberías tener todo bien. Y si no, añádelo como comenta Irwin.

Reinicia después de cualquier cambio que hagas en en límites y en gestión de grupos y usuarios. Después vuelve a comprobar con "ulimit -r -l".

En cuanto a la configuración de jack, habilita el modo Realtime (de eso se trataba) y sube los cuadros por periodo al valor por defecto (1024). Prueba a bajar ese valor después pero empieza más conservador. De todas formas, con una hda-intel que además probablemente esté compartiendo número de IRQ con otros dispositivos (comprueba con "cat /proc/interrupts") no le pidas maravillas a Jack.

Otra cosa, ¿Cuánta memoria RAM tienes?

EDITADO: 4 GB, OK, lo he leido en tu otro post.
El eslabón débil es la tarjeta de audio. No todo se arregla a base de software.

Saludos, Pablo
Subir
#19 por Pablo_F el 24/10/2010
Y otra cosa más, con jack2 (versiones 1.9.x de jackd) yo solía poner el modo síncrono. Creo que va mejor. Además, el modo asíncrono (por defecto) añade un periodo de latencia. Jack1, o sea el jack original, versiones 0.x.x, no tiene modo asíncrono.

Para poner en modo síncrono jack2, en qjackctl, en la "ruta del servidor" pones: /usr/bin/jackd -S

Otra opción que tienes (al menos como prueba) es volver a jack1. En Debian squeeze no estoy seguro, pero supongo que tendrás un paquete dummy llamado jack1 con el que puedes hacer el cambio.

Saludos, Pablo
Subir
#20 por baquetin el 24/10/2010
Hola,

gracias por responder, pues efectivamente el eslabón débil en este sistema es la tarjeta de audio, pero ahora mismo no tengo mucha idea de audio como decía, ya me he comido la cabeza buscando interfaces externas y lo tengo claro pero prefiero cacharrear con lo que tengo y cuando vea que realmente necesito algo más si puedo iré a por ello, será externa por el hecho de poder ir al local a grabar, a ver si para entonces USB3 está en la calle a precios populares y esas cosas, perdón el off topic.

Bueno el usuario efectívamente está en el grupo audio como ya indicaba, y cuando ejecuto groups así me lo muestra, el tema de la redundancia en el security/limits.conf (ya que efectivamente tengo el audio.conf de la instalación de jack en squeeze), diré que he probado a tenerlo en los dos sitios o sólo en uno de ellos.

Una cosa que no he probado y he visto por ahí, pero no me queda muy clara es esta:
Añadir al security limits.conf
user soft nofile 32768
user hard nofile 65536

pero entiendo que esto se aplicaría siempre para todo y no se, lo veo un poco inseguro (desde el desconocimiento).
En definitiva, entiendo que la configuración es correcta pero porque demonios no se ejecutan estas ordenes?...
Subir
#21 por Pablo_F el 24/10/2010
Alguien escribió:
Añadir al security limits.conf
user soft nofile 32768
user hard nofile 65536

No sé.

Alguien escribió:

porque demonios no se ejecutan estas ordenes?...


¿Qué órdenes? De tu anterior post, la primera configuración de jack no vale porque no tenías el modo realtime activado y además tenías un valor de cuadros por periodo demasiado bajo para empezar. La segunda tampoco porque estabas lanzando jack como administrador. ¿Te refieres al comando "ulimit"? ¿Qué te da exactamente (-r y -l)?

Saludos, Pablo
Subir
#22 por baquetin el 24/10/2010
perdón, con ordenes me refería a modificar la config del limits.cont y que me coja los cambios ya que al incluirlas y reiniciar el sistema los valores siguen si aplicarse, de hecho aparecen como ahora mismo:
ulimit -l = 64
ulimit -r=0
ulmit -n=1024
y esto es con los cambios en el fichero /etc/security/limits.d/audio.conf (según instalación de jack en squeeze).

La primera config se que no valía de hecho explico en el post como hago en la segunda para iniciarlo como user, no como root, básicamente aplicando los valores con el comando ulimit como root y logeandome despues desde esa consola con sudo su user, y ya aquí ejecutando qjackctl como user pero con los valores aplicados, de esta forma si que arranca.

edito: Por cierto no tengo el kernel rt instalado, pero tampoco arranco jack con la opción real time activada, compilé el 2.6.32.24 con la opción de Low latency for Desktop system. Intenté el parcheo de rt en un 2.6.31 como indico en otro post pero me falla siempre al compilar.
Subir
#23 por Pablo_F el 24/10/2010
Alguien escribió:
Por cierto no tengo el kernel rt instalado, pero tampoco arranco jack con la opción real time activada


Pues mal hecho [-X . Deberías arrancar jack con la opción realtime activada. Precisamente para eso quieres dar a tu usuario el privilegio de rtprio. Una vez más: No es necesario tener un kernel rt para lanzar jack con la opción realtime. La opción realtime de jack es necesaria para que jack funcione "como Dios manda" pero el kernel rt no es estrictamente necesario y depende mucho del hardware y de tu necesidad o no de alcanzar una latencia super-baja (según el caso, innecesariamente super-baja).

Ahora mismo no veo por qué no te toma los límites. Es posible que al compilar el kernel no habilitaras el pam_limits PAM module. Echa un vistazo aquí.

http://www.kernel.org/pub/linux/libs/pa ... imits.html

¿Has probado con un kernel genérico de squeeze?

Saludos, Pablo
Subir
#24 por baquetin el 26/10/2010
No fastidies!, no lo sabía, pensaba que necesitabas tener un kernel compilado para poder hacer uso del real time.

He probado con el 2.6.32-5 que es el que traia la instalacion pero el resultado es el mismo, probe a desinstalar jack, borrar audio.conf del dir limits.d/, reinicie pero siguen sin aplicarse los cambios, es lo que sigo sin entender, jack se inicia pero devuelve errores:


00:27:05.122 /usr/bin/jackd -p128 -t5000 -dalsa -dhw:0,0 -r44100 -p256 -n2 -s
Cannot connect to server socket err = No existe el fichero o el directorio
Cannot connect to server socket
jack server is not running or cannot be started
00:27:05.129 JACK se inició con PID=2507.
Cannot create thread 1 Operation not permitted
Cannot create thread 1 Operation not permitted
jackdmp 1.9.6
Copyright 2001-2005 Paul Davis and others.
Copyright 2004-2010 Grame.
jackdmp 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 server starting in realtime mode with priority 10
Cannot lock down memory area (Cannot allocate memory)
audio_reservation_init
Acquire audio card Audio0
creating alsa driver ... hw:0,0|hw:0,0|256|2|44100|0|0|nomon|swmeter|soft-mode|32bit
Using ALSA driver HDA-Intel running on card 0 - HDA Intel at 0xfebf8000 irq 22
configuring for 44100Hz, period = 256 frames (5.8 ms), buffer = 2 periods
ALSA: final selected sample format for capture: 32bit integer little-endian
ALSA: use 2 periods for capture
ALSA: final selected sample format for playback: 32bit integer little-endian
ALSA: use 2 periods for playback
Cannot use real-time scheduling (RR/10)(1: Operation not permitted)
AcquireSelfRealTime error
00:27:07.317 Configuración del servidor salvada en "/home/kyoku/.jackdrc".
00:27:07.318 Reiniciar estadísticas.
00:27:07.324 Cliente activado.
00:27:07.325 Cambios en las conexiones JACK.
00:27:07.327 Cambió el gráfico de conexiones de JACK.
Cannot lock down memory area (No se pudo asignar memoria)

con lo cual creo que hasta que no consiga que el sistema me reconozca los valores incluidos en el limits.conf no hay tu tía. No lo entiendo sinceramente, al margen de editar esas líneas no hay más misterio, porque no las aplica, grrrr..
Subir
#25 por Vendaval el 26/10/2010
Alguien escribió:
[code]Cannot use real-time scheduling (RR/10)(1: Operation not permitted)[/code]


No tienes habilitada la prioridad realtime. Has puesto las 3 líneas de "marras" en el limits.conf con tu nombre de usuario?? En Debian tal vez vayan en /etc/security/limits.d/audio.conf:

[code]nombredeusuario - rtprio 99
nombredeusuario - memlock unlimited
nombredeusuario - nice -10[/code]

... El nombre de usuario va sin @, que es de grupo. Tiene toda la pinta de un tema de permisos.

Alguien escribió:
[code]JACK server starting in realtime mode with priority 10[/code]


Has de subir la prioridad al máximo en el setup de Jack - que es, si no me equivoco, 89 - .

Salu2 8)
Subir
#26 por Pablo_F el 26/10/2010
Alguien escribió:
No fastidies!, no lo sabía, pensaba que necesitabas tener un kernel compilado para poder hacer uso del real time.


Nooo. Hace tiempo que no. Sólo hace falta que funcione lo de los PAM limits, que normalmente funciona sin más. En concreto el privilegio de realtime priority para el usuario que lanza jackd. Y además, el memlock (unlimited o un valor suficientemente alto de memoria RAM). Paul Davies ha comentado recientemente dos o tres veces que la línea de nice no es necesaria.

Es más, da igual que las líneas estén en /etc/security/limits.conf o en /etc/security/limits.d/cualquierarchivo

Según entiendo leyendo el manual de pam_limits (man pam_limits), no es que sea diferente en Debian, lo que ocurre es que el paquete jackd de Debian testing (y en ubuntu a partir de 10.04) tiene un script de postinstalación que escribe semi-automáticamente (necesita confirmación del usuario) a /etc/security/limits.d/audio.conf las líneas de rtprio y memlock para los miembros del grupo audio. En lugar de audio se podría usar el grupo "realtime" o el grupo pepito, o como comenta Vendaval, poner directamente el nombre del usuario (sin arroba delante) pero si se hace a lo Debian, hay que añadir al grupo "audio" el usuario que queramos que adquiera estos privilegios. Y reiniciar.

Si después de reiniciar, el comando "ulimit -r -l" lanzado por el usuario que se supone que tiene estos privilegios no devuelve lo esperado, estoy un poco perdido en cuál puede ser el problema pero es posible que no tengas cargado el módulo pam_limits.so o que tengas que hacer algo en algún archivo dentro de /etc/pam.d/.

Prueba:

$ sudo updatedb
$ locate pam_limits
$ ls -lah /etc/pam.d

Saludos, Pablo
Subir
#27 por baquetin el 27/10/2010
Antes de nada gracias por la ayuda que me estais brindando

Vendaval escribió:
Alguien escribió:
[code]Cannot use real-time scheduling (RR/10)(1: Operation not permitted)[/code]


No tienes habilitada la prioridad realtime. Has puesto las 3 líneas de "marras" en el limits.conf con tu nombre de usuario?? En Debian tal vez vayan en /etc/security/limits.d/audio.conf:

[code]nombredeusuario - rtprio 99
nombredeusuario - memlock unlimited
nombredeusuario - nice -10[/code]

... El nombre de usuario va sin @, que es de grupo. Tiene toda la pinta de un tema de permisos.


Las líneas de marras están ya lo he comentado a lo largo del hilo, el tema de la arroba está claro, y mi usuario pertenece al grupo audio, aún así he modificado las líneas para que aparezca el nombre del usuario en vez del grupo, reinicio incluido pero es lo mismo, ejecuto ulimit -l y -r y me sigue devolviendo los valores que no debería, y por supuesto si inicio jack tengo los mismos problemas.
Tiene toda la pinta de que aquí está el error, ahora bien, porque no me recoge los cambios del limits.conf???, (también he probado a editar al audio.conf y todas las variantes posibles entre editar /etc/security/limits.conf y /etc/security/limits.d/audio.conf, con resultados infructuosos).

Alguien escribió:
[code]JACK server starting in realtime mode with priority 10[/code]


Has de subir la prioridad al máximo en el setup de Jack - que es, si no me equivoco, 89 - .

Salu2 8)[/quote]
Donde se edita esto?, desde la ventana setup de jack?, no lo veo...


@Pablo
Gracias por la aclaración (y gracias por semicorchux ;-) )

pam_limits.so cuelga de /lib/security/
y dentro de /etc/pam.d
total 84K
drwxr-xr-x 2 root root 4,0K oct 24 04:26 .
drwxr-xr-x 104 root root 4,0K oct 27 18:20 ..
-rw-r--r-- 1 root root 197 nov 23 2009 atd
-rw-r--r-- 1 root root 384 sep 5 20:07 chfn
-rw-r--r-- 1 root root 92 sep 5 20:07 chpasswd
-rw-r--r-- 1 root root 581 sep 5 20:07 chsh
-rw-r--r-- 1 root root 1,2K oct 24 04:26 common-account
-rw-r--r-- 1 root root 1,2K oct 24 04:26 common-auth
-rw-r--r-- 1 root root 1,5K oct 24 04:26 common-password
-rw-r--r-- 1 root root 1,2K oct 24 04:26 common-session
-rw-r--r-- 1 root root 1,2K oct 24 04:26 common-session-noninteractive
-rw-r--r-- 1 root root 531 ago 11 08:04 cron
-rw-r--r-- 1 root root 4,5K sep 5 20:07 login
-rw-r--r-- 1 root root 92 sep 5 20:07 newusers
-rw-r--r-- 1 root root 520 sep 6 08:36 other
-rw-r--r-- 1 root root 92 sep 5 20:07 passwd
-rw-r--r-- 1 root root 105 sep 16 23:34 polkit-1
-rw-r--r-- 1 root root 1,3K dic 21 2009 sshd
-rw-r--r-- 1 root root 2,3K sep 5 20:07 su
-rw-r--r-- 1 root root 119 sep 8 22:32 sudo

Veo en /etc/pam.conf que este fichero sólo se utilizará si no existe el directorio /etc/pam.d/, el cual existe, sin embargo la salida de lsmod no me devuelve el pam_limits.

Me da por intentar sudo modprobe pam_limits.so y me devuelve:
WARNING: All config files need .conf: /etc/modprobe.d/alsa-base, it will be ignored in a future release.
FATAL: Module pam_limits.so not found.

Ahora mismo estoy perdido.
Subir
#28 por baquetin el 27/10/2010
Ya vi lo de la prioridad Vendaval, valiente melón.
Subir
#29 por Pablo_F el 27/10/2010
Hola :)

Yo en /etc/pam.d/ tengo un archivo llamado gdm donde, entre otras, está la línea sugerida en el manual de pam_limits, es decir:

session required pam_limits.so

Ahora, no veo que tú tengas el gdm. Entonces supongo que tendrás que añadir esta línea en /etc/pam.d/login, debajo de la línea:

session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open

A ver si así funciona.

Saludos, Pablo
Subir
#30 por baquetin el 29/10/2010
Hey Pablo,

Gracias por el capote tío, te he contestado también en linuxmusicians ;-), a ver si lo hecho a andar y voy contando las vicisutedes. Os mantendré informados.
Subir
Respuesta rápida

Regístrate o para poder postear en este hilo