Guide

adb or MTP: two ways to move files over the same cable

An Android phone offers its files to a computer in two ways. One is for everyone and needs no setup. The other is for developers, needs one switch, and does a great deal more.

MTP is what you get when you choose File Transfer in the phone's USB settings. It needs nothing else, works with any computer that has an MTP app, and shows the phone's files as a list to drag in and out of. adb, the Android Debug Bridge, is the protocol of Android's developer tools. It needs USB debugging turned on once, and in return it gives a computer a file copying service, a shell on the phone, and anything built on those.

For a few photos on a borrowed computer, MTP is the easy choice. For Terminal, scripts, large folders, files over 4 GB, or a phone you want to treat as a drive, adb is the stronger one. Neither is built into macOS, so on a Mac both come through an app or a download.

What MTP is

MTP, the Media Transfer Protocol, began at Microsoft as an extension of the camera protocol PTP, and Android has used it for USB file transfer since 2011. The phone keeps control of its storage and offers every file and folder as a numbered object. The computer asks for a list, then for each object, one operation at a time. MTP explained goes into how it works and why a Mac cannot mount it on its own.

What adb is

adb is part of Google's SDK Platform-Tools, a free download for macOS, Windows and Linux. It has three parts: the adb command you type, a server that runs in the background on the computer, and a daemon on the phone that answers it. You do not need Android Studio. On a Mac with Homebrew, one command installs it:

brew install --cask android-platform-tools

With the phone connected and allowed, these are the commands that matter for files:

adb devices
adb pull /sdcard/DCIM/Camera ~/Pictures/Phone
adb push ~/Music/Album /sdcard/Music/
adb shell ls -l /sdcard/Download

adb pull copies a file or a whole folder from the phone, adb push copies one to it, and adb shell runs a command on the phone, or opens an interactive shell if you give it none.

What each needs on the phone

MTP: File Transfer mode

  1. Unlock the phone and connect the cable.
  2. Tap the Charging this device via USB notification.
  3. Under Use USB for, choose File Transfer. On a Pixel it reads File transfer / Android Auto.

Most phones go back to charging only the next time you plug in. If you would rather they did not, Developer options has a Default USB configuration setting.

adb: USB debugging

  1. Open Settings > About phone and tap Build number seven times. On a Samsung it is under About phone > Software information.
  2. In the new Developer options, turn on USB debugging.
  3. Connect the cable. The phone asks Allow USB debugging? and shows the computer's RSA key fingerprint. Tick Always allow from this computer and tap Allow.

Makers move these menus around, so how to turn on USB debugging has the steps for Samsung, Pixel, Xiaomi, OnePlus and Motorola.

Is USB debugging safe?

USB debugging is safer than its name suggests, as long as you only allow computers you own. Since Android 4.2.2, a phone will not take a single adb command from a computer until someone has unlocked it and accepted that computer's key.

MTP has a simpler model: the phone must be unlocked, and whoever holds the cable gets the shared storage while File Transfer is on. There is no per-computer approval.

What each can do

An MTP appadb in TerminalSideMount (adb in Finder)
On the phoneFile Transfer, chosen when you plug inUSB debugging, turned on onceUSB debugging, turned on once
Copy files both waysYesYesYes
Files over 4 GBDepends on the appYesYes
Open a file in place from any Mac appOnly an app that mounts the phoneNo, pull it firstYes
Terminal, scripts and rsyncNoIts own commands, no rsyncYes, on the volume
Shell on the phone, app installsNoYesNo
Over Wi-FiNoYes, Android 11 or laterYes, Android 11 or later
What each route offers on a Mac. Both protocols are fast at raw throughput on a modern phone, so speed is left out.

MTP's object model is the reason for most of the left-hand column. It hands out whole objects by number, one operation at a time, which suits dragging files in and out of a window. adb's file service works with paths, which is what Terminal and scripts expect, and its shell lets you find, move and delete files on the phone without copying anything.

One thing they share: only one program at a time can hold a phone. A single MTP session, or a single adb connection. If an MTP app is open, another one cannot connect, and only one adb server can hold a phone at once.

Which to use when

If you use both SideMount and your own adb, they take turns: quit your adb server before mounting, and ejecting the phone in Finder gives it back to your adb. The setup guide walks through the first connection, and every way to move files between Android and a Mac covers the wireless options too.

Questions

Is adb faster than MTP?

Not by nature. On a modern phone with a USB 3 cable, both move large files quickly, and the app on the computer makes more difference than the protocol. A USB 2 phone or cable caps either at about 20 to 40 MB/s.

Do I need Android Studio to use adb?

No. adb comes in Google's SDK Platform-Tools, a small separate download, or through Homebrew with brew install --cask android-platform-tools. Some Mac apps speak adb themselves and need neither.

Can someone copy my files through USB debugging?

Only from a computer the phone has already allowed. A new computer needs the phone unlocked and its "Allow USB debugging?" prompt accepted. To be sure, use "Revoke USB debugging authorizations" in Developer options, or turn USB debugging off when you do not need it.

Why does adb devices say unauthorized?

The phone has not accepted this computer's key yet. Unlock it and look for the "Allow USB debugging?" prompt. If none appears, revoke the authorizations in Developer options and plug in again so the phone asks afresh.

Your Android phone, in Finder.

Free for seven days, no card. macOS 26 or later.

Download for macOS