Category Archives: Hardware

Compartiendo el teclado y el ratón en varios equipos con QuickSynergy

0
Filed under Hardware, Kubuntu 7.10 AMD64, Utilidades

A veces conecto el portátil en la red local, al lado del fijo. En estas ocasiones es muy útil Synergy, un programa multiplataforma que se instala en los equipos a controlar y permite controlar con el teclado y ratón de uno de ellos (el servidor o host) todos los demás equipos, como si fueran una sola máquina con varias pantallas. Además se comparte el texto copiado en el portapapeles, y las funcionalidades van en aumento. En Linux, el paquete synergy no incluye interfaz gráfica, pero esto se soluciona instalando desde los repositorios la GUI quicksynergy.

En mi caso, controlo el portátil (con Windows) con el teclado y ratón del ordenador de sobremesa (con Kubuntu).

Haciendo funcionar la tableta Wacom

1
Filed under Config. S.O., Gráficos, Hardware, Kubuntu 7.10 AMD64

Tengo una tableta digitalizadora antigua, una Wacom Graphire1 que se conecta al PC a través del puerto serie y el PS/2.

Logrando que funcione en Kubuntu

Gracias a esta página de The Linux Wacom Proyect me entero de lo que debo hacer. Edito como superusuario /etc/X11/xorg.conf y cambio

Section "InputDevice"
	Identifier	"stylus"
	Driver		"wacom"
	Option		"Device"	"/dev/input/wacom"
	Option		"Type"	"stylus"
	Option		"ForceDevice"	"ISDV4"# Tablet PC ONLY
EndSection

Section "InputDevice"
	Identifier	"eraser"
	Driver		"wacom"
	Option		"Device"	"/dev/input/wacom"
	Option		"Type"	"eraser"
	Option		"ForceDevice"	"ISDV4"# Tablet PC ONLY
EndSection

Section "InputDevice"
	Identifier	"cursor"
	Driver		"wacom"
	Option		"Device"	"/dev/input/wacom"
	Option		"Type"	"cursor"
	Option		"ForceDevice"	"ISDV4"# Tablet PC ONLY
EndSection

por esto:

Section "InputDevice"
	Identifier	"stylus"
	Driver		"wacom"
	Option		"Device"	"/dev/ttyS0"
	Option		"Type"	"stylus"
#	Option		"ForceDevice"	"ISDV4"# Tablet PC ONLY
EndSection

Section "InputDevice"
	Identifier	"eraser"
	Driver		"wacom"
	Option		"Device"	"/dev/ttyS0"
	Option		"Type"	"eraser"
#	Option		"ForceDevice"	"ISDV4"# Tablet PC ONLY
EndSection

Section "InputDevice"
	Identifier	"cursor"
	Driver		"wacom"
	Option		"Device"	"/dev/ttyS0"
	Option		"Type"	"cursor"
#	Option		"ForceDevice"	"ISDV4"# Tablet PC ONLY
EndSection

Nota: en una instalación limpia de Kubuntu 7.10 este archivo ha cambiado un poco. Para que la tableta funcione, además de lo anterior hay que ir al final del archivo (por la línea 91) y descomentar las entradas correspondientes para que queden así:

		InputDevice     "stylus"	"SendCoreEvents"
		InputDevice     "cursor"	"SendCoreEvents"
		InputDevice     "eraser"	"SendCoreEvents"

Reinicio el servidor X (pulsando Control+Alt+Backspace) ¡y todo funciona! Lo único que había que hacer era cambiar /dev/input/wacom por /dev/ttyS0 (lo primero, que viene por defecto, sirve para las tabletas USB, no para las antiguas por puerto serie), y comentar (o borrar) Option "ForceDevice" "ISDV4", que sirve únicamente para Tablet PCs.

Configurando GIMP e Inkscape

Para activar las posibilidades que ofrece la tableta en GIMP e Inkscape (como cambiar el tamaño de la brocha al variar la presión) sigo lo que se dice en esta entrada de la documentación de Ubuntu:

  • En GIMP: Archivo > Preferencias: Dispositivos de entrada: Configurar los dispositivos de entrada extendidos… y allí cambiar el Mode de “Disabled” a “Screen” (o “Window”) tanto para el Device “eraser” como para “cursor” y “stylus”.
  • En Inkscape: Archivo > Dispositivos de entrada…, activo los dispositivos igual que en GIMP.

Configurando los parámetros de la tableta

Tal como se dice en la documentación de Ubuntu, editando /etc/X11/xorg.conf se pueden configurar a nuestro gusto los parámetros de la tableta, como por ejemplo la curva de presión. La lista completa de parámetros está en la página de The Linux Wacom Project que mencioné al principio.

Existe un paquete, wacom-tools, que contiene algunas utilidades para la prueba y configuración de los parámetros de la tableta (wacdump, xidump y xsetwacom).

Dando soporte de joystick/mando a programas que no lo tienen

1
Filed under Config. S.O., Hardware, Juegos, Kubuntu 7.04 AMD64

Joy2key y QJoyPad son dos programas que remapean los botones del joystick/mando (pad de la MegaDrive en mi caso) a teclas del teclado para dar soporte de joystick a programas que no disponen de soporte nativo de estos dispositivos.

Joy2key

Joy2key es un programa que se ejecuta desde la terminal y está incluido en los repositorios de Kubuntu. Instalo desde los repositorios el paquete joy2key y leo su manual en /usr/share/doc/joy2key/README.gz.

Por defecto Joy2key busca el joystick en /dev/js0. Pero yo lo tengo en /dev/input/js0. Puedo escribir -dev /dev/input/js0 como argumento cada vez que ejecute joy2key, o crear un enlace simbólico en /dev/js0 que apunte a /dev/input/js0. Me decido a crear el enlace simbólico. En la terminal escribo: $ sudo ln -s /dev/input/js0 /dev/js0.

Funciona bien, pero al estar basado en la consola es engorroso de manejar.

QJoyPad

QJoyPad es un programa con interfaz gráfica que está en hiatus (vamos, abandonado) y que no está disponible en los repositorios de Kubuntu. En su web está disponible el código fuente y un paquete para Debian i386 (no para amd64). Lo he intentado instalar desde el código fuente, pero me da muchos problemas (la mayoría los he solucionado instalando los paquetes qt3-dev-tools y libqt3-headers (que tiene un porrón de dependencias), pero no he podido solucionar el siguiente error, que parece que está generado por un icono…:

usuario@servidor:~/Desktop/qjoypad-3.4.1/src$ make
g++ -c -pipe -Wall -W -O2 -D_REENTRANT  -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -I/usr/share/qt3/mkspecs/default -I. -I. -Itrayicon -I/usr/share/qt3/include -o axis_edit.o axis_edit.cpp
axis_edit.cpp: In constructor ‘AxisEdit::AxisEdit(Axis*)’:
axis_edit.cpp:8: error: ‘ICON24’ no se declaró en este ámbito
make: *** [axis_edit.o] Error 1

También he intentado instalar el paquete Debian i386, pero me da un error porque dice que necesita el paquete libqt3x102-mt. Leyendo por ahí veo que ese paquete ha sido reemplazado por libqt3-mt, que ya tengo instalado. Ejecuto desde la terminal $ sudo dpkg -i qjoypad_3.4-1_i386.deb --force-depends, con lo que se instala, aunque me da un error :(

Así que sigo buscando en Internet…

QJoyPad para 64 bits

¡Aleluya! Olvidemos todo lo anterior. En la segunda página de este hilo de Ubuntu Forums, concretamente en este mensaje, el forero chrism66 ha subido un .deb para 64 bits que ha encontrado por ahí (es una conversión de un .rpm de 64 bits mediante alien). A lo mejor está sacado de uno de estos paquetes, no lo sé. Como es difícil de encontrar y hay que registrarse en el foro para descargarlo, lo he subido aquí.

Se instala sin problemas. Al lanzarlo se sitúa en la barra de tareas, y al pulsar sobre él se abre una ventana en la que se pueden remapear los botones del joystick y guardar estas combinaciones en un perfil propio. Pero tengo un problema, y es que a veces, al asignar las teclas, decide por su cuenta borrar todas estas asignaciones… :( Es una gran putada… Por ejemplo, el Botón 1 (botón A del pad de la MegaDrive) lo quiero asignar a la letra X, ¡y no se deja! Para salir de este atolladero puedo crear manualmente el archivo con las asignaciones botón-tecla que quiero. Los perfiles se guardan en /home/guille/.qjoypad3/. Por ejemplo, mi perfil para Snes9express está en el archivo Snes9express.lyt y su contenido es:

# QJoyPad 3.4 Layout File

Joystick 1 {
	Axis 1: +key 102, -key 100
	Axis 2: +key 104, -key 98
	Button 1: key 53
	Button 2: key 54
	Button 3: key 40
	Button 4: key 39
}

No sé las asignaciones tecla = “key XX”. Voy probando, aunque no son demasiado complicadas:

A = key 38
S = key 39
D = key 40

Z = key 52
X = key 53
C = key 54

Una limitación de QJoyPad es que no permite asignar combinaciones de teclas, sólo teclas simples. Pero es un buen programa y es el que estoy usando para pasarme el The Legend of Zelda: a Link to the Past usando el pad de la MegaDrive y el emulador Snes9express, o para controlar el reproductor VLC (gracias a que permite alternar perfiles fácilmente).

Pad de la MegaDrive en Linux (y ya que estamos, en Windows)

7
Filed under Config. S.O., Hardware, Juegos, Kubuntu 7.04 AMD64

Hay que ver lo importante que es tener una buena documentación. Me ha costado bastante encontrar la forma de hacer funcionar el mando de la MegaDrive (o SEGA Genesis en América) bajo Linux. Al final resulta que sólo necesito dar dos pasos: crear un sencillo adaptador pad-puerto paralelo y cargar un driver. No hay que instalar nada porque el driver ya está incluido en el Kernel de Linux. Es lo que pasa con Linux: que hace un montón de cosas, pero no se explica bien: en Internet he encontrado documentación técnica para programadores y, tras mucho buscar, respuestas en foros de casos parecidos (gente que quiere conectar mandos de la SNES o de la PSX) que me han ido allanando el camino. Si Linux tuviera un manual a nivel de usuario con todas sus posibilidades explicadas para el usuario final, la experiencia del usuario mejoraría un montón.

Hardware: creando el adaptador

Para usar el mando de la MegaDrive en Linux hay que crear un adaptador en el que se conecte el pad de la consola (a través de un conector DB9 macho) y que se enchufe al ordenador a través del puerto de impresora (el puerto paralelo. Se necesita pues un conector DB25 macho) de la siguiente manera (todos los conectores tienen sus pines numerados en un orden estandarizado):

DB9 macho___DB25 macho
1___2
2___3
3___4
4___5
5___1
6___6
7___14
8___18
9___7

Por lo tanto, para construir este adaptador (que llamaremos “interfaz Linux”) no se necesita ningún diodo, resistencia ni hacer ningún puente: es una “redirección de pines” sin más. Incluso es posible hacerla sin tener que soldar nada, si se compra un DB9 macho y un DB25 macho universal que en su parte trasera en lugar de cable tienen un conector para RJ-45 (el de los cables de red normales y corrientes). Así, usando un cable de red normal (no cruzado y con cabezas RJ-45) podemos conectar el DB9 macho con el DB25 macho. Y como estos conectores, en su interior, se conectan “pinchándolos“, por un mecanismo de presión, no es necesario soldar nada. Menudo despiste, con este método sólo se podrían hacer 8 de las 9 conexiones requeridas…

Una limitación de esta interfaz Linux es que únicamente permite conectar un pad al ordenador.

Software: cargando el driver

Para que Linux reconozca el joystick en la sesión actual, escribo en la terminal:

$ sudo modprobe -r lp
$ sudo modprobe db9 dev=0,3

La primera línea deshabilita la impresión en el puerto paralelo, y la segunda carga el driver db9 con los parámetros 0,3, que significan que en el puerto LPT0 (los ordenadores normales no tienen más de uno, por lo que el primero, el 0, es el habitual) se va a conectar la interfaz del mando de la MegaDrive de 3 botones +1 (el botón Start). Para mandos de 5+1 botones (creo que nunca he visto uno de estos…) habría que poner dev=0,5, y para mandos 6+1 lo correcto sería dev=0,6.

Si ahora me voy a Menu K > Configuración del sistema: Teclado y ratón > Joystick se detecta el pad como un dispositivo “Genesis pad (/dev/input/js0)“, y se puede probar para ver que todos los botones funcionan correctamente.

Pero este ajuste habría que hacerlo cada vez que se inicia Kubuntu. Para que Linux reconozca el mando automáticamente en cada inicio, edito como superusuario /etc/modules comentando el módulo lp y añadiendo en una nueva línea “db9 dev=0,3“:

#lp
db9 dev=0,3

Cómo lo hice funcionar en Windows

Aunque este es mi blog sobre Kubuntu, puede que alguien con Windows llegue hasta aquí. Además, así me sirve para contar mi batallita con las interfaces del pad, porque la interfaz Linux es la tercera que hago…

Hace unos años logré que el mando de mi querida MegaDrive funcionara en Windows. Creé una interfaz (la llamaré “interfaz NTPad XP”) siguiendo este esquema. Bueno, en realidad en un primer momento seguí estas instrucciones de Emulatronia y luego tuve que rehacerla como el esquema de la interfaz NTPad XP, porque no funcionaba con mi puerto paralelo (de impresora) moderno. Al principio probé a usar los drivers NTPad XP, pero es un proyecto abandonado hace mucho, así que, al final, en mi Windows XP logré hacer funcionar mi pad gracias a PPJoy, con la interfaz NTPad XP (hay otras posibles, y de ellas la interfaz Linux es la más sencilla de hacer si sólo se va a conectar un pad al ordenador. La documentación de las interfaces soportadas –para todo tipo de mandos– es MUY completa. De hecho, fue allí donde entendí/encontré la interfaz Linux. Se pueden ver desde la web de PPJoy en Supported interfaces).

Enlaces

Controlador MIDI en Linux

1
Filed under Audio, Hardware, Kubuntu 7.04 AMD64

Para lograr que funcione un controlador MIDI (teclado) en Kubuntu, hay que instalar dos paquetes:

  • QjackCtl
    Es una GUI (interfaz gráfica) de JACK Audio Connection Kit, un servidor de sonido (audio server queda más bonito) que sirve para interconectar –vía software– las salidas y entradas de todos dispositivos de audio del equipo.
  • Qsynth
    Es una GUI de FluidSynth, un sintetizador libre. Transforma las señales MIDI en sonido, creándolo a partir de un banco de sonidos. En esta entrada del blog del Proyecto OpenPipe lo explican todo muy clarito.

Una vez instalados estos paquetes (con sus respectivas dependencias) vía Adept, he seguido las instrucciones de instalación de QSynth, abriendo la consola y escribiendo:

$ qsynth -a alsa

Se supone que esto inicia jackd (el demonio –proceso– de JACK) para ALSA al arrancar el programa, y que esta orden se mantiene en futuros inicios, por lo que no es necesario repetirla. No estoy seguro de que este ajuste sea necesario, porque para algo he instalado QjackCtl (estará abierto siempre que vaya a usar Qsynth). Pero bueno, lo dejo escrito por si acaso…

Los dos programas se encuentran en Menú K > Multimedia > JACK Control y QSynth.

Abro ambos, y en JACK Control pulso en Connect, en la pestaña ALSA, y conecto K61 a FLUID Synth (Si Qsynth no estuviera abierto no saldría FLUID Synth). Con esto envío las señales MIDI del controlador al sintetizador. Si ahora pulso el botón Patchbay de JACK Conect, puedo guardar este ajuste en un archivo xml externo, para poder importarlo fácilmente. Ah, y no me olvido de iniciar el JACK Audio Connection Kit pulsando en Start.

En Qsynth, si pulso una tecla cualquiera del controlador, debería encenderse un LED virtual (el de la izquierda de la pestaña Qsynth1). Pero no se oirá nada, ya que para ello necesito algún banco de sonido (soundfonts). En este artículo de la Wikipedia enlazan a algunas webs de bancos de sonido, y he leído comentarios que dicen que en cualquier red P2P hay miles de ellos, ocupando gigas y gigas… Por ahora he visitado SoundFonts.it y HomeMusician.net, que tienen muchos archivos en descarga directa.

Qsynth admite bancos de sonido en formato .sf2, un estándar de facto creado por Emu Systems para Creative Labs. El caso es que los bancos de sonido no suelen encontrarse en .sf2, si no que suelen venir comprimidos en un formato específico y propietario, .sfArk o .SFPack.

  • Para descomprimir .sfArk: ir a la página de MelodyMachine y descargarse e instalar la versión para Windows, a través de Wine (la versión para Linux no es de 64bits, por lo que no se puede ejecutar en mi Kubuntu AMD64).
  • Para descomprimir SFPack hay que descargarse el extractor de esta página (funciona a través de Wine).

Una vez que tengo algún .sf2 puedo, en Qsynth, pulsar el botón Setup…, y añadir los bancos de sonido en la pestaña Soundfonts. Importante: no acepta rutas con acentos.

Una vez hecho esto, las pulsaciones del controlador producirán sonido. Pero en mi caso los sonidos tenían artefactos. Lo he solucionado modificando el valor de Setup… > Audio: Buffer Count, elevándolo hasta 32 (por defecto era 4).

El único problema que tengo es que en el panel de mensajes de Qsynth sale lo siguiente al pulsar una tecla del controlador MIDI:

fluidsynth: warning: ALSA sequencer buffer overrun, lost events

Ya veré cómo lo soluciono, porque la verdad es que hay una cantidad inmensa de opciones que no tengo la menor idea de lo que quieren decir…