Bluetooth subsystem = Building = Build samples $ make -C samples/bluetooth/ = Bluetooth Sample application = Host Bluetooth controller is connected to the second qemu serial line through a UNIX socket (qemu option -serial unix:/tmp/bt-server-bredr). This option is already added to qemu through QEMU_EXTRA_FLAGS in Makefile. On the host side BlueZ allows to "connect" Bluetooth controller through a so-called user channel. Use the btproxy tool for that: $ sudo tools/btproxy -u Listening on /tmp/bt-server-bredr Note that before calling btproxy make sure that Bluetooth controller is down. Now running qemu result connecting second serial line to 'bt-server-bredr' UNIX socket. When Bluetooth (CONFIG_BLUETOOTH) and Bluetooth HCI UART driver (CONFIG_BLUETOOTH_H4) are enabled, Bluetooth driver registers to the system. From now on Bluetooth might be used by the application. To run application in the qemu run: $ make qemu = Bluetooth sanity check = There is smoke test application in tests directory which gets run in sanity check script: $ scripts/sanity_chk/sanitycheck [-P ] To only run Bluetooth tests use the -t bluetooth switch: $ scripts/sanity_chk/sanitycheck -t bluetooth = Summary of available applications = beacon: A simple application demonstrating the BLE Broadcaster role functionality by advertising an Eddystone URL (the Zephyr website). central: Application demonstrating very basic BLE Central role functionality by scanning for other BLE devices and establishing a connection to the first one with a strong enough signal. central_hr: Similar to 'central', except that this application specifically looks for heart-rate monitors and reports the heart-rate readings once connected. eddystone: Application demostrating Eddystone Configuration Service: https://github.com/google/eddystone/tree/master/configuration-service gatt: Not an application, but a set of reusable modules for common GATT profiles & services. hci_uart: Expose Zephyr Bluetooth Controller support over UART to another device/CPU using the H:4 HCI transport protocol (requires HW flow control from the UART). hci_usb: Make a USB Bluetooth dongle out of Zephyr. Requires USB device support from the board it runs on (e.g. Arduino 101 has this). ipsp: Application demonstrating the IPSP (Internet Protocol Support Profile) Node role. IPSP is the Bluetooth profile that underneath utilizes 6LoWPAN, i.e. gives you IPv6 connectivity over BLE. peripheral: Application demonstrating the BLE Peripheral role. It has several well-known and vendor-specific GATT services that it exposes. peripheral_csc: Similar to 'peripheral', except that this application specifically exposes the CSC (Cycling Speed and Cadence) GATT Service. peripheral_dis: Similar to 'peripheral', except that this application specifically exposes the DIS (Device Information) GATT Service. peripheral_esp: Similar to 'peripheral', except that this application specifically exposes the ESP (Environmental Sensing Profile) GATT Service. peripheral_hr: Similar to 'peripheral', except that this application specifically exposes the HR (Heart Rate) GATT Service. Once a device connects it will generate dummy heart-rate values. peripheral_hids: Similar to 'peripheral', except that this application specifically exposes the HID GATT Service. The report map used is for a generic mouse.