I had an old hard drive I wanted to use as a secure, cross platform file transfer device, so I thought of TrueCrypt and UDF. Unfortunately, TrueCrypt for MacOS only supports formatting drives as Mac OS Extended and TrueCrypt for Windows only supports NTFS and FAT32. I ended up using TrueCrypt for Mac OS and the Mac’s command line formatting utility.
- Login as an Administrator
- Connect the drive you want to protect with TrueCrypt
- Open TrueCrypt and create a TrueCrypt Volume like normal, but select "None" when asked to select a filesystem
- Wait for the encryption to complete
- From TrueCrypt, click the "Select File…" or "Select Device…" to select your newly encrypted volume and click "Mount"
- Enter the password and any other authentication credentials required for the Volume. Check "Do not mount" before clicking "OK"
- Back in the main TrueCrypt window, select the Volume and click "Volume Properties…"
- Record the Virtual Device value. In this case "/dev/disk3"
- Open a Terminal window
sudo newfs_udf /dev/disk3 to format the TrueCrypt volume with the UDF filesystem
- From now on, the UDF filesystem will automatically be mounted when mounting the TrueCrypt volume on Window or Mac OS
I tested UDF and exFAT over a fairly wide range of non-computer devices, and none of the devices could read or write to it. If you need something that will work with non-computers, stick to FAT32. If you just need interoperability between computers (but don’t need to boot from the drive), switch over to UDF.
I UDF and exFAT did not work with:
I plan on testing UDF and exFAT with a few phones and will update this post when I do.
Comparison of cross platform filesystems for flash memory and/or external hard drives.
The Universal Disk Format (UDF) is maintained by Optical Storage Technology Association while FAT32 and exFAT are maintained by Microsoft.
FAT32’s primary limitation is its 4GB file size limit. Microsoft also recommends limiting Volumes formatted in FAT32 to be limited to 32 GB, although many implementations support larger volumes.
Microsoft created exFAT to get around the limitations of FAT32 relating to file and volume size limitations.
Overall, exFAT and UDF appear to be very comparable. They both support Unicode filenames and long filenames.
UDF supports a journaling and ECC (Error Correction Codes). The MacOS format utility provides an option for specifying the number of blocks to use for ECC. I assumed that this option was some type of ratio, but when I changed the number from 1 to 2, my formatted drive had exactly one block less space available. UDF “journaling” features are designed around optical media, so it is unclear if flash and hard drive implementations of UDF use the Logical Volume Integrity Descriptors.
Overall, FAT32 has the best compatibility. It is supported by nearly every device from phones, to cameras, to picture frames.
If you are only concerned with accessing your data from a computer, UDF is probably the file system to pick since Linux’s support for exFAT is not 100%.
Next I’m going to explore the compatibility of UDF and exFAT in other devices.
- UDF Spec – http://www.osta.org/specs/pdf/udf260.pdf
- FAT32 Spec – http://msdn.microsoft.com/en-us/library/windows/hardware/gg463080.aspx
- exFAT Spec – unable to find
- exFAT description – http://support.microsoft.com/kb/955704
- exFAT description – http://en.wikipedia.org/wiki/ExFAT
I’m always hearing about how FAT32 is a poor choice for a filesystem, but it’s also the universal filesystem that Mac, Windows, and Linux can all natively read and write. A few quick searches turned up the Universal Disk Format (UDF). It started off life as ISO 9660 (CD File Format), which we know pretty much all operating systems can read. As UDF has gone through a few versions, support for read/write block devices was added. I have verified that MacOS Mountain Lion, Windows 7, and Ubuntu 12.10 can all read and write to a UDF formatted flash drive. For reference I used a Toshiba 8GB Flash Drive.
To format a flash drive as UDF using MacOS:
- Plug the drive in
- Open Disk Utility
- Select the mounted partition of the flash drive, and click “Unmount”
- Select the physical disk and click “Info”. This will tell you which device the disk is currently identified as. In this case, it is disk2.
- Open Terminal with an Administrator account
- Type sudo newfs_udf /dev/<disk_from_step_4> (e.g. sudo newfs_udf /dev/disk2)
- You’re done.
The defaults for newfs_udf should be left alone, as the program picks the appropriate values for your drive. The one value you might want to edit is the -ecc-in-blks (Error correction code size). I will follow up on ECC in the comparison of file systems.
Coming next, a comparison of UDF, exFAT, and FAT32.