diff --git a/boards.txt b/boards.txt
index 3b44de2f796..d9326f704dd 100644
--- a/boards.txt
+++ b/boards.txt
@@ -6013,7 +6013,7 @@ adafruit_metro_esp32s2.upload.tool.network=esp_ota
 adafruit_metro_esp32s2.upload.maximum_size=1310720
 adafruit_metro_esp32s2.upload.maximum_data_size=327680
 adafruit_metro_esp32s2.upload.flags=
-adafruit_metro_esp32s2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin"
+adafruit_metro_esp32s2.upload.extra_flags=
 adafruit_metro_esp32s2.upload.use_1200bps_touch=true
 adafruit_metro_esp32s2.upload.wait_for_upload_port=true
 
@@ -6066,13 +6066,15 @@ adafruit_metro_esp32s2.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM
 adafruit_metro_esp32s2.menu.PSRAM.disabled=Disabled
 adafruit_metro_esp32s2.menu.PSRAM.disabled.build.defines=
 
+adafruit_metro_esp32s2.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FFAT)
+adafruit_metro_esp32s2.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2
+adafruit_metro_esp32s2.menu.PartitionScheme.tinyuf2.build.custom_partitions=partitions-4MB-tinyuf2
+adafruit_metro_esp32s2.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792
+adafruit_metro_esp32s2.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin"
 adafruit_metro_esp32s2.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)
 adafruit_metro_esp32s2.menu.PartitionScheme.default.build.partitions=default
 adafruit_metro_esp32s2.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS)
 adafruit_metro_esp32s2.menu.PartitionScheme.defaultffat.build.partitions=default_ffat
-adafruit_metro_esp32s2.menu.PartitionScheme.default_8MB=8M Flash (3MB APP/1.5MB FAT)
-adafruit_metro_esp32s2.menu.PartitionScheme.default_8MB.build.partitions=default_8MB
-adafruit_metro_esp32s2.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336
 adafruit_metro_esp32s2.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS)
 adafruit_metro_esp32s2.menu.PartitionScheme.minimal.build.partitions=minimal
 adafruit_metro_esp32s2.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS)
@@ -6093,12 +6095,6 @@ adafruit_metro_esp32s2.menu.PartitionScheme.huge_app.upload.maximum_size=3145728
 adafruit_metro_esp32s2.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS)
 adafruit_metro_esp32s2.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs
 adafruit_metro_esp32s2.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080
-adafruit_metro_esp32s2.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FAT)
-adafruit_metro_esp32s2.menu.PartitionScheme.fatflash.build.partitions=ffat
-adafruit_metro_esp32s2.menu.PartitionScheme.fatflash.upload.maximum_size=2097152
-adafruit_metro_esp32s2.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9MB FATFS)
-adafruit_metro_esp32s2.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB
-adafruit_metro_esp32s2.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728
 
 adafruit_metro_esp32s2.menu.CPUFreq.240=240MHz (WiFi)
 adafruit_metro_esp32s2.menu.CPUFreq.240.build.f_cpu=240000000L
@@ -6190,7 +6186,7 @@ adafruit_magtag29_esp32s2.upload.tool.network=esp_ota
 adafruit_magtag29_esp32s2.upload.maximum_size=1310720
 adafruit_magtag29_esp32s2.upload.maximum_data_size=327680
 adafruit_magtag29_esp32s2.upload.flags=
-adafruit_magtag29_esp32s2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin"
+adafruit_magtag29_esp32s2.upload.extra_flags=
 adafruit_magtag29_esp32s2.upload.use_1200bps_touch=true
 adafruit_magtag29_esp32s2.upload.wait_for_upload_port=true
 
@@ -6243,13 +6239,15 @@ adafruit_magtag29_esp32s2.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM
 adafruit_magtag29_esp32s2.menu.PSRAM.disabled=Disabled
 adafruit_magtag29_esp32s2.menu.PSRAM.disabled.build.defines=
 
+adafruit_magtag29_esp32s2.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FFAT)
+adafruit_magtag29_esp32s2.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2
+adafruit_magtag29_esp32s2.menu.PartitionScheme.tinyuf2.build.custom_partitions=partitions-4MB-tinyuf2
+adafruit_magtag29_esp32s2.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792
+adafruit_magtag29_esp32s2.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin"
 adafruit_magtag29_esp32s2.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)
 adafruit_magtag29_esp32s2.menu.PartitionScheme.default.build.partitions=default
 adafruit_magtag29_esp32s2.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS)
 adafruit_magtag29_esp32s2.menu.PartitionScheme.defaultffat.build.partitions=default_ffat
-adafruit_magtag29_esp32s2.menu.PartitionScheme.default_8MB=8M Flash (3MB APP/1.5MB FAT)
-adafruit_magtag29_esp32s2.menu.PartitionScheme.default_8MB.build.partitions=default_8MB
-adafruit_magtag29_esp32s2.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336
 adafruit_magtag29_esp32s2.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS)
 adafruit_magtag29_esp32s2.menu.PartitionScheme.minimal.build.partitions=minimal
 adafruit_magtag29_esp32s2.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS)
@@ -6270,12 +6268,6 @@ adafruit_magtag29_esp32s2.menu.PartitionScheme.huge_app.upload.maximum_size=3145
 adafruit_magtag29_esp32s2.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS)
 adafruit_magtag29_esp32s2.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs
 adafruit_magtag29_esp32s2.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080
-adafruit_magtag29_esp32s2.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FAT)
-adafruit_magtag29_esp32s2.menu.PartitionScheme.fatflash.build.partitions=ffat
-adafruit_magtag29_esp32s2.menu.PartitionScheme.fatflash.upload.maximum_size=2097152
-adafruit_magtag29_esp32s2.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9MB FATFS)
-adafruit_magtag29_esp32s2.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB
-adafruit_magtag29_esp32s2.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728
 
 adafruit_magtag29_esp32s2.menu.CPUFreq.240=240MHz (WiFi)
 adafruit_magtag29_esp32s2.menu.CPUFreq.240.build.f_cpu=240000000L
@@ -6367,7 +6359,7 @@ adafruit_funhouse_esp32s2.upload.tool.network=esp_ota
 adafruit_funhouse_esp32s2.upload.maximum_size=1310720
 adafruit_funhouse_esp32s2.upload.maximum_data_size=327680
 adafruit_funhouse_esp32s2.upload.flags=
-adafruit_funhouse_esp32s2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin"
+adafruit_funhouse_esp32s2.upload.extra_flags=
 adafruit_funhouse_esp32s2.upload.use_1200bps_touch=true
 adafruit_funhouse_esp32s2.upload.wait_for_upload_port=true
 
@@ -6420,13 +6412,15 @@ adafruit_funhouse_esp32s2.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM
 adafruit_funhouse_esp32s2.menu.PSRAM.disabled=Disabled
 adafruit_funhouse_esp32s2.menu.PSRAM.disabled.build.defines=
 
+adafruit_funhouse_esp32s2.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FFAT)
+adafruit_funhouse_esp32s2.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2
+adafruit_funhouse_esp32s2.menu.PartitionScheme.tinyuf2.build.custom_partitions=partitions-4MB-tinyuf2
+adafruit_funhouse_esp32s2.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792
+adafruit_funhouse_esp32s2.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin"
 adafruit_funhouse_esp32s2.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)
 adafruit_funhouse_esp32s2.menu.PartitionScheme.default.build.partitions=default
 adafruit_funhouse_esp32s2.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS)
 adafruit_funhouse_esp32s2.menu.PartitionScheme.defaultffat.build.partitions=default_ffat
-adafruit_funhouse_esp32s2.menu.PartitionScheme.default_8MB=8M Flash (3MB APP/1.5MB FAT)
-adafruit_funhouse_esp32s2.menu.PartitionScheme.default_8MB.build.partitions=default_8MB
-adafruit_funhouse_esp32s2.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336
 adafruit_funhouse_esp32s2.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS)
 adafruit_funhouse_esp32s2.menu.PartitionScheme.minimal.build.partitions=minimal
 adafruit_funhouse_esp32s2.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS)
@@ -6447,12 +6441,6 @@ adafruit_funhouse_esp32s2.menu.PartitionScheme.huge_app.upload.maximum_size=3145
 adafruit_funhouse_esp32s2.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS)
 adafruit_funhouse_esp32s2.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs
 adafruit_funhouse_esp32s2.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080
-adafruit_funhouse_esp32s2.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FAT)
-adafruit_funhouse_esp32s2.menu.PartitionScheme.fatflash.build.partitions=ffat
-adafruit_funhouse_esp32s2.menu.PartitionScheme.fatflash.upload.maximum_size=2097152
-adafruit_funhouse_esp32s2.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9MB FATFS)
-adafruit_funhouse_esp32s2.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB
-adafruit_funhouse_esp32s2.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728
 
 adafruit_funhouse_esp32s2.menu.CPUFreq.240=240MHz (WiFi)
 adafruit_funhouse_esp32s2.menu.CPUFreq.240.build.f_cpu=240000000L
@@ -6544,7 +6532,7 @@ adafruit_feather_esp32s2.upload.tool.network=esp_ota
 adafruit_feather_esp32s2.upload.maximum_size=1310720
 adafruit_feather_esp32s2.upload.maximum_data_size=327680
 adafruit_feather_esp32s2.upload.flags=
-adafruit_feather_esp32s2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin"
+adafruit_feather_esp32s2.upload.extra_flags=
 adafruit_feather_esp32s2.upload.use_1200bps_touch=true
 adafruit_feather_esp32s2.upload.wait_for_upload_port=true
 
@@ -6597,13 +6585,15 @@ adafruit_feather_esp32s2.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM
 adafruit_feather_esp32s2.menu.PSRAM.disabled=Disabled
 adafruit_feather_esp32s2.menu.PSRAM.disabled.build.defines=
 
+adafruit_feather_esp32s2.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FFAT)
+adafruit_feather_esp32s2.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2
+adafruit_feather_esp32s2.menu.PartitionScheme.tinyuf2.build.custom_partitions=partitions-4MB-tinyuf2
+adafruit_feather_esp32s2.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792
+adafruit_feather_esp32s2.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin"
 adafruit_feather_esp32s2.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)
 adafruit_feather_esp32s2.menu.PartitionScheme.default.build.partitions=default
 adafruit_feather_esp32s2.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS)
 adafruit_feather_esp32s2.menu.PartitionScheme.defaultffat.build.partitions=default_ffat
-adafruit_feather_esp32s2.menu.PartitionScheme.default_8MB=8M Flash (3MB APP/1.5MB FAT)
-adafruit_feather_esp32s2.menu.PartitionScheme.default_8MB.build.partitions=default_8MB
-adafruit_feather_esp32s2.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336
 adafruit_feather_esp32s2.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS)
 adafruit_feather_esp32s2.menu.PartitionScheme.minimal.build.partitions=minimal
 adafruit_feather_esp32s2.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS)
@@ -6624,12 +6614,6 @@ adafruit_feather_esp32s2.menu.PartitionScheme.huge_app.upload.maximum_size=31457
 adafruit_feather_esp32s2.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS)
 adafruit_feather_esp32s2.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs
 adafruit_feather_esp32s2.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080
-adafruit_feather_esp32s2.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FAT)
-adafruit_feather_esp32s2.menu.PartitionScheme.fatflash.build.partitions=ffat
-adafruit_feather_esp32s2.menu.PartitionScheme.fatflash.upload.maximum_size=2097152
-adafruit_feather_esp32s2.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9MB FATFS)
-adafruit_feather_esp32s2.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB
-adafruit_feather_esp32s2.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728
 
 adafruit_feather_esp32s2.menu.CPUFreq.240=240MHz (WiFi)
 adafruit_feather_esp32s2.menu.CPUFreq.240.build.f_cpu=240000000L
@@ -6721,7 +6705,7 @@ adafruit_feather_esp32s2_tft.upload.tool.network=esp_ota
 adafruit_feather_esp32s2_tft.upload.maximum_size=1310720
 adafruit_feather_esp32s2_tft.upload.maximum_data_size=327680
 adafruit_feather_esp32s2_tft.upload.flags=
-adafruit_feather_esp32s2_tft.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin"
+adafruit_feather_esp32s2_tft.upload.extra_flags=
 adafruit_feather_esp32s2_tft.upload.use_1200bps_touch=true
 adafruit_feather_esp32s2_tft.upload.wait_for_upload_port=true
 
@@ -6767,13 +6751,15 @@ adafruit_feather_esp32s2_tft.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM
 adafruit_feather_esp32s2_tft.menu.PSRAM.disabled=Disabled
 adafruit_feather_esp32s2_tft.menu.PSRAM.disabled.build.defines=
 
+adafruit_feather_esp32s2_tft.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FFAT)
+adafruit_feather_esp32s2_tft.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2
+adafruit_feather_esp32s2_tft.menu.PartitionScheme.tinyuf2.build.custom_partitions=partitions-4MB-tinyuf2
+adafruit_feather_esp32s2_tft.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792
+adafruit_feather_esp32s2_tft.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin"
 adafruit_feather_esp32s2_tft.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)
 adafruit_feather_esp32s2_tft.menu.PartitionScheme.default.build.partitions=default
 adafruit_feather_esp32s2_tft.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS)
 adafruit_feather_esp32s2_tft.menu.PartitionScheme.defaultffat.build.partitions=default_ffat
-adafruit_feather_esp32s2_tft.menu.PartitionScheme.default_8MB=8M Flash (3MB APP/1.5MB FAT)
-adafruit_feather_esp32s2_tft.menu.PartitionScheme.default_8MB.build.partitions=default_8MB
-adafruit_feather_esp32s2_tft.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336
 adafruit_feather_esp32s2_tft.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS)
 adafruit_feather_esp32s2_tft.menu.PartitionScheme.minimal.build.partitions=minimal
 adafruit_feather_esp32s2_tft.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS)
@@ -6794,12 +6780,6 @@ adafruit_feather_esp32s2_tft.menu.PartitionScheme.huge_app.upload.maximum_size=3
 adafruit_feather_esp32s2_tft.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS)
 adafruit_feather_esp32s2_tft.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs
 adafruit_feather_esp32s2_tft.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080
-adafruit_feather_esp32s2_tft.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FAT)
-adafruit_feather_esp32s2_tft.menu.PartitionScheme.fatflash.build.partitions=ffat
-adafruit_feather_esp32s2_tft.menu.PartitionScheme.fatflash.upload.maximum_size=2097152
-adafruit_feather_esp32s2_tft.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9MB FATFS)
-adafruit_feather_esp32s2_tft.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB
-adafruit_feather_esp32s2_tft.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728
 
 adafruit_feather_esp32s2_tft.menu.CPUFreq.240=240MHz (WiFi)
 adafruit_feather_esp32s2_tft.menu.CPUFreq.240.build.f_cpu=240000000L
@@ -6891,7 +6871,7 @@ adafruit_qtpy_esp32s2.upload.tool.network=esp_ota
 adafruit_qtpy_esp32s2.upload.maximum_size=1310720
 adafruit_qtpy_esp32s2.upload.maximum_data_size=327680
 adafruit_qtpy_esp32s2.upload.flags=
-adafruit_qtpy_esp32s2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin"
+adafruit_qtpy_esp32s2.upload.extra_flags=
 adafruit_qtpy_esp32s2.upload.use_1200bps_touch=true
 adafruit_qtpy_esp32s2.upload.wait_for_upload_port=true
 
@@ -6937,13 +6917,15 @@ adafruit_qtpy_esp32s2.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM
 adafruit_qtpy_esp32s2.menu.PSRAM.disabled=Disabled
 adafruit_qtpy_esp32s2.menu.PSRAM.disabled.build.defines=
 
+adafruit_qtpy_esp32s2.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FFAT)
+adafruit_qtpy_esp32s2.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2
+adafruit_qtpy_esp32s2.menu.PartitionScheme.tinyuf2.build.custom_partitions=partitions-4MB-tinyuf2
+adafruit_qtpy_esp32s2.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792
+adafruit_qtpy_esp32s2.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin"
 adafruit_qtpy_esp32s2.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)
 adafruit_qtpy_esp32s2.menu.PartitionScheme.default.build.partitions=default
 adafruit_qtpy_esp32s2.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS)
 adafruit_qtpy_esp32s2.menu.PartitionScheme.defaultffat.build.partitions=default_ffat
-adafruit_qtpy_esp32s2.menu.PartitionScheme.default_8MB=8M Flash (3MB APP/1.5MB FAT)
-adafruit_qtpy_esp32s2.menu.PartitionScheme.default_8MB.build.partitions=default_8MB
-adafruit_qtpy_esp32s2.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336
 adafruit_qtpy_esp32s2.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS)
 adafruit_qtpy_esp32s2.menu.PartitionScheme.minimal.build.partitions=minimal
 adafruit_qtpy_esp32s2.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS)
@@ -6964,12 +6946,6 @@ adafruit_qtpy_esp32s2.menu.PartitionScheme.huge_app.upload.maximum_size=3145728
 adafruit_qtpy_esp32s2.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS)
 adafruit_qtpy_esp32s2.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs
 adafruit_qtpy_esp32s2.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080
-adafruit_qtpy_esp32s2.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FAT)
-adafruit_qtpy_esp32s2.menu.PartitionScheme.fatflash.build.partitions=ffat
-adafruit_qtpy_esp32s2.menu.PartitionScheme.fatflash.upload.maximum_size=2097152
-adafruit_qtpy_esp32s2.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9MB FATFS)
-adafruit_qtpy_esp32s2.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB
-adafruit_qtpy_esp32s2.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728
 
 adafruit_qtpy_esp32s2.menu.CPUFreq.240=240MHz (WiFi)
 adafruit_qtpy_esp32s2.menu.CPUFreq.240.build.f_cpu=240000000L
@@ -7178,6 +7154,7 @@ adafruit_qtpy_esp32c3.menu.DebugLevel.debug.build.code_debug=4
 adafruit_qtpy_esp32c3.menu.DebugLevel.verbose=Verbose
 adafruit_qtpy_esp32c3.menu.DebugLevel.verbose.build.code_debug=5
 
+##############################################################
 
 adafruit_qtpy_esp32_pico.name=Adafruit QT Py ESP32
 
@@ -7256,7 +7233,7 @@ adafruit_qtpy_esp32_pico.menu.DebugLevel.debug.build.code_debug=4
 adafruit_qtpy_esp32_pico.menu.DebugLevel.verbose=Verbose
 adafruit_qtpy_esp32_pico.menu.DebugLevel.verbose.build.code_debug=5
 
-
+##############################################################
 
 adafruit_feather_esp32_v2.name=Adafruit Feather ESP32 V2
 
@@ -7356,7 +7333,7 @@ adafruit_feather_esp32s3.upload.tool.network=esp_ota
 adafruit_feather_esp32s3.upload.maximum_size=1310720
 adafruit_feather_esp32s3.upload.maximum_data_size=327680
 adafruit_feather_esp32s3.upload.flags=
-adafruit_feather_esp32s3.upload.extra_flags=0x410000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin"
+adafruit_feather_esp32s3.upload.extra_flags=
 adafruit_feather_esp32s3.upload.use_1200bps_touch=true
 adafruit_feather_esp32s3.upload.wait_for_upload_port=true
 
@@ -7382,17 +7359,51 @@ adafruit_feather_esp32s3.build.flash_mode=dio
 adafruit_feather_esp32s3.build.boot=qio
 adafruit_feather_esp32s3.build.partitions=default
 adafruit_feather_esp32s3.build.defines=
-adafruit_feather_esp32s3.build.loop_core=-DARDUINO_RUNNING_CORE=1
-adafruit_feather_esp32s3.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=1
-
-adafruit_feather_esp32s3.menu.USBMode.default=USB-OTG
+adafruit_feather_esp32s3.build.loop_core=
+adafruit_feather_esp32s3.build.event_core=
+adafruit_feather_esp32s3.build.flash_type=qspi
+adafruit_feather_esp32s3.build.psram_type=qspi
+adafruit_feather_esp32s3.build.memory_type={build.flash_type}_{build.psram_type}
+
+adafruit_feather_esp32s3.menu.FlashMode.qio=QIO 80MHz
+adafruit_feather_esp32s3.menu.FlashMode.qio.build.flash_mode=dio
+adafruit_feather_esp32s3.menu.FlashMode.qio.build.boot=qio
+adafruit_feather_esp32s3.menu.FlashMode.qio.build.boot_freq=80m
+adafruit_feather_esp32s3.menu.FlashMode.qio.build.flash_freq=80m
+adafruit_feather_esp32s3.menu.FlashMode.qio.build.flash_type=qspi
+adafruit_feather_esp32s3.menu.FlashMode.qio120=QIO 120MHz
+adafruit_feather_esp32s3.menu.FlashMode.qio120.build.flash_mode=dio
+adafruit_feather_esp32s3.menu.FlashMode.qio120.build.boot=qio
+adafruit_feather_esp32s3.menu.FlashMode.qio120.build.boot_freq=120m
+adafruit_feather_esp32s3.menu.FlashMode.qio120.build.flash_freq=80m
+adafruit_feather_esp32s3.menu.FlashMode.qio120.build.flash_type=qspi
+adafruit_feather_esp32s3.menu.FlashMode.dio=DIO 80MHz
+adafruit_feather_esp32s3.menu.FlashMode.dio.build.flash_mode=dio
+adafruit_feather_esp32s3.menu.FlashMode.dio.build.boot=dio
+adafruit_feather_esp32s3.menu.FlashMode.dio.build.boot_freq=80m
+adafruit_feather_esp32s3.menu.FlashMode.dio.build.flash_freq=80m
+adafruit_feather_esp32s3.menu.FlashMode.dio.build.flash_type=qspi
+adafruit_feather_esp32s3.menu.FlashMode.opi=OPI 80MHz
+adafruit_feather_esp32s3.menu.FlashMode.opi.build.flash_mode=dout
+adafruit_feather_esp32s3.menu.FlashMode.opi.build.boot=opi
+adafruit_feather_esp32s3.menu.FlashMode.opi.build.boot_freq=80m
+adafruit_feather_esp32s3.menu.FlashMode.opi.build.flash_freq=80m
+adafruit_feather_esp32s3.menu.FlashMode.opi.build.flash_type=opi
+
+adafruit_feather_esp32s3.menu.LoopCore.1=Core 1
+adafruit_feather_esp32s3.menu.LoopCore.1.build.loop_core=-DARDUINO_RUNNING_CORE=1
+adafruit_feather_esp32s3.menu.LoopCore.0=Core 0
+adafruit_feather_esp32s3.menu.LoopCore.0.build.loop_core=-DARDUINO_RUNNING_CORE=0
+
+adafruit_feather_esp32s3.menu.EventsCore.1=Core 1
+adafruit_feather_esp32s3.menu.EventsCore.1.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=1
+adafruit_feather_esp32s3.menu.EventsCore.0=Core 0
+adafruit_feather_esp32s3.menu.EventsCore.0.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=0
+
+adafruit_feather_esp32s3.menu.USBMode.default=USB-OTG (TinyUSB)
 adafruit_feather_esp32s3.menu.USBMode.default.build.usb_mode=0
-adafruit_feather_esp32s3.menu.USBMode.default.upload.use_1200bps_touch=true
-adafruit_feather_esp32s3.menu.USBMode.default.upload.wait_for_upload_port=true
 adafruit_feather_esp32s3.menu.USBMode.hwcdc=Hardware CDC and JTAG
 adafruit_feather_esp32s3.menu.USBMode.hwcdc.build.usb_mode=1
-adafruit_feather_esp32s3.menu.USBMode.hwcdc.upload.use_1200bps_touch=false
-adafruit_feather_esp32s3.menu.USBMode.hwcdc.upload.wait_for_upload_port=false
 
 adafruit_feather_esp32s3.menu.CDCOnBoot.cdc=Enabled
 adafruit_feather_esp32s3.menu.CDCOnBoot.cdc.build.cdc_on_boot=1
@@ -7401,47 +7412,29 @@ adafruit_feather_esp32s3.menu.CDCOnBoot.default.build.cdc_on_boot=0
 
 adafruit_feather_esp32s3.menu.MSCOnBoot.default=Disabled
 adafruit_feather_esp32s3.menu.MSCOnBoot.default.build.msc_on_boot=0
-adafruit_feather_esp32s3.menu.MSCOnBoot.msc=Enabled
+adafruit_feather_esp32s3.menu.MSCOnBoot.msc=Enabled (Requires USB-OTG Mode)
 adafruit_feather_esp32s3.menu.MSCOnBoot.msc.build.msc_on_boot=1
 
 adafruit_feather_esp32s3.menu.DFUOnBoot.default=Disabled
 adafruit_feather_esp32s3.menu.DFUOnBoot.default.build.dfu_on_boot=0
-adafruit_feather_esp32s3.menu.DFUOnBoot.dfu=Enabled
+adafruit_feather_esp32s3.menu.DFUOnBoot.dfu=Enabled (Requires USB-OTG Mode)
 adafruit_feather_esp32s3.menu.DFUOnBoot.dfu.build.dfu_on_boot=1
 
-adafruit_feather_esp32s3.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)
-adafruit_feather_esp32s3.menu.PartitionScheme.default.build.partitions=default
-adafruit_feather_esp32s3.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS)
-adafruit_feather_esp32s3.menu.PartitionScheme.defaultffat.build.partitions=default_ffat
-adafruit_feather_esp32s3.menu.PartitionScheme.default_8MB=8M Flash (3MB APP/1.5MB FAT)
+adafruit_feather_esp32s3.menu.UploadMode.cdc=USB-OTG CDC (TinyUSB)
+adafruit_feather_esp32s3.menu.UploadMode.cdc.upload.use_1200bps_touch=true
+adafruit_feather_esp32s3.menu.UploadMode.cdc.upload.wait_for_upload_port=true
+adafruit_feather_esp32s3.menu.UploadMode.default=UART0 / Hardware CDC
+adafruit_feather_esp32s3.menu.UploadMode.default.upload.use_1200bps_touch=false
+adafruit_feather_esp32s3.menu.UploadMode.default.upload.wait_for_upload_port=false
+
+adafruit_feather_esp32s3.menu.PartitionScheme.tinyuf2=TinyUF2 8MB (2MB APP/3.6MB FFAT)
+adafruit_feather_esp32s3.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2
+adafruit_feather_esp32s3.menu.PartitionScheme.tinyuf2.build.custom_partitions=partitions-8MB-tinyuf2
+adafruit_feather_esp32s3.menu.PartitionScheme.tinyuf2.upload.maximum_size=2097152
+adafruit_feather_esp32s3.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x410000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin"
+adafruit_feather_esp32s3.menu.PartitionScheme.default_8MB=8M Flash (3MB APP/1.5MB SPIFFS)
 adafruit_feather_esp32s3.menu.PartitionScheme.default_8MB.build.partitions=default_8MB
 adafruit_feather_esp32s3.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336
-adafruit_feather_esp32s3.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS)
-adafruit_feather_esp32s3.menu.PartitionScheme.minimal.build.partitions=minimal
-adafruit_feather_esp32s3.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS)
-adafruit_feather_esp32s3.menu.PartitionScheme.no_ota.build.partitions=no_ota
-adafruit_feather_esp32s3.menu.PartitionScheme.no_ota.upload.maximum_size=2097152
-adafruit_feather_esp32s3.menu.PartitionScheme.noota_3g=No OTA (1MB APP/3MB SPIFFS)
-adafruit_feather_esp32s3.menu.PartitionScheme.noota_3g.build.partitions=noota_3g
-adafruit_feather_esp32s3.menu.PartitionScheme.noota_3g.upload.maximum_size=1048576
-adafruit_feather_esp32s3.menu.PartitionScheme.noota_ffat=No OTA (2MB APP/2MB FATFS)
-adafruit_feather_esp32s3.menu.PartitionScheme.noota_ffat.build.partitions=noota_ffat
-adafruit_feather_esp32s3.menu.PartitionScheme.noota_ffat.upload.maximum_size=2097152
-adafruit_feather_esp32s3.menu.PartitionScheme.noota_3gffat=No OTA (1MB APP/3MB FATFS)
-adafruit_feather_esp32s3.menu.PartitionScheme.noota_3gffat.build.partitions=noota_3gffat
-adafruit_feather_esp32s3.menu.PartitionScheme.noota_3gffat.upload.maximum_size=1048576
-adafruit_feather_esp32s3.menu.PartitionScheme.huge_app=Huge APP (3MB No OTA/1MB SPIFFS)
-adafruit_feather_esp32s3.menu.PartitionScheme.huge_app.build.partitions=huge_app
-adafruit_feather_esp32s3.menu.PartitionScheme.huge_app.upload.maximum_size=3145728
-adafruit_feather_esp32s3.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS)
-adafruit_feather_esp32s3.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs
-adafruit_feather_esp32s3.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080
-adafruit_feather_esp32s3.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FAT)
-adafruit_feather_esp32s3.menu.PartitionScheme.fatflash.build.partitions=ffat
-adafruit_feather_esp32s3.menu.PartitionScheme.fatflash.upload.maximum_size=2097152
-adafruit_feather_esp32s3.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9MB FATFS)
-adafruit_feather_esp32s3.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB
-adafruit_feather_esp32s3.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728
 
 adafruit_feather_esp32s3.menu.CPUFreq.240=240MHz (WiFi)
 adafruit_feather_esp32s3.menu.CPUFreq.240.build.f_cpu=240000000L
@@ -7456,11 +7449,6 @@ adafruit_feather_esp32s3.menu.CPUFreq.20.build.f_cpu=20000000L
 adafruit_feather_esp32s3.menu.CPUFreq.10=10MHz
 adafruit_feather_esp32s3.menu.CPUFreq.10.build.f_cpu=10000000L
 
-adafruit_feather_esp32s3.menu.FlashFreq.80=80MHz
-adafruit_feather_esp32s3.menu.FlashFreq.80.build.flash_freq=80m
-adafruit_feather_esp32s3.menu.FlashFreq.40=40MHz
-adafruit_feather_esp32s3.menu.FlashFreq.40.build.flash_freq=40m
-
 adafruit_feather_esp32s3.menu.UploadSpeed.921600=921600
 adafruit_feather_esp32s3.menu.UploadSpeed.921600.upload.speed=921600
 adafruit_feather_esp32s3.menu.UploadSpeed.115200=115200
@@ -7510,7 +7498,7 @@ adafruit_qtpy_esp32s3.upload.tool.network=esp_ota
 adafruit_qtpy_esp32s3.upload.maximum_size=1310720
 adafruit_qtpy_esp32s3.upload.maximum_data_size=327680
 adafruit_qtpy_esp32s3.upload.flags=
-adafruit_qtpy_esp32s3.upload.extra_flags=0x410000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin"
+adafruit_qtpy_esp32s3.upload.extra_flags=
 adafruit_qtpy_esp32s3.upload.use_1200bps_touch=true
 adafruit_qtpy_esp32s3.upload.wait_for_upload_port=true
 adafruit_qtpy_esp32s3.upload.speed=921600
@@ -7537,17 +7525,51 @@ adafruit_qtpy_esp32s3.build.flash_mode=dio
 adafruit_qtpy_esp32s3.build.boot=qio
 adafruit_qtpy_esp32s3.build.partitions=default_8MB
 adafruit_qtpy_esp32s3.build.defines=
-adafruit_qtpy_esp32s3.build.loop_core=-DARDUINO_RUNNING_CORE=1
-adafruit_qtpy_esp32s3.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=1
-
-adafruit_qtpy_esp32s3.menu.USBMode.default=USB-OTG
+adafruit_qtpy_esp32s3.build.loop_core=
+adafruit_qtpy_esp32s3.build.event_core=
+adafruit_qtpy_esp32s3.build.flash_type=qspi
+adafruit_qtpy_esp32s3.build.psram_type=qspi
+adafruit_qtpy_esp32s3.build.memory_type={build.flash_type}_{build.psram_type}
+
+adafruit_qtpy_esp32s3.menu.FlashMode.qio=QIO 80MHz
+adafruit_qtpy_esp32s3.menu.FlashMode.qio.build.flash_mode=dio
+adafruit_qtpy_esp32s3.menu.FlashMode.qio.build.boot=qio
+adafruit_qtpy_esp32s3.menu.FlashMode.qio.build.boot_freq=80m
+adafruit_qtpy_esp32s3.menu.FlashMode.qio.build.flash_freq=80m
+adafruit_qtpy_esp32s3.menu.FlashMode.qio.build.flash_type=qspi
+adafruit_qtpy_esp32s3.menu.FlashMode.qio120=QIO 120MHz
+adafruit_qtpy_esp32s3.menu.FlashMode.qio120.build.flash_mode=dio
+adafruit_qtpy_esp32s3.menu.FlashMode.qio120.build.boot=qio
+adafruit_qtpy_esp32s3.menu.FlashMode.qio120.build.boot_freq=120m
+adafruit_qtpy_esp32s3.menu.FlashMode.qio120.build.flash_freq=80m
+adafruit_qtpy_esp32s3.menu.FlashMode.qio120.build.flash_type=qspi
+adafruit_qtpy_esp32s3.menu.FlashMode.dio=DIO 80MHz
+adafruit_qtpy_esp32s3.menu.FlashMode.dio.build.flash_mode=dio
+adafruit_qtpy_esp32s3.menu.FlashMode.dio.build.boot=dio
+adafruit_qtpy_esp32s3.menu.FlashMode.dio.build.boot_freq=80m
+adafruit_qtpy_esp32s3.menu.FlashMode.dio.build.flash_freq=80m
+adafruit_qtpy_esp32s3.menu.FlashMode.dio.build.flash_type=qspi
+adafruit_qtpy_esp32s3.menu.FlashMode.opi=OPI 80MHz
+adafruit_qtpy_esp32s3.menu.FlashMode.opi.build.flash_mode=dout
+adafruit_qtpy_esp32s3.menu.FlashMode.opi.build.boot=opi
+adafruit_qtpy_esp32s3.menu.FlashMode.opi.build.boot_freq=80m
+adafruit_qtpy_esp32s3.menu.FlashMode.opi.build.flash_freq=80m
+adafruit_qtpy_esp32s3.menu.FlashMode.opi.build.flash_type=opi
+
+adafruit_qtpy_esp32s3.menu.LoopCore.1=Core 1
+adafruit_qtpy_esp32s3.menu.LoopCore.1.build.loop_core=-DARDUINO_RUNNING_CORE=1
+adafruit_qtpy_esp32s3.menu.LoopCore.0=Core 0
+adafruit_qtpy_esp32s3.menu.LoopCore.0.build.loop_core=-DARDUINO_RUNNING_CORE=0
+
+adafruit_qtpy_esp32s3.menu.EventsCore.1=Core 1
+adafruit_qtpy_esp32s3.menu.EventsCore.1.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=1
+adafruit_qtpy_esp32s3.menu.EventsCore.0=Core 0
+adafruit_qtpy_esp32s3.menu.EventsCore.0.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=0
+
+adafruit_qtpy_esp32s3.menu.USBMode.default=USB-OTG (TinyUSB)
 adafruit_qtpy_esp32s3.menu.USBMode.default.build.usb_mode=0
-adafruit_qtpy_esp32s3.menu.USBMode.default.upload.use_1200bps_touch=true
-adafruit_qtpy_esp32s3.menu.USBMode.default.upload.wait_for_upload_port=true
 adafruit_qtpy_esp32s3.menu.USBMode.hwcdc=Hardware CDC and JTAG
 adafruit_qtpy_esp32s3.menu.USBMode.hwcdc.build.usb_mode=1
-adafruit_qtpy_esp32s3.menu.USBMode.hwcdc.upload.use_1200bps_touch=false
-adafruit_qtpy_esp32s3.menu.USBMode.hwcdc.upload.wait_for_upload_port=false
 
 adafruit_qtpy_esp32s3.menu.CDCOnBoot.cdc=Enabled
 adafruit_qtpy_esp32s3.menu.CDCOnBoot.cdc.build.cdc_on_boot=1
@@ -7556,47 +7578,29 @@ adafruit_qtpy_esp32s3.menu.CDCOnBoot.default.build.cdc_on_boot=0
 
 adafruit_qtpy_esp32s3.menu.MSCOnBoot.default=Disabled
 adafruit_qtpy_esp32s3.menu.MSCOnBoot.default.build.msc_on_boot=0
-adafruit_qtpy_esp32s3.menu.MSCOnBoot.msc=Enabled
+adafruit_qtpy_esp32s3.menu.MSCOnBoot.msc=Enabled (Requires USB-OTG Mode)
 adafruit_qtpy_esp32s3.menu.MSCOnBoot.msc.build.msc_on_boot=1
 
 adafruit_qtpy_esp32s3.menu.DFUOnBoot.default=Disabled
 adafruit_qtpy_esp32s3.menu.DFUOnBoot.default.build.dfu_on_boot=0
-adafruit_qtpy_esp32s3.menu.DFUOnBoot.dfu=Enabled
+adafruit_qtpy_esp32s3.menu.DFUOnBoot.dfu=Enabled (Requires USB-OTG Mode)
 adafruit_qtpy_esp32s3.menu.DFUOnBoot.dfu.build.dfu_on_boot=1
 
-adafruit_qtpy_esp32s3.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)
-adafruit_qtpy_esp32s3.menu.PartitionScheme.default.build.partitions=default
-adafruit_qtpy_esp32s3.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS)
-adafruit_qtpy_esp32s3.menu.PartitionScheme.defaultffat.build.partitions=default_ffat
-adafruit_qtpy_esp32s3.menu.PartitionScheme.default_8MB=8M Flash (3MB APP/1.5MB FAT)
+adafruit_qtpy_esp32s3.menu.UploadMode.cdc=USB-OTG CDC (TinyUSB)
+adafruit_qtpy_esp32s3.menu.UploadMode.cdc.upload.use_1200bps_touch=true
+adafruit_qtpy_esp32s3.menu.UploadMode.cdc.upload.wait_for_upload_port=true
+adafruit_qtpy_esp32s3.menu.UploadMode.default=UART0 / Hardware CDC
+adafruit_qtpy_esp32s3.menu.UploadMode.default.upload.use_1200bps_touch=false
+adafruit_qtpy_esp32s3.menu.UploadMode.default.upload.wait_for_upload_port=false
+
+adafruit_qtpy_esp32s3.menu.PartitionScheme.tinyuf2=TinyUF2 8MB (2MB APP/3.6MB FFAT)
+adafruit_qtpy_esp32s3.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2
+adafruit_qtpy_esp32s3.menu.PartitionScheme.tinyuf2.build.custom_partitions=partitions-8MB-tinyuf2
+adafruit_qtpy_esp32s3.menu.PartitionScheme.tinyuf2.upload.maximum_size=2097152
+adafruit_qtpy_esp32s3.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x410000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin"
+adafruit_qtpy_esp32s3.menu.PartitionScheme.default_8MB=8M Flash (3MB APP/1.5MB SPIFFS)
 adafruit_qtpy_esp32s3.menu.PartitionScheme.default_8MB.build.partitions=default_8MB
 adafruit_qtpy_esp32s3.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336
-adafruit_qtpy_esp32s3.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS)
-adafruit_qtpy_esp32s3.menu.PartitionScheme.minimal.build.partitions=minimal
-adafruit_qtpy_esp32s3.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS)
-adafruit_qtpy_esp32s3.menu.PartitionScheme.no_ota.build.partitions=no_ota
-adafruit_qtpy_esp32s3.menu.PartitionScheme.no_ota.upload.maximum_size=2097152
-adafruit_qtpy_esp32s3.menu.PartitionScheme.noota_3g=No OTA (1MB APP/3MB SPIFFS)
-adafruit_qtpy_esp32s3.menu.PartitionScheme.noota_3g.build.partitions=noota_3g
-adafruit_qtpy_esp32s3.menu.PartitionScheme.noota_3g.upload.maximum_size=1048576
-adafruit_qtpy_esp32s3.menu.PartitionScheme.noota_ffat=No OTA (2MB APP/2MB FATFS)
-adafruit_qtpy_esp32s3.menu.PartitionScheme.noota_ffat.build.partitions=noota_ffat
-adafruit_qtpy_esp32s3.menu.PartitionScheme.noota_ffat.upload.maximum_size=2097152
-adafruit_qtpy_esp32s3.menu.PartitionScheme.noota_3gffat=No OTA (1MB APP/3MB FATFS)
-adafruit_qtpy_esp32s3.menu.PartitionScheme.noota_3gffat.build.partitions=noota_3gffat
-adafruit_qtpy_esp32s3.menu.PartitionScheme.noota_3gffat.upload.maximum_size=1048576
-adafruit_qtpy_esp32s3.menu.PartitionScheme.huge_app=Huge APP (3MB No OTA/1MB SPIFFS)
-adafruit_qtpy_esp32s3.menu.PartitionScheme.huge_app.build.partitions=huge_app
-adafruit_qtpy_esp32s3.menu.PartitionScheme.huge_app.upload.maximum_size=3145728
-adafruit_qtpy_esp32s3.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS)
-adafruit_qtpy_esp32s3.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs
-adafruit_qtpy_esp32s3.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080
-adafruit_qtpy_esp32s3.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FAT)
-adafruit_qtpy_esp32s3.menu.PartitionScheme.fatflash.build.partitions=ffat
-adafruit_qtpy_esp32s3.menu.PartitionScheme.fatflash.upload.maximum_size=2097152
-adafruit_qtpy_esp32s3.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9MB FATFS)
-adafruit_qtpy_esp32s3.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB
-adafruit_qtpy_esp32s3.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728
 
 adafruit_qtpy_esp32s3.menu.CPUFreq.240=240MHz (WiFi)
 adafruit_qtpy_esp32s3.menu.CPUFreq.240.build.f_cpu=240000000L
@@ -7611,10 +7615,20 @@ adafruit_qtpy_esp32s3.menu.CPUFreq.20.build.f_cpu=20000000L
 adafruit_qtpy_esp32s3.menu.CPUFreq.10=10MHz
 adafruit_qtpy_esp32s3.menu.CPUFreq.10.build.f_cpu=10000000L
 
-adafruit_qtpy_esp32s3.menu.FlashFreq.80=80MHz
-adafruit_qtpy_esp32s3.menu.FlashFreq.80.build.flash_freq=80m
-adafruit_qtpy_esp32s3.menu.FlashFreq.40=40MHz
-adafruit_qtpy_esp32s3.menu.FlashFreq.40.build.flash_freq=40m
+adafruit_qtpy_esp32s3.menu.UploadSpeed.921600=921600
+adafruit_qtpy_esp32s3.menu.UploadSpeed.921600.upload.speed=921600
+adafruit_qtpy_esp32s3.menu.UploadSpeed.115200=115200
+adafruit_qtpy_esp32s3.menu.UploadSpeed.115200.upload.speed=115200
+adafruit_qtpy_esp32s3.menu.UploadSpeed.256000.windows=256000
+adafruit_qtpy_esp32s3.menu.UploadSpeed.256000.upload.speed=256000
+adafruit_qtpy_esp32s3.menu.UploadSpeed.230400.windows.upload.speed=256000
+adafruit_qtpy_esp32s3.menu.UploadSpeed.230400=230400
+adafruit_qtpy_esp32s3.menu.UploadSpeed.230400.upload.speed=230400
+adafruit_qtpy_esp32s3.menu.UploadSpeed.460800.linux=460800
+adafruit_qtpy_esp32s3.menu.UploadSpeed.460800.macosx=460800
+adafruit_qtpy_esp32s3.menu.UploadSpeed.460800.upload.speed=460800
+adafruit_qtpy_esp32s3.menu.UploadSpeed.512000.windows=512000
+adafruit_qtpy_esp32s3.menu.UploadSpeed.512000.upload.speed=512000
 
 adafruit_qtpy_esp32s3.menu.DebugLevel.none=None
 adafruit_qtpy_esp32s3.menu.DebugLevel.none.build.code_debug=0
@@ -13181,7 +13195,7 @@ atmegazero_esp32s2.upload.tool.network=esp_ota
 atmegazero_esp32s2.upload.maximum_size=1310720
 atmegazero_esp32s2.upload.maximum_data_size=327680
 atmegazero_esp32s2.upload.flags=
-atmegazero_esp32s2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin"
+atmegazero_esp32s2.upload.extra_flags=
 atmegazero_esp32s2.upload.use_1200bps_touch=true
 atmegazero_esp32s2.upload.wait_for_upload_port=true
 
@@ -13228,6 +13242,11 @@ atmegazero_esp32s2.menu.PSRAM.disabled.build.defines=
 atmegazero_esp32s2.menu.PSRAM.enabled=Enabled
 atmegazero_esp32s2.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM
 
+atmegazero_esp32s2.menu.PartitionScheme.tinyuf2=TinyUF2 16MB (2MB APP/11.6MB FFAT)
+atmegazero_esp32s2.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2
+atmegazero_esp32s2.menu.PartitionScheme.tinyuf2.build.custom_partitions=partitions-16MB-tinyuf2
+atmegazero_esp32s2.menu.PartitionScheme.tinyuf2.upload.maximum_size=2097152
+atmegazero_esp32s2.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x410000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin"
 atmegazero_esp32s2.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)
 atmegazero_esp32s2.menu.PartitionScheme.default.build.partitions=default
 atmegazero_esp32s2.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS)
diff --git a/variants/adafruit_feather_esp32s2/bootloader.bin b/variants/adafruit_feather_esp32s2/bootloader-tinyuf2.bin
similarity index 77%
rename from variants/adafruit_feather_esp32s2/bootloader.bin
rename to variants/adafruit_feather_esp32s2/bootloader-tinyuf2.bin
index 543dce3106d..447db5cea9b 100644
Binary files a/variants/adafruit_feather_esp32s2/bootloader.bin and b/variants/adafruit_feather_esp32s2/bootloader-tinyuf2.bin differ
diff --git a/variants/adafruit_feather_esp32s2/partitions.csv b/variants/adafruit_feather_esp32s2/partitions-4MB-tinyuf2.csv
similarity index 100%
rename from variants/adafruit_feather_esp32s2/partitions.csv
rename to variants/adafruit_feather_esp32s2/partitions-4MB-tinyuf2.csv
diff --git a/variants/adafruit_feather_esp32s2/tinyuf2.bin b/variants/adafruit_feather_esp32s2/tinyuf2.bin
index 9b39ac52093..362b564946c 100644
Binary files a/variants/adafruit_feather_esp32s2/tinyuf2.bin and b/variants/adafruit_feather_esp32s2/tinyuf2.bin differ
diff --git a/variants/adafruit_feather_esp32s2_reversetft/bootloader-tinyuf2.bin b/variants/adafruit_feather_esp32s2_reversetft/bootloader-tinyuf2.bin
new file mode 100644
index 00000000000..c1f5441581d
Binary files /dev/null and b/variants/adafruit_feather_esp32s2_reversetft/bootloader-tinyuf2.bin differ
diff --git a/variants/adafruit_feather_esp32s2_reversetft/bootloader.bin b/variants/adafruit_feather_esp32s2_reversetft/bootloader.bin
deleted file mode 100644
index 9889ef9386e..00000000000
Binary files a/variants/adafruit_feather_esp32s2_reversetft/bootloader.bin and /dev/null differ
diff --git a/variants/adafruit_feather_esp32s2_reversetft/partitions.csv b/variants/adafruit_feather_esp32s2_reversetft/partitions-4MB-tinyuf2.csv
similarity index 100%
rename from variants/adafruit_feather_esp32s2_reversetft/partitions.csv
rename to variants/adafruit_feather_esp32s2_reversetft/partitions-4MB-tinyuf2.csv
diff --git a/variants/adafruit_feather_esp32s2_reversetft/tinyuf2.bin b/variants/adafruit_feather_esp32s2_reversetft/tinyuf2.bin
index 459ab1022e3..863edaa583d 100644
Binary files a/variants/adafruit_feather_esp32s2_reversetft/tinyuf2.bin and b/variants/adafruit_feather_esp32s2_reversetft/tinyuf2.bin differ
diff --git a/variants/adafruit_feather_esp32s2_tft/bootloader-tinyuf2.bin b/variants/adafruit_feather_esp32s2_tft/bootloader-tinyuf2.bin
new file mode 100644
index 00000000000..9a683f4b411
Binary files /dev/null and b/variants/adafruit_feather_esp32s2_tft/bootloader-tinyuf2.bin differ
diff --git a/variants/adafruit_feather_esp32s2_tft/bootloader.bin b/variants/adafruit_feather_esp32s2_tft/bootloader.bin
deleted file mode 100644
index 5f49742aa44..00000000000
Binary files a/variants/adafruit_feather_esp32s2_tft/bootloader.bin and /dev/null differ
diff --git a/variants/adafruit_feather_esp32s2_tft/partitions.csv b/variants/adafruit_feather_esp32s2_tft/partitions-4MB-tinyuf2.csv
similarity index 100%
rename from variants/adafruit_feather_esp32s2_tft/partitions.csv
rename to variants/adafruit_feather_esp32s2_tft/partitions-4MB-tinyuf2.csv
diff --git a/variants/adafruit_feather_esp32s2_tft/tinyuf2.bin b/variants/adafruit_feather_esp32s2_tft/tinyuf2.bin
index 740599eca54..bffddd73bd4 100644
Binary files a/variants/adafruit_feather_esp32s2_tft/tinyuf2.bin and b/variants/adafruit_feather_esp32s2_tft/tinyuf2.bin differ
diff --git a/variants/adafruit_feather_esp32s3_nopsram/bootloader.bin b/variants/adafruit_feather_esp32s3_nopsram/bootloader-tinyuf2.bin
similarity index 69%
rename from variants/adafruit_feather_esp32s3_nopsram/bootloader.bin
rename to variants/adafruit_feather_esp32s3_nopsram/bootloader-tinyuf2.bin
index 644fd7033ae..eb0151bf8e7 100644
Binary files a/variants/adafruit_feather_esp32s3_nopsram/bootloader.bin and b/variants/adafruit_feather_esp32s3_nopsram/bootloader-tinyuf2.bin differ
diff --git a/variants/adafruit_feather_esp32s3_nopsram/partitions.csv b/variants/adafruit_feather_esp32s3_nopsram/partitions-8MB-tinyuf2.csv
similarity index 100%
rename from variants/adafruit_feather_esp32s3_nopsram/partitions.csv
rename to variants/adafruit_feather_esp32s3_nopsram/partitions-8MB-tinyuf2.csv
diff --git a/variants/adafruit_feather_esp32s3_nopsram/tinyuf2.bin b/variants/adafruit_feather_esp32s3_nopsram/tinyuf2.bin
index 18c2c554f76..942ba1a133a 100644
Binary files a/variants/adafruit_feather_esp32s3_nopsram/tinyuf2.bin and b/variants/adafruit_feather_esp32s3_nopsram/tinyuf2.bin differ
diff --git a/variants/adafruit_funhouse_esp32s2/bootloader-tinyuf2.bin b/variants/adafruit_funhouse_esp32s2/bootloader-tinyuf2.bin
new file mode 100644
index 00000000000..1b05f01d01d
Binary files /dev/null and b/variants/adafruit_funhouse_esp32s2/bootloader-tinyuf2.bin differ
diff --git a/variants/adafruit_funhouse_esp32s2/bootloader.bin b/variants/adafruit_funhouse_esp32s2/bootloader.bin
deleted file mode 100644
index b2eb0caa2b1..00000000000
Binary files a/variants/adafruit_funhouse_esp32s2/bootloader.bin and /dev/null differ
diff --git a/variants/adafruit_funhouse_esp32s2/partitions.csv b/variants/adafruit_funhouse_esp32s2/partitions-4MB-tinyuf2.csv
similarity index 100%
rename from variants/adafruit_funhouse_esp32s2/partitions.csv
rename to variants/adafruit_funhouse_esp32s2/partitions-4MB-tinyuf2.csv
diff --git a/variants/adafruit_funhouse_esp32s2/tinyuf2.bin b/variants/adafruit_funhouse_esp32s2/tinyuf2.bin
index 6fa2ea6eee5..cee0b157a65 100644
Binary files a/variants/adafruit_funhouse_esp32s2/tinyuf2.bin and b/variants/adafruit_funhouse_esp32s2/tinyuf2.bin differ
diff --git a/variants/adafruit_magtag29_esp32s2/bootloader-tinyuf2.bin b/variants/adafruit_magtag29_esp32s2/bootloader-tinyuf2.bin
new file mode 100644
index 00000000000..24a0be33798
Binary files /dev/null and b/variants/adafruit_magtag29_esp32s2/bootloader-tinyuf2.bin differ
diff --git a/variants/adafruit_magtag29_esp32s2/bootloader.bin b/variants/adafruit_magtag29_esp32s2/bootloader.bin
deleted file mode 100644
index 264bc74a3be..00000000000
Binary files a/variants/adafruit_magtag29_esp32s2/bootloader.bin and /dev/null differ
diff --git a/variants/adafruit_magtag29_esp32s2/partitions.csv b/variants/adafruit_magtag29_esp32s2/partitions-4MB-tinyuf2.csv
similarity index 100%
rename from variants/adafruit_magtag29_esp32s2/partitions.csv
rename to variants/adafruit_magtag29_esp32s2/partitions-4MB-tinyuf2.csv
diff --git a/variants/adafruit_magtag29_esp32s2/tinyuf2.bin b/variants/adafruit_magtag29_esp32s2/tinyuf2.bin
index 8051c93cb47..cd104f792b8 100644
Binary files a/variants/adafruit_magtag29_esp32s2/tinyuf2.bin and b/variants/adafruit_magtag29_esp32s2/tinyuf2.bin differ
diff --git a/variants/adafruit_metro_esp32s2/bootloader-tinyuf2.bin b/variants/adafruit_metro_esp32s2/bootloader-tinyuf2.bin
new file mode 100644
index 00000000000..8cf515baf4a
Binary files /dev/null and b/variants/adafruit_metro_esp32s2/bootloader-tinyuf2.bin differ
diff --git a/variants/adafruit_metro_esp32s2/bootloader.bin b/variants/adafruit_metro_esp32s2/bootloader.bin
deleted file mode 100644
index ae9d2706e2c..00000000000
Binary files a/variants/adafruit_metro_esp32s2/bootloader.bin and /dev/null differ
diff --git a/variants/adafruit_metro_esp32s2/partitions.csv b/variants/adafruit_metro_esp32s2/partitions-4MB-tinyuf2.csv
similarity index 100%
rename from variants/adafruit_metro_esp32s2/partitions.csv
rename to variants/adafruit_metro_esp32s2/partitions-4MB-tinyuf2.csv
diff --git a/variants/adafruit_metro_esp32s2/tinyuf2.bin b/variants/adafruit_metro_esp32s2/tinyuf2.bin
index 6bad0459a6d..5549fc90501 100644
Binary files a/variants/adafruit_metro_esp32s2/tinyuf2.bin and b/variants/adafruit_metro_esp32s2/tinyuf2.bin differ
diff --git a/variants/adafruit_qtpy_esp32s2/bootloader-tinyuf2.bin b/variants/adafruit_qtpy_esp32s2/bootloader-tinyuf2.bin
new file mode 100644
index 00000000000..de6b3243ce7
Binary files /dev/null and b/variants/adafruit_qtpy_esp32s2/bootloader-tinyuf2.bin differ
diff --git a/variants/adafruit_qtpy_esp32s2/bootloader.bin b/variants/adafruit_qtpy_esp32s2/bootloader.bin
deleted file mode 100644
index 885ce46328e..00000000000
Binary files a/variants/adafruit_qtpy_esp32s2/bootloader.bin and /dev/null differ
diff --git a/variants/adafruit_qtpy_esp32s2/partitions.csv b/variants/adafruit_qtpy_esp32s2/partitions-4MB-tinyuf2.csv
similarity index 100%
rename from variants/adafruit_qtpy_esp32s2/partitions.csv
rename to variants/adafruit_qtpy_esp32s2/partitions-4MB-tinyuf2.csv
diff --git a/variants/adafruit_qtpy_esp32s2/tinyuf2.bin b/variants/adafruit_qtpy_esp32s2/tinyuf2.bin
index 29378f2bf25..46a115561fc 100644
Binary files a/variants/adafruit_qtpy_esp32s2/tinyuf2.bin and b/variants/adafruit_qtpy_esp32s2/tinyuf2.bin differ
diff --git a/variants/adafruit_qtpy_esp32s3_nopsram/bootloader.bin b/variants/adafruit_qtpy_esp32s3_nopsram/bootloader-tinyuf2.bin
similarity index 69%
rename from variants/adafruit_qtpy_esp32s3_nopsram/bootloader.bin
rename to variants/adafruit_qtpy_esp32s3_nopsram/bootloader-tinyuf2.bin
index c0bf19f1338..ded6ffe4978 100644
Binary files a/variants/adafruit_qtpy_esp32s3_nopsram/bootloader.bin and b/variants/adafruit_qtpy_esp32s3_nopsram/bootloader-tinyuf2.bin differ
diff --git a/variants/adafruit_qtpy_esp32s3_nopsram/partitions.csv b/variants/adafruit_qtpy_esp32s3_nopsram/partitions-8MB-tinyuf2.csv
similarity index 100%
rename from variants/adafruit_qtpy_esp32s3_nopsram/partitions.csv
rename to variants/adafruit_qtpy_esp32s3_nopsram/partitions-8MB-tinyuf2.csv
diff --git a/variants/adafruit_qtpy_esp32s3_nopsram/tinyuf2.bin b/variants/adafruit_qtpy_esp32s3_nopsram/tinyuf2.bin
index 748dcb7a608..3e6821e2370 100644
Binary files a/variants/adafruit_qtpy_esp32s3_nopsram/tinyuf2.bin and b/variants/adafruit_qtpy_esp32s3_nopsram/tinyuf2.bin differ
diff --git a/variants/atmegazero_esp32s2/bootloader-tinyuf2.bin b/variants/atmegazero_esp32s2/bootloader-tinyuf2.bin
new file mode 100644
index 00000000000..d52b958ec96
Binary files /dev/null and b/variants/atmegazero_esp32s2/bootloader-tinyuf2.bin differ
diff --git a/variants/atmegazero_esp32s2/bootloader.bin b/variants/atmegazero_esp32s2/bootloader.bin
deleted file mode 100644
index 3f4b56a5b11..00000000000
Binary files a/variants/atmegazero_esp32s2/bootloader.bin and /dev/null differ
diff --git a/variants/atmegazero_esp32s2/partitions-16MB-tinyuf2.csv b/variants/atmegazero_esp32s2/partitions-16MB-tinyuf2.csv
new file mode 100644
index 00000000000..003418ceac2
--- /dev/null
+++ b/variants/atmegazero_esp32s2/partitions-16MB-tinyuf2.csv
@@ -0,0 +1,10 @@
+# ESP-IDF Partition Table
+# Name,   Type, SubType, Offset,  Size, Flags
+# bootloader.bin,,          0x1000, 32K
+# partition table,,         0x8000, 4K
+nvs,      data, nvs,      0x9000,  20K,
+otadata,  data, ota,      0xe000,  8K,
+ota_0,    0,    ota_0,   0x10000,  2048K,
+ota_1,    0,    ota_1,  0x210000,  2048K,
+uf2,      app,  factory,0x410000,  256K,
+ffat,     data, fat,    0x450000,  11968K,
diff --git a/variants/atmegazero_esp32s2/partitions.csv b/variants/atmegazero_esp32s2/partitions.csv
deleted file mode 100644
index 6bc9bd7ef15..00000000000
--- a/variants/atmegazero_esp32s2/partitions.csv
+++ /dev/null
@@ -1,11 +0,0 @@
-# ESP-IDF Partition Table
-# Name,   Type, SubType, Offset,  Size, Flags
-# bootloader.bin,,          0x1000, 32K
-# partition table,         0x8000, 4K
-
-nvs,      data, nvs,      0x9000,  20K,
-otadata,  data, ota,      0xe000,  8K,
-ota_0,    0,    ota_0,   0x10000,  1408K,
-ota_1,    0,    ota_1,  0x170000,  1408K,
-uf2,      app,  factory,0x2d0000,  256K,
-ffat,     data, fat,    0x310000,  960K,
diff --git a/variants/atmegazero_esp32s2/tinyuf2.bin b/variants/atmegazero_esp32s2/tinyuf2.bin
index b8c7c7ea3ee..6e78e5431d7 100644
Binary files a/variants/atmegazero_esp32s2/tinyuf2.bin and b/variants/atmegazero_esp32s2/tinyuf2.bin differ