The wireless variant of the ConnectCore 6UL SOM integrates a Qualcomm QCA6564 wireless chipset with the following features:

  • Bluetooth 4.2, ANT+, backwards compatible with Bluetooth 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 4.2 (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 6UL 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)

These options are enabled as built-in on the default ConnectCore 6UL kernel configuration file.

Kernel driver

The Bluetooth driver is located at:

File Description

drivers/bluetooth/hci_h4.c

UART (H4) protocol support

Device tree bindings

There are no specific device tree bindings for the Bluetooth. A Bluetooth node is given as a device tree placeholder for U-Boot to fill in the Bluetooth interface MAC address. This address is then programmed into the device by the Digi Embedded Yocto bluez init script.

Bluetooth SIG certification

By default, Digi Embedded Yocto-{os-version} builds version 5.46 of the BlueZ stack.

Digi has qualified the Digi Embedded Yocto software as Host Subsystem on the Bluetooth SIG and the ConnectCore 6UL hardware platform as Controller Subsystem. To benefit from Digi’s Bluetooth SIG Qualified Subsystem, your Digi Embedded Yocto project must specifically build BlueZ version 5.41. This modular qualification strategy enables end products to inherit a portion of Digi’s certifications, potentially reducing validation time.

Digi also recommends you include bluez5-testtools, which is not included by default. To do so, add the following lines to your project’s conf/local.conf:

conf/local.conf
PREFERRED_VERSION_bluez5 = "5.41"
IMAGE_INSTALL_append = " bluez5-testtools"

Disable Bluetooth

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

/* Disable Bluetooth */
/delete-node/ &{/bluetooth};
&uart1 {
	/* Drive BT_EN low to disable Bluetooth */
	pinctrl-assert-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>;
};

This patch:

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

    Expect a harmless error message in U-Boot reporting that it couldn’t find the bluetooth node to fill in its MAC address.
  • makes use of the UART node (the UART connected to the Bluetooth chip), to drive the BT_EN line low, thus disabling the Bluetooth chip.

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).