Michal Čihař - Mobilní telefony v Linuxu

Mobilní telefony v Linuxu – Gammu a Wammu

Mobilní telefon má dnes téměř každý a přístup k mnoha informacím, které v něm dnes mohou být uloženy z počítače se jeví jako logický požadavek. Pro Windows nám většinou výrobce poskytne více či méně kvalitní program, ale pod ostatními systémy si obvykle musíme poradit pomocí jiných nástrojů. V této přednášce se dozvíte jak je na tom v tomto ohledu Linux.

Připojení telefonu

Telefonem můžeme připojit mnoha způsoby, a každý z nich má své výhody i nevýhody. Hlavním rozdílem je jestli se budeme připojovat prostřednictvím kabelu, nebo využijeme bezdrátového připojení.

První telefony, které umožňovaly připojení k počítači, používaly sériový kabel. Toto připojení bylo bezproblémové, ale jak s postupem doby začaly z počítačů mizet sériové porty, výrobci od něho začali ustupovat. V dnešní době je v podstatě nahrazeno různými USB kabely, které dost často opět obsahují konvertor USB/sériový port. Takže stále používáme tu samou technologii, jen k tomu používáme řádově dražší kabel. U těchto kabelů jsou občas problémy s ovladači, protože standardizace do této oblasti ještě nedorazila. Nicméně většina z nich vám bude na Linuxu fungovat.

Z bezdrátových připojení je zdaleka nejrozšířenější Bluetooth a IrDA. IrDA pracuje v infračerveném pásmu a má relativně krátký dosah. Oproti tomu Bluetooth pracující v mikrovlnném pásmu (stejné jako WiFi) má dosah větší. Z toho ovšem plynou i možná bezpečnostní rizika. Toto připojení je všesměrové a tudíž kdokoliv, kdo se nachází ve vašem okolí se může pokusit k telefonu připojit. A nutno podotknout, že díky špatnému zabezpečení nebo chybám v implementaci v telefonu se mu to může zdárně podařit. Podpora obou těchto způsobů je v Linuxu na velmi dobré úrovni a po nutném prvotním nastavení bude fungovat bez problémů.

Komunikace s telefonem

Během několika let po které jsou mobilní telefony rozšířeny, vzniklo mnoho protokolů pro komunikace mezi telefonem a počítačem (popř. jinými telefony). Některé z nich již naštěstí vyhynuly, ale přesto se nám zachovala poměrně početná množina protokolů, které jsou u nových telefonů používány. Ne každý se hodí na všechno a proto jich telefony většinou podporují několik.

AT příkazy

Tyto příkazy vznikly původně pro ovládání modemů, během času se jich však ujal ETSI (European Telecommunications Standarts Institute) a rozšířil je i o příkazy užitečné pro mobilní telefony. Toto ovšem mnoha výrobcům nestačilo a přidali si vlastní rozšíření. Tím se ze standardu stala částečně jenom definice formy příkazů, minimální sadu příkazů dnes má každý výrobce jinak rozšířenu. Na jedné straně je Nokia, která přes AT příkazy nezpřístupňuje téměř nic (neimplementuje ani věci definované ETSI), na druhé Sony-Ericsson, který zpřístupnil všechna data v telefonu. Každé rozšíření je pro vývojáře programů komplikované, ale naštěstí jsou mnohá z nich dokumentována (nejlépe je na tom s uvolňováním dokumentace Sony-Ericsson) a tudíž není problém je integrovat.

OBEX

Tento protokol původně vznikl pro výměnu dat (OBject Exchange) po infračerveném portu (IrDA). Později byl převzat i na Bluetooth a díky tomu se jedná o protokol, který dnes umí téměř každý telefon. Většinou jeho pomocí můžete přistupovat na filesystém telefonu, kde jsou uloženy různé multimediální soubory (fotografie, MP3, vyzvánění, videa, …), někdy i k telefonnímu seznamu a kalendáři přes virtuální filesystém (/telecom/*).

Nokia

Nokia si vyvinula vlastní protokol, který se dnes vyskytuje ve dvou generacích (DCT 3 a DCT 4), každý telefon navíc v rámci tohoto protokolu podporuje trochu jiné příkazy. K tomuto protokolu nebyla nikdy zveřejněna dokumentace, ale přesto existuje open source implementace. Tato vznikla v rámci projektu Gnokii reverse engenneringem, přestože Nokia ze začátku vývojářům slibovala dokumentaci.

Symbian

Chytré telefony postavené na této platformě nabízejí přístup přes několik protokolů. Jejich nativní protokol je bohužel zatím neznámý, takže je nutné využít jiné možnosti. Dnes se nejnadějnější jeví použití nativní aplikace na telefonu a použití otevřeného API této platformy. Tato aplikace vzniká u Gnokii a jmenuje se Gnapplet. Kromě toho se dá využít standardních protokolů jako třeba OBEX nebo SyncML.

SyncML

Tento protokol je navržený pro synchronizaci různých zařízení a byl standardizován OMA (Open Mobile Aliance). Jeho podporu najdete v novějších a „chytřejších“ telefonech, protože je na implementaci náročnější než dříve zmiňované. Protokol existuje v několika verzích, mobilní telefon obvykle umí jen jednu a synchronizační server, ke kterému se připojuje, se s tím musí umět vyrovnat (a tudíž podporovat všechny dostupné verze). Komunikační médium může být téměř libovolné, takže se můžeme setkat s komunikací přes OBEX i přes standardní TCP/IP.

Linux a mobily

Nejdříve si musíme ujasnit, co vlastně od připojení mobilu k počítači očekáváme. Někdo potřebuje mít stejné kontakty a kalendář v počítači, jiný chce jen snadněji upravovat data anebo stahovat fotografie. Pro všechny tyto činnosti dnes v Linuxu najdete vhodnou aplikaci, kterou můžete bez obav použít.

Synchronizace

Pro synchronizaci je určitě nejvhodnější použít protokol SyncML, pokud ho váš telefon podporuje. Jeho implementaci najdete v projektu OpenSync, což je obecný framework pro synchronizaci různých zařízení. Kromě SyncML implementuje i další možnosti přístupu (OBEX, Gnokii), takže nejste omezeni jen na telefony podporující SyncML. V dnešní době je i integrován do desktopových prostředí jako KDE (KitchenSync) nebo GNOME (synchronizace do Evolution) a dalšími používanými PIM systémy (např. Sunbird a Google Calendar).

Multimediální data

Soubory z telefonu jsou nejčastěji přístupné přes OBEX. Jeho implementaci pro Linux najdete v projektu OpenObex. Desktopové prostředí vám obvykle nabídne i grafické prohlížení filesystému. Další možnost je (u připojení přes USB kabel), že se telefon chová jako USB storage a tudíž je z počítače přístupný jako další disk.

Tím skončil výčet snadných metod, některé telefony však umožňují přístup přes jiné protokoly a je potřeba použít speciální aplikace. Z nich zde můžeme jmenovat třeba BitPim (zaměřený především na telefony prodávané v Americe) nebo gMobileMedia.

Úprava dat

Telefon má obvykle malou klávesnici, takže úprava většího množství dat na něm není obzvlášť pohodlná. Pro tento účel vzniklo mnoho programů, které umožní upravit data přímo z počítače. Mnoho z nich je jednoúčelových – zaměřených jen na jednu značku nebo dokonce typ telefonu (např. Moto4lin, scmxx, KAlcatel).

Kromě nich vzniklo i několik obecnějších programů, které se snaží podporovat co největší množství telefonů. Pravděpodobně nejznámějším (a určitě nejstarším) projektem je Gnokii s poněkud méně známým grafickým rozhraním Gnocky. Dále je zde jeho fork Gammu s několika rozhraními (Wammu, Kmobiletools), který dnes podporuje o něco více telefonů. Jako poslední zmíním BitPim, který (jak již bylo zmíněno dříve) je zaměřen na telefony prodávané v Americe, ale pravděpodobně bude brzy rozšířen o podporu knihovny Gammu a tudíž i zde dostupných telefonů.

Gammu

Projekt Gammu vznikl odštěpení od Gnokii v roce 2002 po neshodách mezi vývojáři. Gammu se snaží vytvořit obecné rozhraní pro práci s mobilními telefony. Snahou projektu je být multiplatformní, dnes je hojně používán na Linuxu, Windows i na BSD systémech.

Gammu je kromě knihovny poskytující vlastní rozhraní k telefonům i program pro příkazovou řádku. Protože většina uživatelů požaduje grafické rozhraní, vzniklo jich i pro Gammu několik. Mnoho z nich se nedočkalo mnoha verzí a po čase jejich vývoj ustal. Mezi dnes aktivně vyvíjené patří Wammu a gMobileMedia a připravované verze programů BitPim a Kmobiletools, které chtějí integrovat podporu pro knihovnu Gammu.

Seznam telefonů, které s Gammu fungují je poměrně obsáhlý (jejich databázi najdete na stránkách projektu). Od nejnovější telefonů se systémem Symbian (zde se využívá Gnapplet), přes starší Nokie až po mnoho výrobců, kteří umožňují přístup přes AT příkazy. U AT příkazů jsou implementovány i rozšíření některých výrobců. Přes široké spektrum podporovaných telefonů je však neustále co vylepšovat, ať už přidáváním podpory pro nové telefony, nebo vylepšování podpory těm stávajícím.

Pracovat můžete snad se všemi daty, které dnešní telefony podporují. Samozřejmostí jsou různé zprávy, práce s kontakty, kalendářem a úkoly, manipulace se soubory v telefonu, logy, melodiemi a JAVA aplikacemi a změna nastavení telefonu.

Jednou z velmi užitečných vlastností Gammu je možnost kompletní zálohy a obnovení dat v telefonu. Pro tento účel byl navržen vlastní (textový) formát, který může obsahovat všechna data. Kromě něj podporuje Gammu i standardní formáty pro kontakty a kalendáře jako vCard nebo vCalendar.

Nejvíce používaným subsystémem Gammu asi bude práce se zprávami. Kromě standardních SMS umí Gammu i jejich rozšíření v podobě EMS a Smart Messaging (rozšíření Nokie). Dále jsou samozřejmě podporované i MMS zprávy.

Kromě přímého posílání zpráv je ještě v Gammu obsažen démon, který umožňuje automatické přijímání a odesílání zpráv – SMSD. Ten se používá například pro odesílání zpráv o stavu serveru, nebo pro různé služby, které nabízejí placený obsah (loga, melodie či informace). Démon zprávy ukládá do MySQL nebo do souborů, kde mohou být zpracovány další aplikací. V distribuci Gammu je již obsaženo několik frontendů k SMSD, které pro jednodušší použití postačí.

Gammu je stále živý projekt, který ovšem trochu trpí nedostatkem času vývojářů. Takže pokud by někdo měl zájem pomoci, bude vítán. Dnes již není potřeba přidávat nové funkce, protože je již podporováno téměř vše co dnešní telefony umí. Co je mnohem problematičtější je podpora nových telefonů, protože pro její otestování, je potřeba přístup k telefonu. A v silách vývojářů opravdu není vlastnit každý telefon, který kdy byl na světě vyroben.

Hlavní autor Gammu by rád jeho budoucnost viděl v projektu Gammu+, ale mnoho vývojářů s ním tento postoj nesdílí. Gammu+ by měl být nástupce Gammu s lépe navrženou architekturou a napsaný v C++. Nicméně některé části návrhu jsou poměrně diskutabilní a projekt je zatím ve fázi, kdy podporuje jediný telefon. Ale až budoucnost ukáže, jestli bude tento pokus o vylepšení úspěšný.

Wammu

Jak již jsem dříve zmínil, vzniklo pro Gammu mnoho grafických rozhraní. Dnes se zmíním o Wammu, a to nejen proto, že jsem jeho autorem, ale hlavně z důvodu, že se jedná o jediný projekt, který je v dnešní době aktuální (ostatní jsou buďto v rané fázi vývoje, nebo již zanikly). Wammu bylo od začátku psáno jako multiplatformní, z tohoto důvodu byl vybráno jazyka Python a grafického rozhraní wxPython. To na rozdíl od mnoha ostatních používá nativní zobrazování jak na Windows, tak na Linuxu (Gtk).

Wammu zatím podporuje jen část toho, co umí Gammu, a to SMS zprávy, kontakty, kalendář a úkoly. Všechna data jsou přístupná ve pohledu podobném, jaký používají emailoví klienti, jak se ostatně můžete přesvědčit na následujícím obrázku. Pro usnadnění je uživateli je při prvním spuštění nabídnuto automatické nalezení telefonu, které mnohdy ušetří problémy s nalézáním fungujícího nastavení, což je asi nejsložitější část pro nezkušeného uživatele.

Co Wammu čeká do budoucna? Mělo by být rozšířeno o podporu dalších funkcí Gammu, což je úkol, ke kterému by měla dopomoci podpora pro rozšíření od jiných programátorů, které by mělo v nejbližší době vzniknout. Další podstatné vylepšení by mělo následovat v oblasti uživatelského rozhraní, které dnes rozhodně není optimální. Do této oblasti spadá i integrace do desktopového prostředí (GNOME, časem případně i další).

Shrnutí

Jak je vidět, i bez podpory výrobců, je možné pod Linuxem pracovat s mobilními telefony. Situaci sice poněkud komplikuje roztříštěnost projektů, které mnohdy implementují to samé znovu, ale takový už je svět free software, a rozmanitost je jedna z věcí, které ho posouvají neustále dál.

Odkazy

Odkazy na zmiňované programy a dokumenty, stejně tak jako elektronickou verzi tohoto textu naleznete zde.