Hi,
I need to sync (at least) the contacts between Evolution (on Gentoo) and my HTC Hero.
Currently I've created a temporary "Google" address book in Evolution and copy-paste stuff manually from my real address book to it. This is only one-way, from Evolution to phone, and doesn't preserve all fields. It really sucks.
For this reason, I think I *need* native sync. I already used "msynctool" with a Nokia N82 that supported SyncML. Now afaik I can't use SyncML with HTC Hero, so I installed "synce" which is now registered as an opensync plugin:
~ $ msynctool --listplugins
Available plugins:
python-sample
synce-opensync-plugin
google-calendar
evo2-sync
syncml-http-server
syncml-http-client
syncml-obex-client
file-sync
~/.opensync/group2 $ msynctool --showgroup htchero-evolution
Group: htchero-evolution
Member 1: evo2-sync
(...doesn't matter...)
Member 2: synce-opensync-plugin
No Configuration found: Plugin is not configured
~/.opensync/group2 $ msynctool --configure htchero-evolution 2
This plugin has no options and does not need to be configured
Well this is nice, but now
I need to get synce to work.
I would prefer to do everything through Wi-Fi but I think I need to configure the pairing through USB first - is this correct ?
First I enabled the relevant (I hope) kernel options, and did:
modprobe usbnet rndis-host usbserial ipaq ppp_async
/etc/init.d/iptables stop
sync-engine
Then I plug the HTC Hero and... nothing. In dmesg I see the phone registers as a storage device, but nothing else. The sync-engine daemon says nothing when I plug the USB cable.
Also I tried running "synce-matchmaker" but it needs an established connection to continue.
After spending a few hours running in circles and up/downgrading udev and hal, I tried this:
* cat /proc/bus/usb/devices > /tmp/before
* (plug the device)
* cat /proc/bus/usb/devices > /tmp/after
In the HTC "normal mode" which
should allow "mass storage" and "sync", here is the diff:
--- /tmp/before 2009-08-30 16:42:02.000000000 +0200
+++ /tmp/after 2009-08-30 16:42:18.000000000 +0200
@@ -31,3 +31,14 @@
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=256ms
+
+T: Bus=01 Lev=01 Prnt=01 Port=06 Cnt=01 Dev#= 19 Spd=480 MxCh= 0
+D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
+P: Vendor=0bb4 ProdID=0c01 Rev= 1.00
+S: Manufacturer=HTC
+S: Product=Android Phone
+S: SerialNumber=HT989L903341
+C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=256mA
+I:* If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
+E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
=> It really seems the HTC hero shows no other services beside "mass storage" device ?
Here's what dmesg says:
Aug 30 22:00:57 killdozer usb 1-6: new high speed USB device using ehci_hcd and address 7
Aug 30 22:00:57 killdozer usb 1-6: configuration #1 chosen from 1 choice
Aug 30 22:00:57 killdozer scsi5 : SCSI emulation for USB Mass Storage devices
Aug 30 22:00:57 killdozer usb-storage: device found at 7
Aug 30 22:00:57 killdozer usb-storage: waiting for device to settle before scanning
Aug 30 22:01:02 killdozer scsi 5:0:0:0: Direct-Access HTC Android Phone 0100 PQ: 0 ANSI: 2
Aug 30 22:01:02 killdozer sd 5:0:0:0: Attached scsi generic sg2 type 0
Aug 30 22:01:02 killdozer usb-storage: device scan complete
Aug 30 22:01:02 killdozer sd 5:0:0:0: [sdb] Attached SCSI removable disk
OK, so Linux didn't see any functionality except for the mass storage part. So now, I try to enable the "wireless connection sharing" mode (see article:
Using the HTC Hero as a USB modem) and then I get:
--- /tmp/before 2009-08-30 17:06:08.000000000 +0200
+++ /tmp/after 2009-08-30 17:06:37.000000000 +0200
@@ -31,3 +31,16 @@
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=256ms
+
+T: Bus=01 Lev=01 Prnt=01 Port=06 Cnt=01 Dev#= 24 Spd=480 MxCh= 0
+D: Ver= 2.00 Cls=02(comm.) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
+P: Vendor=0bb4 ProdID=0ffe Rev= 1.00
+S: Manufacturer=HTC
+S: Product=Android Phone
+S: SerialNumber=HT989L903341
+C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=256mA
+I:* If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=ff Driver=rndis_host
+E: Ad=84(I) Atr=03(Int.) MxPS= 64 Ivl=32ms
+I:* If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=rndis_host
+E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E: Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
=> The Hero displayed a message saying that "mass storage" and "sync" are both disabled in this mode. I see the block device doesn't appear anymore (as expected), but now
we get two RNDIS services ?? Why two services, and why no RNDIS in the other (ie: the "storage + sync") mode ? I mean, RNDIS is used by the ActiveSync protocol, right ?
And dmesg says:
Aug 30 22:05:23 killdozer usb 1-7: new high speed USB device using ehci_hcd and address 16
Aug 30 22:05:23 killdozer usb 1-7: configuration #1 chosen from 1 choice
Aug 30 22:05:23 killdozer scsi9 : SCSI emulation for USB Mass Storage devices
Aug 30 22:05:23 killdozer usb-storage: device found at 16
Aug 30 22:05:23 killdozer usb-storage: waiting for device to settle before scanning
Aug 30 22:05:23 killdozer usb 1-7: USB disconnect, address 16
Aug 30 22:05:24 killdozer usb 1-7: new high speed USB device using ehci_hcd and address 17
Aug 30 22:05:24 killdozer usb 1-7: configuration #1 chosen from 1 choice
Aug 30 22:05:24 killdozer usb0: register 'rndis_host' at usb-0000:00:13.2-7, RNDIS device, fe:c7:0b:e1:06:84
PS:
- I have kernel 2.6.30-gentoo-r5,
kernel config attached.
- the USB vendor/device ID for my HTC Hero: 0bb4:0c01
Please advise, as I really don't know what to do !
Thanks in advance