56

I've been looking around for a way to do this for a while, but I haven't been able to find the answer. I need to format my 2 GB SD card to FAT-32, but I don't see the option in Disk Utility.

If I select the SD drive (Apple SDXC Reader Media) and go to 'Erase,' I have the following format options:

  • Mac OS extended (Journaled)
  • Mac OS extended (Journaled, Encrypted)
  • Mac OS extended (Case sensitive, Journaled)
  • Mac OS extended (Case sensitive, Journaled, Encrypted)
  • MS DOS (FAT)
  • ExFAT

Doing the same, but selecting the SD card itself (in my case, NO NAME), I get all the same results, minus Mac OS X's with encryption.

I have read that selecting MS-DOS will chose between FAT-16 and -32, depending on the SD card's size. However, I have a 2 GB one.

Format:            MS-DOS (FAT16)
Owners Enabled:    No
Number of Folders: 0
Capacity:          1.98 GB (1,975,546,368 Bytes)
Available:         1.79 GB (1,789,296,640 Bytes)
Used:              186 MB (185,991,168 Bytes)  --> (I have already backed up)
Number of Files:   512

migrated from stackoverflow.com Jan 3 '13 at 17:47

This question came from our site for professional and enthusiast programmers.

  • Seems like disk numbers greater than 1 should be used in all answers to this lest users erase their main drive. I know most main drives are disk0s but still, let's add a margin of safety – JohnAllen Feb 29 '16 at 17:08
109

If you're comfortable with using the Terminal, try this:

First, look at the partition table by running this command:

diskutil list

You should see something like this:

/dev/disk1
#:                       TYPE NAME                    SIZE       IDENTIFIER
0:      GUID_partition_scheme                        *16.0 GB    disk1
1:                        EFI                         209.7 MB   disk1s1
2:                  Apple_HFS Example                 15.7 GB    disk1s2

The partition we want to change is /dev/disk1.

We want to change the device to an MBR-formatted FAT32 partition. To do that, run this command:

sudo diskutil eraseDisk FAT32 NAME MBRFormat /dev/disk1

where NAME is the name you want to give to the disk.

As mentioned in the comments, you cannot put square brackets into the volume's name lest things mess up. To avoid having everything fail, simply ensure that there are no square brackets in the FAT32 volume's new name.

  • When I did the 'diskutil list' command, I got the following for disk1: /dev/disk1 #: TYPE NAME SIZE IDENTIFIER 0: FDisk_partition_scheme *2.0 GB disk1 1: DOS_FAT_16 NO NAME 2.0 GB disk1s1 With the second command, I got: (In next comment) – Matt Reynolds Jan 3 '13 at 18:38
  • Started erase on disk1 Unmounting disk Creating the partition map Waiting for the disks to reappear Formatting disk1s1 as MS-DOS (FAT32) with name [NAME] newfs_msdos: [NAME]: bad volume name Mounting disk Could not mount disk1s1 with name (null) after erase Error: -69832: File system formatter failed (Yeah, I left it as [Name] cuz I was in a hurry) – Matt Reynolds Jan 3 '13 at 18:41
  • And it doesn't show up in finder, and plugging it in brings up a window saying "The disk you inserted was not readable by this computer" and the buttons "Initialize," "Ignore," and "Eject." – Matt Reynolds Jan 3 '13 at 18:44
  • 3
    I've learned something today: if you try to put square brackets into a FAT32 volume name, things will break badly. – Alex Plumb Jan 3 '13 at 20:08
  • 1
    If the SD card is write-protected the result is a rather misleading error message. Perhaps you can include that in the answer? – Peter Mortensen Dec 25 '15 at 18:14
20
sudo diskutil eraseDisk FAT32 [NAME] MBRFormat /dev/disk1

Where [NAME] must be written in CAPITAL letters; otherwise, this will not work.


As mentioned in the comments, ensure that you use a tool such as diskutil to check which disk you are formatting. In the example above, the disk /dev/disk1 is being formatted. After finding the desired partition through a method such as calling diskutil list (This command lists the partitions on the system. See other answer for details), replace dev/disk1 with the desired partition.

  • 11
    This answer is pretty risky if you haven't first used some tool like diskutil to determine which device your SD card is. On my machine, the SD card is /dev/disk2. Good thing I didn't follow this answer blindly! – LarsH Jan 19 '15 at 16:48
  • 1
    If the SD card is write-protected the result is a rather misleading error message. Perhaps you can include that in the answer? – Peter Mortensen Dec 25 '15 at 18:15
3

This answer is appended as a solution for all those older Apple Mac versions, such as Snow Leopard 10.6.8, where "FAT32" as the filesystem type does NOT work as per the example below:

$diskutil eraseDisk fat32 mydiskname MBRFormat /dev/disk1

fat32 does not appear to be a valid file system format
Use diskutil listFilesystems to view a list of supported file systems

The internal command is:
diskutil eraseDisk filesystem disklabel MBRFormat device

where device is determined to be your SD Card using the command diskutil list.

Find the correct filesystem alias by typing this in Terminal:

$diskutil listFilesystems

Formattable filesystems

These file system personalities can be used for erasing and partitioning.
When specifying one as a parameter to a verb, case is not considered;
also, diskutil allows certain aliases which are themselves case-insensitive.

-------------------------------------------------------------------------------
PERSONALITY                     USER VISIBLE NAME                               
-------------------------------------------------------------------------------
ExFAT                           ExFAT                                           
Free Space                      Free Space                                      
  (or) free
MS-DOS                          MS-DOS (FAT)                                    
MS-DOS FAT12                    MS-DOS (FAT12)                                  
MS-DOS FAT16                    MS-DOS (FAT16)                                  
MS-DOS FAT32                    MS-DOS (FAT32)                                  
HFS+                            Mac OS Extended                                 
Case-sensitive HFS+             Mac OS Extended (Case-sensitive)                
  (or) hfsx
Case-sensitive Journaled HFS+   Mac OS Extended (Case-sensitive, Journaled)     
  (or) jhfsx
Journaled HFS+                  Mac OS Extended (Journaled)                     
  (or) jhfs+

In the output above you will see that there are aliases defined by "(or) something" but there is no alias for the FAT32 filesystem. You must specify the full name "ms-dos fat32" regardless of case.

Therefore, for an SD card connected as /dev/disk1, the correct procedure is:

  1. Close any applications and exit any terminal prompt accessing the disk.
  2. If you want to do everything manually then unmount the disk using:
    $diskutil unmountDisk /dev/disk1
    However, diskutil automatically attempts to unmount it.
  3. Enter the following command, specifying your disk label and device appropriately:
    $diskutil eraseDisk "ms-dos fat32" mydiskname MBRFormat /dev/disk1

Output is:

Started erase on disk1
Unmounting disk
Creating partition map
Waiting for disks to reappear
Formatting disk1s1 as MS-DOS (FAT32) with name mydiskname
Finished erase on disk1

Finally, check the result using diskutil list:

$diskutil list /dev/disk1

/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *1.0 GB     disk1
   1:                 DOS_FAT_32 MYDISKNAME              1.0 GB     disk1s1
  • this save me for long day of reaserach you deserve the upvote – Espoir Murhabazi Nov 19 '17 at 9:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.