Andrew Mayo (ajm...@my-deja.com)
wrote on
Date: 2002-02-05 06:04:08 PST
Recently I picked up an Oregon Scientific PDA293 (also known as the
Echo) for around GBP35, which is about USD50. Unfortunately the
synchronisation software available for this unit sucks big-time, and
in fact the only synch software I've been able to get running at all
is the Easy Sync product bundled with the unit.
Since I wanted to import and export data from external sources, this
was a big disappointment. Easy Sync is a self-contained package; it
uses an Access database to store information and allows you to upload
and download this to the organiser, but you have to input information
either into the organiser or Easy Sync, there is no facility for
import and export.
Since Easy Sync uses an Access database, it seemed like it would be
quite simple to update the tables from an external application.
However, attempting to open the idtlinkdb.mdb file from within Access
resulted in an 'unsupported database version' error.
I discovered, however, that this is simply an evil trick on the part
of Oregon's programmers. Since they didn't want to break any of their
partner vendor ricebowls, they deliberately crippled Easy Sync to
prevent anybody importing or exporting data to it from external
sources. To ensure that you didn't update the database tables
yourself, the software writes a couple of invalid bytes to the .mdb
file when it closes. It then rewrites these to the correct value when
you run it. You can see this by copying the .mdb while Easy Sync isn't
running, then start it up and use fc /b to look at the differences.
But because Easy Sync has to correct the database file values before
it can open it, you can update the database tables by opening the .mdb
file while Easy Sync is running. Then close Easy Sync, re-run it and
the data will be there ready for downloading to the PDA. Or you can
use the same trick to extract uploaded PDA data and export it to
another application.
(of course you could also write a little utility to patch the .mdb
file, but this is simpler)
Here is a snippet of VB code that deletes all rows from the telephone
book and then inserts a whole bunch of random gunge, just to prove
that things work.
Dim c As New ADODB.Connection
Dim rs As New Recordset
Dim i As Long
c.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=e:\program files\oregon scientific pda293\easy-sync for
pda293\idtlinkdb.mdb;"
c.Open
Set rs.ActiveConnection = c
rs.Open "delete from telephone"
rs.Open "telephone", , adOpenDynamic, adLockPessimistic
For i = 1 To 300
rs.AddNew
With rs
.Fields("name") = "N" & Int(Rnd(1) * 1000000)
.Fields("phoneno") = Int(Rnd(1) * 1000000)
.Fields("homeaddress") = "A" & Int(Rnd(1) * 1000000)
.Fields("companyname") = "C" & Int(Rnd(1) * 1000000)
.Fields("companyphoneno") = "CP" & Int(Rnd(1) * 1000000)
.Fields("companyaddress") = "CA" & Int(Rnd(1) * 1000000)
.Fields("faxno") = "F" & Int(Rnd(1) * 1000000)
.Fields("emailaddress") = "E" & Int(Rnd(1) * 1000000)
.Fields("mobilephoneno") = "M" & Int(Rnd(1) * 1000000)
.Fields("companyposition") = "CN" & Int(Rnd(1) * 1000000)
.Fields("birthday") = "B" & Int(Rnd(1) * 1000000)
.Fields("userdefined") = "U" & Int(Rnd(1) * 1000000)
.Fields("machineid") = 5266
.Fields("type") = 141
.Fields("status") = 1
.Fields("ischecked") = 1
End With
rs.Update
Next i
rs.Close
c.Close
MsgBox "done"
Note that this code needs to be run with Easy Sync up and running.
Then close Easy Sync and re-enter it. The data will now be displayed
and you can download it to the PDA.
The remaining data types such as notebook entries etc. are contained
in tables with identical layouts. You must set the machineid, type,
status and ischecked columns. I just copied the values that were
already in rows added manually through Easy Sync. There is also a
numeric row id which I did not bother setting; the download appears to
work without it.
A couple of other points:-
Firstly, there have been some posters asking about the data protocol
which the PDA uses to communicate with the PC. I used the "portmon"
utility (www.sysinternals.com) to snoop on the dialogue during a sync
operation. The protocol is quite complex and involves sequenced
response packets and checksums. I doubt that Oregon make this
information public and although I could see that disassembling it was
possible, and made some headway, the work required to implement the
protocol was quite considerable and subverting Easy Sync is a *lot*
simpler if you want to get data in and out of the unit. Unless you're
using Linux, in which case I guess you're up for a fair bit of work.
(I do have quite a bit of information gleaned so far on how it works
(email ajm...@kohuconsulting.com), to which you are most welcome; I am
a great Linux advocate and encourage any such efforts).
Secondly, the PDA's memory allocation scheme is fairly basic. Each
type of entry, e.g phonebook, notepad, etc, is assumed to occupy
around 200 bytes. Thus you can have around 2,500 total entries of any
kind, regardless of the length of each entry. Thus, although the unit
has 512K of memory, unless you create quite lengthy phonebook entries
you'll probably end up wasting most of the available memory, which is
a shame. Still, it was only cheap and does the job quite adequately.
Finally Easy Sync may not work properly if other software is also
using the serial port. It may be necessary to reboot after using other
software, because Easy Sync doesn't appear to configure the port
fully. In particular, if Easy Sync won't work, check that the port
settings in Device Manager include XON/XOFF flow control. Then reboot.
This should fix the problem.
You may wonder why on earth I persevered with this, rather than
getting my money back. The reason is that as far as I know, the PDA293
is the only credit-card sized PDA with stylus entry, there's no
alternative, so if this is what you want, you have to fight the
wretched software that comes with it. And don't bother with the
separately downloadable Windows Link software. I have spent hours
trying to get that to work with complete lack of success. It will not
synchronise with the PDA and reports all kind of data errors. Oregon's
tech support told me to try the latest software after I'd already made
it clear I was already running the latest software, so I don't imagine
I'll get any help from them.