summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--common_features.mk23
-rw-r--r--disable_features.mk1
-rw-r--r--docs/feature_bluetooth.md19
-rw-r--r--keyboards/10bleoledhub/rules.mk4
-rw-r--r--keyboards/40percentclub/mf68/keymaps/mf68_ble/rules.mk3
-rw-r--r--keyboards/atreus/feather/rules.mk3
-rw-r--r--keyboards/converter/adb_usb/rules.mk1
-rw-r--r--keyboards/converter/m0110_usb/rules.mk1
-rw-r--r--keyboards/converter/usb_usb/ble/rules.mk6
-rw-r--r--keyboards/handwired/42/rules.mk3
-rw-r--r--keyboards/handwired/bdn9_ble/rules.mk3
-rw-r--r--keyboards/handwired/fruity60/rules.mk4
-rw-r--r--keyboards/handwired/hacked_motospeed/rules.mk5
-rw-r--r--keyboards/handwired/prkl30/feather/rules.mk4
-rw-r--r--keyboards/handwired/promethium/keymaps/default/rules.mk2
-rw-r--r--keyboards/handwired/promethium/keymaps/priyadi/rules.mk2
-rw-r--r--keyboards/handwired/promethium/rules.mk4
-rw-r--r--keyboards/handwired/pterodactyl/rules.mk4
-rw-r--r--keyboards/handwired/slash/rules.mk4
-rw-r--r--keyboards/laptreus/rules.mk4
-rw-r--r--keyboards/latin47ble/rules.mk4
-rw-r--r--keyboards/latin64ble/rules.mk4
-rw-r--r--keyboards/latinpadble/rules.mk4
-rw-r--r--keyboards/meira/featherble/rules.mk2
-rw-r--r--keyboards/nek_type_a/rules.mk4
-rw-r--r--keyboards/spaceman/pancake/rev1/feather/rules.mk3
-rw-r--r--keyboards/tokyokeyboard/alix40/rules.mk4
-rw-r--r--show_options.mk2
-rw-r--r--tmk_core/common.mk19
-rw-r--r--tmk_core/protocol/lufa.mk27
-rw-r--r--users/wanleg/rules.mk4
31 files changed, 78 insertions, 99 deletions
diff --git a/common_features.mk b/common_features.mk
index f4f79000b3..92e119d35e 100644
--- a/common_features.mk
+++ b/common_features.mk
@@ -745,3 +745,26 @@ ifeq ($(strip $(USBPD_ENABLE)), yes)
         endif
     endif
 endif
+
+BLUETOOTH_ENABLE ?= no
+VALID_BLUETOOTH_DRIVER_TYPES = AdafruitBLE RN42 custom
+ifeq ($(strip $(BLUETOOTH_ENABLE)), yes)
+    ifeq ($(filter $(strip $(BLUETOOTH_DRIVER)),$(VALID_BLUETOOTH_DRIVER_TYPES)),)
+        $(error "$(BLUETOOTH_DRIVER)" is not a valid Bluetooth driver type)
+    endif
+    OPT_DEFS += -DBLUETOOTH_ENABLE
+    NO_USB_STARTUP_CHECK := yes
+    SRC += outputselect.c
+
+    ifeq ($(strip $(BLUETOOTH_DRIVER)), AdafruitBLE)
+        OPT_DEFS += -DMODULE_ADAFRUIT_BLE
+        SRC += analog.c
+        SRC += $(LUFA_DIR)/adafruit_ble.cpp
+        QUANTUM_LIB_SRC += spi_master.c
+    endif
+
+    ifeq ($(strip $(BLUETOOTH_DRIVER)), RN42)
+        OPT_DEFS += DMODULE_RN42
+        SRC += $(TMK_DIR)/protocol/serial_uart.c
+    endif
+endif
diff --git a/disable_features.mk b/disable_features.mk
index 84d8316eac..eeae688850 100644
--- a/disable_features.mk
+++ b/disable_features.mk
@@ -1,7 +1,6 @@
 # Unconditionally disable features that a keyboard advertises it doesn't support
 
 FEATURE_NAMES :=
-FEATURE_NAMES += ADAFRUIT_BLE
 FEATURE_NAMES += AUDIO
 FEATURE_NAMES += BACKLIGHT
 FEATURE_NAMES += BLUETOOTH
diff --git a/docs/feature_bluetooth.md b/docs/feature_bluetooth.md
index 08e5f24ac5..7860ad5478 100644
--- a/docs/feature_bluetooth.md
+++ b/docs/feature_bluetooth.md
@@ -4,10 +4,10 @@
 
 Currently Bluetooth support is limited to AVR based chips. For Bluetooth 2.1, QMK has support for RN-42 modules. For more recent BLE protocols, currently only the Adafruit Bluefruit SPI Friend is directly supported. BLE is needed to connect to iOS devices. Note iOS does not support mouse input.
 
-|Board                                                           |Bluetooth Protocol          |Connection Type |rules.mk                   |Bluetooth Chip|
-|----------------------------------------------------------------|----------------------------|----------------|---------------------------|--------------|
-|Roving Networks RN-42 (Sparkfun Bluesmirf)                       |Bluetooth Classic           | UART           |`BLUETOOTH = RN42`          | RN-42        |
-|[Bluefruit LE SPI Friend](https://www.adafruit.com/product/2633)|Bluetooth Low Energy        | SPI            |`BLUETOOTH = AdafruitBLE`   | nRF51822      |
+|Board                                                           |Bluetooth Protocol  |Connection Type|rules.mk                        |Bluetooth Chip|
+|----------------------------------------------------------------|--------------------|---------------|--------------------------------|--------------|
+|Roving Networks RN-42 (Sparkfun Bluesmirf)                      |Bluetooth Classic   |UART           |`BLUETOOTH_DRIVER = RN42`       |RN-42         |
+|[Bluefruit LE SPI Friend](https://www.adafruit.com/product/2633)|Bluetooth Low Energy|SPI            |`BLUETOOTH_DRIVER = AdafruitBLE`|nRF51822      |
 
 Not Supported Yet but possible:
 * [Bluefruit LE UART Friend](https://www.adafruit.com/product/2479). [Possible tmk implementation found in](https://github.com/tmk/tmk_keyboard/issues/514)
@@ -23,16 +23,17 @@ Currently The only bluetooth chipset supported by QMK is the Adafruit Bluefruit
 
 A Bluefruit UART friend can be converted to an SPI friend, however this [requires](https://github.com/qmk/qmk_firmware/issues/2274) some reflashing and soldering directly to the MDBT40 chip.
 
-
 <!-- FIXME: Document bluetooth support more completely. -->
 ## Bluetooth Rules.mk Options
 
 The currently supported Bluetooth chipsets do not support [N-Key Rollover (NKRO)](reference_glossary.md#n-key-rollover-nkro), so `rules.mk` must contain `NKRO_ENABLE = no`.
 
-Use only one of these to enable Bluetooth:
-* BLUETOOTH_ENABLE = yes (Legacy Option)
-* BLUETOOTH = RN42
-* BLUETOOTH = AdafruitBLE
+Add the following to your `rules.mk`:
+
+```makefile
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE # or RN42
+```
 
 ## Bluetooth Keycodes
 
diff --git a/keyboards/10bleoledhub/rules.mk b/keyboards/10bleoledhub/rules.mk
index 1e036e660c..700f7e8f77 100644
--- a/keyboards/10bleoledhub/rules.mk
+++ b/keyboards/10bleoledhub/rules.mk
@@ -21,9 +21,9 @@ SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
 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
-BLUETOOTH = AdafruitBLE
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
 OLED_ENABLE = yes
 OLED_DRIVER = SSD1306
 ENCODER_ENABLE = yes
diff --git a/keyboards/40percentclub/mf68/keymaps/mf68_ble/rules.mk b/keyboards/40percentclub/mf68/keymaps/mf68_ble/rules.mk
index 2a4ff658cf..160b3684b3 100644
--- a/keyboards/40percentclub/mf68/keymaps/mf68_ble/rules.mk
+++ b/keyboards/40percentclub/mf68/keymaps/mf68_ble/rules.mk
@@ -4,5 +4,6 @@ F_CPU = 8000000
 # Build Options
 #   change yes to no to disable
 #
-BLUETOOTH = AdafruitBLE
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
 BACKLIGHT_ENABLE = no
diff --git a/keyboards/atreus/feather/rules.mk b/keyboards/atreus/feather/rules.mk
index 35d7431539..ad0b4a5046 100644
--- a/keyboards/atreus/feather/rules.mk
+++ b/keyboards/atreus/feather/rules.mk
@@ -10,5 +10,6 @@ BOOTLOADER = caterina
 # Build Options
 #   change yes to no to disable
 #
-BLUETOOTH = AdafruitBLE
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
 CONSOLE_ENABLE = no
diff --git a/keyboards/converter/adb_usb/rules.mk b/keyboards/converter/adb_usb/rules.mk
index 56967770b3..7c861e2702 100644
--- a/keyboards/converter/adb_usb/rules.mk
+++ b/keyboards/converter/adb_usb/rules.mk
@@ -16,7 +16,6 @@ NKRO_ENABLE      = no   # USB Nkey Rollover - not yet supported in LUFA
 EXTRAKEY_ENABLE  = yes
 USB_HID_ENABLE   = yes
 BACKLIGHT_ENABLE = no
-#BLUETOOTH        = AdafruitBLE  # For Adafruit Feather 32U4 BLE support, uncomment this line
 CUSTOM_MATRIX    = yes
 
 SRC = matrix.c adb.c led.c
diff --git a/keyboards/converter/m0110_usb/rules.mk b/keyboards/converter/m0110_usb/rules.mk
index f59530ce46..288b1729f0 100644
--- a/keyboards/converter/m0110_usb/rules.mk
+++ b/keyboards/converter/m0110_usb/rules.mk
@@ -19,7 +19,6 @@ NKRO_ENABLE      = no   # USB Nkey Rollover - not yet supported in LUFA
 EXTRAKEY_ENABLE  = yes
 USB_HID_ENABLE   = yes
 BACKLIGHT_ENABLE = no
-#BLUETOOTH        = AdafruitBLE  # For Adafruit Feather 32U4 BLE support, uncomment this line
 CUSTOM_MATRIX    = yes
 
 SRC = matrix.c m0110.c
diff --git a/keyboards/converter/usb_usb/ble/rules.mk b/keyboards/converter/usb_usb/ble/rules.mk
index 76af3e1fa3..0a6496ba43 100644
--- a/keyboards/converter/usb_usb/ble/rules.mk
+++ b/keyboards/converter/usb_usb/ble/rules.mk
@@ -13,9 +13,9 @@ NKRO_ENABLE = no            # USB Nkey Rollover
 BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality on B7 by default
 RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
 UNICODE_ENABLE = no         # Unicode
-BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
 AUDIO_ENABLE = no           # Audio output on port C6
-BLUETOOTH = AdafruitBLE
-ADAFRUIT_BLE_ENABLE = yes
+
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
 
 EXTRAFLAGS += -flto
diff --git a/keyboards/handwired/42/rules.mk b/keyboards/handwired/42/rules.mk
index a61114628f..b5764728bc 100644
--- a/keyboards/handwired/42/rules.mk
+++ b/keyboards/handwired/42/rules.mk
@@ -26,4 +26,5 @@ AUDIO_ENABLE = no           # Audio output on port C6
 UNICODE_ENABLE = no         # Unicode
 UNICODEMAP_ENABLE = no      # ^^
 UCIS_ENABLE = no            # ^^
-BLUETOOTH = AdafruitBLE
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
diff --git a/keyboards/handwired/bdn9_ble/rules.mk b/keyboards/handwired/bdn9_ble/rules.mk
index c3518e6457..03e354b9d7 100644
--- a/keyboards/handwired/bdn9_ble/rules.mk
+++ b/keyboards/handwired/bdn9_ble/rules.mk
@@ -22,6 +22,7 @@ NKRO_ENABLE = no            # USB Nkey Rollover
 BACKLIGHT_ENABLE = yes       # Enable keyboard backlight functionality
 RGBLIGHT_ENABLE = no       # Enable keyboard RGB underglow
 UNICODE_ENABLE = no         # Unicode
-BLUETOOTH = AdafruitBLE       # Enable Bluetooth
 AUDIO_ENABLE = no           # Audio output on port C6
 ENCODER_ENABLE = no
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
diff --git a/keyboards/handwired/fruity60/rules.mk b/keyboards/handwired/fruity60/rules.mk
index 1dfc9007ab..37f8de998e 100644
--- a/keyboards/handwired/fruity60/rules.mk
+++ b/keyboards/handwired/fruity60/rules.mk
@@ -22,8 +22,8 @@ NKRO_ENABLE = no            # USB Nkey Rollover
 BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
 RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
 UNICODE_ENABLE = no         # Unicode
-BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
 AUDIO_ENABLE = no           # Audio output on port C6
-BLUETOOTH = AdafruitBLE
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
 
 LAYOUTS = 60_tsangan_hhkb
diff --git a/keyboards/handwired/hacked_motospeed/rules.mk b/keyboards/handwired/hacked_motospeed/rules.mk
index 7ba6a3af7f..0228be52c4 100644
--- a/keyboards/handwired/hacked_motospeed/rules.mk
+++ b/keyboards/handwired/hacked_motospeed/rules.mk
@@ -19,7 +19,8 @@ NKRO_ENABLE = no            # USB Nkey Rollover
 BACKLIGHT_ENABLE = yes       # Enable keyboard backlight functionality on B7 by default
 RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
 UNICODE_ENABLE = no         # Unicode
-BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
 AUDIO_ENABLE = no           # Audio output on port C6
 NO_USB_STARTUP_CHECK = yes  # Disable initialization only when usb is plugged in
-BLUETOOTH = RN42
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = RN42
+
diff --git a/keyboards/handwired/prkl30/feather/rules.mk b/keyboards/handwired/prkl30/feather/rules.mk
index 6357015126..df2aa7f1db 100644
--- a/keyboards/handwired/prkl30/feather/rules.mk
+++ b/keyboards/handwired/prkl30/feather/rules.mk
@@ -10,7 +10,6 @@ BOOTLOADER = caterina
 # Build Options
 #   change yes to no to disable
 #
-BLUETOOTH = AdafruitBLE
 BOOTMAGIC_ENABLE = lite     # Enable Bootmagic Lite
 ENCODER_ENABLE = yes
 MOUSEKEY_ENABLE  = no       # Mouse keys
@@ -22,3 +21,6 @@ NKRO_ENABLE  = yes          # USB Nkey Rollover - if this doesn't work, see here
 BACKLIGHT_ENABLE  = no
 AUDIO_ENABLE  = no          # This can be enabled if a speaker is connected to the expansion port. Not compatible with RGBLIGHT below
 RGBLIGHT_ENABLE  = no       # This can be enabled if a ws2812 strip is connected to the expansion port.
+
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
diff --git a/keyboards/handwired/promethium/keymaps/default/rules.mk b/keyboards/handwired/promethium/keymaps/default/rules.mk
index 4fd9b656b6..96db4fcbbc 100644
--- a/keyboards/handwired/promethium/keymaps/default/rules.mk
+++ b/keyboards/handwired/promethium/keymaps/default/rules.mk
@@ -15,11 +15,9 @@ MIDI_ENABLE = no            # MIDI controls
 AUDIO_ENABLE = no           # Audio output on port C6
 UNICODE_ENABLE = no         # Unicode
 UNICODEMAP_ENABLE = yes
-BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
 RGBLIGHT_ENABLE = no        # Enable WS2812 RGB underlight.
 PS2_MOUSE_ENABLE = yes
 PS2_USE_INT = yes
-BLUETOOTH = AdafruitBLE
 
 # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
 SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend
diff --git a/keyboards/handwired/promethium/keymaps/priyadi/rules.mk b/keyboards/handwired/promethium/keymaps/priyadi/rules.mk
index 4fd9b656b6..96db4fcbbc 100644
--- a/keyboards/handwired/promethium/keymaps/priyadi/rules.mk
+++ b/keyboards/handwired/promethium/keymaps/priyadi/rules.mk
@@ -15,11 +15,9 @@ MIDI_ENABLE = no            # MIDI controls
 AUDIO_ENABLE = no           # Audio output on port C6
 UNICODE_ENABLE = no         # Unicode
 UNICODEMAP_ENABLE = yes
-BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
 RGBLIGHT_ENABLE = no        # Enable WS2812 RGB underlight.
 PS2_MOUSE_ENABLE = yes
 PS2_USE_INT = yes
-BLUETOOTH = AdafruitBLE
 
 # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
 SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend
diff --git a/keyboards/handwired/promethium/rules.mk b/keyboards/handwired/promethium/rules.mk
index 960d637819..aa5a13457f 100644
--- a/keyboards/handwired/promethium/rules.mk
+++ b/keyboards/handwired/promethium/rules.mk
@@ -21,12 +21,12 @@ BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
 AUDIO_ENABLE = no           # Audio output on port C6
 UNICODE_ENABLE = no         # Unicode
 UNICODEMAP_ENABLE = yes
-BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
 RGBLIGHT_ENABLE = no        # Enable WS2812 RGB underlight.
 PS2_MOUSE_ENABLE = yes
 PS2_USE_INT = yes
 CUSTOM_MATRIX = yes
-BLUETOOTH = AdafruitBLE
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
 
 # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
 SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend
diff --git a/keyboards/handwired/pterodactyl/rules.mk b/keyboards/handwired/pterodactyl/rules.mk
index 56f83265d9..7c8e3c3386 100644
--- a/keyboards/handwired/pterodactyl/rules.mk
+++ b/keyboards/handwired/pterodactyl/rules.mk
@@ -21,11 +21,11 @@ SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
 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
-BLUETOOTH = AdafruitBLE
 UNICODE_ENABLE = yes
 CUSTOM_MATRIX = yes
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
 
 SRC += matrix.c
 QUANTUM_LIB_SRC += i2c_master.c
diff --git a/keyboards/handwired/slash/rules.mk b/keyboards/handwired/slash/rules.mk
index e2e8c93e30..8974ac7852 100644
--- a/keyboards/handwired/slash/rules.mk
+++ b/keyboards/handwired/slash/rules.mk
@@ -22,6 +22,6 @@ NKRO_ENABLE = no            # USB Nkey Rollover
 BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
 RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
 UNICODE_ENABLE = no         # Unicode
-#BLUETOOTH_ENABLE = Yes # Enable Bluetooth with the Adafruit EZ-Key HID
-BLUETOOTH = AdafruitBLE
 AUDIO_ENABLE = no           # Audio output on port C6
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
diff --git a/keyboards/laptreus/rules.mk b/keyboards/laptreus/rules.mk
index 5810f98a57..ba916ec136 100644
--- a/keyboards/laptreus/rules.mk
+++ b/keyboards/laptreus/rules.mk
@@ -25,5 +25,5 @@ TAP_DANCE_ENABLE = no
 # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
 SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
 
-BLUETOOTH_ENABLE = no       # Legacy bluetooth support
-BLUETOOTH = AdafruitBLE
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
diff --git a/keyboards/latin47ble/rules.mk b/keyboards/latin47ble/rules.mk
index 5a3f1069a3..61d3be26e6 100644
--- a/keyboards/latin47ble/rules.mk
+++ b/keyboards/latin47ble/rules.mk
@@ -21,8 +21,8 @@ SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
 NKRO_ENABLE = no            # 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
-BLUETOOTH = AdafruitBLE
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
 
 LAYOUTS = planck_mit
diff --git a/keyboards/latin64ble/rules.mk b/keyboards/latin64ble/rules.mk
index b4d726a60d..ba3f750117 100644
--- a/keyboards/latin64ble/rules.mk
+++ b/keyboards/latin64ble/rules.mk
@@ -21,6 +21,6 @@ SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
 NKRO_ENABLE = no            # 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
-BLUETOOTH = AdafruitBLE
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
diff --git a/keyboards/latinpadble/rules.mk b/keyboards/latinpadble/rules.mk
index b36d9a88cb..eca33fc0a0 100644
--- a/keyboards/latinpadble/rules.mk
+++ b/keyboards/latinpadble/rules.mk
@@ -21,10 +21,10 @@ SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
 NKRO_ENABLE = no            # 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
 
-BLUETOOTH = AdafruitBLE
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
 OLED_ENABLE = yes
 OLED_DRIVER = SSD1306
 ENCODER_ENABLE = yes
diff --git a/keyboards/meira/featherble/rules.mk b/keyboards/meira/featherble/rules.mk
index b0295ced77..d3e985e8c2 100644
--- a/keyboards/meira/featherble/rules.mk
+++ b/keyboards/meira/featherble/rules.mk
@@ -2,4 +2,4 @@
 F_CPU = 8000000
 
 BLUETOOTH_ENABLE = yes
-BLUETOOTH = AdafruitBLE
+BLUETOOTH_DRIVER = AdafruitBLE
diff --git a/keyboards/nek_type_a/rules.mk b/keyboards/nek_type_a/rules.mk
index 0f13c245fc..d8e2234ba0 100644
--- a/keyboards/nek_type_a/rules.mk
+++ b/keyboards/nek_type_a/rules.mk
@@ -19,10 +19,10 @@ NKRO_ENABLE = no            # USB Nkey Rollover
 BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality on B7 by default
 RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
 UNICODE_ENABLE = no         # Unicode
-BLUETOOTH_ENABLE = yes      # Enable Bluetooth with the Adafruit EZ-Key HID
 AUDIO_ENABLE = no           # Audio output on port C6
 CUSTOM_MATRIX = yes
 DEBUG_ENABLE = yes
-BLUETOOTH = AdafruitBLE
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
 
 SRC += matrix.c mcp23017.c
diff --git a/keyboards/spaceman/pancake/rev1/feather/rules.mk b/keyboards/spaceman/pancake/rev1/feather/rules.mk
index b749dc2327..a2ddd81a9c 100644
--- a/keyboards/spaceman/pancake/rev1/feather/rules.mk
+++ b/keyboards/spaceman/pancake/rev1/feather/rules.mk
@@ -10,7 +10,6 @@ BOOTLOADER = caterina
 # Build Options
 #   comment out to disable the options.
 #
-BLUETOOTH = AdafruitBLE
 BOOTMAGIC_ENABLE = lite     # Enable Bootmagic Lite
 MOUSEKEY_ENABLE  = no	# Mouse keys
 EXTRAKEY_ENABLE  = yes	# Audio control and System control
@@ -21,6 +20,8 @@ NKRO_ENABLE  = yes		# USB Nkey Rollover - if this doesn't work, see here: https:
 BACKLIGHT_ENABLE  = no  # Custom backlighting code is used, so this should not be enabled
 AUDIO_ENABLE  = no # This can be enabled if a speaker is connected to the expansion port. Not compatible with RGBLIGHT below
 RGBLIGHT_ENABLE  = no # This can be enabled if a ws2812 strip is connected to the expansion port.
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
 
 LAYOUTS = ortho_4x12 planck_mit
 
diff --git a/keyboards/tokyokeyboard/alix40/rules.mk b/keyboards/tokyokeyboard/alix40/rules.mk
index 5fedaed835..7f44c1325c 100644
--- a/keyboards/tokyokeyboard/alix40/rules.mk
+++ b/keyboards/tokyokeyboard/alix40/rules.mk
@@ -21,6 +21,6 @@ SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
 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
-BLUETOOTH = AdafruitBLE
+BLUETOOTH_ENABLE = yes
+BLUETOOTH_DRIVER = AdafruitBLE
diff --git a/show_options.mk b/show_options.mk
index ce2f9c0636..cb3a32d39a 100644
--- a/show_options.mk
+++ b/show_options.mk
@@ -25,6 +25,7 @@ HARDWARE_OPTION_NAMES = \
   CIE1931_CURVE \
   MIDI_ENABLE \
   BLUETOOTH_ENABLE \
+  BLUETOOTH_DRIVER \
   AUDIO_ENABLE \
   HD44780_ENABLE \
   ENCODER_ENABLE \
@@ -57,7 +58,6 @@ OTHER_OPTION_NAMES = \
   LED_ANIMATIONS \
   IOS_DEVICE_ENABLE \
   HELIX ZINC \
-  ADAFRUIT_BLE_ENABLE \
   AUTOLOG_ENABLE \
   DEBUG_ENABLE \
   ENCODER_ENABLE_CUSTOM \
diff --git a/tmk_core/common.mk b/tmk_core/common.mk
index 7f74200590..e5eced56fd 100644
--- a/tmk_core/common.mk
+++ b/tmk_core/common.mk
@@ -55,8 +55,6 @@ ifeq ($(strip $(NKRO_ENABLE)), yes)
         $(info NKRO is not currently supported on V-USB, and has been disabled.)
     else ifeq ($(strip $(BLUETOOTH_ENABLE)), yes)
         $(info NKRO is not currently supported with Bluetooth, and has been disabled.)
-    else ifneq ($(BLUETOOTH),)
-        $(info NKRO is not currently supported with Bluetooth, and has been disabled.)
     else
         TMK_COMMON_DEFS += -DNKRO_ENABLE
         SHARED_EP_ENABLE = yes
@@ -77,23 +75,6 @@ ifeq ($(strip $(NO_SUSPEND_POWER_DOWN)), yes)
     TMK_COMMON_DEFS += -DNO_SUSPEND_POWER_DOWN
 endif
 
-ifeq ($(strip $(BLUETOOTH_ENABLE)), yes)
-    TMK_COMMON_DEFS += -DBLUETOOTH_ENABLE
-	TMK_COMMON_DEFS += -DNO_USB_STARTUP_CHECK
-endif
-
-ifeq ($(strip $(BLUETOOTH)), AdafruitBLE)
-	TMK_COMMON_DEFS += -DBLUETOOTH_ENABLE
-	TMK_COMMON_DEFS += -DMODULE_ADAFRUIT_BLE
-	TMK_COMMON_DEFS += -DNO_USB_STARTUP_CHECK
-endif
-
-ifeq ($(strip $(BLUETOOTH)), RN42)
-	TMK_COMMON_DEFS += -DBLUETOOTH_ENABLE
-	TMK_COMMON_DEFS += -DMODULE_RN42
-	TMK_COMMON_DEFS += -DNO_USB_STARTUP_CHECK
-endif
-
 ifeq ($(strip $(SWAP_HANDS_ENABLE)), yes)
     TMK_COMMON_DEFS += -DSWAP_HANDS_ENABLE
 endif
diff --git a/tmk_core/protocol/lufa.mk b/tmk_core/protocol/lufa.mk
index c8935dacb7..00fec478ac 100644
--- a/tmk_core/protocol/lufa.mk
+++ b/tmk_core/protocol/lufa.mk
@@ -3,7 +3,6 @@ LUFA_DIR = protocol/lufa
 # Path to the LUFA library
 LUFA_PATH = $(LIB_PATH)/lufa
 
-
 # Create the LUFA source path variables by including the LUFA makefile
 ifneq (, $(wildcard $(LUFA_PATH)/LUFA/Build/lufa_sources.mk))
     # New build system from 20120730
@@ -22,23 +21,6 @@ ifeq ($(strip $(MIDI_ENABLE)), yes)
 	include $(TMK_PATH)/protocol/midi.mk
 endif
 
-ifeq ($(strip $(BLUETOOTH_ENABLE)), yes)
-	LUFA_SRC += outputselect.c \
-		$(TMK_DIR)/protocol/serial_uart.c
-endif
-
-ifeq ($(strip $(BLUETOOTH)), AdafruitBLE)
-	LUFA_SRC += spi_master.c \
-		analog.c \
-		outputselect.c \
-		$(LUFA_DIR)/adafruit_ble.cpp
-endif
-
-ifeq ($(strip $(BLUETOOTH)), RN42)
-	LUFA_SRC += outputselect.c \
-		$(TMK_DIR)/protocol/serial_uart.c
-endif
-
 ifeq ($(strip $(VIRTSER_ENABLE)), yes)
 	LUFA_SRC += $(LUFA_ROOT_PATH)/Drivers/USB/Class/Device/CDCClassDevice.c
 endif
@@ -50,19 +32,10 @@ SRC += $(LUFA_DIR)/usb_util.c
 VPATH += $(TMK_PATH)/$(LUFA_DIR)
 VPATH += $(LUFA_PATH)
 
-# Option modules
-#ifdef $(or MOUSEKEY_ENABLE, PS2_MOUSE_ENABLE)
-#endif
-
-#ifdef EXTRAKEY_ENABLE
-#endif
-
 # LUFA library compile-time options and predefined tokens
 LUFA_OPTS  = -DUSB_DEVICE_ONLY
 LUFA_OPTS += -DUSE_FLASH_DESCRIPTORS
 LUFA_OPTS += -DUSE_STATIC_OPTIONS="(USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)"
-#LUFA_OPTS += -DINTERRUPT_CONTROL_ENDPOINT
-LUFA_OPTS += -DFIXED_CONTROL_ENDPOINT_SIZE=8
 LUFA_OPTS += -DFIXED_CONTROL_ENDPOINT_SIZE=8
 LUFA_OPTS += -DFIXED_NUM_CONFIGURATIONS=1
 
diff --git a/users/wanleg/rules.mk b/users/wanleg/rules.mk
index eb66a49e6f..410803512d 100644
--- a/users/wanleg/rules.mk
+++ b/users/wanleg/rules.mk
@@ -21,8 +21,8 @@ ifeq ($(strip $(BT)), yes)
   #opt_defs for alternate pin usage
   OPT_DEFS += -DBLUEFRUIT
   #Adafruit Bluefruit controller settings
-  BLUETOOTH = AdafruitBLE
   BLUETOOTH_ENABLE = yes
+  BLUETOOTH_DRIVER = AdafruitBLE
   F_CPU = 8000000
   CONSOLE_ENABLE = no 		# Console for debug(+400)
   COMMAND_ENABLE = no 		# Commands for debug and configuration
@@ -42,4 +42,4 @@ endif
 #example usage: make gherkin:wanleg flip=yes
 ifeq ($(strip $(flip)), yes)
 	OPT_DEFS += -DFLIP
-endif
\ No newline at end of file
+endif