Time-stamp: <03/03/26 11:47:11 kawasan>

LinuxでCLIE(PEG-TG50)を利用した

2003/03/15に秋葉原のイケショップでSonyの PEG-TG50 を購入した。 で、早速、Linuxから利用すべく四苦八苦してみた。

まずは、使ったLinuxの環境を記述しておこう。

で、何をしたか。

  1. カーネルの修正と再構築
  2. pilot-linkの最新版のインストールしてHotSync
    以前使用していたpalm(Visor)からのデータを移行するスタイルが今回は記載されていますので、ご注意。
です。

カーネルの修正と再構築

以下の3fileを修正し、カーネルの再構築をした。

/usr/src/linux/drivers/usb/serial/visor.h (HotSync用)

--- ./visor.h.orig	Tue Nov 13 02:53:56 2001
+++ ./visor.h	Sun Mar 16 03:08:40 2003
@@ -28,6 +28,8 @@
 #define SONY_VENDOR_ID			0x054C
 #define SONY_CLIE_3_5_ID		0x0038
 #define SONY_CLIE_4_0_ID		0x0066
+#define SONY_CLIE_4_1_ID		0x009a
+#define SONY_CLIE_5_0_ID		0x00da
 
 /****************************************************************************
  * Handspring Visor Vendor specific request codes (bRequest values)

/usr/src/linux/drivers/usb/serial/visor.c (HotSync用)

--- ./visor.c.orig	Tue Feb 26 04:38:07 2002
+++ ./visor.c	Sun Mar 16 02:52:00 2003
@@ -171,6 +171,12 @@
 
 static __devinitdata struct usb_device_id clie_id_4_0_table [] = {
 	{ USB_DEVICE(SONY_VENDOR_ID, SONY_CLIE_4_0_ID) },
+	{ USB_DEVICE(SONY_VENDOR_ID, SONY_CLIE_4_1_ID) },
+	{ }					/* Terminating entry */
+};
+
+static __devinitdata struct usb_device_id clie_id_5_0_table [] = {
+	{ USB_DEVICE(SONY_VENDOR_ID, SONY_CLIE_5_0_ID) },
 	{ }					/* Terminating entry */
 };
 
@@ -181,6 +187,8 @@
 	{ USB_DEVICE(PALM_VENDOR_ID, PALM_M125_ID) },
 	{ USB_DEVICE(SONY_VENDOR_ID, SONY_CLIE_3_5_ID) },
 	{ USB_DEVICE(SONY_VENDOR_ID, SONY_CLIE_4_0_ID) },
+	{ USB_DEVICE(SONY_VENDOR_ID, SONY_CLIE_4_1_ID) },
+	{ USB_DEVICE(SONY_VENDOR_ID, SONY_CLIE_5_0_ID) },
 	{ }					/* Terminating entry */
 };
 
@@ -292,6 +300,32 @@
 	read_bulk_callback:	visor_read_bulk_callback,
 };
 
+/* device info for the Sony Clie OS version 5.0 */
+static struct usb_serial_device_type clie_5_0_device = {
+	name:			"Sony Cli5.0",
+	id_table:		clie_id_5_0_table,
+	needs_interrupt_in:	MUST_HAVE_NOT,		/* this device must not have an interrupt in endpoint */
+	needs_bulk_in:		MUST_HAVE,		/* this device must have a bulk in endpoint */
+	needs_bulk_out:		MUST_HAVE,		/* this device must have a bulk out endpoint */
+	num_interrupt_in:	0,
+	num_bulk_in:		2,
+	num_bulk_out:		2,
+	num_ports:		2,
+	open:			visor_open,
+	close:			visor_close,
+	throttle:		visor_throttle,
+	unthrottle:		visor_unthrottle,
+	startup:		visor_startup,
+	shutdown:		visor_shutdown,
+	ioctl:			visor_ioctl,
+	set_termios:		visor_set_termios,
+	write:			visor_write,
+	write_room:		visor_write_room,
+	chars_in_buffer:	visor_chars_in_buffer,
+	write_bulk_callback:	visor_write_bulk_callback,
+	read_bulk_callback:	visor_read_bulk_callback,
+};
+
 #define NUM_URBS			24
 #define URB_TRANSFER_BUFFER_SIZE	768
 static struct urb	*write_urb_pool[NUM_URBS];
@@ -849,6 +883,7 @@
 	usb_serial_register (&palm_4_0_device);
 	usb_serial_register (&clie_3_5_device);
 	usb_serial_register (&clie_4_0_device);
+	usb_serial_register (&clie_5_0_device);
 	
 	/* create our write urb pool and transfer buffers */ 
 	spin_lock_init (&write_urb_pool_lock);
@@ -883,6 +918,7 @@
 	usb_serial_deregister (&palm_4_0_device);
 	usb_serial_deregister (&clie_3_5_device);
 	usb_serial_deregister (&clie_4_0_device);
+	usb_serial_deregister (&clie_5_0_device);
 
 	spin_lock_irqsave (&write_urb_pool_lock, flags);
 

/usr/src/linux/drivers/usb/storage/unusual_devs.h.diff (MSImport用)

--- /usr/src/aaaa/kernel-source-2.4.18/drivers/usb/storage/unusual_devs.h	Tue Feb 26 04:38:07 2002
+++ ./unusual_devs.h	Sun Mar 16 02:55:44 2003
@@ -235,6 +235,12 @@
 		US_SC_8070, US_PR_CBI, NULL,
 		US_FL_FIX_INQUIRY ),
 		
+UNUSUAL_DEV(  0x054c, 0x00d9, 0x0000, 0x9999,
+                "Sony",
+               "PEG-TG50 Mass Storage",
+               US_SC_8070, US_PR_CBI, NULL,
+               US_FL_FIX_INQUIRY ),
+
 UNUSUAL_DEV(  0x057b, 0x0000, 0x0000, 0x0299, 
 		"Y-E Data",
 		"Flashbuster-U",

pilot-linkの最新版のインストールしてHotSync

むむー。debian標準のpilot-linkでは動作しないみたいだ。
debianパッケージは諦めて、最新版のソースにてインストールする。
http://downloads.pilot-link.org/pilot-link-0.11.7.tar.gz
よりDLして、
$ ./configure
$ make
# make install
準備が出来たので、CLIEを一旦工場出荷に戻す。
電源SW押したままRESETし、上ボタンでやる。
んで、ユーザ名の設定。
$ install-user -u hogehoge
※hogehogeは便宜自分のID名に置換してください。
で、以前のpalm(Visor)のデータを入れる。
$ pilot-xfer -i AddressDB.pdb MemoDB.pdb ToDoDB.pdb DatebookDB.pdb
これでpalmの移行は完了です。

MSImportを試してみる

新規のカーネルにて「サクッ」といくかと思ったが結果はNGでした。 どうも、SCSI-DiskとしてMemoryStickを認識をしてくれていない。 今回はHotSyncが出来れば最低限はクリアしているのでよしとした。 いずれはなんとかなるだろう。。。(;_;)

認識失敗のlog

dmesgより抜粋
hub.c: USB new device connect on bus1/1, assigned device number 11
usb-storage: act_altsettting is 0
usb-storage: id_index calculated to be: 27
usb-storage: Array length appears to be: 71
usb-storage: Vendor: Sony
usb-storage: Product: PEG-TG50 Mass Storage
usb-storage: USB Mass Storage device detected
usb-storage: Endpoints: In: 0xd1b73c60 Out: 0xd1b73c74 Int: 0xd1b73c88 (Period 1)
usb-storage: Found existing GUID 054c00d90000000000000000
usb-storage: Allocating IRQ for CBI transport
usb-storage: usb_submit_urb() returns 0
WARNING: USB Mass Storage data integrity not assured
USB Mass Storage device found at 11
$ lsmod 
Module                  Size  Used by    Tainted: PF 
sg                     23588   0 (unused)
vfat                    9276   0 (autoclean)
usb-storage            64800   0
msdos                   4860   0 (autoclean)
fat                    29112   0 (autoclean) [vfat msdos]
visor                  10272   0
usbserial              16832   0 [visor]
usb-uhci               20996   0 (unused)
usbcore                48448   1 [usb-storage visor usbserial rio500 usb-uhci]
※scsi_mod, sd_modは、カーネル組み込みなので見えてません。


無保証で詳細な資料では無いが、これで取り合えず終了です。(^^;

参考にしたHomePage