Search This thread

Hooin Kyoma

Member
Jun 23, 2012
35
81
Is this project discontinued? Last update almost a year ago.

Ok, I downloaded latest version (2019.1.23) and installed it on my Lineage OS 17.1 (Android 10) with Magisk v20.2, and... spent two days for manage it to work... Meh, it'd be better to not even start.

Fist of, it simply hasn't been installed properly on my system (no binaries, no scripts, only info/config examples), so I downloaded latest update-binary, saved it as is (without modifications), and manually converted config.sh to install.sh (using aka "legacy script" logic) (fix1-fix2) customize.sh (fix3).

Secondly, fstype binary doesn't detect FAT (vfat/exfat/sdfat) on my system, so I added extra check to part() function in core.sh: in case if fstype has not detected FS, let mount detect it automatically (omit -t).

Next, grep /storage/emulated /proc/mounts | grep -Eiq ' sdcardfs | fuse ' || exit 1 line in wait_until_true() function instanly exit script on boot, I guess it's because it starts too early on my system. So I replaced "exit" with waiting loop.

After all this modifications and countless hours of tries and errors I finally got what I wanted - move (bind) some internal folders to encrypted second partiton of my external SD card.

/data/adb/fbind/config.txt:
Code:
part -o umask=0 /dev/block/mmcblk1p2--L,MyLoNgPaSsWoRd /mnt/sdcrypt
extsd_path /mnt/sdcrypt
target DCIM
target Audio
target TitaniumBackup

I found using umask=0 on FAT is a most painless way to deal with apps permissions to use binded folders. Less secure though. I logically understand that fbind should take care of access to binded folders, but it looks like something changed lately in Android's storage "magic", which is not clear to me, so... umask=0. Tried other mountpoints like /mnt/media_rw/sdcrypt or /storage/sdcrypt, tried ext4 instead of exfat, but all that caused even more problems with permissions. I'd appreciate any advice about better mountpoint and options to use.
Got an infinite bootloop when I used to use FUSE (which is happen automatically when I add something like "intsd_path /storage/emulated/0" in config.txt), thanks god we have TWRP.

I attached modified zip-file in case if anyone interested (not sure If I had right to do this tho, I will remove it if OP or moderators ask), magisk-only.
DISCLAIMER: I'm very new to module coding and coding in general, I'm just an experienced Linux user, so I can't guarantee that my modifications are 100% correct and universal, test it on your own risk.

UPD: new "fix2" version with some fixes.
UPD2: new "fix3" version: magisk 20.4 support and others changes.
UPD3: new "fix4" version: small bugfixes and simplified code (info).
 
Last edited:

otyg

Senior Member
Apr 5, 2013
670
421
Is this project discontinued? Last update almost a year ago.
I attached modified zip-file in case if anyone interested (not sure If I had right to do this tho, I will remove it if OP or moderators ask), magisk-only.
.

Thanks, I'm not sure if VR25 abandoned it, such a awesome module I have been using it since it came out...even works on android 10 (with some mods), so I don't know why he hasn't updated it.

yeah something changed with Magisk 20.2+, it used to install ok on magisk 20.1 , your mod installs on the latest magisk so that's good, it almost worked for me (fixed the exit 1 code, but still failed to mount), I had to add a extra 'sleep 30' delay into service.sh above the "set -x" command- before it runs the main script, now it's working., I guess with android 10 the /proc/mounts doesn't become available until the system is booted? or just a race condition....., but anyways thanks for fixing it up for the latest magisk.
 
Last edited:

duromx

Member
Jan 2, 2017
8
2
Is this project discontinued? Last update almost a year ago.

Ok, I downloaded latest version (2019.1.23) and installed it on my Lineage OS 17.1 (Android 10) with Magisk v20.2, and... spent two days for manage it to work... Meh, it'd be better to not even start.

Fist of, it simply hasn't been installed properly on my system (no binaries, no scripts, only info/config examples), so I downloaded latest update-binary, saved it as is (without modifications), and manually converted config.sh to install.sh (using aka "legacy script" logic).

Secondly, fstype binary doesn't detect FAT (vfat/exfat/sdfat) on my system, so I added extra check to part() function in core.sh: in case if fstype has not detected FS, let mount detect it automatically (omit -t).

Next, grep /storage/emulated /proc/mounts | grep -Eiq ' sdcardfs | fuse ' || exit 1 line in wait_until_true() function instanly exit script on boot, I guess it's because it starts too early on my system. So I replaced "exit" with waiting loop.

After all this modifications and countless hours of tries and errors I finally got what I wanted - move (bind) some internal folders to encrypted second partiton of my external SD card.

/data/adb/fbind/config.txt:


I found using umask=0 is a most painless way to deal with apps permissions to use binded folders. Less secure though. I logically understand that fbind should take care of access to binded folders, but it looks like something changed lately in Android's storage "magic", which is not clear to me, so... umask=0. Tried other mountpoints like /mnt/media_rw/sdcrypt or /storage/sdcrypt, tried ext4 instead of exfat, but all that caused even more problems with permissions. I'd appreciate any advice about better mountpoint and options to use.
I currently boot my phone with kernel security (selinux) in permissive mode, if it's important.
Got an infinite bootloop when I used to use FUSE (which is happen automatically when I add something like "intsd_path /storage/emulated/0" in config.txt), thanks god we have TWRP.

I attached modified zip-file in case if anyone interested (not sure If I had right to do this tho, I will remove it if OP or moderators ask), magisk-only.
DISCLAIMER: I'm very new to module coding and coding in general, I'm just an experienced Linux user, so I can't guarantee that my modifications are 100% correct and universal, test it on your own risk.

Thanks for your fix. A few days ago magisk got updated and the module stopped working, I tried everything without success until I read your post.

I downloaded the zip, installed, and it's working again.

Thank you very much.
 

fred.lyon

Member
May 30, 2007
13
1
Lyon
Sony Xperia X
Is this project discontinued? Last update almost a year ago.
...
I attached modified zip-file in case if anyone interested (not sure If I had right to do this tho, I will remove it if OP or moderators ask), magisk-only.
DISCLAIMER: I'm very new to module coding and coding in general, I'm just an experienced Linux user, so I can't guarantee that my modifications are 100% correct and universal, test it on your own risk.

Thanks! For me also, your fix has reactivated fbind.
:good:
 

Hooin Kyoma

Member
Jun 23, 2012
35
81
I had to add a extra 'sleep 30' delay into service.sh above the "set -x" command- before it runs the main script, now it's working., I guess with android 10 the /proc/mounts doesn't become available until the system is booted? or just a race condition
I think I found a possible reason why script exits on boot in your system: in case if you're using ordinary SD card as external storage (most common case), in apply_config() function (called from service.sh) "$altExtsd || default_extsd" line will exit script if your SD card not ready/mounted yet. I don't know how to check external media mounting process status in Android, but here is kind of WORKAROUND: explicitly set "extsd_path /mnt/media_rw/<your_card_blkid>" in config.txt. And to be sure that external SD card and sdcardfs mounted before continue, I added wait_until_true is_mounted "$1" to extsd_path() function. This should allow to use this "workaround" without need to modify code and overall a better/more universal approach than just sleep 30 seconds. Need testing though.

Also I modified loop() function (for those who using file as storage instead of device): now it checks presense of /sbin/imgtool before run it (my system don't have it), if not present - use losetup/mount combo to mount file. And added FS type check, thus loop is not limited to ext4 anymore.

Added "fix2" version of modified module to my previous post.
Hope some day VR25 will find a time to sort out all this stuff and released new version =)
-------
Hmm, no, default_extsd should not trigger exit even if your SD card not available on boot, because it consist wait_until_true grep -q /mnt/media_rw /proc/mounts line, which is waiting until both /proc/mounts AND at least one of your external storages became mounted. So I don't know the reason. Need to see your log at least.
But fixes added in "fix2" are still usefull.
 
Last edited:

freeman_108

Senior Member
Oct 23, 2007
75
4
Works with latest Magisk again Thanks.

Your version fix2 works with latest magisk thanks for your effort.

I think I found a possible reason why script exits on boot in your system: in case if you're using ordinary SD card as external storage (most common case), in apply_config() function (called from service.sh) "$altExtsd || default_extsd" line will exit script if your SD card not ready/mounted yet. I don't know how to check external media mounting process status in Android, but here is kind of WORKAROUND: explicitly set "extsd_path /mnt/media_rw/<your_card_blkid>" in config.txt. And to be sure that external SD card and sdcardfs mounted before continue, I added wait_until_true is_mounted "$1" to extsd_path() function. This should allow to use this "workaround" without need to modify code and overall a better/more universal approach than just sleep 30 seconds. Need testing though.

Also I modified loop() function (for those who using file as storage instead of device): now it checks presense of /sbin/imgtool before run it (my system don't have it), if not present - use losetup/mount combo to mount file. And added FS type check, thus loop is not limited to ext4 anymore.

Added "fix2" version of modified module to my previous post.
Hope some day VR25 will find a time to sort out all this stuff and released new version =)
-------
Hmm, no, default_extsd should not trigger exit even if your SD card not available on boot, because it consist wait_until_true grep -q /mnt/media_rw /proc/mounts line, which is waiting until both /proc/mounts AND at least one of your external storages became mounted. So I don't know the reason. Need to see your log at least.
But fixes added in "fix2" are still usefull.
 

AllesMeins

Member
Jan 17, 2015
19
2
/system/bin/sh: fbind: not found

I've been using fbind for a long time but this time I can't get it to work. I recently wiped my phone and did a complete reinstall. And as usual I installed fbind (first per magisk, later I tried it per TWRP as well). There where no errors and the files in /data/adb/fbind where created as usual. I did an reboot but can't get fbind to run. It does nothing, doesn't create any logs, doesn't show up in logcat and if I call it from the terminal all I get is

$ fbind
/system/bin/sh: fbind: not found

So I'm guessing something didn't install correctly or is broken somewhere else. But I'm not experienced enough to fix it myself. Any help to track this down is appreciated

I'm using:

lineageOS 16.0 (Thats an Android 9)
fbind-2019.1.23
Magisk 20.3
Magisk Manager 7.5.1
TWRP 3.3.1.0

EDIT:
Found an extremly ugly hack to fix it for me. I read through the install-script and pushed the missing files from the zip to the right place myself. I was surprised but it seems to have worked:

./adb push common/fbind /system/xbin/
./adb push bin/cryptsetup_arm /system/etc/fbind/bin/cryptsetup
./adb push bin/fstype_arm /system/etc/fbind/bin/fstype
./adb push common/core.sh fbind/module.prop /system/etc/fbind/
./adb push common/service.sh /system/etc/fbind/autorun.sh
./adb push common/addon.d.sh /system/addon.d/fbind.sh

Finaly set the proper rights

chown 0:0 /system/*bin/fbind /system/etc/fbind/bin/cryptsetup /system/etc/fbind/bin/fstype
chmod 0755 /system/*bin/fbind /system/etc/fbind/bin/cryptsetup /system/etc/fbind/bin/fstype
ln -sf /system/etc/fbind/autorun.sh /system/etc/init.d/fbind
chown 0:0 /system/etc/fbind/autorun.sh /system/addon.d/fbind.sh
chmod 0755 /system/etc/fbind/autorun.sh /system/addon.d/fbind.sh
 
Last edited:
  • Like
Reactions: hurray
I've been using fbind for a long time but this time I can't get it to work. I recently wiped my phone and did a complete reinstall. And as usual I installed fbind (first per magisk, later I tried it per TWRP as well). There where no errors and the files in /data/adb/fbind where created as usual. I did an reboot but can't get fbind to run. It does nothing, doesn't create any logs, doesn't show up in logcat and if I call it from the terminal all I get is



So I'm guessing something didn't install correctly or is broken somewhere else. But I'm not experienced enough to fix it myself. Any help to track this down is appreciated

I'm using:

lineageOS 16.0 (Thats an Android 9)
fbind-2019.1.23
Magisk 20.3
Magisk Manager 7.5.1
TWRP 3.3.1.0

https://forum.xda-developers.com/ap...rging-switch-cs-v2017-9-t3668427/post81561739
 

0LDST4R

Senior Member
May 2, 2018
310
224
LE/Germany
I've been using fbind for a long time but this time I can't get it to work. I recently wiped my phone and did a complete reinstall. And as usual I installed fbind (first per magisk, later I tried it per TWRP as well). There where no errors and the files in /data/adb/fbind where created as usual. I did an reboot but can't get fbind to run. It does nothing, doesn't create any logs, doesn't show up in logcat and if I call it from the terminal all I get is



So I'm guessing something didn't install correctly or is broken somewhere else. But I'm not experienced enough to fix it myself. Any help to track this down is appreciated

I'm using:

lineageOS 16.0 (Thats an Android 9)
fbind-2019.1.23
Magisk 20.3
Magisk Manager 7.5.1
TWRP 3.3.1.0

EDIT:
Found an extremly ugly hack to fix it for me. I read through the install-script and pushed the missing files from the zip to the right place myself. I was surprised but it seems to have worked:



Finaly set the proper rights


I noticed this too in Magisk 20.3 when i setup a new system. My "workaround" is to flash Magisk 20.1, fbind is working there, then - with fbind installed - do the Update to Magisk 20.3.
 

android666

Senior Member
Jun 19, 2010
93
19
I tried original and modded fbind, installed under Magisk 20.1 also 20.3 (upgraded/direct 20.3), fbind looks to be installed, but does not work with latest Android10 (Lineage17.1) on Sony Xperia Z1C. My ext4 SD is not recognized/mounted.
 

Hooin Kyoma

Member
Jun 23, 2012
35
81
I tried original and modded fbind, installed under Magisk 20.1 also 20.3 (upgraded/direct 20.3), fbind looks to be installed, but does not work with latest Android10 (Lineage17.1) on Sony Xperia Z1C. My ext4 SD is not recognized/mounted.
I use my fixed version of fbind (that you can get here) with Magisk 20.3 and latest Lineage 17.1 on my Xperia Z3C without any problems. But I had problems with permissions using ext4, so I switched to exfat. If you use my fixed version, you can attach fbind's config (/data/adb/fbind/config.txt) and log (/data/adb/fbind/logs/fbind-boot-*.log), I will try to manage what's happening. I'm not a developer though.
 

android666

Senior Member
Jun 19, 2010
93
19
Sony X Z1C - Fbind ext4 (LOS17.1)

Thank you for reviewing and advice how to fix my troubles ...
 

Attachments

  • Fbind-log.zip
    2.3 KB · Views: 39

Hooin Kyoma

Member
Jun 23, 2012
35
81
Your config is wrong! Read carefully CONFIG SYNTAX section of the first post.
For example, if your SD have only one ext4 partition, your config should look like:
Code:
part -o nodev,noexec,nosuid,noatime /dev/block/mmcblk1p1 /mnt/sdcard
extsd_path /mnt/sdcard
target Viber
(this is an example to bind internal Viber directory to same folder on external EXT4 partition)
And I'd recommend to use exfat as a file system on SD partitions, because of problems with permissions. But it's only my experience, may be you will lucky with ext4.
 

The_Walking_Playground

Senior Member
Nov 30, 2017
653
346
Is this project discontinued? Last update almost a year ago.

Ok, I downloaded latest version (2019.1.23) and installed it on my Lineage OS 17.1 (Android 10) with Magisk v20.2, and... spent two days for manage it to work... Meh, it'd be better to not even start.

Fist of, it simply hasn't been installed properly on my system (no binaries, no scripts, only info/config examples), so I downloaded latest update-binary, saved it as is (without modifications), and manually converted config.sh to install.sh (using aka "legacy script" logic).

Secondly, fstype binary doesn't detect FAT (vfat/exfat/sdfat) on my system, so I added extra check to part() function in core.sh: in case if fstype has not detected FS, let mount detect it automatically (omit -t).

Next, grep /storage/emulated /proc/mounts | grep -Eiq ' sdcardfs | fuse ' || exit 1 line in wait_until_true() function instanly exit script on boot, I guess it's because it starts too early on my system. So I replaced "exit" with waiting loop.

After all this modifications and countless hours of tries and errors I finally got what I wanted - move (bind) some internal folders to encrypted second partiton of my external SD card.

/data/adb/fbind/config.txt:


I found using umask=0 on FAT is a most painless way to deal with apps permissions to use binded folders. Less secure though. I logically understand that fbind should take care of access to binded folders, but it looks like something changed lately in Android's storage "magic", which is not clear to me, so... umask=0. Tried other mountpoints like /mnt/media_rw/sdcrypt or /storage/sdcrypt, tried ext4 instead of exfat, but all that caused even more problems with permissions. I'd appreciate any advice about better mountpoint and options to use.
I currently boot my phone with kernel security (selinux) in permissive mode, if it's important.
Got an infinite bootloop when I used to use FUSE (which is happen automatically when I add something like "intsd_path /storage/emulated/0" in config.txt), thanks god we have TWRP.

I attached modified zip-file in case if anyone interested (not sure If I had right to do this tho, I will remove it if OP or moderators ask), magisk-only.
DISCLAIMER: I'm very new to module coding and coding in general, I'm just an experienced Linux user, so I can't guarantee that my modifications are 100% correct and universal, test it on your own risk.

UPD: new "fix2" version with some fixes.
Hi,

Is there a version of this updated zip for the latest Magisk Canary? The existing one fails to install.

TWP
 

zdoe

Senior Member
Feb 11, 2011
282
20
i tried the @Hooin Kyoma version. the sd card would not mount at all, and the system wanted to format it. and uninstall efforts or restoring twrp-backups would not work and eventually boot-looped the phone.

haven't had time to play with it since, but yes, i depend on fbind and would like it to work.

xiaomi a2 lite, android 9.
 
Last edited:

android666

Senior Member
Jun 19, 2010
93
19
I have ext4 already with data on it and a hardcore Linux.ext4 fan .
Howz this goin with ext4 any FB ?
Big thanks for help "Hooin Kyoma", but at this moment I can not continue on Android10 due to: I need phone for daily bussiness, be in touch, use several bussines appl. need more time when i'm not oncall duty.... Curious that on Android9 I did not modified anything, running on default FBind and all worked fine. I'll test ASAP, when I get little time space (run A9 twrp backup, twrp A10 restore, test -> decide continue with A10 or go back to A9).
 

Top Liked Posts

  • There are no posts matching your filters.
  • 41
    ### No, I'm Not Dead! ###

    I know, I know... it's been quite a while. Well, yeah, maybe longer than that...

    Not gonna write a book on this. Lets just say it's HARD to access the internet on a regular basis from my current location. Plus, I've been busy with general life matters.
    That said, my online presence will still remain limited for a while. It won't be that much limited anymore, though. So... yay!



    ### Latest Changes ###

    F2FS Loopback Bug Workaround
    Magic GApps
    Magisk Manager for Recovery Mode
    Moto Z Play Dual SIM Mode Enabler
    Sysconfig Patcher
    Systemless Camera NX Mod
    - Fixed modPath detection & bad PATH variable issues (Magisk V16.6).
    - Updated documentation

    Magic Charging Switch (mcs)
    - Enhanced debugging function.
    - Fixed "automation config still calling `cs` instead of `mcs`."
    - Fixed modPath detection & bad PATH variable issues (Magisk V16.6).
    - Updated charging switches database (more devices supported)
    - Reliability improvements
    - Updated documentation

    Magic Folder Binder (fbind)
    - Ability to unmount loop devices and partitions on demand (i.e., fbind -u 'pattern1|pattern2|pattern...').
    - Better loop device mounting logic ("ugly bugs" fixed)
    - Bind-mount folders automatically regardless of --L (LUKS) flag's usage.
    - Dedicated logs dir -- /data/media/fbind/logs (easier & advanced debugging)
    - Deprecated `fbind -l` in favor of `fbind -i` (outputs much more information)
    - Fixed "misleading [N/A] mount status".
    - Fixed modPath detection & bad PATH variable issues (Magisk V16.6).
    - Fixed "rm -rf not affecting hidden files/folders" in data moving functions.
    - Ignore `app_data` line whose target apk is missing (to avoid app data loss).
    - Option to mount app_data in ext4 .img file (loop device)
    - Shipping with a comprehensive, noob-friendly tutorial (tutorial.txt, /data/media/fbind/info/tutorial.txt)
    - Reliability improvements (better data loss protection algorithms)
    - Updated documentation
    - Using `rsync -a` for advanced copy operations, instead of `cp -a`.



    ### Last, but Far from Least ###

    Will update each project's thread and repository & answer queries at my earliest (uh... maybe a little late) convenience.
    Meanwhile, everything you need is in the attached zip. Yes, all modules are there, along with a md5sum.

    P.S., To everyone who donated and/or contributed in other ways,
    -- Thank you very much!
    19
    Is this project discontinued? Last update almost a year ago.

    Ok, I downloaded latest version (2019.1.23) and installed it on my Lineage OS 17.1 (Android 10) with Magisk v20.2, and... spent two days for manage it to work... Meh, it'd be better to not even start.

    Fist of, it simply hasn't been installed properly on my system (no binaries, no scripts, only info/config examples), so I downloaded latest update-binary, saved it as is (without modifications), and manually converted config.sh to install.sh (using aka "legacy script" logic) (fix1-fix2) customize.sh (fix3).

    Secondly, fstype binary doesn't detect FAT (vfat/exfat/sdfat) on my system, so I added extra check to part() function in core.sh: in case if fstype has not detected FS, let mount detect it automatically (omit -t).

    Next, grep /storage/emulated /proc/mounts | grep -Eiq ' sdcardfs | fuse ' || exit 1 line in wait_until_true() function instanly exit script on boot, I guess it's because it starts too early on my system. So I replaced "exit" with waiting loop.

    After all this modifications and countless hours of tries and errors I finally got what I wanted - move (bind) some internal folders to encrypted second partiton of my external SD card.

    /data/adb/fbind/config.txt:
    Code:
    part -o umask=0 /dev/block/mmcblk1p2--L,MyLoNgPaSsWoRd /mnt/sdcrypt
    extsd_path /mnt/sdcrypt
    target DCIM
    target Audio
    target TitaniumBackup

    I found using umask=0 on FAT is a most painless way to deal with apps permissions to use binded folders. Less secure though. I logically understand that fbind should take care of access to binded folders, but it looks like something changed lately in Android's storage "magic", which is not clear to me, so... umask=0. Tried other mountpoints like /mnt/media_rw/sdcrypt or /storage/sdcrypt, tried ext4 instead of exfat, but all that caused even more problems with permissions. I'd appreciate any advice about better mountpoint and options to use.
    Got an infinite bootloop when I used to use FUSE (which is happen automatically when I add something like "intsd_path /storage/emulated/0" in config.txt), thanks god we have TWRP.

    I attached modified zip-file in case if anyone interested (not sure If I had right to do this tho, I will remove it if OP or moderators ask), magisk-only.
    DISCLAIMER: I'm very new to module coding and coding in general, I'm just an experienced Linux user, so I can't guarantee that my modifications are 100% correct and universal, test it on your own risk.

    UPD: new "fix2" version with some fixes.
    UPD2: new "fix3" version: magisk 20.4 support and others changes.
    UPD3: new "fix4" version: small bugfixes and simplified code (info).
    17
    13
    Hi guys, I made new "fix3" version if anyone interested:
    - magisk 20.4 support (magisk 20.0+ is requied starting from this version)
    And some fixes for those who using partitions and/or images:
    - loop and part now support both EXT2/3/4 and FAT/exFAT file systems, and loop accepts mount options (loop -o ...) like part does
    - better detection file system of partitions and loop images (using blkid if fstype fails)
    - fixed problems with permissions when mounting (ex)FAT and EXTfs partitions/images (using better mount options, sdcardfs and more of android storage "views" black magic)
    You can part/loop directly to target folder (part /dev/block/mmcblk1p2 $intsd/Viber) or mount it aside (part /dev/block/mmcblk1p2 /mnt/flash), declare as $extsd (exstsd_path=/mnt/flash) and then bind/target folders (target Viber, from_to Viber .Viber, etc)

    Tested with Carbon 8.0 (Android 10, AOSP-based) on my ancient Xperia Z3 Compact
    zip-file attached to my original post

    JUST FOR INFO (UPDATED after "fix4" released in my next post below):
    Hardcoded mount options for initial mounting of partitions and loop images:
    for all FS: nosuid,nodev,noexec,context=u:eek:bject_r:sdcardfs:s0
    + for (ex)FAT: uid=0,gid=1023gid=9997,umask=0007
    + for EXT2/3/4: changing owner:group of root directory to 0:1023 0:9997 and perms to rwxrwxr-x - you should know this if you use mounted EXTfs-devices somewere else. This will allow you to create and delete newly created or empty folders in the root of mounted EXFfs storage, but for existed folders you need to do chown -R 0:9997 <mountpoint> and chmod -R 775 <mountpoint> by hand at least once.
    These changes should help with access to mounted storages in recent androids.
    And additional options when binding devices and folders: gid=9997,mask=6
    Also, here is another interesting tool for binding folders: https://bindfs.org (but see "known issues" at bottom). May be I'll try switch to it if encounter problems with permissions in next android updates. If I don't buy new phone with 128+ gigs of internal memory soon :)