miércoles, 27 de junio de 2007

Linux en una Dynapos PST-5000


Estuve haciendo algunas pruebas sobre una máquina de Dynapos, la PST-5000. Si bien la máquina es algo bastante estándar (un Celeron de 650 con 256Mb de RAM), uno nunca sabe que se va a encontrar al intentar instalar/usar Linux en uno de estos aparatos. La distribución seleccionada fue Ubuntu Feisty (7.04)

El primer tema fue la instalación del sistema operativo. La máquina que probé venía con un disco rígido de 40Gb, pero como la máquina no tiene disketera ni cdrom, había que buscar otra forma de instalar.
El primer intentó fue de la forma que me recomendó el proveedor: usando un adaptador ide-usb e instalando desde otra máquina. Lamentablemente la única máquina que tenía disponible para hacer esto tenía USB 1.0 y no era suficiente para instalar el sistema operativo usando debootstrap.
Descartada la opción recomendada, decidí probar con el booteo por red. La máquina tiene placa de red, y sólo fue cuestión de bajar el instalador de red de Ubuntu y hacer unos retoques a nuestro servidor DHCP (ver este howto).
Por ansiedad, durante la instalación no seleccioné ningun grupo de paquetes, por lo tanto la instalación fue rápida y pude probar si el kernel podía iniciar sin problemas.

Luego de la primera instalación, probé que el hardware haya sido detectado, la placa de red funcionaba, todo ok, asi que después de un 'apt-get install ubuntu-desktop' (y casi dos horas de espera) tenía el gdm esperando el usuario y contraseña.

La gran duda era si iba a funcionar el touchscreen, según las especificaciones es un Elo, y debería funcionar bien en Linux. Lamentablemente el Ubuntu no lo configura por default, así que tuve que 'ensuciarme las manos': a editar el xorg.conf a mano...

Este debe ser uno de los archivos más temidos, y la verdad que no hay nada por que temerle. En este archivo se definen los dispositivos que se van a usar desde el entorno gráfico, de qué tipo son (teclado, pantalla, placa de video, etc), y como se relacionan en una configuración determinada. El miedo popular viene de que al romper uno de estos archivos no vuelve a levantar el entorno gráfico, y en estos casos hay gente que llega a reinstalar el sistema completo. La solución es muy simple: 'sudo dpkg-reconfigure xserver-xorg' desde una consola. Tampoco es una mala idea hacer una copia antes de modificarlo, por supuesto.

Para levantar los módulos del touchscreen tuve que crear una sección para el dispositivo:


Section "InputDevice"
Driver "elographics"
Identifier "touchscreen"
Option "Device" "/dev/ttyS2"
Option "Type" "cursor"
Option "MinX" "4000"
Option "MaxX" "50"
Option "MinY" "4000"
Option "MaxY" "100"
EndSection


Como pueden ver, los valores de MinX y MaxX, y MinY, MaxY están invertidos, eso es porque este modelo viene con el touch invertido (?) Los valores que muestro son para una pantalla de 15" y 1024x768. Para calibrar bien el touch, hay que usar el viejo método de prueba/error, otra opción no encontré (si alguien sabe como configurarlo de forma mas facil, que avise :))

Luego, en la sección de Layout, donde se combinan todos los dispositivos para el entorno gráfico, agregué lo siguiente:


Section "ServerLayout"
...
InputDevice "touchscreen" "SendCoreEvents"
EndSection


Por supuesto, hay que reiniciar el X, en el caso de Ubuntu, es suficiente con reiniciar el gdm: 'sudo /etc/init.d/gdm restart' y ya está: un Ubuntu con touchscreen en una máquina de POS. Para ejecutar un Gnome completo es un poco lenta, pero para aplicaciones customizadas, sin cargar un entorno completo, lo veo más que factible.

Espero que le sirva a cualquier que esté pensando en usar una máquina de estas o al menos para configurar un touchscreen en Linux. No eran tan difícil...

16 comentarios:

irr1977 dijo...

Hola, quisiera saber que driver de elo has utilizado con ubuntu 7.04, ya que en la web elotouch.com no tienen driver para esa version, supongo que has utilizado la 6.10 ¿pero cual de las versiones de Xfree? 4.2.0 ó 4.3.0 ¿y de motif? 2.0 ó 3.0

Gracias.
Un saludo.

Gabriel Patiño dijo...

En Ubuntu 7.04 ya vienen los drivers instalados por default. No hace falta que instales nada.

Simplemente segui las instrucciones del post y deberias sacarlo andando en unos minutos.

irr1977 dijo...

Ok probaré a hacer lo que dice s en el post, mi pantalla tactil es USB, ¿la tuya tambien o era serial?

Un saludo.

Gabriel Patiño dijo...

En este caso era serial, pero el año pasado estuve probando con algunas usb y no tuve mayores problemas.

La parte correspondiente al dispositivo usb es la siguiente:

Section "InputDevice"
Identifier "Touchscreen"
Driver "elousb"
Option "CorePointer"
Option "Device" "/dev/input/event1"
Option "MinX" "4096"
Option "MaxX" "0"
Option "MinY" "260"
Option "MaxY" "4100"
EndSection

fijate que cargo otro driver, el elousb. En ese momento estaba usando Dapper y no recuerdo si ya venía o si lo baje de algun lado. En el caso de haberlo bajado, tiene que haber sido de los repositorios o del sitio de Elo.

irr1977 dijo...

Efectivamente el driver que se instala es el elousb, estoy utilizando el driver de ubuntu 6 ya que para la 7 no hay driver actualmente.

De momento no consigo que funcione, he averiguado el event que utiliza mi pantalla (es el 3).

Despues pruebo cat /dev/input/event3 y pulso en la pantalla tactil, y salen caracteres raros, por lo que reconoce las pulsaciones sobre l pantall, sin embargo el puntero no se mueve de su sitio y fuera del cat no hace nada.

Gabriel Patiño dijo...

En el xorg.conf que posteaste, dentro de la sección del input device del touchscreen, no tenes la opción:

Option "type" "pointer"

Posiblemente ese sea el erro

Anónimo dijo...

Hola,

Me llamo Oscar y estoy intentando instalar un Elo Touchmonitor sobre Ubuntu 7.04 y no me acabo de aclarar. (Puede que el hecho de que haga dos semanas que estoy tocando Linux también sea un handicap)

A la hora de cambiar el contenido del fichero xorg.conf, ningún problema.
Aunque no acabo de entender cómo saber el nombre del puerto al que se conectará la pantalla (por qué ttyS2?). Mi máquina dispone del puerto típico de la pantalla (de 15 pines hembra), una conexión DVI-D y un puerto serie (de 9 pines macho). A cual de ellos debo conectar la pantalla (y por ende, cuál es el nombre del puerto)? (Desde el monitor puedo hacerlo a los tres y no tiene conexión USB)

Si me pudieras echar una mano, te lo agradecería mucho!

Un saludo
(mi direccion de mail es anskaro@gmail.com)

Gabriel Patiño dijo...

Hola Oscar,

Los monitores touch screen en realidad son dos dispositivos en uno: una pantalla y un mouse. Para conectar la pantalla, lo haces de la forma comun, conectanto el cable del monitor a tu placa de video (sea dvi o la otra)

El puerto serie es para conectar la funcionalidad de touchscreen (algo similar a un mouse). Algunos modelos usan USB en vez de serial, pero es lo mismo.

Este dispositivo es el que configuras en el xorg.conf como dispositivo de entrada. En Linux, los puertos series se denominan ttySx siendo x un numero entre 0 y 3 (generalmente). Por ejemplo, /dev/ttyS0 es el puerto serial que en Windows se llamaria COM1, /dev/ttyS1 es COM2, etc.

Entonces, en el xorg.conf, debes poner el ttySn que corresponda al puerto donde conectaste el monitor via serial (para usar el dispositivo tocuhscreen), solo para eso. La señal de video va a salir por la placa de video (donde deberias haber conectado el cable de video del monitor)

Espero haber sido de ayuda, saludos.

Anónimo dijo...

Gracias por contestar tan rápido.

Se podría decir que tengo la pantalla conectada al ordenador de la siguiente manera:
- De DVI a DVI para la pantalla
- De serie a serie para el 'ratón'
(obviamente también está conectada la toma de corriente al enchufe)

A mi entender, con esta situación, al menos la pantalla debería de verse, no? Pues aquí es donde empiezan mis problemas... que la pantalla está negra.

Quien me ha dejado la pantalla me ha dicho que en Windows XP funciona bien... pero estoy empezando a dudarlo un poco... a ver si puedo ver la pantalla en funcionamiento y así descartar que tenga algún problema la pantalla.

Saludos

Oscar

Gabriel Patiño dijo...

Osxar,

Mi recomendación sería que pruebes en etapas:

Primero, conecta solamente la entrada de video y utiliza el monitor como si fuera un monitor común. Es raro que no veas nada de nada en modo consola. Desde la consola puedes autoconfigurar el monitor con el comando 'sudo dpkg -reconfigure xserver-xorg'

Una vez que tengas funcionando la pantalla, conecta el dispositivo del touchscreen, y sigue con la configuración como pongo en el post.

Nunca probé con una conexión DVI, y no creo que sea un problema en Linux, pero... por las dudas Googlea un poco ;)

Anskaro dijo...

Hola otra vez,

Espero no estar haciendo pesado...

Vamos avanzando. Ya he conseguido que funcione como pantalla.

He configurado el archivo xorg.conf como decías en tu post, pero no me funciona (sigh)

Ahora se queda 'colgado' cuando llega al momento de cargar el entorno de ventanas. Hace bien la carga inicial (con el logo de ubuntu y la barra cargándose) y cuando acaba, se atranca...

No sé si es problema de drivers (el archivo elographics_drv.so está en la carpeta /usr/lib/xorg/modules/input)...

Sigo googleando aunque cada vez tengo menos esperanza :(

La diferencia entre el Ubuntu 7.04 y el 7.10 en este tema será mínima, no?

Gracias por aguantarme!

Anónimo dijo...

Hola, he intentado instalar una tocuh screen de elo y he conseguido que pite cuadno toco en la pantalla pero no hace nada mas, el puntero del raton no sigue donde yo toco sabes porque puede ser uchas gracias

Gabriel Patiño dijo...

Asegurate de tener bien configurado el xorg.conf

El dispositivo debería estar configurado como un InputDevice, revisa que es que estes apuntando al puerto correcto, etc.

Anónimo dijo...

Buenos dias,
Gracias por responder :) ya he conseguido que funcione la elo pero esta invertida como en un esperjo cuanod toco izquierda el puntero va a la derecha y cuando toco derecha el puntero va a izquierda he cambiado los valores del Xorg como decias pero no hay manera... esto te pasaba a ti ?

Gracias de antemano

Anónimo dijo...

Hola mis queridos colegas Linuxeros.

Tengo un problema con un touch Elo. Cuando pongo el dedo sobre la pantalla me detecta un "clic" y solo necesito arrastrar el puntero, no hacer el "clic".

Alguien sabe como solucionar esto?

Muchisimas gracias.

heislersin dijo...

Saludos interesante lo que escribes
Me podrias indicar cual es la configuracion de los hilos en el cable serial para ese elo ?
Estaria muy agradecido
Gracias