Después de dos días tras haber adquirido mi nuevo módulo LCD (un Crystalfontz 634 USB) puedo decir que he logrado hacerlo funcionar en Linux satisafctoriamente. En estos dos días no pocos problemas he tenido puesto que primero la página del driver de lcd4linux me confundió sugiriendo el pl2303 como driver serie-usb cuando finalmente era el ftdi_sio, como descubrí en los foros de Crystalfontz; y luego tuve que descubrir que la velocidad a la que trabajaba mi modelo era 19200 y no 9600 como indicaba la hoja de especificaciones, que resultó estar sin actualizar para la nueva versión del CF 634 como era mi caso. Aquí tenéis a mi nuevo LCD dando sus primeros pasos en Linux.
Es por eso que he decidido crear un manual para ayudar a quien necesite hacer funcionar este LCD en Linux, que en parte también sirve para cualquier modelo ya que doy una pequeña iniciación a lcd4linux.
Introducción
Éste es un manual que explica cómo utilizar un LCD USB Crystalfontz
634. El mío concretamente es un CFA634-TFB-KU como el de la imagen de abajo:
Asimismo, está basado en mi experiencia personal, y con ello no garantizo la absoluta eficacia producto de seguir este manual, simplemente pretendo que sirva de referencia ante la escasa documentación en español para quien quiera hacer funcionar su LCD USB/serie Crystalfontz en Linux.
Software
- Linux kernel 2.6. En mi caso particular concretamente un 2.6.11. Este LCD también funciona con la serie 2.4 del kernel pero hay que instalar el driver FTDI aparte.
- lcd4linux. Lo considero el mejor software para usar un LCD en Linux. También existen otros programas que puedes examinar por tu cuenta como lcdproc y lcdmod.
Configuración del kernel
A no ser que tu distribución detecte el conversor serie-usb del LCD automáticamente, habrá que compilar un nuevo kernel para dar soporte al mismo. Puedes saber si está detectado abriendo una consola como root y ejecutando:
# cat /proc/bus/usb/devices
Deberás buscar entre tanto texto un párrafo referente a tu LCD en el que ponga algo de Crystalfontz. En mi caso:
T: Bus=04 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 2 Spd=12 MxCh= 0 D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=0403 ProdID=fc09 Rev= 2.00 S: Manufacturer=Crystalfontz S: Product=Crystalfontz CFA-634 USB LCD S: SerialNumber=CFC850NR C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=490mA I: If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=ftdi_sio E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
Si tu distribución ha detectado el conversor del LCD, en la parte referente al driver (en negrita) debería aparecer identificado ftdi_sio y podrás omitir este paso. Si no lo ha detectado, en ese apartado no pondrá nada, y tendrás que compilar un kernel nuevo.
No voy a explicar aquí cómo se configura/compila/instala un kernel para no hacer redundante este documento, me limitaré a decir qué parte son esenciales para el funcionamiento del LCD:
Device Drivers ---> USB support --->
Y selecciona UHCI, OHCI o EHCI según tu modelo de placa, para tener soporte USB. En mi caso (y en el de la mayoría) elijo EHCI y UHCI.
Device Drivers ---> USB Support ---> USB Serial Converter support ---> <*> USB Serial Converter support <*> USB FTDI Single Port Serial Driver (EXPERIMENTAL)
Si todo ha ido bien, al arrancar con el nuevo kernel, tu LCD ya debería estar identificado con el driver ftdi_sio como he puesto antes. Crytalfontz provee mediante la página del producto de las fuentes de un pequeño programa escrito en C con el que podrás testear el aparato. Aunque ya viene especificado en el readme dentro del archivo comprimido, al ejecutable resultante se le aplican dos parámetros (puerto y velocidad en este orden). En mi caso el puerto es /dev/usb/tts/0 y la velocidad 19200 baudios (la versión anterior usa 9600).
Instalación de lcd4linux
Debido a que actualmente la última versión que se encuentra en el árbol oficial de paquetes de Gentoo (la distribución que uso) es la 0.9.11, he compilado a mano la última versión sin usar el sistema de Gentoo. El motivo de esto es que la última versión (0.10) supone una reescritura total del código y afecta entre otras cosas al formato del fichero de configuración, de modo que usar una versión inferior invalida totalmente la explicación de este manual. Puedes ir a su página oficial, bajarlo y descomprimirlo.
./configure make make install
Nos situamos en el directorio donde estén descomprimidas las fuentes y, como acabo de especificar, usamos el método de siempre: configurar, compilar e instalar. En la documentación de la página oficial se incluye un script que podemos usar como servicio al inicio para que cargue automáticamente al arranque.
Configuración de lcd4linux
Para una correcta configuración tendremos que hacer uso de la documentación, que nos guiará según el modelo de LCD que tengamos. Esta es la estructura básica muy resumida y sintetizada que servirá para comprender mejor cómo funciona. En la página de lcd4linux puedes encontrar un fichero de configuración de ejemplo.
Display XX { } Plugin XX { } Widget XX { } Layout Ejemplo { Row1 { Col1 'XX' } Row2 { Col1 'XX' Col10 'XX' } Row3 { Col1 'XX' Col11 'XX' } Row4 { Col1 'XX' Col11 'XX' } } Layout 'Ejemplo' Variables { tick 500 tack 100 minute 60000 }
- Display. Aquí se indica el tipo de LCD que tienes y sus parámetros de configuración como pueden ser el puerto, la velocidad o el driver que usa.
- Plugin. Sólo sirve para configurar los parámetros en caso de que uses alguno de los plugins de que dispone lcd4linux.
- Widget. Pueden haber tantos como necesites, digamos que son los elementos preconfigurados que luego insertarás mediante Layout.
- Layout. Aquí es donde colocarás los widgets que hayas preconfigurado, como se puede ver a simple vista, se colocan empezando a contar en la columna que se especifique, dentro de la fila que estemos configurando.
- Variables. Son variables de reloj internas, los valores por defecto suelen ser válidos.
Layout ‘Ejemplo’ sirve para decir a lcd4linux qué esquema queremos usar. Esto es útil porque podemos tener varios preconfigurados, y alternar entre ellos cambiando sólamente el nombre de esta variable.
Para verlo funcionar por primera vez podemos usar cualquiera de los widgets y layouts que tiene el archivo de configuración de ejemplo, y luego ir personalizándolo poco a poco. Una vez tengamos el fichero de configuración hecho a medida, lo llamaremos lcd4linux.conf y lo copiaremos en la carpeta /etc, para lo cual tendremos que tener permisos de root.
Ejecución y resultado
Ya tenemos el soporte necesario en el kernel y lcd4linux está configurado. Desde consola y con permisos de root, ejecutamos:
# /usr/local/bin/lcd4linux
Y si todo ha ido bien, el LCD debería empezar a mostrar información… voilá!.
Aquí tenemos a mi LCD dando sus primeros pasos en Linux. Sólo muestra dos líneas porque usé la configuración de mi antiguo LCD de dos líneas, ahora mismo lo he reconfigurado para que muestre información en las cuatro líneas.
Bueno, eso es todo, espero que esta guía te haya servido de ayuda, y si no te ha servido de ayuda, que por lo menos hayas disfrutado viendo la foto de mi LCD :-p.
6 Comments
que chulo!
Ey, guapísimo el LCD, me alegro de que lo hayas reconciliado con linux xD q has hecho con el rojo al final?
E R E S
U N
A R T I S T A
Ya se a quién acudir si algún día pongo un display, porque mi primera premisa para comprar hardware es que sea compatible Linux, luego viene el tema de dinero, espacio, ruido…
Gracias por la información, me ha sido muy útil para instalar mi CFA-635 en Slackware 11.0. Antes tenía un LCD CrystalFontz serial, y al pasar a uno USB simplemente me perdí.
[…] unas semanas que tuve la idea de recuperar mi LCD Crystalfontz de la caja en la que lo tenía guardado, para darle una nueva vida mostrando información útil en […]