MTP transport missing for windows runtimes.

Open
#110 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
45/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Quiet
Tech stack
c

Research direction

Start with the dctool Windows device-detection and dump path, then trace how existing USB and MTP transports are selected. Review the related issues and determine how a Windows Portable Devices transport could fit the library. Done means dctool can dump FIT files from Garmin Mk2i+ and similar MTP devices on Windows without requiring a local file copy.

Written by the indexing model from the issue text.

Description

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

https://github.com/subsurface/subsurface/issues/3204
https://github.com/subsurface/subsurface/issues/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?)

Dominant language
C
Stars
126
Forks
116
Avg merge
2d 13h
Merged PRs (30d)
13

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from subsurface/libdc

All issues in subsurface/libdc

Similar issues

More C issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.