I have an external device which mounts as an external drive and which I must format in FAT, not FAT32, for use elsewhere. Is there a way to do that from Snow Leopard?

  • 1
    Which FAT format? OS X supports FAT12, FAT16, FAT32, and ExFAT (aka FAT64). There's no such thing as just plain "FAT". See Wikipedia's list of FAT types. – Gordon Davisson Dec 18 '14 at 6:37
  • It's probably a version of FAT 16. The device's manual only identifies the command in "Windows" without saying what Windows, with which one formats a disk. The command apparently gives the user a choice between "FAT" and "FAT 32". It's an old device. My best course of action probably is to ask the manufacturer, which is still in business. The manual probably assumes the user is using Windows 95, however. Also, a part on the device has broken since I asked. I may or may not be able to fix it. – steve Dec 22 '14 at 2:29
  • I agree that FAT16 is the most likely variant, since it was introduced in 1984 (or 1987, from Compaq DOS 3.31). – Scott Earle Dec 22 '14 at 8:01

This should do the trick:

In Terminal:

diskutil eraseDisk MS-DOS <newname> <diskID>

where is the new name for the disk and is the disk identifier (you can find this by getting the disk info from Finder or Disk Utility, or by typing "diskutil list" into Terminal).

  • Isn't FAT 32 the only FAT that Disk Utility will construct? – steve Dec 22 '14 at 2:46
  • Not if you use the terminal version. Type "diskutil" in terminal for more info. – electroducer Dec 22 '14 at 3:31

If you tell OS X to format a disk or volume in "MS-DOS" format, it'll try to choose the "best" option from FAT12, FAT16, or FAT32, based on the volume's size. If you need to override its choice, you have to use the command-line diskutil command with a more explicit volume format like "MS-DOS FAT16". Here's an example:

$ diskutil info /Volumes/UNTITLED/
   Device Identifier:        disk2s1
   Device Node:              /dev/disk2s1
   Part of Whole:            disk2

   File System Personality:  MS-DOS FAT32
   Type (Bundle):            msdos
   Name (User Visible):      MS-DOS (FAT32)

   Partition Type:           DOS_FAT_32

...note that at this point, I could either erase & reformat just the volume (disk2s1) or the entire disk (disk2). If the disk isn't partitioned into multiple volumes, it doesn't make much difference. I'll do the whole disk for demo purposes:

$ diskutil erasedisk "MS-DOS FAT16" CUSTOMVOL disk2
   Started erase on disk2
   $<3>Unmounting disk
   $<3>Creating the partition map
   $<3>Waiting for the disks to reappear
   $<3>Formatting disk2s1 as MS-DOS (FAT16) with name CUSTOMVOL
   $<3>512 bytes per physical sector
   /dev/rdisk2s1: 1999456 sectors in 62483 FAT16 clusters (16384 bytes/cluster)
   bps=512 spc=32 res=1 nft=2 rde=512 mid=0xf8 spf=245 spt=32 hds=128 hid=40 drv=0x80 bsec=1999984
   $<3>Mounting disk
   $<3>Finished erase on disk2

$ diskutil info /Volumes/CUSTOMVOL
   Device Identifier:        disk2s1
   Device Node:              /dev/disk2s1
   Part of Whole:            disk2
   Device / Media Name:      CUSTOMVOL

   File System Personality:  MS-DOS FAT16
   Type (Bundle):            msdos
   Name (User Visible):      MS-DOS (FAT16)

   Partition Type:           Microsoft Basic Data

Note that you can use diskutil listFilesystems to get a complete list of the volume formats it knows about.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .