37

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.

18

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.

(Source)


Method #1

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

Procedure:

  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

    Computer/HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\WebClient.

  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 \\192.168.42.129@8081 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 192.168.42.129 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.

Requirements

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.

Installation

Linux

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).

Windows

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

(Source)

And,

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

(Source)

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 :)

(Source)

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.

(Source)


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).

Procedure:

  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 \\192.168.42.129@5000 and for Linux, it will be webdav://192.168.42.129:5000/.

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 ftp://192.168.42.129:6000 and for Linux, it will be ftp://192.168.42.129:6000/. 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 (192.168.42.129).
  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 ftp://192.168.42.129:2121/.
  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 ftp://192.168.42.129:2121/sdcard/ 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!


Note:

  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.
  • 4
    All of these are way WAY! too much work for a simple fast file transfer, this is 2018! – shinzou Jun 9 '18 at 19:25
  • @shinzou Apologies for your discomfort. You are most welcome to file your regret to Google, Microsoft and all other stupid IT companies that still forces us to use sh*ful MTP protocol or alternate to a solutions like above. If you can come with a way, way simpler solution and you can provide some valuable answer, instead of just criticizing others, you are also most welcome to write your own answer. – trejder Mar 15 at 8:46
9

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?

  • This is pretty interesting - thanks! I'm going to have a play and if it works I'll be back with a Tick! – fostandy Dec 24 '14 at 0:50
  • 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 Dec 24 '14 at 9:55
  • 1
    For pushing or pulling one file sure, but what if I just wanna backup my internal storage :/ – Shayan Jan 5 at 23:05
  • 1
    @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 Jan 6 at 9:05
4

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 Jan 8 '16 at 18:02
0

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

https://www.howtogeek.com/125769/how-to-install-and-use-abd-the-android-debug-bridge-utility/

https://www.xda-developers.com/install-adb-windows-macos-linux/

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.