root/plugins/moto-sync/README

Revision 2735, 5.5 kB (checked in by abaumann, 1 year ago)

more V3 hack fixes, from ticket #599

Line 
1 INTRODUCTION
2
3 This is a VERY EXPERIMENTAL plugin for syncing with Motorola phones
4 using the AT command set. It supports syncing phonebook and calendar
5 entries (ie. the contact and event object types). It will most likely
6 mess up the data on your phone and any other members of the sync group,
7 due to the limited data that can be stored on the phone, so use with caution
8 and make backups! See BACKUP/TESTING below.
9
10
11 SUPPORTED HARDWARE
12
13 Known working models:
14  * L7 SLVR
15  * V3i RAZR
16  * V557
17
18 Possibly working, but only lightly tested:
19  * V3x RAZR (tested reading only)
20  * V635 (tested reading only)
21
22 Untested, but might be working with recent changes:
23  * K1 KRZR (extended calendar suppport, ticket #425)
24  * V3xx RAZR (extended calendar suppport, ticket #425)
25  * V3c (doesn't like AT+MODE=0, ticket #505)
26  * V3 RAZR (tickets #599, #555, #504)
27
28 Models known not to work:
29  * V600 (shorter contact entries, ticket #504)
30  * A780 (doesn't seem to respond to AT commands, except with ERROR)
31
32 If your phone isn't listed above, or if your results differ, please let
33 me know how it works for you, by emailing andrewb AT cse DOT unsw DOT
34 edu DOT au.
35
36
37 REQUIREMENTS
38
39  * OpenSync 0.31 or later with the python bindings and python-module plugin
40  * Python 2.4 or newer
41  * The python-dateutil library (at least version 1.1),
42    from http://labix.org/python-dateutil
43  * Optionally, the pybluez library (at least version 0.9)
44    from http://org.csail.mit.edu/pybluez/
45
46
47 INSTALLATION
48
49 cp motosync.py $PREFIX/lib/opensync/python-plugins
50 cp moto-sync $PREFIX/share/opensync/defaults
51
52
53 CONFIGURATION
54
55 For now, there is only one configuration option to moto-sync: the device
56 string to communicate with the phone. This is specified in a small XML
57 file, the contents of which should look like:
58         <config><device>your device string here</device></config>
59
60 There are two options for specifying the device string:
61  1. If your phone is connected by bluetooth, and you have the pybluez
62     package installed (see REQUIREMENTS above), you can use its MAC
63     address (eg. 00:11:22:33:44:55) as the device string.
64
65  2. Otherwise, you have to specify the full path to a device node on the
66     local file system that can be used to communicate with the phone.
67     Devices you're likely to use in this case are:
68   * /dev/ttyACM0 for a USB modem connection (or whatever other device the
69     phone shows up on, see dmesg). Note that the phone has to be in the
70     "Data/Fax connection" mode, not mounted as a USB storage device.
71   * /dev/rfcomm0 which is the first bluetooth channel. You need to setup
72     that channel to bind with your phone, by doing something like:
73          rfcomm bind rfcomm0 00:11:22:33:44:55 1
74
75
76 BACKUP/TESTING
77
78 Before doing anything, it is probably a good idea to backup the data
79 from your phone. You can use the mototool script to do this, and to
80 delete entries on the phone. Run 'mototool --help' for details, or, for
81 the impatient, try:
82     mototool -d (device string) -f myphone.backup --backup
83
84 The best way to get started testing this plugin is in a sync group
85 with file-sync. To configure and use this, do:
86         msynctool --addgroup moto-file
87         msynctool --addmember moto-file moto-sync
88         msynctool --addmember moto-file file-sync
89         msynctool --configure moto-file 1 # configure moto-sync, as above
90         msynctool --configure moto-file 2 # configure file-sync, set the path(s)
91         msynctool --discover moto-file 1
92         msynctool --discover moto-file 2
93         msynctool --sync moto-file # cross your fingers!
94
95
96 LIMITATIONS AND KNOWN PROBLEMS
97
98 Unfortunately the functionality offered by the phone is extremely
99 limited. I'd love to know how well it works with SyncML, especially for
100 complex calendar events, but I'm guessing the answer is "not very". The
101 phone books and calendar work in basically the same way:
102  * entries are stored in memory "positions"
103  * there are AT commands to read and write the data at a certain position
104
105 This means that if an event changes position (which you can do for the
106 phone book, for example if you want to change speed dial numbers) we
107 don't have any way of detecting that it's the same event. Similarly, if
108 an entry is deleted and a new one created in its place, we can't
109 distinguish that from a (large) change to the original entry.
110
111 For the phone book, each entry has a name, number, contact type
112 (home/work/mobile/email address etc.), nickname, address, category
113 number, birthday, and some other fields for things like ringer ID that
114 we don't handle very well yet. A contact with multiple phone numbers is
115 actually just multiple entries in the phone book, so when we read
116 entries we have to merge any with the same name into a single contact,
117 and split them up again on write. This leads to all sorts of problems in
118 maintaining consistent UIDs for a contact, when our only real handle on
119 which entry is which is the positions it occupies.
120
121 For the calendar, each event has a name, date/time, duration, alarm
122 date/time, repeat type, and list of exceptions. The repeat type in
123 particular is very limited, and unless you have a recent-model phone
124 with extended calendar support, many recurring events can't be
125 represented on the phone. At the moment the plugin detects this and
126 just refuses to write them. A better solution would be to split them up
127 into multiple events, but this will confuse OpenSync when we sync up
128 again.
129
130
131 TODO
132
133  * Better error/exception handling
134  * See all the FIXMEs in the code
135  * Do something with "mailing list" entries in the phonebook
136  * Add support for reading/writing the SIM phonebook
137  * Improve support for other hardware
Note: See TracBrowser for help on using the browser.