Linux-IrDA (I) : Instalación y Configuración

Autor: Juan Antonio Martínez Castaño
E-mail: jantonio@dit.upm.es
Web: http://www.dit.upm.es/~jantonio

Copyright

Este artículo es Copyright 2000 de Juan Antonio Martínez Castaño y se distribuye bajo las siguientes condiciones:

Indice


Entradilla

Continuando con la serie dedicada al soporte de infrarrojos en Linux, vamos a hablar en esta ocasión del Protocolo IrDA y de como configurar Linux para su soporte y utilización

Presentación

En el número anterior de Linux Actual, se describió la utilización de diversos dispositivos infrarrojos desde Linux, haciendo hincapié en el control de mandos a distancia remotos. En esta entrega describimos el estandard IrDA, y cómo se implementa en Linux, indicando los detalles de instalación y configuración. Para finalizar la serie, en el próximo número de Linux Actual se describen diversos programas y aplicaciones que utilizan este protocolo

Introducción

En el número anterior vimos cómo se puede utilizar Linux para simular o controlar equipos que funcionan mediante dispositivos de infrarrojos del tipo mandos a distancia. El sistema , aunque útil, no consituye un estándard válido, pues cada fabricante tiene su sistema, y sus protocolos

logotipo de Linux-IrDA
Figura 1: El logotipo del Proyecto Linux-IrDA

Ante este hecho, y dada la evidente utilidad de una comunicación infrarroja entre dispositivos, una serie de fabricantes de hardware y software han creado la Infrared Data Association (IrDA), un estandard para la comunicación entre equipos mediante dispositivos infrarrojos. Palmtops, ordenadores portátiles, teléfonos móviles, y demás dispositivos acogidos a dicho estandard pueden compartir entre ellos diversos datos.

Una serie de fabricantes de hardware y software han definido IrDA, un estandard de protocolos de comunicación por infrarrojos

Linux IrDA es el proyecto de porting del estandard IrDA al sistema operativo Linux. Es miembro del consorcio desde Febrero de 1999. La implementación IrDA de Linux no está certificada por el consorcio, si bien es una de las más completas y flexibles.

Pero ¿en qué consiste el estandard IrDA?. La implementación Linux trata los dispositivos de infrarrojos como un dispositivo de red, estableciéndose una serie de niveles al estilo OSI:

Linux-IrDA está estructurado en capas al estilo de los niveles OSI


La implementación IrDA de Linux

Lo descrito hasta ahora es estándard para toda implementación IrDA. a nivel de sesión y aplicación es donde se encuentran las mayores diferencias entre Linux y otros "sistemas" operativos:

Es de destacar que Los demás sistemas operativos no implementan ni de lejos todas estas funcionalidades: La normativa IrDA especifica que sólo son obligatorios los protocolos de conexión, la emulación de puerto serie, y el cliente de impresión. En sistemas Windows hacen falta programas adicionales -no siempre proporcionados por el fabricante- para el resto de las funcionalidades. En concreto no es posible la simulación de red local, ni por supuesto el API de sockets...


Preparación y compilación del núcleo

Para utilizar IrDA en nuestra máquina necesitamos tener el núcleo preparado al efecto. Linux-IrDA se soporta en las series 2.2.X y 2.3.X, no estando soportado en la serie 2.0.X.

Kernel fig 1
Figura 5: Especificación de protocolos IrDA

Las ilustraciones muestran la configuración del núcleo referida al puerto de infrarrojos, relativos a la versión 2.2.14 del núcleo. Para obtener una funcionalidad completa, es preciso añadir un parche al núcleo. En el CD-Rom que se acompaña con la revista se incluye una distribución del núcleo 2.2.14, así como los parches necesarios

El lector deberá escoger el módulo adecuado en su caso, o bien poner todos los dispositivos físicos de infrarrojos como módulos cargables. A menos que se vaya a utlizar la emulación de red, es recomendable configurar el puerto en modo SIR, pues el modo FIR no está completamente desarrollado.

IrDA drivers
Figura 6: Especificación de dispositivos IrDA

En la configuración del modo SIR existen dos opciones: la primera (IrTTY) utiliza el driver estandard de puerto serie que linux proporciona. En aquellos equipos en que el puerto de infrarrojos se configura desde la BIOS y se asigna a un puerto serie, ésta será la opcion deseada. Del mismo modo, si en el arranque de Linux el puerto de infrarrojos es detectado como un puerto serie, usaremos este modo
La segunda posibilidad es usar un driver específico (IrPORT). Deberemos usar esta opción cuando el puerto no es reconocido como tal en arranque, o tenemos problemas de eco, o de "ruido" en el enlace. IrPORT es una emulación half-duplex de puerto serie. En este caso deberemos insertar el módulo expresamente en el arranque, mediante insmod irport io=0xYYY irq=YYY


Configuración de puertos y dispositivos

Una vez parcheado y recompilado el núcleo llega el momento de configurar el sistema para soporte de IrDA. Para ello, empezaremos desde la BIOS del sistema, verificando que el puerto de infrarrojos está activado, comprobando a qué puerto serie está asociado, y si vamos a usar el modo FIR, comprobar el canal de DMA y el puerto que va a utilizar

Una vez instalado el núcleo es preciso proceder a la configuración del sistema

El siguiente paso consiste en compilar e instalar las aplicaciones de gestión. En el CD-Rom se acompaña la última versión de las IrDA utils. Como siempre, invocamos el conjuro secreto: ./configure; make; make install

Ahora viene la parte complicada: los ficheros de configuración.

La figura ilustra el contenido de /proc/net/irda. Los diversos ficheros ilustran los dispositivos encontrados, los enlaces establecidos, así como los datos emitidos y recibidos por dichos enlaces.

irda procfs
Figura 7: Contenido de /proc/net/irda

El problema más común suele ser el fallo en la asociación del dispositivo físico al lógico. Comprobar que irattach funciona correctamente, que el puerto serie está asociado en la BIOS al puerto de infrarrojos (en modo SIR), o bien que los parámentros asociados al modo FIR son los correctos. Si se dispone de Windows en el mismo equipo, y éste tiene el IrDA instalado, una mirada a la configuración del puerto nunca está de más...


Conclusiones

IrDA proporciona un protocolo estandard para la comunicación entre equipos a través del puerto de infrarrojos. Existen diversas implementaciones y niveles en el protocolo, siendo la implementación Linux la más completa con diferencia respecto a sus competidores

La implementación IrDA de Linux es mucho más completa que la de otros "sistemas operativos"

En éste artículo hemos hecho una introducción al protocolo IrDA y a su implementación en Linux. Hemos visto como se configura el núcleo y se generan los dispositivos de configuración, y dejado nuestro sistema listo para empezar a trabajar

En el próximo número de Linux Actual, estudiaremos los diversos programas y aplicaciones que existen en Linux para el uso del puerto IrDA. Veremos como se monta una red local, como se emulan terminales, o se conecta a Internet a través del teléfono móvil por infrarrojos; como crear un servidor de impresión remota, o cómo establecer comunicación con un un PalmPilot. Por último veremos el API de programación y el uso de sockets a traves del puerto IrDA


Referencias