r/scubadiving • • 2d ago

Free and open source dive computer simulator

Hi everyone,

I've been working on a side project I wanted to share: a dive computer simulator that runs in your browser. It can be installed as a PWA on your computer or your phone to be used offline

Try it: https://antjac.github.io/DiveComputerSimulator/

(Source code: https://github.com/Antjac/DiveComputerSimulator)

The idea: you steer a diver in the water column, and watch in real time how different dive computers react, side by side: NDL, deco stops, ascent rate, alarms, tissue loading, gas consumption, oxygen toxicity.

26 models simulated, each one built from its official manual: Shearw Teric), Garmin (Descent Mk3i, X30, X50i), Suunto (D5, EON Core, ZoopNovo, Nautic), Mares (Puck Pro, Quad Ci, Quad 2, Quad Air, Genius), Scubapro (G2, G3, Luna 2.0 AI), Cressi (Goa, Donatello, DaVinci), Aqualung (i330R, i770R), SEAC (Screen, Tablet) and the Azoth Systems Odyssey.

What you can do with it:

  • Push the buttons of the computer on screen: menus, screens and gas switches follow the real procedure of each model
  • Make mistakes safely: blow your NDL, ascend too fast, skip a stop,ch computer's alarms, penalties and lockouts
  • Understand every alarm: a bubble explains what the alert means on that computer and what to do
  • Exercises for students (safety stop, deco stops, gas switch, repetitive dives…), a dive recap after each dive, a logbook, a replay of your dives, and a playful 3D view
  • Multi-gas (up to two deco gases), boat breaks for repetitive dives, metric/imperial, works offline on your phone (installable app)

Important: this is an educational tool only. Never use it to plan or conduct a real dive. Algorithms marked ≈ are proprietary and only approximated, and even the public ones can differ from the real device. Always follow your training and your own computer's manual.

It's free, no ads, no account, no tracking, and open source (AGPL).
I'd really love feedback, especially from people who own one of these computers: if you spot a difference with your real device (a wording, a threshold, a screen), tell me. I'll fix it and log it in the changelog. Instructors: I'd be curious to in your courses.

Thanks for reading, and safe diving!

18 Upvotes

22 comments sorted by

4

u/mightymanuel 2d ago

Honestly this would be great as a shopping tool. I hated my first computer because of the way it behaved in certain situations (it would lock for 24 hours if you ascended too quickly, sounds like no big deal until you swing your arm on a shallow dive and it locks out because technically that 3 ft sweep was over whatever percentage threshold). Though I question if it would necessarily capture all the weird edge cases.

2

u/EstablishmentOwn714 2d ago

This would be possible if the tool were truly perfectly accurate. However, its purpose is purely educational. (I am, nonetheless, striving to improve its precision.)

2

u/mightymanuel 2d ago

I played around a bit and you do seem to account for a lot. If course you would be limited by what information is available, I doubt you are out personally testing dangerous edge cases to see what happens. I will not that on my phone I had issues with elements not fitting in their containers and not being able to scroll the text. The worst offender usability wise being the longer dive end screen which cut off some of the information.

1

u/EstablishmentOwn714 2d ago edited 2d ago

Do you have a screenshot maybe ?

Of course i'm limited with the information I have. My main computer is a Scubapro G2 (and I've got a Puck and Galileo Luna as a backup). Computers which are in this simulator were asked to me by other divers. That's why I need feedbacks to improve the models.

2

u/andyrooskee 2d ago

Suunto?

1

u/PlasticIntelligent44 2d ago

That would suck!

1

u/mightymanuel 2d ago

It's not the end of the world to loose the computer when doing 10-15 ft dives, it happened a bunch of times and just kind of dealt with it but then it happened once at the start of a weekend of diving and resolved that I was getting a new computer.

1

u/PlasticIntelligent44 2d ago

Ya most of my diving is on dive trips so being locked out for 24 hours would cost minimum of two dives……but of course I would just rent for a day, but glad you were inspired to upgrade

1

u/mightymanuel 2d ago

If you are relying on the computer it can be worse than that. It happened on a Friday and I couldn't use it Saturday or Sunday because the dives were all less than 24 hours apart. Luckily it was local and none were that close to ndl so I just used tables the whole weekend.

1

u/PlasticIntelligent44 2d ago

I mean me and my boy are always about 10 feet apart, so I’d feeling completely fine just hanging with him but some OPs would fret

1

u/LDSatheist 2d ago

It’s really cool. Can we get trimix?

2

u/EstablishmentOwn714 2d ago

Not yet, only nitrox (multi gaz).
But I hope to manage trimix in the future

1

u/helmli 2d ago

That's pretty cool, is there a setting for RMV?

I didn't see it, and avg 17m reaching reserve after 30min seems rather quick to me

3

u/EstablishmentOwn714 2d ago

Sure, you can set it in "Advanced settings"

1

u/helmli 2d ago

Thanks, I found it :)

1

u/Hefty_Definition_527 1d ago

ich hab eine suunto zoopnovo und kann es später oder die kommenden tage gerne testen

2

u/holliander919 1d ago

This ist kinda nice to Show people during class what their Computer will Tell them. So theyre prepared before they do a deep specialty or stuff Like that.

Thanks

-4

u/matthewlai 2d ago

It would be a lot more impressive and useful if you can get Claude to actually reverse engineer RGBM, or give it access to a real Suunto computer and have it iterate and develop an accurate approximation of it.

8

u/EstablishmentOwn714 2d ago edited 2d ago

RGBM (especially Suunto’s Fused RGBM 2) and other proprietary algorithms are heavily protected by international patents and trade secrets. Attempting to truly reverse-engineer or "crack" the exact proprietary code to redistribute it for free under an open-source license (AGPL-3.0) on GitHub would instantly cross the line into patent infringement. Using public user manuals to approximate the behavior on top of an open Bühlmann baseline keeps this project safe, legal, and unassailable by manufacturers' legal departments.

Giving an LLM access to a physical dive computer to have it run a reinforcement learning loop inside a virtual hyperbar chamber is a fascinating concept. However, building that automated testing infrastructure, handling computer vision to read the screens, and processing that massive amount of real-world telemetry would require a dedicated research lab and months of hardware engineering. It is far beyond the scope of a sideproject.

The explicit goal of this simulator is educational, not professional planning. It is designed for instructors and students to visualize how different computers react conceptually to the same profile (e.g., how Gradient Factors restrict a ascent compared to a legacy RGBM curve, or how various brands handle alarms and gas switches). For this pedagogical purpose, a well-calibrated approximation is actually more than enough.

1

u/matthewlai 2d ago

If you are already putting this kind of things online, I would recommend learning more about IP laws.

It most certainly isn't patented. A patent is government protection for an invention in return for public disclosure of the invention. You tell us how it works (benefit to society), and we give you legal protection for a certain number of years. That's why patents and trade secrets are mutually exclusive. If it was patented, we would already have a PDF telling us how RGBM works.

Trade secrets don't have legal protection. That's literally just a company keeping some information secret. As long as you are not breaking into the actual company's office or computer systems to get that information, there is nothing wrong with figuring out the trade secret yourself.

Code is protected by copyright (in most countries). Copyright protects a specific artistic artifact. It could be a painting, a writing, or a piece of code. So you can't post and re-distribute the actual Suunto firmware without their permission. But copyright does not protect algorithms or mechanisms.

Reverse-engineering on a legally obtained product is legal in almost if not all jurisdictions. Even in the US, courts have decided that reverse engineering for interoperability or compatibility is perfectly legal. https://www.law.cornell.edu/wex/reverse_engineering

Now in the US (probably the most legally hostile country), you also have the DMCA to worry about, which says you can't try to circumvent digital rights protection. I don't know if Suunto firmware has digital rights protection. But in any case, that's a uniquely American problem.

Now, what CAN actually get you into trouble - trademark laws. You are using the registered trademarks of those companies. There are many rules on when you are allowed to do that, and they differ country to country. You are also copying the likeness of their computer interfaces, which is a grey area as that can potentially be covered by design patents (which are a completely different thing from "normal" patents).

to visualize how different computers react conceptually to the same profile (e.g., how Gradient Factors restrict a ascent compared to a legacy RGBM curve

Yes, that would be useful. But that doesn't actually work if you don't have an RGBM implementation or accurate approximation.

Giving an LLM access to a physical dive computer to have it run a reinforcement learning loop inside a virtual hyperbaric chamber is a fascinating concept. However, building that automated testing infrastructure, handling computer vision to read the screens, and processing that massive amount of real-world telemetry would require a dedicated research lab and months of hardware engineering. It is far beyond the scope of a sideproject.

No, it would not be as simple as just an LLM prompt. You would have to build some actual hardware. But it would also be much more useful. It's not that complicated. Building a small pressure chamber only requires a pot, and a microcontroller controlling a pump and a pressure sensor. Or even just build a little jig to have a camera film a computer, and take it diving (assuming Suunto doesn't log deco information in dive logs, otherwise you can also just collect a bunch of dive logs).

1

u/EstablishmentOwn714 2d ago

Thanks, fair correction on the IP side: "patented" was the wrong word, Fused RGBM is a trade secret, not a patent. For the record, the simulator contains no manufacturer code or firmware; everything comes from public documentation (owner's manuals, firmware release notes, published tables).

But I think I didn't explain the goal well. This isn't meant to reproduce each algorithm exactly. It's a training tool for the *interface*: what your computer actually shows and asks of you, button by button, as described in its manual. How the screens change as you approach the NDL, what a deco stop looks like on that specific model, which alarm fires when you ascend too fast or skip a stop, how you acknowledge it, how you switch gas, what happens after a violation (lockout, penalties…).

That's where students struggle in my experience: not with decompression theory, but with reading their own computer under stress. The algorithms only need to be plausible enough for the displays to behave realistically, and the ones that are proprietary are clearly marked as approximations (≈) in the app.

What I do rely on is feedback from people who actually dive with these computers. When someone tells me "my Peregrine doesn't do that" or "on my Suunto the stop was longer", I check it and adjust the simulator: wording, thresholds, colours, behaviours, and the approximations too when the real device clearly differs. Every fix is logged in the changelog. Just today, a user pointed out a colour rule of the Shearwater RATE field that's only documented in the firmware release notes; it's now in.

3

u/cyclopsmudge 2d ago

Man the website is cool, but please don’t write every single comment with AI. They’re massive and exhausting to read.

If you’re translating from a different language, I’d prefer reading something a human wrote that was messed up a little in google translate than something just purely Claude written