Pantalla LCD iMon. Instalación de drivers

Inicialmente la configuración de las pantallas iMon requería la aplicación de parches a las fuentes de lirc y de lcdproc. Posteriormente los parches se incluyeron en lirc, pero a la fecha de redacción de esta guía dichos drivers para iMon no están actualizados. Por el contrario, existen unos drivers actualizados en el propio kernel de Linux, por lo que la configuración es más sencilla que antes, ya que no necesitamos instalar lirc.

  1. En primer lugar nos aseguraremos de no tener sinstalado lirc ni lcdproc, para evitar duplicidades

  2. Compilar kernel con módulo imon y cargar módulo en memoria:

    modprobe imon
    	    
  3. Instalar lcdproc 0.5.4 o superior: (A Octubre de 2011, en Debian inestable ya se puede instalar desde repositorios)

    ./configure --enable-drivers=imonlcd && make && make install
    	  
  4. Editar /usr/local/etc/LCDd.conf

    Especificar el driver imonlcd y la carpeta donde están los drivers:

    Driver=imonlcd
    DriverPath=/usr/local/lib/lcdproc/
    	  

    Indicar que no queremos alternar la información del servidor LCDd con la del resto de clientes. Esto evitará que información interna de LCDproc aparezca en la pantalla alternativamente junto con la de XBMC

    ServerScreen=no
    	  

    Especificar que nuestra pantalla es LCD (identificador USB 15c2:0038 ) en lugar de VFD (identificador 15c2:ffdc) cambiando el parámetro "protocol" en la sección [imonlcd]. En esta sección también podemos ajustar el contraste y el comportamiento de LCDproc cuando se cierre (poner un reloj en la pantalla LCD o apagarla):

    [imonlcd]
    # Specify which iMon protocol should be used [legal: 0=15c2:ffdc device,
    # 1=15c2:0038 device; default: 0]
    Protocol=1
    # Set the exit behavior [legal: 0=leave shutdown message, 1=show the big clock,
    # 2=blank device; default: 1]
    OnExit=2
    # Select the displays contrast [default: 200; legal: 0-1000]
    Contrast=150
    	  
  5. En las fuentes de lcdproc, carpeta scripts/debian tenemos el script de inicio que debemos copiar en /etc/init.d/. Lo editaremos y cambiaremos el nombre del ejecutable de LCDproc (por defecto está en /usr/sbin, pero nosotros lo tenemos en /usr/local/sbin) y habilitaremos el script para los runlevel que utilicemos (por comodidad lo haremos con el comando rcconf)

Configuración para Xbox Media Center

En primer lugar editaremos el fichero advancedsettings.xml:

<advancedsettings>
 <lcd>
 <rows>2</rows> 				<!-- Number of rows to use for the LCD. -->
 <columns>20</columns> 			<!-- Number of columns to use for the LCD. -->
 <scrolldelay>3</scrolldelay> 		<!-- Delay of the scroller widget. Defaults to 1. -->
 <dimonscreensave>true</dimonscreensave> 	<!-- Turns of the LCD/VFD backlight while screensaving. Defaults to false. -->
 </lcd>
</advancedsettings>

	  

Posteriormente editaremos guisettings.xml y pondremos el valor true a la línea <haslcd> de la sección <videoscreen>

Finalmente podemos modificar el fichero LCD.xml para que la información sea más clara que en la versión por defecto. Eliminaremos la visualización de datos referentes a memoria libre y desactivaremos la pantalla durante la visualización de vídeos, entre otras cosas, de modo que el fichero queda así:

<lcd>
   <!-- set this to video,music to disable the LCD on playback of music and video-->
   <disableonplay>video</disableonplay>

   <navigation>
      <line>$INFO[System.CurrentWindow]</line>
      <line>$INFO[System.CurrentControl]</line>
      <line>$INFO[System.ScreenWidth]x$INFO[System.ScreenHeight] $INFO[System.ScreenMode]</line>
   </navigation>
   <music>
      <line>$INFO[LCD.PlayIcon] $INFO[Player.Time]/$INFO[Player.Duration]</line>
      <line>$INFO[MusicPlayer.Title]</line>
      <line>$INFO[MusicPlayer.Artist]</line>
      <line>$INFO[MusicPlayer.Album] ($INFO[MusicPlayer.Year])</line>
   </music>
   <video>
      <line>$INFO[LCD.PlayIcon] $INFO[Player.Time]/$INFO[Player.Duration]</line>
      <line>$INFO[VideoPlayer.Title]</line>
      <line>$INFO[VideoPlayer.Genre]</line>
      <line>$INFO[LCD.ProgressBar]</line>
   </video>
   <general>
      <line>XBMC running...</line>
      <line>$INFO[System.Time] $INFO[LCD.Date]</line>
      <line>$INFO[System.ScreenWidth]x$INFO[System.ScreenHeight] $INFO[System.ScreenMode]</line>
   </general>
   <screensaver>
   <!-- Comment out the next line if backlight is set to off while screensaver active -->
      <line>$INFO[System.Time] $INFO[LCD.Date]</line>
   </screensaver>
   <xbelaunch>
      <line></line>
      <line>Playing</line>
      <line>$INFO[System.LaunchXBE]</line>
   </xbelaunch>
</lcd>

	  

La mayoría de botones del mando a distancia funcionarán perfectamente en XBMC, pero es posible que queramos dar alguna función concreta a botones que no funcionan con la configuración por defecto.

El driver imon del kernel Linux interpreta las pulsaciones del mando a distancia como códigos de teclado (keycodes). Hemos de averiguar los códigos correspondientes a los botones que queremos configurar. Para ello activaremos el registro en advancedsettings.xml:

<loglevel>2</loglevel>
	  

Ahora ejecutaremos XBMC y comprobaremos en otra consola el archivo de registro cuando pulsemos los botones en el mando a distancia

En mi caso, los dos botones que quiero configurar se corresponden con los keycodes 156 y 182 del teclado. Como solo quiero asignar funciones simples a dichos botones, lo más sencillo es remapear con Xmodmap. Para ello editamos el fichero ~/.Xmodmap

keycode 182 = Tab Tab
keycode 156 = Escape
	  

Algunas distribuciones no cargan automáticamente el fichero ~/.Xmodmap al iniciar X-Window. Si éste es nuestro caso, pondremos lo siguiente en el fichero ~/.xsession:

if [ -f $HOME/.Xmodmap ]; then
    /usr/bin/xmodmap $HOME/.Xmodmap
fi
	  

Miscelánea. Solución de problemas.