I want to prepare an SD card for use in an old camera using CHDK. The card needs to be FAT16 formatted. This doesn’t work from Terminal anymore, maybe already for years. Disk Utility provides ''FAT'', but this is FAT32. I have no other (Windows) computer. What do I do?
You can format any drive to FAT16 with
1) Launch Terminal
2) Find The Drive you Want to Format
#mount /dev/disk2 on / (hfs, local, journaled) devfs on /dev (devfs, local, nobrowse) /dev/disk4s1 on /Volumes/USB_Disk (msdos, local, nodev, nosuid, noowners)
In this case, my disk is disk4. Your disk will most likely be different! Be sure to reference the correct disk - you can and will lose your data if you format the wrong drive!!!
3) Unmount the disk
#diskutil unmountDisk disk4 Unmount of all volumes on disk4 was successful
4) Format the drive
#sudo newfs_msdos -F 16 /dev/disk4
After a few moments, your drive will format.
5) Remount the drive (optional)
#diskutil mount /dev/disk4
It will probably show up as
"NO NAME" on your Desktop. You can rename it here or to do it at the time of formatting use
-v Type in a Volume Name when you format the drive.
I spend all evening to understand how to format a USB stick to FAT16 and its so simple and just copy these commands to your terminal:
diskutil unmountDisk disk4
sudo newfs_msdos -F 16 /dev/disk4
diskutil mount /dev/disk4
This works for all sizes of drives.
Note: For other users: the reference to
disk4 in the commands above may need to be changed to ensure it refers to the correct drive.
For what it's worth, this seems to work on High Sierra:
diskutil eraseDisk "MS-DOS FAT16" SOMENAME /dev/disk#
It still needs to be unmounted first.
Why so hard to explain things, it is the main reason why many new users get away from linux.
Just do mkfs.vfat -F16 /dev/sdb(x) if you want to name the USb, flash, etc... put this in addiction -n (name), then it looks like this:
mkfs.vfat -F16 /dev/sdb(x) -n (name) and hit enter.