Bluetooth - linux-surface/surface-pro-x GitHub Wiki

Bluetooth Setup

Firmware

Pre-built firmware packages are provided as linux-firmware-msft-surface-pro-x and linux-firmware-msft-surface-pro-x-qcom in our Arch Linux AArch64 Package Repository. Those contain all the necessary firmware for Bluetooth.

Alternatively, Bluetooth firmware only requires small modifications. In particular, you will need to create symlink files as the chip ID seems to be reported incorrectly by the Bluetooth module. Similar to WiFi, the modifications described below are performed automatically by the script provided at https://github.com/linux-surface/aarch64-firmware.

All required bluetooth firmware is already provided in the upstream Linux firmware repository at /lib/firmware/qca. You can, however, also find it in Windows as

crbtfw21.tlv
crnv21.b3c
crnv21.b44
crnv21.b45
crnv21.b46
crnv21.b47
crnv21.b71
crnv21.bin

Note that not all files seem to be required and the files provided in the Linux firmware repository seem to be enough. Unfortunately, the chip ID of the Bluetooth module seems to be off (01 instead of 21), due to which you will need to symlink create the following symlinks:

/lib/firmware/qca/crnv01.bNN -> /lib/firmware/qca/crnv21.bNN

for NN being hex characters, as well as

/lib/firmware/qca/crbtfw21.tlv -> /lib/firmware/qca/crbtfw21.tlv
/lib/firmware/qca/crnv01.bin -> /lib/firmware/qca/crnv21.bin