martes, 20 de abril de 2010

nvidiactl

Después de actualizar a kubuntu 10.04 Beta 2 y reinstalar los drivers de la tarjeta nvidia como usuario normal perdí la aceleración 3D.

cuando le daba

glxinfo | grep render

me salia una línea que rezaba así

NVIDIA: could not open the device file /dev/nvidiactl (Permission denied).


solución:

Agregamos a nuestro usuario al grupo de video:

¿Porque?

si hacemos un ls -l al dispositivo veremos

ls -l /dev/nvidiactl
crw-rw---- 1 root video 195, 255 2010-04-20 08:02 /dev/nvidiactl


El dispositivo pertenece a root y al grupo de video

Si vemos el contenido de /etc/group veremos que nuestor usuario no pertenece a ese grupo

cat /etc/group | grep video
video:x:44:


Editamos el archivo para agregarnos y que quede algo como

cat /etc/group | grep video
video:x:44:usuario


Cerramos la sesión actual, nos logeamos de nuevo y ya tendremos la aceleración perdida:

glxinfo | grep render
direct rendering: Yes
OpenGL renderer string: GeForce Go 6150/PCI/SSE2
GL_NVX_conditional_render, GL_SGIS_generate_mipmap, GL_SGIS_texture_lod,


glxgears
Running synchronized to the vertical refresh. The framerate should be
approximately the same as the monitor refresh rate.
7866 frames in 5.0 seconds
9066 frames in 5.0 seconds
9059 frames in 5.0 seconds

martes, 23 de febrero de 2010

webcam como camara IP en Linux (debian, ubutu)

Primero tenemos que tener instalado los siguientes paquetes, y tener configurado un servidor web (puede ser apache o cualquier otro)

sudo apt-get install webcam lib4l-0

No se crea ningún archivo de configuración por lo cual no creamos en nuestro home, o si vamos a usar la ruta principal del servidor web (/var/www) creamos el archivo webcam.conf dentro de /etc

vim .webcamrc (o con el editor de texto que uses)
vim /etc/webcam.conf (como root o anteponiendo sudo, en caso de pertenecer a los sudoers)

El archivo va contener algo como lo que se muestra enseguida

[ftp]
host = localhost
user = nobody
pass = xxxxxx
dir = /home/usuario/public_html
file = webcam.jpg
tmp = imageup.jpg
local = 1

[grab]
device = /dev/video0
width = 320
height = 240
text = "Webcam %Y-%m-%d %H:%M:%S"
delay = 0
input =sonixj
quality = 75
trigger = 180
fg_red = 255
fg_green = 255
fg_blue = 255
rotate = 2

Como mi webcam pone de cabeza las capturas, con rotate = 2 lo arreglo (1=90 grados 2= 180, etc.)

¿Como saber cual es el nombre de la webcam(input = nombrewebcam)? con v4l-info (dese la terminal)

$ v4l-info

Las partes que nos interesan es la que nos dice el nombre de la camara (sonixj) y la altura y el ancho máximo

inputs
VIDIOC_ENUMINPUT(0)
index : 0
name : "sonixj" <---Este es el valor de input =sonixj type : CAMERA audioset : 0 tuner : 0 std : 0x0 [] status : 0x0 []

y
### video4linux device info [/dev/video0] ###
general info
VIDIOCGCAP
name : "USB camera"
type : 0x1 [CAPTURE]
channels : 1
audios : 0
maxwidth : 640
maxheight : 480
minwidth : 48
minheight : 32


Ahora si lo probamos con

@anaconda-server:~$ webcam
reading config file: /home/usuario/.webcamrc
can't get rgb24 data

Ops! ¿Qué hace ese rgb24 data? si nunca lo mandé llamar.

Solución:

Se me ocurrió que se podría asociar con el LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so webcam, por lo que es la misma solución que para algunas webcam es necesaria para poderlas usar con skype

https://wiki.ubuntu.com/SkypeWebCams

$ LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so webcam
reading config file: /home/usuario/.webcamrc
video4linux webcam v1.5 - (c) 1998-2002 Gerd Knorr
grabber config:
size 320x240 [none]
input sonixj, norm (null), jpeg quality 75
rotate=2, top=0, left=0, bottom=240, right=320
write config [ftp]:
local transfer /home/usuario/public_html/imageup.jpg => /home/usuario/public_html/webcam.jpg
compare: max=50,avg=4
compare: max=255,avg=78
compare: max=8,avg=0
compare: max=24,avg=0
compare: max=17,avg=0
compare: max=33,avg=0
compare: max=29,avg=0
compare: max=35,avg=0
compare: max=34,avg=0
compare: max=42,avg=0
compare: max=39,avg=0
compare: max=46,avg=0
compare: max=52,avg=0

Ya sólo queda ver el resultado en la web, mover la camara y recargar el navedador para ver los resultados. Para probar su funcionamiento utilicé la siguiente página web.

<html>
<head>
<title>WebCam</title>
<meta http-equiv="REFRESH" content="1"></meta>
</head>
<body>
<img src="webcam.jpg"></img>
</body>
</html>


Recargo la página cada segundo.



webcam a 320x240



webcam a 640x480