Skip to main content

Battery Level

See the battery level feature page for more details on configuring a battery sensor.

See Configuration Overview for instructions on how to change these settings.

Kconfig

Definition file: zmk/app/Kconfig

ConfigTypeDescriptionDefault
CONFIG_ZMK_BATTERY_REPORTINGboolEnables/disables all battery level detection/reportingn
CONFIG_ZMK_BATTERY_REPORT_INTERVALintBattery level report interval in seconds60
Default setting

While CONFIG_ZMK_BATTERY_REPORTING is disabled by default it is implied by CONFIG_ZMK_BLE, thus any board with BLE enabled will have this automatically enabled unless explicitly overridden.

BLE reporting on MacOS

On macOS the BLE battery reporting packets can cause the computer to wakeup from sleep. To prevent this, the battery reporting service can be disabled by setting CONFIG_BT_BAS=n. This setting is independent of battery monitoring, for instance the battery level can still be indicated on a display.

Peripheral Battery Monitoring

You can configure ZMK to allow support for peripheral battery monitoring over BLE (e.g. when having a split keyboard with two independent and wirelessly connected sides). If you want to report the battery levels of both sides of a split keyboard, you should have both CONFIG_ZMK_SPLIT_BLE_CENTRAL_BATTERY_LEVEL_PROXY and CONFIG_ZMK_SPLIT_BLE_CENTRAL_BATTERY_LEVEL_FETCHING set to y.

Displaying both battery levels on your host

Host support for multiple battery levels is undefined. It appears that in most of the cases only the main battery is being reported. In order to correctly display all the battery values, you probably need a special application or script.

Devicetree

Applies to: /chosen node

PropertyTypeDescription
zmk,batterypathThe node for the battery sensor driver to use

Battery Voltage Divider Sensor

Driver for reading the voltage of a battery using an ADC connected to a voltage divider.

Devicetree

Applies to: compatible = "zmk,battery-voltage-divider"

See Zephyr's voltage divider documentation.

nRF VDDH Battery Sensor

Driver for reading the voltage of a battery using a Nordic nRF52's VDDH pin.

Devicetree

Applies to: compatible = "zmk,battery-nrf-vddh"

Definition file: zmk/app/module/dts/bindings/sensor/zmk,battery-nrf-vddh.yaml

This driver has no configuration.