adbfs-rootless
adbfs-rootless copied to clipboard
Doesn't work on Nexus 5 after upgrade to Android 7.0: Transport endpoint is not connected
I'm getting this now:
$ ./adbfs /mnt/nexus-5
--*-- exec_command: adb shell "ls"
$ ls -l /mnt/nexus-5
ls: cannot access /mnt/nexus-5: Transport endpoint is not connected
USB debugging is enabled, this worked before on Android 6.*.
$ adb version
Android Debug Bridge version 1.0.32
Can you post the output of ./adbfs -f /mnt/nexus-5
(so that the process isn't in the background)?
I can do a bit better than that, it didn't have --help, didn't know
about the -f option, it's segfaulting as soon as I ls
the directory. Ran it under gdb, got this:
(gdb) bt
#0 __GI_____strtol_l_internal (nptr=0x41ffffffff <error: Cannot access memory at address 0x41ffffffff>, endptr=endptr@entry=0x0,
base=base@entry=10, group=group@entry=0, loc=0x7ffff7159f20 <_nl_global_locale>) at ../stdlib/strtol_l.c:298
#1 0x00007ffff6decf22 in __GI_strtol (nptr=<optimized out>, endptr=endptr@entry=0x0, base=base@entry=10) at ../stdlib/strtol.c:108
#2 0x00007ffff6dea2d0 in atoi (nptr=<optimized out>) at atoi.c:27
#3 0x0000000000404d6a in adb_getattr (path=0x7ffff0000b00 "/", stbuf=0x7ffff6baec20) at adbfs.cpp:492
#4 0x00007ffff7baa06c in ?? () from /lib/x86_64-linux-gnu/libfuse.so.2
#5 0x00007ffff7bb4405 in ?? () from /lib/x86_64-linux-gnu/libfuse.so.2
#6 0x00007ffff7bb4895 in ?? () from /lib/x86_64-linux-gnu/libfuse.so.2
#7 0x00007ffff7bb1394 in ?? () from /lib/x86_64-linux-gnu/libfuse.so.2
#8 0x00007ffff71670a4 in start_thread (arg=0x7ffff6baf700) at pthread_create.c:309
#9 0x00007ffff6e9c87d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
(gdb) frame 3
#3 0x0000000000404d6a in adb_getattr (path=0x7ffff0000b00 "/", stbuf=0x7ffff6baec20) at adbfs.cpp:492
492 ftime.tm_mday = atoi(ymd[2].c_str());
(gdb) p *ymd
No symbol "operator*" in current context.
(gdb) x ymd
Value can't be converted to integer.
(gdb) p ymd
$1 = std::vector of length 1, capacity 1 = {"root"}
(gdb) p ymd[0]
$2 = "root"
(gdb) p ymd[0].c_str()
$3 = 0x7ffff0003ff8 "root"
(gdb) p ymd[1].c_str()
$4 = 0x7ffff715a060 <_IO_2_1_stderr_> "\206 \255", <incomplete sequence \373>
(gdb) p ymd[2].c_str()
$5 = 0x41ffffffff <error: Cannot access memory at address 0x41ffffffff>
(gdb) p iDate
$6 = 3
(gdb) p output_chunk[iDate]
$7 = "root"
(gdb)
I.e. the "ymd" variable retrieved via iDate looks bad. I tried to monkeypatch around it with:
diff --git a/adbfs.cpp b/adbfs.cpp
index 87a035c..f32506d 100644
--- a/adbfs.cpp
+++ b/adbfs.cpp
@@ -492,3 +492,3 @@ static int adb_getattr(const char *path, struct stat *stbuf)
- ftime.tm_mday = atoi(ymd[2].c_str());
- ftime.tm_hour = atoi(hm[0].c_str());
- ftime.tm_min = atoi(hm[1].c_str());
+ ftime.tm_mday = 1;
+ ftime.tm_hour = 1;
+ ftime.tm_min = 1;
Only to get:
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
--*-- exec_command: adb shell "ls"
[New Thread 0x7ffff6baf700 (LWP 19386)]
[New Thread 0x7ffff63ae700 (LWP 19387)]
--*-- exec_command: adb shell "ls -l -a -d '/.Trash'"
--*-- exec_command: adb shell "ls -l -a -d '/.Trash-1000'"
--*-- exec_command: adb shell "ls -l -a -d '/'"
--*-- exec_command: adb shell "ls -l -a '/'"
terminate called after throwing an instance of 'std::out_of_range'
what(): basic_string::compare: __pos (which is 18446744073709551604) > this->size() (which is 7)
Program received signal SIGABRT, Aborted.
[Switching to Thread 0x7ffff6baf700 (LWP 19386)]
0x00007ffff6de9067 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
56 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt
#0 0x00007ffff6de9067 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1 0x00007ffff6dea448 in __GI_abort () at abort.c:89
#2 0x00007ffff78f3b3d in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#3 0x00007ffff78f1bb6 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#4 0x00007ffff78f1c01 in std::terminate() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#5 0x00007ffff78f1e19 in __cxa_throw () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#6 0x00007ffff7947cdf in std::__throw_out_of_range_fmt(char const*, ...) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#7 0x00007ffff7951d32 in std::string::compare(unsigned long, unsigned long, char const*) const () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#8 0x0000000000405355 in adb_readdir (path=0x7ffff0000b00 "/", buf=0x7fffe8000990, filler=0x7ffff7ba7410, offset=0, fi=0x7ffff6baec40)
at adbfs.cpp:555
#9 0x00007ffff7bac8d2 in fuse_fs_readdir () from /lib/x86_64-linux-gnu/libfuse.so.2
#10 0x00007ffff7baca5c in ?? () from /lib/x86_64-linux-gnu/libfuse.so.2
#11 0x00007ffff7bb3606 in ?? () from /lib/x86_64-linux-gnu/libfuse.so.2
#12 0x00007ffff7bb4895 in ?? () from /lib/x86_64-linux-gnu/libfuse.so.2
#13 0x00007ffff7bb1394 in ?? () from /lib/x86_64-linux-gnu/libfuse.so.2
#14 0x00007ffff71670a4 in start_thread (arg=0x7ffff6baf700) at pthread_create.c:309
#15 0x00007ffff6e9c87d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
(gdb)
I.e. there seems to be some bad general data corruption/assumption in the code.
I'd be happy to debug this further with you.
FWIW even though it's much slower jmtpfs still works for me so I've switched back to that.
Sorry, I haven't had much spare cycles lately (and this code is in dire need of a refactor, too, so its a bit difficult to apply fixes to it)
The problem is likely that adbfs isn't quite getting what it expects from ls -l -a -d /
- could you post what Android 7 outputs when given that command?
ls -l -a
output would also help...
I experience the same exact problem on an nexus 6p with android 7
Same issue, Android 7.1.1:
(ins)ravi@svelte:~$ adb shell ls -lad /
drwxr-xr-x 21 root root 0 1970-01-01 13:16 /
(ins)ravi@svelte:~$ sudo umount /mnt/android
(ins)ravi@svelte:~$ sudo adbfs /mnt/android/
--*-- exec_command: adb shell "ls"
(ins)ravi@svelte:~$ sudo ls -lad /mnt/android
ls: cannot access '/mnt/android': Software caused connection abort
(ins)ravi@svelte:~[2]$ sudo ls /mnt/android
ls: cannot access '/mnt/android': Transport endpoint is not connected
(ins)ravi@svelte:~[2]$
Worked fine on same hardware when on Android 6.0.1
same here, stopped working after phone was upgraded to Android 7.0 (Sony Xperia Z5)
ls -l -a -d /
seems okay
$ adb shell ls -l -a -d /
drwxr-xr-x 24 root root 0 1970-02-02 10:44 /
adb shell ls
returns a few permission errors
$ adb shell ls
ls: ./rca: Permission denied
ls: ./verity_key: Permission denied
ls: ./ueventd.rc: Permission denied
ls: ./ueventd.qcom.rc: Permission denied
ls: ./service_contexts: Permission denied
ls: ./sepolicy: Permission denied
ls: ./selinux_version: Permission denied
ls: ./seapp_contexts: Permission denied
ls: ./logo.rle: Permission denied
...
except for that, i get the same as above
I've started looking at this. Preliminary finding: Android 7 changed the format of ls -l -a -d such that the date is in "slot" 5 vs. 3 or 4. This makes it more consistent - no differences between the format WRT the various file types. Eg:
$ adb shell ls -l -a -d /cache
drwxrwx--- 6 system cache 4096 2017-02-06 21:45 /cache
$ adb shell ls -l -a -d /charger
lrwxrwxrwx 1 root root 13 1969-12-31 19:00 /charger -> /sbin/healthd
$ adb shell ls -l -a -d /property_contexts
-rw-r--r-- 1 root root 4661 1969-12-31 19:00 /property_contexts
However, changing iDate in adb_getattr doesn't fully fix the problem. I'm now seeing this from adb_readdir:
terminate called after throwing an instance of 'std::out_of_range'
what(): basic_string::compare: __pos (which is 18446744073709551604) > this->size() (which is 7)
From this if statement, somewhere near line 560:
if (!output.front().compare(output.front().length() - sizeof(PERMISSION_ERR_MSG) + 1,
sizeof(PERMISSION_ERR_MSG) - 1, PERMISSION_ERR_MSG)) {
So, clearly more than the format of ls has changed...
For comparison, my old 4.2 phone returns this data:
$ adb shell ls -l -a -d /
drwxr-xr-x root root 1972-02-26 15:27
$ adb shell ls -l -a -d /tombstones
lrwxrwxrwx root root 1972-02-26 15:27 tombstones -> /data/tombstones
$ adb shell ls -l -a -d /ueventd.rc
-rw-r--r-- root root 5670 1969-12-31 19:00 ueventd.rc
Android 4.2 uses "toolbox" as it's busybox implementation. It looks like Nougat changed to "toybox".
I have a partial fix - directory listings and reading files works with the attached patch... Writes fail. Also, and this should be fairly obvious, this patch will likely cause failures for Android < 7 / Nougat.
diff --git a/adbfs.cpp b/adbfs.cpp
index 11bcbf5..5556df6 100644
--- a/adbfs.cpp
+++ b/adbfs.cpp
@@ -150,7 +150,7 @@ queue<string> adb_shell(const string& command)
actual_command.assign(command);
//adb_shell_escape_command(actual_command);
actual_command.insert(0, "adb shell \"");
- actual_command.append("\"");
+ actual_command.append("\" 2>/dev/null");
return exec_command(actual_command);
}
@@ -428,13 +428,13 @@ static int adb_getattr(const char *path, struct stat *stbuf)
stbuf->st_nlink = 1; /* number of hard links */
- foruid = getpwnam(output_chunk[1].c_str());
+ foruid = getpwnam(output_chunk[2].c_str());
if (foruid)
stbuf->st_uid = foruid->pw_uid; /* user ID of owner */
else
stbuf->st_uid = 98; /* 98 has been chosen (poorly) so that it doesn't map to anything */
- forgid = getgrnam(output_chunk[2].c_str());
+ forgid = getgrnam(output_chunk[3].c_str());
if (forgid)
stbuf->st_gid = forgid->gr_gid; /* group ID of owner */
else
@@ -449,7 +449,7 @@ static int adb_getattr(const char *path, struct stat *stbuf)
switch (stbuf->st_mode & S_IFMT) {
case S_IFBLK:
case S_IFCHR:
- stbuf->st_rdev = atoi(output_chunk[3].c_str()) * 256 + atoi(output_chunk[4].c_str());
+ stbuf->st_rdev = atoi(output_chunk[4].c_str()) * 256 + atoi(output_chunk[4].c_str());
stbuf->st_size = 0;
iDate = 5;
break;
@@ -457,8 +457,8 @@ static int adb_getattr(const char *path, struct stat *stbuf)
break;
case S_IFREG:
- stbuf->st_size = atoi(output_chunk[3].c_str()); /* total size, in bytes */
- iDate = 4;
+ stbuf->st_size = atoi(output_chunk[4].c_str()); /* total size, in bytes */
+ iDate = 5;
break;
default:
@@ -467,7 +467,7 @@ static int adb_getattr(const char *path, struct stat *stbuf)
case S_IFLNK:
case S_IFDIR:
stbuf->st_size = 0;
- iDate = 3;
+ iDate = 5;
break;
}
@@ -551,7 +551,8 @@ static int adb_readdir(const char *path, void *buf, fuse_fill_dir_t filler,
// we can get e.g. "permission denied" during listing, need to check every line separately
if (!is_valid_ls_output(output.front())) {
// error format: "lstat '//efs' failed: Permission denied"
- if (!output.front().compare(output.front().length() - sizeof(PERMISSION_ERR_MSG) + 1,
+ if (output.front().length() > sizeof(PERMISSION_ERR_MSG) + 1 &&
+ !output.front().compare(output.front().length() - sizeof(PERMISSION_ERR_MSG) + 1,
sizeof(PERMISSION_ERR_MSG) - 1, PERMISSION_ERR_MSG)) {
size_t nameStart = output.front().rfind("/") + 1;
const string& fname_l = output.front().substr(nameStart, output.front().find("' ") - nameStart);
diff --git a/utils.h b/utils.h
index 7e64a71..cf509c8 100644
--- a/utils.h
+++ b/utils.h
@@ -164,7 +164,7 @@ queue<string> exec_command(const string& command)
while ( fgets( buff, sizeof buff, fp ) != NULL && !feof(fp) )
{
tmp_string.assign(buff);
- tmp_string.erase(tmp_string.size()-2);
+ tmp_string.erase(tmp_string.size()-1);
output.push(tmp_string);
}
thanks for the patch. I can confirm this works also reading data from my Nougat phone (Sony Xperia E5823) - my use case basically is just (r)syncing data from phone to laptop (Potos, Videos mainly).
I've got a similar problem here with a Samsung S7 Edge (after it got updated to Nougat):
--*-- exec_command: adb shell "ls" FUSE library version: 2.9.4 nullpath_ok: 0 nopath: 0 utime_omit_ok: 0 unique: 1, opcode: INIT (26), nodeid: 0, insize: 56, pid: 0 INIT: 7.23 flags=0x0003fffb max_readahead=0x00020000 INIT: 7.19 flags=0x00000011 max_readahead=0x00020000 max_write=0x00020000 max_background=0 congestion_threshold=0 unique: 1, success, outsize: 40 unique: 2, opcode: ACCESS (34), nodeid: 1, insize: 48, pid: 4858 access / 04 unique: 2, success, outsize: 16 unique: 3, opcode: LOOKUP (1), nodeid: 1, insize: 47, pid: 4858 LOOKUP /.Trash getattr /.Trash --*-- exec_command: adb shell "ls -l -a -d '/.Trash'" ls: /.Trash: No such file or directory unique: 3, error: -11 (Resource temporarily unavailable), outsize: 16 unique: 4, opcode: LOOKUP (1), nodeid: 1, insize: 52, pid: 4858 LOOKUP /.Trash-1000 getattr /.Trash-1000 --*-- exec_command: adb shell "ls -l -a -d '/.Trash-1000'" ls: /.Trash-1000: No such file or directory unique: 4, error: -11 (Resource temporarily unavailable), outsize: 16
Hint: there is no such file/directory named /Trash
(and without the device being rooted, I cannot create it either). As I use adbfs
for multiple devices and also for write access plus for pre-Nougat devices, the patch would break it for all but the S7 in my case, so I cannot use it. Any idea – or even solution on the horizon?
@kronenpj's patch works for my use case of just using this to copy files from the phone, which was all I needed, this is with a Nexus 5x on Android 8.0 (I've upgraded from 7.0 since initially filing this).
That's what I understood, @avar – but as I wrote, I'm using adbfs with multiple devices here copying in both directions. So I'd rather wait for a complete fix instead of half-fixing it for one device I rarely connect while breaking it for all devices I use regularly :wink:
@IzzySoft Yeah obviously a proper fix will need some sort of version detection.
@IzzySoft Thanks again. The patch works, however, it loses connection when performing activity. An example if the find command browsing all the directories. Before it completes all the directories it loosing connection and in the example posted below.
I'm bringing my reply to this issue as suggested.
$ find ~/mnt
/home/users/l/j/ljames/mnt/config/usb_gadget/g1/os_desc/use
/home/users/l/j/ljames/mnt/config/usb_gadget/g1/strings
/home/users/l/j/ljames/mnt/config/usb_gadget/g1/strings/0x409
/home/users/l/j/ljames/mnt/config/usb_gadget/g1/strings/0x409/manufacturer
/home/users/l/j/ljames/mnt/config/usb_gadget/g1/strings/0x409/product
/home/users/l/j/ljames/mnt/config/usb_gadget/g1/strings/0x409/serialnumber
/home/users/l/j/ljames/mnt/d
/home/users/l/j/ljames/mnt/data
/home/users/l/j/ljames/mnt/default.prop
/home/users/l/j/ljames/mnt/dev
/home/users/l/j/ljames/mnt/dev/.coldboot_done
/home/users/l/j/ljames/mnt/dev/.secure_storage
find: ‘/home/users/l/j/ljames/mnt/dev/0:0:0:0’: Software caused
connection abort
/home/users/l/j/ljames/mnt/dev/0:0:0:0
find: ‘/home/users/l/j/ljames/mnt/dev/0:0:0:1’: Transport endpoint is
not connected
/home/users/l/j/ljames/mnt/dev/0:0:0:1
find: ‘/home/users/l/j/ljames/mnt/dev/0:0:0:2’: Transport endpoint is
not connected
/home/users/l/j/ljames/mnt/dev/0:0:0:2
find: ‘/home/users/l/j/ljames/mnt/dev/0:0:0:3’: Transport endpoint is
not connected
/home/users/l/j/ljames/mnt/dev/0:0:0:3
find: ‘/home/users/l/j/ljames/mnt/dev/0:0:0:49456’: Transport endpoint
is not con
I really appreciate the word being done to resolve this issue. I'll keep up with the progress and report any findings on this end with the updated code and patches.
If I can provide any other helpful details or test, let me know.
-- L. James
-- L. D. James [email protected] www.apollo3.com/~ljames
@spion any news on this? Next device(s) pending to be upgraded, and I don't want to lose this way to access them properly.
Can anyone test if this the patch in pull request https://github.com/spion/adbfs-rootless/pull/21 is working?
Thanks Izzy for keeping this concern alive. I'll work provide feedback on how the updates work with the Samsung SG8.
-- L. James
-- L. D. James [email protected] www.apollo3.com/~ljames
On 01/16/2018 06:08 AM, Izzy wrote:
@spion https://github.com/spion any news on this? Next device(s) pending to be upgraded, and I don't want to lose this way to access them properly.
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/spion/adbfs-rootless/issues/14#issuecomment-357927719, or mute the thread https://github.com/notifications/unsubscribe-auth/AToo2xVW4_HoQb9nzf9NhnMyefux0eU3ks5tLIMYgaJpZM4JyIUq.
@spion Thanks for picking up! I currently have no N/O device at hand. Luckily it seems like @apollothethird will check. But from the PR's description:
Creation and writes will very likely fail and this probably breaks compatibility with Marshmallow and below.
I've got a mix of devices. If it breaks things for MM and below, that wouldn't be good. Might be possible to work around by first checking the Android version and then deciding which branch to execute? Also, it seems to be read-only support, so it would need some more work.
@spion It doesn't work with the Samsung Galaxy S8 under Ubuntu 16.04 LTS. It also fails to work with my Galaxy TAB A, which works with the unpatched version.
I'm wondering, which android device are you working with?
-- L. James
-- L. D. James [email protected] www.apollo3.com/~ljames
On 01/16/2018 02:35 PM, Gorgi Kosev wrote:
Can anyone test if this patch is working?
#21 https://github.com/spion/adbfs-rootless/pull/21
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/spion/adbfs-rootless/issues/14#issuecomment-358078825, or mute the thread https://github.com/notifications/unsubscribe-auth/AToo2_T5MYWUfUOn1aagA7cZqKX108s_ks5tLPn8gaJpZM4JyIUq.
I still have my old LG G3, which only goes up to Android 6.0
I'll try to put some time into this project next weekend, since I might get access to an S8.
Okay this should now work on Android 7.0 as of https://github.com/spion/adbfs-rootless/commit/fc00979f3b61cb9a98850a363bb2339428399de7
Thanks Gorgi!!!
@apollothethird can you confirm? Does it work read/write on all Android versions (up to 7; versions before 4.x are not really that relevant I'd say – important is down to LP or maybe KK)?
Sorry. I was away from my shop. I'll check it ASAP and get back with you.
-- L. James
-- L. D. James [email protected] www.apollo3.com/~ljames
On 01/17/2018 03:13 AM, Izzy wrote:
@apollothethird https://github.com/apollothethird can you confirm? Does it work read/write on all Android versions (up to 7; versions before 4.x are not really that relevant I'd say – important is down to LP or maybe KK)?
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/spion/adbfs-rootless/issues/14#issuecomment-358229024, or mute the thread https://github.com/notifications/unsubscribe-auth/AToo2yclXbVmrCrI6HYNP0H5DGkElTodks5tLauugaJpZM4JyIUq.
@spion @IzzySoft It works on Both the Samsung Galaxy S8 and my Galaxy Tab A.
-- L. James
-- L. D. James [email protected] www.apollo3.com/~ljames
@apollothethird Both read and write? And which Android versions are on them? I cannot currently test as I'm not at home – but as soon as I am and find some time, I'll check for KK, LP and MM (if I'm lucky, I get a chance to check N as well).
@IzzySoft Read is alright. Writing isn't working. Maybe I'm doing something wrong. Tell me if there's something I can check.
From the adb shell
I can do this (the lines starting with the $
are commands, the ones without is the output`:
$ cd /sdcard
$ mkdir test
$ ls -ld test
drwxrwx--x 2 root sdcard_rw 4096 2018-01-17 08:13 test
From the Ubuntu commandline of the sshfs mount I get this:
$ cd ~/mnt/sdcard
$ mkdir test1
mkdir: cannot create directory ‘test1’: Resource temporarily unavailable
$ ls -ld test*
drwxrwx--x 2 root 98 0 Jan 17 08:13 test
The Ubuntu file browser has reads, but can not write to the sshfs mount either.
If there's a method for writing to the device, let me know and I'll test those steps.
By the way, if I try to use the sudo
command to write to the mount, it also fails with this error:
mkdir: cannot create directory ‘test1’: Permission denied
The Samsung GS8 is android version 7.0. The Samsung Tab A is android version 5.1.1
-- L. James
-- L. D. James [email protected] www.apollo3.com/~ljames
I wonder what the output of ./adbfs -f
is for that situtaion where the directory creation fails.
I tried writes as well and they do work here.
edit: I added another fix that deals with a trouble caused by non-existent files
@spion I ran this ./adbfs -f ~/mnt >adbfs.out 2>&1
. A few lines before and after the mkdir test1
command is:
adb_readlink
from cache /sdcard
adb_readlink lrwxrwxrwx 1 root root 21 1969-12-31 19:00 /sdcard -> /storage/self/primary
adb_getattr
--*-- exec_command: adb shell "ls -l -a -d '/storage'"
adb_getattr
--*-- exec_command: adb shell "ls -l -a -d '/storage/self'"
adb_getattr
--*-- exec_command: adb shell "ls -l -a -d '/storage/self/primary'"
adb_readlink
from cache /storage/self/primary
adb_readlink lrwxrwxrwx 1 root root 19 2017-10-13 20:50 /storage/self/primary -> /mnt/user/0/primary
adb_getattr
--*-- exec_command: adb shell "ls -l -a -d '/mnt'"
adb_getattr
--*-- exec_command: adb shell "ls -l -a -d '/mnt/user'"
adb_getattr
--*-- exec_command: adb shell "ls -l -a -d '/mnt/user/0'"
adb_getattr
--*-- exec_command: adb shell "ls -l -a -d '/mnt/user/0/primary'"
adb_readlink
from cache /mnt/user/0/primary
adb_readlink lrwxrwxrwx 1 root root 19 2018-01-16 15:42 /mnt/user/0/primary -> /storage/emulated/0
adb_getattr
--*-- exec_command: adb shell "ls -l -a -d '/storage/emulated'"
adb_getattr
--*-- exec_command: adb shell "ls -l -a -d '/storage/emulated/0'"
adb_readlink
from cache /sdcard
adb_readlink lrwxrwxrwx 1 root root 21 1969-12-31 19:00 /sdcard -> /storage/self/primary
adb_readlink
from cache /storage/self/primary
adb_readlink lrwxrwxrwx 1 root root 19 2017-10-13 20:50 /storage/self/primary -> /mnt/user/0/primary
adb_readlink
from cache /mnt/user/0/primary
adb_readlink lrwxrwxrwx 1 root root 19 2018-01-16 15:42 /mnt/user/0/primary -> /storage/emulated/0
adb_getattr
ls: /storage/emulated/0/test1: No such file or directory
--*-- exec_command: adb shell "ls -l -a -d '/storage/emulated/0/test1'"
--*-- exec_command: rm -rf /tmp/adbfs-6J8AZR/
The full output of the command is adbfs.out.txt.
-- L. James
-- L. D. James [email protected] www.apollo3.com/~ljames