From 9dcd03b6ca512126231478131796c093d237067f Mon Sep 17 00:00:00 2001
From: Ryan <fauxpark@gmail.com>
Date: Tue, 8 Jun 2021 19:48:46 +1000
Subject: [PATCH] Set `BOOTLOADER = stm32-dfu` for all applicable STM32 boards
 (#12956)

* Set bootloader to stm32-dfu for STM32F303

* Set bootloader to stm32-dfu for STM32F0x2

* Set bootloader to stm32-dfu for STM32F4x1

* Set bootloader to stm32duino for sowbug

* Delete redundant bootloader_defs headers

* Add some missing MCU name comments

* Move APM32 dfu-suffix overrides underneath bootloader

* Remove redundant STM32_BOOTLOADER_ADDRESS defines/rules
---
 .../1upkeyboards/sweet16/v2/proton_c/rules.mk |  3 ++
 keyboards/acheron/arctic/rules.mk             |  3 ++
 keyboards/acheron/austin/rules.mk             |  3 ++
 keyboards/acheron/keebspcb/rules.mk           |  3 ++
 keyboards/acheron/lasgweloth/rules.mk         |  3 ++
 keyboards/acheron/shark/rules.mk              |  3 ++
 keyboards/aeboards/ext65/rev2/rules.mk        |  3 ++
 keyboards/ai03/andromeda/rules.mk             |  3 ++
 keyboards/ai03/vega/rules.mk                  |  3 ++
 keyboards/akegata_denki/device_one/rules.mk   |  4 +-
 keyboards/alpine65/rules.mk                   |  3 ++
 keyboards/at_at/660m/rules.mk                 |  3 ++
 .../atreus/keymaps/ridingqwerty/rules.mk      |  5 ++-
 keyboards/boston/rules.mk                     |  3 ++
 keyboards/boston_meetup/2019/rules.mk         |  3 ++
 keyboards/box75/rules.mk                      |  3 ++
 keyboards/c39/keymaps/drashna/rules.mk        |  5 ++-
 keyboards/caffeinated/serpent65/rules.mk      |  3 ++
 keyboards/cannonkeys/an_c/rules.mk            |  9 +++--
 keyboards/cannonkeys/atlas/rules.mk           |  3 ++
 keyboards/cannonkeys/chimera65/rules.mk       |  3 ++
 keyboards/cannonkeys/db60/rules.mk            |  9 +++--
 keyboards/cannonkeys/devastatingtkl/rules.mk  |  9 +++--
 keyboards/cannonkeys/instant60/rules.mk       |  9 +++--
 keyboards/cannonkeys/instant65/rules.mk       |  9 +++--
 keyboards/cannonkeys/iron165/rules.mk         |  3 ++
 keyboards/cannonkeys/obliterated75/rules.mk   |  9 +++--
 keyboards/cannonkeys/onyx/rules.mk            |  9 +++--
 keyboards/cannonkeys/rekt1800/rules.mk        |  9 +++--
 keyboards/cannonkeys/sagittarius/rules.mk     |  5 ++-
 .../satisfaction75/bootloader_defs.h          |  5 ---
 keyboards/cannonkeys/satisfaction75/rules.mk  |  9 +++--
 keyboards/cannonkeys/savage65/rules.mk        |  9 +++--
 keyboards/cannonkeys/tmov2/rules.mk           |  9 +++--
 keyboards/cannonkeys/tsukuyomi/rules.mk       |  9 +++--
 keyboards/carbo65/rules.mk                    |  3 ++
 keyboards/charue/sunsetter/rules.mk           |  3 ++
 keyboards/chavdai40/rev1/rules.mk             |  5 ++-
 keyboards/chavdai40/rev2/rules.mk             |  5 ++-
 keyboards/cheshire/curiosity/rules.mk         |  3 ++
 keyboards/ck60i/rules.mk                      |  3 ++
 keyboards/ckeys/thedora/rules.mk              |  3 ++
 keyboards/clueboard/60/config.h               |  6 ---
 keyboards/clueboard/66/rev4/config.h          |  6 ---
 keyboards/clueboard/66_hotswap/gen1/config.h  |  6 ---
 keyboards/coarse/cordillera/rules.mk          |  3 ++
 keyboards/cutie_club/borsdorf/rules.mk        |  3 ++
 keyboards/cutie_club/giant_macro_pad/rules.mk |  3 ++
 keyboards/daji/seis_cinco/rules.mk            |  3 ++
 keyboards/dekunukem/duckypad/rules.mk         |  5 ++-
 keyboards/durgod/k320/rules.mk                |  4 +-
 keyboards/dztech/dz60rgb/v1/rules.mk          |  3 ++
 keyboards/dztech/dz60rgb_ansi/v1/rules.mk     |  3 ++
 keyboards/dztech/dz60rgb_wkl/v1/rules.mk      |  3 ++
 keyboards/dztech/dz65rgb/v1/rules.mk          |  3 ++
 keyboards/ebastler/isometria_75/rev1/rules.mk |  3 ++
 keyboards/evolv/rules.mk                      |  3 ++
 keyboards/ferris/0_2/rules.mk                 |  3 ++
 keyboards/function96/v1/rules.mk              |  3 ++
 keyboards/function96/v2/rules.mk              |  3 ++
 keyboards/geekboards/macropad_v2/rules.mk     |  3 ++
 keyboards/geminate60/rules.mk                 |  3 ++
 keyboards/generic_panda/panda65_01/rules.mk   |  3 ++
 keyboards/gmmk/pro/rules.mk                   |  3 ++
 keyboards/hadron/ver3/rules.mk                |  3 ++
 keyboards/hand88/rules.mk                     |  3 ++
 keyboards/handwired/ck4x4/rules.mk            |  3 ++
 keyboards/handwired/co60/rev6/config.h        |  6 ---
 keyboards/handwired/co60/rev6/rules.mk        |  3 ++
 keyboards/handwired/co60/rev7/config.h        |  6 ---
 keyboards/handwired/co60/rev7/rules.mk        |  3 ++
 keyboards/handwired/d48/rules.mk              |  3 ++
 keyboards/handwired/ddg_56/rules.mk           |  5 ++-
 keyboards/handwired/floorboard/rules.mk       |  3 ++
 .../handwired/onekey/blackpill_f401/rules.mk  |  4 +-
 .../handwired/onekey/blackpill_f411/rules.mk  |  4 +-
 .../onekey/blackpill_f411_tinyuf2/rules.mk    |  6 +--
 keyboards/handwired/onekey/proton_c/rules.mk  |  3 ++
 .../handwired/onekey/stm32f0_disco/rules.mk   |  2 +
 .../handwired/pill60/blackpill_f401/rules.mk  |  8 +---
 .../handwired/pill60/blackpill_f411/rules.mk  |  8 +---
 keyboards/handwired/riblee_f401/rules.mk      |  4 +-
 keyboards/handwired/riblee_f411/rules.mk      |  4 +-
 keyboards/handwired/selene/rules.mk           |  3 ++
 keyboards/handwired/sick_pad/rules.mk         |  3 ++
 keyboards/handwired/steamvan/rev1/config.h    |  6 ---
 keyboards/handwired/steamvan/rev1/rules.mk    |  3 ++
 keyboards/handwired/t111/rules.mk             |  1 +
 keyboards/handwired/wulkan/rules.mk           |  3 ++
 keyboards/handwired/z150/rules.mk             |  1 +
 keyboards/hp69/rules.mk                       |  4 +-
 keyboards/hs60/v2/ansi/rules.mk               |  3 ++
 keyboards/hs60/v2/hhkb/rules.mk               |  3 ++
 keyboards/hs60/v2/iso/rules.mk                |  3 ++
 keyboards/hub20/rules.mk                      |  3 ++
 keyboards/iron180/rules.mk                    |  3 ++
 keyboards/kbdfans/kbd67/mkiirgb/v1/rules.mk   |  3 ++
 keyboards/keebio/bdn9/rev2/rules.mk           |  3 ++
 keyboards/keebio/choconum/rules.mk            |  3 ++
 keyboards/keebio/dsp40/rev1/rules.mk          |  3 ++
 keyboards/keebwerk/mega/ansi/rules.mk         |  3 ++
 keyboards/kv/revt/rules.mk                    |  3 ++
 keyboards/linworks/whale75/rules.mk           |  5 ++-
 keyboards/mechlovin/adelais/rules.mk          |  2 +
 keyboards/mechlovin/hannah60rgb/rules.mk      |  3 ++
 keyboards/mechlovin/hannah65/rules.mk         |  5 ++-
 keyboards/mechlovin/hex6c/rules.mk            |  4 +-
 keyboards/mechlovin/infinity87/rev1/rules.mk  |  4 ++
 .../mechlovin/infinity87/rgb_rev1/rules.mk    |  4 ++
 keyboards/mechlovin/infinity88/rules.mk       |  3 ++
 keyboards/mechlovin/tmkl/rules.mk             |  3 ++
 keyboards/melgeek/mj61/rev1/rules.mk          |  3 ++
 keyboards/melgeek/mj61/rev2/rules.mk          |  3 ++
 keyboards/melgeek/mj63/rev1/rules.mk          |  3 ++
 keyboards/melgeek/mj63/rev2/rules.mk          |  3 ++
 keyboards/melgeek/mj64/rev1/rules.mk          |  3 ++
 keyboards/melgeek/mj64/rev2/rules.mk          |  3 ++
 keyboards/melgeek/mj64/rev3/rules.mk          |  3 ++
 keyboards/melgeek/mj65/rev3/rules.mk          |  3 ++
 keyboards/melgeek/mojo75/rev1/rules.mk        |  3 ++
 keyboards/melgeek/z70ultra/rev1/rules.mk      |  3 ++
 keyboards/misterknife/knife66/rules.mk        |  3 ++
 keyboards/misterknife/knife66_iso/rules.mk    |  3 ++
 keyboards/mode/eighty/m80h/rules.mk           |  3 ++
 keyboards/mode/eighty/m80s/rules.mk           |  3 ++
 keyboards/monarch/rules.mk                    |  3 ++
 keyboards/moonlander/rules.mk                 |  3 ++
 keyboards/nack/rules.mk                       |  3 ++
 keyboards/nebula12/bootloader_defs.h          |  5 ---
 keyboards/nebula12/rules.mk                   |  4 +-
 keyboards/nebula68/rules.mk                   |  3 ++
 keyboards/nemui/rules.mk                      |  3 ++
 keyboards/nibiria/stream15/rules.mk           |  3 ++
 keyboards/nightingale_studios/hailey/rules.mk |  3 ++
 keyboards/nk65/rules.mk                       |  3 ++
 keyboards/nk87/rules.mk                       |  3 ++
 keyboards/peiorisboards/ixora/rules.mk        |  3 ++
 keyboards/phoenix/rules.mk                    |  4 +-
 keyboards/pizzakeyboards/pizza65/rules.mk     |  3 ++
 keyboards/planck/ez/rules.mk                  |  3 ++
 keyboards/planck/rev6/rules.mk                |  3 ++
 keyboards/polilla/rev1/rules.mk               |  3 ++
 keyboards/preonic/rev3/rules.mk               |  3 ++
 keyboards/primekb/meridian/rules.mk           |  3 ++
 keyboards/projectkb/alice/rev1/rules.mk       |  3 ++
 keyboards/projectkb/alice/rev2/rules.mk       |  3 ++
 keyboards/projectkb/signature87/rules.mk      |  3 ++
 keyboards/ramonimbao/squishy65/rules.mk       |  3 ++
 keyboards/ramonimbao/wete/rules.mk            |  3 ++
 keyboards/retro_75/rules.mk                   |  3 ++
 keyboards/rgbkb/pan/rev1/proton_c/rules.mk    |  5 ++-
 keyboards/satt/vision/rules.mk                |  3 ++
 keyboards/sowbug/68keys/bootloader_defs.h     | 10 -----
 keyboards/sowbug/68keys/rules.mk              | 39 ++++++++-----------
 keyboards/sowbug/ansi_tkl/bootloader_defs.h   | 10 -----
 keyboards/sowbug/ansi_tkl/rules.mk            | 39 ++++++++-----------
 keyboards/technika/rules.mk                   |  3 ++
 keyboards/tkc/candybar/lefty/rules.mk         |  3 ++
 keyboards/tkc/candybar/righty/rules.mk        |  3 ++
 keyboards/tkc/godspeed75/rules.mk             |  3 ++
 keyboards/tkw/grandiceps/rules.mk             |  6 +--
 keyboards/tkw/stoutgat/v2/f411/rules.mk       |  4 +-
 keyboards/viktus/styrka/rules.mk              |  3 ++
 keyboards/vinta/rules.mk                      |  3 ++
 keyboards/westfoxtrot/prophet/rules.mk        |  3 ++
 keyboards/xelus/kangaroo/rules.mk             |  3 ++
 keyboards/xelus/ninjin/rules.mk               |  3 ++
 keyboards/xelus/pachi/rev1/rules.mk           |  3 ++
 keyboards/xelus/trinityxttkl/rules.mk         |  9 +++--
 keyboards/xelus/valor_frl_tkl/rules.mk        |  3 ++
 keyboards/yugo_m/model_m_101/rules.mk         |  3 ++
 keyboards/zoo/wampus/bootloader_defs.h        |  5 ---
 keyboards/zoo/wampus/rules.mk                 |  3 ++
 keyboards/zvecr/zv48/f401/rules.mk            |  4 +-
 keyboards/zvecr/zv48/f411/rules.mk            |  4 +-
 .../configs}/bootloader_defs.h                |  2 +-
 .../configs}/bootloader_defs.h                |  4 +-
 .../QMK_PROTON_C/convert_to_proton_c.mk       |  1 +
 178 files changed, 556 insertions(+), 209 deletions(-)
 delete mode 100644 keyboards/cannonkeys/satisfaction75/bootloader_defs.h
 delete mode 100644 keyboards/nebula12/bootloader_defs.h
 delete mode 100644 keyboards/sowbug/68keys/bootloader_defs.h
 delete mode 100644 keyboards/sowbug/ansi_tkl/bootloader_defs.h
 delete mode 100644 keyboards/zoo/wampus/bootloader_defs.h
 rename {keyboards/chavdai40 => platforms/chibios/BLACKPILL_STM32_F401/configs}/bootloader_defs.h (83%)
 rename {keyboards/at_at/660m => platforms/chibios/BLACKPILL_STM32_F411/configs}/bootloader_defs.h (78%)

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 <http://www.gnu.org/licenses/>.
 #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 <http://www.gnu.org/licenses/>.
 #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_dir>/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_dir>/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