A while ago I created my own logbook pages template. I hope you find it useful, too! It is double sided, so make sure you print it correctly.
It is available for download as
- Logbook.pdf (32kb, PDF)
- Logbook.cwk.zip (12kb, AppleWorks file)
A while ago I created my own logbook pages template. I hope you find it useful, too! It is double sided, so make sure you print it correctly.
It is available for download as
This document describes the transfer protocol and memory layout of these suunto diving computers:
Suunto changed the protocol for these models – again. One reason is that the D9 is capable in recording not only the depth, but also pressure and temperature throughout the dive. The computers also have no longer just 8kb, but 32kb of memory for the profile information.
The interface is technically still a RS232 interface, but with a USB connector. With a device driver from the USB chipset vendor FTDI it will be recognized as a standard serial port.
The RS232 should be 9600 baud, 8N1.
The protocol for the Suunto D9 is slightly different from other Suunto computers. The first thing is that the interface is USB only. But with the standard driver is behaves like a serial port (see above). These standard drivers are available for Mac OS X and Linux, so there should be no reason to go into too much detail.
All data is send in packages to and from the computer. Every package is followed by a CRC for checksum reasons.
unsigned char checksum = 0x00;
for(int i=0; i<packageLen; ++i)
checksum ^= package[i];
The package starts with a command byte, followed by the length of bytes for the parameters ($00 $03 = 3 Bytes), the actual parameters and the CRC at the end. Here are examples of the most common commands:
The DiveManager Software from Suunto does the following when reading data from a D6/D9: – GetVersion() – ReadMemory($0, $78) – ReadMemory($168, $78) (Reading the memory header) – ReadMemory($F0, $78)
After that the DiveManager reads the headers of all profiles first (by following the linked list in the headers), but always $78 bytes and later fills in the holes in the memory, if necessary. This allows the DiveManager to display a progress bar for the import.
To change the personal information, it does the following: – GetVersion() – Write($015E,$28) – Read($0168,$78) – GetVersion() – Read($0000,$78)
To reset the max. depth to zero it does the following: – GetVersion() – ResetMaxDepth() – Read($00F0,$78) – Read($0168,$78) – GetVersion() – Read($0000,$78)
There have been two recalls of the Suunto D9 so far.
The 32kb of memory is split into a $019A bytes header and the rest is a ring-buffer with the dive profiles. The ring-buffer is a stream of data, which ends at the position, that is marked in the header. At this position the computer starts writing the information from the next dive. If the write pointer reaches the value $8000, it jumps back to $019A.
I am using the following parameter types:
parameter types | Description |
---|---|
B | 8 bit Byte |
Bn | n Bytes |
W | 16 bit LSB integer |
An | ASCII string, max. n Bytes long |
All units inside the Suunto are metric (meter/centimeter, bar)!
offset | format | testvalue | content
$00 | B | $00 | empty |
$01-$02 | A2 | “D9” | Type of the dive computer, “D9”, “D6” or “D4” |
$03-$0A | A8 | “20050228” | Manufacturing date (28 Feb 2005) |
$0B-$12 | A8 | “00001204” | Serial number? |
$13-$15 | B | $00 $55 $00 | ??? |
$16-$22 | B | .. $FF .. | unused |
$23-$26 | B4 | $50 $90 $12 $34 | official serial number ($50901234) Production date: 2000+5 / 09 week, watch 234 |
$27 | B | $FF | unused |
$28 | B | $0E | model ($0E=D9, $0F=D6 (can also be $0E?), $12=D4) |
$29-$2A | B2 | $01,$02 | Version (1.2.10 – well, were does the 10 come from?) |
$2B-$2D | B | $04,$09,$82 | ??? |
$2E | B | $82 | XOR Checksum $28..$2D |
$2F-$31 | B | .. $FF .. | unused |
$32-$33 | B | $01 $01 | ??? |
$34-$35 | B2 | $00 $00 | $0000 = metric, $0101 = imperial |
$36 | B | $FF | unused |
$37-$3A | B | $83 $00 $82 $F2 | ??? |
$3B | B | $0C | XOR Checksum $32..$3A |
$3C-$3F | B | $FE $00 $00 $00 | ??? |
$40-$63 | B | .. $FF .. | unused |
$64-$6F | B | .. | calibration data for sensors |
$70 | B | $.. | XOR Checksum $64..$6F |
$71-$73 | B | .. $FF .. | unused |
$74-$7D | B | .. | calibration data for sensors |
$7E | B | $.. | XOR Checksum $74..$7D |
$7F-$83 | B | .. $FF .. | unused |
$84-$8D | B | .. | calibration data for sensors |
$8E | B | $.. | XOR Checksum $84..$8D |
$8F-$015D | B | .. $FF .. | unused |
$015E-$0185 | A40 | .. | owner name (“Suunto Diver”), $00 terminated if short than 40 bytes |
$0186-$0187 | W | $F010 | max. depth ($10F0 = 4336 cm) |
$0188-$0189 | W | $AB02 | total dive time ($02AB = 683 minutes) |
$018A-$018B | W | $0C00 | total number of dives ($000C = 12) |
$018C | B | $.. | XOR Checksum $0186..$018B |
$018D-$018F | B | .. $FF .. | unused |
$0190-$0191 | W | $0A $46 | Ptr to the last dive in the ring-buffer (Offset $460A) |
$0192-$0193 | W | $0C $00 | Number of dives in the ring-buffer ($000C = 12) |
$0194-$0195 | W | $7E $4B | Ptr to behind the latest dive in the ring-buffer (Offset $4B7E) |
$0196-$0197 | W | $9A $01 | Ptr to the oldest dive in the ring-buffer (Offset $019A) |
$0198-$0199 | W | $5C $0E | checksum ??? (if changed SDM can no longer read the profiles) |
Every dive in the profile memory has a $4A bytes header.
offset | format | testvalue | content |
---|---|---|---|
$00-$01 | W | $9A $01 | Offset to previous dive ($019A – this is the very first) |
$02-$03 | W | $CF $06 | Offset to next dive ($06CF) |
$04-$0C | B | .. | ??? |
$0D-$0E | W | $F0 $10 | max. depth ($10F0 = 4336 cm) |
$0F-$10 | W | $1E $00 | dive time ($001E = 30 minutes) |
$11-$12 | W | .. | if value is $FFFF, there is no pressure information for the dive |
$13 | B | $03 | OLF PCT (3%) |
$14 | B | .. | ??? |
$15 | B | $0A | Date: hour (10 AM) |
$16 | B | $24 | Date: minutes (36) |
$17 | B | $0E | Date: seconds (14) |
$18-$19 | W | $D5 $07 | Date: year (2005) |
$1A | B | $0C | Date: month (12) |
$1B | B | $0B | Date: day (11) |
$1C | B | $0A | Sample recording interval (every 10 seconds) |
$1D | B | $00 | Gas model (0=Air, 1=Nitrox, 2=Gauge) |
$1E | B | $01 | repetitive dive number (1) |
$1F | B | $00 | Surface time (0 minutes) |
$20 | B | $00 | Surface time (0 hours) |
$21 | B | $03 | RGBM PCT (3%) |
$22 | B | $00 | Personal Setting (P0..P2) |
$23 | B | $00 | Altitude Setting (A0..A2) |
$24 | B | .. | ??? |
$25 | B | $20 | O2 PCT (only if in Nitrox mode, 32%) |
$26 | B | $15 | O2 PCT 2 (only if in Nitrox mode, 21%) |
$27 | B | $15 | O2 PCT 3 (only if in Nitrox mode, 21%) |
$28 | B | $00 | ??? |
$29-$2A | W | $.. $.. | PREVTPRESSURE_1 |
$2B-$2C | W | $.. $.. | PREVTPRESSURE_2 |
$2D-$2E | W | $.. $.. | PREVTPRESSURE_3 |
$2F-$30 | W | $.. $.. | PREVTPRESSURE_4 |
$31-$32 | W | $.. $.. | PREVTPRESSURE_5 |
$33-$34 | W | $.. $.. | PREVTPRESSURE_6 |
$35-$36 | W | $.. $.. | PREVTPRESSURE_7 |
$37-$38 | W | $.. $.. | PREVTPRESSURE_8 |
$39-$3A | W | $.. $.. | PREVTPRESSURE_9 |
$3B-$46 | B | .. | ??? |
$47 | B | $05 | Temperature recording interval (every 5 depth samples) |
$48-$4B | B | .. | ??? |
$4C-$4D | W | $4D $00 | Offset to the first marker position in the profile |
The length of the profile data can be found by looking into the profile header: the difference between the offset of the next dive to the current offset minus the size of the header ($4A).
Warning: Remember that the data is stored in a ring-buffer! The next dive pointer might actually be smaller than the current dive pointer.
To parse the profile data, you start with a time of 0:00 minutes and read to LSB 16 bit values. The first value is the current depth in cm. The second value is the tank pressure in bar * 100. Before reading the next value you increment the time by the “Sample recording interval” (Header offset $1C). Every “Temperature recording interval” (Header offset $47) there is another byte following with the temperature in degrees celcius. You stop once you’ve read the beginning of the next dive.
But, there is another twist: the dive profile can contain events, which are encoded into the profile information. For this you need check for the “Offset to the first marker position” (Header offset $4C). The first offset into the dive profile is $0000, you increment it with every byte you’ve read from the profile (4 or 5 per sample, see above). If the marker is equal to the current profile position, the next byte is an event type. You have to read all events till you will get Event $01 “Next Event Marker”. After you’ve read this one, you can continue normal parsing till you hit the next marker position.
Event | Type | Parameter | Function |
---|---|---|---|
$01 | Next Event Marker | WW | set the position of the next event marker (1st: current position, 2nd: next position) |
$02 | Surfaced | BB | Reached Surface at current timestamp + 2nd byte: seconds (for a more exact value) |
$03 | Event | BB | Other dive related events (1st: type, 2nd: time offset like in “Surfaced”) |
$04 | Bookmark/Heading | BBW | Bookmark & Heading (1st:???, 2nd: time offset like in “Surfaced”, 3rd: heading * 4, if < 0: Bookmark instead) |
The Dive Events from Event $03 are 7 bit values. If bit 7 is set, like in $8E which only seems to occur in that form, it means: Event has ended. So you can get a start and a stop time for one event.
Dive Event | Description |
---|---|
$01 | Mandatory Safety Stop |
$04 | Asc Warning |
$06 | Mandatory Safety Stop Ceiling Error |
$07 | ??? |
$09 | Depth alarm |
$0D | Air Time Warning |
$8E | Rgbm Warning (End) (always before the first profile data at the beginning of the dive) |
In November/December 2002 I enjoyed 9 1/2 weeks traveling through Australia.
The trip was booked via http://www.kangaroo-tours.de. The Mike Ball expedition was booked via http://www.diversionOZ.com. Both are highly recommended by me!
Here are a bunch of pictures from the trip
The headlines mostly match the rental car tour name as booked via Kangaroo Tours.
Unterkunft | Velidhu Holiday Resport |
---|---|
Zeitraum | Ende Juli 2000 |
Veranstalter | Meyers Weltreisen u.v.a. |
Ort | Velidhu, Malediven |
Velidhu ist eine 3–4 Sterne Insel mit ca. 100 Zimmern. Der Bereich zwischen der Standbar, Rezeption und den zwei Speisesälen ist mit Betonfliesen und angelegten Wegen versehen (etwas was ich auf den Malediven gar nicht mag), der Rest der Insel besteht aus Sandwegen.
Die Gäste kommen aus allen möglichen Ländern: Deutschland, England, Italien, Japan, Österreich und natürlich der Schweiz, was ich als sehr angenehm empfinde.
Die Rezeption, Speisesäle und Bar sind ebenfalls gefließt, jedoch kann man überall auch barfuß gehen.
Es gibt auf der Insel zwei Zimmerkategorien: Standard und Wasser-Bungalows. Bei den Standard-Bungalows gibt es zudem zwei Typen: mit 1/4 Terrasse und welche mit “rundum” Terrasse. Wobei man diese beiden jedoch als gleichwertig bezeichnen kann.
Achtung: auf keinem Zimmer ist ein Telefon vorhanden! Das macht es ziemlich schwierig z.B. mal eben bei Freunden durchzuklingeln (Hast Du das Tauchen vergessen? Ach, verschlafen! Kommst Du noch?) – man muß stets über die ganze Insel traben! Und wenn man seinen Wecker nicht dabei hat, dann wird es ganz schwierig: man kann sich zwar in ein Weckbuch an der Rezeption eintragen, so daß um die gewünschte Zeit ein Boy vorbeikommt und einem aus dem Bett klopft, aber das klappt leider nicht immer!
Die Wasserbungalows haben eine extra Sitzecke mit Glasfenster im Boden (beleuchtbar!), sowie eine große Terrasse (entweder zum Sonnenauf- oder zum Sonnenuntergang hin), ferner haben sie ein sehr schönes Bad mit riesiger Dusche und als Extras eine Kaffee- bzw. Teemaschine und eine Klimaanlage mit Fernbedienung. Leider wurden einige momentan renoviert, so daß die Bewohner schon ab 7:30 unter dem Lärm (Hämmern, Schleifen oder auch nur lautes Gelaber der Arbeiter) zu leiden hatten.
Die Standardbungalows sind schlichter ausgestattet, aber auch mit Klimaanlage versehen – wobei man bei einigen Bungalows diese nur ein- bzw. ausschalten kann; eine Regelung ist dort nicht vorgesehen.
Der Zimmerservice (Reinigung zweimal am Tag) ist unauffällig und sehr gut.
Es gibt morgens, mittags und abends ein recht großes Buffet, wobei es verschiedene Themenabende gibt (z.B. indische, chinesische oder italienische Küche). Das Essen ist gut und reichlich und besonders der Nachtisch ist richtig gut. Für eine Insel dieser Klasse gibt es beim Essen wirklich nichts auszusetzen.
Sehr durchwachsen: viel Regen, aber auch einige Tage mit blauem Himmel.
Die Tauchbasis ist für mich schlicht die Beste Ihrer Klasse auf den Malediven: noch nirgends habe ich bessere und liebevollere gezeichnete Briefings gesehen (hier nochmal ein besonderen Gruß an den Tauchlehrer Michele – siehe auch Bild unten), bis auf ein oder zwei Ausnahmen wurden alle Tauchplätze – auch unter widrichsten Bedingungen (die Sichtweite unter Wasser betrug zeitweise gerade mal 5m!) – immer auf Anhieb gefunden und sogar die Strömungsvorhersagen stimmten! Die maximale Tauchgangsdauer beträgt 60 Minuten (Nachttauchgänge 45 Minuten), die maximale Tiefe 30m (wie es auf den Malediven eh generell Gesetz ist). Anfänger haben eine entsprechend geringere Maximaltiefe (20m). Nachttauchgänge haben ein Tiefenlimit von 15m. Tauchcomputer sind Pflicht, werden aber von der Basis kostenlos zur Verfügung gestellt! Ebenso ggf. eine Strömungsboje. Getaucht wird mit 10l bzw. 12l Alu-Flaschen – wahlweise DIN oder INT, auch hier: 12l Flaschen gibt es ohne Aufpreis! Nach dem obligatorischen Checkdive kann man als erfahrender Taucher mit seinem Buddy selbstständig tauchen, Hauptsache man ist einigermaßen pünktlich wieder auf dem Boot und hält sich an das 30m Limit. Die Tauchbasis notiert sich nach jedem Tauchgang die Maximaltiefe, die Tauchgangsdauer und die Restluftmenge in der Flasche (Nein, es werden keine Computer kontrolliert, man wird nach den Daten gefragt! Trotzdem habe ich nie erlebt, daß jemand total gesponnene Werte genannt hat – wozu auch?), diese werden zusammen mit dem Namen des Tauchplatzes in der Akte notiert. Wer also die (schlechte) Angewohnheit hat, sein Logbuch erst am letzten Tag zu führen, braucht die Informationen lediglich von dort abschreiben!
Die Flaschen und auch die Ausrüstung wird von Leela direkt zum Boot oder Jetty (für Hausriff-Tauchgänge) transportiert – nix ist mit Kisten-schleppen im Urlaub! Auch hier nochmal ein besonderes Kompliment an Leela: sehr hilfsbereit! Wer vorbeikommt möge ihm doch einige O-Ringe mitbringen, so was kann er immer gebrauchen. Er sorgt auch dafür, daß die 3 Spülbecken (eins für Automaten, Kameras und Lampen, eines für Jackets und eines für Anzüge) immer sauber und voll sind. Die Tauchbasis ist die einzigste in der Welt, die ich kenne, wo der Trockenraum nach Desinfektionsmittel anstatt nach – Verzeihung – Pisse riecht (weil im Becken für die Anzüge Desinfektionsmittel ist!). Die Kisten, welche man am Anfang des Urlaubs bekommt, sind übrigens – ebenfalls untypisch – hinreichend groß für die gesamte Ausrüstung…
Auch die Basisleitung (Barbara und Ihr Mann K-G) ist sehr zuvorkommend: Sonderwünsche werden – wann irgend möglich – berücksichtigt und auch wenn zu einem Spezial-Tauchgang (z.B. einer Ganztagestour nach Fish-Head bzw. zu den Hammerhaien im Rasdhu Atoll) mal nicht die geforderte Minimalanzahl von Tauchern zusammenkommt (z.B. nur 5 anstatt der erforderlichen 6) ist man flexibel! Hat man selten.
Bei dieser Tauchbasis macht das Tauchen Spaß, auch wenn der eine oder andere Tauchgang vielleicht einmal nicht so der Bringer war (Kuda Giri am Nachmittag bei schlechter Sicht…). Das wird dann am nächsten Tag wieder gut gemacht.
Das Hausriff ist ca. 80m von der Insel entfernt (über den Jetty direkt zu erreichen) und kaum einen Tauchgang wert: die Korallenbleiche hat auch hier voll zugeschlagen, d.h. zwar viele Fische (auch Adlerrochen und Haie), aber kaum lebende Korallen. Sprich: schnorcheln und Nacht-Tauchgänge: ja, ansonsten gehe ich lieber aufs Boot!
Die Tauchplätze werden, wie fast überall auf den Malediven üblich, 2x täglich angefahren (9 Uhr und 14:30 Uhr). Alle Tauchgänge werden von mindestens einem Tauchlehrer begleitet. Die Anfahrten zu den Tauchplätzen dauern zwischen 15 und 60 Minuten. Die Briefings sind sehr ausführlich und sehr gut (Strömung, Skizze vom Tauchplatz, Besonderheiten, Gefahren, u.s.w.).
http://www.banyantree.com/maldives/
(obiges Bild ist vom Juli 2000)
Unterkunft | Banyan Tree Maldives |
---|---|
Zeitraum | Ende März 1998 |
Veranstalter | SubAqua, Airtours, Meyers Weltreisen (Preise vergleichen!) |
Ort | Vabbinfaru, Malediven |
Preis | $720-$1530 pro Tag inkl. VP (je nach Villa und Saison) |
Banyan Tree ist eine 5-Sterne Luxusinsel einer asiatischen Hotelkette. Die kleine Insel ist ca. 200m mal 250m “groß”. Auf ihr befinden sich 48 Villen, die durch die kleine Insel recht dicht gedrängt sind. Jedoch wirkt die Insel größer. Man merkt die Größe immer nur dadurch, daß man nach spätestens 10 Minuten wieder am Ausgangsort angelangt ist – egal in welche Richtung man geht. Die Insel wird durch den sog. “Highway” von Süden nach Norden geteilt (an den sich direkt die beiden Jettys anschließen). Der Highway ist natürlich keine echte Straße, sondern nur ein Sandweg… Ein weiterer Weg führt im Kreis einmal durch die Insel – hinter den Garden Villen entlang.
Banyan Tree liegt direkt neben Ihuru und in Nachbarschaft zu Baros und Bandos. Wer zum Arzt muß, wird mit einem Schnellboot in die Klinik nach Bandos gebracht.
Banyan Tree befindet sich ca. 18km von Male bzw. dem Airport entfernt und ist 1995 neu eröffnet worden. Das alte Hotel wurde komplett abgerissen. Die Insel ist zwar nicht so “Robinson like” wie Soneva Fushi, aber trotzdem kein Vergleich zu Inseln wie Kurumba, Laguna Beach oder Kuda Huraa. Sie hat den Malediven typischen Stil erhalten, die Schuhe können zu Hause bleiben – nunja, ein paar Badelatschen sind für den 100m langen Bootssteg zu empfehlen: wenn die Sonne den ganzen Tag auf das dunkle Holz geschienen hat, kann man ihn nicht mehr betreten…
Durch die Stürme im Dezember 1997 hat die Insel auf der Ostseite (Villen 33–49) ziemlich gelitten. Selbst im März wurde bei Hochwasser immer noch kräftig Sand weggespült, so daß einige Villen schon mit der Holzterrasse über dem Wasser stehen. Die momentan notdürftige Befestigung mit Sandsäcken, sowie die freigespülten Fundamente des alten Hotels sehen jedenfalls nicht gut aus – aber was will man machen? Im Westen der Insel sammelt sich übrigens der Sand von der Ostseite. Der Strand dort ist seit Dezember bis zu 50m breit geworden! Im Mai 1998 will das Management den Sand wieder an die Ostseite pumpen lassen – es könnte dann also laut werden… Banyan Tree gibt momentan fast $200000 im Jahr für die Erhaltung der Insel durch Sandanspülungen aus. Das Befestigen der Insel mit Korallenblöcken ist übrigens inzwischen auf den Malediven verboten. Ich hatte die Villa 30 (BTW: sehr zu empfehlen).
Die Villen sind alle gleich. Sie unterscheiden sich lediglich in der Lage: Beach-Front-Villa bzw. Garden-Villa, wobei letzere in zweiter Reihe stehen und erstere direkt am Wasser bzw. Strand stehen.
Banyan Tree Villa
Die Villen selbst sind bisher das beste was ich auf den Malediven erlebt habe – mit Abstand! Einzig die Villen auf Soneva Fushi sind vergleichbar. Alle Villen haben einen nicht einsehbaren privaten Garten hinter der Villa, wo sich bei vier der Villen (drei Beach-Front-Villen, einer Garden-Villa) ein privater Jacuzzi (ein Whirlpool, ca. 1,75m x 1,75m groß) befindet. Es ist erwünscht Wäsche nur im Garten aufzuhängen: wegen der Optik… Kleidervorschriften gibt es auf der Insel allerdings nicht.
Die Villen betritt man durch den Garten, sie gleichen einem Schneckenhaus in dessen Mitte ein riesiges “King Size” Bett mit Moskitonetz und großen Ventilator darüber steht. Am Kopfende vom Bett befindet sich ein flacher Schrank, welcher u.a. die Zimmerbar enthält. Auf der rechten Seite – sofern man in einem fast runden Raum überhaupt von einer Seite sprechen kann – neben dem Eingang steht ein kleiner Schreibtisch mit Teekocher. Auf der linken Seite ist ein sehr gemütliches großes Sofa in die Ecke hinter dem Eingang zum Bad, welches sich auch ausgezeichnet für eine dritte Person als Bett eignet. Die Rückseite bzw. die Front zum Meer hin besteht aus drei großen Flügeltüren mit verstellbaren Lamellen. Vor den Türen befindet sich die Holzterrasse mit einem Tisch inkl. Sonnenschirm (ideal für das Frühstück), sowie zwei Liegen. Wer die Türen offen läßt, kann die Villa somit auch über die Terrasse betreten.
Im Badezimmer gleich rechts ist eine Art Kleiderschrank mit recht großem Safe. Zwei Waschbecken mit Spiegeln, sowie Naßrasierer, Schminktücher, Föhn, diverse Handtücher u.s.w. gehören ebenfalls zur Grundausstattung. Die Toilette befindet sich links, oberhalb der Dusche, welche 2 Stufen in den Boden eingelassen ist. Um es genau zu nehmen: die Villen liegen ca. 1/2m erhöht. Sieht jedenfalls sehr sehr edel aus. Vom Bad aus führte bei mir ebenfalls eine Flügeltür zum Garten, in dem sich noch zwei Liegestühle befinden.
Wer das nötige Kleingeld hat ($800 pro Tag) kann auch die Präsidenten Villa (Nummer 43) buchen. Die Villa hat neben Fernseher, Video und Hifi-System (in den anderen Villen einzeln auch für $10 pro Tag zu mieten; Videoverleih ist kostenlos) auch eine Klimaanlage (Durch den geschicktem Einsatz der Lamellentüren ist allerdings nicht nötig). Dazu kommt natürlich ein privater Jacuzzi, sowie ein sehr großer Garten mit großem überdachtem Sitzbereich mit Sitzecke etc. Die Villa liegt allerdings an der momentan nicht so attraktiven (siehe oben) Ostseite.
Die Küche ist für ein Hotel dieser Kategorie eine Enttäuschung (Huhn unbedingt meiden!): teilweise ziemlich schwaches Essen; geringe Auswahl (zwei Hauptgerichte pro Abend); sehr lange Wartezeiten zwischen den 4 Gängen (Vorspeise, Suppe, Hauptspeise, Nachspeise). Wenn das Wetter schlecht ist, scheint mir das überdachte Restaurant auch zu klein zu sein, bei einer Wartezeit von bis zu 1/2h zwischen Suppe und Hauptspeise sitzen die Leute doch recht lange. Wie ich von einem anderen Gast gehört habe, hat der Leiter des Restaurants die Insel verlassen und die Lücke konnte durch den Chefkoch nicht geschlossen werden.
Das Frühstücksbüffet, sowie abendliche Büffets waren gut aber lange nicht so herausragend, wie z.B. auf Soneva Fushi. Die Insel ist nur mit Vollpension zu buchen, so daß keine Kosten außer für Getränke, das Tauchen, sowie das SPA (ausprobieren! Ist allerdings häufig ausgebucht) anfallen. Die Getränke sind teuer (großer Saft $4.50, frischer Orangensaft $6.25), zudem nicht immer verfügbar (weil z.B. keine Orangen verfügbar sind). Ich habe teilweise die Bestellung durch die Frage “Was habt ihr?” abgekürzen können. Eine große Enttäuschung für solch ein Hotel!
Der Transfer vom Flughafen Hulule zum Hotel ist problemlos und schnell: direkt beim Terminal wird man in Empfang genommen und zu einem der Schnellboote des Hotels gebracht. Das bringt einem direkt in ca. 20–30 Minuten zur Insel. Wartezeit, weil andere Gäste mit dem nächsten Flieger ankommen, gibt es nicht – auf die wartet ein weiteres Boot. Während der Fahrt bekommt man ein kaltes Handtuch, sowie ein Wasser – ebenfalls ein netter Service.
Auf der Insel wird man von einem Resort Host in Empfang genommen, der neben dem üblichen Papierkram auch ein Foto von jedem Gast macht, welches kopiert wird und den Angestellten ermöglicht die Gäste zu identifizieren ohne sie ständig nach der Zimmernummer zu fragen. Ein ungewöhnliches (positives) Gefühl überall gleich erkannt zu werden (sei es an der Bar oder an der Tauchbasis; der erste Satz dort war: “Du bist also der Markus”…).
Der Resort Host bringt einem auch zur Villa und erklärt einem alle Dinge in der Villa, sowie z.B. die Essenszeiten und die möglichen Unternehmungen (Besuch von Male, Island-Hopping, Nachtfischen, Schnorcheltour, Hochseefischen, Rundflüge, u.s.w.). Das ergibt einen sehr positiven ersten Eindruck!
Die Abreise ist ebenfalls problemlos, meinen schweren Tauchrucksack hat jemand sogar bis zur Kontrolle vor dem Check-In getragen. Wow! Auch hier: keine überflüssigen Wartezeiten, man ist 2h vor Abflug am Flughafen.
Das Wetter war für die Jahreszeit normal: wunderschöne Tage – teilweise ohne irgendeine Wolke am Himmel. Lediglich an einem Tag hat es kurzzeitig etwas getropft. Das Meer war fast ständig so glatt, daß man sich drin spiegeln konnte! Trotzdem blies fast immer ein leichtes Lüftchen. Die Sonnenuntergänge waren häufig phantastisch: die Sonne verschwindet am Horizont, wobei man den Übergang von Wasser und Luft nicht erkennen kann: das Blau geht ineinander über. Genial!
Die Insel ist keine Taucherinsel im Malediven-Sinne. Obwohl die Insel zu 80% ausgebucht war, gab es pro Ausfahrt kaum mehr als 4–8 Taucher. Die meisten Leute nutzen die Insel einfach als Ort der Entspannung und Erholung.
Bei Ausfahrten zu entfernteren Tauchplätzen werden gerne gleich zwei Tauchplätze angefahren. Zwischendurch wird dann ein ebenfalls tolles Frühstücksbüffet auf dem Boot aufgebaut (mit diversen Brotsorten, Marmelade, Käse, Aufschnitt, Früchten, Säfte, Tee, Kaffee).
Es fällt mir wirklich nichts mehr ein, was man da noch verbessern kann!
Tauchbasis | Banyan Tree Dive Center |
---|---|
Flaschen | 12 Liter Alu; INT- und DIN Anschlüsse |
Ausbildung | SSI Instructor Center; auf Anfrage auch PADI möglich (4 Tauchlehrer: dt. Basisleitung, eine Japanerin, ein Mexikaner) |
Sprachen | in 6 Sprachen |
Ausrüstung | Zustand alt, aber OK. Lungenautomaten zu alt |
Service | herausragend, jeder Gast wird sehr persönlich behandelt; kein Massenbetrieb; perfekt |
Preise | 1 TG inkl. Flasche/Blei $45 (plus Bootsfahrt) |
2–5 TG inkl. Flasche/Blei $39 (plus Bootsfahrt) | |
6–10 TG inkl. Flasche/Blei $35 (plus Bootsfahrt) | |
ab 11 TG inkl. Flasche/Blei $29 (plus Bootsfahrt) | |
Nightdive inkl. Lampe + $15 | |
privater TG mit TL + $35 | |
Fresh-Up $80 | |
Resort Kurs $130 | |
OWD $395 + $95 (Manual, etc.) | |
AOWD $270 + $70 (Manual, etc.) | |
RD $290 + $60 (Manual, etc.) | |
DM $750 + $250 (Manual, etc.) | |
1 Bootsfahrt $9 | |
pers. Video $150 |
Der 1. TG ist ein Art Check-Dive. Die Limit für Tauchgänge liegt bei 30m und 60 Minuten. Ein Sicherheitsstopp auf 5m ist Pflicht! Dekotauchgänge sind nicht erlaubt. Wer mit Buddy ohne Tauchlehrer tauchen will, braucht einen Computer (Aladdin Sport wird vermietet).
Der persönliche Video scheint teuer ($150), aber es ist genial gut! Patricia (eine Französin) ist der “Insel Fotograf” bzw. Videofilmer. Bei ihr bekommt man neben Filmen auch Leihkameras für seine Tauchgänge und hilft auch, wenn mal etwas kaput gegangen ist. Sie dreht ein ganz ganz tolles persönliches Video, welches für ein tauchende Paar definitiv Pflicht ist! Das Video kann auch mit eigener Musik vertont werden. Ein Video außerhalb des Wassers ist natürlich auch möglich. Patricia arbeitet fast einen ganzen Tag an einem Video: morgens wird der Film gedreht, danach sitzt sie teilweise bis 20 Uhr abends am Schnitt und der Vertonung. Wenn man das und die tolle Qualität bedenkt, ist das Video ein Schnäppchen!
Das Hausriff ist ca. 100 m entfernt. Die Südseite ist zum Schnorcheln nicht so toll: man hat zwar Chance auf einige Haie, Rochen (gegen Abend ist die Lagune voll von Stachelrochen), Schildkröten, Zackenbarsche, etc. aber das kann nicht über den teilweise sehr schlechten Zustand der Korallen am Riff hinwegtäuschen. Auch hier hat der Sturm seine Spuren hinterlassen. Die Nordseite soll schöner sein. Bei wenig Strömung kann man um die halbe Insel herumschnorcheln.
Tauchen am Hausriff ist möglich, das Riff soll in der Tiefe auch schöner sein. Ich habe jedoch nicht am Hausriff getaucht.
Die Tauchplätze werden, wie fast überall auf den Malediven üblich, 2x täglich angefahren. Alle Tauchgänge werden von Tauchlehrern begleitet. Die Anfahrten zu den über 20 Tauchplätzen dauern zwischen 15 und 90 Minuten. Durch das große gemütliche Dhoni kann man die Zeit aber sehr angenehm überbrücken. Die Briefings sind ausführlich und gut (Strömung, Skizze vom Tauchplatz, Besonderheiten, Gefahren, u.s.w.). Die Tauchplätze in der Nähe von Male sind altbekannt und häufig nicht so herausragend, wie die weit entfernten. Trotzdem kann man dort gut tauchen.
Besonders zu empfehlende Tauchplätze sind
This document describes the transfer protocol and memory layout of these Suunto diving computers:
The protocol uses 2400 8O1, which means 2400 baud with 8 bits, odd parity and 1 stop-bit. The check for the interfaces uses 2400 8N1, but it also works with 2400 8O1. This was the trivial part… But some lines have a special meaning with the interface!
The DTR line should always be set. It is used as a power supply for the interface.
RTS is a toggle for the direction of the half-duplex interface. To send a command to the interface, set RTS. When you await a command, clear RTS. Timing also seems to be critical! To make sure that all data is sent to the interface, before clearing RTS, I wait about 200ms. After clearing RTS, I also have to wait 400ms and use a 500ms timeout for receiving data.
The test for the existance of the interface is simple: the computer sends AT plus a CR ($41, $54, $0D) and awaits the same answer.
The protocol for the Suunto Spyder, Vyper and Cobra are identical, but the memory layout of the Spyder is different. All data is send in packages to and from the computer. Every package is followed by a CRC for checksum reasons.
unsigned char checksum = 0x00;
for(int i=0; i<packageLen; ++i)
checksum ^= package[i];
The DiveManager Software from Suunto does the following when reading data from a Spyder: – Check for correct computer – Read Memory ($24, 1) – Read the internal memory: – Read Memory ($1E, 14) – Read Memory ($2C, 32) – Read Memory ($53, 30) – Get first dive profile – Get next dive profile – … – If “next dive profile” returns a null package, the end of the log memory is reached.
Default name of the LOG file: ‘‘PROFILE.ACW’’
offset | format | testvalue | content
$00-$15 | MSB binary | … | unused by the PC software, probably configuration values for the computer |
$16-$17 | MSB binary | $0102 | Firmware version of the Spyder (old ACW $0101, new ACW $0102) |
$18-$1B | MSB binary | … | Serialnumber (new ACW, e.g. $0002.0F7F = 203.967) or ID no. (old ACW, e.g. $2E.61.122E = 469704654) of the Spyder |
$1C-$1D | MSB binary | … | Ptr to the last $82 byte in the profile ringbuffer |
$1E-$1F | MSB binary | $3F46 | max. depth in ft * 128.0 |
$20-$21 | MSB binary | … | total dive time in minutes |
$22-$23 | MSB binary | … | total number of dives |
$24 | MSB binary | $14 | interval (20s, 30s or 60s, Changing ist not allowed by DiveManager software! Why? Marketing?) |
$25 | MSB binary | … | altitude and personal settings (height (0..2) + 3 * personal (0..2)) |
$26-$2B | MSB binary | … | ? ($0B,$03,$1F,$FF,$1F,$FF : identical on all Suunto computers?) |
$2C-$49 | ASCII | ACW Diver | personal information (“ACW Diver”, otherwise filled to the maximum length with spaces) |
$4A-$4B | MSB binary | … | ? ($01, $01 : identical on all ACW?!? Version of the profile memory?) |
$4C-$1FFF | MSB binary | … | ring buffer for the profile memory |
The ring-buffer is a stream of data, which ends at the position, that is marked in the header. At this position the computer starts writing the information from the next dive. If the write pointer reaches the value $2000, it jumps back to $4C.
offset | format | description |
---|---|---|
0 | MSB binary | unknown — air preassure at the end of the dive? |
1 | MSB binary | temperature in degress celcius. |
2… | binary | profile data from the end to the beginning of the dive,this means reverse order! |
n | MSB binary | minutes at the beginning of the dive |
n + 1 | MSB binary | hours at the beginning of the dive |
n + 2 | MSB binary | day at the beginning of the dive |
n + 3 | MSB binary | month at the beginning of the dive |
n + 4 | MSB binary | year at the beginning of the dive (90..99 = 1990..1999, 00..89 = 2000..2089) |
n + 5 | MSB binary | altitude and personal settings (height (0..2) + 3 * personal (0..2)) |
n + 6 | MSB binary | unknown — air preassure at the beginning of the dive? |
n + 7 | MSB binary | interval (20s, 30s or 60s) |
n + 8 | MSB binary | dive number in the Spyder (for repetitive dives) |
n + 9 | MSB binary | hours of the surface interval |
n + 10 | MSB binary | minutes of the surface interval |
The profile data is a stream of bytes. Every minute (or 30s or 20s – see the profile interval) a byte is recorded. This byte is the delta depth in ft to the last depth! E.g. you start your dive at a depth of 0 feet go down to 30ft in a minute, so the value is –30ft (because you go 30ft down) or $E2 in binary, if you then go up to 20ft, the next value will be +10ft (because you go 10ft up) or $0A in binary.
Some values have special meanings:
Byte | Type | Description |
---|---|---|
$7d | Surfaced | you have reached the surface while (or after) the dive |
$7e | ASC | dive now is a decompression dive |
$7f | ERR | decompression missed |
$80 | End | end of the dive. The next byte is n + 1 in the format description of the dive. |
$81 | Slow | Slow warning while the dive. If the dive ends with $7d8180 (Surfaced, Slow, End) it means, you finished the dive with a blinking SLOW warning in the display. |
$82 | End of data | set after the last dive (written after the dive as a marker, so technically not profile information) |
meter = (int)(feet * 0.3048 * 10) / 10
psi = bar * 14.50377377
fahrenheit = celcius * 1.8 + 32
Altitude:
value | meters | feet |
---|---|---|
0 | 700m | 2300ft |
1 | 1500m | 5000ft |
2 | 2400m | 8000ft |
ATTN: the computers don’t round after the 2. digit, when calculating feet => meter! They cut it after the 2. digit. This results to the modified formula.
This document describes the transfer protocol and memory layout of these suunto diving computers:
The protocol uses 2400 8O1, which means 2400 baud with 8 bits, odd parity and 1 stop-bit. The check for the interfaces uses 2400 8N1, but it also works with 2400 8O1. This was the trivial part… But some lines have a special meaning with the interface!
The DTR line should always be set. It is used as a power supply for the interface.
RTS is a toggle for the direction of the half-duplex interface. To send a command to the interface, set RTS. When you await a command, clear RTS. Timing also seems to be critical! To make sure that all data is sent to the interface, before clearing RTS, I wait about 200ms. After clearing RTS, I also have to wait 400ms and use a 500ms timeout for receiving data.
The test for the existance of the interface is simple: the computer sends AT plus a CR ($41, $54, $0D) and awaits the same answer.
The protocol for the [[Suunto Spyder]], Vyper and Cobra are identical, but the memory layout of the Spyder is different. All data is send in packages to and from the computer. Every package is followed by a CRC for checksum reasons.
unsigned char checksum = 0x00;
for(int i=0; i<packageLen; ++i)
checksum ^= package[i];
The DiveManager Software from Suunto does the following when reading data from a Cobra: – Check for correct computer – Read Memory ($24, 1) – Read the internal memory: – Read Memory ($1E, 14) – Read Memory ($2C, 32) – Read Memory ($53, 30) – Get first dive profile – Get next dive profile – … – If “next dive profile” returns a null package (count = 0), the end of the log memory is reached.
Default name of the LOG file: ‘‘PROFILE.VPR’’
offset | format | testvalue | content
$00-$1D | MSB binary | … | unused by the PC software, probably configuration values for the computer |
$1E-$1F | MSB binary | $6038 | max. depth in ft * 128.0 |
$20-$21 | MSB binary | … | total dive time in minutes |
$22-$23 | MSB binary | … | total number of dives |
$24 | MSB binary | $0C | Type of the computer ($03:Stinger, $04:Mosquito, $0A:new Vyper, $0C:Vyper or Cobra, $0B:Vytec, $0D:Gekko) |
$25 | MSB binary | … | firmware version (30: Cobra, 33: Cobra, 21: Stinger, 15: Mosquito), the minor part is always .0.0 |
$26-$29 | MSB binary | $00005A38 | serial number e.g. a Vyper: $00.01.04.41 (= 00010465) |
$2A-$2B | MSB binary | $0000 | unknown |
$2C-$49 | ASCII | Vyper Diver | personal information (“Vyper Diver”, “Cobra Diver”, “ACW Diver”, “Mosquito Diver” fill with zero bytes, if changed by the user filled to the maximum length with spaces) |
$4A-$50 | MSB binary | $00..$00 | unknown (only the first 2 bytes are read by DM software) |
$51-$52 | MSB binary | … | Ptr to the last $82 byte in the profile ringbuffer (not read by DM software) |
$53 | MSB binary | $14 | interval (10s, 20s, 30s or 60s) |
$54 | MSB binary | … | altitude and personal settings (height (0..2) + 3 * personal (0..2)) |
$55-$5B | MSB binary | … | unknown ($0E.05.1F.FF.1F.FF.01 : identical on all Suunto computers?) |
$5C-$5D | MSB binary | $0000 | max. freediving depth (only on Mosquito and Stinger) in ft * 128.0 |
$5E-$5F | MSB binary | $0000 | total freediving time in minutes (only on Mosquito and Stinger) |
$60 | MSB binary | $01 | 12/24 hour flag, 00 = 24 hours, 01 = 12 hours plus AM/PM |
$61 | MSB binary | $00 | unknown |
$62 | MSB binary | $01 | 0 = imperial, 1 = metric |
$63 | MSB binary | $01 | Model (0: Air, 1:Nitrox/EAN, 2:Gauge; Mosquito, Stinger: Bit 3 set: Diving active, Bit 7 set: Free Diving active) |
$64 | MSB binary | $8A | Light (Bit 7: on; Bit 0..6: time in s) |
$65 | MSB binary | $03 | Bit 0: dive time alarm = on, Bit 1: dive depth alarm = on |
$66-$67 | MSB binary | $0037 | dive time for the alarm in minutes (max. 999 minutes, normal max. 4:59) |
$68-$69 | MSB binary | $3138 | depth for the alarm in ft * 128.0 (rounded to 0.5m or 1ft; valid: 0m, 3m–150m (Cobra, Vyper: 100m)) |
$6A-$70 | MSB binary | … | unknown ($46.00.00.00.00.00.00) |
$71-$1FFF | MSB binary | … | ring buffer for the profile memory |
The ring-buffer is a stream of data, which ends at the position, that is marked in the header. At this position the computer starts writing the information from the next dive. If the write pointer reaches the value $2000, it jumps back to $71.
offset | format | description |
---|---|---|
0 | MSB binary | 00, with Nitrox: OLF % * 2 ($32 * 2 = 100 CNS), if bit 7 is set: OTU instead of CNS |
1 | MSB binary | pressure at the end of the dive in bar / 2 |
2 | MSB binary | temperature at the end of the dive in degress celcius |
3 | MSB binary | temperature at the max depth in degress celcius |
4… | binary | profile data from the end to the beginning of the dive,this means reverse order! |
n | MSB binary | minutes at the beginning of the dive |
n + 1 | MSB binary | hours at the beginning of the dive |
n + 2 | MSB binary | day at the beginning of the dive |
n + 3 | MSB binary | month at the beginning of the dive |
n + 4 | MSB binary | year at the beginning of the dive (90..99 = 1990..1999, 00..89 = 2000..2089) |
n + 5 | MSB binary | temperature of the air in degress celcius |
n + 6 | MSB binary | ? unused? (PO2??? 0=1.2, 1=1.3, 2=1.4, 3=1.5, 4=1.6???) |
n + 7 | MSB binary | Oxygen in % (= Nitrox mode, air mode: 0); Bit 6 & 7 are ignored. |
n + 8 | MSB binary | pressure at the beginning of the dive in bar / 2 |
n + 9 | MSB binary | altitude and personal settings (height (0..2) + 3 * personal (0..2)). Bit 6:Gauge active (on Stinger and Mosquito) |
n + 10 | MSB binary | interval (10s, 20s, 30s or 60s) |
n + 11 | MSB binary | dive number in the Vyper/Cobra (for repetitive dives) |
n + 12 | MSB binary | hours of the surface interval |
n + 13 | MSB binary | minutes of the surface interval |
The profile data is a stream of bytes. Every minute (or 30s or 20s – see the profile interval) a byte is recorded. This byte is the delta depth in ft to the last depth! E.g. you start your dive at a depth of 0 feet go down to 30ft in a minute, so the value is –30ft (because you go 30ft down) or $E2 in binary, if you then go up to 20ft, the next value will be +10ft (because you go 10ft up) or $0A in binary.
Some values have special meanings:
Byte | Type | Description |
---|---|---|
$79 | unused | |
$7a | Slow | The diver ascended above dive depth limit. This symbol marks every interval in which the SLOW indicator appeared |
$7b | Attn/Violation | Dive Attention Mark as described in the dive computer user manual |
$7c | Bookmark/Heading | The diver pressed the PLAN button during this interval |
$7d | Surfaced | The diver ascended above the minimum diving depth (1.2m) during this interval |
$7e | Deco | A decompression ceiling first appeared during this interval. The dive computer’s ASC indicator appeared |
$7f | Ceiling | The diver ascended above the decompression ceiling during this interval |
$80 | End | end of the dive. The next byte is n + 1 in the format description of the dive |
$81 | Safety Stop | The diver ascended above a mandatory safety stop ceiling during this interval |
$82 | End of data | set after the last dive (written after the dive as a marker, so technically not profile information) |
$83 | Increased workload (not generated by the computers) | |
$84 | unused | |
$85 | Cold water (not generated by the computers) | |
$86 | unused | |
$87 | Gas change | Vytec only: switched to a different gas. The following byte contains the percent of oxygen in that gas |
meter = (int)(feet * 0.3048 * 10) / 10
psi = bar * 14.50377377
fahrenheit = celcius * 1.8 + 32
Altitude:
value | meters | feet |
---|---|---|
0 | 700m | 2300ft |
1 | 1500m | 5000ft |
2 | 2400m | 8000ft |
ATTN: the computers don’t round after the 2. digit, when calculating feet => meter! They cut it after the 2. digit. This results to the modified formula.
This document describes the transfer protocol and memory layout of these suunto diving computers:
The [[Suunto Solution]] is an older model with a different communication scheme.
The protocol uses 1200 8N2, which means 1200 baud with 8 bits, no parity and 2 stop-bits.
You can send the following data to the EON:
The P-block has a $100 byte header and a $800 byte ring-buffer for the profile data plus a one byte checksum. The ring-buffer on a new interface only consists of $FF bytes.
The last byte after the P-block is a checksum: c
unsigned char chk = 0x00;
for(int i=0; i<0x900; ++i)
chk += buf[i];
The default name of the LOG files are: * ‘‘PROFILE.EON’’ for the Suunto Eon * ‘‘PROFILE.SOA’’ for the Suunto Solution Alpha * ‘‘PROFILE.SNV’’ for the Suunto Solution Nitrox/Vario
offset | format | testvalue | content
0–2 | MSB binary | $00015E | number of dives made with the computer (here: 180; from the history). I am not sure, if the upper byte is used (I haven’t made 65536 dives yet 🙂 |
3–4 | MSB binary | $0258 | divetime under water in minutes (here: 600; from the history) |
5–6 | MSB binary | $3F46 | max. depth (here: $3F46 / 128.0 = 126.5 feet; from the history) |
7–8 | MSB binary | $0100 | $900 – this value = offset after the last dive (here: $800) |
9 | MSB binary | $3C | current profile interval (here: 60s) |
10 | MSB binary | $18 | altitude settings (value / 32 = Altitude, here: $18 / 32 = 0, so A0) [bit 0: unknown (always = 0?), bit 1: nitrox, bit 2: unknown (always = 0?), bit 3: metric, bit 4: air (= EON)] |
11 | MSB binary | $60 | current year – 1900 (here: 96 => 1996, 00 would be 2000) |
12..31 | ASCII | “EON – Markus Fritze ” | 20 bytes string, that is filled with spaces. Not zero terminated! If the owner name is never set, it contains $FF..$FF |
32..210 | binary | $FF | unused? |
211..243 | binary | $?? | unknown |
244..246 | BCD | $502159 | serial number of the computer (here: 502159) |
247..255 | binary | $?? | unknown |
The ring-buffer is a stream of data, which ends at the position, that is marked in the header. At this position the computer starts writing the information from the next dive. If the write pointer reaches the value $900, it jumps back to $100.
offset | format | testvalue | content |
---|---|---|---|
0 | MSB binary | $05 | surface interval (minutes) |
1 | MSB binary | $01 | surface interval (hours) (here: 1:05) |
2 | MSB binary | $01 | repetitive dive counter (here: the first dive). The counter resets to 1, when the computer turns off after a longer pause. Every dive before that is a repetitive dive and increments the counter. |
3 | MSB binary | $3C | profile interval for this dive (here: 60s), this is necessary, because the interval may be changed after every dive and the ring-buffer still contains information about dives with other profile intervals. |
4 | MSB binary | $38 | altitude settings (value / 32 = Altitude, here: $18 / 32 = 0, so A0) – bit 0: unknown (always = 0?), bit 3: metric, bit 4: air (= EON) |
5 | MSB binary | $64 | A solution alpha always transmits a 0. on nitrox: nitrogen level |
6 | BCD | $97 | year (here: 1997). Year 2000 is $00 |
7 | BCD | $01 | month (here: 1 = January) |
8 | BCD | $31 | day (here: 31) |
9 | BCD | $13 | hour (here: 13 or 1pm) |
10 | BCD | $35 | minute (here: 35) |
11 | … binary | … | profile data |
n | MSB binary | $80 | end of the dive marker |
n + 1 | MSB binary | $3C | temperature at the dive in degree celcius – 40 (here: 60 – 40 = 20 degree celcius) |
n + 2 | MSB binary | $19 | tank preassure at the end of the dive in bar (here: 25 * 2 = 50bar) – A solution alpha always transmits a 0. |
The profile data is a stream of bytes. Every minute (or 30s or 20s – see the profile interval) a byte is recorded. This byte is the delta depth in ft to the last depth! E.g. you start your dive at a depth of 0 feet go down to 30ft in a minute, so the value is –30ft (because you go 30ft down) or $E2 in binary, if you then go up to 20ft, the next value will be +10ft (because you go 10ft up) or $0A in binary.
Some values have special meanings:
Byte | Type | Description |
---|---|---|
$7d | Surfaced | you have reached the surface while (or after) the dive |
$7e | ASC | dive now is a decompression dive |
$7f | ERR | decompression missed |
$80 | End | end of the dive. |
$81 | Slow | Slow warning while the dive. If the dive ends with $7d8180 (Surfaced, Slow, End) it means, you finished the dive with a blinking SLOW warning in the display. |
$82 | End of data | set after the last dive (written after the dive as a marker, so technically not profile information) |
meter = (int)(feet * 0.3048 * 10) / 10
psi = bar * 14.50377377
fahrenheit = celcius * 1.8 + 32
Altitude:
value | meters | feet |
---|---|---|
0 | 700m | 2300ft |
1 | 1500m | 5000ft |
2 | 2400m | 8000ft |
ATTN: the computers (checked on the solution alpha) don’t round after the 2. digit, when calculating feet => meter! They cut it after the 2. digit. This results to the modified formula.
These computers is the first Suunto computer with a PC interface. The protocol is totally different from the later models. Gary Lorensen described it first, the PDF is available on his server: http://www.aquadivelog.org/divelog/docman/solution.pdf
This document describes the transfer protocol and memory layout of these Suunto diving computers:
The [[Suunto Solution]] is an older model with a different communication scheme.
The protocol uses 1200 8N2, which means 1200 baud with 8 bits, no parity and 2 stop-bits.
You can send the following data to the EON:
The P-block has a $100 byte header and a $800 byte ring-buffer for the profile data plus a one byte checksum. The ring-buffer on a new interface only consists of $FF bytes.
The last byte after the P-block is a checksum: c
unsigned char chk = 0x00;
for(int i=0; i<0x900; ++i)
chk += buf[i];
The default name of the LOG files are: * ‘‘PROFILE.EON’’ for the Suunto Eon * ‘‘PROFILE.SOA’’ for the Suunto Solution Alpha * ‘‘PROFILE.SNV’’ for the Suunto Solution Nitrox/Vario
offset | format | testvalue | content
0–2 | MSB binary | $00015E | number of dives made with the computer (here: 180; from the history). I am not sure, if the upper byte is used (I haven’t made 65536 dives yet 🙂 |
3–4 | MSB binary | $0258 | divetime under water in minutes (here: 600; from the history) |
5–6 | MSB binary | $3F46 | max. depth (here: $3F46 / 128.0 = 126.5 feet; from the history) |
7–8 | MSB binary | $0100 | $900 – this value = offset after the last dive (here: $800) |
9 | MSB binary | $3C | current profile interval (here: 60s) |
10 | MSB binary | $18 | altitude settings (value / 32 = Altitude, here: $18 / 32 = 0, so A0) [bit 0: unknown (always = 0?), bit 1: nitrox, bit 2: unknown (always = 0?), bit 3: metric, bit 4: air (= EON)] |
11 | MSB binary | $60 | current year – 1900 (here: 96 => 1996, 00 would be 2000) |
12..31 | ASCII | “EON – Markus Fritze ” | 20 bytes string, that is filled with spaces. Not zero terminated! If the owner name is never set, it contains $FF..$FF |
32..210 | binary | $FF | unused? |
211..243 | binary | $?? | unknown |
244..246 | BCD | $502159 | serial number of the computer (here: 502159) |
247..255 | binary | $?? | unknown |
The ring-buffer is a stream of data, which ends at the position, that is marked in the header. At this position the computer starts writing the information from the next dive. If the write pointer reaches the value $900, it jumps back to $100.
offset | format | testvalue | content |
---|---|---|---|
0 | MSB binary | $05 | surface interval (minutes) |
1 | MSB binary | $01 | surface interval (hours) (here: 1:05) |
2 | MSB binary | $01 | repetitive dive counter (here: the first dive). The counter resets to 1, when the computer turns off after a longer pause. Every dive before that is a repetitive dive and increments the counter. |
3 | MSB binary | $3C | profile interval for this dive (here: 60s), this is necessary, because the interval may be changed after every dive and the ring-buffer still contains information about dives with other profile intervals. |
4 | MSB binary | $38 | altitude settings (value / 32 = Altitude, here: $18 / 32 = 0, so A0) – bit 0: unknown (always = 0?), bit 3: metric, bit 4: air (= EON) |
5 | MSB binary | $64 | A solution alpha always transmits a 0. on nitrox: nitrogen level |
6 | BCD | $97 | year (here: 1997). Year 2000 is $00 |
7 | BCD | $01 | month (here: 1 = January) |
8 | BCD | $31 | day (here: 31) |
9 | BCD | $13 | hour (here: 13 or 1pm) |
10 | BCD | $35 | minute (here: 35) |
11 | … binary | … | profile data |
n | MSB binary | $80 | end of the dive marker |
n + 1 | MSB binary | $3C | temperature at the dive in degree celcius – 40 (here: 60 – 40 = 20 degree celcius) |
n + 2 | MSB binary | $19 | tank preassure at the end of the dive in bar (here: 25 * 2 = 50bar) – A solution alpha always transmits a 0. |
The profile data is a stream of bytes. Every minute (or 30s or 20s – see the profile interval) a byte is recorded. This byte is the delta depth in ft to the last depth! E.g. you start your dive at a depth of 0 feet go down to 30ft in a minute, so the value is –30ft (because you go 30ft down) or $E2 in binary, if you then go up to 20ft, the next value will be +10ft (because you go 10ft up) or $0A in binary.
Some values have special meanings:
Byte | Type | Description |
---|---|---|
$7d | Surfaced | you have reached the surface while (or after) the dive |
$7e | ASC | dive now is a decompression dive |
$7f | ERR | decompression missed |
$80 | End | end of the dive. |
$81 | Slow | Slow warning while the dive. If the dive ends with $7d8180 (Surfaced, Slow, End) it means, you finished the dive with a blinking SLOW warning in the display. |
$82 | End of data | set after the last dive (written after the dive as a marker, so technically not profile information) |
meter = (int)(feet * 0.3048 * 10) / 10
psi = bar * 14.50377377
fahrenheit = celcius * 1.8 + 32
Altitude:
value | meters | feet |
---|---|---|
0 | 700m | 2300ft |
1 | 1500m | 5000ft |
2 | 2400m | 8000ft |
ATTN: the computers (checked on the solution alpha) don’t round after the 2. digit, when calculating feet => meter! They cut it after the 2. digit. This results to the modified formula.