GloDroid / glodroid_manifest

Android port that aims to bring both user- and developer-friendly experience in using AOSP with a set of single-board computers (SBC), phones and other devices.
471 stars 67 forks source link

RPi4 have no access to sdcard #55

Closed matviizorin closed 4 years ago

matviizorin commented 4 years ago

After changing the directory to /sdcard other adb shell command we can see the log below:

sdcard ``` rpi4:/ $ cd sdcard /system/bin/sh: cd: /sdcard: No such file or directory ```

sdcard refers to /mnt/user/0 path (/sdcard -> /storage/self/primary -> /mnt/user/0/primary) but containing folder is empty:

folder content ``` rpi4:/ # ls -la /mnt/user/0 total 0 drwxr-x--x 2 root root 40 1970-01-01 00:00 . drwxr-xr-x 3 root root 60 1970-01-01 00:00 .. ```

Also, creating a file on the target device fails with the folowing list of errors in adb logcat:

logcat ``` 07-08 09:03:17.299 2160 2179 E DatabaseUtils: Writing exception to parcel 07-08 09:03:17.299 2160 2179 E DatabaseUtils: java.lang.IllegalArgumentException: Parent document isn't a directory 07-08 09:03:17.299 2160 2179 E DatabaseUtils: at com.android.internal.content.FileSystemProvider.createDocument(FileSystemProvider.java:239) 07-08 09:03:17.299 2160 2179 E DatabaseUtils: at com.android.providers.downloads.DownloadStorageProvider.createDocument(DownloadStorageProvider.java:205) 07-08 09:03:17.299 2160 2179 E DatabaseUtils: at android.provider.DocumentsProvider.callUnchecked(DocumentsProvider.java:1121) 07-08 09:03:17.299 2160 2179 E DatabaseUtils: at android.provider.DocumentsProvider.call(DocumentsProvider.java:1067) 07-08 09:03:17.299 2160 2179 E DatabaseUtils: at android.content.ContentProvider.call(ContentProvider.java:2152) 07-08 09:03:17.299 2160 2179 E DatabaseUtils: at android.content.ContentProvider$Transport.call(ContentProvider.java:477) 07-08 09:03:17.299 2160 2179 E DatabaseUtils: at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:277) 07-08 09:03:17.299 2160 2179 E DatabaseUtils: at android.os.Binder.execTransactInternal(Binder.java:1021) 07-08 09:03:17.299 2160 2179 E DatabaseUtils: at android.os.Binder.execTransact(Binder.java:994) 07-08 09:03:17.301 3840 3895 W DocumentsContract: Failed to create document 07-08 09:03:17.301 3840 3895 W DocumentsContract: java.lang.IllegalArgumentException: Parent document isn't a directory 07-08 09:03:17.301 3840 3895 W DocumentsContract: at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:170) 07-08 09:03:17.301 3840 3895 W DocumentsContract: at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:140) 07-08 09:03:17.301 3840 3895 W DocumentsContract: at android.content.ContentProviderProxy.call(ContentProviderNative.java:658) 07-08 09:03:17.301 3840 3895 W DocumentsContract: at android.content.ContentProviderClient.call(ContentProviderClient.java:558) 07-08 09:03:17.301 3840 3895 W DocumentsContract: at android.content.ContentResolver.call(ContentResolver.java:2032) 07-08 09:03:17.301 3840 3895 W DocumentsContract: at android.provider.DocumentsContract.createDocument(DocumentsContract.java:1327) 07-08 09:03:17.301 3840 3895 W DocumentsContract: at com.android.documentsui.CreateDirectoryFragment$CreateDirectoryTask.doInBackground(CreateDirectoryFragment.java:151) 07-08 09:03:17.301 3840 3895 W DocumentsContract: at com.android.documentsui.CreateDirectoryFragment$CreateDirectoryTask.doInBackground(CreateDirectoryFragment.java:127) 07-08 09:03:17.301 3840 3895 W DocumentsContract: at android.os.AsyncTask$3.call(AsyncTask.java:378) 07-08 09:03:17.301 3840 3895 W DocumentsContract: at java.util.concurrent.FutureTask.run(FutureTask.java:266) 07-08 09:03:17.301 3840 3895 W DocumentsContract: at com.android.documentsui.ProviderExecutor.run(ProviderExecutor.java:104) 07-08 09:03:17.303 3840 3895 W Documents: Failed to create directory 07-08 09:03:17.303 3840 3895 W Documents: java.lang.IllegalArgumentException: Parent document isn't a directory 07-08 09:03:17.303 3840 3895 W Documents: at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:170) 07-08 09:03:17.303 3840 3895 W Documents: at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:140) 07-08 09:03:17.303 3840 3895 W Documents: at android.content.ContentProviderProxy.call(ContentProviderNative.java:658) 07-08 09:03:17.303 3840 3895 W Documents: at android.content.ContentProviderClient.call(ContentProviderClient.java:558) 07-08 09:03:17.303 3840 3895 W Documents: at android.content.ContentResolver.call(ContentResolver.java:2032) 07-08 09:03:17.303 3840 3895 W Documents: at android.provider.DocumentsContract.createDocument(DocumentsContract.java:1327) 07-08 09:03:17.303 3840 3895 W Documents: at com.android.documentsui.CreateDirectoryFragment$CreateDirectoryTask.doInBackground(CreateDirectoryFragment.java:151) 07-08 09:03:17.303 3840 3895 W Documents: at com.android.documentsui.CreateDirectoryFragment$CreateDirectoryTask.doInBackground(CreateDirectoryFragment.java:127) 07-08 09:03:17.303 3840 3895 W Documents: at android.os.AsyncTask$3.call(AsyncTask.java:378) 07-08 09:03:17.303 3840 3895 W Documents: at java.util.concurrent.FutureTask.run(FutureTask.java:266) 07-08 09:03:17.303 3840 3895 W Documents: at com.android.documentsui.ProviderExecutor.run(ProviderExecutor.java:104) ```
rsglobal commented 4 years ago

v0.3.0 uses kernel v5.7 for broadcom platform. Starting from kernel v5.7 sdcardfs is not provided by Google, but required for Android up to v10

Best solution for now is to move to v5.4 stable. Both Google [1] and Broadcom [2] supports it.

[1] - https://android.googlesource.com/kernel/common/+/refs/heads/android-5.4-stable [2] - https://github.com/raspberrypi/linux/tree/rpi-5.4.y

matviizorin commented 4 years ago

Thanks, I'm going to change the kernel version in the nearest time

rsglobal commented 4 years ago

https://github.com/lineage-rpi/android_kernel_brcm_rpi/tree/lineage-17.1

rsglobal commented 4 years ago

This commits have to be reverted for enabling sdcardfs starting from v5.7. I've successfully done it for PP on kernel v5.8

584c54745dab Revert "ANDROID: vfs: Add setattr2 for filesystems with per mount permissions"
c3271fe2811c Revert "ANDROID: vfs: Add permission2 for filesystems with per mount permissions"
972cde43ff77 Revert "ANDROID: vfs: add d_canonical_path for stacked filesystem support"
e9aaf35681c2 Revert "ANDROID: fs: Restore vfs_path_lookup() export"
a96c98dd7a30 ANDROID: sdcardfs: remove sdcardfs from system
6883a1e06ba8 Revert "ANDROID: fscrypt: add key removal notifier chain"
matviizorin commented 4 years ago

I've got an issue with composition committing after migrating to v5.8 with android-mainline-tracking patches.

logcat ``` 08-07 07:24:25.591 197 197 E hwc-drm-display-compositor: Commit test failed for display 0, FIXME 08-07 07:24:25.591 197 197 E hwc-drm-two: Failed to apply the frame composition ret=-13 08-07 07:24:25.591 205 205 E HWComposer: presentAndGetReleaseFences: present failed for display 0: BadParameter (4) ```

Trying to investigate and fix this issue.

matviizorin commented 4 years ago

I've cherry-picked the commit for DRM driver to support Android (https://github.com/GloDroid/glodroid_forks/commit/2fe6160b72530189a0f965eee5435adf86cf350a) and as for now, the composition creation works properly. WIP branch is pushed to the fork as a result (kernel-broadcom-next).

rsglobal commented 4 years ago

Pushed to https://github.com/GloDroid/glodroid_forks/tree/kernel-broadcom-next Thank you for you efforts.