Skip to content

MTP transport missing for windows runtimes. #110

@droidkfx

Description

@droidkfx

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)

Related issues

subsurface/subsurface#3204
subsurface/subsurface#4661 (I think there may be something similar here in the root cause but I have not tested this on a mac and it might be seperate)
https://groups.google.com/g/subsurface-divelog/c/EOL7GhHqE6I/m/AzzxwocQAQAJ (Maybe related?)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions