From WiiBrew
Jump to navigation Jump to search
Author(s)SquidMan, yellow.wood.goblin, Normmatt
This homebrew application currently contains an invalid download link. It was either not caught in the web archive or on a forum that required registration to download files; which the Wayback Machine cannot index.


LibELM is a FAT driver, like libfat. However, LibELM is based on the amazing ELM FatFs driver by ChaN. LibELM has a devoptab so you can use stdio functions (fopen, fread, etc.)! Directories and LFN filenames are supported! Completely usable for everything! 1.3 is the True Final release, if there are any bugs, please report them on the talk page, and I will fix them A.S.A.P.

LibELM is Wii only at the moment, and supports SD card, USB stick, and should support SDGecko, but SDGecko has not been tested. DS support is coming soon.

In order to use LibELM, you must also have µSync linking with your project (unless you disable reentrancy). You must also call uSyncInit() before using LibELM!

For software using LibELM, go to Category:Homebrew using libELM

The original ELM FatFs page is here:

Important Notices

  • 1.4 is now out! Many bugs should be fixed, and several new features have been added. Check it out. Requires the latest µSync and has a version header too.
  • 1.3x is out. Fixes tons of fatal flaws in 1.3. Get the latest µSync with it, it has important bugfixes too.
  • LibELM v1.3 is out! After a long long time of waiting, I can now proudly say that LibELM is superior to libfat in every way! File accesses have changed to libfat style (sd:/, usb:/, gca:/, and gcb:/). Cache, as well as a few other fixes, were added to v1.3 by yellow.wood.goblin, giving it speeds greater than libfat. DS support is in the works (supposedly, the DS code in there at the moment works on the AKRPG, but I have not tested the code, nor even checked to see if it compiles.) DLDI code is to be contributed by Normmatt.

Revision History


  • Added a versioning header, so you can make sure that it's compiling with a compatible version.
  • Added a function to choose the default device to be an ELM device. (So now you can make it use /foo/bar, instead of sd:/foo/bar)
  • Added proper Sepples (C++) support.
  • Now using FS_TINY 0, since FS_TINY 1 made opening multiple files at once... less than desirable.
  • Frees some buffers that weren't free'd before. Oops, big memory leak there D:
  • Fixed some warnings that were given out. They weren't any problematic warnings, just mild nuisances.


  • Fixed a few fatal flaws that rendered 1.3 unusable.
  • Requires the newest version of µSync.

1.3 True Final

  • Reentrancy support using µSync.
  • Fixed directory listing.
  • Cache for increased speeds.
  • Changed drive names. libfat styled now (sd:/, usb:/, gca:/, and gcb:/)
  • Cleaner code.
  • Start of DS code.
  • Updated demo to take advantage of new features.

1.2 Final

  • Complete devoptab. (File functions, directory functions, old error reporting style in addition to errno)
  • Better error handling.
  • Cleaner code.
  • Fixed memory leak.


  • Partial devoptab. (File functions, no directory functions, fail error reporting.)
  • Changed a few functions to assist in devoptab and for other help.


  • Initial release.
  • No devoptab.
  • SD Card, USB Drive, and SDGecko Support.