Quien dijo que esto era trabajar ?

La semana pasada cansado de estar en el puesto de soporte sin nada que hacer e intentando hacer un poco mas “aceptable” mi estancia allí me propuse construir algo nuevo. La idea era transformar el ordenador que tenía para ejecutar unas aplicaciones de soporte en una estación multimedia.

Y a eso me puse. Supongo que por que quiero que no se me olvide lo he que hecho estoy escribiendo este post. Supongo que será cosa vuestra el juzgar si esto es trabajo o no.

La idea era consolidar varios servicios en los mínimos ordenadores posibles. Las aplicaciones que tenemos que consolidar son:

  • Aplicación web con una pantalla tactil
  • Musica
  • Video

Para poder hacer esto disponía del siguiente Hardware.

hardware.jpg

Si no queda muy claro con los dibujos lo describiré.

  • Dell 390
  • Sharp Aqua 50″
  • Elo touch screen (USB)

La idea era utilizar linux como sistema operativo y configurar todas las aplicaciones sobre el. Manos a la obra se ha dicho. Supongo que entenderéis que no voy a entrar en detalles sobre la instalación de linux. Realmente no tiene nada especia. Simplemente acordaos de instalar estas opciones durante la instalación.

  • SSH Server
  • Ubuntu desktop

Una vez hecha la instalación añadimos una segunda tarjeta gráfica a la workstation. La idea es que cada una de las tarjetas alimentará un monitor diferente. Con lo que tenemos los siguiente.

01:00.0 VGA compatible controller: nVidia Corporation NV41 [Quadro FX 3450/4000 SDI] (rev a2)

05:04.0 VGA compatible controller: nVidia Corporation NV34 [GeForce FX 5200] (rev a1)

La idea es que cada una de las tarjetas alimente un monitor diferente y que cada tarjeta corra una sesión X diferente. Para hacer esto necesitamos modificar los siguientes ficheros:

  • /etc/X11/xorg.conf

Este fichero debe contener la definición de los 2 servidores. Imaginaos que tenéis 2 ficheros de configuración xorg.conf para cada uno de los servidores y los juntáis en uno solo. Tendréis entonces 2 secciones de cada. Lo importante es que os quedéis con el nombre que le asignáis a las secciones de “ServerLayout”. por que la utilizaremos más adelante.

Aunque no está relacionado con la configuración del servidor X vamos a indicar como se configuraría el interfaz para la pantalla táctil. Esta pantalla tiene un conector USB para utilizar el dispositivo táctil. Para configurar ese dispositivo tenemos que hacer lo siguiente.

El la siguiente página

Nos podemos descargar el driver para Xorg. Si utilizamos el que viene con la distribución (xserver-xorg-input-elographics) tendremos que utilizar el interfaz serie, ya que este no soporta USB.

Para instalarlo simplemente tendremos que hacer lo siguiente:

 

 

 

wget -c http://www.softcoded.net/eduard/zx_pub/elousb_binary.tar.gz

 

tar -zxpvf elousb_binary.tar.gz

 

cp elousb_drv.so /usr/lib/xorg/modules/input

y en el fichero de configuración tenéis que añadir lo siguiente:

Section "InputDevice"
Identifier "touchscreen"
Driver "evtouch"
Option "Device" "/dev/input/evtouch_event"
Option "DeviceName" "touchscreen"
Option "MinX" "434"
Option "MinY" "503"
Option "MaxX" "3563"
Option "MaxY" "3524"
Option "SwapY" "true"
Option "ReportingMode" "Raw"
Option "Emulate3Buttons"
Option "Emulate3Timeout" "50"
Option "SendCoreEvents" "On"
EndSection

La parte en negrita es muy complicada, son los valores de calibración. Básicamente yo he encontrado los míos al tuntún. Hay varios programas para realizar la calibración, pero solo funcionan a través del interfaz RS232.

Como podéis ver vuestra touchscreen se comportará como si de un ratón se tratara para el sistema de Xwindows.

Una vez hecho eso tenemos que decirle a nuestro display manager (en este caso GDM) que deberá cargar 2 servidores X. Uno con cada configuración.

  • /etc/gdm/gdm.conf

Para eso utilizamos este fichero. La configuración que vamos a realizar se llama multiseat. No es algo fuera de lo común, pero es la primera vez que lo hago. Se supone que con añadir un par de lineas al fichero gdm.conf esta hecho.

 
En la sección
  • [servers]

Hay que añadir algo como

  • 1=Television

Y luego decirle como se carga ese servidor, con algo parecido a esto.

[server-Television]
name=Television
command=/usr/bin/X -novtswitch -sharevts -layout Television
flexible=true

Reiniciamos nuestro gdm y voilá .. ya tenemos dos Xservers… uno en :0 y otro en :1… uno en cada pantalla.

Pues ahora tenemos 2 pantallas con 2 sesiones X.. genial, ahora solo hay que configurarlas para que hagan autologin y ejecuten las aplicaciones que necesitamos.
Pero eso es otra historia y será contada en otro momento.. 😉

7 comentarios en “Quien dijo que esto era trabajar ?

  1. Simplemente es una prueva de conceptop. Estaba aburrido en el trabajo y quería probar un par de cosas. De del multisit system para poder tener la sesion del mythtv y para poder tener una sesión con un browser. Como practica de aprendizaje a estado bien.

    Me gusta

  2. Luis

    Hola, he estado configurando Touchscreen de varias marcas, Elo (usb) con tecnologia APR, Fujitsu (usb) tecnologia Resistiva, y 3M (serial) tecnologia Resistiva. De todos estos solo he podido configurar la 3M, en el resto he tenido problemas ya que los drivers genericos que les he instalado me piden que configure en el archivo xorg.conf el device eventX que esta enunciado en el siguiente archivo : /proc/bus/input/device con respecto al Touch, pero ningun evento apunta a estos dospositivos, pero cuando ejecuto el comando lsusb puedo ver el monitor reconocido. Hay alguna forma de configurar el Linux para que quede registrado el Touch en un event.
    Gracias

    Me gusta

  3. Esa parte se me olvidó.. creo que me quedaba demasiado largo.. Para que te reconozca los eventX tienes que configurar el udevfs.

    Crea el fichero

    /etc/udev/rules.d/69-touchscreen.rules

    Con el siguiente contenido..

    # Evtouch udev.rules
    #
    # Because Evtouch can’t autoprobe devices we assume that we only
    # Have one device so we can make it like this 😛
    #
    # List here your touchscreen, check if it works and send it to rpms_AT_ilmi_DOT_fi
    # Name can be found in /proc/bus/input/devices (In console make command ‘cat /proc/bus/input/devices’)
    #
    # Tested on Telepeak Model 800-Y-Y-V (http://www.telepeak.com). Should work on most eGalax based stuff!
    KERNEL==”event*”, SUBSYSTEM==”input”, ATTRS{idVendor}==”04e7″, ATTRS{idProduct}==”0050″, SYMLINK+=”input/evtouch_event”
    #
    # This could be also like this (eGalax Inc. USB TouchController)
    # KERNEL==”event*”, SUBSYSTEM==”input”, ATTRS{idVendor}==”0eef”, ATTRS{idProduct}==”0001″,
    # SYMLINK+=”input/evtouch_event”
    #

    En principio este esta preparado para el mio.. pero seguro que te haces una idea. Probablemente tengas que modificar la linea

    KERNEL==”event*”, SUBSYSTEM==”input”, ATTRS{idVendor}==”04e7″, ATTRS{idProduct}==”0050″, SYMLINK+=”input/evtouch_event”

    haciendo que los parametros coincidan con tu sistema. Con lsusb puedes ver toda la información.

    Me gusta

  4. Luis

    Hola, gracias por responder. Te comento a continuación el procedimiento que lleve a cabo según lo que me recomendastes.

    Para poder ver que productoID esta asociado al touchscreen que deseo configurar, ejecute el comando “cat /proc/bus/usb/devices” del cual extraigo la parte que hace referencia al dispositivo touch.
    ——————————————————————————————————
    T: Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=1.5 MxCh= 0
    D: Ver= 1.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
    P: Vendor=0664 ProdID=030a Rev= 1.01
    S: Manufacturer=ET&T
    S: Product=USB 7WUSB
    C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=100mA
    I:* If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=00 Driver=usbhid
    E: Ad=81(I) Atr=03(Int.) MxPS= 5 Ivl=7ms
    ——————————————————————————————————

    Según tu recomendación cree el archivo /etc/udev/rules.d/69-touchscreen.rules , con el siguiente contenido:
    ——————————————————————————————————
    ACTION==”add”, SUBSYSTEM==”input”, KERNEL==”event*”, GOTO=”touchscreen_rules”
    GOTO=”touchscreen_rules_end”
    LABEL=”touchscreen_rules”
    ATTRS{idVendor}==”030a”, SYMLINK+=”input/touchscreen”
    ATTRS{idVendor}==”030a”, ATTRS{idProduct}==”0664″, SYMLINK+=”input/touchscreen”
    LABEL=”touchscreen_rules_end”
    ——————————————————————————————————

    El contenido que mostre lineas arriba corresponde a lo adaptado al formato del Fedora Core 8.

    Reinicie el equipo, y ejecute “cat /proc/bus/input/devices” pero no figuraba aun el dispositivo touchscreen. Acaso me equivoque en algun paso? o me falto configurar algo adicional.

    Gracias por tu ayuda.

    Me gusta

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s