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
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
CM10 (4.1.x) --
CM 10.1 (4.2.x) -- Implemented RSA Key Signing Fix, works with BOOTICE.exe partitioned cards.
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.Here is a quick rundown of typical use-cases:
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.
You want one large (exFat/NTFS/ext4) partition:SUPPORT:
- 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: ]
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).
- Create a ".mounthere" file on (p2) "big" partition with the text "/storage/sdcard1"
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
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 7.0 - TBA (Make GUI? Fix ext4 permissions automatically? Get paid?) 6.4 - No longer uses "mount" output (wasn't acting standard-ly. Using /proc/mounts instead) - Got rid of conv=notrunc. 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 - Experimental support for weird devices 5.4 - Major bugfix!! 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 - SUPPORTS MULTI-PARTITIONED CARDS! Autoscans for block devs! Complete rewrite! 4.1 - Quick patch to check mmcblk1 4.0 - WORKS 100% ON 4.2.2!! 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>
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)
https://supporters.eff.org/donate , or help a noob by linking to a solution in their thread.
https://plus.google.com/+CyanogenMod/posts/ib5wz8jk1JyOne of the CM Team has flesh eating bacteria! Keep CM alive! (Literally)