El problema del verano es que te deja mucho tiempo libre y uno elucubrando todos los días, al final termina pensando el por que no recuperar alguno de los viejos proyectos, que además estén igualmente enfocados con la empresa y así de camino tienes una excusa para frikear y trastear… pero desde un punto de vista educativo y aplicable, claro
Ahí me tenéis en pleno agosto con las muchachas en el agua, terminando la puesta apunto de la máquina arcade, sudando la gota gorda lijando y pintando al solano, pero para os voy a engañar estaba disfrutando cada segundo, jejej. Bien pues una vez terminé y reparé un par de problemas que me dio el monitor me puse manos a la obra con la recuperación del proyecto AGES (archivo de marcianitos), que básicamente se trata de conseguir una live/instalador de Ubuntu/Natty enfocado exclusivamente para máquinas arcade con monitores originales de tuvo CRT.
A.G.E.S Live
Los problemas principales, los de siempre: tener que hackear el kernel y además buscar la manera de que las xorg emitan a 15khz. Por suerte otro muchacho ya avanzó bastante en este sentido: groovymame permite tener nuestra maka con linux en 5 minutos funcionando con samba, ssh, las x y un bonito menu de roms…
¿El problema?
Que por debajo de todo eso hay una Gentoo y a uno que viene de las santas tierras debianitas, claro, que menos que usar ubuntu ;D
Ya metido en el ajo he tenido bastantes problemas en conseguir que el driver de la ArcadeVGA (AGP) funcionara igual de bien que antiguamente lo hacía solo con el framebuffer de la consola y svgalib. Pero tras mucho pelear con [KMS] kernels panic y gdbs (XD) he conseguido resoluciones de por ejemplo 256×244 (del wonder boy) modificando xserver y el driver radeon (se supone que las X sólo permiten resoluciones menores de hasta 320×200) y que además funcionan no sólo mejor sino aceleradas con OpenGL!!! fuck yeah!
Wonder Boy (MAME)
Una vez os he puesto en antecedentes comentar que ya tengo una pequeña ubuntu-minimal funcional con los paquetes que se necesitan, xorg base, python y poco más. Estoy muy contento con ella y sólo me falta preparar el repositorio y subir todos los parches para que cualquiera se la pueda montar como quiera
Pretendo grabar un video en estos días para mostrarlo, por que es un lujazo como funciona, han sido un par de semanas de curro con nocturnidad pero han valido la pena, el vídeo va fíno y las xorg se comportan mucho mejor que cuando usaba consola.
Un Saludo y ya para la siguiente entrada os traigo paquetes, parches y vídeo, a ver si algún otro marciano se aníma a montar su maka con linux
Tengo pendiente una públicación sobre alguno de los juegos de mesa con los que nos viciamos en semana santa, pero mientras tanto os dejo un vídeo más que interesante para los usuarios de iphone/ipod touch que usen ubuntu, el soporte final para sus dispositivos es un hecho
El vídeo pone los dientes largos, se puede ver el proceso de navegación dentro del dispositivo, exportar/importar fotos, música. Incluso permite instalar aplicaciones (de momento solo en consola, pero hacer un programita que lo haga gráficamente tampoco sería muy complicado), capturar el log del dispositivo para el desarrollo de programas… Para lo único que necesitarías por tanto itunes sería para actualizarlo, todo un logro la verdad.
Después del mal sabor de boca que me dejó la última versión, que provocó mi vuelta a Debian, tengo claro que pasaré a Lucid, pero esperaré unas semanas al menos para quitarme algún bug de última hora. Asi que a mediados de mayo ya podré contaros como me va
Un colega por gtalk me dijo que por que no ponía emuladores y la verdad no se como no caí yo, estoy haciéndome viejo XD
Dicho y hecho esta semana he empezado a trastear con emuladores, la verdad que jugar a la Super Nintendo o la Megadrive a 1080p es un poco sacrílego, pero lo estoy apañando bien, la única pega es el control. La verdad no quiero comprar más mandos, entre Wii, 360, y PS2 tengo lleno el cajón, por tanto el objetivo es aprovechar lo que tengo y si puede ser que se pueda jugar tirao en el sofá, mejor
Una opción es usar los mandos de Wii con un USB BT que tengo, que ya probé en su día en Ubuntu y sin problema, pero me faltan botones y añadir el classic lo complica demasiado. El mando de PS2 al ser con cable ni me lo planteo. Y por último tengo los inalámbricos de 360 que con comprar el Xbox 360 – Wireless Gaming Receiver (link eliminado?) por menos de 20? a algún chino de ebay tenemos la mejor solución. Asi aprovecho mis dos mandos y que mandos señores
Tenemos dos opciones para poder jugar en linux con los mandos de 360, una usar una modificación del driver del kernel xpad, que añade soporte experimental: Tienen algún fallo menor, como que no se apagan solos o que la luz del mando se queda parpadeando, pero funcionan botones, guitarras, volantes, etc…
Más información sobre la opción kernel:
La otra opción es usar un driver en espacio de usuario (Userspace) y por tanto no requiere ser compilado cada vez que actualicemos el kernel. Yo he optado por este, que además es mucho más estable y posee más funciones que el del kernel.
Mas información sobre la opción userspace:
Un Saludo y podré algún vídeo cuando lo tenga todo funcionando ^_^
Retomamos un poco el hilo del XBMC Servidor, uno de los inconvenientes que he tenido al querer usar la misma máquina tanto de servidor como de reproductor ha sido que XBMC aunque no lo uses está ahí y gastando un 12% de CPU (tengo un skin muy bonito XD). Por tanto, nos consume luz y proceso que podríamos aprovechar o ahorrar.
Mi idea es apagar XBMC automaticamente sino se usa, pero poder iniciarlo de nuevo pulsando el mando a distancia.
¡Vamos al tajo!
Lo primero que pensé fué aprovechar lirc y que mejor que montarlo rápidamente con un pequeño demonio hecho en python (thx pyLirc). Dicho y hecho aqui os dejo el demonio:
#!/usr/bin/python
# pyServiceHandleXBMC - Almost taken from pyLirc Doc
# and modded by D_Skywalk
# version 110210 (1.a)
import pylirc, time, os
blocking = 0;
#
if(pylirc.init("pylirc", "/usr/local/etc/lircrc.ServiceHandleXBMC", blocking)):
print "pyService XBMC using Lirc is Waiting..."
code = {"config" : ""}
while(code["config"] != "quit"):
if(not blocking):
time.sleep(1)
# Read next code
s = pylirc.nextcode(1)
while(s):
# Print all the configs...
for (code) in s:
print "Command: %s, Repeat: %d" % (code["config"], code["repeat"])
if(code["config"] == "run"):
# Read last code
s = pylirc.nextcode(1)
pylirc.exit()
os.execl("/usr/local/bin/runXBMCservice", "")
# Read next code?
if(not blocking):
s = pylirc.nextcode(1)
else:
s = []
# Clean up lirc
pylirc.exit()
El código es básicamente el ejemplo del uso de lirc con python, añadiendo la llamada al pequeño script en bash que lo único que hace es ejecutar “service xbmc-live start”
¿por que no lo hice directamente de ahí? por que python me protestaba… mejor no preguntar XD
Para usarlo vais a necesitar un fichero lircrc, algo asi (adaptarlo a vuestro mando si no es el de XBOX)
begin
prog = pylirc
button = 5
config = quit
end
begin
prog = pylirc
button = DISPLAY
config = run
end
Podéis usar o añadir los botones que teneis en /etc/lirc/… tengo puesto que con 5 cierra el demonio para depurar y tal me venia bien, sino lo necesitais con borrar ese boton lo tenéis
Para arrancar el demonio al cerrar XBMC añadid la llamada a /usr/bin/runXBMC en:
...
if [ -e /tmp/noRestartXBMC ] ; then
screen -A -m -d -S xbmcREMOTE /usr/local/bin/pyServiceLircHandleXBMC #linea a añadir
rm /tmp/noRestartXBMC
...
Uso screen para mandarlo a segundo plano y tener mejor control del proceso, pero sino queréis usarlo supongo que podreis usar también nohup y demás…
Finalmente y sin cerrar este fichero debéis quitar el argumento –standalone de la llamada a xbmc, para que os permita cerrar XBMC sin apagar todo el sistema.
Bien, no se si entre el público habrá algún día otro pijo-linuxero con el mismo problema, pero quizás lo más importante de este envio es la facilidad de crear un programa a tu medida con python en un par de ratos y sin dolores de cabeza, que lujo de lenguaje a ver si me lo empollo un poquito más