Archive for the 'software libre' Category

Nethack

Hablando de cambios tuve una vuelta a mi adolescencia tardía, me volví a instalar el Nethack. Ehh ya veo las noches en vela buscando el amuleto de Yendor.

|.!....
|.!i+..
+.).)..

If I were a NetHack monster, I would be a tengu. I'm always in the right place at the right time, and am quick to avoid people that I'd rather not be with.

Published in: psico, software libre | on September 1st, 2010 by Adrian | No Comments »

Feliz cumple Debian

Hoy mi distro favorita, Debian, cumple 17 años.

Published in: software libre | on August 16th, 2010 by Adrian | No Comments »

Squeezing code

clickety clickety...

:!make clean ; make
rm -f main.hex main.lst main.obj main.cof main.list main.map main.eep.hex main.bin *.o usbdrv/*.o main.s usbdrv/oddebug.s usbdrv/usbdrv.s
avr-gcc -Wall -Os -Iusbdrv -I. -mmcu=attiny2313  -c usbdrv/usbdrv.c -o usbdrv/usbdrv.o
avr-gcc -Wall -Os -Iusbdrv -I. -mmcu=attiny2313  -x assembler-with-cpp -c usbdrv/usbdrvasm.S -o usbdrv/usbdrvasm.o
avr-gcc -Wall -Os -Iusbdrv -I. -mmcu=attiny2313  -c usbdrv/oddebug.c -o usbdrv/oddebug.o
avr-gcc -Wall -Os -Iusbdrv -I. -mmcu=attiny2313  -c main.c -o main.o
avr-gcc -Wall -Os -Iusbdrv -I. -mmcu=attiny2313  -o main.bin usbdrv/usbdrv.o usbdrv/usbdrvasm.o usbdrv/oddebug.o main.o
rm -f main.hex main.eep.hex
avr-objcopy -j .text -j .data -O ihex main.bin main.hex
./checksize main.bin
ROM: 1992 bytes (data=4)
RAM: 61 bytes

...hack hack clickety clickety hack...

:!make clean ; make
[snip]
*** code size 2051 exceeds limit of 2048
RAM: 61 bytes
make: *** [main.hex] Error 1

argh... por tres f*ing bytes.

Published in: electronica, software libre | on August 13th, 2010 by Adrian | No Comments »

find xargs y nombres de archivos con espacios

find . criterio -print0 | xargs -0 comando
Published in: software libre | on July 27th, 2010 by Adrian | No Comments »

Terminando algo…

Ayer fue el día del Amigo, tenía pensado desde hace una semana mas o menos ir a ver a la Flower pero me levanté bajón y sintiéndome como para resfriarme así que me quedé en casa. Estaba en ese estado que me agarra seguido, me siento mal, bajón, desganado, y lo peor de todo es que casi nunca tengo un motivo real para estar así. Hice lo de siempre en esas situaciones, ordeno un poco, cocino y después me siento a tomar mate y leer. Leer de todo, como para distraerme y volar,  soñar, creer que otras vidas, otros logros son los míos (ni en pedo un apunte de la facultad...).

Por una de esas cosas volví a caer en el sitio de Paul Graham; cada vez  que lo visito leo y releo sus ensayos, encontrando algo nuevo, o resignificando las cosas que ya recordaba. Hay uno muy bueno sobre una charla de Hamming (el de los laboratorios Bell). Eso me hizo pensar en un par de cosas puntuales, sobre todo la forma en que estoy encarando mi vida académica y profesional. Así como algunas personas pueden caracterizarse, reconocerse, por sus logros, otras pueden definirse por las cosas inconclusas.

No hay necesidad de nombrar nombres pero últimamente estoy tendiendo a parecerme mucho mas de lo que quisiera (solo en ese aspecto) a cierta persona allegada, bien sea que mire mis repositorios o la estantería encuentro proyectos a medio terminar, otros ni siquiera empezados.

Entonces, aprovechando que no iba a salir decidí terminar algo, por más simple que sea. Terminé dos cosas a falta de una. O una y media siendo un poco mas crítico.

Una, preparé de una vez el repositorio git de alsa para hackear tranqui el driver del cm6206 y volví a mandar los parches (no me dieron bola, así que en un par de días pongo a medio mundo en cc a ver si logro un poquitín de atención).

Dos, retomé el flash anular (o ring flash) que había empezado a hacer con papel maché para sacar mejores fotos con el macro. Monté ocho de los dieciséis leds blancos, incluso con cuatro la iluminación es bastante pareja aunque la intensidad no es muy adecuada. Ahora estoy con fiaca, luego subo fotos del proceso, que lleva casi mes y medio de iniciado. Antes no lo había notado pero mientras hacía los agujeros para pasar los led me dí cuenta de lo resistente que se hizo la estructura en base a papel secante y adhesivo vinílico, es increíble lo robusto que quedó el reflector.

Published in: electronica, fotografia, hacks, psico, software libre | on July 21st, 2010 by Adrian | No Comments »

Nerdddd….

(suena la voz de Fercha cargándome, podría haber salido el sábado a despejarme un poquito pero me quedé hackeando un driver)

And now for something completely the same... A couple of weeks ago I bought a cheap 8-channel usb audio card based on the CM6206 because the one in my notebook was roast (ar$ 190, including shipping to my home). As expected it worked right out of the box, there were some rough edges, like missing control names and the headphone jack was silent,  but as I was running a somewhat old kernel (2.6.29) I didn't care.

On another box with a newer kernel, 2.6.32-something, it worked better; the headphone jack mirrored the front channel and also spdif was enabled. Even so, it was managed as a generic usb device (wich is great, it means no specialized drivers) but some useful features described in the datasheet were missing.

I decided to implement the easier ones first, mainly because even I hacked the kernel before this was my first time with alsa. With the datasheet in hand I coded a quick app with libusb to poke registers. After a couple of hours I had a userspace app to select the headphone source (it lets you choose wich channel the headphone jack mirrors). Then I got the latest stable kernel, 2.6.34 at that time, and jumped into the code. A week passed and I had it implemented as another control from alsa.

You are doing it wrong.

Feeling great I made a series of shiny patches to send upstream. Lurking thru alsa-dev I glanced other patches that affect the usb-audio portion and they looked... different. Cloned the main git repo and really, it was different. Back to square one, or two.

Spent yesterday's night merging the old changes at the new tree and got a working driver again. A couple of hours ago sent the patch to alsa-dev. This time I avoided the gmail interface because it really likes to mangle inline patches and used kmail; the bastard trimmed also everything to 80 columns. Still nobody complained but lets see how it is teared down this monday.

Sources and documentation:

http://tangopardo.com.ar/pub/src/cm6206_utils-0.0.0.tar.bz2

CM6206 datasheet: http://tangopardo.com.ar/pub/docs/CM6206+datasheet+1.7.pdf

Published in: hacks, software, software libre | on July 5th, 2010 by Adrian | No Comments »

Para qué hacerlo fácil…

huawei_e1756

huawei_e1756

Este es otro de los modem de Personal / Claro / Movistar; un Huawei E1756 en este caso. Normalmente estos bichitos aparecen como una unidad de almacenamiento con los drivers adentro para no llegar al dilema en Windows de necesitar conectarte a internet para bajar los drivers necesarios para conectarte a internet (obvio que si hubieran implementado bien las clases acm en primer lugar todo esto no sería necesario).

Con el que tenía antes no tuve que hacer ninguna magia loca, lo enchufé y el NetworkManager solito solito configuró todo; aparecía tanto como un modem comun y como un disco. Este aparece solo como un disco, o sea que hay que usar el usb_modeswitch para que cambie de funcionalidad. La última versión aún no lo tiene incorporado así que tuve que buscar un poco mas. En http://www.otubo.net/2009/12/vivo-3g-using-huawei-e1756-on-ubuntu.html ya lo resolvieron pero debo tener otra revisión del modem porque sigue sin cambiar de modo.

No pude hacer andar el usb en qemu (tampoco traté mucho) asi que ahora estoy atado a que me presten una compu con windows para sniffear como hace el driver para cambiarlo.

Published in: rants, software libre | on April 10th, 2010 by Adrian | No Comments »