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

smitna

Senior Member
Aug 6, 2011
161
116
0
I have galaxy s3 and the 64 gb exfat formatted card works on the stock rom of it.
But when i switch to custom rom which are not based on galaxy s3 own stock rom the card stops working.
No other rom beside galaxy s3's own come with exfat driver. so i was wondering if i use this in custom rom as for now its Cyanogenmod 10, would this mod of yours work?
please let me know.
thanks.
Theoretical the driver and tools should work with any ROM, because there are no explicit ROM-dependencies, only kernel related stuff (if any). But the modifications for the vold daemon are necessarily if you want to use an exFAT formatted INTERNAL card.
 

shardul_seth

Senior Member
Jul 31, 2011
1,102
1,717
0
Here is the latest version 1.0.1 (at the time of posting) of fuse-exfat and exfat-utils for android arm phones.. Thanks to the OP for the detailed instructions.

Please read the first and second posts of this thread before downloading! By downloading, you agree that you are responsible for any data loss/damage or legal issues.

Download
 

Attachments

svs57

Senior Member
Sep 4, 2012
445
52
0
I need your help.
I used "mount.exfat-fuse" with custom kernels which don't support exFAT (SGS3)
I just create script in /etc/init.d/ that mount ext. SD
Code:
mount.exfat-fuse -o uid=1023,gid=1023 /dev/block/mmcblk1p1 /storage/extSdCard
This works fine. Android recognize ext SD.
But with latest yank555 3.1h kernel I have problem.
Ext. SD mounted while boot. But android show me message that ext SD is empty.
I login to phone via adb shell.
Ext SD is mounted. I see content of card. But android told that card is empty.
Do you have any ideas why it's happen?
I downgraded yank555 kernel to 3.1g. Everything works. Android show me ext SD.
PS
I found that with latset yank555 when android tell me empty ext. card
Settings - Storage - Prepare ext SD
Then card is appeared.
Will be nice do the same in init.d script
But I don't know how...
 
Last edited:

svs57

Senior Member
Sep 4, 2012
445
52
0
Just use
Code:
mount.exfat-fuse -o rw,umask=0 /dev/block/mmcblk1p1 /storage/extSdCard
Should work..
It works. But Android doesn't see card.
PS
Found where was the problem.
Script /etc/init.kernel.sh includes in first lines wait while Android is UP.
I put mount ext SD before this waits.
Now it works :)
 
Last edited:

HMkX2

Senior Member
Jan 31, 2010
98
135
0
Thanks to everyone in this thread for the compiling - that's slightly beyond my area of expertise. But I was able to refine it for the Galaxy S3 running a CM10.1 nightly - works perfectly!

@smitna - I wasn't able to locate the problem within vold, unfortunately. But I did locate the cause of the problem exactly: 3 4-byte segments in the header -- not just the one you noticed at the top. I've written it up in the post here:

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

svs57

Senior Member
Sep 4, 2012
445
52
0
I have discovered one "big" problem that must be solved before all other things and I NEED PERHAPS SOME HELP!
I use exfat_arm_binaries_v101.zip on SGS3 with Android Revolution HD 22.1 based on XXEMR2 and Yank555 3.2 kernel.
Everything works fine. Never have this problem.
Can you tell me which version of exFAT fuse do you use? What ROM do you use?
PS
/system/etc/vold.fstab doesn't modified

## Vold 2.0 Generic fstab
## - San Mehat ([email protected])
##

#######################
## Regular device mount
##
## Format: dev_mount <label> <mount_point> <part> <sysfs_path1...>
## label - Label for the volume
## mount_point - Where the volume will be mounted
## part - Partition # (1 based), or 'auto' for first usable partition.
## <sysfs_path> - List of sysfs paths to source devices
######################
#storage_struct = series, "/storage/sdcard/extStorages"
#storage_struct = parallel
{
supported_exfat = yes
}
dev_mount sdcard /storage/extSdCard auto /devices/platform/s3c-sdhci.2/mmc_host/mmc1/
 
Last edited:

Phil3759

Inactive Recognized Developer
May 30, 2012
9,557
33,049
0
Here's my trial to port exfat/fuse 1.0.1/2.9.2 to bionic as static binary:
https://github.com/PhilZ-cwm6/philz_touch_cwm6/commit/3faf6270b7cc261925aab6e1ad9237426675ad10


libdl functions I added are defined from what Android NDK/CM-10.1 has. So, it shouldn't break anything
Missing pthread calls could probably be deleted, but I went with that alternative as it was already used on a previous port (stackoverflow topic and a github commit from old 2.8.7 fuse)

At the end, it shouldn't matter since twrp uses the bionic libc and that implementation doesn't have these pthread functions

So, I feel it is a good port.
You get an exfat-fuse of about 190kb stripped which is great to fit in recovery partition

Now, the issue:
There are some hard coded /bin/prog functions inside fuse
There is also that /usr/bin entry in mount.c

The resulting binary fails to find /bin/mount on which it relies. This is obvious since we have it in /sbin. TWRP seems to symlink things there
I tried symlinking /bin to /sbin, but it then fails with a busy device message. Maybe it is because I am using Samsung ko modules too. But the static non bionic binary does work perfectly!

Here's the binary I got for your testing
http://www.mediafire.com/download/mmgp5le6bpc5f7n/exfat-fuse.zip


If someone can have a look and an advice on how to fix the path issues, it will be appreciated.
Please do not leech only. If you fix it, do share the source and commit to the github or here

Meanwhile, I am also working on it, but have very little time sadly
 

Lurker0

Senior Member
Sep 22, 2006
259
47
48
Moscow