Since the latest versions (ICS+?) no longer have mass storage, is there any viable alternative to MTP?

The protocol seems inherently broken and the decision to regress to this format seems like a very 'iphone-esque' move (dumb things down, take away power from the users).

There seem to be numerous problems (eg) with files not showing and it seems to me that transferring a file should be simpler than requiring a system reboot - I am unreasonably demanding that way.

I'm aware of tools like Wi-Fi file transfer but often I find myself in areas without wifi, with just my laptop, phone and a usb cable. The other day, for example, I was one a plane, which is an environment decidedly non-conducive to using a wireless system.


7 Answers 7


The following methods are tested on Windows 7; Ubuntu based Distribution and Slackware with desktop environment KDE 4.1x. Nothing can be said about Mac. The answer is intended to serve as a consolidated guide for the various methods out there.

Few following methods requires USB Tethering to be enabled. This can be achieved by instructions mentioned below:

Some of this information applies only to devices running Android 5.0 and higher. If your device is running 4.4 or lower, the Menu icon looks like this . If your device is running 4.3 or lower, the Settings icon looks like this .

Set up and use USB tethering connection (including instructions for Windows XP)

1. Connect your device to another device using a USB cable.
2. You'll see a USB icon and a notification Connected as a media device or Connected as a camera at the top of the screen. For the purposes of tethering, the type of connection doesn't matter.
3. Open your device's Settings menu .
4. Under "Wireless & networks," touch More > Tethering & portable hotspot.
5 Check the box or turn on the switch next to "USB tethering." When the connection is made, you’ll see one of the following notifications and you can connect to the Internet (your icons may look slightly different if your device is running Andriod 4.4 or lower):
Portable Wi-Fi hotspot active
USB tethering connection active
Multiple tethering or hotspot connections active

To stop sharing your data connection, uncheck the box or turn off the switch next to "USB tethering" in the Settings menu or simply disconnect the USB cable.

USB tethering with Windows XP

If you're using a computer running Windows XP, you need to install a configuration file before tethering your device to your computer.

1. Follow the steps above to turn on USB tethering for your device.
2. Download the following configuration file (tetherxp.inf) to your Windows XP computer. Typically, you can right click on the link and choose "Save As". (If your browser adds “.html” to the file name, you’ll need to edit the name to remove the .html extension and replace it with “.inf” instead.)
3. Connect your mobile device to your computer using a USB cable.
4. When Windows XP's New Hardware Wizard opens, select No, not at this time, then click Next.
5. Select Install from a list or specific location, then click Next.
6. Click Browse to browse to the directory where you installed the configuration file you downloaded in step 2, then click Next.
7. When Windows XP finishes installing the software for Android USB Ethernet/RNDIS, click Finish.


Method #1

This method uses USB Tethering and an app to access the phone storage.


  1. Install MTP-Alternative USB Drive from Play Store.
  2. Open MTP-Alternative app, select CONNECT AND ENABLE USB TETHERING and choose Enable USB Tethering.
  3. Come back to app by tapping Back key one time or opening the app from its icon in your launcher.
  4. Instructions for Windows and Ubuntu will now be displayed in the app. Choose your OS: Windows or Ubuntu and follow the guide there. Alternatively, you can follow the instructions mentioned below to save the network connection either in Windows or Ubuntu (Linux).

For Windows:

  1. Make sure you have administrative privileges. Download and install this Microsoft Update.
  2. The WebClient service needs to be enabled for accessing network folder. To ascertain the service status, press + R to open a Run dialog box. Type services.msc and click OK. Services window will open with a list of services.
  3. Scroll down to see WebClient and check the corresponding Startup Type. If its not Disabled then close the window. If it is then do

    Right-Click -> Properties -> General -> Startup Type -> Automatic -> Apply -> OK. You can also choose Manual over Automatic to save System from start-up overtax.

  4. Now press + R, type regedit and click OK`, choose Yes and Registry Editor window will open.

  5. On the Toolbar click Edit -> Find. In the dialog box, corresponding to Find What field, type WebClient. Uncheck Values and Data or otherwise, check only Keys below Look at. Click Find Next. It will search and should show an entry already selected. Make sure (at the bottom panel) the location of selected entry is


  6. On the WebClient entry, click the right direction arrow to access the content inside it.

  7. Click Parameters. On the right hand side, click BasicAuthLevel -> Modify. In Value data field, change the value to 2 and click OK.
  8. If there was no BasicAuthLevel entry then create it by doing Right-click in empty white space, choose DWORD (32-bit) Value and name it to BasicAuthLevel. Follow step 7.
  9. Restart the system now for all changes to take effect. You will have to open MTP-Alternative app to connect the phone again to PC now.
  10. To map Phone Storage, open My Computer.
  11. Below the Address Bar click Map Network Drive.
  12. In the corresponding Folder field, type \\ and click Finish. A window will open with the content of / directory of your phone.
  13. If you have only Internal [SD card] in Smartphone then enter sdcard folder. Otherwise, enter storage folder and enter into your desired storage.
  14. You can access this network drive in My Computer -> Network Location. You can also rename this drive by doing Right-Click -> Rename over the drive, enter the name and hit Enter. Note that the drive won't be accessible if the smartphone with above mentioned instructions is not connected to the PC.

(Source: ykasidit, Yeehawup, MTP-Alternative)

For Ubuntu (Linux) with KDE 4.1x:

  1. Launch Dolphin file browser. In Places click Network.
  2. Click Add Network Folder -> WebFolder (webdav).
  3. Enter any Name, leave User field blank, enter in Server field, enter 8081 in Port field. As per step 13 of Windows OS, type either /sdcard/ or /storage/ in Location field, check Create and icon for this remote folder and click Save and Connect. A window will open with the storage contents now.
  4. The network location is saved in Places -> Network -> Name where Name is from step 3. You can also pin this folder into Places by doing over that folder Right-click -> Add to Places.

Method #2

This method utilizes ADB interface to access your phone storage. It has already been extensively covered by many users and some answers can be accessed here. To make it short, below are the instructions quoted from some answers by Android Enthusiasts users.

Installation of ADB in your OS

In fact, it is not necessary to install the entire SDK if one does not want to use it for development. To be able to run basic ADB commands in the context needed by an average user, a rudimentary installation is completely sufficient. I will try to explain how to do this, and hopefully cover the most used computer systems.


First, you will need the basic binaries. These can be found on the official download page, for Linux, Windows, and Mac.

Windows users

If your computer is running Windows, you will also need the special drivers for your device (no generic solution here, so you need to check this out yourself; usually, those drivers are offered for download on the manufacturer's website).

Linux and Mac OS users

Linux and Mac OS users might need to make their device known to their operating system. For Linux, you find the necessary steps described in my answer here. Not being familiar with Mac OS, I can not speak for it.



For Linux, this is quite easy: Simply unpack the downloaded binaries into a directory of your choice. At the time I'm writing this, this will only be two files: adb and aapt (the latter being used by QtADB, and not necessarily needed to execute ADB commands directly). Adjust their file permissions to make them executable (e.g. from the command line: chmod 0755 adb aapt). Finally, it's a good idea to include the chosen directory with your $PATH variable, so you can call adb from wherever you are. A good place for that is at the end of your ~/.profile file to include an additional line like export PATH="~/bin:$PATH" (if you extracted the binaries to ~/bin).


The Windows download holds a couple more files. Also extract them into a directory of your choice. If you want them to be callable from wherever you are, without preceding the complete path, you need to add that path to your environment variables as well. Not being a Windows user, I must leave the "how to do this" to you.

What else?

You should be done at this point, and can use the full powers of the ADB command line.

Further readings



I do not really understand why anyone would prefer downloading an old version of unknown origin from a malware-ridden website to downloading the latest official version directly from Google itself. I guess to each its own.

Here are the links to the Google repository:

The latest version of the platform tools (contains just a few binaries - less than 10Mb in size each):

For users of Ubuntu and Debian (distributions I personally use) I have put together a small bash script which finds and installs the latest version of the platform tools - Installing Android platform tools (ADB) on Ubuntu


To access Phone Storage in Ubuntu (Linux) using ADB interface :

I cannot answer the Windows part – but the Ubuntu part I can answer for sure, as I'm using that as well and mount my devices from my computer, sometimes with full r/w access. What I use needs ADB tools to be installed on your computer. If you didn't already install them, see e.g. Is there a minimal installation of ADB?

Prepare your Droid

First a basic requirement, applying to any OS which might run on your computer: To be able to get full access, the ADB daemon needs to be running in root-mode. This is not the case with stock ROMs, even if rooted, by default (though many custom ROMs have it enabled by default). So first check: If an "ordinary" adb shell directly brings you to the root-prompt (#) without invoking su, you're fine. Otherwise, you will need a helper like adbd insecure: Run it, and enable the "patched insecure mode". Optionally check the box to have that accomplished automatically on every boot of your device.

Prepare for write access to read-only file systems

Second, again independent from the OS on your computer: to read and write to file systems, they need to be mounted in read/write mode. You can accomplish that via adb shell anytime you need to write there (I don't recomment leaving those partitions in permanent read/write mode), e.g. issuing a mount -o remount,rw /system for the /system partition.

Mount your Droid

Now let's go for the specifics. I mount the Android file system via ADB, utilizing FUSE. The tool for that is adbfs-rootless. Compiling the code is easy given the instructions there; that done, copy the resulting adbfs binary to a directory in your $PATH. Then create a mount-point on your computer; in my example, I will use ~/droid for that. Now here we go:

# Mount the Android FS:
adbfs ~/droid
# Unmount it again:
fusermount -u ~/droid

To ease the process, I've created two aliases:

alias mdroid="adbfs ~/droid"
alias udroid="fusermount -u ~/droid"

You surely already have guessed: mdroid stands for "mount droid", udroid for "unmount droid".

A different approach to manually mounting/unmounting is using Midnight Commander with a specific VFS: mc-extfs-adb is doing that. A version I've spefically adapted for Ubuntu is available in the download area at IzzyOnDroid, where you can simply pick it (installation instructions included).

Both variants have their pros and cons: mc-extfs-adb takes quite a while on first access (while it caches the entire file system structure) – but then is pretty fast browsing the file system (as it is cached), only slowing down when you copy/edit files remotely. Using adbfs directly starts up much faster, but then always "hesitates" for a second when switching directories (as it does not cache the entire structure, but only reads on demand). I usually prefer the latter, but YMMV – hence I've given you both options :)


To access Phone Storage in Windows using ADB interface

Windows File Explorer by default doesn't let you access the Android root files. You'll need to download a different application (to your PC) for that. Many places (like this guidingtech.com tutorial recommend Android Commander. Another recommended file explorer program is Droid Explorer.


Method #3

This method uses an app and USB Tethering. This method has roots in this answer (this answer only mentioned the possibilities but not the actual usage in steps).


  1. Download a file server app that allows WebDav/FTP/SSH/Samba server creation. You can either look on this list by Izzy here, or choose them viz., WebDav, FTP, Samba, SSH, Multifarious. Google is your friend if none of them helps.
  2. Following Instructions are for {WebDav,FTP} Ultimate (Free) and Servers Ultimate Pro (Paid).

Using WebDav Server Ultimate :

  1. Enable USB Tethering.
  2. Launch WebDav Server Ultimate.
  3. Go to Add -> WebDAV Server ->.
  4. Enter any name in Server Name. Choose a Port number greater than 1024 which you can remember (e.g. 5000) and enter it in Run on port.
  5. In Document root, choose / to remain consistent with Method #1.
  6. Uncheck all the options. You may choose to run this server automatically whenever you launch this app. To do so, check Start directly when app starts clean. Tap Back key once and choose Yes to save server settings.
  7. Tap once on newly created server entry and choose Start/Stop. You will get a dialog box with Information The server has been started. You can close the app (including the server) by sliding left the many icons at the top of the app and choose Exit. Note that without choosing the Exit, the server will continue to run unless stopped explicitly.
  8. You may now use procedure explained in Method #1 for either Windows or Linux. Note that for Windows, the address will now be \\ and for Linux, it will be webdav://

Using FTP Server Ultimate:

  1. Enable USB Tethering.
  2. Launch FTP Server Ultimate app.
  3. Go to Add -> FTP Server ->.
  4. Enter any name in Server Name. Choose a Port number greater than 1024 which you can remember (e.g. 6000) and enter it in Run on port.
  5. Uncheck all the options. You may choose to run this server automatically whenever you launch this app. To do so, check Start directly when app starts clean. Similarly, choose Respawn (auto restart when server crashed).
  6. Go to Users (adjacent to Settings at the top), tap Add, leave Username and Password blank and check Auto write access. You may choose to restrict the PC by choosing Force stay in document root.
  7. In Document root, choose / to remain consistent with Method #1.
  8. Tap Back key once and choose Yes to save server settings.
  9. Tap once on newly created server entry and choose Start/Stop. You will get a dialog box with Information The server has been started. You can close the app (including the server) by sliding left the many icons at the top of the app and choose Exit. Note that without choosing the Exit, the server will continue to run unless stopped explicitly.
  10. You may now use procedure explained in for Linux. Note that for Windows, the address will now be and for Linux, it will be To map ftp in Windows, follow the following instructions from Step 13.

Using Servers Ultimate Pro: Note that this app requires certain other packages(free) to be installed.

  1. Enable USB Tethering.
  2. Launch Servers Ultimate Pro app.
  3. Go to Servers. Tap + icon and scroll down to tap FTP Native Server.
  4. Enter Name, choose a Port number greater than 1024 which you can remember (e.g. 2121).
  5. Under LISTEN ON NETWORK INTERFACE, choose rndis0 -Ipv4 (
  6. Check Start directly when app starts.
  7. In the LOCKS, check Enable WIFI lock.
  8. At the top panel of the app, go to SPECIFIC and uncheck everything except Allow upload.
  9. In Document root, choose / to remain consistent with Method #1.
  10. Touch floppy icon to save settings.
  11. Tap the server entry once and choose Start.
  12. You may now use procedure explained in Method #1 for Linux. Note that for Linux, the network location will be
  13. For Windows, follow steps 1-11 in Method #1 For Windows.
  14. Click Connect to a website that you can use to store your documents and pictures.
  15. A new windows with title Add Network Location will be shown. Click Next -> Choose a custom network location -> Next.
  16. Under Internet or Network Address, type and click Next. You can replace sdcard with storage.
  17. Check Log on anonymously and click Next. Type a name to recognize this in future and click Next.
  18. Check Open this network location when I click Finish and click Finish. A new window with your phone's storage content will show up.
  19. Step 14 of Method #1 applies here too.

Note that for WebDav server in Servers Ultimate Pro, the settings are similar to one covered in aforementioned procedures in Method #3.

About MTP-Alternative

USB file transfers with PC - without 'MTP' problems.

No more USB ‘MTP driver not found’ or ‘can’t find my files’ issues - Supports both Windows and Ubuntu GNU/Linux!

'MTP-Alternative' shares this device's storage as a 'Drive' to Computers via USB Tethering instead of the default android 'MTP' file transfer method and makes you avoid the 3 common 'MTP' problems.

About WebDav Server Ultimate

A free, secure and complete WebDAV Server! The app supports adding multiple users, has WebDAV over SSL/TLS (HTTPS) support and can be set to automatically start a WebDAV Server when your device is connected to a specific WIFI network!

About FTP Server Ultimate

A free, secure and complete FTP Server for transferring files using an FTP client. The app supports adding multiple users, has FTPS Implicit / SFTP / SCP support and can be set to automatically start an FTP Server when your device is connected to a specific WIFI network!

About Servers Ultimate Pro

★★Run over 60 servers with over 70 protocols!★★

Now you can run a CVS, DC Hub, DHCP, UPnP, DNS, DDNS, eDonkey, Email (POP3 / SMTP), FTP Proxy, FTP, FTPS, FTPES, Flash Policy, Git, Gopher, HTTP Snoop, ICAP, IRC Bot, IRC, ISCSI, Icecast, LPD, Load Balancer, MQTT, Memcached, MongoDB, MySQL, NFS, NTP, NZB Client, Napster, PHP, Lighttpd, PXE, Port Forwarder, RTMP, Remote Control, Rsync, SIP, SMB/CIFS, SMPP, SMS, Socks, SFTP, SSH, Server Monitor, Styx, Syslog, TFTP, Telnet, Time, Torrent Client, Torrent Tracker, Trigger, Unison, UPnP Port Mapper, VNC, VPN, Wake On Lan, Web, WebDAV, WebSocket, X11 and/or XMPP server!


  1. WebDAV may limit the file size upto 4 Gigabytes only.
  2. File transfer through WebDav enabled by MTP-Alternative wasn't very responsive and created a cache size of 800 MB for me in Android.
  3. 2. issue didn't arise on Linux and worked smoothly.
  4. I prefer Servers Ultimate Pro with FTP Native Server. It works flawlessly on both Windows and Linux for me.
  5. I only use adb push|pull commands of Method #2 for data transfer. It is mentioned for covering the common options as an alternative.
  6. If you're rooted, then you can port forward in Servers Ultimate Pro.
  7. There could be methods that I'm unaware of yet. Please post them as an answer.

Sure there is. Just comfort differs, depending on what OS you're on.

I mostly use for this. On Linux, you can even mount the device this way. There are also several adb GUIs if you prefer such as the cross-platform QtADB. Or you can use the command line:

# Copy a file to the Android device
adb push some.file.ext /mnt/sdcard/some.file.ext
# Grab one from the Android device
adb pull /mnt/sdcard/some.file.ext some.file.ext
# similar for an entire directory
adb pull /mnt/sdcard /local/folder

Just take care the types on both ends correspond: either both are file names (as in the first two examples), or both are directories (third example). Mixes will fail.

In order to navigate (e.g. ls) in a convenient way use the adb shell.

If you don't have ADB installed yet on your computer: See Is there a minimal installation of ADB?

  • There are even some file managers offering you some GUI for that. You might wish to take a look at my ADB apps listing for details; find those computer-programs at the end of the page.
    – Izzy
    Commented Dec 24, 2014 at 9:55
  • 1
    For pushing or pulling one file sure, but what if I just wanna backup my internal storage :/
    – Shayan
    Commented Jan 5, 2019 at 23:05
  • 3
    @Shayan If you mean the "internal SD card": the last command in my answer does that. If you mean the place where apps store their data (/data/*) your device needs to be rooted and the ADB daemon running in insecure mode in order to pull that.
    – Izzy
    Commented Jan 6, 2019 at 9:05

Yes, you can try search for 'mtp alternative' in Google Play or visit its page below: https://play.google.com/store/apps/details?id=com.clearevo.mtp_alternative

It requires USB Tethering to be enabled then it's quite simple.

After my friends and myself faced quite a few 'MTP driver not found' and 'file not showing' issues myself, I decided to make the app named 'MTP-Alternative' to solve this problem.

Normally I use adb to transfer 'technical data' files too - it works well. But when I use adb to send media files like photos, music or videos from PC to Android - to /sdcard/Pictures/ or to /sdcard/Music/ for example - the Android Gallery and Music app won't show them and it won't update until a restart (both Nexus 5 and Galaxy Note 8). Using 'MTP Alternative', the Gallery and Music app would update newly added files instantly without a restart. Also, if a new media or data file is created on phone, simply pressing 'F5' on the PC folder would refresh to show them.

  • I've used this app successfully to transfer 26GB from my OPO phone running 5.1.1 to my Windows 8.1 x64 PC. However, it uses WebDAV and that limits each individual file to 50MB (otherwise, it will create the error "0x800700DF: The file size exceeds the limit allowed"). To increase the limit, follow the instructions here: support.microsoft.com/en-us/kb/900900
    – ikjadoon
    Commented Jan 8, 2016 at 18:02

6 years after asking this question, finding alternatives to MTP for any reason — it is broken in my case — can still be a hassle. I stumbled upon this question and the first, very rich answer of @Firelord proposes a lot of interesting solutions that are still viable today. But unfortunately, as my use case was very particular — being able to use a fast, secure, wireless network independent solution, which almost obligatorily implies the use of a USB cable for all of these criteria, to manage my device's files — none of this helped me: WebDAV didn't allow me to manage files (rename, move, remove them), FTP couldn't work without a wireless network, and I couldn't make adbfs work because of not being able to set adbd state efficiently and remount my phone's system to rw thanks to Magisk (which is the rooting solution for most Android phones now).

Fortunately after many hours I found a viable solution that fulfil everything I was looking for, and it's thanks to a very small mention in the first post. For the short answer: use SFTP (SSH) and adb

For the long answer, here's how I proceeded below. (Note: at the time of writing I was looking for a solution to use on my GNU/Linux Ubuntu 20.04 install which should read the files of an Android 8.1 device. Windows users will have to adapt this method for their environment, but the logic is the same, and they may not have much trouble these days anyway)

  1. Install a SSH server solution on your phone. You can run and configure one through Termux if you feel adventurous, but I wanted something to work straight out of the box without having to configure much, so I installed an application called SimpleSSHD instead.

  2. Configure your solution. For SimpleSSHD I just went into Settings - Paths - Home Directory option and changed the home directory to /storage/emulated/0. It will work when you run the app only if you granted it Files access permission, that is prompted on first launch anyway. After that start the service.

  3. (Optional) Cut solution's wireless interface access. I didn't want anyone to access my SSH server from outside so I went into the app settings and disallowed it to access Wi-Fi and Mobile data. Method changing depending on your solution and restricting means obviously

  4. Link device's server to you machine using port forwarding. Default's app setting used 2222 as port, and as the port 2222 of my machine was unused I didn't overthink it and used the same. So I did the forwarding using this adb command: adb forward tcp:2222 tcp:2222

  5. Almost done! You now have to open your favorite (remote) file manager software and connect to your SSH server's SFTP file sharing. I used Nemo for that and simply type in the address bar sftp:// This will prompt a login dialog. I was lazy and didn't configure anything as it was only for testing, so with the app I had to login with username user and a one-time password the app has generated and output.

I had a weird bug at first that refused me connection but after I clicked the new Network entry in Nemo I created with the login I finally had access.

Voilà, you can now browse and manage your phone's internal storage securely, with a decent speed, without the annoying bug of not seeing your new files without a reboot — you still have to refresh in your file manager.

  • Another advantage of this solution is, it works even when USB Tethering does not work. Just developed this exact solution as well, only with scp and rsync over SSH instead of SFTP.
    – tanius
    Commented Aug 26, 2021 at 16:31
  • This is a great answer, but could you explain this part a bit more... "so with the app I had to login with username user and a one-time password the app has generated and output"? On the Play Store, it says, "[SimpleSSHD] only supports public-key based authentication (no password/interactive auth)."
    – osullic
    Commented Sep 12, 2021 at 8:42
  • OK, sorry, I wasn't looking at my phone screen - I see the SimpleSSHD app generates and displays this single-use password. Whenever I enter it on my computer though, my SFTP client tells me I've entered an invalid password. The SimpleSSHD app shows "Bad password attempt for 'user' from". I'm not sure where that 57318 port came from, or if it's significant. How do we know that username 'user' is correct? Also, immediately before SimpleSSHD outputs the message about the bad password attempt, a new different single-use password is generated and displayed - seems odd.
    – osullic
    Commented Sep 12, 2021 at 9:06
  • OK, it seems like... my SFTP client initiates a connection, SimpleSSHD generates the single-use password, but my client tries an initial connection passing no password, and by the time I get to enter the password into my client, the single-use password has already expired. That's just some anomaly that's unique to my SFTP client. I'll try to learn about authorized_keys and see if I can get that working
    – osullic
    Commented Sep 12, 2021 at 9:44
  • Finally got this working. Just going to post a comment in case it helps... I used a basic command-line SFTP client to get my authorized_keys file (generated by PuTTYgen) onto the phone, in the location specified in SimpleSSHD settings, but every time I tried to connect, I got "Permission denied (publickey)". I thought it could a Unix permissions issue on authorized_keys, but first I took a look at the contents of the file itself. I wasn't sure what I should see, but after googling, I learned that my file was formatted incorrectly. Got the correct format here
    – osullic
    Commented Sep 12, 2021 at 12:34

I am using adb, under Ubuntu 16.04.

It is significantly faster than MTP (didn't time it, but I would say ca. 15x).

To install it, you can pretty much follow instructions available online




I have used pretty much all the non-root option, be it webdav, ssh, sftp. In the end, the fastest method for me to sync 200GB+ of photos and videos is to use adb-sync

and there is a new rewrite in python3

2023 Edit: Just set up Syncthing on your computer, this is at least comparable, if not faster than adb-sync. And once you past the initial set up, it's pretty much fully automated.


MyPhoneExplorer works quite well for me, has a WiFi and USB option. If you're ok with WiFi KDE Connect also works great.

AndroidDrive mounts the phone as a regular drive, using ADB to do its thing.

For older OSes, (Windows 7/10) NetworkADB lets you access the device in Explorer; it doesn't work on Windows 11 though.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .