Skip to content

vdavid/mtp-rs

mtp-rs workspace

CI MSRV

Pure-Rust MTP/PTP for modern Android phones, e-readers, Garmin watches, and cameras. No libmtp, no libusb, no FFI. Async, runtime-agnostic, consistently faster than libmtp.

This repo ships two crates:

Crate What it is Page
mtp-rs The library. Use it from your own Rust code. crates.io · docs.rs
mtp-rs-cli A ready-made mtp-rs binary. cargo install mtp-rs-cli. crates.io

For library usage, the API, the device quirks we handle, and tested devices, see the mtp-rs README.

For the CLI, see the mtp-rs-cli README and the full command reference.

Sister projects

  • Cmdr: an AI-native file manager that uses mtp-rs for MTP access.
  • mtp-mount: expose mtp-rs as a FUSE mount.

Development

just            # fast checks: fmt, clippy, test, doc
just check-all  # plus MSRV, security audit, license check
just fix        # auto-fix formatting and clippy warnings

See CONTRIBUTING.md for more.

Credits

The mtp-rs-cli crate was originally contributed by Dmitry Tretyakov in #11. For the full list of contributors to the library, see the contributors page.

License

MIT OR Apache-2.0, at your option.

About

Talk to MTP/PTP devices in pure Rust. No libmtp, no FFI, just async USB (uses nusb). Async streaming uploads/downloads, device events, two-level API for Android phones or raw camera access.

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Contributing

Stars

Watchers

Forks

Contributors