Hlavní navigace

Synchronizujeme Linux a mobilní telefon

7. 10. 2009
Doba čtení: 5 minut

Sdílet

Když jsem si pořídil mobilní telefon, který uměl komunikovat s ostatními pomocí protokolu SyncML, rozhodl jsem se udělat si pořádek v kontaktech a všechno hezky synchronizovat s desktopem a netbookem. Nakonec jsem tuto myšlenku opustil pro celkovou lenost, ale vy se třeba se synchronizací dostanete dál.

Když se řekne synchronizace, každý si pravděpodobně představí něco jiného. Mě napadne synchronizace souborů mezi několika počítači, jiného zas vertikální synchronizace u grafických karet a třetího synchronizace kontaktů, úkolů a kalendáře mezi mobilem a jiným hardwarem. Samotný pojem má opravdu široký záběr, ale většinou jde o snahu mít jednu informaci na více místech s tím, že když ji na jednom upravím, projeví se změna na těch ostatních. Tak by se dal popsat i cíl tohoto článku.

I když je na tom podpora synchronizace v Linuxu relativně dobře, musím uznat, že na pohodlí jiných operačních systému zatím nedosahuje. Na druhou stranu je univerzální a neomezuje uživatele pouze na jeden produkt. Taktéž neomezuje uživatele ve vývoji, a když chce třeba přidat podporu nové aplikace, tak mu nic nebrání. Univerzálnost s sebou nese ale i problémy.

V linuxových distribucích se na synchronizaci používá nástroj OpenSync, případně jeho frontendy. Ten funguje tak, že si uživatel vytvoří profil, do něj nahází zařízení a programy, které se mají synchronizovat, klikne na tlačítko synchronizovat a nastává několik vteřin až minut ticho. OpenSync si stáhne to, co potřebuje od všech zúčastněných zařízení a programů, a data převede do nějakého společného formátu. Zde je čas pro magii, která rozhodne, které položky se změnily, které byly naopak přidané nebo které zmizely úplně. Že to není dokonalé, se přesvědčíte hned jak na vás vyběhne okénko se dvěma XML soubory a vy se musíte rozhodnout, která je ta správná verze. S podobnými problémy jsem se setkal hlavně u použití diakritiky, a také když jsem měl jméno a příjmení spojené na jedné straně a rozdělené na druhé. Podobně na tom jsou záznamy v kalendáři, které když obsahují diakritiku, tak se občas pro jistotu objeví na obou stranách dvakrát. Když tohle pomineme, jde o dobrý princip, který bude po pořádném otestování velmi praktický a pohodlný. Přes to co vám píšu nemusíte se děsit. Váš mobil nebo jiné zařízení může pracovat lépe a nebudete mít s OpenSync jediný problém. Dobrou radou v tomto případě je vybírat při rozhodování záznamy vždy od jedné strany, kde je potřebujete více a kde jsou kompletnější, a detaily doladit.

Nejčastěji budete určitě chtít synchronizovat mobil s vaším desktopem či note/netbookem. Společný jmenovatel v synchronizaci mobilních telefonů je SyncML. Po tímto názvem si můžeme představit formát či jazyk, založený na XML a spravovaný organizací Open Mobile Alliance. Na rozdíl od jiných standardů je na SyncML super, že ho výrobci ve svých telefonech opravdu podporují. To znamená, že když se vám podaří spojit váš mobilní telefon s vaším počítačem, a je velmi pravděpodobné, že třeba přes bluetooth se to povede, tak máte prakticky jistotu, že z telefonu svoje data dostanete. To vám pomůže minimálně k záloze telefonního seznamu, ale taktéž k té synchronizaci. SyncML podporuje také řada online služeb, takže si můžete synchronizovat informace z telefonu se vzdáleným serverem třeba přes GPRS.

I u SyncML je druhá strana mince, která je naznačená v záznamu na Wikipedii. Standard bohužel nepokrývá některé důležité věci, jako například název databáze. Když se vytváří spojení přes SyncML, je potřeba uživatelské jméno, heslo a název databáze a zrovna název databáze se u každého výrobce liší. Databází jsou zde myšleny jako třeba kontakty nebo záznamy v kalendáři. Další problém je, že standard uspokojivě pokrývá pouze synchronizaci proti serveru a výměna přes lokální spojení jako je třeba bluetooth nebo kabel je na tom hůř. Výrobci pak jsou nuceni tam „něco dát“, aby to fungovalo. Proto se pak v některých programech včetně OpenSync setkáváme s nekompatibilitou k některým telefonům.

Teď přejdeme k části, kde si ukážeme, co všechno OpenSync umí a jak se používá. Použijeme k tomu frontend Multisync. Instalace je jednoduchá, protože balíčky jsou v repositáři.

Nainstalujeme si balíčky: multisync, multisync-tools a libmultisync-plugin-all.

Tím jsme do systému přidali všechno, co budeme potřebovat. Pro další krok si nezapomeneme spárovat telefon s počítačem, na kterém pracujeme. Ve spouštěcí nabídce se objevila položka Multisync-gui. Po spuštění se nám objeví jednoduchá aplikace, která obsahuje vše, co potřebujeme.

opensync

Klikneme na tlačítko Přidat a zadáme název skupiny, třeba „Mobil-Evolution“.

opensync
opensync

Teď klikneme na Add Member a vybereme SyncML over OBEX client.

opensync

Opět klikneme na Add Member a přidáme třeba Evolution. Teď vidíme stejný formulář jako na začátku, ale doplněný o naše dva pluginy. Po kliknutí na plugin syncml-obex-client vidíme konfigurační soubor pluginu, takže s uživatelskou přítulností se to nepřehání. Bohužel to není výjimka. Plugin evo2-sync  má jako jediný formulář přítulný, kde si vybereme jaké databáze chceme synchronizovat.

opensync

Pro další pokračování budeme potřebovat nastavit plugin syncml-obex-client. Konfigurační soubor může vypadat třeba takto:

<?xml version="1.0"?>
<config>
<bluetooth_address>00:1D:98:08:D7:CA</bluetooth_address>
<bluetooth_channel>11</bluetooth_channel>
[...]
</config> 

Adresu bluetooth zařízení zjistíme v nějakém správci bluetoothových zařízení jako je Blueman, nebo přes příkazovou řádku, které se stejně nevyhneme.

$ hcitool scan
Scanning ...
        00:12:D2:A4:A8:B4       n/a
        00:1D:98:08:D7:CA       Cx 

Máme-li adresu, zjistíme, kde se nachází kanál se SyncML. To uděláme pomocí:

$ sdptool browse 00:1D:98:08:D7:CA
Browsing 00:1D:98:08:D7:CA ...
[...]
Service Name: SyncML Client
Service RecHandle: 0x1000e
Service Class ID List:
  UUID 128: 00000002-0000-1000-8000-0002ee000002
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 11
  "OBEX" (0x0008)
Language Base Attr List:
  code_ISO639: 0x656e
  encoding:    0x6a
  base_offset: 0x100
[...] 

Důležitá je položka „Channel: 11“. Tu vyplníme do konfiguračního souboru. Nakonec zaškrtneme, které databáze chceme synchronizovat. Ne všechny pluginy podporují všechny databáze. To by mělo být všechno, takže je čas kliknout na tlačítko Obnovit.

opensync

Po nějakém čase, kdy se stáhnou všechny položky, budete možná vyzváni k vyřešení nějakých problémů. Pak vše utichne, do mobilu i do Evolutionu se nahrají nová data, případně se upraví/promažou ta stará a synchronizace je dokončena. Je čas začít hledat škody. Když vše vypadá v pořádku, můžete synchronizaci bez problémů používat.

CS24_early

Do skupiny můžete přidat i další pluginy, které jsou k dispozici. Nejžádanější z nich bude pravděpodobně plugin pro synchronizaci s Googlem. Přidáme ho stejně jako dva předchozí. Konfigurace se provádí opět pomocí XML souboru, tentokrát trochu kratším. Do něj vyplníme jméno (na dvou místech) a heslo a tím by mělo být vše zařízeno. Mezi dalšími pluginy najdeme ještě synchronizaci s Palmem a „SyncML over HTTP Server“.

Závěr

Synchronizace v Linuxu na tom sice není moc dobře, ale s trochou péče dostaneme uspokojivý výsledek. Pokud nechcete používat klikátka nebo chcete třeba provádět automatickou synchronizaci na domácím serveru, tak vás určitě bude zajímat nástroj msynctool, který dokáže to samé co Multisync, jen z příkazové řádky. Skript, který bude kontrolovat přítomnost mobilu/notebooku by už neměl být takový problém. OpenSync se stále vyvíjí a v budoucnu můžeme čekat spolehlivější a použitelnější nástroj.

Byl pro vás článek přínosný?

Autor článku

Adam Štrauch je redaktorem serveru Root.cz a svobodný software nasazuje jak na desktopech tak i na routerech a serverech. Ve svém volném čase se stará o komunitní síť, ve které je již přes 100 členů.