diff --git a/keyboards/1upkeyboards/sweet16/v2/proton_c/rules.mk b/keyboards/1upkeyboards/sweet16/v2/proton_c/rules.mk
index 6fb15f5a83..fcfa05c3a1 100644
--- a/keyboards/1upkeyboards/sweet16/v2/proton_c/rules.mk
+++ b/keyboards/1upkeyboards/sweet16/v2/proton_c/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
## Features
CONSOLE_ENABLE = yes
ENCODER_ENABLE = yes
diff --git a/keyboards/acheron/arctic/rules.mk b/keyboards/acheron/arctic/rules.mk
index 4a6aa0a4ac..b38cf00017 100644
--- a/keyboards/acheron/arctic/rules.mk
+++ b/keyboards/acheron/arctic/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/acheron/austin/rules.mk b/keyboards/acheron/austin/rules.mk
index b73c2cf7c2..57fb9cbb37 100644
--- a/keyboards/acheron/austin/rules.mk
+++ b/keyboards/acheron/austin/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/acheron/keebspcb/rules.mk b/keyboards/acheron/keebspcb/rules.mk
index 849a137cd5..7a166e84fa 100644
--- a/keyboards/acheron/keebspcb/rules.mk
+++ b/keyboards/acheron/keebspcb/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/acheron/lasgweloth/rules.mk b/keyboards/acheron/lasgweloth/rules.mk
index 56b91b6927..fb7e495154 100644
--- a/keyboards/acheron/lasgweloth/rules.mk
+++ b/keyboards/acheron/lasgweloth/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/acheron/shark/rules.mk b/keyboards/acheron/shark/rules.mk
index 94accbd8f6..455c98f7e6 100644
--- a/keyboards/acheron/shark/rules.mk
+++ b/keyboards/acheron/shark/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/aeboards/ext65/rev2/rules.mk b/keyboards/aeboards/ext65/rev2/rules.mk
index 78d1e586ad..8794d357cd 100644
--- a/keyboards/aeboards/ext65/rev2/rules.mk
+++ b/keyboards/aeboards/ext65/rev2/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# comment out to disable the options.
#
diff --git a/keyboards/ai03/andromeda/rules.mk b/keyboards/ai03/andromeda/rules.mk
index b5330c8e7e..b47c996960 100644
--- a/keyboards/ai03/andromeda/rules.mk
+++ b/keyboards/ai03/andromeda/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/ai03/vega/rules.mk b/keyboards/ai03/vega/rules.mk
index b5330c8e7e..b47c996960 100644
--- a/keyboards/ai03/vega/rules.mk
+++ b/keyboards/ai03/vega/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/akegata_denki/device_one/rules.mk b/keyboards/akegata_denki/device_one/rules.mk
index f8e76a5d39..3832696540 100644
--- a/keyboards/akegata_denki/device_one/rules.mk
+++ b/keyboards/akegata_denki/device_one/rules.mk
@@ -1,8 +1,10 @@
# MCU name
MCU = STM32F042
-
BOARD = ST_NUCLEO32_F042K6
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# comment out to disable the options.
#
diff --git a/keyboards/alpine65/rules.mk b/keyboards/alpine65/rules.mk
index 4f9422096b..61f9253016 100644
--- a/keyboards/alpine65/rules.mk
+++ b/keyboards/alpine65/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/at_at/660m/rules.mk b/keyboards/at_at/660m/rules.mk
index a272f6d34b..f0465ceb20 100644
--- a/keyboards/at_at/660m/rules.mk
+++ b/keyboards/at_at/660m/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F072
BOARD = GENERIC_STM32_F072XB
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# comment out to disable the options.
#
diff --git a/keyboards/atreus/keymaps/ridingqwerty/rules.mk b/keyboards/atreus/keymaps/ridingqwerty/rules.mk
index ebf83f02e8..a41ef5f10f 100644
--- a/keyboards/atreus/keymaps/ridingqwerty/rules.mk
+++ b/keyboards/atreus/keymaps/ridingqwerty/rules.mk
@@ -1,6 +1,10 @@
+# MCU name
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# comment out to disable the options.
#
@@ -16,4 +20,3 @@ RGBLIGHT_ENABLE = no
TAP_DANCE_ENABLE = no
UNICODE_ENABLE = no
UNICODEMAP_ENABLE = yes
-
diff --git a/keyboards/boston/rules.mk b/keyboards/boston/rules.mk
index e7bc2db59c..24e1dbe3c5 100644
--- a/keyboards/boston/rules.mk
+++ b/keyboards/boston/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/boston_meetup/2019/rules.mk b/keyboards/boston_meetup/2019/rules.mk
index 5aaac4b3ed..aa1920ae50 100644
--- a/keyboards/boston_meetup/2019/rules.mk
+++ b/keyboards/boston_meetup/2019/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# comment out to disable the options.
#
diff --git a/keyboards/box75/rules.mk b/keyboards/box75/rules.mk
index a202eca61b..f444528f1e 100644
--- a/keyboards/box75/rules.mk
+++ b/keyboards/box75/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/c39/keymaps/drashna/rules.mk b/keyboards/c39/keymaps/drashna/rules.mk
index 09c29f0e8f..a11acc240f 100644
--- a/keyboards/c39/keymaps/drashna/rules.mk
+++ b/keyboards/c39/keymaps/drashna/rules.mk
@@ -1,6 +1,9 @@
+# MCU name
MCU = STM32F303
BOARD = QMK_PROTON_C
-BOOTLOADER =
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
diff --git a/keyboards/caffeinated/serpent65/rules.mk b/keyboards/caffeinated/serpent65/rules.mk
index ce2a3f75e5..612d7e4ccb 100644
--- a/keyboards/caffeinated/serpent65/rules.mk
+++ b/keyboards/caffeinated/serpent65/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/cannonkeys/an_c/rules.mk b/keyboards/cannonkeys/an_c/rules.mk
index 7309744d1e..55e03edeae 100644
--- a/keyboards/cannonkeys/an_c/rules.mk
+++ b/keyboards/cannonkeys/an_c/rules.mk
@@ -1,6 +1,12 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Wildcard to allow APM32 MCU
+DFU_SUFFIX_ARGS = -v FFFF -p FFFF
+
# Build Options
# comment out to disable the options.
#
@@ -20,8 +26,5 @@ WS2812_DRIVER = spi
LAYOUTS = 60_ansi 60_tsangan_hhkb
-# Wildcard to allow APM32 MCU
-DFU_SUFFIX_ARGS = -p FFFF -v FFFF
-
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/cannonkeys/atlas/rules.mk b/keyboards/cannonkeys/atlas/rules.mk
index 8037597b5a..0f13950c63 100644
--- a/keyboards/cannonkeys/atlas/rules.mk
+++ b/keyboards/cannonkeys/atlas/rules.mk
@@ -1,6 +1,9 @@
# MCU Name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# comment out to disable the options.
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
diff --git a/keyboards/cannonkeys/chimera65/rules.mk b/keyboards/cannonkeys/chimera65/rules.mk
index a08f2fa49d..7d2cc67f4d 100644
--- a/keyboards/cannonkeys/chimera65/rules.mk
+++ b/keyboards/cannonkeys/chimera65/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# comment out to disable the options.
#
diff --git a/keyboards/cannonkeys/db60/rules.mk b/keyboards/cannonkeys/db60/rules.mk
index 3221f8a4b1..d7157ce76e 100644
--- a/keyboards/cannonkeys/db60/rules.mk
+++ b/keyboards/cannonkeys/db60/rules.mk
@@ -1,6 +1,12 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Wildcard to allow APM32 MCU
+DFU_SUFFIX_ARGS = -v FFFF -p FFFF
+
# Build Options
# comment out to disable the options.
#
@@ -15,9 +21,6 @@ BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes
WS2812_DRIVER = spi
-# Wildcard to allow APM32 MCU
-DFU_SUFFIX_ARGS = -p FFFF -v FFFF
-
DEFAULT_FOLDER = cannonkeys/db60/rev2
# Enter lower-power sleep mode when on the ChibiOS idle thread
diff --git a/keyboards/cannonkeys/devastatingtkl/rules.mk b/keyboards/cannonkeys/devastatingtkl/rules.mk
index 4ce69bf4ae..3a17bc4bd2 100644
--- a/keyboards/cannonkeys/devastatingtkl/rules.mk
+++ b/keyboards/cannonkeys/devastatingtkl/rules.mk
@@ -1,6 +1,12 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Wildcard to allow APM32 MCU
+DFU_SUFFIX_ARGS = -v FFFF -p FFFF
+
# Build Options
# comment out to disable the options.
#
@@ -16,8 +22,5 @@ BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes
WS2812_DRIVER = spi
-# Wildcard to allow APM32 MCU
-DFU_SUFFIX_ARGS = -p FFFF -v FFFF
-
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/cannonkeys/instant60/rules.mk b/keyboards/cannonkeys/instant60/rules.mk
index e5ba2903b6..81ee895940 100644
--- a/keyboards/cannonkeys/instant60/rules.mk
+++ b/keyboards/cannonkeys/instant60/rules.mk
@@ -1,6 +1,12 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Wildcard to allow APM32 MCU
+DFU_SUFFIX_ARGS = -v FFFF -p FFFF
+
# Build Options
# comment out to disable the options.
#
@@ -19,8 +25,5 @@ WS2812_DRIVER = spi
LAYOUTS = 60_ansi 60_tsangan_hhkb
-# Wildcard to allow APM32 MCU
-DFU_SUFFIX_ARGS = -p FFFF -v FFFF
-
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/cannonkeys/instant65/rules.mk b/keyboards/cannonkeys/instant65/rules.mk
index eba941f89b..a930d7025f 100644
--- a/keyboards/cannonkeys/instant65/rules.mk
+++ b/keyboards/cannonkeys/instant65/rules.mk
@@ -1,6 +1,12 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Wildcard to allow APM32 MCU
+DFU_SUFFIX_ARGS = -v FFFF -p FFFF
+
# Build Options
# change yes to no to disable
#
@@ -21,6 +27,3 @@ WS2812_DRIVER = spi
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
-
-# Wildcard to allow APM32 MCU
-DFU_SUFFIX_ARGS = -p FFFF -v FFFF
diff --git a/keyboards/cannonkeys/iron165/rules.mk b/keyboards/cannonkeys/iron165/rules.mk
index 9de75a6149..f42acaafe3 100644
--- a/keyboards/cannonkeys/iron165/rules.mk
+++ b/keyboards/cannonkeys/iron165/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# comment out to disable the options.
#
diff --git a/keyboards/cannonkeys/obliterated75/rules.mk b/keyboards/cannonkeys/obliterated75/rules.mk
index 3ff3bb9198..5dd12f03ca 100644
--- a/keyboards/cannonkeys/obliterated75/rules.mk
+++ b/keyboards/cannonkeys/obliterated75/rules.mk
@@ -1,6 +1,12 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Wildcard to allow APM32 MCU
+DFU_SUFFIX_ARGS = -v FFFF -p FFFF
+
# Build Options
# change yes to no to disable
#
@@ -18,8 +24,5 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no # Audio output on port C6
WS2812_DRIVER = spi
-# Wildcard to allow APM32 MCU
-DFU_SUFFIX_ARGS = -p FFFF -v FFFF
-
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/cannonkeys/onyx/rules.mk b/keyboards/cannonkeys/onyx/rules.mk
index 50235c6e11..f48fd0fa15 100644
--- a/keyboards/cannonkeys/onyx/rules.mk
+++ b/keyboards/cannonkeys/onyx/rules.mk
@@ -1,6 +1,12 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Wildcard to allow APM32 MCU
+DFU_SUFFIX_ARGS = -v FFFF -p FFFF
+
# Build Options
# change yes to no to disable
#
@@ -18,8 +24,5 @@ RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
-# Wildcard to allow APM32 MCU
-DFU_SUFFIX_ARGS = -p FFFF -v FFFF
-
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/cannonkeys/rekt1800/rules.mk b/keyboards/cannonkeys/rekt1800/rules.mk
index c4f07f5445..0f3d34ea5a 100644
--- a/keyboards/cannonkeys/rekt1800/rules.mk
+++ b/keyboards/cannonkeys/rekt1800/rules.mk
@@ -1,6 +1,12 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Wildcard to allow APM32 MCU
+DFU_SUFFIX_ARGS = -v FFFF -p FFFF
+
# Build Options
# comment out to disable the options.
#
@@ -15,8 +21,5 @@ CUSTOM_MATRIX = no # Custom matrix file
BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = no
-# Wildcard to allow APM32 MCU
-DFU_SUFFIX_ARGS = -p FFFF -v FFFF
-
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/cannonkeys/sagittarius/rules.mk b/keyboards/cannonkeys/sagittarius/rules.mk
index 62d0ab63d4..968520203d 100644
--- a/keyboards/cannonkeys/sagittarius/rules.mk
+++ b/keyboards/cannonkeys/sagittarius/rules.mk
@@ -1,8 +1,11 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Wildcard to allow APM32 MCU
-DFU_SUFFIX_ARGS = -p FFFF -v FFFF
+DFU_SUFFIX_ARGS = -v FFFF -p FFFF
# Build Options
# change yes to no to disable
diff --git a/keyboards/cannonkeys/satisfaction75/bootloader_defs.h b/keyboards/cannonkeys/satisfaction75/bootloader_defs.h
deleted file mode 100644
index dccd0fa5d1..0000000000
--- a/keyboards/cannonkeys/satisfaction75/bootloader_defs.h
+++ /dev/null
@@ -1,5 +0,0 @@
-/* Address for jumping to bootloader on STM32 chips. */
-/* It is chip dependent, the correct number can be looked up here (page 175):
- * http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf
- */
-#define STM32_BOOTLOADER_ADDRESS 0x1FFFC800
diff --git a/keyboards/cannonkeys/satisfaction75/rules.mk b/keyboards/cannonkeys/satisfaction75/rules.mk
index 3861b4849f..174f20c0e6 100644
--- a/keyboards/cannonkeys/satisfaction75/rules.mk
+++ b/keyboards/cannonkeys/satisfaction75/rules.mk
@@ -2,6 +2,12 @@
MCU = STM32F072
BOARD = GENERIC_STM32_F072XB
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Wildcard to allow APM32 MCU
+DFU_SUFFIX_ARGS = -v FFFF -p FFFF
+
# Build Options
# comment out to disable the options.
#
@@ -25,8 +31,5 @@ QWIIC_DRIVERS += MICRO_OLED
DEFAULT_FOLDER = cannonkeys/satisfaction75/rev1
-# Wildcard to allow APM32 MCU
-DFU_SUFFIX_ARGS = -p FFFF -v FFFF
-
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/cannonkeys/savage65/rules.mk b/keyboards/cannonkeys/savage65/rules.mk
index 2454573d2f..094dcf3ce2 100644
--- a/keyboards/cannonkeys/savage65/rules.mk
+++ b/keyboards/cannonkeys/savage65/rules.mk
@@ -1,6 +1,12 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Wildcard to allow APM32 MCU
+DFU_SUFFIX_ARGS = -v FFFF -p FFFF
+
# Build Options
# comment out to disable the options.
#
@@ -21,7 +27,4 @@ WS2812_DRIVER = spi
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
-# Wildcard to allow APM32 MCU
-DFU_SUFFIX_ARGS = -p FFFF -v FFFF
-
LAYOUTS = 65_ansi_blocker 65_ansi_blocker_split_bs 65_ansi_blocker_tsangan 65_iso_blocker
diff --git a/keyboards/cannonkeys/tmov2/rules.mk b/keyboards/cannonkeys/tmov2/rules.mk
index 294c873eec..f1e48a6b7a 100644
--- a/keyboards/cannonkeys/tmov2/rules.mk
+++ b/keyboards/cannonkeys/tmov2/rules.mk
@@ -1,6 +1,12 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Wildcard to allow APM32 MCU
+DFU_SUFFIX_ARGS = -v FFFF -p FFFF
+
# Build Options
# comment out to disable the options.
#
@@ -20,6 +26,3 @@ WS2812_DRIVER = spi
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
-
-# Wildcard to allow APM32 MCU
-DFU_SUFFIX_ARGS = -p FFFF -v FFFF
diff --git a/keyboards/cannonkeys/tsukuyomi/rules.mk b/keyboards/cannonkeys/tsukuyomi/rules.mk
index 4e7791a79f..a930d7025f 100644
--- a/keyboards/cannonkeys/tsukuyomi/rules.mk
+++ b/keyboards/cannonkeys/tsukuyomi/rules.mk
@@ -1,6 +1,12 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Wildcard to allow APM32 MCU
+DFU_SUFFIX_ARGS = -v FFFF -p FFFF
+
# Build Options
# change yes to no to disable
#
@@ -19,8 +25,5 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
WS2812_DRIVER = spi
-# Wildcard to allow APM32 MCU
-DFU_SUFFIX_ARGS = -p FFFF -v FFFF
-
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/carbo65/rules.mk b/keyboards/carbo65/rules.mk
index 51aaf0e365..6a7c2ca63b 100644
--- a/keyboards/carbo65/rules.mk
+++ b/keyboards/carbo65/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Do not put the microcontroller into power saving mode
# when we get USB suspend event. We want it to keep updating
# backlight effects.
diff --git a/keyboards/charue/sunsetter/rules.mk b/keyboards/charue/sunsetter/rules.mk
index 85952f1a9c..dde961d7a5 100644
--- a/keyboards/charue/sunsetter/rules.mk
+++ b/keyboards/charue/sunsetter/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/chavdai40/rev1/rules.mk b/keyboards/chavdai40/rev1/rules.mk
index 64c6f662af..379bdb6c65 100644
--- a/keyboards/chavdai40/rev1/rules.mk
+++ b/keyboards/chavdai40/rev1/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F042
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
@@ -15,4 +18,4 @@ NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
-AUDIO_ENABLE = no # Audio output
\ No newline at end of file
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/chavdai40/rev2/rules.mk b/keyboards/chavdai40/rev2/rules.mk
index 64c6f662af..379bdb6c65 100644
--- a/keyboards/chavdai40/rev2/rules.mk
+++ b/keyboards/chavdai40/rev2/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F042
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
@@ -15,4 +18,4 @@ NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
-AUDIO_ENABLE = no # Audio output
\ No newline at end of file
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/cheshire/curiosity/rules.mk b/keyboards/cheshire/curiosity/rules.mk
index d9a7d86ab3..b0bca5a89c 100644
--- a/keyboards/cheshire/curiosity/rules.mk
+++ b/keyboards/cheshire/curiosity/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/ck60i/rules.mk b/keyboards/ck60i/rules.mk
index 2360b9c85b..1138f462e0 100644
--- a/keyboards/ck60i/rules.mk
+++ b/keyboards/ck60i/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/ckeys/thedora/rules.mk b/keyboards/ckeys/thedora/rules.mk
index e364db1c1b..265e6b3479 100755
--- a/keyboards/ckeys/thedora/rules.mk
+++ b/keyboards/ckeys/thedora/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# comment out to disable the options.
#
diff --git a/keyboards/clueboard/60/config.h b/keyboards/clueboard/60/config.h
index 1ca9d9844e..9263a8f657 100644
--- a/keyboards/clueboard/60/config.h
+++ b/keyboards/clueboard/60/config.h
@@ -19,12 +19,6 @@
#include "config_common.h"
-/* Address for jumping to bootloader on STM32 chips. */
-/* It is chip dependent, the correct number can be looked up here:
- * http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf
- */
-#define STM32_BOOTLOADER_ADDRESS 0x1FFFD800
-
/* Backlight configuration
*/
#define BACKLIGHT_LEVELS 1
diff --git a/keyboards/clueboard/66/rev4/config.h b/keyboards/clueboard/66/rev4/config.h
index 2c11cf1ec0..bc5a9bf336 100644
--- a/keyboards/clueboard/66/rev4/config.h
+++ b/keyboards/clueboard/66/rev4/config.h
@@ -2,12 +2,6 @@
#include "config_common.h"
-/* Address for jumping to bootloader on STM32 chips. */
-/* It is chip dependent, the correct number can be looked up here:
- * http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf
- */
-#define STM32_BOOTLOADER_ADDRESS 0x1FFFD800
-
/* Backlight configuration
*/
#define BACKLIGHT_LEVELS 1
diff --git a/keyboards/clueboard/66_hotswap/gen1/config.h b/keyboards/clueboard/66_hotswap/gen1/config.h
index 5ed3c5b272..e0e69a2baf 100644
--- a/keyboards/clueboard/66_hotswap/gen1/config.h
+++ b/keyboards/clueboard/66_hotswap/gen1/config.h
@@ -18,12 +18,6 @@
#pragma once
#include "config_common.h"
-/* Address for jumping to bootloader on STM32 chips. */
-/* It is chip dependent, the correct number can be looked up here:
- * http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf
- */
-#define STM32_BOOTLOADER_ADDRESS 0x1FFFD800
-
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
// #define DEBOUNCE 6
diff --git a/keyboards/coarse/cordillera/rules.mk b/keyboards/coarse/cordillera/rules.mk
index d35a6a6592..70d00be2f7 100644
--- a/keyboards/coarse/cordillera/rules.mk
+++ b/keyboards/coarse/cordillera/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/cutie_club/borsdorf/rules.mk b/keyboards/cutie_club/borsdorf/rules.mk
index 4430f2419c..6d815e4ff3 100644
--- a/keyboards/cutie_club/borsdorf/rules.mk
+++ b/keyboards/cutie_club/borsdorf/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/cutie_club/giant_macro_pad/rules.mk b/keyboards/cutie_club/giant_macro_pad/rules.mk
index 4430f2419c..6d815e4ff3 100755
--- a/keyboards/cutie_club/giant_macro_pad/rules.mk
+++ b/keyboards/cutie_club/giant_macro_pad/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/daji/seis_cinco/rules.mk b/keyboards/daji/seis_cinco/rules.mk
index 768e50069c..f2f3619b56 100644
--- a/keyboards/daji/seis_cinco/rules.mk
+++ b/keyboards/daji/seis_cinco/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F072
BOARD = GENERIC_STM32_F072XB
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# comment out to disable the options.
#
diff --git a/keyboards/dekunukem/duckypad/rules.mk b/keyboards/dekunukem/duckypad/rules.mk
index 2deef1eeea..1a7031eff3 100644
--- a/keyboards/dekunukem/duckypad/rules.mk
+++ b/keyboards/dekunukem/duckypad/rules.mk
@@ -1,6 +1,9 @@
-# MCU Name
+# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/durgod/k320/rules.mk b/keyboards/durgod/k320/rules.mk
index 7e910174f9..e6f0007fd4 100644
--- a/keyboards/durgod/k320/rules.mk
+++ b/keyboards/durgod/k320/rules.mk
@@ -1,9 +1,11 @@
# MCU name
# Actually F070, but close enough
MCU = STM32F072
-
BOARD = DURGOD_STM32_F070
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Do not put the microcontroller into power saving mode
OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
diff --git a/keyboards/dztech/dz60rgb/v1/rules.mk b/keyboards/dztech/dz60rgb/v1/rules.mk
index f6b7f394cc..678eb385c3 100644
--- a/keyboards/dztech/dz60rgb/v1/rules.mk
+++ b/keyboards/dztech/dz60rgb/v1/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/dztech/dz60rgb_ansi/v1/rules.mk b/keyboards/dztech/dz60rgb_ansi/v1/rules.mk
index f6b7f394cc..678eb385c3 100644
--- a/keyboards/dztech/dz60rgb_ansi/v1/rules.mk
+++ b/keyboards/dztech/dz60rgb_ansi/v1/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/dztech/dz60rgb_wkl/v1/rules.mk b/keyboards/dztech/dz60rgb_wkl/v1/rules.mk
index e8753127ef..6a9af2dee5 100644
--- a/keyboards/dztech/dz60rgb_wkl/v1/rules.mk
+++ b/keyboards/dztech/dz60rgb_wkl/v1/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/dztech/dz65rgb/v1/rules.mk b/keyboards/dztech/dz65rgb/v1/rules.mk
index 8751af6491..5468deb718 100644
--- a/keyboards/dztech/dz65rgb/v1/rules.mk
+++ b/keyboards/dztech/dz65rgb/v1/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/ebastler/isometria_75/rev1/rules.mk b/keyboards/ebastler/isometria_75/rev1/rules.mk
index 72be720b2b..ec05abff0d 100644
--- a/keyboards/ebastler/isometria_75/rev1/rules.mk
+++ b/keyboards/ebastler/isometria_75/rev1/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/evolv/rules.mk b/keyboards/evolv/rules.mk
index 13a44c3c63..b01db8134b 100644
--- a/keyboards/evolv/rules.mk
+++ b/keyboards/evolv/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/ferris/0_2/rules.mk b/keyboards/ferris/0_2/rules.mk
index 5a7649b757..f1a66061ce 100644
--- a/keyboards/ferris/0_2/rules.mk
+++ b/keyboards/ferris/0_2/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# change yes to no to disable
#
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
diff --git a/keyboards/function96/v1/rules.mk b/keyboards/function96/v1/rules.mk
index 48ab62762e..adbe34e7d1 100644
--- a/keyboards/function96/v1/rules.mk
+++ b/keyboards/function96/v1/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/function96/v2/rules.mk b/keyboards/function96/v2/rules.mk
index 48ab62762e..adbe34e7d1 100644
--- a/keyboards/function96/v2/rules.mk
+++ b/keyboards/function96/v2/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/geekboards/macropad_v2/rules.mk b/keyboards/geekboards/macropad_v2/rules.mk
index 73575b6733..47db87709d 100644
--- a/keyboards/geekboards/macropad_v2/rules.mk
+++ b/keyboards/geekboards/macropad_v2/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/geminate60/rules.mk b/keyboards/geminate60/rules.mk
index 56db095205..8fc40411df 100644
--- a/keyboards/geminate60/rules.mk
+++ b/keyboards/geminate60/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/generic_panda/panda65_01/rules.mk b/keyboards/generic_panda/panda65_01/rules.mk
index cb4e9cc830..b05f306d3c 100644
--- a/keyboards/generic_panda/panda65_01/rules.mk
+++ b/keyboards/generic_panda/panda65_01/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/gmmk/pro/rules.mk b/keyboards/gmmk/pro/rules.mk
index 011ca86b66..b12d055a3d 100644
--- a/keyboards/gmmk/pro/rules.mk
+++ b/keyboards/gmmk/pro/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F303
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/hadron/ver3/rules.mk b/keyboards/hadron/ver3/rules.mk
index c7ed67682a..ef839977ea 100644
--- a/keyboards/hadron/ver3/rules.mk
+++ b/keyboards/hadron/ver3/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# comment out to disable the options.
#
diff --git a/keyboards/hand88/rules.mk b/keyboards/hand88/rules.mk
index 3067704c50..36088f03f7 100755
--- a/keyboards/hand88/rules.mk
+++ b/keyboards/hand88/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Do not put the microcontroller into power saving mode
# when we get USB suspend event. We want it to keep updating
# backlight effects.
diff --git a/keyboards/handwired/ck4x4/rules.mk b/keyboards/handwired/ck4x4/rules.mk
index ebf1648c25..4bad1b8a5d 100644
--- a/keyboards/handwired/ck4x4/rules.mk
+++ b/keyboards/handwired/ck4x4/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# comment out to disable the options.
#
diff --git a/keyboards/handwired/co60/rev6/config.h b/keyboards/handwired/co60/rev6/config.h
index 79c64e7353..c142d10f29 100644
--- a/keyboards/handwired/co60/rev6/config.h
+++ b/keyboards/handwired/co60/rev6/config.h
@@ -25,12 +25,6 @@
#define MANUFACTURER John M Daly
#define PRODUCT CO60 rev6
-/* Address for jumping to bootloader on STM32 chips. */
-/* It is chip dependent, the correct number can be looked up here:
- * http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf
- */
-#define STM32_BOOTLOADER_ADDRESS 0x1FFFD800
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/handwired/co60/rev6/rules.mk b/keyboards/handwired/co60/rev6/rules.mk
index f4e7ae924d..5c26d9a30d 100644
--- a/keyboards/handwired/co60/rev6/rules.mk
+++ b/keyboards/handwired/co60/rev6/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# comment out to disable the options.
#
diff --git a/keyboards/handwired/co60/rev7/config.h b/keyboards/handwired/co60/rev7/config.h
index 20e62472b7..16fa7cb4c5 100644
--- a/keyboards/handwired/co60/rev7/config.h
+++ b/keyboards/handwired/co60/rev7/config.h
@@ -26,12 +26,6 @@ along with this program. If not, see .
#define MANUFACTURER John M Daly
#define PRODUCT CO60 rev7
-/* Address for jumping to bootloader on STM32 chips. */
-/* It is chip dependent, the correct number can be looked up here:
- * http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf
- */
-#define STM32_BOOTLOADER_ADDRESS 0x1FFFD800
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/handwired/co60/rev7/rules.mk b/keyboards/handwired/co60/rev7/rules.mk
index 3e15f073ff..25e7a2bf1b 100644
--- a/keyboards/handwired/co60/rev7/rules.mk
+++ b/keyboards/handwired/co60/rev7/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Use SPI for RGB underglow:
WS2812_DRIVER = spi
diff --git a/keyboards/handwired/d48/rules.mk b/keyboards/handwired/d48/rules.mk
index 41a6cc5220..60a9f089d1 100644
--- a/keyboards/handwired/d48/rules.mk
+++ b/keyboards/handwired/d48/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/handwired/ddg_56/rules.mk b/keyboards/handwired/ddg_56/rules.mk
index 8143384302..56c9007128 100644
--- a/keyboards/handwired/ddg_56/rules.mk
+++ b/keyboards/handwired/ddg_56/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
@@ -15,4 +18,4 @@ NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: h
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = yes # Audio output on port C6
-UNICODE_ENABLE = no # Unicode
\ No newline at end of file
+UNICODE_ENABLE = no # Unicode
diff --git a/keyboards/handwired/floorboard/rules.mk b/keyboards/handwired/floorboard/rules.mk
index 131e8fb26d..be14c2e65d 100644
--- a/keyboards/handwired/floorboard/rules.mk
+++ b/keyboards/handwired/floorboard/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/handwired/onekey/blackpill_f401/rules.mk b/keyboards/handwired/onekey/blackpill_f401/rules.mk
index 6eb37a581d..9b0a72afb9 100644
--- a/keyboards/handwired/onekey/blackpill_f401/rules.mk
+++ b/keyboards/handwired/onekey/blackpill_f401/rules.mk
@@ -1,8 +1,8 @@
# MCU name
MCU = STM32F401
-# Address of the bootloader in system memory
-STM32_BOOTLOADER_ADDRESS = 0x1FFF0000
+# Bootloader selection
+BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
diff --git a/keyboards/handwired/onekey/blackpill_f411/rules.mk b/keyboards/handwired/onekey/blackpill_f411/rules.mk
index 7cf886431f..3ded2a2587 100644
--- a/keyboards/handwired/onekey/blackpill_f411/rules.mk
+++ b/keyboards/handwired/onekey/blackpill_f411/rules.mk
@@ -1,8 +1,8 @@
# MCU name
MCU = STM32F411
-# Address of the bootloader in system memory
-STM32_BOOTLOADER_ADDRESS = 0x1FFF0000
+# Bootloader selection
+BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
diff --git a/keyboards/handwired/onekey/blackpill_f411_tinyuf2/rules.mk b/keyboards/handwired/onekey/blackpill_f411_tinyuf2/rules.mk
index ec38577b2b..4d0b1591e2 100755
--- a/keyboards/handwired/onekey/blackpill_f411_tinyuf2/rules.mk
+++ b/keyboards/handwired/onekey/blackpill_f411_tinyuf2/rules.mk
@@ -1,10 +1,10 @@
# MCU name
MCU = STM32F411
+# Bootloader selection
+BOOTLOADER = tinyuf2
+
# Build Options
# change yes to no to disable
#
KEYBOARD_SHARED_EP = yes
-
-# We want to use the tinyuf2 bootloader...
-BOOTLOADER = tinyuf2
\ No newline at end of file
diff --git a/keyboards/handwired/onekey/proton_c/rules.mk b/keyboards/handwired/onekey/proton_c/rules.mk
index 4e157baeda..7a846816d1 100644
--- a/keyboards/handwired/onekey/proton_c/rules.mk
+++ b/keyboards/handwired/onekey/proton_c/rules.mk
@@ -1,3 +1,6 @@
# MCU name
MCU = STM32F303
BOARD = QMK_PROTON_C
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
diff --git a/keyboards/handwired/onekey/stm32f0_disco/rules.mk b/keyboards/handwired/onekey/stm32f0_disco/rules.mk
index d8928e9ec8..6b37928327 100644
--- a/keyboards/handwired/onekey/stm32f0_disco/rules.mk
+++ b/keyboards/handwired/onekey/stm32f0_disco/rules.mk
@@ -1,6 +1,8 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/handwired/pill60/blackpill_f401/rules.mk b/keyboards/handwired/pill60/blackpill_f401/rules.mk
index 8c514309df..9b0a72afb9 100644
--- a/keyboards/handwired/pill60/blackpill_f401/rules.mk
+++ b/keyboards/handwired/pill60/blackpill_f401/rules.mk
@@ -1,12 +1,8 @@
# MCU name
MCU = STM32F401
-# Address of the bootloader in system memory
-STM32_BOOTLOADER_ADDRESS = 0x1FFF0000
-
-# Options to pass to dfu-util when flashing
-DFU_ARGS = -d 0483:DF11 -a 0 -s 0x08000000:leave
-DFU_SUFFIX_ARGS = -v 0483 -p DF11
+# Bootloader selection
+BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
diff --git a/keyboards/handwired/pill60/blackpill_f411/rules.mk b/keyboards/handwired/pill60/blackpill_f411/rules.mk
index 84dd584e85..1243557019 100644
--- a/keyboards/handwired/pill60/blackpill_f411/rules.mk
+++ b/keyboards/handwired/pill60/blackpill_f411/rules.mk
@@ -1,12 +1,8 @@
# MCU name
MCU = STM32F411
-# Address of the bootloader in system memory
-STM32_BOOTLOADER_ADDRESS = 0x1FFF0000
-
-# Options to pass to dfu-util when flashing
-DFU_ARGS = -d 0483:DF11 -a 0 -s 0x08000000:leave
-DFU_SUFFIX_ARGS = -v 0483 -p DF11
+# Bootloader selection
+BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
diff --git a/keyboards/handwired/riblee_f401/rules.mk b/keyboards/handwired/riblee_f401/rules.mk
index efe2522ee2..0291ca04f3 100644
--- a/keyboards/handwired/riblee_f401/rules.mk
+++ b/keyboards/handwired/riblee_f401/rules.mk
@@ -1,8 +1,8 @@
# MCU name
MCU = STM32F401
-# Address of the bootloader in system memory
-STM32_BOOTLOADER_ADDRESS = 0x1FFF0000
+# Bootloader selection
+BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
diff --git a/keyboards/handwired/riblee_f411/rules.mk b/keyboards/handwired/riblee_f411/rules.mk
index a44b2b058b..8b029be69d 100644
--- a/keyboards/handwired/riblee_f411/rules.mk
+++ b/keyboards/handwired/riblee_f411/rules.mk
@@ -1,8 +1,8 @@
# MCU name
MCU = STM32F411
-# Address of the bootloader in system memory
-STM32_BOOTLOADER_ADDRESS = 0x1FFF0000
+# Bootloader selection
+BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
diff --git a/keyboards/handwired/selene/rules.mk b/keyboards/handwired/selene/rules.mk
index bfb967f9a5..842675b758 100644
--- a/keyboards/handwired/selene/rules.mk
+++ b/keyboards/handwired/selene/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/handwired/sick_pad/rules.mk b/keyboards/handwired/sick_pad/rules.mk
index 28578f0824..4fe7d9aff7 100644
--- a/keyboards/handwired/sick_pad/rules.mk
+++ b/keyboards/handwired/sick_pad/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/handwired/steamvan/rev1/config.h b/keyboards/handwired/steamvan/rev1/config.h
index e877484b94..18a6690c25 100644
--- a/keyboards/handwired/steamvan/rev1/config.h
+++ b/keyboards/handwired/steamvan/rev1/config.h
@@ -26,12 +26,6 @@ along with this program. If not, see .
#define MANUFACTURER John M Daly
#define PRODUCT SteamVan rev1
-/* Address for jumping to bootloader on STM32 chips. */
-/* It is chip dependent, the correct number can be looked up here:
- * http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf
- */
-#define STM32_BOOTLOADER_ADDRESS 0x1FFFD800
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
diff --git a/keyboards/handwired/steamvan/rev1/rules.mk b/keyboards/handwired/steamvan/rev1/rules.mk
index 30c74d2ece..99edf7c17f 100644
--- a/keyboards/handwired/steamvan/rev1/rules.mk
+++ b/keyboards/handwired/steamvan/rev1/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Use SPI for RGB underglow:
WS2812_DRIVER = spi
diff --git a/keyboards/handwired/t111/rules.mk b/keyboards/handwired/t111/rules.mk
index 1c391242ba..558598d74f 100644
--- a/keyboards/handwired/t111/rules.mk
+++ b/keyboards/handwired/t111/rules.mk
@@ -1,3 +1,4 @@
+# MCU name
MCU = STM32F103
# Bootloader selection
diff --git a/keyboards/handwired/wulkan/rules.mk b/keyboards/handwired/wulkan/rules.mk
index 94086e14fe..83f0d7f48f 100644
--- a/keyboards/handwired/wulkan/rules.mk
+++ b/keyboards/handwired/wulkan/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# comment out to disable the options.
#
diff --git a/keyboards/handwired/z150/rules.mk b/keyboards/handwired/z150/rules.mk
index d86e9f6e46..b9b242568f 100644
--- a/keyboards/handwired/z150/rules.mk
+++ b/keyboards/handwired/z150/rules.mk
@@ -1,3 +1,4 @@
+# MCU name
MCU = STM32F103
# Bootloader selection
diff --git a/keyboards/hp69/rules.mk b/keyboards/hp69/rules.mk
index 96ad29a6f2..13e88cfe2d 100644
--- a/keyboards/hp69/rules.mk
+++ b/keyboards/hp69/rules.mk
@@ -3,7 +3,7 @@ MCU = STM32F303
BOARD = QMK_PROTON_C
# Bootloader selection
-BOOTLOADER = atmel-dfu
+BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
@@ -20,4 +20,4 @@ NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
-AUDIO_ENABLE = no # Audio output
\ No newline at end of file
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/hs60/v2/ansi/rules.mk b/keyboards/hs60/v2/ansi/rules.mk
index 5d51892634..1a0c1abbd8 100644
--- a/keyboards/hs60/v2/ansi/rules.mk
+++ b/keyboards/hs60/v2/ansi/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Do not put the microcontroller into power saving mode
# when we get USB suspend event. We want it to keep updating
# backlight effects.
diff --git a/keyboards/hs60/v2/hhkb/rules.mk b/keyboards/hs60/v2/hhkb/rules.mk
index 780454d3f3..87d86ccd4c 100644
--- a/keyboards/hs60/v2/hhkb/rules.mk
+++ b/keyboards/hs60/v2/hhkb/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Do not put the microcontroller into power saving mode
# when we get USB suspend event. We want it to keep updating
# backlight effects.
diff --git a/keyboards/hs60/v2/iso/rules.mk b/keyboards/hs60/v2/iso/rules.mk
index a27f8a0648..53b801289d 100644
--- a/keyboards/hs60/v2/iso/rules.mk
+++ b/keyboards/hs60/v2/iso/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Do not put the microcontroller into power saving mode
# when we get USB suspend event. We want it to keep updating
# backlight effects.
diff --git a/keyboards/hub20/rules.mk b/keyboards/hub20/rules.mk
index 9abb4f80a7..61d6ba1f56 100644
--- a/keyboards/hub20/rules.mk
+++ b/keyboards/hub20/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/iron180/rules.mk b/keyboards/iron180/rules.mk
index a202eca61b..f444528f1e 100644
--- a/keyboards/iron180/rules.mk
+++ b/keyboards/iron180/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v1/rules.mk b/keyboards/kbdfans/kbd67/mkiirgb/v1/rules.mk
index 4e79819ff7..85897df63f 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb/v1/rules.mk
+++ b/keyboards/kbdfans/kbd67/mkiirgb/v1/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
BACKLIGHT_ENABLE = no
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
MOUSEKEY_ENABLE = yes # Mouse keys
diff --git a/keyboards/keebio/bdn9/rev2/rules.mk b/keyboards/keebio/bdn9/rev2/rules.mk
index f5a500a16e..df6de14073 100644
--- a/keyboards/keebio/bdn9/rev2/rules.mk
+++ b/keyboards/keebio/bdn9/rev2/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/keebio/choconum/rules.mk b/keyboards/keebio/choconum/rules.mk
index 528c9d6cea..f166909c58 100644
--- a/keyboards/keebio/choconum/rules.mk
+++ b/keyboards/keebio/choconum/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/keebio/dsp40/rev1/rules.mk b/keyboards/keebio/dsp40/rev1/rules.mk
index 5f781fb5d0..ab46842286 100644
--- a/keyboards/keebio/dsp40/rev1/rules.mk
+++ b/keyboards/keebio/dsp40/rev1/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/keebwerk/mega/ansi/rules.mk b/keyboards/keebwerk/mega/ansi/rules.mk
index 5e664cb814..6a1a9cbfad 100755
--- a/keyboards/keebwerk/mega/ansi/rules.mk
+++ b/keyboards/keebwerk/mega/ansi/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F303
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Do not put the microcontroller into power saving mode
# when we get USB suspend event. We want it to keep updating
# backlight effects.
diff --git a/keyboards/kv/revt/rules.mk b/keyboards/kv/revt/rules.mk
index 1d6c0d8dac..7d2acfcd0a 100644
--- a/keyboards/kv/revt/rules.mk
+++ b/keyboards/kv/revt/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/linworks/whale75/rules.mk b/keyboards/linworks/whale75/rules.mk
index 444459918c..bcca4a73de 100644
--- a/keyboards/linworks/whale75/rules.mk
+++ b/keyboards/linworks/whale75/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
@@ -22,4 +25,4 @@ ENCODER_ENABLE = yes
WS2812_DRIVER = pwm
# Enter lower-power sleep mode when on the ChibiOS idle thread
-OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
\ No newline at end of file
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/mechlovin/adelais/rules.mk b/keyboards/mechlovin/adelais/rules.mk
index da4ad3e57c..73e90befbe 100644
--- a/keyboards/mechlovin/adelais/rules.mk
+++ b/keyboards/mechlovin/adelais/rules.mk
@@ -2,6 +2,8 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
diff --git a/keyboards/mechlovin/hannah60rgb/rules.mk b/keyboards/mechlovin/hannah60rgb/rules.mk
index 2fe4bb7aa5..3d11b3c9ab 100644
--- a/keyboards/mechlovin/hannah60rgb/rules.mk
+++ b/keyboards/mechlovin/hannah60rgb/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/mechlovin/hannah65/rules.mk b/keyboards/mechlovin/hannah65/rules.mk
index 57ead17faa..656722353c 100644
--- a/keyboards/mechlovin/hannah65/rules.mk
+++ b/keyboards/mechlovin/hannah65/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
@@ -19,4 +22,4 @@ RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
-DEFAULT_FOLDER = mechlovin/hannah65/rev1
\ No newline at end of file
+DEFAULT_FOLDER = mechlovin/hannah65/rev1
diff --git a/keyboards/mechlovin/hex6c/rules.mk b/keyboards/mechlovin/hex6c/rules.mk
index 99aa532c26..0af4a07f70 100644
--- a/keyboards/mechlovin/hex6c/rules.mk
+++ b/keyboards/mechlovin/hex6c/rules.mk
@@ -1,8 +1,10 @@
# MCU name
MCU = STM32F303
-
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/mechlovin/infinity87/rev1/rules.mk b/keyboards/mechlovin/infinity87/rev1/rules.mk
index 19be0ad838..82b0f2e482 100644
--- a/keyboards/mechlovin/infinity87/rev1/rules.mk
+++ b/keyboards/mechlovin/infinity87/rev1/rules.mk
@@ -1,6 +1,10 @@
+# MCU name
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
DEFAULT_FOLDER = mechlovin/infinity87/rev1/standard
diff --git a/keyboards/mechlovin/infinity87/rgb_rev1/rules.mk b/keyboards/mechlovin/infinity87/rgb_rev1/rules.mk
index aa7adc8954..27de40424a 100644
--- a/keyboards/mechlovin/infinity87/rgb_rev1/rules.mk
+++ b/keyboards/mechlovin/infinity87/rgb_rev1/rules.mk
@@ -1,5 +1,9 @@
+# MCU name
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
RGB_MATRIX_ENABLE = yes # Use RGB matrix
RGB_MATRIX_DRIVER = IS31FL3741
diff --git a/keyboards/mechlovin/infinity88/rules.mk b/keyboards/mechlovin/infinity88/rules.mk
index 40e4543e89..85c01d52bf 100644
--- a/keyboards/mechlovin/infinity88/rules.mk
+++ b/keyboards/mechlovin/infinity88/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/mechlovin/tmkl/rules.mk b/keyboards/mechlovin/tmkl/rules.mk
index bbe320ff51..54a646d274 100644
--- a/keyboards/mechlovin/tmkl/rules.mk
+++ b/keyboards/mechlovin/tmkl/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/melgeek/mj61/rev1/rules.mk b/keyboards/melgeek/mj61/rev1/rules.mk
index 31a770cfbb..e7b3e77e44 100644
--- a/keyboards/melgeek/mj61/rev1/rules.mk
+++ b/keyboards/melgeek/mj61/rev1/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/melgeek/mj61/rev2/rules.mk b/keyboards/melgeek/mj61/rev2/rules.mk
index 31a770cfbb..e7b3e77e44 100644
--- a/keyboards/melgeek/mj61/rev2/rules.mk
+++ b/keyboards/melgeek/mj61/rev2/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/melgeek/mj63/rev1/rules.mk b/keyboards/melgeek/mj63/rev1/rules.mk
index c55beb7d1f..e779355766 100644
--- a/keyboards/melgeek/mj63/rev1/rules.mk
+++ b/keyboards/melgeek/mj63/rev1/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/melgeek/mj63/rev2/rules.mk b/keyboards/melgeek/mj63/rev2/rules.mk
index c55beb7d1f..e779355766 100644
--- a/keyboards/melgeek/mj63/rev2/rules.mk
+++ b/keyboards/melgeek/mj63/rev2/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/melgeek/mj64/rev1/rules.mk b/keyboards/melgeek/mj64/rev1/rules.mk
index f50aefd049..0efb7fb8f1 100644
--- a/keyboards/melgeek/mj64/rev1/rules.mk
+++ b/keyboards/melgeek/mj64/rev1/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/melgeek/mj64/rev2/rules.mk b/keyboards/melgeek/mj64/rev2/rules.mk
index f50aefd049..0efb7fb8f1 100644
--- a/keyboards/melgeek/mj64/rev2/rules.mk
+++ b/keyboards/melgeek/mj64/rev2/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/melgeek/mj64/rev3/rules.mk b/keyboards/melgeek/mj64/rev3/rules.mk
index f50aefd049..0efb7fb8f1 100644
--- a/keyboards/melgeek/mj64/rev3/rules.mk
+++ b/keyboards/melgeek/mj64/rev3/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/melgeek/mj65/rev3/rules.mk b/keyboards/melgeek/mj65/rev3/rules.mk
index bf4ed95533..13a802355c 100644
--- a/keyboards/melgeek/mj65/rev3/rules.mk
+++ b/keyboards/melgeek/mj65/rev3/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/melgeek/mojo75/rev1/rules.mk b/keyboards/melgeek/mojo75/rev1/rules.mk
index 0ccfdcb8dc..9b3d6367f1 100644
--- a/keyboards/melgeek/mojo75/rev1/rules.mk
+++ b/keyboards/melgeek/mojo75/rev1/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/melgeek/z70ultra/rev1/rules.mk b/keyboards/melgeek/z70ultra/rev1/rules.mk
index 48087186d6..a80e429068 100644
--- a/keyboards/melgeek/z70ultra/rev1/rules.mk
+++ b/keyboards/melgeek/z70ultra/rev1/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/misterknife/knife66/rules.mk b/keyboards/misterknife/knife66/rules.mk
index 540a423f2e..2202d51ea0 100644
--- a/keyboards/misterknife/knife66/rules.mk
+++ b/keyboards/misterknife/knife66/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/misterknife/knife66_iso/rules.mk b/keyboards/misterknife/knife66_iso/rules.mk
index 540a423f2e..2202d51ea0 100644
--- a/keyboards/misterknife/knife66_iso/rules.mk
+++ b/keyboards/misterknife/knife66_iso/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/mode/eighty/m80h/rules.mk b/keyboards/mode/eighty/m80h/rules.mk
index 67c3b0d660..583ff23774 100644
--- a/keyboards/mode/eighty/m80h/rules.mk
+++ b/keyboards/mode/eighty/m80h/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/mode/eighty/m80s/rules.mk b/keyboards/mode/eighty/m80s/rules.mk
index 67c3b0d660..583ff23774 100644
--- a/keyboards/mode/eighty/m80s/rules.mk
+++ b/keyboards/mode/eighty/m80s/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/monarch/rules.mk b/keyboards/monarch/rules.mk
index 22ec091e74..bd08c22ee6 100644
--- a/keyboards/monarch/rules.mk
+++ b/keyboards/monarch/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/moonlander/rules.mk b/keyboards/moonlander/rules.mk
index 7076347ec8..8e8dbf94f4 100644
--- a/keyboards/moonlander/rules.mk
+++ b/keyboards/moonlander/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/nack/rules.mk b/keyboards/nack/rules.mk
index 92103cab13..35e9440695 100644
--- a/keyboards/nack/rules.mk
+++ b/keyboards/nack/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/nebula12/bootloader_defs.h b/keyboards/nebula12/bootloader_defs.h
deleted file mode 100644
index dccd0fa5d1..0000000000
--- a/keyboards/nebula12/bootloader_defs.h
+++ /dev/null
@@ -1,5 +0,0 @@
-/* Address for jumping to bootloader on STM32 chips. */
-/* It is chip dependent, the correct number can be looked up here (page 175):
- * http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf
- */
-#define STM32_BOOTLOADER_ADDRESS 0x1FFFC800
diff --git a/keyboards/nebula12/rules.mk b/keyboards/nebula12/rules.mk
index 8b58827ad9..3a423fb78e 100755
--- a/keyboards/nebula12/rules.mk
+++ b/keyboards/nebula12/rules.mk
@@ -1,8 +1,10 @@
# MCU name
MCU = STM32F072
-
BOARD = GENERIC_STM32_F072XB
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Do not put the microcontroller into power saving mode
# when we get USB suspend event. We want it to keep updating
# backlight effects.
diff --git a/keyboards/nebula68/rules.mk b/keyboards/nebula68/rules.mk
index 40e17f1b4f..bcf1fd1a8f 100755
--- a/keyboards/nebula68/rules.mk
+++ b/keyboards/nebula68/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Do not put the microcontroller into power saving mode
# when we get USB suspend event. We want it to keep updating
# backlight effects.
diff --git a/keyboards/nemui/rules.mk b/keyboards/nemui/rules.mk
index 011a8a89b4..bff178858f 100644
--- a/keyboards/nemui/rules.mk
+++ b/keyboards/nemui/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/nibiria/stream15/rules.mk b/keyboards/nibiria/stream15/rules.mk
index af39fc16c1..fde060ddb9 100644
--- a/keyboards/nibiria/stream15/rules.mk
+++ b/keyboards/nibiria/stream15/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/nightingale_studios/hailey/rules.mk b/keyboards/nightingale_studios/hailey/rules.mk
index 5789036c74..614fcdedb5 100644
--- a/keyboards/nightingale_studios/hailey/rules.mk
+++ b/keyboards/nightingale_studios/hailey/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/nk65/rules.mk b/keyboards/nk65/rules.mk
index 2e270289d3..e3f02ee09b 100755
--- a/keyboards/nk65/rules.mk
+++ b/keyboards/nk65/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Do not put the microcontroller into power saving mode
# when we get USB suspend event. We want it to keep updating
# backlight effects.
diff --git a/keyboards/nk87/rules.mk b/keyboards/nk87/rules.mk
index e10ec5bc03..71f8f3dd80 100755
--- a/keyboards/nk87/rules.mk
+++ b/keyboards/nk87/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Do not put the microcontroller into power saving mode
# when we get USB suspend event. We want it to keep updating
# backlight effects.
diff --git a/keyboards/peiorisboards/ixora/rules.mk b/keyboards/peiorisboards/ixora/rules.mk
index 5451bf95e1..0bbdadfe60 100644
--- a/keyboards/peiorisboards/ixora/rules.mk
+++ b/keyboards/peiorisboards/ixora/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F042
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# comment out to disable the options.
#
diff --git a/keyboards/phoenix/rules.mk b/keyboards/phoenix/rules.mk
index 968c6548c0..7fa379f1a1 100644
--- a/keyboards/phoenix/rules.mk
+++ b/keyboards/phoenix/rules.mk
@@ -1,8 +1,8 @@
# MCU name
MCU = STM32F401
-# Address of the bootloader in system memory
-STM32_BOOTLOADER_ADDRESS = 0x1FFF0000
+# Bootloader selection
+BOOTLOADER = stm32-dfu
# Build Options
# change yes to no to disable
diff --git a/keyboards/pizzakeyboards/pizza65/rules.mk b/keyboards/pizzakeyboards/pizza65/rules.mk
index 2889fe9f34..6972c81762 100644
--- a/keyboards/pizzakeyboards/pizza65/rules.mk
+++ b/keyboards/pizzakeyboards/pizza65/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/planck/ez/rules.mk b/keyboards/planck/ez/rules.mk
index 85d474c5e7..8d221767e9 100644
--- a/keyboards/planck/ez/rules.mk
+++ b/keyboards/planck/ez/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
diff --git a/keyboards/planck/rev6/rules.mk b/keyboards/planck/rev6/rules.mk
index 87da1696a0..7760353e33 100644
--- a/keyboards/planck/rev6/rules.mk
+++ b/keyboards/planck/rev6/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
diff --git a/keyboards/polilla/rev1/rules.mk b/keyboards/polilla/rev1/rules.mk
index f755f9d1d2..e6ef1737ee 100644
--- a/keyboards/polilla/rev1/rules.mk
+++ b/keyboards/polilla/rev1/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F042
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/preonic/rev3/rules.mk b/keyboards/preonic/rev3/rules.mk
index ca3e8f0ada..ae7ff2a5ab 100644
--- a/keyboards/preonic/rev3/rules.mk
+++ b/keyboards/preonic/rev3/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
diff --git a/keyboards/primekb/meridian/rules.mk b/keyboards/primekb/meridian/rules.mk
index 9e2f958bee..74a9feb668 100644
--- a/keyboards/primekb/meridian/rules.mk
+++ b/keyboards/primekb/meridian/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/projectkb/alice/rev1/rules.mk b/keyboards/projectkb/alice/rev1/rules.mk
index 4e0b8b15e5..21714aab0d 100644
--- a/keyboards/projectkb/alice/rev1/rules.mk
+++ b/keyboards/projectkb/alice/rev1/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/projectkb/alice/rev2/rules.mk b/keyboards/projectkb/alice/rev2/rules.mk
index 4e0b8b15e5..21714aab0d 100644
--- a/keyboards/projectkb/alice/rev2/rules.mk
+++ b/keyboards/projectkb/alice/rev2/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/projectkb/signature87/rules.mk b/keyboards/projectkb/signature87/rules.mk
index a307166cd0..fe264da9dd 100644
--- a/keyboards/projectkb/signature87/rules.mk
+++ b/keyboards/projectkb/signature87/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# comment out to disable the options.
#
diff --git a/keyboards/ramonimbao/squishy65/rules.mk b/keyboards/ramonimbao/squishy65/rules.mk
index 000e0d34f8..1350d285e8 100644
--- a/keyboards/ramonimbao/squishy65/rules.mk
+++ b/keyboards/ramonimbao/squishy65/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/ramonimbao/wete/rules.mk b/keyboards/ramonimbao/wete/rules.mk
index 039cc87a23..7eb46b9ba4 100644
--- a/keyboards/ramonimbao/wete/rules.mk
+++ b/keyboards/ramonimbao/wete/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# comment out to disable the options.
#
diff --git a/keyboards/retro_75/rules.mk b/keyboards/retro_75/rules.mk
index ec3c2b0c35..fcea7632e0 100644
--- a/keyboards/retro_75/rules.mk
+++ b/keyboards/retro_75/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/rgbkb/pan/rev1/proton_c/rules.mk b/keyboards/rgbkb/pan/rev1/proton_c/rules.mk
index e7e9d992d2..7a846816d1 100644
--- a/keyboards/rgbkb/pan/rev1/proton_c/rules.mk
+++ b/keyboards/rgbkb/pan/rev1/proton_c/rules.mk
@@ -1,3 +1,6 @@
# MCU name
MCU = STM32F303
-BOARD = QMK_PROTON_C
\ No newline at end of file
+BOARD = QMK_PROTON_C
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
diff --git a/keyboards/satt/vision/rules.mk b/keyboards/satt/vision/rules.mk
index 888e650d54..5e81945580 100644
--- a/keyboards/satt/vision/rules.mk
+++ b/keyboards/satt/vision/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/sowbug/68keys/bootloader_defs.h b/keyboards/sowbug/68keys/bootloader_defs.h
deleted file mode 100644
index 6b8fa9f727..0000000000
--- a/keyboards/sowbug/68keys/bootloader_defs.h
+++ /dev/null
@@ -1,10 +0,0 @@
-/* Address for jumping to bootloader on STM32 chips. */
-/* It is chip dependent, the correct number can be looked up here (page 175):
- * http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf
- * This also requires a patch to chibios:
- * /tmk_core/tool/chibios/ch-bootloader-jump.patch
- */
-
-// STM32F103* does NOT have an USB bootloader in ROM (only serial),
-// so setting anything here does not make much sense
-#define STM32_BOOTLOADER_ADDRESS 0x80000000
diff --git a/keyboards/sowbug/68keys/rules.mk b/keyboards/sowbug/68keys/rules.mk
index 0439491245..7dc7c6f6db 100644
--- a/keyboards/sowbug/68keys/rules.mk
+++ b/keyboards/sowbug/68keys/rules.mk
@@ -1,34 +1,27 @@
# MCU name
MCU = STM32F103
-# GENERIC STM32F103C8T6 board - stm32duino bootloader
-OPT_DEFS = -DCORTEX_VTOR_INIT=0x2000
-MCU_LDSCRIPT = STM32F103x8_stm32duino_bootloader
-BOARD = STM32_F103_STM32DUINO
-
-DFU_ARGS = -d 1eaf:0003 -a2 -R
-DFU_SUFFIX_ARGS = -v 1eaf -p 0003
+# Bootloader selection
+BOOTLOADER = stm32duino
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
-BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration
-MOUSEKEY_ENABLE = yes # Mouse keys
-EXTRAKEY_ENABLE = yes # Audio control and System control
-CONSOLE_ENABLE = no
-COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-AUDIO_ENABLE = no
+BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+BLUETOOTH_ENABLE = no # Enable Bluetooth
+AUDIO_ENABLE = no # Audio output
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = WS2812
-# Want backlighting and RGB Matrix patterns? See the note in the readme,
-# apply the patches, and then uncomment the lines below as well as the one in
-# config.h.
-#
-# BACKLIGHT_ENABLE = yes
-# BACKLIGHT_DRIVER = rgb_matrix
-
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/sowbug/ansi_tkl/bootloader_defs.h b/keyboards/sowbug/ansi_tkl/bootloader_defs.h
deleted file mode 100644
index 6b8fa9f727..0000000000
--- a/keyboards/sowbug/ansi_tkl/bootloader_defs.h
+++ /dev/null
@@ -1,10 +0,0 @@
-/* Address for jumping to bootloader on STM32 chips. */
-/* It is chip dependent, the correct number can be looked up here (page 175):
- * http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf
- * This also requires a patch to chibios:
- * /tmk_core/tool/chibios/ch-bootloader-jump.patch
- */
-
-// STM32F103* does NOT have an USB bootloader in ROM (only serial),
-// so setting anything here does not make much sense
-#define STM32_BOOTLOADER_ADDRESS 0x80000000
diff --git a/keyboards/sowbug/ansi_tkl/rules.mk b/keyboards/sowbug/ansi_tkl/rules.mk
index 0439491245..7dc7c6f6db 100644
--- a/keyboards/sowbug/ansi_tkl/rules.mk
+++ b/keyboards/sowbug/ansi_tkl/rules.mk
@@ -1,34 +1,27 @@
# MCU name
MCU = STM32F103
-# GENERIC STM32F103C8T6 board - stm32duino bootloader
-OPT_DEFS = -DCORTEX_VTOR_INIT=0x2000
-MCU_LDSCRIPT = STM32F103x8_stm32duino_bootloader
-BOARD = STM32_F103_STM32DUINO
-
-DFU_ARGS = -d 1eaf:0003 -a2 -R
-DFU_SUFFIX_ARGS = -v 1eaf -p 0003
+# Bootloader selection
+BOOTLOADER = stm32duino
# Build Options
-# comment out to disable the options.
+# change yes to no to disable
#
-BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration
-MOUSEKEY_ENABLE = yes # Mouse keys
-EXTRAKEY_ENABLE = yes # Audio control and System control
-CONSOLE_ENABLE = no
-COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-AUDIO_ENABLE = no
+BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+BLUETOOTH_ENABLE = no # Enable Bluetooth
+AUDIO_ENABLE = no # Audio output
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = WS2812
-# Want backlighting and RGB Matrix patterns? See the note in the readme,
-# apply the patches, and then uncomment the lines below as well as the one in
-# config.h.
-#
-# BACKLIGHT_ENABLE = yes
-# BACKLIGHT_DRIVER = rgb_matrix
-
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/technika/rules.mk b/keyboards/technika/rules.mk
index a548dbe9cc..50e88b591e 100644
--- a/keyboards/technika/rules.mk
+++ b/keyboards/technika/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/tkc/candybar/lefty/rules.mk b/keyboards/tkc/candybar/lefty/rules.mk
index 762df4a530..8e05f0643c 100644
--- a/keyboards/tkc/candybar/lefty/rules.mk
+++ b/keyboards/tkc/candybar/lefty/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# comment out to disable the options.
#
diff --git a/keyboards/tkc/candybar/righty/rules.mk b/keyboards/tkc/candybar/righty/rules.mk
index 762df4a530..8e05f0643c 100644
--- a/keyboards/tkc/candybar/righty/rules.mk
+++ b/keyboards/tkc/candybar/righty/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# comment out to disable the options.
#
diff --git a/keyboards/tkc/godspeed75/rules.mk b/keyboards/tkc/godspeed75/rules.mk
index 6a6372474c..12ce2905dc 100644
--- a/keyboards/tkc/godspeed75/rules.mk
+++ b/keyboards/tkc/godspeed75/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/tkw/grandiceps/rules.mk b/keyboards/tkw/grandiceps/rules.mk
index 432bf8647b..ca3435a19f 100644
--- a/keyboards/tkw/grandiceps/rules.mk
+++ b/keyboards/tkw/grandiceps/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F411
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
@@ -25,6 +28,3 @@ SERIAL_DRIVER = usart
OLED_DRIVER_ENABLE = yes
WS2812_DRIVER = pwm
OPT_DEFS += -DSTM32_DMA_REQUIRED=TRUE
-
-# Address of the bootloader in system memory
-STM32_BOOTLOADER_ADDRESS = 0x1FFF0000
diff --git a/keyboards/tkw/stoutgat/v2/f411/rules.mk b/keyboards/tkw/stoutgat/v2/f411/rules.mk
index 4f7f52e62b..b32a8b7f5b 100644
--- a/keyboards/tkw/stoutgat/v2/f411/rules.mk
+++ b/keyboards/tkw/stoutgat/v2/f411/rules.mk
@@ -1,5 +1,5 @@
# MCU name
MCU = STM32F411
-# Address of the bootloader in system memory
-STM32_BOOTLOADER_ADDRESS = 0x1FFF0000
+# Bootloader selection
+BOOTLOADER = stm32-dfu
diff --git a/keyboards/viktus/styrka/rules.mk b/keyboards/viktus/styrka/rules.mk
index ce2a3f75e5..612d7e4ccb 100644
--- a/keyboards/viktus/styrka/rules.mk
+++ b/keyboards/viktus/styrka/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/vinta/rules.mk b/keyboards/vinta/rules.mk
index d35a641976..6addb08053 100644
--- a/keyboards/vinta/rules.mk
+++ b/keyboards/vinta/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F042
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# comment out to disable the options.
#
diff --git a/keyboards/westfoxtrot/prophet/rules.mk b/keyboards/westfoxtrot/prophet/rules.mk
index 71fe100682..7079a79661 100644
--- a/keyboards/westfoxtrot/prophet/rules.mk
+++ b/keyboards/westfoxtrot/prophet/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# comment out to disable the options.
#
diff --git a/keyboards/xelus/kangaroo/rules.mk b/keyboards/xelus/kangaroo/rules.mk
index 2a0281f946..b4b4932343 100644
--- a/keyboards/xelus/kangaroo/rules.mk
+++ b/keyboards/xelus/kangaroo/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# comment out to disable the options.
#
diff --git a/keyboards/xelus/ninjin/rules.mk b/keyboards/xelus/ninjin/rules.mk
index bb7ad5260d..33e0419e3f 100644
--- a/keyboards/xelus/ninjin/rules.mk
+++ b/keyboards/xelus/ninjin/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/xelus/pachi/rev1/rules.mk b/keyboards/xelus/pachi/rev1/rules.mk
index 34953e2cb6..04ebc638ca 100644
--- a/keyboards/xelus/pachi/rev1/rules.mk
+++ b/keyboards/xelus/pachi/rev1/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/xelus/trinityxttkl/rules.mk b/keyboards/xelus/trinityxttkl/rules.mk
index 7e6bfc581c..b12368f154 100644
--- a/keyboards/xelus/trinityxttkl/rules.mk
+++ b/keyboards/xelus/trinityxttkl/rules.mk
@@ -1,6 +1,12 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Wildcard to allow APM32 MCU
+DFU_SUFFIX_ARGS = -v FFFF -p FFFF
+
# Build Options
# comment out to disable the options.
#
@@ -18,6 +24,3 @@ RGBLIGHT_ENABLE = no
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
-
-# Wildcard to allow APM32 MCU
-DFU_SUFFIX_ARGS = -p FFFF -v FFFF
\ No newline at end of file
diff --git a/keyboards/xelus/valor_frl_tkl/rules.mk b/keyboards/xelus/valor_frl_tkl/rules.mk
index 7165dd54f3..a81f8d1279 100644
--- a/keyboards/xelus/valor_frl_tkl/rules.mk
+++ b/keyboards/xelus/valor_frl_tkl/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/yugo_m/model_m_101/rules.mk b/keyboards/yugo_m/model_m_101/rules.mk
index 12a2e3dea6..7708f89f37 100644
--- a/keyboards/yugo_m/model_m_101/rules.mk
+++ b/keyboards/yugo_m/model_m_101/rules.mk
@@ -2,6 +2,9 @@
MCU = STM32F303
BOARD = QMK_PROTON_C
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/zoo/wampus/bootloader_defs.h b/keyboards/zoo/wampus/bootloader_defs.h
deleted file mode 100644
index dccd0fa5d1..0000000000
--- a/keyboards/zoo/wampus/bootloader_defs.h
+++ /dev/null
@@ -1,5 +0,0 @@
-/* Address for jumping to bootloader on STM32 chips. */
-/* It is chip dependent, the correct number can be looked up here (page 175):
- * http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf
- */
-#define STM32_BOOTLOADER_ADDRESS 0x1FFFC800
diff --git a/keyboards/zoo/wampus/rules.mk b/keyboards/zoo/wampus/rules.mk
index 889e4d858b..a0eade37cb 100644
--- a/keyboards/zoo/wampus/rules.mk
+++ b/keyboards/zoo/wampus/rules.mk
@@ -1,6 +1,9 @@
# MCU name
MCU = STM32F072
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
# Build Options
# change yes to no to disable
#
diff --git a/keyboards/zvecr/zv48/f401/rules.mk b/keyboards/zvecr/zv48/f401/rules.mk
index a087a1cc78..94dd741994 100644
--- a/keyboards/zvecr/zv48/f401/rules.mk
+++ b/keyboards/zvecr/zv48/f401/rules.mk
@@ -1,8 +1,8 @@
# MCU name
MCU = STM32F401
-# Address of the bootloader in system memory
-STM32_BOOTLOADER_ADDRESS = 0x1FFF0000
+# Bootloader selection
+BOOTLOADER = stm32-dfu
# Disable unsupported hardware
AUDIO_SUPPORTED = no
diff --git a/keyboards/zvecr/zv48/f411/rules.mk b/keyboards/zvecr/zv48/f411/rules.mk
index 4f7f52e62b..b32a8b7f5b 100644
--- a/keyboards/zvecr/zv48/f411/rules.mk
+++ b/keyboards/zvecr/zv48/f411/rules.mk
@@ -1,5 +1,5 @@
# MCU name
MCU = STM32F411
-# Address of the bootloader in system memory
-STM32_BOOTLOADER_ADDRESS = 0x1FFF0000
+# Bootloader selection
+BOOTLOADER = stm32-dfu
diff --git a/keyboards/chavdai40/bootloader_defs.h b/platforms/chibios/BLACKPILL_STM32_F401/configs/bootloader_defs.h
similarity index 83%
rename from keyboards/chavdai40/bootloader_defs.h
rename to platforms/chibios/BLACKPILL_STM32_F401/configs/bootloader_defs.h
index 6b218f7bd3..4da3d39a32 100644
--- a/keyboards/chavdai40/bootloader_defs.h
+++ b/platforms/chibios/BLACKPILL_STM32_F401/configs/bootloader_defs.h
@@ -2,4 +2,4 @@
/* It is chip dependent, the correct number can be looked up here:
* http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf
*/
-#define STM32_BOOTLOADER_ADDRESS 0x1FFFC400
\ No newline at end of file
+#define STM32_BOOTLOADER_ADDRESS 0x1FFF0000
diff --git a/keyboards/at_at/660m/bootloader_defs.h b/platforms/chibios/BLACKPILL_STM32_F411/configs/bootloader_defs.h
similarity index 78%
rename from keyboards/at_at/660m/bootloader_defs.h
rename to platforms/chibios/BLACKPILL_STM32_F411/configs/bootloader_defs.h
index dccd0fa5d1..4da3d39a32 100644
--- a/keyboards/at_at/660m/bootloader_defs.h
+++ b/platforms/chibios/BLACKPILL_STM32_F411/configs/bootloader_defs.h
@@ -1,5 +1,5 @@
/* Address for jumping to bootloader on STM32 chips. */
-/* It is chip dependent, the correct number can be looked up here (page 175):
+/* It is chip dependent, the correct number can be looked up here:
* http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf
*/
-#define STM32_BOOTLOADER_ADDRESS 0x1FFFC800
+#define STM32_BOOTLOADER_ADDRESS 0x1FFF0000
diff --git a/platforms/chibios/QMK_PROTON_C/convert_to_proton_c.mk b/platforms/chibios/QMK_PROTON_C/convert_to_proton_c.mk
index d0a337bad7..0618154678 100644
--- a/platforms/chibios/QMK_PROTON_C/convert_to_proton_c.mk
+++ b/platforms/chibios/QMK_PROTON_C/convert_to_proton_c.mk
@@ -2,6 +2,7 @@
TARGET := $(TARGET)_proton_c
MCU := STM32F303
BOARD := QMK_PROTON_C
+BOOTLOADER := stm32-dfu
OPT_DEFS += -DCONVERT_TO_PROTON_C
# These are defaults based on what has been implemented for ARM boards