qmk_firmware-mirror/docs/feature_bluetooth.md
Ryan db41a3426c
Improve Adafruit BLE configuration defines (#14749)
* Improve Adafruit BLE configuration defines

* Formatting
2021-10-08 16:15:20 +01:00

3.1 KiB

Bluetooth

Bluetooth Known Supported Hardware

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_DRIVER = RN42 RN-42
Bluefruit LE SPI Friend Bluetooth Low Energy SPI BLUETOOTH_DRIVER = AdafruitBLE nRF51822

Not Supported Yet but possible:

Adafruit BLE SPI Friend

Currently The only bluetooth chipset supported by QMK is the Adafruit Bluefruit SPI Friend. It's a Nordic nRF5182 based chip running Adafruit's custom firmware. Data is transmitted via Adafruit's SDEP over Hardware SPI. The Feather 32u4 Bluefruit LE is supported as it's an AVR mcu connected via SPI to the Nordic BLE chip with Adafruit firmware. If Building a custom board with the SPI friend it would be easiest to just use the pin selection that the 32u4 feather uses but you can change the pins in the config.h options with the following defines:

  • #define ADAFRUIT_BLE_RST_PIN D4
  • #define ADAFRUIT_BLE_CS_PIN B4
  • #define ADAFRUIT_BLE_IRQ_PIN E6

A Bluefruit UART friend can be converted to an SPI friend, however this requires some reflashing and soldering directly to the MDBT40 chip.

Bluetooth Rules.mk Options

The currently supported Bluetooth chipsets do not support N-Key Rollover (NKRO), so rules.mk must contain NKRO_ENABLE = no.

Add the following to your rules.mk:

BLUETOOTH_ENABLE = yes
BLUETOOTH_DRIVER = AdafruitBLE # or RN42

Bluetooth Keycodes

This is used when multiple keyboard outputs can be selected. Currently this only allows for switching between USB and Bluetooth on keyboards that support both.

Name Description
OUT_AUTO Automatically switch between USB and Bluetooth
OUT_USB USB only
OUT_BT Bluetooth only