martes, 20 de abril de 2010
nvidiactl
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
miércoles, 1 de julio de 2009
La PC que se niega morir

CPU: Celeron 366 Mhz
RAM: 256 Mb
SO: Ubuntu 9.04
Resolución de Pantalla: 1152x864
Escritorio. Gnome
Hace mucho que no manejaba esta PC con una interfaz gráfica, de hecho la tenía sin monitor, pero ahora que se lo puse, he recordado los viejos tiempos, lo que pasé con ella aprendiendo, y por lo que veo todavía me va a dar más satisfacciones.
Aquí es donde me pregunto ¿Porqué ahora las cosas las hacen para que no te duren? No estamos comprando chocolates para que las empresas nos pretendan hacer creer que necesitamos PCs de última generación.
Esta PC va para los 10 años de edad y sigue inquebrantable, en pie, día y noche, día y noche. Sólo ve su ciclo interrumpido cuando tengo que salir por más de 1 día, y así lleva ya más de 2 años, cuando decidí darle nueva vida como servidor de páginas web.Después postearé capturas de pantalla del recuerdo (las que en su momento saque)
lunes, 1 de junio de 2009
Mi intento de aprender sdcc para PICs
/* ----------------------------------------------------------------------- */
/* Template source file generated by piklab */
#include
/* ----------------------------------------------------------------------- */
/* Bits de configuración: adapte los parámetros a su necesidad */
typedef unsigned int word;
word at 0x2007 CONFIG = _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _BODEN_OFF & _CP_OFF & _CPD_OFF;
void initPIC()
{
/*Poner a Ceros el Puerto*/
_asm
BANKSEL GPIO
clrf GPIO
movlw 0x07
movwf CMCON
BANKSEL ANSEL
CLRF ANSEL
movlw 0x0c
movwf TRISIO
BANKSEL GPIO
_endasm;
}
/*Rutina de Retardo*/
void delay(int ret) {
int r;
for(r=0;r<=ret;r++) { } }
void main() {
initPIC();
while(1){
GP5=1;
delay(10000);
GP5=0;
delay(10000);
}
}
Lo que quería aprender hacerlo en C, pero le terminé metiendo ensamblador para la configuración de los puertos, no puedo negar mis origenes.
jueves, 28 de mayo de 2009
Aceleración ATI Xpress Radeon 200M Jaunty
1.- Instalamos todas las dependecias para poder compilar mesa.
sudo apt-get install autoconf
sudo apt-get build-dep mesa
sudo apt-get install libxmu-dev libdrm-dev x11proto-dri2-dev libxi-dev
2.- Descargamos las fuentes de mesa con el radeo-rewrite:
git clone git://anongit.freedesktop.org/git/mesa/mesa
cd mesa
git branch radeon-rewrite origin/radeon-rewrite
git checkout radeon-rewrite
3.- Procedemos a ejecutar el siguiente comando:
./autogen.sh --prefix=/usr --with-dri-drivers=radeon,r200,r300
4.- Si no hubo ningún error, de dependencias, podemos hacer el conocido:
make
sudo make install
Y tendremos el rendimiento de los drivers propietarios en Ubuntu 9.04
semael@anaconda2:~/tmp/mesa$ glxinfo | grep render
direct rendering: Yes
OpenGL renderer string: Mesa DRI R300 20090101 NO-TCL
semael@anaconda2:~/tmp/mesa$ glx
glxdemo glxgears glxheads glxinfo
semael@anaconda2:~/tmp/mesa$ glxgears
5097 frames in 5.0 seconds = 1019.280 FPS
5789 frames in 5.0 seconds = 1157.639 FPS
5767 frames in 5.0 seconds = 1153.326 FPS
5794 frames in 5.0 seconds = 1158.684 FPS
5799 frames in 5.0 seconds = 1159.756 FPS
5750 frames in 5.0 seconds = 1149.966 FPS
XIO: fatal IO error 11 (Resource temporarily unavailable) on X server ":0.0"
after 107180 requests (65066 known processed) with 0 events remaining.
semael@anaconda2:~/tmp/mesa$
El rendimiento que me estaba dando antes de efectua este proceso:
semael@anaconda2:~/tmp/mesa$ glxgears
1057 frames in 5.0 seconds = 211.367 FPS
1084 frames in 5.0 seconds = 216.691 FPS
XIO: fatal IO error 11 (Resource temporarily unavailable) on X server ":0.0"
after 8927 requests (41 known processed) with 0 events remaining.
semael@anaconda2:~/tmp/mesa$
Visto en: http://www.phoronix.com/forums/showthread.php?t=16554
viernes, 8 de agosto de 2008
Reparando una Tarjeta de Red PCMCIA
- Soldadura
- Cautín
- Pasta para soldar
- Multímetro
- Juego de desarmadores para relojero
- Tarjeta PCMCIA
- Y no tener pasta para comprar una nueva (sobre todo esta última)
Primero procederemos a abrir nuestra tarjeta, usando los desarmadores, de tal forma que dejemos la placa al descubierto, tal y como se muestra en la siguiente figura.

Ya que la tenemos despedazada procederemos a verificar cual puede ser el posible problema. El problema detectado en esta tarjeta es que todos los pines de RJ45 estaba desoldados de la placa.
Aquí se muestra cuales son los pines desoldados
Ya identificado el problema procedemos con cautela y sin miedo a meter el cautín. Como los pines de esta tarjeta están soldados de manera superficial, es bueno suponer que queda algo de soldadura reusable en las pistas, que por supuesto no alcanzamos a ver porque están un poco metidas.
Con un desarmador cogemos un poco de pasta para soldar y embarramos todos los pines.
Ya embarrados y con nuestro cautín bien caliente lo pasamos por todos y cada uno de los pines para calentarlos y provocar que la soldadura de la pista agarre de nuevo la patita.
Ya que le dimos la pasada, agarramos el multímetro para verificar la continuidad, en caso de que no hayan quedado soldados el multímetro mostrara circuito abierto.

Multímetro: Seleccionamos la opción para comprobar diodos y continuidad. Si al colocar las puntas de prueba entre dos puntos escuchamos un pitido entonces quiere decir que hay continuidad. Útil para verificar que los pines estén soldados.
En el caso que queden sin soldar repetimos el paso anterior, de lo contrario ensamblamos de nuevo la tarjeta, y procedemos a probar.
Colocamos la tarjeta en posición y le enchufamos el cable, encendemos la laptop y procedemos a rezar.
viernes, 2 de mayo de 2008
Termómetro
El programa del PIC lo hice para probar la programación en C de estos microcontroladores ya que siempre los había programado en ensamblador.
El programa de la PC está realizado en C++ el cual es ejecutado por medio del cron cada 5 minutos, generandome la página web que se puede ver en la página.
viernes, 1 de febrero de 2008
GHDL con las librerías UNISIM de Xilinx
En segundo lugar, tenía que utilizar las librerías unisim:
Library UNISIM;
use UNISIM.vcomponents.all;
Voy a suponer que tenemos instalado en nuestro sistema alguna de las dos versiones anteriores del ISEWebPACK.
Desde la consola primero nos creamos una carpeta para ubicar nuestro código vhdl y dentro de ella crearemos una carpeta llamada unisim.
$ mkdir vhdl
$ mkdir vhdl/unisim
Ahora copiamos el contenido de la carpeta vhdl/src/unisims en el directorio del ISEWebPack, que en mi caso se encuentra en /opt/Xilinx92i/vhdl/src/unisims/, al directorio unisim que acabamos de crear.
$ cp /opt/Xilinx92i/vhdl/src/unisims/* vhdl/unisim/
Ahora nos movemos a la carpeta vhdl/unisim/
$ cd vhdl/unism
y compilamos estas librerías con
~/vhdl/unisim$ ghdl -a --work=unisim --ieee=synopsys -fexplicit unisim_VCOMP.vhd
~/vhdl/unisim$ ghdl -a --work=unisim --ieee=synopsys -fexplicit unisim_SMODEL.vhd
~/vhdl/unisim$ ghdl -a --work=unisim --ieee=synopsys -fexplicit unisim_VPKG.vhd
~/vhdl/unisim$ ghdl -a --work=unisim --ieee=synopsys -fexplicit --warn-no-vital-generic unisim_VITAL.vhd
unisim_VITAL.vhd:150533:18:warning: universal integer bound must be numeric literal or attribute
unisim_VITAL.vhd:176564:57: variable "write_a_write_b" is not visible here
unisim_VITAL.vhd:176565:57: variable "read_a_write_b" is not visible here
unisim_VITAL.vhd:176566:57: variable "write_a_read_b" is not visible here
unisim_VITAL.vhd:176567:57: variable "write_b_write_a" is not visible here
unisim_VITAL.vhd:176568:57: variable "read_b_write_a" is not visible here
unisim_VITAL.vhd:176569:57: variable "write_b_read_a" is not visible here
/usr/lib/ghdl/bin/ghdl: compilation error
Observamos que nos manda un error, pero no es de preocuparse es solo cuestion de abrir el archivo unisim_VITAL.vhd y comentar las líneas que nos indica (176564,176565,176566,176567,176568,176569).
Las líneas en cuestion son:
variable Write_A_Write_B : memory_collision_type := Write_A_Write_B;
variable Read_A_Write_B : memory_collision_type := Read_A_Write_B;
variable Write_A_Read_B : memory_collision_type := Write_A_Read_B;
variable Write_B_Write_A : memory_collision_type := Write_B_Write_A;
variable Read_B_Write_A : memory_collision_type := Read_B_Write_A;
variable Write_B_Read_A : memory_collision_type := Write_B_Read_A;
En este punto si volvieramos a tratar de compilar nos arrojaría el mismo error sólo que en líneas distintas.
unisim_VITAL.vhd:188630:57: variable "write_a_write_b" is not visible here
unisim_VITAL.vhd:188631:57: variable "read_a_write_b" is not visible here
unisim_VITAL.vhd:188632:57: variable "write_a_read_b" is not visible here
unisim_VITAL.vhd:188633:57: variable "write_b_write_a" is not visible here
unisim_VITAL.vhd:188634:57: variable "read_b_write_a" is not visible here
unisim_VITAL.vhd:188635:57: variable "write_b_read_a" is not visible here
Por lo tanto sería buena idea comentarlas también, ya sea que busquemos en el archivo por "variable Write_A_Write_B : memory_collision_type := Write_A_Write_B;" , comentar esta línea y las subsecuentes o movernos hasta la línea indicada que sería la 188630 y comentarlas.
Hecho lo anterior volvemos a compilar con:
ghdl -a --work=unisim --ieee=synopsys -fexplicit --warn-no-vital-generic unisim_VITAL.vhd
Ya compilado nos retachamos a la carpeta vhdl ($ cd ..) para empezar a realizar nuestras pruebas, en donde compilaremos nuestros proyectos con:
ghdl -a --ieee=synopsys -Punisim -fexplicit
miércoles, 30 de enero de 2008
Instalación de un winmodem pctel en ubuntu gusty
Pues a altas horas de la noche se me ocurrió probar que tal era la configuración de mi winmodem en Linux, ya que de hace tiempo me acordaba de que era un poco tortuoso, aunque al final gane experiencia y para poder instalarlo sin problemas. La primera vez que lo instalé fue en un Mandrake 8.0, y así me fuí de versión en versión hasta la 10.0 ya que después no tuve la necesidad de volverlo a instalar porque ahora contabamos con internet de banda ancha (yupi!!!!!).
Pero como a eso de la 1:30 am me pregunté si sería igual la forma de instalación o no. Me di a la tarea de buscarlo de nuevo en internet tal y como lo hacia antes (”san google”). Di rápidamente com http://linmodems.technion.ac.il/pctel-linux/welcome.html y que me bajo la última versión que tienen del driver para el kernel 2.6.22.
Descargado me di a la tarea de hacer un lspci para ver como me identificaba mi modem.
00:0d.1 Communication controller: C-Media Electronics Inc CM8738 (rev 10)
Enseguida descomprimí el driver:
$tar -xvzf pctel-0.9.7-9-rht-8.tar.gz
$cd cd pctel-0.9.7-9-rht-8/
le doy un ls para ver que hay el el directorio:
$ ls
ChangeLog driver FAQ README setup src
Y me veo en la imperiosa necesidad de teclear
$sudo ./setup
a lo cual alegremente me responde:
checking for running kernel version...2.6.22
checking for ptserial...ptserial-2.6.c
checking for gcc...4.1.3
checking for kernel gcc version...4.1.3
searching for kernel includes...found at /lib/modules/2.6.22-14-server/build/include
checking for autoconf.h.../lib/modules/2.6.22-14-server/build/include/linux/autoconf.h
checking for asm/mach-default...yes
checking for kernel version in utsrelease.h...UTS_RELEASE is 2.6.22-14-server
checking type of tty_struct.count...int
checking for presence of udev...present (kernel version 2.6.13 or later)
detecting your modem...found. Your modem is a cm8738 type modem.
compilation done
installation done
modem activated
Demasiado bueno para ser verdad esas palabras de modem activado fueron como música para mis oidos. Me dije a mi mismo:
Yo: Mi mismo ¿lo probamos?.
Mimismo: Si pero ¿con que? ¿de casualidad te acuerdas cual era el programa que usabas para conectarte a internet por modem con el Mandrake?
Yo: Como que era el kppp.
Después procedí a instalarlo, como siempre de desperado.
$sudo apt-get install kppp
Terminando la instalación lo ejecuté.
$kppp
Y me salió una hermosa pantalla en donde se encontraba en la parte inferior un botoncito que me insistía configurar mi conexión (no se cual). Que le pico al botón y que me aparece otra con 3 pestañas, la que me interesaba era la que rezaba Modems en su etiqueta.
Entré y luego luego ubiqué el botón de Query al Modem ni tardo ni perezoso que le doy y no me arrojó ningún error. Viendo que todo iba bien me fuí al siguiente botón “Terminal” y al abrirla vi el glorioso comando ATZ y de respuesta OK.
Ahora que es lo que sigue. Pues no se tal vez, no se. No se me ocurré. Probablemente lo use para enviar fax, de contestador, o lo que sea pero menos conectarme a internet, jejejeje.
jueves, 2 de agosto de 2007
Puerto Paralelo desde la shell de linux
outb
inb
Hay que animarse a probar, ¿que es lo peor que puede pasar?.
Para probar con leds se puede emplear el CI ULN2803 que es un arreglo de 8 NPN transistores con la configuración Darlington.
miércoles, 1 de agosto de 2007
Puerto Paralelo con Freepascal en Linux
program pp;
uses oldlinux;
begin
ioperm(888,3,1); {Para dar permisos al puerto}
WritePortB(888,0); {Para escribir en el puerto}
ReadPortB(888); {Para leer el puerto o el estado del puerto}
Writeln(ReadPortB(888));
ioperm(888,3,0); {Quitamos los permisos al puerto}
end.
El numero 888 corresponde al 0x378 que es el registro de datos del puerto paralelo, enseguida tenemos los registro de estado y de control.

Con lo cual podemos hacer lo que deseemos sobre el puerto. Como manejar una carga o varias como se muestra en la siguiente figura.




