So given that there's really no info about this, I decided to take a crack at it. I've got a good chunk of things figured out already:
- key pieces of the serial protocol, enough to download the PDC's memory;
- list of dives in memory (including date/time, surface interval time, and minimum temperature on that dive; also tramistter IDs and FO2 for each configured tank, as well as starting/ending pressure for each tank)
- start-of-dive tissue loading data;
- samples taken during each dive (pressure in active tank, depth, dive time remaining, air time remaining, temperature)
However, there's still a bunch of data that I'm missing -- I only have access to 2 VT3s to examine the data from, and they both have only dives in normal mode with either a 30s or 15s sampling rate... so I don't know what a dive done in gauge mode or a free dive looks like. I have no idea if/how the PDC records things like violations in its logs. Also, oddly, after reading 64k worth of data from memory, the data starts to repeat... I'm probably just not doing something right, but I don't have any idea how to dump the full 512k that should be available. (Unless the 512k in the specs was meant as 512k bits, not bytes?)
So, if anyone wants to help me figure this out, I put together a quick program to just capture the memory dump. Win32 binary is at
http://vlad.off.net/misc/ocdump-0.zip ; python source is at
http://vlad.off.net/misc/dumpOceanic.py . Basically, plug the computer in, wait a few seconds, run dumpOceanic.exe, then send me (vladimir@pobox.com) the oceanic.raw file that it'll read. Ideally, it would be great if you can use OceanLog to also export all the dives that are currently on your computer and send me those files as well (import dives into OceanLog, then go to Log Book -> Export Dive Details, select the dives that you just imported.. Text format, Comma Delimiter).
Note: While I've run this against my own dive computer a bunch of times and haven't had any problems, I make no guarantee that this will not do horrible things to your dive computer, to your desktop computer, or to your dog. If you're apprehensive about running a binary, feel free to install python (2.4, 2.5, or 2.6 all work), pywin32, and pyserial and run the .py script directly. You can look at that script to see what it does communication-wise with the device.
The .zip is big since I'm just doing a quick-and-dirty python prototype; it's also fairly slow, not sure why; but it'll do the job for now.
If you're on MacOS X, you'll have to do a bit more work. You can grab the USB driver from FTDI (the devices use a FTDI USB-Serial chip) at
Virtual COM Port Drivers -- once you install the OSX package, you'll have to modify an info file to get it to recognize the particular product ID that's in use. Edit /System/Library/Extensions/FTDIUSBSerialDriver.kext/Contents/Info.plist, search for Oceanic (this isn't the same Oceanic, but it's a convenient thing to replace), and after idProduct, change the number to be 62560 (0xF460). Then install pyserial from
pySerial (download tarball, run python setup.py install), and run "python dumpOceanic.py /dev/tty.usbserial-20030001" (or whatever the /dev/tty.usbserial* thing was that showed up).
If you're on Linux, the ftdi_sio driver works, but it needs the product ID added as well; recompiling that module is beyond the scope here, but it's the FTDI VID and 0xF460 as the PID. You can even edit an existing ftdi_sio.ko and change one of the existing PIDs with a hex editor to F460 (e.g. the Suunto one, it only shows up once in the file -- be aware that it's stored in little-endian order).
I'll put up some info on the actual data layout soonish as soon as I verify a few things!