| Revision | Updates | Migration Notes |
R0.16 Jul 22, 2025 |
- Removed a long-pending limitation that f_getcwd and double-dot ".." in the path name did not work on the exFAT volume.
- Fixed f_readdir cannot detect end of directory and it leads the application process into infinite loop. (appeared at R0.15b)
- Fixed dot names with terminating separator or duplicated separator are rejected when LFN is not enabled.
|
- Maximum depth of sub-directory on the exFAT volume is limited to the configured level FF_PATH_DEPTH when relative path is enabled.
|
R0.15b Jun 21, 2025 |
- Added support for the timestamp of created time. (FF_FS_CRTIME)
- Fixed FatFs fails to load the FsInfo in FAT32 volumes and the f_getfree always be forced a full FAT scan which takes a long time. (appeared at R0.15a)
|
- Small changes to the f_utime function to support for the timestamp of created time.
|
R0.15a Nov 22, 2024 |
- Fixed a complie error when FF_FS_LOCK != 0. (appeared at R0.15)
- Fixed a potential issue when work FatFs concurrency with FF_FS_REENTRANT, FF_VOLUMES >= 2 and FF_FS_LOCK > 0.
- Made f_setlabel accept a volume label with Unix style volume ID when FF_STR_VOLUME_ID == 2.
- Made FatFs update PercInUse field in exFAT VBR. (A preceding f_getfree is needed for the accuracy)
|
|
R0.15 Nov 6, 2022 |
- Changed user provided synchronization functions in order to completely eliminate the platform dependency from FatFs code.
- Fixed a potential error in f_mount when FF_FS_REENTRANT.
- Fixed file lock control FF_FS_LOCK is not mutal excluded when FF_FS_REENTRANT && FF_VOLUMES > 1 is true.
- Fixed f_mkfs creates broken exFAT volume when the size of volume is >= 2^32 sectors.
- Fixed string functions cannot write the unicode characters not in BMP when FF_LFN_UNICODE == 2 (UTF-8).
- Fixed a compatibility issue in identification of GPT header.
|
- User provided synchronization functions, ff_cre_syncobj, ff_del_syncobj, ff_req_grant and ff_rel_grant, needed when FF_FS_REENTRANT are replaced with ff_mutex_create, ff_mutex_delete, ff_mutex_take and ff_mutex_give respectively. For example, see ffsystem.c.
- FF_SYNC_t is removed from the configuration options.
|
R0.14b Apr 17, 2021 |
- Made FatFs uses standard library string.h for copy, compare and search instead of built-in string functions.
- Added support for long long integer and floating point to f_printf. (FF_STRF_LLI and FF_STRF_FP)
- Made path name parser ignores the terminating separator to allow "dir/".
- Improved the compatibility in Unix style path name feature.
- Fixed the file gets dead-locked when f_open failed with certain conditions. (appeared at R0.12a)
- Fixed f_mkfs can create wrong exFAT volume due to a timing dependent error. (appeared at R0.12)
- Fixed code page 855 cannot be set by f_setcp. (appeared at R0.13)
- Fixed some compiler warnings.
|
- From this revision, FatFs depends on string.h.
|
R0.14a Dec 05, 2020 |
- Limited number of recursive calls in f_findnext to prevent stack overflow.
- Fixed old floppy disks formatted with MS-DOS 2.x and 3.x cannot be mounted.
- Fixed some compiler warnings.
|
- Number of wildcards in the matching pattern in f_findfirst is limited to 4.
|
R0.14 Oct 14, 2019 |
- Added support for 64-bit LBA and GUID partition table (FF_LBA64)
- Changed some API functions, f_mkfs and f_fdisk.
- Fixed f_open cannot find the file with file name in length of FF_MAX_LFN characters.
- Fixed f_readdir cannot retrieve long file names in length of FF_MAX_LFN - 1 characters.
- Fixed f_readdir returns file names with wrong case conversion. (appeared at R0.12)
- Fixed f_mkfs can fail to create exFAT volume in the second partition. (appeared at R0.12)
|
- Usage of f_mkfs and f_fdisk is changed and some features are added to these functions.
|
R0.13c Oct 14, 2018 |
- Supported stdint.h for C99 and later. (integer.h was included in ff.h)
- Fixed reading a directory gets infinite loop when the last directory entry is not empty. (appeared at R0.12)
- Fixed creating a sub-directory in the fragmented sub-directory on the exFAT volume collapses FAT chain of the parent directory. (appeared at R0.12)
- Fixed f_getcwd cause output buffer overrun when the buffer has a valid drive number. (appeared at R0.13b)
|
- From this revision, FatFs depends on stdint.h in C99 or later.
- integer.h is removed.
|
R0.13b Apr 07, 2018 |
- Added support for UTF-32 encoding on the API. (FF_LFN_UNICODE = 3)
- Added support for Unix style volume prefix. (FF_STR_VOLUME_ID = 2)
- Fixed accesing objects in the exFAT root directory beyond the cluster boundary can fail. (appeared at R0.12c)
- Fixed f_setlabel does not reject some invalid characters. (appeared at R0.09b)
|
|
R0.13a Oct 14, 2017 |
- Added support for UTF-8 encoding on the API. (FF_LFN_UNICODE = 2)
- Added options for file name output buffer. (FF_LFN_BUF, FF_SFN_BUF)
- Added dynamic memory allocation option for working buffer of f_mkfs and f_fdisk.
- Fixed f_fdisk and f_mkfs create the partition table with wrong CHS parameters. (appeared at R0.09)
- Fixed f_unlink can cause lost clusters at fragmented file on the exFAT volume. (appeared at R0.12c)
- Fixed f_setlabel rejects some valid characters for exFAT volume. (appeared at R0.12)
|
|
R0.13 May 21, 2017 |
- Prefix of configuration item names are changed from "_" to "FF_".
- Added f_setcp, run-time code page configuration. (FF_CODE_PAGE = 0)
- Improved cluster allocation time on stretch a deep buried cluster chain.
- Improved processing time of f_mkdir with large cluster size by using FF_USE_LFN = 3.
- Improved exFAT NoFatChain flag of the fragmented file to be set after it is truncated and got contiguous.
- Fixed archive attribute is left not set when a file on the exFAT volume is renamed. (appeared at R0.12)
- Fixed exFAT FAT entry can be collapsed when write or lseek operation to the existing file is done. (appeared at R0.12c)
- Fixed creating a file can fail when a new cluster allocation to the exFAT directory occures. (appeared at R0.12c)
|
- ASCII only configuration, FF_CODE_PAGE = 1, is removed. Use FF_CODE_PAGE = 437 instead.
|
R0.12c Mar 04, 2017 |
- Improved write throughput at the fragmented file on the exFAT volume.
- Made memory usage for exFAT be able to be reduced as decreasing _MAX_LFN.
- Fixed successive f_getfree can return wrong count on the FAT12/16 volume. (appeared at R0.12)
- Fixed configuration option _VOLUMES cannot be set 10. (appeared at R0.10c)
|
|
R0.12b Sep 4, 2016 |
- Made f_rename be able to rename objects with the same name but case.
- Fixed an error in the case conversion teble of code page 866. (ff.c)
- Fixed writing data is truncated at the file offset 4GiB on the exFAT volume. (appeared at R0.12)
-
- Fixed creating a file in the root directory of exFAT volume can fail. (appeared at R0.12)
- Fixed f_mkfs creating exFAT volume with too small cluster size can collapse unallocated memory. (appeared at R0.12a)
- Fixed wrong object name can be returned when read directory at Unicode cfg. (appeared at R0.12)
- Fixed large file allocation/removing on the exFAT volume collapses allocation bitmap. (appeared at R0.12)
- Fixed some internal errors in f_expand and f_lseek. (appeared at R0.12)
|
|
R0.12a Jul 10, 2016 |
- Added support for creating exFAT volume with some changes of f_mkfs.
- Added a file open method FA_OPEN_APPEND.
- f_forward is available regardless of _FS_TINY.
- Fixed f_mkfs creates broken volume. (appeared at R0.12)
- Fixed wrong memory read in create_name. (appeared at R0.12)
- Fixed compilation fails at some configurations, _USE_FASTSEEK and _USE_FORWARD.
|
- Usage of f_mkfs is changed.
|
R0.12 Apr 12, 2016 |
- Added support for exFAT file system. (_FS_EXFAT)
- Added f_expand. (_USE_EXPAND)
- Changed some members in FINFO and behavior of f_readdir.
- Added a configuration option _USE_CHMOD.
- Fixed errors in the case conversion teble of Unicode (cc*.c).
|
- Usage and members of FINFO sructure used in f_readdir is changed.
- Dot entries in the sub-directory are never appear in f_readdir.
- ".." does not work as path name in exFAT volume.
- f_getcwd does not work in exFAT volume.
- Many members in FIL and DIR structure are changed.
- To use f_chmod, _USE_CHMOD needs to be set.
- _WORD_ACCESS is removed from the configuration options.
|
R0.11a Sep 5, 2015 |
- Fixed wrong media change can lead a deadlock at thread-safe configuration.
- Added code page 771, 860, 861, 863, 864, 865 and 869. (_CODE_PAGE)
- Fixed errors in the case conversion teble of code page 437 and 850 (ff.c).
- Fixed errors in the case conversion teble of Unicode (cc*.c).
|
- Removed some code pages actually not exist on the standard systems. (_CODE_PAGE)
|
R0.11 Feb 9, 2015 |
- Added f_findfirst and f_findnext. (_USE_FIND)
- Fixed f_unlink does not remove cluster chain of the file. (appeared at R0.10c)
- Fixed _FS_NORTC option does not work properly. (appeared at R0.10c)
|
|
R0.10c Nov 9, 2014 |
- Added a configuration option for the platforms without RTC. (_FS_NORTC)
- Fixed volume label created by Mac OS X cannot be retrieved with f_getlabel. (appeared at R0.09b)
- Fixed a potential problem of FAT access that can appear on disk error.
- Fixed null pointer dereference on attempting to delete the root direcotry. (appeared at R0.08)
|
|
R0.10b May 19, 2014 |
- Fixed a hard error in the disk I/O layer can collapse the directory entry.
- Fixed LFN entry is not deleted on delete/rename an object with its lossy converted SFN. (appeared at R0.07)
|
|
R0.10a Jan 15, 2014 |
- Added arbitrary strings as drive number in the path name. (_STR_VOLUME_ID)
- Added an option for minimum sector size. (_MIN_SS)
- 2nd argument of f_rename can have a drive number and it will be ignored.
- Fixed f_mount with forced mount fails when drive number is larger than 0. (appeared at R0.10)
- Fixed f_close invalidates the file object without volume lock.
- Fixed volume lock is left acquired after return from f_closedir. (appeared at R0.10)
- Fixed creation of a directory entry with LFN fails on too many SFN collisions. (appeared at R0.07)
|
|
R0.10 Oct 2, 2013 |
- Added an option for character encoding on the file. (_STRF_ENCODE)
- Added f_closedir.
- Added forced full FAT scan option for f_getfree. (_FS_NOFSINFO)
- Added forced mount option with changes of f_mount.
- Improved behavior of volume auto detection.
- Improved write throughput of f_puts and f_printf.
- Changed argument of f_chdrive, f_mkfs, disk_read and disk_write.
- Fixed f_write can be truncated when the file size is close to 4 GB.
- Fixed f_open, f_mkdir and f_setlabel can return incorrect result code on error.
|
|
R0.09b Jan 24, 2013 |
- Added f_getlabel and f_setlabel. (_USE_LABEL)
|
|
R0.09a Aug 27, 2012 |
- Fixed assertion failure due to OS/2 EA on FAT12/16 volume.
- Changed file functions reject null object pointer to avoid crash.
- Changed option name _FS_SHARE to _FS_LOCK.
|
|
R0.09 Sep 6, 2011 |
- f_mkfs supports multiple partition on a physical drive.
- Added f_fdisk. (_MULTI_PARTITION = 2)
|
|
R0.08b Jan 15, 2011 |
- Fast seek function is also applied to f_read and f_write.
- f_lseek reports required table size on creating CLMP.
- Extended format syntax of f_printf.
- Ignores duplicated directory separators in given path names.
|
|
R0.08a Aug 16, 2010 |
- Added f_getcwd. (_FS_RPATH = 2)
- Added sector erase function. (_USE_ERASE)
- Moved file lock semaphore table from fs object to the bss.
- Fixed f_mkdir creates wrong directory on non-LFN cfg when the given name contains ';'.
- Fixed f_mkfs creates wrong FAT32 volume.
|
|
R0.08 May 15, 2010 |
- Added an option to _USE_LFN
- Added support of file lock. (_FS_SHARE)
- Added fast seek function. (_USE_FASTSEEK)
- Changed a type name on the API, XCHAR to TCHAR.
- Changed member, fname, in the FILINFO on Unicode cfg.
- String functions support UTF-8 encoding files on Unicode cfg.
|
|
R0.07e Nov 3, 2009 |
- Separated out configuration options from ff.h to ffconf.h.
- Added a configuration option, _LFN_UNICODE.
- Fixed f_unlink fails to remove a sub-dir on _FS_RPATH.
- Fixed name matching error on the 13 char boundary.
- Changed f_readdir to return the SFN with always upper case on non-LFN cfg.
|
|
R0.07c Jan 21, 2009 |
- Fixed f_unlink may return FR_OK on error.
- Fixed wrong cache control in f_lseek.
- Added support of relative path.
- Added f_chdir.
- Added f_chdrive.
- Added proper case conversion to extended characters.
|
|
R0.07a Apr 14, 2009 |
- Separated out OS dependent code on re-entrant configuration.
- Added multiple sector size support.
|
|
R0.07 Apr 1, 2009 |
- Merged Tiny-FatFs into FatFs as a buffer configuration option.
- Added support for long file extension.
- Added multiple code page support.
- Added re-entrancy for multitask operation.
- Added auto cluster size selection to f_mkfs.
- Added rewind option to f_readdir.
- Changed result code of critical errors.
- Renamed string functions to avoid name collision.
|
|
R0.06 Apr 1, 2008 |
- Added f_forward. (Tiny-FatFs)
- Added string functions: f_gets, f_putc, f_puts and f_printf.
- Improved performance of f_lseek on moving to the same or following cluster.
|
|
R0.05a Feb 3, 2008 |
- Added f_truncate.
- Added f_utime.
- Fixed off by one error at FAT sub-type determination.
- Fixed btr in f_read can be mistruncated.
- Fixed cached sector is left not flushed when create and close without write.
|
|
R0.05 Aug 26, 2007 |
- Changed arguments of f_read, f_write.
- Changed arguments of f_mkfs. (FatFs)
- Fixed f_mkfs on FAT32 creates incorrect FSInfo. (FatFs)
- Fixed f_mkdir on FAT32 creates broken directory. (FatFs)
|
|
R0.04b May 5, 2007 |
- Added _USE_NTFLAG option.
- Added support for FSInfo in FAT32 volume.
- Fixed some problems corresponds to FAT32. (Tiny-FatFs)
- Fixed DBCS name can result FR_INVALID_NAME.
- Fixed short seek (<= csize) collapses the file object.
|
|
R0.04a Apr 1, 2007 |
- Supported multiple partitions on a plysical drive. (FatFs)
- Added minimization level 3.
- Added a capability of extending file size to f_lseek.
- Fixed an endian sensitive code in f_mkfs. (FatFs)
- Fixed a problem corresponds to FAT32 support. (Tiny-FatFs)
|
|
R0.04 Feb 4, 2007 |
- Supported multiple drive system. (FatFs)
- Changed some APIs for multiple drive system.
- Added f_mkfs. (FatFs)
- Added _USE_FAT32 option. (Tiny-FatFs)
|
|
R0.03a Dec 11, 2006 |
- Improved cluster scan algolithm to write files fast.
- Fixed f_mkdir creates broken directory on FAT32.
|
|
R0.03 Sep 22, 2006 |
- Added f_rename.
- Changed option _FS_MINIMUM to _FS_MINIMIZE.
|
|
R0.02a Jun 10, 2006 |
- Added a configuration option _FS_MINIMUM.
|
|
R0.02 Jun 01, 2006 |
- Added FAT12.
- Removed unbuffered mode.
- Fixed a problem on small (<32M) patition.
|
|
R0.01 Apr 29, 2006 |
|
|