Sincronización Nokia E71: Evolution (I)

[Nokia E71]

El Nokia E-71 es un buen smartphone, en un panorama, el de la telefonía móvil, un tanto desolador; donde priman los megapixeles, las mini-aplicaciones absurdas, juegecillos, y el mp3…. mucho mp3… Y donde cuesta Dios y ayuda encontrar un simple comando ping, un cliente FTP o cliente de correo capaz de firmar o cifrar un mail con un certificado standard… Tampoco suele existir aplicación especifica alguna que atienda la necesidad fundamental de sincronizar los datos -sin servicios intermediarios- con el escritorio en GNU/Linux. Aunque las bases de la compatibilidad están bien sentadas, en el caso del E71, con la implementación del standard SyncML, en sus versiones 1.1 y 1.2. Y en Ubuntu SyncML es atendido por Opensync (v0.22) y sus plugins. Vamos a ver como sacarle partido a esto, comenzando por Evolution.

Existen un montón de guías de como hacer un sincronización entre Evolution y un Nokia/symbian S60. La idea de estos articulos es, por un lado, atender a las especificidades de Ubuntu 9.04 (pocas) y las del Nokia E71-1 con firm 210.21.006 y Symbian S60-v3, y por otro, profundizar un poco más en el funcionamiento de opensync y el diagnóstico de problemas.

No estaría de más hacer una copia de seguridad de los datos de Evolution, antes de empezar. Para ello podemos usar los scripts de este wiki.

Los paquetes necesarios a instalar son: opensync-plugin-evolution, opensync-plugin-syncml,opensync-plugin-file,multisync-tools,opensyncutils,libsyncml-utils y multisync0.90. Este último es un GUI que nos hará un poco más cómodo crear los ficheros de configuración y lanzar el proceso de sincronización y que encontraremos después de instalado en el menú Aplicaciones=>Accesorios

sudo apt-get install opensync-plugin-evolution opensync-plugin-file  
                     opensync-plugin-syncml opensyncutils multisync-tools  
                     libsyncml-utils multisync0.90

En el E71

Vamos a crear un perfil de sincronización independiente del creado por defecto: PC Suite, y que llamaremos Evolution:

Desde el menú del E71 vamos a Herramientas=>Sinc.

E71-Profile-1.jpg

Desde opciones le indicamos Perfil sinc. nuevo, y le decimos que copie las opciones de PC Suite como punto de partida de nuestro nuevo perfil.

Nos pedirá un nombre para el nuevo perfil; lo llamamos Evolution.

 
 
 

Ahora en Ajustes de conexión:

E71-Profile-2.jpg
  • Versión del servidor: 1.1. Versión del protocolo SyncML que usaremos, pues la 1.2 a mi me daba error.
  • Portador de datos: Bluetooth
  • Dirección de host: Evolution

El resto lo podemos dejar igual. Es decir sin Nombre de usuario ni contraseña, y permitiendo y aceptando peticiones de sincronización automáticamente. Ya que al ser la sincronización por bluetooth, no sería posible que alguien lanzara el proceso de sincronización sin permiso.

Por último en Aplicaciones deshabilitaremos la sincronización de Notas y Bookmarks. Cambiando Incluir en sincroniz. a “No”. Por lo tanto dejamos incluidos para sincronización; Guía y Agenda. La sincronización de estas dos las dejamos como bidireccionales y los nombres de las bases de datos remotas también quedan los mismos; Contacts y Calendar.

En Ubuntu

La configuración la podríamos hacer con el GUI mencionado al principio, pero yo prefiero para esto la línea de comandos:

1.- Creamos un grupo de sincronización denominado evo2-e71:

msynctool --addgroup evo2-E71

A este grupo añadiremos los plugins necesarios; uno que que traslade los datos en formato SycnML vía Bluetooth-OBEX desde el teléfono (syncml-obex-client), y otro que los traslade a los ficheros de datos correspondientes de Evolution ( evo2-sync). Los plugins disponibles (dependiendo los que tengas instalados):

$ msynctool --listplugins
  Available plugins:
  gnokii-sync
  file-sync
  evo2-sync
  syncml-http-server
  syncml-obex-client

2.- Añadimos evo2-sync:

msynctool --addmember evo2-E71 evo2-sync

Y lo configuramos:

msynctool --configure evo2-E71 1

Se lanzará el editor nano (pico) mostrandonos el contenido:

< ?xml version="1.0"?>
<config>
  <address_path>default</address_path>
  <calendar_path>default</calendar_path>
  <tasks_path>default</tasks_path>
</config>

Las rutas default apuntan a los ficheros de evolution en sus paths por omisión:

   address_path  => file:///home/USUARIO/.evolution/addressbook/local/system
   calendar_path => file:///home/USUARIO/.evolution/calendar/local/system
   tasks_path     => file:///home/USUARIO/.evolution/tasks/local/system

Donde USUARIO es nuestro nombre de usuario en Ubuntu. Estas rutas pueden cambiarse si fuera necesario.

3.- Para el otro plugin necesitamos conocer la MAC de Bluetooth del E71. Para hacer esto tenemos que configurarlo para que sea visible a todos: (Conectividad=>Bluetooth=>Visibilidad de mi teléfono: Mostrar a todos)

$ hcitool scan
Scanning ...
	00:24:FF:FF:FF:FF	Nokia E71

Y el canal de SyncML:

$ sdptool search SYNCML
  Inquiring ...
  Searching for SYNCML on 00:24:FF:FF:FF:FF ...
  Service Name: SyncMLClient
  Service RecHandle: 0x1000b
  Service Class ID List:
    UUID 128: 00000002-0000-1000-8000-0002ee000002
  Protocol Descriptor List:
    "L2CAP" (0x0100)
    "RFCOMM" (0x0003)
      Channel: 10
  ....

4.- Con estos datos añadimos y configuramos como plugin 2, syncml-obex-client:

$ msynctool --addmember evo2-E71 syncml-obex-client 2
$ msynctool --configure evo2-E71 2

Se comentan los datos a modificar, que son solo tres con respecto a la configuración por omisión: bluetooth_address, bluetooth_channel e identifier.

< ?xml version="1.0"?>
<config>
  <!-- (Only for bluetooth) The bluetooth address if the bluetooth mode is selected -->
  <!-- *** La MAC del E71 -->
 <bluetooth_address>00:24:FF:FF:FF:FF</bluetooth_address>
   <!-- (Only for bluetooth) The bluetooth channel to use. `sdptool browse $MAC` to search for the correct channel -->
   <!-- *** El canal SyncMLClient hallado--> 
 <bluetooth_channel>10</bluetooth_channel>
   <!-- (Only for USB) The usb interface number of the SYNCML-SYNC target. use syncml-obex-client -u (you will need access to the USB raw device) to find it. -->
  <interface>0</interface>
   <!-- The string that the plugin will use to identify itself. Some devices need a special string here. -->
   <!-- *** El nombre de host que hemos puesto en el E71 -->
  <identifier>Evolution</identifier>
   <!-- The syncml version to use: 0 for 1.0, 1 for 1.1 and 2 for 1.2 -->
  <version>1</version>
   <!-- if the plugin should use wbxml -->
  <wbxml>1</wbxml>
   <!-- The username to use. Leave empty to not require a username -->
  <username></username>
   <!-- the password for the username -->
  <password></password>
   <!-- sets the connection type to use. 5 means obex over usb, 2 means obex over bluetooth -->
  <type>2</type>
   <!-- If wbxml is enabled, defines wether the wbxml should use string tables -->
  <usestringtable>0</usestringtable>
   <!-- Never send ADD command, but send REPLACE (not needed normally) -->
  <onlyreplace>0</onlyreplace>
  <!-- Workaround around for mobile phones which only use local timestamps and _no_ UTC timestamps! -->
  <onlylocaltime>0</onlylocaltime>
   <!-- Sets the maximum allowed size in bytes of incoming messages (some device need this option set). Example: 10000 -->
  <recvlimit>0</recvlimit>
  <maxobjsize>0</maxobjsize>
   <!-- The name of the contacts db. Must be the same as the phones sends -->
  <contact_db>Contacts</contact_db>
   <!-- The name of the calendar db. Must be the same as the phones sends -->
  <calendar_db>Calendar</calendar_db>
   <!-- The name of the note db. Must be the same as the phones sends -->
  <note_db>Notes</note_db>
</config>

multisync0.90.png

5.- Ahora prefiero recurrir al GUI multisync para lanzar las sincronizaciones. Quedando solo pulsar Actualizar. Y se observará la actividad en Ubuntu y la pantalla del teléfono.

Los conflictos que surjan entre entradas nos serán reportados en una ventana pidiendonos que indiquemos que versión prevalece, Evolution o teléfono, y dandonos la opción de “recordar la elección” (Remenber my decision) para no tener que preguntar más, si surge algún otro conflicto más adelante en la sincronización. También, se nos da la opción de indicar que se elija la más reciente (Newer).

multisync0.90-conflicts.png

Con esto tenemos resuelta la sincronización básica del E71 con Evolution.

Diagnóstico y problemas

» No olvides deshabilitar la sincronización de las Notas en el perfil que hemos creado en el E71. Ya que si no la transferencia se colgará. (Can’t synchronise Notes between nokia n95 and evolution : multisync hangs up)

» Si queremos, chequear la transferencia OBEX del E71, podemos ver los datos raw enviados:

Para la guía:

syncml-obex-client -b 00:24:FF:FF:FF:FF 10 --slow-sync text/x-vcard Contacts --wbxml
                   --identifier "Evolution" --dumpinfo --version 1.1 --useStringTable

Para el calendario:

syncml-obex-client -b 00:24:FF:FF:FF:FF 10 --slow-sync text/x-vcalendar Calendar --wbxml
                   --identifier "Evolution" --dumpinfo --version 1.1 --useStringTable

Esto no sincroniza.

» Los ficheros de configuración se almacenan en el directorio $HOME/.opensync-0.22

» Si por algún motivo, restauración de backup etc.., no se sincronizan algunas entradas borrar los ficheros:

   $HOME/.evolution/addressbook/local/system/evo2-E71.changes.db
   $HOME/.evolution/calendar/local/system/calendar.ics-evo2-E71.db
   $HOME/.evolution/tasks/local/system/tasks.ics-evo2-E71.db

Y borrar y recrear el perfil.

Si quieres hacer algún comentario a esta página hazlo en la entrada de presentación.