[Magisk] TechnoSparks:
Breakthrough Announcement

After 5 hours trying to (pseudo-?)reverse-engineer how the SDCardFS work, I have managed to make `mount --bind` work under SDCardFS! The task was not simple and my Nokia 6 suffered many, many reboots throughout my attempts. I met with frustration near the holy solution, but who knows by doing crap for absolute "meh" suddenly turns out the solution to my final hurdle! Yay!?

That is not without another 7 hours of fiddling and personal QA tests with `tsbinds` fakebin in order to implement the new algorithm while preserving legacy (FUSE) support!

So, calling sdcardfs users!

Especially Android Pie

, I would like to invite for you to test if ts-binds work on your device!

[ Get ts-binds-bleeding v1.1 ]

NOTE to existing stable users upgrading to bleeding:

Please remove the stable version of the module, reboot, then install the bleeding version. This is to make sure ts-binds select the correct algorithm for the binding procedure. Reason: ts-binds pre v1.1 forces FUSE using prop values.

Changelog:

Upgrade Notice

Please delete `/data/ts-binds` before updating.

Regressions

- Magisk version <17 is no longer supported due to template change

Additions

- New binding algorithm to support sdcardfs!

- SDCardFS seems to rely on `/mnt/runtime` mountpoints. The key is to set the bind paths from there, but the binded mount needs to be remounted with proper `gid=9997` and `mask=6`, thus making legacy `/storage/emulated/0` play nice with the permission of the binded folder

- It is assumed that as of Oreo, SDCardFS implementation is already mature. Hopefully this algorithm persists for long!

- New `$obb` variable to ease things in folderlist

- OBB binding is dealt with the new algorithm

- Detection algorithm if legacy mode (for FUSE) should be applied on your device

- Behaviour can be altered by using the new `mode` parameter for tsbinds. Run `tsbinds help` in terminal for more info

- ts-binds is now licensed with ... Unlicensed! Read LICENSE file for info

Modifications

- Update minmagisk to version 17.0

- Rename `disable.txt` to `disable`

- No longer output to log file. Parent process needs to manually pipe to a file

- `service.sh` calls `tsbinds bind all` piped to the logfile in internal storage

- This means that the log only represent the automated process of bind mounting when the system boots.

- `service.sh` will finish if SD Card not found in 60 seconds.

- Previously the script will infinite loop

- Code refactor

__________________

Thank you, I am really happy to share your excitement! Certainly it is okay to post about my module anywhere you like :D It may help others too. It is one of my goals to make sure ext sdcard is useful for our device. Adoptable storage seems like a good idea at first, but little did people know once adopted, the storage is only applicable for app data (in /data/data). In other words, the emulated /data/media/0 remains the place you store your files like media. This is counter-intuitive and is quite misleading, since most want to have their media stored on the SD more than apps do.

Also I am also creating a module that will mount an ext4 sdcard. Such a module would allow you to do many many great things using what Linux has to offer. Such as softlinking/binding app folder like games, automatically rsync app data (insta backup!), without the need of adoptable storage and Android intervention :)