diff --git a/keyboards/1upkeyboards/sweet16/v2/proton_c/rules.mk b/keyboards/1upkeyboards/sweet16/v2/proton_c/rules.mk
index 6fb15f5a8..fcfa05c3a 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 4a6aa0a4a..b38cf0001 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 b73c2cf7c..57fb9cbb3 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 849a137cd..7a166e84f 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 56b91b692..fb7e49515 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 94accbd8f..455c98f7e 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 78d1e586a..8794d357c 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 b5330c8e7..b47c99696 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 b5330c8e7..b47c99696 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 f8e76a5d3..383269654 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 4f9422096..61f925301 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 a272f6d34..f0465ceb2 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 ebf83f02e..a41ef5f10 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 e7bc2db59..24e1dbe3c 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 5aaac4b3e..aa1920ae5 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 a202eca61..f444528f1 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 09c29f0e8..a11acc240 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 ce2a3f75e..612d7e4cc 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 7309744d1..55e03edea 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 8037597b5..0f13950c6 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 a08f2fa49..7d2cc67f4 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 3221f8a4b..d7157ce76 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 4ce69bf4a..3a17bc4bd 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 e5ba2903b..81ee89594 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 eba941f89..a930d7025 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 9de75a614..f42acaafe 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 3ff3bb919..5dd12f03c 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 50235c6e1..f48fd0fa1 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 c4f07f544..0f3d34ea5 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 62d0ab63d..968520203 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 dccd0fa5d..000000000
--- 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 3861b4849..174f20c0e 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 2454573d2..094dcf3ce 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 294c873ee..f1e48a6b7 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 4e7791a79..a930d7025 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 51aaf0e36..6a7c2ca63 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 85952f1a9..dde961d7a 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 64c6f662a..379bdb6c6 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 64c6f662a..379bdb6c6 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 d9a7d86ab..b0bca5a89 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 2360b9c85..1138f462e 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 e364db1c1..265e6b347 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 1ca9d9844..9263a8f65 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 2c11cf1ec..bc5a9bf33 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 5ed3c5b27..e0e69a2ba 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 d35a6a659..70d00be2f 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 4430f2419..6d815e4ff 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 4430f2419..6d815e4ff 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 768e50069..f2f3619b5 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 2deef1eee..1a7031eff 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 7e910174f..e6f0007fd 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 f6b7f394c..678eb385c 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 f6b7f394c..678eb385c 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 e8753127e..6a9af2dee 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 8751af649..5468deb71 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 72be720b2..ec05abff0 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 13a44c3c6..b01db8134 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 5a7649b75..f1a66061c 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 48ab62762..adbe34e7d 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 48ab62762..adbe34e7d 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 73575b673..47db87709 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 56db09520..8fc40411d 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 cb4e9cc83..b05f306d3 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 011ca86b6..b12d055a3 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 c7ed67682..ef839977e 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 3067704c5..36088f03f 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 ebf1648c2..4bad1b8a5 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 79c64e735..c142d10f2 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 f4e7ae924..5c26d9a30 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 20e62472b..16fa7cb4c 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 3e15f073f..25e7a2bf1 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 41a6cc522..60a9f089d 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 814338430..56c900712 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 131e8fb26..be14c2e65 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 6eb37a581..9b0a72afb 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 7cf886431..3ded2a258 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 ec38577b2..4d0b1591e 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 4e157baed..7a846816d 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 d8928e9ec..6b3792832 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 8c514309d..9b0a72afb 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 84dd584e8..124355701 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 efe2522ee..0291ca04f 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 a44b2b058..8b029be69 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 bfb967f9a..842675b75 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 28578f082..4fe7d9aff 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 e877484b9..18a6690c2 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 30c74d2ec..99edf7c17 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 1c391242b..558598d74 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 94086e14f..83f0d7f48 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 d86e9f6e4..b9b242568 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 96ad29a6f..13e88cfe2 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 5d5189263..1a0c1abbd 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 780454d3f..87d86ccd4 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 a27f8a064..53b801289 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 9abb4f80a..61d6ba1f5 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 a202eca61..f444528f1 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 4e79819ff..85897df63 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 f5a500a16..df6de1407 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 528c9d6ce..f166909c5 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 5f781fb5d..ab4684228 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 5e664cb81..6a1a9cbfa 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 1d6c0d8da..7d2acfcd0 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 444459918..bcca4a73d 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 da4ad3e57..73e90befb 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 2fe4bb7aa..3d11b3c9a 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 57ead17fa..656722353 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 99aa532c2..0af4a07f7 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 19be0ad83..82b0f2e48 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 aa7adc895..27de40424 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 40e4543e8..85c01d52b 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 bbe320ff5..54a646d27 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 31a770cfb..e7b3e77e4 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 31a770cfb..e7b3e77e4 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 c55beb7d1..e77935576 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 c55beb7d1..e77935576 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 f50aefd04..0efb7fb8f 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 f50aefd04..0efb7fb8f 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 f50aefd04..0efb7fb8f 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 bf4ed9553..13a802355 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 0ccfdcb8d..9b3d6367f 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 48087186d..a80e42906 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 540a423f2..2202d51ea 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 540a423f2..2202d51ea 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 67c3b0d66..583ff2377 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 67c3b0d66..583ff2377 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 22ec091e7..bd08c22ee 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 7076347ec..8e8dbf94f 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 92103cab1..35e944069 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 dccd0fa5d..000000000
--- 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 8b58827ad..3a423fb78 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 40e17f1b4..bcf1fd1a8 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 011a8a89b..bff178858 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 af39fc16c..fde060ddb 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 5789036c7..614fcdedb 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 2e270289d..e3f02ee09 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 e10ec5bc0..71f8f3dd8 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 5451bf95e..0bbdadfe6 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 968c6548c..7fa379f1a 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 2889fe9f3..6972c8176 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 85d474c5e..8d221767e 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 87da1696a..7760353e3 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 f755f9d1d..e6ef1737e 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 ca3e8f0ad..ae7ff2a5a 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 9e2f958be..74a9feb66 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 4e0b8b15e..21714aab0 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 4e0b8b15e..21714aab0 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 a307166cd..fe264da9d 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 000e0d34f..1350d285e 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 039cc87a2..7eb46b9ba 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 ec3c2b0c3..fcea7632e 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 e7e9d992d..7a846816d 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 888e650d5..5e8194558 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 6b8fa9f72..000000000
--- 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 043949124..7dc7c6f6d 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 6b8fa9f72..000000000
--- 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 043949124..7dc7c6f6d 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 a548dbe9c..50e88b591 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 762df4a53..8e05f0643 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 762df4a53..8e05f0643 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 6a6372474..12ce2905d 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 432bf8647..ca3435a19 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 4f7f52e62..b32a8b7f5 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 ce2a3f75e..612d7e4cc 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 d35a64197..6addb0805 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 71fe10068..7079a7966 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 2a0281f94..b4b493234 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 bb7ad5260..33e0419e3 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 34953e2cb..04ebc638c 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 7e6bfc581..b12368f15 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 7165dd54f..a81f8d127 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 12a2e3dea..7708f89f3 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 dccd0fa5d..000000000
--- 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 889e4d858..a0eade37c 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 a087a1cc7..94dd74199 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 4f7f52e62..b32a8b7f5 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 6b218f7bd..4da3d39a3 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 dccd0fa5d..4da3d39a3 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 d0a337bad..061815467 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