jueves, mayo 22, 2008

Dispositivos Bluetooth

Hace poco más de un mes recibí un presente con motivo de mi cumpleaños número 26. Éste era un teléfono movil que llego a reemplazar a mi viejo y maltratado nokia 1100. La gracia del nuevo teléfono, es que además de tener la posibilidad de ejecutar aplicaciones java para móviles, posee servicios de conectividad mediante bluetooth. El motivo de éste artículo es relatar mi experiencia al intentar utilizar el teléfono con linux, además de dar alguna ayuda a los novatos en el tema. No pretendo ahondar profundamente en conceptos técnicos, sino que lo relataré desde el punto de vista de un usuario normal de kde.

Al adquirir el teléfono, desconocía el mundo del bluetooth, sabía de la existencia de la tecnología, sus alcances, la forma en que se transmite, sin embargo desconocía los protocolos usados, y como experiencia empirica sólo tenia una partida de mario kart ds, lo cual no fue para nada suficiente para ganar conocimiento. (Maldita transparencia al usuario!). Además, como mi computadora no poseía soporte para dicha tecnología, decidí comprar un dongle usb.

La desición no fue fácil, pues a pesar de que un amigo me mencionó que la cantidad de proveedores de chipset para estándar era limitada (lo que probablemente asegurara un completo soporte por los sistemas del pingüino), no estaba seguro sobre cual comprar. Finalmente, tras una búsqueda, dí con un producto en mercado libre que mencionaba el soporte en linux. Decidí comprar éste, a pesar de ser un poco mas caro (alrededor de 12 dólares). Poseía una característica particular: Una antena, por lo cual fue fácil encontrarla en el comercio. Desconozco como soporte para otros dispositivos. Buscando en internet me enteré de la existencia de una lista de dispositivos soportados, la cual por motivos legales fue quitada (es algo extraño el mundo del estándar bluetooth). En fin, mi dispositivo es reportado así
ID 1131:1001 Integrated System Solution Corp. KY-BT100 Bluetooth Adapter y la salida de dmesg es la siguiente:
usb 1-2: new full speed USB device using ohci_hcd and address 4

usb 1-2: configuration #1 chosen from 1 choice Bluetooth: HCI USB driver ver 2.9
usbcore: registered new interface driver hci_usb

Ok, el kernel lo soporta, vamos a lo bueno: El software
Mi experiencia ha sido utilizando mi distribución oficial: Archlinux, y mi distribución de pruebas, y plataforma que me permite fácilmente satisfacer mi nuevo fetiche: las transiciones OpenGL en openoffice. Claramente hablo de Ubuntu.
En ubuntu venía casi todo el software instalado. Bastó conectar el dispositivo móvil, acoplarlo, y voilá, tenía transferencia de archivos.
En archlinux tuve que instalar el paquete kdebluetooth, el cual como dependencias instaló todo el software necesario (openobex obexftp bluez-utils). Por ésto, el procedimiento descrito es utilizando kde.
kdebluetooth es una colección de utilidades que, entre otras funciones, permite acoplar y desacoplar los dispositivos bluetooth, cambiar la visibilidad del computador, enviar archivos de forma sencilla al teléfono móvil y definir el nivel de confianza de los dispositivos. En realidad es un frontend que utiliza las herramientas de bluez, el stack del protocolo bluetooth para linux. Además de las de obex (protocolo para el intercambio de datos en dispositivos móviles)

Para acoplar el dispositivo, basta clickear en el ícono de la barra de notificicación, y luego intentar acceder al dispositivo. Al hacerlo el teléfono avisará de un intento de conexión, por lo que solicitará autorización, además de definir una contraseña llamada PIN. Al hacerlo, el sistema detecta dicha solicitud y solicita el emparejamiento mediante el ingreso del mismo PIN. Luego de ésto el dispositivo está emparejado. Algo muy agradable es que KBluetooth guarda ésta información, por lo que no será necesario volver a acoplar el sistema en usos posteriores.

Transferencia de archivos
La transferencia de archivos debiera ser la motivación principal de un usuario. En el caso de los teléfonos móviles, el protocolo que utilizan es OBEX. Existe un kioslave que transparenta el acceso mediante éste protocólo. Como ya se mencionó, al clickear en el ícono de KBluetooth, se abrirá konqueror. Si se desea utilizar otra aplicación (que soporte kioslaves) como dolphin, el método de acceso es mediante la dirección obex://[DIRECCION_DEL_DISPOSITIVO]/


Control remoto
Ok, es divertido transferir música y fotos al teléfono móvil, puede ser útil también, pero lo interesante es hacer otras gracias. Al querer un teléfono con soporte Blutetooth y JAVA, una aplicación lógica y necesaria es tener un control remoto. Nuevamente gracias al consejo de Felipe, instalé anyremote. Una aplicación que habilita un servidor en nuestro computador que escucha los comandos enviados por el cliente java (en la página web puede ser descargado dentro de un rpm).
Anyremote funciona con perfiles de aplicaciones, y vía de comandos. Pero además provee de 2 frontends escritos en python para KDE y Gnome.
KAnyRemote es el frontend para KDE, es idéntico al de gnome, lo noté porque no quería partir la versión de kde, me bajé la de gnome, la ejecuté, creó la configuración local, y luego mágicamente la versión de kde funcionó (viva la reutilización de código!). Cosas del python.
En un inicio es algo complicado de entender, pero rápidamente te das cuenta que para cambiar el perfil de la aplicación que escucha, se debe detener el servicio, seleccionar dicha aplicación, y luego encenderlo nuevamente. La gracia está en la versatilidad de la aplicación, pues además de ejecutar comandos (por ejemplo llamadas dcop), también envía "tecleos", lo que permite controlar aplicaciones como impress.
Un problema frecuente al usar éste programa por primera ves, es cuando se intenta buscar el servicio, sin éxito. Ésto se debe a que el equipo servidor debe estar visible para los demás dispositivos (se puede habilitar temporalmente habilitando el modo descubrible desde kbluetooth/configuracion/dispositivos, kbluetooth por defecto asigna 3 minutos en modo descubrible, los cuales pueden ser modificados). Luego de realizar la conexión exitosa, ésta queda guardada en el dispositivo móvil.

El control remoto en pantalla es sencillo, asociando a cada número una función, asi como modos especiales, como el de amarok, el cual muestra la carátula del disco que actualmente se reproduce, dando la posibilidad de controlar las funciones mediante el uso del pad.

En arch, conseguí anyremote mediante la compilación de los paquetes de aur: anyremote y kanyremote. En ubuntu, bastó utilizar alien para convertir los paquetes rpm proveídos en la página oficinal en .deb.


Esto fue mi breve artículo acerca de las impresiones que tengo utilizando el bluetooth. La verdad no tengo quejas, todo funciono a la primera, y rápido, sin ralentizar mi sistema, como es en el caso de windows, donde el driver es algo molesto, y la aplicación de administración que instalé es algo grande.

consejos útiles:

Si deseamos conocer todos los servicios disponibles podemos utilizar el comando
sdptool browse

Enláces útiles
Anyremote Software de control remoto
Bluez La pila oficial para el protocolo bluetooth en linux

1 comentario:

  1. Muy bueno el articulo, pero haberle dado un enlace externo a bluez que solo lo sacas como nombre en un paquete de dependencia y es todo el subsistema bluetooth de linux xD.

    De los adaptadores bluetooth yo me suelo fijar también en la distancia a la que llegan, por mucho que ponga la clase luego ponen diferentes distancias de alcance en metros.

    ResponderEliminar

Su comentario es bienvenido y agradecido