Mio168 - pełna integracja (czyli jak przeżyć z linuksem)
Opis połączenia pocketa Mio168 (WindowsCE 2003) z linuksemOstatnia zmiana: 2006-12-09 19:46
1. Podstawy
1.1. Połączenie z linuksem
1.2. SynCE
2. Synchronizacja danych
2.1. Automatyczny backup danych przy połączeniu
3. Instalacja oprogramowania
3.1. Rozpakowanie instalki
3.2. Uruchomienie instalki pod wine
3.3. SynCE - Orange
3.4. Instalacja plików CAB
4. GPS
5. Podłączenie do internetu
5.1. Kabel
5.2. IrDA
5.3. WiFi/Bluetooth/IrDA - GPRS
6. Dostęp do komputera z poziomu Windows CE
6.1. SSH
6.2. VNC
7. Konwersja dokumentów
7.1. HTML
7.2. Tekst
7.3. DOC/XLS/RTF
7.4. PDF
8. Wykorzystanie wbudowanego czytnika SD/MMC
9. Odtwarzanie filmów
9.1. Mencoder
9.2. Avidemux
10. Linki
Zmiany
+ 2006-03-09 Dodano informację o QMAIL, PocketVNC
+ 2006-01-24 Dodano informację o diagnozowaniu problemów z połączeniem USB
+ ...
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.
Podstawy
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ń:
# ./configure
# make
# make install
Połączenie z linuksem
Aby uzyskać połączenie z Mio168 należy wykorzystać driver USB/Serial zawarty standardowo w jądrze linuksa
Device Drivers --->
USB Support --->
USB Serial Converter support --->
USB PocketPC PDA Driver
# modprobe ipaq ttyUSB=1
options ipaq ttyUSB=1
Po podłączeniu pocketa kablem USB w logach powinny ukazać się odpowiednie informacje:
Jan 10 19:33:45 localhost kernel: usb 4-1: new full speed USB device using uhci_hcd and address 14
Jan 10 19:33:46 localhost kernel: drivers/usb/serial/usb-serial.c: USB Serial support registered for PocketPC PDA
Jan 10 19:33:46 localhost kernel: drivers/usb/serial/ipaq.c: USB PocketPC PDA driver v0.6
Jan 10 19:33:46 localhost kernel: ipaq 4-1:1.0: PocketPC PDA converter detected
Jan 10 19:33:46 localhost kernel: usb 4-1: PocketPC PDA converter now attached to ttyUSB0
Jan 10 19:33:46 localhost kernel: usb 4-1: PocketPC PDA converter now attached to ttyUSB1
Jan 10 19:33:46 localhost kernel: usbcore: registered new driver ipaq
# modinfo ipaq
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
# dccm -r
# synce-serial-config /dev/ttyUSB1
# synce-serial-start
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)
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

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 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
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
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 GPS
Podłą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
# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -t nat -A POSTROUTING -s 10.0.0.31 -j MASQUERADE
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 HTMLTekst
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
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/
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
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ędzihttp://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