- Author: Ganesh Rathinavel
- License: MIT
- System Requirements: macOS v10.10 or higher
- Website URL: https://ganeshrvel.github.io/openmtp
- Repo URL: https://github.com/ganeshrvel/openmtp
- Contacts: ganeshrvel@outlook.com
Transferring files between macOS and Android or any other MTP devices has always been a nightmare. There are a few File Transfer MTP apps which are available online but most of them are either too expensive or come with bad UI/UX. The official "Android File Transfer" app for macOS from Google comes with bugs, innumerable limitations, some of which include - not being able to transfer files larger than 4GB, frequent disconnections, unable to rename the folders or files on the android/MTP devices. Most of the other apps available online uses either WiFi or ADB protocol to transfer the files, which is an extremely time-consuming process.
Countless searches to find an app to solve these problems and failing to find one made me restless. So, I took the leap and decided to create an app for us that could help us have a smooth and hassle-free file transfer process from macOS to Android/MTP devices. Created with the objective of giving back to the community, we can all use this app for free in this lifetime.
- Plug and Play. No hassles, easy and instant connection.
- Connect via USB cable - Highest data transfer rates.
- Transfer multiple files which are larger than 4GB in one go.
- Select between Internal Memory and SD Card.
- Split pane views for both Local Computer and Android device.
- Drag 'n Drop your files.
- Choose between Grid and List view.
- Use Keyboard Shortcuts to navigate through your files.
- Safe, Transparent and Open-Source.
- We don't collect any personally identifiable information.
- It's FREE and shall ALWAYS remain FREE!!
-
Download the Latest Version
-
Using Homebrew Cask
brew cask install openmtp
-
Find the latest dmg file from GitHub Releases
New Folder command+n
Copy command+c
Copy to Queue command+shift+c
Paste command+v
Delete backspace
Refresh command+r
Folder Up command+b
Select All command+a
Rename command+d
Open enter
Switch Tab command+1
Navigate Left left
Navigate Right right
Navigate Up up
Navigate Down down
Select Multiple Items Forward (for Grid view) shift+left
Select Multiple Items Backward (for Grid view) shift+right
Select Multiple Items Forward (for List view) shift+up
Select Multiple Items Backward (for List view) shift+down
Select Multiple Items (using mouse) command+click or shift+click
Requirements: Node.js v10, Git and Yarn package manager
$ git clone --depth 1 --single-branch --branch master https://github.com/ganeshrvel/openmtp.git
$ cd openmtp
$ yarn
A fresh clone might throw undefined state error. Run the following commands once to fix the issue.
# For Mac and Linux
$ UPGRADE_EXTENSIONS=1 npm run dev
# For Windows
$ set UPGRADE_EXTENSIONS=1 && npm run dev
# Development
$ yarn dev
# Pre-production
$ yarn start
Setup the code signing to build, package and publish the app.
App Notarization for macOS (skip this section for non macOS builds)
- Rename sample.env file as .env
- Update APPLEID in .env file
- Log into your Apple Account
- Goto Security > APP-SPECIFIC PASSWORDS
- Click on Generate Password..., enter a password label and click Create
- Copy the displayed app-specific-password
- Run
security add-generic-password -a "<apple-developer-account-username>" -w <app-specific-password*> -s "ELECTRON_NOTORIZE_PASSWORD"
- Log into your Apple App Store Connect Account
- Accept to all agreements
- The statuses shall turn Active
Packaging Instructions: https://www.electron.build/code-signing
$ export GH_TOKEN="<github token>"
# For local platform
$ yarn package
# For multiple platforms
$ yarn package-all
- Built using Electron v6, React v16.8, Redux v4, Webpack v4, Babel v7 and Material UI v4.2
- Hot module Reload (HMR) for instant feedback.
- Highly modular.
- Inbuilt error logging and profile/settings management.
- Loadables, Dynamic Reducer Injection, Selectors for efficient Code. splitting and performance/startup optimisation.
- Industry standard State management.
- JSS, SASS/SCSS styling.
- Port assigned: 4642
- config/env/env.dev.js and config/env/env.prod.js contain the PORT number of the app.
- config/dev-app-update.yml file holds the GitHub repo variables required by electron-updater.
- config/google-analytics-key.js file contains the Google Analytics Tracking ID.
- package.json build.publish object holds the values for publishing the packaged application.
- app/constants folder contains all the constants required by the app.
# Debugging Guide
electron-react-boilerplate/electron-react-boilerplate#400
# Dispatching redux actions from the main process
electron-react-boilerplate/electron-react-boilerplate#118
electron-react-boilerplate/electron-react-boilerplate#108
# VM112:2 Uncaught TypeError: Cannot read property 'state' of undefined error
# For Mac and Linux
$ UPGRADE_EXTENSIONS=1 npm run dev
# For Windows
$ set UPGRADE_EXTENSIONS=1 && npm run dev
# Notarizing Electron apps throws - “You must first sign the relevant contracts online. (1048)” error https://stackoverflow.com/questions/58358449/notarizing-electron-apps-throws-you-must-first-sign-the-relevant-contracts-on
- npm: electron-root-path
- Electron React Redux Advanced Boilerplate
- Tutorial Series by Ganesh Rathinavel
-
Sincere thanks to Vladimir Menshakov for android-file-transfer-linux c++ library and for all his help and support that were extended towards this project.
-
Thanks to Ms Ayushi Bothra for contributing to the documentation and pages.
-
This app is built upon https://github.com/ganeshrvel/electron-react-redux-advanced-boilerplate which is a heavily modified fork of https://github.com/electron-react-boilerplate/electron-react-boilerplate.
-
The icons used in the app were made by Prosymbols, Nikita Golubev, Those Icons, Kiranshastry, Elias Bikbulatov & Pixel perfect and were distributed by www.flaticon.com which is licensed under CC 3.0 BY.
-
The "no image found" icon was made by Phonlaphat Thongsriphong.
If you are interested in fixing issues and contributing directly to the code base, please see the guidelines.
Help me keep the app FREE and open for all. Paypal me: paypal.me/ganeshrvel
Please feel free to contact me at ganeshrvel@outlook.com
OpenMTP | Android File Transfer for macOS is released under MIT License.
Copyright © 2018-Present Ganesh Rathinavel