Contribute
Even if you are not a software developer, you can help us collecting data on the transfer protocol, the memory layout and/or verify the correct parsing of the dive profile. You don't need any technical knowledge at all.
Feel free to contact me for questions or further assistance.
Transfer protocol
If your device is not supported yet, you can help us analyze the transfer protocol by doing a transfer with the original software of the manufacturer, and capture the communication between the software and the device.
Most devices are communicating over a serial port (either directly or by means of a built-in serial to usb converter) and you can use a freely available capture application for the job. The procedure is as follows:
- Download PortMon (142 KB) from the Microsoft website.
- Open this zip file and start the portmon.exe program. This program is only a single exe and needs no installation.
- In the menu "Computer" choose "Connect Local". If this option is not available (greyed-out), the program has done this automatically.
- In the menu "Edit" choose "Max Output Bytes..." Change the value in the next dialog to a large value (such as 3072) and click "Apply".
- In the menu "Options" enable "Show Hex".
- In the menu "Capture" enable "Capture Events".
- In the menu "Capture -> Ports" enable only the COM port which is connected to the dive computer interface. If you don't know which port is used, you may enable all of them.
- Start the manufacturer's software and initiate a transfer.
- Wait until the transfer is finished and go back to PortMon. If you did everything right, you should see a large list of data now.
- In the menu "File" choose "Save As" and save the logfile somewhere where you can easily find it again. On the desktop for instance.
Important: PortMon doesn't work on 64-bit Windows 7 (or any 64-bit windows). If you experience problems, try running it with administrator rights and/or Windows XP compatibility mode.
Memory layout
Once your device is supported, you can help us analyze the downloaded data by running one of our test applications, and contribute memory dumps of the device. The procedure is as follows:
-
Identify the backend type for your device. Have a look at the list of supported devices, which is grouped by backend. The backend type is the name of the first device (lowercase and no spaces). If your device is not listed, you can usually pick the correct one based on the other names in the list. If you are unsure and want to play safe, contact me first.
-
Download the test application for your platform. We provide binaries for Windows, Linux and Mac OS X.
-
Connect the serial or USB cable of the interface to the PC and identify its portname. For serial cables the portname is usually
COM1
(Windows) or/dev/ttyS0
(Linux and Mac OS X). For USB cables, the portname is dynamic and can change every time. Usually, it'sCOMx
on Windows,/dev/ttyUSBx
on Linux, and/dev/tty.usbserial-xxx
on Mac OS X. On Linux and Mac OS X systems, you can executedmesg
to find the exact name. -
Attach the dive computer to the interface and put it into transfer mode (if that is necessary for your type of device).
-
Run the test application, and wait until it is finished. If the portname is different from the default
COMx
or/dev/ttyS0
, you need to provide the correct one with a command line parameter. For examplevyper.exe COM3
.
Note: On Windows you need to use the special \\.\COMx
syntax for
standard portnames with a number higher than 9, and all portnames that do not
follow the standard COMx
naming convention. This syntax is also
supported for normal portnames.
All output is written to a logfile and a number of memory dumps that you can send by email.
Parsing
Once downloading the data is working fine, the next step is decoding the dive profiles. Here, you can help us verify whether the dive profiles are parsed correctly. The procedure is as follows:
Download the new "univeral" test application for your platform. We provide binaries for Windows, Linux and Mac OS X. With the right options (see below), this application will download the dives and generate a simple xml file with the profile data. It will look like this:
<dive>
<number>1</number>
<size>573</size>
<fingerprint>072416D7070B12</fingerprint>
<datetime>2007-11-18 07:36:22</datetime>
<sample>
<time>00:00</time>
<depth>1.34</depth>
<pressure tank="0">183.00</pressure>
<temperature>29.00</temperature>
</sample>
...
</dive>
You should compare this output with the data in the manufacturer's application, and see if there are any errors. And last but not least, don't forget to let me know if your output contains errors or not.
It's again a command line application, that accepts a number of options. The most important ones are:
universal.exe -b <backend> [-m <memorydump>] [-d <xmlfile>] <serialport>
You can start the application without any parameters (or the -h
option) to get a little help, and a list with the supported backend names. I
think the options are pretty self-explanatory, but let me know if you have
questions or need more help. Both the -m
option (to output a memory
dump) and -d
option (to output the dives) are enabled by default,
but the transfer will go faster if you enable only the one you actually
need.