Take the 2-minute tour ×

I'm looking for documentation on the file format of Palm Desktop's "datebook.dat" file for versions of Palm Desktop >= 4.1.

Note that http://www.notsofaqs.com/datebook_dat.php documents part of the <4.1 datebook format, but I'm looking for the current "Calendar" format used by the current version of Palm Desktop.

There exist Perl and PHP scripts that attempt to reverse-engineer portions of the format, but a complete spec would be most helpful.

I could not find anything on the Palm Developer Web site.

The only additional clues I have are

  1. The first four bytes of the file are "0xCAFEBABE" just like in Java class files and Mach-O files (?!)
  2. A forum post in a user group mentioned that Palm was using some kind of "MS Serialization" technique and linked to a defunct post on a previous incarnation of the Palm Developer Network

Any help would be greatly appreciated! For example, if anyone knows of a Microsoftish serialization format that uses the "0xCAFEBABE" magic number, this might help my sleuthing.

share|improve this question
add comment

6 Answers

Palm Desktop 6 ("Palm Desktop by ACCESS") stores files in MS Access format. Prior versions of Palm Desktop (e.g. 4.x and earlier) store files in a proprietary format, as other has mentioned. If you use your Palm Desktop to save your calendar in Datebook Archive format (as opposed to Calendar Archive format, which confusingly also uses a DBA extension), it will be in a format that is documented fully here: http://www.notsofaqs.com/palmrecs.php.

I know these docs are complete because I used them to write Palm2CSV, a Palm to CSV/iCal converter that works with both Palm 4 and Palm 6 files. (It handles Palm 6 files by first running them through MDBTools, then parsing the CSV output.)

share|improve this answer
add comment

I don't want to frustrate you, but it's almost impossible. I have a palm for 5 years and spent hours and hours to sync my palm with any open platform.

It still does not work properly. The only working solution is sync with Outlook.

There's no official documentation about Palm's file formats. In my opinion, they are not interested in open delevopment and Palm Inc. has more important problem than their file formats.

I gave up. It's a pity, but there was no option.

share|improve this answer
add comment

The format, IIRC, is the serialization format used by the Microsoft Foundation Classes (MFC). It's highly dependent on the actual implementation of the C++ objects that are being saved to disc. Since MFC source code comes with Visual Studio, you might be able to look at that to figure out what is happening.

However, with the update to the 4.1 Desktop application, the binary format did change to handle the new fields that were added. I'm not privy to those changes or if the code used the same method that the original desktop did.

share|improve this answer
This is hard to believe. Why on earth would Pam use MFC serialization format? Isn't the file format shared between the desktop and the Palm? –  jdigital Jan 13 '09 at 1:07
I believe that the data on the Palm itself is stored in the PDB format which actually is documented. That's only useful if you're writing a Palm app, though. The Calendar Hotsync conduit does the data conversion to the PC format, correct? –  David Citron Jan 14 '09 at 20:29
Right, the MFC format is used only on the desktop side. Since HotSync ran as a record-level wire protocol between the device and the desktop app, there was no need for the storage formats to be the same for the two applications. –  Ben Combee Oct 16 '09 at 20:23
add comment

Another place to look would be the jpilot project. It's a linux PIM which creates palm databases which can then be sync'ed directly to the palm.

share|improve this answer
add comment

Look here, there is a very good reader on perl on which you can see the format.

share|improve this answer
I have already linked to that Perl script in my question. Unfortunately, it's not a complete answer--that Perl script only reads some of the fields in the datebook.dat file (see the NOTE near the top of the script). –  David Citron Dec 9 '09 at 14:16
add comment

Was just searching for the same thing and stumbled across this discussion. The best I've found so far is dbapipe which can read and write dba files (using its own text format as an intermediate representation). The program handles the 4.1.4 and earlier formats. This doesn't constitute documentation, of course, but a working program is a good start. The program is written in C and the download includes a precompiled version for Windows.


Note that dbapipe fails if it hits a calendar entry with a location.

One other resource I've located is a Palm datebook manipulation module that is part of the Gabbie natural language command system. Its palm.c file has some documentation.

It's a pity Palm didn't provide official documentation for their file formats. I wonder if part of this is embarrassment about the kludgey design.

share|improve this answer
add comment

Your Answer


