diff --git a/components/micropython/vendor/extmod/vfs_posix.c b/components/micropython/vendor/extmod/vfs_posix.c
index bb39e7b98fde22edfe4e1a6131220e1ae97af2cd..b6c55610a1ac7f4795afb1ce42abe4ce6c892ef8 100644
--- a/components/micropython/vendor/extmod/vfs_posix.c
+++ b/components/micropython/vendor/extmod/vfs_posix.c
@@ -348,7 +348,7 @@ STATIC mp_obj_t vfs_posix_statvfs(mp_obj_t self_in, mp_obj_t path_in) {
     mp_obj_tuple_t *t = MP_OBJ_TO_PTR(mp_obj_new_tuple(10, NULL));
     t->items[0] = MP_OBJ_NEW_SMALL_INT(0); // bsize
     t->items[1] = MP_OBJ_NEW_SMALL_INT(statvfs_array[1]); // frsize
-    t->items[2] = MP_OBJ_NEW_SMALL_INT(0); // blocks
+    t->items[2] = MP_OBJ_NEW_SMALL_INT(statvfs_array[2]); // blocks
     t->items[3] = MP_OBJ_NEW_SMALL_INT(statvfs_array[3]); // bfree
     t->items[4] = MP_OBJ_NEW_SMALL_INT(statvfs_array[4]); // bavail
     t->items[5] = MP_OBJ_NEW_SMALL_INT(0);
diff --git a/components/micropython/vendor/ports/esp32/flow3r_statvfs.c b/components/micropython/vendor/ports/esp32/flow3r_statvfs.c
index 8997891b80d4c891d063fd267029f4faaa4a2347..5b97602d662f22dade9a9012b39e1b4d52078b91 100644
--- a/components/micropython/vendor/ports/esp32/flow3r_statvfs.c
+++ b/components/micropython/vendor/ports/esp32/flow3r_statvfs.c
@@ -13,6 +13,7 @@ void get_statvfs(char* drive, uint32_t *out) {
     uint32_t sector_size = fs->ssize;
 
     out[1] = fs->ssize;  // frsize, mapped to sector size
+    out[2] = tot_sect;  // blocks, mapped to total sectors
     out[3] = fre_sect;  // bfree, mapped to free sectors
-    out[4] = tot_sect;  // bavail, mapped to total sectors
+    out[4] = fre_sect;  // bavail, mapped to free sectors
 }