diff --git a/extmod/vfs_fat.c b/extmod/vfs_fat.c
index 024cecfe939ace308ecfdf480e9e9b3e70273c0b..ec7aaed388c6934c9fd553ecb41e721624e0fdab 100644
--- a/extmod/vfs_fat.c
+++ b/extmod/vfs_fat.c
@@ -113,6 +113,9 @@ STATIC mp_obj_t fat_vfs_mkfs(mp_obj_t bdev_in) {
     // make the filesystem
     uint8_t working_buf[FF_MAX_SS];
     FRESULT res = f_mkfs(&vfs->fatfs, FM_FAT | FM_SFD, 0, working_buf, sizeof(working_buf));
+    if (res == FR_MKFS_ABORTED) { // Probably doesn't support FAT16
+        res = f_mkfs(&vfs->fatfs, FM_FAT32, 0, working_buf, sizeof(working_buf));
+    }
     if (res != FR_OK) {
         mp_raise_OSError(fresult_to_errno_table[res]);
     }