Length: 2 Days
Print Friendly, PDF & Email

Bluetooth Application Development with BlueZ Training Workshop

Bluetooth Application Development with BlueZ Training Workshop is a 2-day training program focuses on Bluetooth, BLE and BlueZ development including classic Bluetooth, Bluetooth Low Energy (BLE), Bluetooth 5.02 new features, application, architecture, protocol stack, and development with BlueZ.

Participants will learn about BlueZ, the Bluetooth stack for Linux. Its goal is to program an implementation of the Bluetooth wireless standards specifications for Linux.  BlueZ stack supports all core Bluetooth protocols and layers. 

Intended Audience

Bluetooth Application Development with BlueZ Training Workshop is a technical course intended for engineers, software developers, V&V professionals, project managers, and other related job functions.

Learning Objectives

By the end of the Bluetooth Application Development with BlueZ Training Workshop, participants will be able to:

  • Describe fundamentals of Bluetooth and BLE
  • Compare and contrast BLE, BLE 5.0 and BLE 5.2
  • Describe BlueZ key concepts
  • Describe Bluetooth and BlueZ protocol stack and architecture
  • Describe BlueZ development environment to implement
  • Learn how to use Bluetooth profiles and create new profiles using BlueZ stack on Linux
  • Learn about GAP, GATT, and Enhanced Attribute Protocol (EATT)
  • Discuss how Bluetooth 5 delivers “connectionless” IoT, advancing beacon and Location-based capabilities.
  • Learn about Bus and how it is used with the BlueZ stack.
  • Explain how to use D-Bus from the Python programming language to make and receive remote method calls and to emit and receive D-Bus signals.
  • Explain how to write code that acts as a Bluetooth LE Central device using Python, D-Bus and BlueZ, using practical exercises to compliment the theory
  • Explain how to write code that acts as a Bluetooth LE Peripheral device using Python, D-Bus and BlueZ, using practical exercises to compliment the theory
  • Illustrate how to set up your Linux kernel and build BlueZ from source to create a Linux environment for Bluetooth application development.

Course Agenda

Introduction to Bluetooth Low Energy (BLE)

  • Bluetooth background theory
  • BLE vs. Bluetooth Classic
  • Bluetooth Profiles and Services
  • Bluetooth robustness, security, and reliability
  • Services and Characteristics
  • Profiles vs. Services
  • Device roles
  • Central and peripheral roles
  • Server and client roles
  • Advertising and Scan Response Data
  • Establishing a connection
  • Connected Network Topology

Overview of Bluetooth Protocols

  • Bluetooth software stack
  • Generic Access Profile (GAP)
  • Generic Attribute Profile (GATT)
  • Attribute Protocol (ATT)
  • Security Manager (SM)
  • Logical Link Control and Adaptation Protocol (L2CAP)
  • Host Controller Interface (HCI), Host side
  • Host Controller Interface (HCI), Controller side
  • Direct Test Mode (DTM)
  • Link Layer
  • PHY Characteristics

Introduction to Bluetooth 5.2 (BT5.2)

  • Bluetooth 5.2 Architecture
  • Changes from v4.2 to v5.0/v5.2
  • LE Long Range: LE Coded PHYs
  • LE Power Control
  • Advertising packets and beaconing
  • Isochronous Channels (ISOC)
  • LE Power Control (LEPC)
  • Enhanced Attribute Protocol (EATT)
  • LE Power Control
  • LE Isochronous Channels
  • BLE 5.2 Operation

Bluetooth Configuration

  • Core Configurations
  • Basic operations (GAP)
  • Event flow and handling
  • Scanning
  • Connecting
  • Service Discovery
  • Device discovery
  • Connection management
  • Overview of security
  • Pairing and Bonding
  • Sending and receiving data
  • Low power idle mode operation
  • Device discovery
  • Reliable point-to-multipoint data transfer
  • Advanced power-save
  • Advanced encryption functionalities
  • Single mode and dual mode

Bluetooth Application Development with BlueZ

  • The Bluetooth technology for Linux developers
  •  Architecture of a Linux system using BlueZ
  • BlueZ architecture, interfaces and tools commonly used
  • BlueZ dependencies
  • BlueZ core Bluetooth layers and protocols
  • BlueZ layers and interfaces
  • Host
  • Controller
  • Radio Hardware
  • Kernel configuration
  • Combined build
  • Supported BlueZ profile
  • BLE dual-chip configuration builds
  • BLE Combined build on a single chip
  • Host-only and Controller-only
  • Bluetooth Host protocol & profile layers
  • BlueZ hardware abstraction
  • Standard socket interface
  • Device and service level security support

BlueZ Modules

  • Bluetooth kernel subsystem core
  • L2CAP and SCO audio kernel layers
  • RFCOMM, BNEP, CMTP and HIDP kernel implementations
  • HCI UART, USB, PCMCIA and virtual device drivers
  • General Bluetooth and SDP libraries and daemons
  • Configuration and testing utilities
  • Protocol decoding and analysis tools
  • General Bluetooth and SDP libraries and daemons
  • Configuration and testing utilities
  • Protocol decoding and analysis tools
  • Build Types
  • The Zephyr software stack as an RTOS
  • Controller-only build

Workshops: Working with BLUEZ AND D-BUS

  • Message Buses
  • Clients, Servers and Connections
  • Objects, Interfaces, Methods, Signals and Properties
  • Proxy Objects
  • Data Types
  • Security Policies
  • Creating a BLE Peripheral with BlueZ
  • Analyzing Python library for Bluetooth Low Energy (BLE) Central on Linux
  • Mastering DBus
  • Developing LE Central Devices using Python
  • Developing LE Peripheral Devices using Python
  • Working with bluetoothctl utility: DBus APIs provided by the BlueZ service

 

Workshop Examples

  • Example 1: BlueZ code for a simple BLE GATT server and a peripheral
  • Example 2: How to setup a simple BLE server using BlueZ
  • Example 3: GATT server and BLE sensor advertisement coding with BlueZ
  • Example 4 – BlueZ GATT API to configure BLE profile and GATT server
  • Example 5 -An example of how you can create a simple GATT server using BlueZ
  • Example 6 – Example of GATT Database Structure
  • Example 7 – This example demonstrates how to use D-Bus with BlueZ in C to discover nearby Bluetooth devices
  • Example 8 – An example of how to create GATT services using BlueZ and D-Bus in C
  • Example 9 – How to create a GATT server that can be accessed by multiple clients using BlueZ and D-Bus in C
  • Example 10 – An example that demonstrates a complete interaction between a GATT server and a GATT client using BlueZ and D-Bus in C

Request More Information

Please enter contact information followed by your questions, comments and/or request(s):
  • Please complete the following form and a Tonex Training Specialist will contact you as soon as is possible.

    * Indicates required fields

  • This field is for validation purposes and should be left unchanged.

Request More Information

  • Please complete the following form and a Tonex Training Specialist will contact you as soon as is possible.

    * Indicates required fields

  • This field is for validation purposes and should be left unchanged.