The wireless variant of the ConnectCore 8X SOM integrates a Qualcomm Qualcomm QCA6574 wireless chipset with the following features:

  • Bluetooth 5.0, ANT+, backwards compatible with Bluetooth 4.2, 4.1, 4.0, 3.x, 2.x, and 1.0

  • Bluetooth and WLAN coexistence

Digi Embedded Yocto defines the dey-bluetooth feature that builds the bluez5 package for working with the Bluetooth interface. This package installs all the required libraries and tools to use Bluetooth.

Digi Embedded Yocto supports the core specification 5.0 (GAP, L2CAP, RFCOMM, SDP, GATT), including Classic Bluetooth and Bluetooth Smart (Low Energy).  The Linux Bluez stack supports additional Bluetooth Classic and Low Energy profiles that are not specifically validated. See the Bluez documentation for details.

If you own a Bluetooth-capable ConnectCore 8X but you don’t need to use Bluetooth, see Disable Bluetooth for instructions on disabling the interface.

Kernel configuration

The Bluetooth interface is managed by the following kernel configuration options:

  • HCI UART driver (CONFIG_BT_HCIUART)

  • UART (H4) protocol support (CONFIG_BT_HCIUART_H4)

  • Digi Bluetooth support (CONFIG_BT_DIGI)

With the exception of the Digi Bluetooth support that is built as a module to allow you to load/unload it in runtime, these options are enabled as built-in on the default ConnectCore 8X kernel configuration file.

Kernel driver

The Bluetooth driver is located at:

File Description

drivers/bluetooth/hci_h4.c

UART (H4) protocol support

drivers/bluetooth/btdigi.c

Digi Bluetooth support

Device tree bindings

The Digi-supported Bluetooth device tree bindings are documented at Documentation/devicetree/bindings/net/btdigi.txt. U-Boot fills-in the Bluetooth MAC address inside the bluetooth node of the device tree. This MAC address is then programmed into the Bluetooth chip by the Digi Embedded Yocto bluez init script.

ConnectCore 8X device tree
bluetooth {
	/* U-Boot will fill in the MAC address here */
	compatible = "digi,bluetooth-cc8x";
	vin-supply = <&reg_rf_bt_en>;
	status = "okay";
};

Disable Bluetooth

Bluetooth is enabled by default on the ConnectCore 8X variants that support it. To disable the Bluetooth interface, add the following lines to your platform device tree:

/* Disable Bluetooth */
&bluetooth {
	status = "disabled";
};

This patch:

  • disables the bluetooth node of the device tree. The status of this node triggers the initialization scripts that bring up the Bluetooth interface, so these won’t start when the node is disabled.

With Bluetooth disabled, you may use that UART for other purposes, or its lines as GPIOs (this requires disabling the UART and redefining the IOMUX of the pads).