You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I recently started using Subsurface and found that my Garmin mk3i does not automatically import dives. I believe this is because this library does not include an MTP driver for Windows. I did a bit of digging and found that there really isn't a compelling way to get libmtp to work on a Windows installation.
It is unclear to me why Garmin stopped supporting USB, but based on the minimal posts I found, they seem to be trying to protect the device's memory. I am guessing it has something to do with controlling what files are visible or something. I dunno TBH.
I am interested in fixing this issue. I am posting this to facilitate discussion.
I believe the solution could be to use Windows Portable Devices (WPD) API. I know this is primarily a Linux project, but I think as long as I define the transport correctly, we can support Windows.
I am pretty sure no MTP implementation works on Windows for this reason. I have not combed through the code base to find them all yet (if they exist at all), though. Ideally, the solution would be included for them, too.
I am posting this message here, not in subsurface, because I believe the fix is here. Happy to move the issue if that is not what is preferred.
Expected behavior
dctool (examples) should be able to dump from a Garmin MK2i+ without issue.
Current behavior
I got a build working and debugged dctool to try to dump data.
dctool attempts to read from the Garmin device as a USB device (because no MTP library is available). This fails because mk2i devices do not mount as USB devices; they mount as MTP devices.
So I can't actually work around this by specifying the path either; there is no valid path on Windows for the device.
This can be worked around by just copying out the FIT files locally but that is not quite the experiance I would like 😄
My setup
Windows 11 Pro (Version 24H2)
Garmin Descent Mk3i 51mm
Subsurface 6.0.5576-CICD-release
Intel(R) Core(TM) i7-14700K (3.40 GHz)
Good news, this has been implemented, and your proposed approach (a native Windows Portable Devices transport) is exactly the route taken. libdc PR #140 adds WPD-based MTP support, merged 22 Sep 2026, and subsurface/subsurface PR #4971 (also merged 22 Sep 2026) wires it into the Windows MSVC build and generalises libmtp support beyond Garmin specifically. This is the same fix already closing out the equivalent report on the main Subsurface repo (subsurface/subsurface#3204).
Closing this as fixed. Please reopen if your Mk2i/Mk3i still won't download via MTP on a current Windows build.
Hey @mikeller I can confirm it seems to be working 🥳 Thank you. Sorry I was never able to actually build the solution. I had claude cook something but felt pretty unsure about if it would have worked or how to properly verify it so I never put the MR up... I am glad I had the right idea though. Thank you for your work in this area. It is much appreciated.
One thing I did realize though was that only the qt6 version of the windows build actually has the fix. If I just use the first installer link that version doesn't seem to actually be built with the changes.
Thanks for confirming, and good catch on the installer mix-up!
You're right: the WPD-based MTP support (libdc #140, subsurface/subsurface #4971) was added specifically to the MSVC-toolchain Windows build, not to the older Qt5/MXE cross-build that produces the plain "Windows" installer. On the download page (https://subsurface-divelog.org/current-release/) that's the "Windows Qt6" link - the plain "Windows" link listed above it is the legacy Qt5 build, produced with a completely different build approach (MXE cross-compilation on Linux) rather than a native MSVC build, and it does not include libmtp/WPD support.
So for anyone following this thread: if you need Garmin Mk2i/Mk3i MTP downloads on Windows, grab the "Windows Qt6" installer specifically, not the first "Windows" link.
That's a legitimate rough edge in how the two Windows builds are presented, since nothing on the page currently calls out the feature difference. Thanks for flagging it with the screenshots, that kind of feedback helps us improve the download experience.
Glad it's working for your Mk3i now, and thanks again for digging into this and reporting back.
Activity
mikeller commentedon Oct 18, 2026
Hi @droidkfx,
Good news, this has been implemented, and your proposed approach (a native Windows Portable Devices transport) is exactly the route taken. libdc PR #140 adds WPD-based MTP support, merged 22 Sep 2026, and subsurface/subsurface PR #4971 (also merged 22 Sep 2026) wires it into the Windows MSVC build and generalises libmtp support beyond Garmin specifically. This is the same fix already closing out the equivalent report on the main Subsurface repo (subsurface/subsurface#3204).
Closing this as fixed. Please reopen if your Mk2i/Mk3i still won't download via MTP on a current Windows build.
droidkfx commentedon Oct 18, 2026
Hey @mikeller I can confirm it seems to be working 🥳 Thank you. Sorry I was never able to actually build the solution. I had claude cook something but felt pretty unsure about if it would have worked or how to properly verify it so I never put the MR up... I am glad I had the right idea though. Thank you for your work in this area. It is much appreciated.
One thing I did realize though was that only the qt6 version of the windows build actually has the fix. If I just use the first installer link that version doesn't seem to actually be built with the changes.
mikeller commentedon Oct 18, 2026
Thanks for confirming, and good catch on the installer mix-up!
You're right: the WPD-based MTP support (libdc #140, subsurface/subsurface #4971) was added specifically to the MSVC-toolchain Windows build, not to the older Qt5/MXE cross-build that produces the plain "Windows" installer. On the download page (https://subsurface-divelog.org/current-release/) that's the "Windows Qt6" link - the plain "Windows" link listed above it is the legacy Qt5 build, produced with a completely different build approach (MXE cross-compilation on Linux) rather than a native MSVC build, and it does not include libmtp/WPD support.
So for anyone following this thread: if you need Garmin Mk2i/Mk3i MTP downloads on Windows, grab the "Windows Qt6" installer specifically, not the first "Windows" link.
That's a legitimate rough edge in how the two Windows builds are presented, since nothing on the page currently calls out the feature difference. Thanks for flagging it with the screenshots, that kind of feedback helps us improve the download experience.
Glad it's working for your Mk3i now, and thanks again for digging into this and reporting back.