/node-mtp

Access devices over MTP using Node.js

Primary LanguageCBSD 2-Clause "Simplified" LicenseBSD-2-Clause

DEPRECATED

Please use https://github.com/tidepool-org/webmtp instead. node-mtp was a simple wrapper around the libmtp library, which requires native code to run. We rewrote the MTP functions in JS so that we could also run it in the browser. webmtp will use WebUSB in the browser, and node-usb in Node.js.

node-mtp

Access devices over MTP using Node.js

Introduction

On some operating systems (e.g. macOS) devices like modern Android phones do not mount as disk drives without using external software, like Android File Transfer or OSXFUSE. node-mtp allows Node.js (v10 or higher) and Electron apps (v3.0.0 or higher) to read files from devices over MTP without requiring additional software or drivers.

node-mtp is an N-API wrapper around the libmtp library. It uses version 3 of N-API which is only available on Node v10 and higher.

Usage

const mtp = require('node-mtp');

mtp.attach();

const list = mtp.getFileListing();
console.log('Files:', list);

mtp.getFile(8, 'test.jpg'); // <file id>, <destination>

mtp.release();

Building

To build this on your own machine, you'll need libmtp:

  • Ubuntu: sudo apt-get install libmtp-dev
  • macOS: brew install libmtp

Updating on Yarn/NPM

The following steps will update the module on Yarn/NPM:

  • yarn version
  • git push && git push --tags
  • Wait for Travis to finish.
  • Download the releases from Github: prebuildify-ci download
  • npm publish

Note that you need to yarn global add prebuildify-ci to get the prebuilds.