Category: Hacks

In bed with flu, you get some real quality time with your computer

by jci Email

Lo bueno de estar con gripa es que tienes un monton de tiempo para intentar no aburrirte (si es que la vida de uno ya es enteramente aburrida, como la mia). Claro que los antigripales y las mezclas con vitaminas hacen que uno este triplemente activo de noche, a no ser de mandarse unas cuantas pseudoefedrinas o algun antiestaminico. Pero bueh, no les voy a andar enseñando a hacer pebre su higado, sino a hacer pebre su computador.

Esta vez, la pelea mas rotunda : Jackd y Pulseaudio.

Por la cresta. Desde hace un tiempo que la inclusion de Pulseaudio ha sido en parte beneficiosa para GNOME (lease : Ubuntu Jaunty), pero no para mi caso puntual : no hay aplicaciones basadas en Pulseaudio que sirvan para grabar audio de calidad (como Ardour, ya que es Jack-dependiente). Como siempre, termino comprando cosas que no necesito y algunas que llegan de regalo. Como una mezcladora nueva que venia con una tarjeta de sonido USB Behringer:

jci@zaphod:~/Copied$ lsusb
Bus 001 Device 002: ID 152d:2339 JMicron Technology Corp. / JMicron USA Technology Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 002: ID 0a5c:2039 Broadcom Corp. Bluetooth Device
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 010: ID 413c:2003 Dell Computer Corp. Keyboard
Bus 004 Device 009: ID 045e:00b9 Microsoft Corp. Wireless Optical Mouse 3.0
Bus 004 Device 008: ID 03eb:0902 Atmel Corp.
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 002: ID 08bb:2902 Texas Instruments Japan
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

(Que hace un Mouse Microsoft? Fue un regalo. Y diablos que ha servido.)

El unico problema es Linux. Las fundaciones de Audio son realmente mal hechas. OSS (que a sorpresa de muchos, se sigue usando para aplicaciones Legacy, como Skype :B ), ALSA (que ya es un parto, pero no voy a seguir hablando mal de el por que hay muchos sitios que lo descueran), ESD (estaba bueno que reemplazaran a este) y Pulseaudio. Ademas que existe Jackd que de hecho lo mostre en el ultimo Encuentro Lainuc en Concepcion. Las autoconexiones y otras cosas que lo hacen un lugar bonito para vivir.

Pero no! Pulseaudio se niega a dejar el bote:

jci@zaphod:~$ killall pulseaudio
(varios segundos despues)
jci@zaphod:~$ sh jackdrc
(challa)
jci@zaphod:~$ killall jackd
jci@zaphod:~$ ps afux | grep pulse
jci 4754 0.0 0.0 4784 536 ? Ss Jun16 0:00 \_ /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-session /usr/bin/pulse-session /usr/bin/seahorse-agent --execute x-session-manager
jci 4760 0.0 0.0 3144 652 ? S Jun16 0:00 /usr/bin/dbus-launch --exit-with-session /usr/bin/pulse-session /usr/bin/seahorse-agent --execute x-session-manager
jci 31884 0.0 0.0 3336 792 pts/4 S+ 19:39 0:00 | \_ grep pulse

Asi ad infinitum. Pulseaudio se niega a irse a pique y la que lo vino a parir.

Hay un monton de soluciones (como desinstalar Pulseaudio), aunque encontre una manera ENTRETENIDA de arreglar todo esto.

  • Desinstalar Pulseaudio! JA! :B
  • Decirle a Pulseaudio que sea un buen ciudadano y que respete a las aplicaciones. Y se eche en el rincon hasta cuando se le llame.

    Editar /etc/pulse/client.conf y cambiar la linea
    autospawn = yes
    por
    autospawn = no

    Y darle a un reinicio al servicio Pulseaudio. Se aconseja salir de la sesion, aunque tambien un reboot lo vale.

    Luego, crear un archivo ~/.pulse/jackd.pa con lo siguiente:
    load-module module-jack-source
    load-module module-jack-sink

    Despues de cargar jack:

    jci@zaphod:~$ /usr/bin/jackd -p128 -dalsa -dhw:1,0 -r48000 -p2048 -n4 -Xseq

    Iniciar Pulseaudio con lo siguiente:

    killall pulseaudio
    pulseaudio -DnF ~/.pulse/jackd.pa

    Y que creen? Hasta puede usarse el multiple output!

Pulseaudio y Jackd vuelven a ser los compañeros aperrados que uno siempre quiso tener en su computador.

NOTA : cuando deshabiliten el modo de autospawn, pulseaudio va a subir siempre y cuando haya una aplicacion Pulseaudio-aware (como Totem). En este caso, intentara incluso llamar a Jackd al iniciar:

jci@zaphod:~$ totem test1.wav.mp3
Cannot connect to server socket err = No such file or directory
Cannot connect to server socket
jack server is not running or cannot be started
no message buffer overruns

Los grises y chaparritos son los de temer.

The pityful relationship of a man and his ipod

by jci Email

Hace un tiempo atras, debido a que necesitaba viajar por mas de 10 horas, decidi comprar a lo que en mi parecer era el reproductor de musica con mejor endurance y almacenamiento : iPod classic 160Gb. A pesar que ahora el modelo esta descontinuado, puedo decir que lo hicieron muy bien con este chiche. Tiene un agresivo sistema de conservacion de energia (duraba 40 horas tocando musica) pero ese mismo sistema agresivo podria tener consecuencias en un futuro.

Y paso.

iPod

Desde hace algunos dias, sincronizar en el ipod era un caos. iTunes (!) se quedaba pensando y pensando y pensando. Sumenle que el disco hacia algunos ruiditos medio funny, asi que pense que ya despues de un año, esta cosa iba a dejar de existir :(

Lo mejor de todo es que una vez terminada la sincronia, se rebooteaba! Now that's bitching!

Ayer por la noche, lo deje leyendo los 160gb en modo dd (si, esta vez en Linux) y por supuesto, en algunas ocasiones empezo a escupir basura (I/O errors). A comprar un par de cervezas por que esto iba a dar para largo (y me emborrache accidentalmente, creo que debo comer antes de lanzarme a estas proezas).

Parti por supuesto en querer saber el status del disco. Smartctl:

root@arthur:/home/jci/Build# smartctl --all /dev/sdc
smartctl version 5.38 [i686-pc-linux-gnu] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

Device: Apple iPod Version: 1.62
Serial number: 8K7482/////
Device type: disk
Local Time is: Thu Jan 29 02:55:20 2009 CLST
Device supports SMART and is Enabled
Temperature Warning Disabled or Not Supported
SMART Health Status: OK

Error Counter logging not supported
Device does not support Self Test logging
root@arthur:/home/jci/Build#

OK? Bueh, al menos SE que el status de SMART diria algo si es que el disco estuviera con pifias.

Probemos algo arriesgado : Disk Mode.

Solo para valientes. Warning : este procedimiento podria da&ntilda;ar el ipod yadda yadda no soy responsable por cualquier fail que ocurra.

Rebootear primero (Click + Menu) y esperar al logo de Mapple. De ahi, Click + Play. Y se ira al coqueto Disk Mode. No hay ninguna diferencia con respecto a colocar el ipod en Disk Mode usando iTunes. Pero se ve cool e impresiona :D

IMG_1328

De ahi, por supuesto, formatearlo o vandalizarlo. Debe quedar en PWNZ absoluto. Ojala con un par de veces. Si, recomiendo shred o dd if=/dev/random para eso.

Y lo mas seguro es que el bicharraco no quiera arrancar (de hecho, no lo hara).

Luego, darle un mkfs.vfat y estariamos daos. Luego, por supuesto, una visita a iTunes y que detecte que el bicho esta en PWN. Restaurar firmware.

Despues de realizar un par de intentos y ver que efectivamente podia repetir el experimento de que se quedara colgado, decidi dentrar a picar mas fino.

Mi "humirde" colersion de MP3ces contiene algunos archivos donde la caratula del disco esta DENTRO del archivo mp3 en cuestion. A eso sumale unos 400 megas como minimo de iTunes artwork... Vi que justamente dos archivos hacen que el iPod se vaya a hard reset, al intentar leerlos y agregar el artwork al iPod hacen que iTunes comience a comer memoria. Hm. Deberia reportarlo a Mapple?

No me quedo otra que cepillarme todo el artwork de los discos. Ni lo necesitaba tampoco...

Apdeit : No dormi nada anoche, y me di cuenta que Rhythmbox YA maneja pulentamente el iPod. Igual gtkpod (sin crashes). iTunes? Es un gran fail :D

Did I said that out loud?

by jci Email

En la segunda parte de como vandalizar el arranque, ahora me fui a la parte mas cochina : Kernel.

No miento, la ultima vez que compile un kernel debio haber sido, quizas 2003? Ahora, volver a las andanzas y tener que recordar las instrucciones, leyendo el readme :B

$ sudo apt-get install linux-source

Lo unico malo, Ubuntu distribuye un kernel "casi vanilla" mas su coleccion de parches (como GFS, que no se para que sirve, pero igual). Lidiar con la configuracion del .config....

Al carajo, hagamos trampa.

Buscando en la interneces, en el wiki de msiwind.net, encontre un .config minimalista para el bicharraco. Y su correspondiente .config. Nota : solo es funcional para los que tengan un MSI Wind, U100X o U100H. La diferencia, Bluetooth. Yo tengo el que NO tiene bluetooth :'(

Primer intento : (sin usar el .config minimalista) : Kernel Panic.
Segundo, tercer y cuarto : igual.

Cuando me di cuenta que no estaba cargando el modulo de ide_generic (un error MUY comun, generalmente le dejo esa pega al initrd), pense en ocupar el .config.

Quinto intento : tiempo de arranque antes del init : 35 segundos (!!!).
Sexto intento (despues de casi 1 hora) : 10 segundos.

La diferencia esta en algo fundamental : al tener los modulos empotrados en el kernel de arranque, los dispositivos van a funcionar si o si. Pero como udev, en los intentos anteriores tomaba mucho rato, mejor no darle en que pensar, y meter todos los puñeteros modulos directo en el kernel.

Despues de un rato, sacar lo innecesario y volver a intentar. Esta vez, for great justice.

Despues de regocijarme con el arranque completo de la maquina, por una rara razon, pensaba que estaba llegando al tiempo ideal, cuando la realidad me atropello como quien atropella un chicle en la carretera.

Analizando la jugada completa

Era evidente que el tiempo de carga se me estaba yendo en dos procesos : gnome-panel y nautilus.

Asi que los siguientes tests, usar twm e intentar nuevamente el experimento.

$ sudo apt-get install twm

Por supuesto, dejar que mi gestor de escritorio fuera xterm. Nota : HACK DA~INO:

$ echo "xterm" > ~/.xinitrc
$ echo "xterm" > ~/.xsessionrc

No se cual de los dos habra funcionado en realidad.

BEHOLD!

intrepid-20081118-17

Bash es ejecutado por xterm en el segundo 31 despues de iniciar el computador. Mientras que revisar el arranque con GNOME completo tomaria 30 segundos adicionales para partir.

Estoy tentado en partir con un $HOME nuevo. Bueh, en casi todo sentido en la vida.

Hare la prueba en un par de horas. Por ahora, la marca de los 35 segundos fue rota!

If the password wasn't 'bye bye birdie', then why the bomb exploded, dude?

by jci Email

Boot time hack extravaganza time!

Con Franco , entre chiste y conversacion, comenzamos a hacer modificaciones sobre el arranque en un MSI Wind (arthur). Logramos pasar de unos insufribles 120s a 40s. En una tarde.

Use Ubuntu 8.10. Usable en casi todas las distros Debian based.

GUARNIN : Desde aqui estan en las suyas. Si deciden hacer los cochinos trucos que con Franco logramos cocinar, es problema de cada uno. Si la maquina les quedo en estado de PWN, o no arranca o que se yo, ya saben.

Bueh, terminando el disclaimer, manos a la obra!

Antes de partir, recordar : la mayoria de los arranques NO tuvieron autologin. Pero creo que el primer grafico ya lo habia implementado.

  1. Viendo que anda mal en el arranque

    Para entender que anda lento, mal o insufrible, instalar bootchart y mirar los graficos del arranque.

    Este era arthur, ayer.

    Indecente tiempo de arranque - Arthur

    OHMAIGASH. Insufrible, no?

    Read more »

What's going on inside of this thing

by jci Email

Quick blogging stravanganza!

  • Ultimamente he estado escuchando y viendo programas en linea y podcasts. Sumenle algunos documentales del History Channel en la Intertube, durante los dias de trabajo. Que mejor que meter basura en el cerebro mientras intento elucubrar soluciones :D

    Mi recomendado : Systm, un programa para quienes gusten del DIY : refrigeracion de PC, destilar alcohol (!!!), hackear un cable de iPod, entre otras cosas.

    Go subscribe for great justice!

  • Junto con Franco, hemos estado haciendo algunos ajustes al arranque de Intrepid para lograr el soñado tiempo de menos de 30s en el MSI Wind. Debo decir que mis hacks experimentales solo han agregado preciosos segundos al arranque.

    Encontramos que hay dos procesos que estan tomando demasiado tiempo (via bootchart):

    • Readahead
    • udevd

    Hasta el momento, ningun workaround. Pero deshabilitando la swap en el arranque (vm.swappiness = 0) ha resultado. Y rehabilitarlo despues en /etc/rc.local :-D

    Cambie un booteo de casi 52s a 36.5s sacando servicios y jugando con readahead. Pero aun no bajo de los 35s.

  • Los que supieron que me enferme en el Encuentro Linux, el pre-diagnostico es COLON IRRITABLE DO NOT WANT. Al momento de hacerme una ecotomografia abdominal, vieron que mi colon esta hecho una miseria.

    Nota : hacerme una revision abdominal no solo requirio mas litros de gel conductor de lo normal, sino tambien una pantalla mas grande :(

    El diagnostico le incluye una reduccion significativa en el consumo de comida especiada, alcohol :( y otras miserias que hacen la vida un lugar mejor donde vivir.

    Y no he tomado cafe en dias :(:(

One goddamn keyboard and one goddamn mouse for a goddamn Samuel L. Jackson

by jci Email

Hace un tiempo me contaron acerca de el, pero no lo tome en cuenta hasta que tuve el tipico problema de tener mas de 2 displays, en distintas plataformas (Win, Lin, Lin) y querer usar una solucion bizarra para ocuparlas todas (como VNC combinado, Xdmcp con esteroides y otras que ni se me ocurren).

Encontre Synergy, una cosa que es reviejona, pero super super practica. Un solo mouse, un solo teclado, pero el maus compartido entre varios displays. Lo mejor? Multiplataforma!

La idea de Synergy es la siguiente :
- Un servidor
- Varios clientes

El servidor tiene que definir las "pantallas" o screens, ya que clientes no autorizados no deberian ser parte de la cadena. Los clientes deben definir donde sigue la pantalla : hacia que display se sigue hacia la izquierda y hacia la derecha.

Los valientes en Ubuntu/Debian:

$ sudo apt-get install synergy

Este es mi .synergy.conf:

section: screens
       zaphod:
       marvin:
       arthur:
end

section: links
       zaphod:
              left = marvin
              right = arthur

       marvin:
              right = zaphod
              left = arthur

       arthur:
              left = zaphod
              right = marvin
end

Arthur : MSI, Marvin: Dell 17", Zaphod : Desktop.

Es cosa de echar a correr el cliente en la maquina servidor (en mi caso, Zaphod):

$ synergys -f

Y conectar los clientes.

Facil. Rapido. Y practico.

(Claro que tengo un problema con solo 2 displays : moviendo el mouse hacia la izquierda estoy rotando eternamente entre los displays...)

1 2 3 >>