+ ...
Mio168 jest pocketem pracującym pod kontrolą systemu Windows CE 2003, zawiera zintegrowany moduł GPS, czytnik kart SD/MMC z SDIO!, interfejs IrDA oraz USB (klienckie). Niniejsze howto opisuje chyba wszystkie możliwe aspekty podłączenia tego sprzętu do linuksa - począwszy od synchronizacji danych a na dostępnie do GPS skończywszy. Opis powinien być przydatny także dla posiadaczy innych pocketów z systemem Windows CE. Sekcja dotycząca GPS będzie przydatna także dla posiadaczy Mio 169, Yakumo Delta 300GPS, czy Bluemedia PDA 255.
Wszystkie przykładowe połączenia wykonano z wykorzystaniem Mio168 oraz Debiana SID (unstable) z jądrem 2.6.15. W innych systemach mogą, ale nie muszą znajdować się paczki z wymienionymi tu programami. Jeżeli nie ma ich standardowo w systemie, należy ściągnąć archiwum ze źródłami danego programu, przeczytać plik README i INSTALL, przeczytać jeszcze raz i postąpić zgodnie z sugestiami tam zawartymi. Zwykle instalacja programów sprowadza się do rozpakowania paczek źródłowych w dowolnej lokalizacji, przejście do tego miejsca a następnie wydaniu serii poleceń:
Aby uzyskać połączenie z Mio168 należy wykorzystać driver USB/Serial zawarty standardowo w jądrze linuksa
Ponieważ Mio168 i jego klony obsługują więcej niż 3 punkty końcowe USB (szczegóły
lub na stronie podanej wyżej. Skompilować jądro, a następnie załadować moduł ipaq.ko poleceniem
.
Po podłączeniu pocketa kablem USB w logach powinny ukazać się odpowiednie informacje:
Jeżeli używane jest standardowe jądro dystrybucyjne, może ono nie zawierać tej łatki. Można się przekonać o tym wydając polecenie
. Jeżeli nie - to czeka nas samodzielna instalacja łatki i kompilacja jądra.
W przypadku problemów z połaczeniem należy najpierw zdiagnozować, czy w ogóle linux widzi podłączonego pocketa. Najprościej jest wykonać po podłączeniu pockketa takie polecenie:
# cat /proc/bus/usb/devices
powinny tam się znaleźć informacje o podłączynym urządzeniu, jego
Vendor oraz
ProdID oraz użyty driver (ipaq). Jeżeli nie ma takich informacji, lub jako driver podane jest "(none)" należy szczegółowo zdiagnozować połączenie; opis tego jest na
SynCE - Linux USB HOWTO Port do komunikacji z Mio168 to /dev/ttyUSB1, dla pozostałych /dev/ttyUSB0
SynCE
Do większości zastosowań (synchronizacja, instalacja oprogramowania, ale nie GPS) niezbędne będzie jeszcze zainstalowanie pakietu
SynCE - czyli zestawu narzędzi do komunikacji z Windows CE. W skład tego pakietu wchodzą narzędzia pozwalające na kopiowanie plików pomiędzy linuksem a pocketem, wyświetlenie zawartości, tworzenie katalogów, instalacja pakietów czy uruchamiane programów.
W debianie dostępne są gotowe paczki, wystarczy wydać odpowiednie polecenia:
# aptitude install synce-serial synce-dccm
Należy podłączyć pocketa kablem USB do linuksa, na następnie uruchomić programy
# dccm -r
# synce-serial-config /dev/ttyUSB1
# synce-serial-start
Dccm jest demonem pozwalającym podtrzymać połączenie (opcja -r pozwala na uruchomienie dccm jako root). Następnie konfigurujemy połączenie i uruchamiamy. Na ekranie pocketa powinna pojawić się informacja o nawiązaniu połączenia.
Jeżeli pocket jest zabezpieczony hasłem, to należy do dccm dodać opcję -p
hasło.
Aby przekonać się czy wszystko działa poprawnie można uruchomić np. synce-pstatus (pstatus w innych dystrybucjach), otrzymując taki wynik:
# synce-pstatus
Version
=======
Version: 4.20.0 (Unknown)
Platform: 3 (Windows CE)
Details: ""
System
======
Processor architecture: 5 (ARM)
Processor type: 2577 (StrongARM)
Page size: 0x10000
Power
=====
ACLineStatus: 00 (Offline)
Status for main battery
=========================
Flag: 2 (Low)
LifePercent: 28%
LifeTime: Unknown
FullLifeTime: Unknown
Status for backup battery
=========================
Flag: 255 (Unknown)
LifePercent: 0%
LifeTime: 0
FullLifeTime: 0
Store
=====
Store size: 25440256 bytes (24 megabytes)
Free space: 15581852 bytes (14 megabytes)
Memory for storage: 25526272 bytes (24 megabytes)
Memory for RAM: 40341504 bytes (38 megabytes)
Opis automatycznego połączenia SynCE zawarty jest na
liście synce-devel (o ile używa się udev - chyba wszystkie nowsze dystrybucje używają tego wynalazku). Przykładowy skrypt dostępny jest też w sekcji o
automatycznym backupu danych.
Większość czynności związanych z Windows CE (synchronizacja, instalacja plików itd) można wykonać "graficzne" wykorzystując pakiet
SynCE-KDE (o ile ktoś używa KDE). Dla Gnome dostępny jest zestaw
SynCE - Gnome integration, składający się z modułów:
- GNOME VFS module - wirtualny system plików dla Gnome2, pozwala przeglądać/usuwać/dodawać pliki z poziomu środowiska gnome (synce:// w nautilusie)
- SynCE Tray Icon - aplet do "obszaru powiadamiania", wskaźnik podłączenia pocketa, stanu baterii, ilości wolnej pamięci
- SynCE plugin for MultiSync - czyli plugin do MultiSync
- SynCE Software Manager - manager do instalacji i deinstalacji oprogramownia w urzÄ…dzeniu
Przykładowy zrzut ekranu z działania SynCE-Gnome:

SynCE-KDE daje podobny zakres narzędzi "graficznych"; dodatkowo mamy aplikację
KCEMirror do "przechwytywania" ekranu pocketa - może wtedy używać normalnej klawiatury do edycji danych!
Synchronizacja danych
Wykonywanie backupu urządzenia można zautomatyzować wykorzystując odpowiedni skrypt wykonywany przy podłączeniu pocketa oraz narzędzie zawarte w pakiecie SynCE. Jednakże istnieje inna możliwość:
MultiSync.
MultiSync pozwala na synchronizację danych pomiędzy różnymi urządzeniami i programami - np. pocketem z Windows CE, książką adresową programu pocztowego, telefonem komórkowym i na dodatek backup całości. Ponieważ nie mam ani telefonu wspierającego SyncML, ani nie używam Evolution (bo do nich istnieją napisane odpowiednie pluginy) ograniczę się zaprezentowania najważniejszej synchronizacji: backupu danych.
Oczywiście MultiSync został spakietowany, więc należy go zainstalować:
# aptitude install libmultisync-plugin-backup synce-multisync-plugin multisync
Należy uruchomić multisync (ładnie integruje się z Gnome oraz trayem systemowym), a następnie odpowiednio skonfigurować


Należy również w opcjach pluginu "backup" wybrać położenie katalogu z archiwum danych. Po zatwierdzeniu można uruchomić synchronizację wybierając "Sync", ewentualnie można poczekać, gdyż można zdefiniować okres, co jaki będzie się synchronizacja automatycznie wykonywała. Oczywiście wcześniej musi zostać nawiązane połączenie z pocketem przy pomocy SynCE. MultiSync nie jest obecnie już rozwijany; jego następca to
OpenSync.
Inny klient poczty, Sylpheed-claws posiada własny
plugin do synchronizacji książki adresowej. Dzięki temu bez pośrednictwa multisync'a można uzyskać synchronizację z poziomu programu pocztowego.
Automatyczny backup danych przy połączeniu
Jeżeli system korzysta z udev, możliwe jest wykonanie automatycznego backupu danych przy połączaniu pocketa do komputera. Potrzebny będzie do tego celu
skrypt pdabk, który należy pobrać i umieścić na ścieżce PATH, np. w /usr/local/bin. Należy zmienić w nim listę katalogów, które będą kopiowane. UWAGA: w przypadku debiana wszystkie pliki z zestawu SynCE mają prefiks synce-, dlatego też należy w tym skrypcie zmienić odpowiednio pls i pcp na synce-pls i synce-pcp. Należy pamiętać również o stworzeniu katalogu do backupu.
Następnie należy utworzyć w katalogu /etc/dev.d/tts/USB1 (dla Mio168, dla innych będzie to /etc/dev.d/tts/USB0) plik o nazwie ipaq.dev (koniecznie z końcówką .dev) o następującej zawartości:
#!/bin/sh
USER=cezary
LOGFILE=/var/log/synce
if [ "$ACTION" = "add" ] ; then
echo "`date +"%b %d %X"` `uname -n`: Pocket plugged, starting connection..." >> $LOGFILE
synce-serial-abort > /dev/null
su $USER -c dccm
synce-serial-config $DEVNAME > /dev/null
synce-serial-start >> $LOGFILE
sleep 5
su $USER -c pdabk >> $LOGFILE
elif [ "$ACTION" = "remove" ] ; then
synce-serial-abort > /dev/null
killall dccm
echo "`date +"%b %d %X"` `uname -n`: Pocket removed" >> $LOGFILE
fi
gdze USER jest nazwą użytkownika, który ma mieć dostęp do połączenia z pocketem (w moim przypadku to "cezary"). Po nawiązaniu połączenia należy odczekać kilka sekund (sleep 5 w skypcie) na ustanowienie połączenia ze strony pocketa.
Po podłączeniu pocketa zostanie automatycznie nawiązane połączenie oraz zostanie wykonany backup danych. Zmodyfikowany przeze mnie skrypt pdabk znajduje się również
tutaj.
Instalacja oprogramowania
Większość oprogramowania dla Windows CE rozprowadzane jest w postaci instalek exe, które uruchamiają się i przy pomocy ActiveSync'a instalują odpowiednie pliki CAB na pocketa.
Pod linuksem instalacja oprogramowania dla Windows CE możliwa jest na kilka sposobów: poprzez rozpakowanie pliku instalacyjnego lub uruchomienie instalki pod wine. Dostęne też jest odpowiedni program pozwalający na "rozpakowanie" zawartości pliku instalacyjnego.
Rozpakowanie instalki
Często zdarza się, ze program instalacyjny jest niczym więcej jak samowykonującym się zip'em (lub innym archiwum - np. AutoMapa). W tym przypadku wystarczy rozpakować pliki do katalogu tymczasowego; odnaleźć interesujący nas plik CAB (dla przypomnienia - dla platformy ARM) i zainstalować na pockecie.
Uruchomienie instalki pod wine
Tu z pomocÄ… przychodzi
wine. Należy zainstalować wine (w debianie: aptitude install wine), skonfigurować zgodnie ze swoimi potrzebami, a następnie zainstalować sam program
ActiveSync. Oczywiście ActiveSync nie będzie działał pod wine tak jak działa pod systemem Windows, ale instalki zwykle sprawdzają obecność bibliotek ActiveSync'a w systemie i dlatego jest on nam potrzebny. Pliki instalacyjne zwykle uruchamiają się pod wine, rozpakowują pliki CAB do odpowiedniej lokalizacji (zwykle jest to Program Files/ActiveSync) a następnie kończą działanie. Dzięki temu można później "ręcznie" zainstalować te pliki na pockecie. Często zdarza się, że program instalacyjny sam chce instalować pliki CAB na pockecie (tak np. robi instalka Garmin Que), a następnie usuwa te pliki po zakończeniu działania. W takim przypadku należy podczas próby instalacji przerwać proces (zwykle wystarczy Ctrl-C); pliki CAB powinny być w jakiejś tymczasowej lokalizacji - należy je skopiować i zainstalować standardową metodą.
SynCE - Orange
SynCE - Orange jest narzędziem pozwalającym na wydobycie z pliku instalacyjnego exe odpowiedniego cab'a. Nie trzeba więc specjalnie trudzić się w instalacje ActveSync'a, wystarczy "rozpakować" program instalacyjny.
Instalacja plików CAB
Mając pliki CAB można jest przenieść i zainstalować na dwa sposoby - poprzez kartę SD (skopiować na kartę pod linuksem, przenieść kartę na pocketa i klikając CAB'a zainstalować program) lub wykorzystać odpowiednie polecenie SynCE
$ synce-install-cab /tmp/plik.cab
Niestety, pliki zawsze instalują się w głównej pamięci (nie ma możliwości zainstalowania ich na kartę pamięci).
Oczywiście, jeżeli korzystamy z SynCE-KDE lub SynCE-GnomeVFS to instalacje, kopiowanie, przeglądanie można też wykonać "graficznie" przy pomocy konquerora lub nautilusa.
GPS
UWAGA: do połączenia z GPS nie jest wymagany zestaw SynCE, wystarczy sam driver ipaq.
Chyba najciekawszy aspekt współpracy Mio168 z linuksem. Niestety, Mio nie zawiera standardowo żadnego oprogramowania do zarządzania GPS'em. Niezbędne jest odpowiednie oprogramowanie, które "przeniesie" dane z portu gps'a na USB tak, żeby można było pocketa wykorzystać jak zwykłą "mysz" USB. Najprościej zastosować
GPSProxy, stworzony m.in. do takiego celu (raczej do udawania odbiornika Garmin, ale w naszym przypadku nie ma to znaczenia). GPSProxy należy zainstalować na pockecie, a następnie skonfigurować i uruchomić.

Uruchomienie GPSProxy

Wybrać opcję
Tools następnie
Settings...
Wybieramy typ
GPS Type jako
No Protocol Conversion (Mio168 standardowo pracuje w standardzie NMEA 0183)
GPS COM Port ustawić na COM2 (tak widoczny jest wbudowany moduł GPS).
Baud Rate zostaje na 4800.

W zakładce
Application wybać COM9 (wbudowany USB), przy
Baud Rate ustawionym na 4800. Dzięki temu dane odbierane z odbiornika GPS będą przesyłane na port USB.

Pozostałe zakładki zostają bez zmian.
Po udanej konfiguracji należy nacisnąć przycisk "Start". Należy pamiętać, że jeżeli GPS nie był długo używany to złapanie "fix'a" i ustalenie pozycji może zająć nawet kilkadziesiąt minut!
Po takiej konfiguracji, nasz Mio powinien już wysyłać na port USB dane z GPS'a w formacie NMEA0183.
Na linuksie można zainstalować program
gpsd (odbierający dane z GPS). Przy konfiguracji programu należy podać port /dev/ttyUSB1 jako port odbioru danych z GPS'a.
Inne informacje na temat wykorzystania gps'a pod linuksem zawarte sÄ… w dokumencie
Zabawy z GPSPodłączenie do internetu
Ponieważ łączymy się pocketem do linuksa, to możliwe jest uzyskanie na nim także połączenia do internetu (o ile oczywiście posiadamy jakiekolwiek łącze do internetu z poziomu linuksa :)). Szczegóły konfiguracji można znaleźć na stronie
SynCE - IP forwarding. Przy korzystaniu
SynCE - KDE Integration nie trzeba już nic robić "ręcznie".
Kabel
Przy nawiązywaniu połączenia przy pomocy SynCE nawiązywane jest de facto połączenie PPP. Wystarczy odpowiednio skonfigurować SynCE aby połączenie mogło być zrealizowane. Zakładając że sieć lokalna należy do klasy 10.0.0.0/16, konfiguracja /etc/ppp/peers/synce-device może wyglądać następująco:
# cat /etc/ppp/peers/synce-device
# Modifications to this file will be lost next time you run synce-serial-config
/dev/ttyUSB1 115200
connect '/usr/bin/synce-serial-chat'
nodefaultroute
noauth
local
10.0.0.30:10.0.0.31
ms-dns 10.0.0.1
crtscts
linkname synce-device
Gdzie 10.0.0.30 to adres naszego komputera, 10.0.0.31 to adres pocketa, 10.0.0.1 adres serwera DNS w sieci. Należy również włączyć ip_forward:
# echo 1 > /proc/sys/net/ipv4/ip_forward
Jeżeli przy konfiguracji podano inną klasę adresową, można zrealizować klasyczną masquerade:
# iptables -t nat -A POSTROUTING -s 10.0.0.31 -j MASQUERADE
gdzie 10.0.0.31 to przypisany numer naszego pocketa. Niestety, łącząc się kablem tracimy
mobilność . Coś za coś.
Numery IP należy ustawić przy każdym wywołaniu synce-serial-config, inaczej zmiany w pliku /etc/ppp/peers/synce-device zostaną zgubione.
IrDA
Zamiast podawać /dev/ttyUSB1 można oczywiście podać /dev/ircomm0 (zakładając że mamy
skonfigurowane i działające irda-utils). Wadą takiego rozwiązania jest mały zasięg podczerwieni oraz potrzeba skierowania i "widzenia" się odbiorników.
WiFi/Bluetooth/IrDA - GPRS
O wiele lepszym rozwiązaniem jest łączenie się przy pomocy WiFi lub bluetooth (w przypadku Mio168 - na karcie SD). Niestety, są one dość drogie, ale za to mamy pełną mobilność. Połączenie można też uzyskać wykorzystując interfejs IrDA do połączenia z telefonem komórkowym (poprzez GPRS)
Dostęp do komputera z poziomu Windows CE
SSH
Skoro można mieć na pockecie połączenie do internetu (WiFi, kabel, IrDA czy gprs), to czemu nie mieć dostępu do swojego komputera? Jednym z darmowych programów jest
PocketPutty. Wspiera SSH1, SSH2, telnet.
Instalacja jest banalnie prosta, sam program działa i daje to czego oczekujemy - zdalny dostęp po ssh do naszego systemu. Wadą takiego rozwiązania jest ekran pocketa - tylko 320x240 punktów, co powoduje, że konsola jest "mała". Ale jak jesteśmy daleko w podróży, a trzeba coś zrobić na serwerze...
VNC
Dostępny jest zarówno
klient VNC jak i
serwer VNC (płatny). Dzięki temu można z poziomu pocketa uzyskać dostęp do desktopu kompuera stacjonarnego.
Konwersja dokumentów
HTML
Wbudowany IE można przestawić na ISO-8859-2, tym samym umożliwiając bezproblemowe czytanie plików HTML
Tekst
Niestety, tylko przy pomocy PocketWorda i w formacie Windows-1250. Z pomocÄ… przychodzi iconv
$ iconv -f windows-1250 -t iso-8859-2 plik.txt > plik.iso.txt
Oczywiście istnieje możliwość zainstalowania przeglądarki - czytnika ebooków obsługującego standard ISO, wtedy zbędne staje się konwertowanie strony kodowej.
DOC/XLS/RTF
Zwykłe pliki DOC/XLS/RTF są zwykle czytane bez problemu. Do konwersji formatów można użyć OpenOffice2. Istnieje też konwerter plików sxw (OpenOffice1) na format PocketWorda. Konwerter dostępny jest
tutajPDF
Po zainstalowaniu zewnętrznego programu do pdfów, np.
PocketXpdf.
Wykorzystanie wbudowanego czytnika SD/MMC
Wykorzystując odpowiednie polecenie SynCE można oczywiście uzyskać dostęp do zawartości karty pamięci:
$ synce-pls /Storage\ Card/
Directory czw 05 sty 2006 15:58:40 CET GPSProxy/
Directory czw 15 gru 2005 18:11:28 CET My Documents/
Directory czw 19 maj 2005 19:03:52 CEST VisualGPS/
Directory czw 29 gru 2005 07:25:56 CET AutoMapa/
Directory śro 21 wrz 2005 23:04:08 CEST Ufo/
Oczywiście, dostęp do karty możliwy też jest przez standardowe managery plików: nautilusa (SynCE-GNOME) i konquerora (SynCE-KDE). Dzięki temu można pocketa wykorzystać jako czytnik kart SD/MMC. Trochę na około, ale działa :)
Odtwarzanie filmów
Pocket nawet dobrze radzi sobie z odtwarzaniem filmów. Jako playera można (i należy) użyć
The Core Pocket Media Player.
Ponieważ pocket ma mały ekran (320x240) najlepiej jest przekonwertować film przy wykorzystaniu takiej rozdzielczości.
Mencoder
Z pakietu
Mplayera, konsolowy. O dużych możliwościach, pozwala konwertować filmy z różnymi opcjami. Przykładowe wywołanie:
$ mencoder plik_wejsciowy.avi -oac mp3lame -ovc lavc -lavcopts vcodec=mpeg4:vhq:vbitrate=100 -vop scale=320:240 \
-ofps 20 -zoom -sws 2 -lameopts cbr:br=32: -o plik_wyjsciowy.avi
Ponieważ pockety wyposażone są w dość słabo kontrastowe wyświetlacze podczas konwersji warto minimalnie zwiększyć jasność i kontrast obrazu, wykonać
panscreen/crop do wielkości 4:3, resize obrazu do 320x240 oraz zmienić audio na mono (ew stereo) 22k. Można też zmniejszyć liczbę klatek na sekundę do 20. Dzięki temu można zmieścić "normalny" 700MB film na karcie 128MB.
Avidemux
Dostępny jest na jego
stronie domowej. Graficzny, umożliwia "wyklikanie" potrzebnych opcji: crop, resize, kontrast/jasność, zmiana audio.

Linki
http://synce.sourceforge.net/synce/ - SynCE: podstawowy pakiet narzędzi
http://multisync.sourceforge.net/news.php - MultiSync: narzędzie do synchronizacji danych
http://www.opensync.org/ - OpenSync: następca MultiSync
http://q3.snak.org/download/ - QMAIL; chyba najlepszy program pocztowy na PocketPC wraz z czytnikiem RSS/NEWS