The Linux kernel will automatically load the Wi-Fi driver as long as the device tree is configured properly.

The Bluetooth interface requires support from a user mode application because it must be enabled via the wifi interface. If using serdev no further initialization is needed. Otherwise btattach (assuming BlueZ Bluetooth stack) is needed to create the HCI interface.

The following user-mode script can be used to start Bluetooth when using either serdev or btattach. This script assumes the tty interface corresponding to the Bluetooth serial port is /dev/ttymxc0. Modify this port as necessary for your platform.

#!/bin/sh

PHY=`ls /sys/class/ieee80211/`

echo "1" > /sys/kernel/debug/ieee80211/$PHY/cc33xx/ble_enable

if [ -c /dev/ttymxc0 ]; then
  sleep 1
  btattach -B /dev/ttymxc0 -P h4 &
fi

Note: There is much documentation online referencing the legacy hciattach and hciconfig utilities that were used with the legacy BlueZ stack (version 4). These utilities are not compatible with the Bluetooth core in modern kernels and can not be used with Ezurio software. The BlueZ5 stack must be used, along with the btattach and bluetoothctl utilities that it provides.

Platform integration can be validated by checking to see if the Wi-Fi and Bluetooth interfaces are available. Low level Wi-Fi interface management is best done using the ‘iw’ tool. All wireless devices known to the platform can be shown with the ‘iw dev’ command. If the wireless device appears in the list then it has been properly integrated:

# iw dev
phy#0
        Unnamed/non-netdev interface
                wdev 0x2
                addr a6:34:f1:b3:23:d4
                type P2P-device
        Interface wlan0
                ifindex 6
                wdev 0x1
                addr a4:34:f1:b3:23:d4
                type managed
                multicast TXQ:
                        qsz-byt qsz-pkt flows   drops   marks   overlmt hashcol tx-bytes        tx-packets
                        0       0       0       0       0       0       0       0               0

Low level Bluetooth interface management can be done using the ‘bluetoothctl’ command. All Bluetooth devices known to the platform can be listed with the ‘bluetoothctl list’ command. If the Bluetooth device appears in the list then it has been properly integrated:

# bluetoothctl list
Controller A4:34:F1:B3:23:D5 summit [default]