新手必看:如何在Linux系统下操控你的Palm

发表于:2007-07-01来源:作者:点击数: 标签:
新手必看:如何在 Linux 系统下操控你的Palm -------------------------------------------------------------------------------- http://www.sina.com.cn 2003年07月15日 14:35 太平洋电脑网 文/EDDYKAi 同步 相信大家都听过Linux作业系统吧,但其实大家又


新手必看:如何在Linux系统下操控你的Palm

--------------------------------------------------------------------------------

http://www.sina.com.cn 2003年07月15日 14:35 太平洋电脑网

   文/EDDYKAi

   同步

   相信大家都听过Linux作业系统吧,但其实大家又知不知道PDA是可在Linux下作同步呢?虽然大部份的PDA用家亦是以微软视窗为作业系统,不过亦一定有采用Linux的朋友会购置
PDA,而我们又怎可以遗忘了这些PDA友?所以这次小记就找来许多文章来为大家消化,目的也只不过是想帮助一下用Linux的PDA新手用家。

   就以索尼的Clie为例子,自己手上亦有一部N760C,可以即时知道网上介绍的方法是否可行,实验证明Cool@

   拥有Clie的朋友都知道,跟Clie附送的光碟程式Palm Desktop只可在微软视窗执行的,如果要在Linux下运用同类的程式去同步传输资料、行事历记录、电话簿等,大家便要去下载一些同类的程式,而相信最容易的程式应该是Coldsync吧!不过可惜的是,这个程式只适用于PalmOS 4.x的Palm上,而所有PalmOS 5的Palm,包括索尼的Clie NX73V,便未能被支援了。

   Coldsync

   1.模组Modules

   首先,用家必定要确定Linux已有以下核心模组kernel modules:

   usbserial.ovisor.o

   大家可在@#/lib/modules/2.x.x/kernel/drivers/usb/@#找到,而2.x.x代表你的核心版本。

   如果用家是采用了Linux Redhat红帽的作业系统,用家便省却了不少功夫,因为红帽会自动载入(hotplug)这两个核心模组。不过用家若采用了Debian一类更专业的应用平台,那就要下一番功夫了。

   要看看模组有否已载入,用家可在root根输入@#lsmod@#,便会看到以下的文字:

   FordPrefect:/home/milmber# lsmod

   Module Size Used by

   vmnet 17920 8

   vmmon 18176 5

   eeprom 3056 0

   w83781d 17072 0

   i2c-amd756 3056 0 (unused)

   visor 10208 1

   usbserial 17024 0 [visor]

   NVdriver 945088 10 (autoclean)

   3c59x 24992 1

   再一次提醒大家,若使用红帽便可以省去这个步骤,因为它已为你载入了,大家只要确定在@#/lib/modules/2.x.x/kernel/drivers/usb/@#找到那两个模组便成。

   2.权限及装置

   之后便要确定是否已拥有正确的dev路径,用家可在@#/dev/ttyUSBx@#找到。若未有发现用家便要以root的身份自己新增dev路径了。如下:

   @#mknod /dev/ttyUSB0 c 188 0@#@#mknod /dev/ttyUSB1 c 188 1@#

   同样红帽7.1的用家可省去这个步骤。

   之后便是看看权限一项了,用家可在@#/dev/ttyUSBx@#档案检查到,当然要肯定所有预设用家都可以载入那两个USB埠,如果不是,那么每次同步便要以root的身份去进行了。如下:

   crw-rw-rw- 1 root dip 188, 0 Jul 13 20:10 /dev/ttyUSB0crw-rw-rw- 1 root dip 188, 1 Jul 13 20:11 /dev/ttyUSB1

   当然,保安问题便出现了。

   3.Clie…预备

   预备好电脑的设定,当然亦少不了你的Clie,你也要知道你的Clie已被Linux侦查到呢!而方法便是以root的身份去(tail)跟踪一下你的(log)登陆记录,输入@#tail -f /var/log/messages@#,同时准备好用家的Clie于USB底座及按下同步(HotSync)键,便可看到:

   Jul 13 22:15:22 FordPrefect kernel: hub.c: USB new device connect on bus1/1, assigned device number 23

   Jul 13 22:15:22 FordPrefect kernel: Manufacturer: Sony Corp.

   Jul 13 22:15:22 FordPrefect kernel: Product: Palm Handheld

   Jul 13 22:15:22 FordPrefect kernel: usbserial.c: Sony Clie 4.0 converter detected

   Jul 13 22:15:22 FordPrefect kernel: visor.c: Sony Clie 4.0: Number of ports: 2

   Jul 13 22:15:22 FordPrefect kernel: visor.c: Sony Clie 4.0: port 1, is for Generic use and is bound to ttyUSB0

   Jul 13 22:15:22 FordPrefect kernel: visor.c: Sony Clie 4.0: port 2, is for HotSync use and is bound to ttyUSB1

   Jul 13 22:15:22 FordPrefect kernel: usbserial.c: Sony Clie 4.0 converter now attached to ttyUSB0 (or usb/tts/0 for devfs)

   Jul 13 22:15:22 FordPrefect kernel: usbserial.c: Sony Clie 4.0 converter now attached to ttyUSB1 (or usb/tts/1 for devfs)

   4.Coldsync

   终于可以一尝Coldsync这个程式了,当然用家要先下载及安装这个程式吧!最新的完整版仍是2.2.5呀,可到www.coldsync.org下载。

   于母资料夹(home directory)新增以下的档案及改名为@#.coldsyncrc@#

   listen serial {protocol: net;device: /dev/usb/ttyUSB0;旧版本可要输入/dev/ttyUSB0呢!}

   /dev/usb/ttyUSB0是指用家将自己的Clie连线的USB埠,之后再输入@#coldsync -mI@#,可看到:

   pda {snum: "Clie的序号";username: "用户名称";userid:“账号名称";}

   成功后再在之前的@#.coldsyncrc@#档案新增以下字串,如下:

   listen serial {protocol: net;device: /dev/ttyUSB0;}pda "Sony Clie" {directory: /home/milmber/.palm;snum: "Clie的序号";username: "用户名称";userid:“账号名称";}

   建议用家将同步的资料夹建于母资料夹(home directory)以及新增资料夹`.palm',还有的是,用家最好在`.palm'资料夹内建立@#install@#及@#backup@#的资料夹,这样可方便传输的档案管理。

   现在用家的Clie理应可以作同步了。步骤是先按下Clie底座的HotSync键,之后再于电脑输入@#coldsync@#,用家便可以看到Clie的所有档案资料都会备份在@#.palm/backup@#;如要安装程式,用家只要将档案放到@#.palm/install@#丙同步便行了。

   5.常见问题

   当执行Coldsync时,为什么会出现程式错误(program segfaults)?

   原因有很多,可能用家的`.palm'不是建于母资料夹home directory;亦可能权限出现问题,用家未给予所有预设用家账户运用Coldsync的权力,只有root身份才有权力;用家亦可将`.coldsyncrc'档案的snum:及userid:两行未串的设定删除及再输入。

   为什么执行程式时出现"warning: no device on /dev/ttyUSB0; sleeping"?

   这代表了Linux未有侦查到用家的Clie的存在。如果用家是用较新的Linux版本,用家需要输入/dev/usb/ttyUSB0而不是/dev/ttyUSB0;又或者是用家根本没有给权限予这个用户账号;亦有可能是你先执行了coldsync而未按处于USB底座的HotSync键。若仍不成功,用家可于`.coldsyncrc'的档案里,修改protocol的net转为simple便可以了。

   启动(mounting)记忆棒(Memory Stick)

   取了同步外,Clie还有一个很重要的程式,便是MS Import吧!而用家怎样才可以在Linux下启动到这个功能呢,其实亦很简单,不过这个方法只适用于以PalmOS 4.x版本作应用平台的Clie吧。

   首先在@#/lib/modules/2.x.x/kernel/drivers/usb/@#检查一下用家有没有安装了@#usb-storage.o@#模组,有的便要载入这个模组了。还有的是要确定核心有否支援SCSI,如模组- @#sg.o@#及scsi盘支援- @#sd_mod.o@#

   用家在载入这些模组及更新核心后需要重新启动电脑。如果用家采用新版的核心,单单@#modprobe usb-storage@#, @#modprobe sg@#及@#modprobe sd_mod@#以足够了。之后用家需要做的便是将Clie放到USB底座上及于Clie点击启动MS Import。

   点击连接(CONNECT)

   连接成功后,用家可以root身份去跟踪登陆记录,输入@#tail -f /var/log/messages@#后会看到:

   Jul 13 22:55:37 localhost last message repeated 3 timesJul 13 22:55:37 localhost kernel: hub.c: port 1, portstatus 103, change 0, 12 Mb/sJul 13 22:55:37 localhost kernel: hub.c: USB new device connect on bus1/1, assigned device number 13Jul 13 22:55:37 localhost kernel: usb.c: kmalloc IF c6511clearcase/" target="_blank" >cc0, numif 1Jul 13 22:55:37 localhost kernel: usb.c: new device strings: Mfr=1, Product=2, SerialNumber=0Jul 13 22:55:37 localhost kernel: usb.c: USB device number 13 default language ID 0x409Jul 13 22:55:37 localhost kernel: Manufacturer: SonyJul 13 22:55:37 localhost kernel: Product: Sony PEG Mass StorageJul 13 22:55:37 localhost kernel: usb-storage: act_altsettting is 0Jul 13 22:55:37 localhost kernel: usb-storage: id_index calculated to be: 55Jul 13 22:55:37 localhost kernel: usb-storage: Array length appears to be: 64Jul 13 22:55:37 localhost kernel: usb-storage: USB Mass Storage device detectedJul 13 22:55:37 localhost kernel: usb-storage: Endpoints: In: 0xc33afda8 Out: 0xc33afd94 Int: 0xc33afd80 (Period 1)Jul 13 22:55:37 localhost kernel: usbdevfs: USBDEVFS_CONTROL failed dev 13 rqt 128 rq 6 len 4 ret -6Jul 13 22:55:37 localhost kernel: usb-storage: Found existing GUID 054c00990000000000000000Jul 13 22:55:37 localhost kernel: usb-storage: Allocating IRQ for CBI transportJul 13 22:55:37 localhost kernel: usb-storage: usb_submit_urb() returns 0Jul 13 22:55:37 localhost kernel: WARNING: USB Mass Storage data integrity not assuredJul 13 22:55:37 localhost kernel: USB Mass Storage device found at 13Jul 13 22:55:37 localhost kernel: usb.c: usb-storage driver claimed interface c6511cc0Jul 13 22:55:37 localhost kernel: usb.c: kusbd: /sbin/hotplug add 13Jul 13 22:55:37 localhost kernel: usb.c: kusbd policy returned 0xfffffffeJul 13 22:55:37 localhost kernel: hub.c: port 2, portstatus 103, change 0, 12 Mb/sJul 13 22:55:55 localhost modprobe: modprobe: Can@#t locate module char-major-6

   之后再以root身份输入@#mount -t vfat /dev/sda1/ /mnt/@#你将会看到记忆棒内的资料。若未能成功,可试输入/dev/sda2/ , /dev/sda3/等。

   如果因为其他原因,用家仍未能于Linux下启动记忆棒,大家可尝试更新以下的patch档,不过后果自负。

   更新用家的核心(核心版本必须为2.4.3或以上)--- linux/drivers/usb/storage/transport.c.orig Tue Dec 4 16:55:13 2001+++ linux/drivers/usb/storage/transport.c Tue Dec 4 16:58:10 2001@@ -817,10 +817,7 @@}/* was this a command-completion interrupt? */- if (us->irqbuf[0] && (us->subclass != US_SC_UFI)) {- US_DEBUGP("-- not a command-completion IRQ\n");- return;- }+ us->irqbuf[0] = 0;

   /* was this a wanted interrupt? */if (!atomic_read(us->ip_wanted)) {

   更新核心后需要重新启动电脑,之后再mount用家的记忆棒,这次应该成功吧!

原文转自:http://www.ltesting.net