Синхронизация содержимого телефона и Evolution на Linux ПК при помощи SyncML |
[исправить] |
В статье описывается способ синхронизации по USB-кабелю (технология SyncML,
протоколы TCP/IP и HTTP) календаря, задач, заметок и контактов мобильного
телефона с компьютером. На компьютере установлена операционная система Linux
(Debian/Ubuntu) и клиент пакета совместной работы Evolution.
Рассматриваемый в качестве примера гаджет от Sony Ericsson представляет
собой аппарат начального уровня, не является смартфоном, использует собственную
закрытую программную платформу, а среди прочих сетевых функций поддерживает
SyncML и имеет функцию модема.
Схема синхронизации и программное обеспечение
Мысль использовать Интернет-технологии для синхронизации по USB-кабелю с
компьютером возникла после нескольких бесперспективных попыток сделать это
более гуманными средствами:
Фирменный софт Sony Ericsson под Wine с первого раза не запустился (если бы
запустился - пришлось решать проблему интеграции продукта Microsoft к
Evolution). Требуемых функций для Wammu/Gammu через IrSync телефон не поддерживал.
В MultiSync\OpenSync трудно быстро разобраться (документации мало,
литература по теме не соответствует современному состоянию пакета).
В KDE есть некие утилиты для синхронизации, но у нас нет KDE.
Основные предпосылки для реализации схемы:
Во-первых компьютер и телефон можно объединить в сеть по USB-кабелю. Linux
при подключении телефона создает сетевой интерфейс, о чем свидетельствует
запись в системном журнале:
usb0: register 'cdc_ether' at usb-0000:00:1d.0-2, CDC Ethernet Device, 02:80:37:ec:02:00
Утилита tcpdump на этом интерфейсе показывает, что телефон во всю шлет
DHCP-запросы на получение IP-адреса (встроенный модем).
Во-вторых, в телефоне есть клиент для работы с удаленным SyncML-сервером.
Собственно схема локальной синхронизации:
Органайзер (календарь, заметки, задачи, контакты) / Телефон -> USB (HTTP,
TCP/IP) -> Компьютер (локальный SyncML-сервер) / Evolution.
Этапы решения задачи:
1.Настроить IP-сеть между компьютером и телефоном.
2.Установить на компьютере локальный SyncML-сервер.
3.Указать ПО синхронизации телефона обращаться к этому серверу.
4.Синхронизировать SyncML-сервер и Evolution.
Программное обеспечение:
Локальный SyncML-сервер. Здесь перечислены основные варианты,
как самостоятельных продуктов, так и в составе систем совместной работы. Выбран
Funambol Server. У него много
недостатков: он тяжелый, медленный, пришлось повозиться с подключением Mysql;
но главное его достоинство: собственно для синхронизации настраивать ничего не
нужно. Альтернативами (для настойчивых) могут выступать: HTTP-сервер из пакета
SyncEvolution, Synthesis SyncML DEMO или HTTP-сервер MultiSync\OpenSync.
Для клиента синхронизации Evolution и Funambol выбран SyncEvolution.
1. Настройка сети между телефоном и компьютером по USB-кабелю
1.1.На телефоне:
В "параметрах Интернет" установить "Разрешить местные подключения".
В "параметрах USB" можно выбирать различные варианты доступа к сети (Доступ
к Интернету) - "Интернет через телефон" и "Интернет через компьютер". Здесь
описан вариант "Интернет через компьютер", поэтому нужно его выбрать.
Если на телефоне есть возможность прописать для USB-соединения статический
IP-адрес и маску подсети, то нужно прописать 192.168.2.10 255.255.255.0 и не
настраивать на компьютере DHCP-сервер, а только установить на интерфейсе usb0
статический IP-адрес.
1.2.Настройка DHCP-сервера и сети на компьютере:
Чтобы выдавать IP-адрес телефону установим на компьютере DHCP-сервер:
sudo apt-get install dhcp3-server
Настроим его:
В файле /etc/default/dhcp3-server пропишем:
interfaces=usb0
В файле /etc/dhcp3/dhcpd.conf:
subnet 192.168.2.0 netmask 255.255.255.224 {
range 192.168.2.10 192.168.2.20;
}
полезно также закомментировать:
#option domain-name "example.org";
#option domain-name-servers ns1.example.org, ns2.example.org;
Устанавливаем статический IP-адрес на интерфейс usb0 (телефон должен быть подключен):
sudo ifconfig usb0 192.168.2.2 netmask 255.255.255.0
Запускаем DHCP-сервер:
sudo /etc/init.d/dhcp3-server start
Проверяем сеть:
ping 192.168.2.10
2. Настройка локального SyncML-сервера
2.1.Установка Funambol
Качаем отсюда. Устанавливаем:
sudo ./funambol-9.0.0.bin
2.2.Настройка Mysql
Родная база данных в Debian\Ubuntu проработает недолго (по крайней мере у меня).
Лучше прикрутить Mysql. Устанавливаем Mysql:
sudo apt-get install mysql-server
Создаем базу данных:
mysql> create database funambol;
mysql> GRANT ALL PRIVILEGES ON funambol.* TO 'funambol'@'localhost' IDENTIFIED BY 'funambol';
Качаем mysql-connector-java отсюда.
Копируем файл mysql-connector-java-5.1.14-bin.jar в:
/opt/Funambol/tools/jre-1.5.0/jre/lib/ext
/opt/Funambol/pim-listener/lib
/opt/Funambol/inbox-listener/lib
Редактируем файл ds-server/install.properties:
Исправляем:
dbms=mysql
Добавляем:
jdbc.classpath=/opt/Funambol/tools/jre-1.6.0/lib/ext/mysql-connector-java-5.1.14-bin.jar
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost/funambol?characterEncoding=UTF-8
jdbc.user=funambol
jdbc.password=funambol
Комментируем:
#jdbc.classpath=../tools/hypersonic/lib/hsqldb.jar
#jdbc.driver=org.hsqldb.jdbcDriver
#jdbc.url=jdbc:hsqldb:hsql://localhost/funambol
#jdbc.user=sa
#jdbc.password=
Запускаем повторную инсталяцию:
sudo /opt/Funambol/bin/install.cmd
2.3.Настройка Funambol
Команды для запуска\остановка сервиса:
sudo /opt/Funambol/bin/funambol-server start
sudo /opt/Funambol/bin/funambol-server stop
Меняем пароль администратора и гостя, используя утилиту администрирования:
sudo /opt/Funambol/admin/bin/funamboladmin
3. Настройка синхронизации на телефоне
Сохраняем в надежное, тихое место все ценное и нужное, что есть.
В меню "Синхронизация" создаем новую учетную запись
Адрес сервера: http://192.168.2.2:8080/funambol/ds
Имя пользователя: guest
Пароль: guest
Выбираем приложения: Контакты, Календарь, Задания, Заметки
Настраиваем имена базы:
для контактов: card
для календаря: event
для заданий: task
для заметок: note
Вуаля. Синхронизируем телефон и SyncML-сервер.
4. Настройка SyncEvolution на компьютере
Сохраняем в надежное, тихое место все ценное и нужное, что есть.
Качаем пакет для Debian\Ubuntu. Устанавливаем:
sudo dpkg -i syncevolution-evolution_1.1.1-2_i386.deb
Запускаем гуишную утилиту "Синхронизация" (sync-ui). В ней настраиваем службу Funambol:
Имя пользователя: guest
Пароль: guest
Адрес сервера: http://192.168.2.2:8080/funambol/ds
Папки прописываем, как на телефоне (имена базы).
Сохраняем. Синхронизируем Evolution и SynML-сервер.
Возможно, что графическая утилита не сможет первый раз корректно определить
направление синхронизации и т.д., поэтому сообщит об ошибке.
В таких случаях можно использовать интерфейс командной строки:
syncevolution --sync refresh-from-server funambol calendar
(Обновить данные сервера в Evolution) и т.п.
При синхронизации контактов был замечен глюк: при изменении существующей записи
из evolution в телефон поле email передается, а поле домашний телефон - нет.
5. Дополнительная автоматизация
Так как мне ничего кроме локальной синхронизации не нужно, все вспомогательные
манипуляции на компьютере были связаны с настройкой сетевого интерфейса usb0
(сеть настраивается редактированием непосредственно файла
/etc/network/interfaces без всяких вспомогательных средств).
Отрывок файла /etc/network/interfaces:
allow-hotplug usb0
iface usb0 inet static
address 192.168.2.2
netmask 255.255.255.0
post-up /etc/init.d/dhcp3-server start
post-up /opt/Funambol/bin/funambol-server start
down /etc/init.d/dhcp3-server stop
down /opt/Funambol/bin/funambol-server stop
Остается только подключить телефон к компьютеру и нажимать кнопку
"Синхронизировать" в sync-ui и выбирать соответствующий пункт меню в телефоне.
|
|
|
|
Раздел: Корень / Пользователю / Мобильные телефоны |