搞定linux下与windows mobile 5手机的同步
总算是搞定了,步骤很烦琐(需要的东西太多)。我的手机是多普达577W,系统是 windows mobile 5 smartphone。用到的东西主要是 synce,当然也少不了opensync这个同步框架。具体过程如下(可能不是很完善,有些步骤很久以前就做了的,可能会有遗漏。):
1、装synce(从tarball安装,从SVN安装)
具体的安装过程就不说了,跟编译安装其它软件差不多,不外乎./configure ,make,make install。
需要装几个包:
synce-libsynce-0.10.0.tar.gz
synce-librapi2-0.10.0.tar.gz
synce-odccm-0.10.0.tar.gz
synce-gnome-0.10.0.tar.gz(貌似不是必要的,我就没装这个)
一般的发行版都会自带这些软件,大家找找吧,不一定得自己安装。像我的archlinux就有这些,我 pacman -Ss synce搜索了一下,然后把这些东西装上就可以了。用的比较多ubuntu应该也有这些东西,如果没有大家就自己编译安装吧,如果对编译安装不熟,则看 wiki。
2、装驱动(官方网站wiki)
如果你的内核>=2.6.21,那么你需要给内核打一个补丁
CONFIG_USB_USBNET=m CONFIG_USB_NET_CDCETHER=m CONFIG_USB_NET_RNDIS_HOST=m将它们作为内核模块编译也可以。做完这些按往常一样编译内核就行了。(上帝啊,编译内核是个体力活啊,其实可以不用整个内核都重新编译,编译需要用到的模块即可)
2.6.21以下的内核麻烦一点,需要下载整个驱动(2.6.21已自带驱动),具体的就不说了,需要的看官方网站wiki好了。其实也不算麻烦,都是差不多的。
编译完内核并用新内核启动之后,插上你的手机,系统应该能够发现你的手机并添加一个rndis_host设备。具体看dmesg出来的消息。官方网站说用这个命令查看:
dmesg | grep “rndis[0-9]: register” | grep “rndis_host” | tail -1
其实这个命令不一定正确,因为在我的电脑上,认出来的interface是被命名为eth1,具体大家看情况,反正有类似:
eth1: register ‘rndis_host’ at usb-0000:00:10.1-2, RNDIS device, 80:00:60:0f:e8:00
的就是了。
到这里其实已经告一段落了,到这里已经可以往手机复制文件/从手机复制文件,给手机装软件等等了。在终端下输入odccm启动odccm,然后插上手机,输入pls看看能不能浏览手机文件即可测试。
3、同步(SyncEngine同步)
先生们,女士们,最复杂的一步来了!这一步的目的是要将手机与系统中的软件进行同步,如同步联系人,日历等等等等。说它最复杂,并不是说它很难,而是麻烦。为什么?因为它依赖的软件实在是太多了!看看下面这个列表吧。
libopensync >= 0.21
libopensync-plugin-python >= 0.21
msynctool >= 0.21
udev -> make sure that udev->hald->dbus-daemon (ps aux | grep -E “hald|dbus-daemon|udevd”) are all running
dbus >= 0.60 and its python bindings (e.g. python2.4-dbus, or for Gentoo users: dbus-python)
python2.4-gobject (注意,这个包应该是必要的…)
python2.4-pyrex
python-pyrex
python2.4-xml
libxml2-dev
libxslt
python-libxslt1
libexpat1-dev
python2.4-dev
pyxml
swig
libsqlite3-dev (注意,这个包应该是必要的…)
libmimedir0
libmimedir-dev
你晕了没有?反正我是差点晕了。不过还好,事情并没有那么恐怖,因为,第一、这些包可能是其它软件也需要的,你的系统已经装了一些了;第二、如果你系统的包管理器很方便的话,比如我的archlinux ,装这些东西其实很简单,其它的如debian,gentoo,ubuntu等等等等能自动从网上下载安装的系统应该都不麻烦。但是,要注意的一点就是,包的文件名不一定跟上面的一样。
好了,我们假设你已经有了上面这些东西了(可能未必全部需要,反正我没仔细一个个检查,遇到缺少的错误再装)。那么我们继续吧。对,还有,不但还有,而且还有很多!我们还需要装以下东西(必要的):
rra
librtfcomp
wbxml2
pywbxml
sync-engine
OpenSync
哈哈哈,你抓狂了吧。现在摆在你面前有几条路可以走:第一、放弃吧,何必呢,何苦呢,ActiveSync与outlook工作的好好的;第二、埋头苦干,从官方网站下载回来这些包,自己一个个装呗(点击上面列表会链接到官方网站的wiki,教你怎么装);第三、先看看你的系统包仓库中有没有这些东西吧,有的话直接apt-get install或者pacman -S又或者emerge得了,没有的再手动安装。
反正我是装了。装sync-engine和OpenSync时,需要把synce的python插件装到opensync的插件目录中去
还是那句话,有啥不明白的,看Wik。再不明白的,问我。
装完之后开始测试了,先启动sync-engine。首先,启动一个终端并进入sync-engine所在目录:
mkdir ~/.synce cp config.xml ~/.synce
mkdir ~/PDAFiles然后运行./sync-engine,别关哦,这是一个守护进程,要不你就在后面加一个&让它在后台运行,要不你就保持这个不关,然后再开一个终端,进入sync-engine目录下的tools目录,运行./list_partnerships.py测试一下,如果能列出手机上已有的partnerships,恭喜你,你已经距离成功只有一步之遥了(什么?还没有成功!)。接下来我们就是要创建一个新的partnership了(注意:一个手机只能有两个partnership,如果你的手机上已经有两个了,请删掉一个)。用下面这个命令创建:
./create_partnership.py “Linux desktop” “Contacts,Calendar”“Linux desktop”可以是任何小于20个字节的字符串。 “Contacts,Calendar”是要同步的项目,contacts是联系人,calendar是日历。可以同步的项目有4个:
Contacts Calendar
Tasks
Files创建完partnership之后用./select_partnership.py选择要用手机上的哪个partnership与咱们的linux系统同步。
配置
首先为同步创建一个OpenSync群组, 然后把SynCE插件添加到群组:
msynctool –addgroup pda-sync
msynctool –addmember pda-sync synce-plugin
Evolution
添加Evolution插件到群组:
msynctool –addmember pda-sync evo2-sync
msynctool –configure pda-sync 2
Kontact
添加KDE-Pim到群组:
msynctool –addmember pda-sync kdepim-syncEvolution和Kontact插件需要另外安装,取决于你使用什么个人信息软件,安装你自己需要的吧,这两个插件都可在opensync网站上找到
最后,使用 msynctool –sync pda-sync 命令开始同步。
实上,我装这个的时候,synce还在一步步开发中,很多东西还不完善,我装起来比这个还麻烦,不过,最终咱还是成功了!想必会像我这样花这么多功夫装这个的人不多,特别是编译内核,这个虽然很简单,但编译内核很花时间,要不是我要顺便为我的电视卡hack一下,我估计我还懒得编译内核。而且装这个的步骤烦琐,而实用性又不是特别强(如果不是linux发烧友,谁电脑上没装windows,outlook什么的)