Sincronizando Evolution y un teléfono Siemens por Bluetooth
Monday, 10 December 1708
Inicio | Documentacion | Software | Acerca de

Documentación y Software
Inicio
Documentacion
Software
Acerca de


Sincronizando Movil y PC por Bluetooth
(c) 2004 Eduardo Fco. Urrea Alcaraz

0.- Terminales sparring (los que me sirvieron para hacer pruebas):
- Sonyericsson Z600
- Nokia 7650

0.1.- Dispositivo conectado al ordenador de pruebas:
- Llave USB MSI Bluetooth.

1.- Kernel utilizado: Versión 2.6.7 limpio

2.- Proyecto Bluez: http://www.bluez.org/

3.- Parche utilizado: http://www.holtmann.org/linux/kernel/patch-2.6.7-mh2.gz

4.- Configuración en el Kernel:

Device Drivers  --->
 Networking support  --->
  <M> Bluetooth subsystem support  --->
      <M>   L2CAP protocol support
      <M>   SCO links support
      <M>   RFCOMM protocol support
            [*]     RFCOMM TTY support
      <M>   BNEP protocol support
            [ ]     Multicast filter support
         [*]     Protocol filter support
      < >   HIDP protocol support
            Bluetooth device drivers  --->
       <M> HCI USB driver
           [*]   SCO (voice) support
       <M> HCI UART driver
           [*]   UART (H4) protocol support
           [ ]   BCSP protocol support
       <M> HCI BCM203x USB driver
       <M> HCI BlueFRITZ! USB driver
       <M> HCI VHCI (Virtual HCI device) driver

5.- Utilidades que habra que instalar:

 $ apt-get install bluez-cups bluez-hcidump bluez-pin bluez-utils

5.- Detectando dispositivos con Bluetooth activado:

 $ hcitool scan

 ------------------------------------------------
|        MAC                 NOMBRE TERMINAL     |
 ------------------------------------------------
|  00:0A:D9:B6:72:BB          Servitux Z600      |
 ------------------------------------------------
|  00:02:EE:A5:4F:91           uCaLu N7650       |
 ------------------------------------------------

6.- Haciendo PING a los dispositivos para cerciorarnos que funciona el enlace:

 $ l2ping 00:0A:D9:B6:72:BB
Ping: 00:0A:D9:B6:72:BB from 00:10:DC:E9:B1:FD (data size 20) ...
0 bytes from 00:0A:D9:B6:72:BB id 200 time 40.90ms
0 bytes from 00:0A:D9:B6:72:BB id 201 time 49.98ms
2 sent, 2 received, 0% loss

 $ l2ping 00:02:EE:A5:4F:91
Ping: 00:02:EE:A5:4F:91 from 00:10:DC:E9:B1:FD (data size 20) ...
0 bytes from 00:02:EE:A5:4F:91 id 200 time 29.69ms
0 bytes from 00:02:EE:A5:4F:91 id 201 time 28.18ms
2 sent, 2 received, 0% loss
7.- Detectando los servicios que vienen con el movil (lo que se puede hacer con ellos):

 $ sdptool browse
+---------------------------------
|Inicio de servicios de Nokia 7650
+---------------------------------
Inquiring ...
Browsing 00:02:EE:A5:4F:91 ...
Service Name: Fax
Service RecHandle: 0x10000
Service Class ID List:
  "Fax" (0x1111)
  "Generic Telephony" (0x1204)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 1
Profile Descriptor List:
  "Fax" (0x1111)
    Version: 0x0100

Service Name: Dial-up Networking
Service RecHandle: 0x10001
Service Class ID List:
  "Dialup Networking" (0x1103)
  "Generic Networking" (0x1201)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 1
Profile Descriptor List:
  "Dialup Networking" (0x1103)
    Version: 0x0100

Service Name: Bluetooth Serial Port
Service RecHandle: 0x10002
Service Class ID List:
  "Serial Port" (0x1101)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 2
Language Base Attr List:
  code_ISO639: 0x656e
  encoding:    0x6a
  base_offset: 0x100

Service Name: OBEX Object Push
Service RecHandle: 0x10003
Service Class ID List:
  "OBEX Object Push" (0x1105)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 9
  "OBEX" (0x0008)
Profile Descriptor List:
  "OBEX Object Push" (0x1105)
    Version: 0x0100

Service Name: OBEX File Transfer
Service RecHandle: 0x10004
Service Class ID List:
  "OBEX File Transfer" (0x1106)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 10
  "OBEX" (0x0008)
Profile Descriptor List:
  "OBEX File Transfer" (0x1106)
    Version: 0x0100
+------------------------------
|Fin de servicios de Nokia 7650
+------------------------------

+-----------------------------------------
| Inicio de servicios de Sonyericsson Z600
+-----------------------------------------
Browsing 00:0A:D9:B6:72:BB ...
Service Name: Dial-up Networking
Service RecHandle: 0x10000
Service Class ID List:
  "Dialup Networking" (0x1103)
  "Generic Networking" (0x1201)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 1
Profile Descriptor List:
  "Dialup Networking" (0x1103)
    Version: 0x0100

Service Name: Voice gateway
Service RecHandle: 0x10002
Service Class ID List:
  "Headset Audio Gateway" (0x1112)
  "Generic Audio" (0x1203)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 3
Profile Descriptor List:
  "Headset" (0x1108)
    Version: 0x0100

Service Name: Serial Port 1
Service RecHandle: 0x10003
Service Class ID List:
  "Serial Port" (0x1101)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 4

Service Name: Serial Port 2
Service RecHandle: 0x10004
Service Class ID List:
  "Serial Port" (0x1101)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 5

Service Name: OBEX Object Push
Service RecHandle: 0x10005
Service Class ID List:
  "OBEX Object Push" (0x1105)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 10
  "OBEX" (0x0008)
Profile Descriptor List:
  "OBEX Object Push" (0x1105)
    Version: 0x0100

Service Name: IrMC Synchronization
Service RecHandle: 0x10006
Service Class ID List:
  "IrMCSync" (0x1104)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 11
  "OBEX" (0x0008)
Profile Descriptor List:
  "IrMCSync" (0x1104)
    Version: 0x0100

Service Name: HF Voice gateway
Service RecHandle: 0x10007
Service Class ID List:
  "" (0x111f)
  "Generic Audio" (0x1203)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 6
Profile Descriptor List:
  "" (0x111e)
    Version: 0x0100

Service Name: OBEX Basic Imaging
Service RecHandle: 0x1000b
Service Class ID List:
  "" (0x111b)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 15
  "OBEX" (0x0008)
Profile Descriptor List:
  "" (0x111a)
    Version: 0x0100

Service Name: OBEX File Transfer
Service RecHandle: 0x1000f
Service Class ID List:
  "OBEX File Transfer" (0x1106)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 7
  "OBEX" (0x0008)
Profile Descriptor List:
  "OBEX File Transfer" (0x1106)
    Version: 0x0100
+--------------------------------------
| Fin de servicios de Sonyericsson Z600
+--------------------------------------

8.- Explicación de lo que es cada servicio:
  • Dial-up Networking: Como nos estaremos imaginando, este servicio del movil es para poder hacer llamadas y conectar a la red de un PC hacia el movil, haciendo de MODEM. Acceso remoto a redes.
  • Voice gateway: Servicio que permite hacer llamadas telefónicas sobre una conexión Bluetooth, poder pasar la voz por bluetooth.
  • Serial Port X: Pues como su nombre indica, se pueden crear puertos series virtuales con conexiones bluetooth, para que la computadora los interprete como si de un puerto serie fuera.
  • OBEX Object Push: Transferencia de objectos (tarjetas de visita, aplicaciones...) por bluetooth.
  • IrMC Synchronization: Servicio que se utiliza para sincronizar la agenda, calendario o tareas del movil al PC y viceversa. En principio segun he leido es utilizado por las aplicaciones de Microsoft, pero ya buscaremos información de como sacarle jugo a este servicio del movil.
  • HF Voice gateway: Esto es igual que el anterior "Voice Gateway" pero de Alta Frecuencia (HF -> High Frequency)
  • OBEX Basic Imaging: Transferencia basico de imagenes por bluetooth.
  • OBEX File Transfer: Servicio que provee de un FTP para el movil, para descargar y subir cosas al movil con Bluetooth.
  • Fax: Pues como su nombre indica, es un servicio de Fax. Configurandolo desde el PC, el movil puede hacer de Fax tanto para enviar como para recibir.
9.- Utilizando la transferencia de ficheros:

Yo utilizo kde-bluetooth que se puede descargar desde http://kde-bluetooth.sourceforge.net/, para gnome hay otro que se llama gnome-bluetooth y se puede descargar desde http://usefulinc.com/software/gnome-bluetooth/. Seguramente, estos dos paquetes esten ya en vuestras distribuciones (yo utilizo Debian) y podreis bajaros el paquete sin tener que compilar. Aún así, si no estuvieran en vuestra distribución, siempre podeis bajaros los fuentes e instalarlos :)

En mi caso hare la instalación con el paquete "kdebluetooth" de Debian y podemos instalarlo de la siguiente manera:

Añadimos en el fichero /etc/apt/sources.list la linea:

  deb http://www.stud.uni-karlsruhe.de/~uddw/debian ./

En este espacio se mantiene el paquete debian de kdebluetooth, por lo tanto no es malo tener esa linea allí si utilizamos este programa. Y tampoco es malo entrar de vez en cuando a su pagina web, si lo vamos a utilizar. Ejecutamos
lo siguiente:

 $ apt-get install kdebluetooth

Solo comentare que para arrancar el servidor de bluetooth de kde, te tienes que ir a la opción Sistema y pulsas en la aplicación kbluetoothd, cuando hayas pulsado, veras como aparece en tu barra de herramientas un icono que referencia a la conexión bluetooth, seguramente lo tengas en color gris, eso significa que no estan pasando datos por la conexión de bluetooth.

Pues vamos a probar a pasar algun dato, por ejemplo, vamos a subir una imagen (en caso de que nuestro terminal tenga pantalla a color y permita la subida de imagenes).

Pues bien, vamos a conectar el terminal con nuestro PC. Nos vamos al fichero /etc/bluetooth/hcid.conf y vamos a configurar nuestro sistema bluetooth para que permita conexiones desde terminales externos, la configuración que voy a poner adelante es la que tendreis que utilizar, solo tendreis que cambiar algunos datos que evidentemente cambiaran con vuestros dispositivos (direcciones
fisicas de los dispositivos o MAC).

#fichero /etc/bluetooth/hcid.conf

options {
        # Automaticamente inicializa los nuevos dispositivos
        autoinit yes;

        # Modo de seguridad empleado
        #   none - Seguridad desactivada
        #   auto - Usa un PIN local para conexiones entrantes (de los  terminales)
        #   user - Siempre pregunta al usuario por un PIN
        #
        security auto;

        # Modo de Negociación
        #   none  - Negociación desactivada
        #   multi - Disponible negociación con cualquier dispositivo
        #   once  - Negociar una vez y denegar sucesivos intentos
        pairing multi;

        # Utilidad para el PIN
        pin_helper /usr/bin/bluez-pin;
}

# Configuración por defecto para los dispositivos HCI
device {
   # Dirección fisica del dispositivo Bluetooth que esta conectado al Ordenador
        00:10:DC:E9:B1:FD; # Esto tendreis que cambiarlo

   # Nombre de dispositivo Bluetooth del Ordenador
        hci0; # Esto es posible que sea el mismo

        # Nombre local del dispositivo, nombre que aparecera al buscar dispositivos Bluetooth
        #   %d - ID del dispositivo (si es el primero, sera 0)
        #   %h - Nombre de host del dispositivo
        name "Lynx Server";

        # Clase local del dispositivo (mirar paginas man de hcid.conf para más información)
   # Pongo que es un ordenador sin calificar, que segun las paginas mas es la clase 0x100
        class 0x100;

        # Escanear para investigar y encontrar dispositivos Bluetooth activados
        iscan enable;
        pscan enable;

        # Modo por defecto del de la politica de la conexión
        #   none   - Politica no especificada
        #   accept - Siempre acepta conexiones entrantes
        #   master - Convertir el ordenador en master para las conexiones entrantes,
        #            denegar con reglas las conexiones salientes
        #
        lm accept;

        # Politica por defecto de la conexión
        #   none    - Politica no especificada
        #   rswitch - Disponible reglas
        #   hold    - allow hold mode
        #   sniff   - Disponible modo sniffer
        #   park    - allow park mode
        #
        lp rswitch,hold,sniff,park;

        # Activar/desactivar Autentificación y Encriptación
        auth enable;
        #encrypt enable;

Para descubrir cual es la dirección fisica del dispositivo Bluetooth del ordenador, ejecutamos el comando:

 $ hcitool dev
   Devices:
           hci0    00:10:DC:E9:B1:FD

Con este comando sabes que nombre de dispositivo y la dirección fisica del mismo.

Ahora configuraremos un PIN, que sera el que tendra que introducir el terminal para conectar al dispositivo Bluetooth del ordenador, para ello, editamos el fichero /etc/bluetooth/pin y ponemos alli una cifra de 4 numeros, por ejemplo:

# fichero /etc/bluetooth/pin
1122

Cuando en el terminal telefonico busquemos dispositivos Bluetooth y nos salga el nombre que le hemos dado al ordenador, pulsaremos para asociarnos a él, nos preguntara un codigo de acceso o PIN e introduciremos ese numero que hemos puesto en ese fichero, si todo va bien, te dira que estas asociado al dispositivo y desde este momento ya puedes pasar ficheros del ordenador al movil y viceversa.

10.- Asociando canales bluetooth a dispositivos del ordenador:

¿Para que sirve asociar un canal bluetooth a un dispositivo del ordenador? pues muy simple, por ejemplo, imaginaos que vuestro terminal tiene un servicio de "Serial port" y que quereis configurarlo para conectar al dispositivo. Pues bien, lo que tenemos que hacer es primero buscar la dirección fisica del dispositivo ejecutando lo siguiente:

 $ hcitool scan
   Scanning ...
            00:0A:D9:B6:72:BB       Servitux Z600

Ya tenemos la dirección fisica, ahora, tenemos que saber en que canal tiene el puerto serie y para eso ejecutamos lo siguiente:

 $ sdptool browse
...
Service Name: Serial Port 1
Service RecHandle: 0x10003
Service Class ID List:
  "Serial Port" (0x1101)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 4
...

Nos interesa saber en que canal esta nuestro puerto serie del movil, en mi caso, mi movil tiene dos puertos series, escojo el primero y veo que el canal es 4, pues bien, ahora vamos al fichero /etc/bluetooth/rfcomm.conf y ponemos lo siguiente:

#fichero /etc/bluetooth/rfcomm.conf

rfcomm2 {
        # Operación que vamos a realizar, en este caso vamos a enlazar un dispositivo del pc a un canal del movil
        bind yes;

        # Dirección fisica del dispositivo Bluetooth
        device 00:0A:D9:B6:72:BB;

        # Canal Bluetooth del terminal donde vamos a conectar
        channel 4;

        # Descripción de la conexión
        comment "Serial Port 1";
}

Pues bien, ahora solo queda reiniciar el HCI ejecutando /etc/init.d/bluez-utils restart y ya tendremos configurado nuestro dispositivo bluetooth del ordenador, ahora toca buscar con el terminal nuestra maquina para asociarnos y lo hacemos. Cuando nos diga que nos hemos asociado ya podremos entrar graficamente con el kbluetoothd para subir, coger o borrar ficheros del terminal movil. Esta operación se puede hacer pulsando el boton derecho del raton en el icono
de bluetooth del ordenador y en la opción Open Recent, veremos seguramente con toda probabilidad nuestro terminal movil, pues bien, pulsamos en el y se abra un konqueror con el contenido de los servicios del movil, ahora ya tenemos acceso y
podemos hacer las pruebas que queramos, metiendonos por ejemplo a OBEX File transfer o algun otro servicio que contenga nuestro movil. Cuidado con lo que borrais, recordar que estais dentro del movil y que borrar un fichero importante puede ser motivo de deterioro del mismo.

11.- Sincronizar Evolution con nuestro terminal movil:

Necesitaremos los siguientes paquetes para poder sincronizar con evolutión cualquier dispositivo bluetooth:

 $ apt-get install multisync libmultisync-plugin-irmc libmultisync-plugin-irmc-bluetooth libmultisync-plugin-evolution

Con este comando nos instalara lo necesario para hacer lo antes descrito :)

Ahora que tenemos ya conectado el terminal con el ordenador por bluetooth y que tenemos nuestro puerto serie del terminal movil asociado a un dispositivo del ordenador, vamos a configurar el multisync para que sincronice los datos, para ello pulsamos en "Archivo -> New sync Pair" y nos saldra una ventana para configurar el multisync para nuestro terminal.

En esa pantalla, en la pantalla "Plugins" vamos a poner en "First plugin" la opción "IrMC Mobile Device" y en Second Plugin pondremos "Ximian Evolution". En "Display Name" le pondremos un nombre para saber a que se refiere ese enlace y en "Data type to synchronize" pondremos lo que queremos que sincronice el terminal movil con ximian evolution, yo he puesto todo, calendario, contactos y tareas.

Ahora pulsamos en el boton "Options" de la opción "IrMC Mobile Device" y nos saldra otra pantalla. En la opción "Conection" pondremos que en "Conection Type" la opción Cable, ya que por problemas en este momento de multisync con el kernel 2.6.x, no me salia para seleccionar la opción bluetooth y lo hice engañando al sistema, haciendole creer que el dispositivo X estaba conectado por puerto serie
al terminal movil, por eso anteriormente configuramos el puerto serie del movil a un dispositivo rfcomm :)

En "Device Manufacture" podemos dejar el que este por defecto, yo tengo puesto "Sonyericsson/Ericsson" que es justamente el terminal que tengo. La conexión se hara por el puerto "/dev/rfcomm2", si miramos bien el fichero rfcomm.conf, vemos que el dispositivo que enlazamos al canal 4 del terminal movil por bluetooth, es el Puerto serie. Pues bien, por aqui todo correctamente, ahora solo falta que configures las demás opciones como te parezcan bien para la sincronización y pulsar en "Aceptar". Te aparecera en el multisync la configuración que has configurado y en la columna de "Status" te pondra algo parecido a "Waiting for change". Si en este momento cambiaramos algun contacto del movil o viceversa, o tuvieramos contactos en el movil o en el evolutión, empezaria a actualizarse y el "Status" cambiaria.

Hay que cerciorarse que el usuario que ejecuta el multisync, tiene permisos de escritura y lectura en el dispositivo rfcomm que hayamos puesto en la configuración, en mi caso es el rfcomm2 y vemos que los permisos de grupo es de dialout, pues bien, mi usuario lo he metido en el grupo dialout y todo solucionado :)

Ahora solo os queda que trasteeis por vosotros mismos y ver la verdadera potencia de esta herramienta, sobre todo si sois personas de negocios, que necesitais algo que se asemeje a una PDA y no podeis conseguirla por el dinero que cuesta una, ya sabeis desde ahora que desde un movil con bluetooth se puede hacer muchas cosas que se puede hacer con una PDA.

12.- Paginas de interes:

http://www.zonabluetooth.com/
http://www.holtmann.org/linux/bluetooth/
  Last modified: Thu, 22 December 2016  Contenidos © ServiTux Servicios Informáticos