Atom 2.0 protocols?

Please register or login

Welcome to ScubaBoard, the world's largest scuba diving community. Registration is not required to read the forums, but we encourage you to join. Joining has its benefits and enables you to participate in the discussions.

Benefits of registering include

  • Ability to post and comment on topics and discussions.
  • A Free photo gallery to share your dive photos with the world.
  • You can make this box go away

Joining is quick and easy. Log in or Register now!

eklynx

New
Messages
1
Reaction score
0
Location
Redmond, WA
# of dives
0 - 24
I'm a computer programmer/techie that just got started into diving. After doing a bit of research, I settled on the Atom 2.0 computer. The down side, is that I primarily use a Macintosh computer. There are no Macintosh drivers, and the OceanLog software doesn't export to any 'standard' dive profile file format.

I found protocol information on the Suunto brand dive computers with their computer link, but nothing on the Oceanics. Is there anywhere where people have broken down the communication protocol or where oceanic has made the protocol available for downloading dive information from the Atom or any other Oceanic dive computer? If i could find the protocol information, i could probably make a program for mac/*nix that will import to other popular dive software.
 
I'm interested in this as well, for similar reasons -- would be nice if Oceanic just published the protocol, it's not like they make money off the software side of things. Having the protocol open would encourage other software to be created as well, so people who aren't happy with OceanLog could have alternatives. If anyone has any info, please let me know as well.
 
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!
 
https://www.shearwater.com/products/teric/

Back
Top Bottom