chen3feng/adbfs

Mount Android phones on Linux with adb. No root required.

★ 0Forks 0C++GitHub ↗Compare

README

This variant of adbfs works even WITHOUT having root access (busybox) on your phone!

Instructions:

Ubuntu

You will need libfuse-dev and adb. You will also need build-essential, git, and pkg-config.

sudo apt-get install libfuse-dev android-tools-adb
sudo apt-get install build-essential git pkg-config

Clone the repository:

git clone [email protected]:spion/adbfs-rootless.git
cd adbfs-rootless    

Build:

make

Optional: If you have a separate copy of android-sdk and would like to use that adb, copy the binary adbfs to the android-sdk/platform-tools directory. If platform-tools is in your $PATH you can skip this step.

Create a mount point if needed (e.g. in your home directory):

mkdir ~/droid

You can now mount your device (also from the platform-tools dir):

./adbfs ~/droid

If you want to trigger a media rescan after every operation, use the option -o rescan:

./adbfs -o rescan ~/droid

Have fun!

MacOS

Install adb and fuse. You have two options for FUSE:

Option A: macfuse

brew install --cask android-platform-tools
brew install --cask macfuse

Option B: fuse-t

brew install --cask android-platform-tools
brew install macos-fuse-t/homebrew-cask/fuse-t

If using fuse-t, build with:

make FUSE_PKG=fuse-t

To build both backends side by side (as adbfs-macfuse and adbfs-fuset):

make both

Check access to phone through adb

adb devices

Clone the repository:

git clone https://github.com/spion/adbfs-rootless.git
cd adbfs-rootless

Build:

make

Create a mount point if needed (e.g. in your home directory):

mkdir ~/droid

Mount your device (You will be asked and have to allow fuse extension):

./adbfs ~/droid

Have fun!

._ / .DS_Store files on the device

macOS writes AppleDouble (._name) and .DS_Store sidecar files onto any volume that lacks native extended-attribute support. adbfs implements the extended-attribute operations, so with macFUSE (the default build) these files are avoided automatically -- no special mount option is needed.

fuse-t is NFS-backed and bypasses those operations, so it still scatters ._ files on the device. If you use fuse-t, either switch to macFUSE or clean up afterwards:

adb shell 'find /sdcard -name "._*" -delete; find /sdcard -name .DS_Store -delete'

Troubleshooting

Error: device not found

When running you get the following error:

--*-- exec_command: adb shell ls
error: device not found

Solution: Make sure that USB Debugging is enabled.

Then fusermount -u /media/mount/path before trying again. Note that if for any reason fusermount is not available in your system, you can use sudo umount /media/mount/path instead.

Error: device offline

When running you get the following error:

--*-- exec_command: adb shell ls
error: device offline

Solution: Make sure that

  1. Your android-sdk-tools are up to date. Newer versions of Android also require newer versions of adb. For more info, see this Stack Overflow post.

  2. You answer Yes when your phone asks whether it should allow the computer with the specified RSA key to access the device.

Then killall -9 adb; fusermount -u /media/mount/path before trying again.

Contributors

spionisieochen3fengKickerTomdandvrzrchawi026eanatolAndrey-SvetlichnyquezakCode7Rperenecabutoge0rgLonamimartin-uedingnicolas-raoulrbmjrgsonVahlbluefunnyflowerpotparke

Issues