Dolphin can store data to a virtual SD card named sd.raw. By default, it will be created with the size of 128MB.
The virtual SD card has important use for homebrew apps on Dolphin. Project M and Mario Kart Wii custom tracks are two good examples, as some homebrew apps can only work using files stored on the SD card of the real hardware for which they were designed.
It is recommend to create one with size at least 1GB for large homebrew apps, for example, Project M, and no more than 2GB for best compatibility as there are compatibility issues with some homebrew apps trying to run under an SDHC card on the real hardware.
Download Virtual SD Card Maker, unzip it, and open the appropriate folder for your system (Linux / OS X / Windows). The tool is run with a command like:
mksdcard 2048M sd.raw
Alternatively, a non-Mediafire download link can be found by visiting https://developer.android.com/studio/#command-tools and downloading the OS-specific zip there (mksdcard is part of the Android SDK)
This example creates a 2048 megabyte (2GB) SD card formatted as FAT32:
hdiutil create -megabytes 2048 -fs MS-DOS -layout NONE -o ~/Library/"Application Support"/Dolphin/Wii/sd.raw mv ~/Library/"Application Support"/Dolphin/Wii/sd.raw.dmg ~/Library/"Application Support"/Dolphin/Wii/sd.raw
If the above tool does not work, one can manually create a FAT32 partition image in Linux provided dosfstools is installed. First, pull up a terminal, and then chdir into the Wii folder, which under certain configurations may be located at ~/.local/share/dolphin-emu/Wii instead.
Then, we must create our raw disk image. This example create a 2048 megabyte (2GB) SD card, but one can replace the 2048 with an alternate number of megabytes.
dd if=/dev/zero bs=1M count=2048 of=sd.raw
Finally, we format our image to FAT32.
mkfs.fat -F 32 sd.raw
The virtual SD card can be edited by mounting it to a virtual disk. Create a directory as a mountpoint:
sudo mkdir /media/sdcard
Mount sd.raw to the created directory:
sudo mount -o defaults,umask=000 ~/.local/share/dolphin-emu/Wii/sd.raw /media/sdcard
When you are done, unmount the virtual SD card:
sudo umount /media/sdcard
In Terminal window, type the following to mount the virtual SD card:
hdiutil attach -imagekey diskimage-class=CRawDiskImage ~/Library/Application\ Support/Dolphin/Wii/sd.raw
The virtual SD card can then be ejected through Finder when done being edited.
If you get an error (hdiutil: attach failed - no mountable file systems), you can use these commands instead:
hdiutil mount $(hdiutil attach -nomount -imagekey diskimage-class=CRawDiskImage ~/Library/Application\ Support/Dolphin/Wii/sd.raw)
The Windows users must use a third party software that can mount the virtual SD card. Speaking of which... ImDisk Virtual Disk Driver
WinImage is unreliable, because oddly enough, it will cause desync and few other unforeseeable problems. ImDisk will be fine.
Quick guide for mounting and editing the virtual SD card with the ImDisk Virtual Disk Driver:
Go to Options > Configure... > Wii > and enable Insert SD Card.
The external files used for the homebrew app must be stored within sd.raw and the homebrew app itself (boot.elf or boot.dol) must exist outside of it for Dolphin to load. Project M, for example, will load from SD root \projectm\ and Dolphin will need to launch Project M through \apps\projectm\boot.elf, NOT in the virtual SD card. For convenience's sake, it is ideal to have same copies paralleled between inside and outside of the virtual SD card.
Though, it is possible to start homebrew app from virtual SD card through homebrew exploits for Wii.
The Wii game launcher app will only work if a particular Wii game is set as the default ISO. Within the Dolphin game list, open context menu (right-click) on any Wii game and click Set as default ISO. Do this before loading a homebrew app with Dolphin.
Netplay will eventually desync if anything reads the virtual SD card that is not cloned, regardless of the same size it was created, and identical file/folder structures within its root. To prevent that, sd.raw must be copied from host's computer to joiners' computers before starting netplay. If the virtual SD card was used offline or online with write block disabled, the MD5 checksum will change ("Date Accessed" of the files are what's different in virtual SD card), but will not cause desync. The SD card got to be coming from elsewhere or subjected to the files modified within to be "different".
For the Wii game launcher app, users on both ends must have the same copies of homebrew app and the game in their game list first, then set the game as default ISO, as mentioned in previous section.