[Verizon Samsung Galaxy S III] HMkX2:
August 4th 2013 - This script has not been maintained in a while. A big thank you to Captain_Throwback for providing continued support.

This is now minimally supported. Now that CM is adding native NTFS/exfat support, the only thing my script handles is multiple partitions.

July 21 2014 - Thank you n01ce! Please see n01ce's post for a "6.5 Alpha" that may solve some checksum problems with exFAT. I have changed devices, so this thread is for historical purposes/legacy support.

"HELP! I accidentally made my exFat card unreadable!!" -- or-- "I can't see more than 1 partition in windows!!"

Please read the instructions at the bottom of THIS POST HERE. No data will be lost!

"My card was working up until a moment ago but now the phone is showing "card damaged!!"

Re-run the script by typing "fuse-mountsd.sh" as root. The script will attempt to repair and re-mount.

If that fails, run "chkdsk /f" in Windows.

Do not reformat until it is the last resort!

​

TL;DR: (Flash this), put exFat/FAT32/NTFS/EXT4 sdcard in, reboot.​

To remount, type "fuse-mountsd.sh" in a console (or) run using RomToolbox Lite (in /system/xbin/)

Needs to be run every time card is ejected + reinserted -- including when UMS is used

To unmount, type "fuse-mountsd.sh umount" (or if 1 partition) use Storage Manager

Non-customized multi-partitions mounted in /storage/<their name>

​

Uses init.d to fix/mount at boot

Scans for/mounts all useable block devices (with safety checks)

User-specifiable dynamic mount points

~~Create a ".mounthere" file in the partition with the first line "/location/to/mount/at"

~~Use the first line "skip" or "SKIP" to bypass that partition

Rescans for media when you re-mount

Repairs typical exFat damage caused by CM10.1 (with safety nets)

FAT32 support

NTFS-3g support (noatime set to reduce wear)

EXT4/3/2 support (*fuse built into JB/CM10.1) <- (MTP+EXT4 permissions need to be set to media_rw:media:rw 775!!))

Cleans up after itself: disables/enables ADB/root-security to what you set

BUGS:

All -- ntfsfix does not work. Binaries need to be recompiled. Not a major issue only dead weight.

exFAT may prevent deep-sleep. (NTFS on GS3 doesn't seem to have this issue.)

If you use EXT4/3/2, you need to run the following commands to allow the card to be accessed by the mobile-user:

find /storage/sdcard1/ -print0 | xargs -0 chown media_rw:media_rw
chmod -R 775 /storage/sdcard1/

(or)

find /storage/sdcard1/ -print0 | xargs -0 chown root:media_rw

Other phones -- Post a debug.txt if it works for you.

CM10 (4.1.x) -- Support is experimental. Use at your own risk.

CM 10.1 (4.2.x) -- Implemented RSA Key Signing Fix, works with BOOTICE.exe partitioned cards.

EXPERTS:

Everything is softcoded thanks to the $SECONDARY_STORAGE, $ANDROID_DATA, $ANDROID_STORAGE, $ANDROID_CACHE env variables and get/setprop command. Some locations are hardcoded in the script's "analyzePhone" function as fallbacks.

To custom-map mountpoints, create a ".mounthere" file in the root of each partition. "skip" or "SKIP" = ignore partition at mount, "/your/path/here" will use that path (or the default if bad). Defaults to "$ANDROID_STORAGE/device_id" if directory is invalid. Removes any temporary directories (in /storage/ only) at unmount. YOU HAVE TO CREATE ANY CUSTOM DIRECTORIES OUTSIDE "/storage" YOURSELF -- I set it like that as a security precaution.

To disable "Directory Creation Security", edit the line at the top of the script to say "dirSECURITY=0". This script will remount / and /storage as RW if needed.​

Here is a quick rundown of typical use-cases:

You want one large (exFat/NTFS/ext4) partition:

No customization needed, just flash and go

You want a small FAT32 partition (p1) at the beginning (for firmware/CWM/TWRP) with another big ext4 partition (p2) for your SD card mount. [ Your ROM's vold will mount (p1:fat32) as /storage/sdcard1 automatically. To get it to swap over: ]

Create a ".mounthere" file on (p2) "big" partition with the text "/storage/sdcard1"

This will override Vold and mount the (p2) as external storage. The FAT32 partition will be mounted in /storage/mmcblk1. If you want to mount it elsewhere (even /data/media/0/extSD ! ) simply add another ".mounthere" on the FAT32 partition. (The directory must already exist -- you must make it beforehand -- or disable Directory Security feature.) Be warned - Vold will mount the first partition as /storage/sdcard1 any chance it gets -- even in the background -- unless there is something mounted there already (by this script).

You have (1) partition for a game app you play (internal storage) that you want to rebind, (2) another part you want to rebind OVER an existing directory, and (3) your main storage.

Create a ".mounthere" on (1) with text "/location/of/your/game/app/data"

".mounthere" on (2) with text "/folder/you/want/substituted"

".mounthere" on (3) with text "/storage/sdcard1"

You are a long-hair-hippie Linux developer with 4 partitions, each in a different filesystem, and want them mounted hidden from apps and listed by block device so you know what partition you are on:

No customization needed, just flash and go :D

SUPPORT:

I can only provide support if you supply me with logs

. Do so by typing "fuse-mountsd.sh > /sdcard/debug.txt 2>&1" and opening the Debug.txt in your phone's storage.

It's all automatic now - so if it mounts your modem as writeable and kicks your dog don't blame me. (It excludes dangerous block devices automatically [mmcblk0, /system, mtdblock, etc], but there is always a 1% chance it will miss something.) If it does, report it here so I can fix it.

If you intend to use this with a other ROMs/phones, IT SHOULD STILL WORK. Post any errors or weird behavior.

Changelog

[I]7.0 - TBA (Make GUI? Fix ext4 permissions automatically? Get paid?)[/I]

6.4 - No longer uses "mount" output (wasn't acting standard-ly. Using /proc/mounts instead)
- [COLOR="Red"]Got rid of conv=notrunc[/COLOR]. Be careful!
6.3 - Bugfix to scrubMount code
6.2 - No longer Experimental / final unstable
- added rough ext2/3 support
6.1 - mount command bugfix
6.0 - Added a bypass for Directory Security, fixed some bugs.
5.9 - Rewrote NOGO code from scratch -- UUIDs ignored
5.8 - (??)
5.7 - Support for Note2 formatted exFat cards + more (0xf4 bug)
5.6 - bug fixed: no longer detects zram/assumes multimount
5.5 - [COLOR="Red"]Experimental support for weird devices[/COLOR]
5.4 - [b]Major bugfix!![/b] Fix fixmyexfat.sh coding fail
5.3 - Fixed "vffat" support. Undid HARD QUIT on bad Nogo, made it a soft one.
5.2 - Increased logging of tables, HARD QUIT if Nogo not found
5.1 - Quick patch to fix dm-* device blacklist
5.0 - [b]SUPPORTS MULTI-PARTITIONED CARDS! Autoscans for block devs! Complete rewrite![/b]
4.1 - Quick patch to check mmcblk1
4.0 - [B]WORKS 100% ON 4.2.2!![/B] My script is the first to achieve this AFAIK
3.3 - fixed a bug detecting existing mounts (related to "non-persistent mount points" issue)
3.1 - added dynamic exFAT repair code
3.0 - added NTFS/ext4 support
1.0 -> 2.0 <Removed>

Attribution credits:

Original thanks go to originator of the method, smitna in the Galaxy S2 forum. Additional thanks go to shardul_seth (Post 23) for compiling the latest version of the fuse-exfat and ntfs-3g binaries for ARM, and of course Andrew Nayenko for his efforts in creating GPL'd exFat code (fuse-exfat on google code).

[HOWTO][exFAT][WORK IN PROGRESS] Mount exFAT formatted drives and cards - smitna

Full NTFS Read Write support for Android (ARM) - shardul_seth

[HOWTO][exFAT][CM10.1] Working 64GB ext sdcard with fuse-exfat (1.0.1) + FIX broken (my original Dev thread)

I believe the term is I "kanged" their binaries. The rest is mine. This is a "mod"/"hack" until CM adds native support. (If ever: exFat)
​

DONATIONS:

https://supporters.eff.org/donate , or help a noob by linking to a solution in their thread. :good:

https://plus.google.com/+CyanogenMod/posts/ib5wz8jk1JyOne of the CM Team has flesh eating bacteria! Keep CM alive! (Literally)​