No app to open, no files to copy first. Plug it in and it is simply there.
A USB stick is storage your Mac can read. An Android phone isn't — it only answers
requests, one file at a time. Every other tool works around that with a window you
browse through: you copy each file to your Mac before you can open it, then copy it
back when you're done.
Ferry makes it a real drive instead. Your apps open and save files on it directly,
exactly as they would on a USB stick.
It behaves as though you plugged in an external drive. Double-click and the file opens in whatever app you already use.
Straight off the phone, no copying it over first. Skip to the middle and Ferry handles it.
⌘S writes to the phone. No second copy to keep track of, no re-upload step.
Rename and delete too. Quick Look, tags and Get Info all behave normally.
A memory card mounts as its own volume showing its own free space — not merged into one.
cp, rsync, find, grep — it is a mount point, so everything works.
Compared on things you can check yourself.
| Ferry | OpenMTP | Android File Transfer | MacDroid | Commander One | |
|---|---|---|---|---|---|
| Cost | Free | Free | Free | Paid tier | Paid tier |
| Mounts in Finder | Yes | In its window | In its window | Yes | In its window |
| Speed | Very fast | Slow | Slow | Fast to slow | Slow |
| Open in any app | Directly | Copy out first | Copy out first | Directly | Copy out first |
| Starts by itself | Plug in, it mounts | Launch the app | Launch the app | Launch the app | Launch the app |
| Terminal & scripts | Yes | No | No | Yes | No |
| SD card | Own volume | In-app | In-app | Not stated | In-app |
| Driver or reboot | None | None | None | System extension | None |
| Wireless | Yes | No | No | Yes | No |
| macOS needed | 11+ | 10.10+ | Discontinued | 11.5+ | 10.13+ |
Because Ferry is a real mount point, anything that reads files works with it —
rsync, cron, Time Machine exclusions, your editor.
It needs no driver and no reboot to do that.
Why the speed differs: MTP, which the others use, asks the phone for one file at a time — slow directory listings and a wait before anything opens. Ferry uses ADB, and adds some very smart optimisations and caching on top of it.
Rows are taken from each project's own documentation in July 2026 — check theirs before deciding.
Three lines in Terminal — see Installation. It brings adb along and starts Ferry at login from then on.
Settings → About phone, then tap Build number seven times.
Settings → Developer options → USB debugging. This is how Ferry reads the phone; no app is installed on it.
Unlock the phone and accept “Allow USB debugging?” — Android asking whether to trust this Mac. It appears in Finder within a second or two.
No cable? Set up wireless instead.
Homebrew is the one to pick unless you have a reason not to: it brings adb along and updates Ferry with everything else on your Mac.
Three lines, then you are done:
# Point Homebrew at Ferry's tap
brew tap ramanbanka/ferry
# Trust the tap — needed once per Mac
brew trust ramanbanka/ferry
# Installs dependencies, sets Ferry to start at login
brew install --cask ferry
Install Android Platform Tools
(brew install --cask android-platform-tools), take the tarball from
Releases, then:
cd ~/Downloads
tar -xzf ferry-*-macos-arm64.tar.gz
# Put it where the shell can find it
sudo install -m 755 ferry-*-macos-arm64/ferry /usr/local/bin/ferry
# Clear the flag macOS puts on browser downloads —
# without this the binary is killed, not just warned about
xattr -d com.apple.quarantine /usr/local/bin/ferry || true
# Enable Ferry to start automatically at every login
ferry enable
Pair your phone once and it mounts over Wi-Fi whenever it is on the same network as your Mac. Needs Android 11 or newer.
Three steps, and the first is the same one USB debugging needs:
Turn on developer options: Settings → About phone, then tap Build number seven times.
Settings → Developer options → Wireless debugging, and turn it on.
Tap the words Wireless debugging — not the switch — then Pair device with pairing code. A six-digit code appears; leave it showing.
While that code is still showing:
ferry pair
Type the six digits if it asks. That is the whole setup — Ferry finds the phone by itself from then on.
Wi-Fi is up to 9x slower than a cable. Browsing and opening files stay close to normal; copying large files is where you feel it. Playing a higher-resolution video straight from the phone, or seeking into the middle of one, may buffer.
You do not have to choose, though: plug in and Ferry moves to the cable on its own, unplug and it goes back to Wi-Fi.
Yes. No paid tier, no trial, and no feature held back. No account, no sign-up, and nothing to register — install it and it works.
Ferry may be one day; it isn't yet. The binary is free to use either way. If that rules it out for you, OpenMTP is open source and worth a look.
Because Ferry is not in Homebrew's own cask repository yet. Anything not in it has to
be published as a tap — a third-party source you add yourself — which is what
brew tap ramanbanka/ferry does. brew trust is then Homebrew
asking whether you are happy for it to run that tap's install steps, which it needs to
because installing Ferry registers a background agent rather than just copying a file
into place. Both are once per Mac.
Getting into the main repository takes more than working software: Homebrew asks for a
project to be at least 30 days old and to show public interest beyond its author. Ferry
is newer than that, so the tap is where it lives for now — and once it is accepted,
brew install --cask ferry will work on its own.
Not yet — that needs Apple's Developer ID, which costs $99 a year and I haven't
justified it for a brand-new free tool. If Ferry gets traction I'll buy it and this
friction goes away. Homebrew installs work because the cask clears the download flag for
you; a browser download needs the xattr line above. Ferry never asks you to
turn off Gatekeeper or SIP.
No. Ferry talks to the phone over the cable or your Wi-Fi and serves the files to Finder on your own machine — over Wi-Fi it goes between your phone and your Mac and nowhere else. No account, no cloud, and no telemetry in the app.
Don't take my word for it — you can watch Ferry's network activity yourself with Little Snitch or LuLu.
Two reasons. Most alternatives speak MTP, which asks the phone for one file at a time — that is why directory listings crawl and everything waits. Ferry uses ADB, a faster channel that Android's own developer tools run on.
Second, Ferry adds its own optimisations, caching and prediction, which multiply the speed ADB offers.
Ferry also does less: copy-based tools move a whole file before you can touch it, while Ferry serves the bytes an app actually asks for, so opening or seeking in a large file does not wait on the rest of it.
Ferry reads and writes only when something asks for a file. Idle, Ferry does nothing but check whether the phone is still attached — and on a cable, the phone is charging while it does.
Over Wi-Fi there is no cable to charge from, so it does use some battery.
That transfer fails and Finder says so. Ferry unmounts the volume and waits; plug the phone back in and it returns on its own. Anything already written stays written.
If you installed with Homebrew, run brew uninstall --cask ferry. It
stops the agent and unmounts your phone before removing anything.
If you installed manually, run ferry disable first, then
sudo rm /usr/local/bin/ferry.
Unlock it and look for “Allow USB debugging?” — Android asking whether to trust this Mac. Over Wi-Fi, check the phone is awake and on the same network.
If the cable is in and nothing happens, try a different one: many USB-C cables carry power only.
Run ferry status — it says whether Ferry can still see the
phone. If it cannot, unplug and plug back in, or check the phone is unlocked.
One other cause worth knowing: another Android transfer app running at the same time can take the connection. Quit it and Ferry picks the phone up again.
Over Wi-Fi, the file needs more than the network is carrying. Plug the cable in and it keeps playing from where it was.
ferry status lists every volume that is mounted and says
whether each is served over USB or Wi-Fi, along with the phones Ferry can currently
see.
ferry log follows what Ferry is doing as it happens, the same
way tail -f would. It says when a phone was noticed, mounted, or gave up
answering, which is usually enough to explain a volume that did not appear.
ferry restart stops Ferry and starts it again, remounting
whatever is connected. Anything already written to the phone stays written.
ferry stop stops it until you start it again, or until your
next login. To keep it from starting at login at all, use
ferry disable — and ferry enable brings
it back.
ferry --help lists everything else.