Qualified Dual-mode Bluetooth Stack

Ready to get started?

A part of BTstack is immediately available in source code and free for evaluation and non-commercial-use. Whether you are interested in running your application on a Bluetooth SoC like ESP32, barebones on a regular microcontroller or on top of an an RTOS like FreeRTOS or Zephyr, the easiest way to try BTstack is on a regular desktop setup like Mac OS, Linux or Windows together with a standard USB Bluetooth dongle. Running BTstack on desktop speeds up the development cycle and provides direct access to the packet log files in case something doesn’t work as expected. The same code can then run unmodified on an embedded target later.

Get Ready

Next to your desktop machine and a standard USB Bluetooth dongle, you just need a regular development environment (Make, CMake, Visual Studio Code, CLion, Xcode, …) as well as Python to build the examples.
Toolchain Setup

Explore

With less than 100 lines of code you can scan for Bluetooth devices in the surrounding. If you are interested in Classic Bluetooth, check out the GAP Inquiry example. For the Low Energy variant try the GAP LE Scanner.
Full Examples List

Let's Go

For Mac OS and Linux, please use port/libusb. For Windows, please see port/windows-winusb.
Ready-to-Use Ports

Troubleshoot

If things don’t work as expected, it helps to have a look at the HCI packet log that captures all data exchanged between BTstack and the Bluetooth Controller. Feel free to join our community.
Join Us

Capabilities

Flexibility

BTstack supports both single-mode (Classic or LE), as well as dual-mode (Classic+LE) Bluetooth controllers.

Small Memory Footprint

Compile-time directives let you enable only the functionality an application needs.

C99 Source Code

C99 source code is available to all customers and free for non-commercial use.

Supported Platforms

Microcontrollers with or without RTOS, embedded Linux systems, and desktop Windows, macOS, and Linux.

Secure

Implements all Bluetooth SIG recommendations. It is fuzzed and automatically tested. Not affected by BlueBorne and SweynTooth.

Qualified and Widely Used

Qualified for Bluetooth Core v6.0, DN Q331293, and used across secure appliances, automotive, fitness, medical, logistics, and audio infrastructure.

LE Audio & Auracast™

GATT services and profiles are implemented and tested, including GMAP and True Wireless Stereo support on selected controllers. Contact us for product information.

Supported Protocols

L2CAP including Enhanced Retransmission Mode and LE credit-based flow control, RFCOMM, SDP, BNEP, AVDTP, AVCTP, ATT, and Security Manager.

Supported Profiles

A2DP, AVRCP, GAP, GATT, HFP, HID, MAP, OPP, SPP, PAN, PBAP, Apple MFi iAP2, and more.

GATT Services

Battery, Cycling Power, Device Information, Heart Rate, HID over GATT, Mesh, Nordic SPP, u-blox SPP, and more. Please contact us or follow the implementation guidelines.

Why Choose Our BTstack?

BTstack is a flexible, compact and fast Bluetooth stack written in C99. It was created as a result of extensive academic and industrial experience with different solutions dating back to 2001. BlueKitchen GmbH was founded in 2012 to continue the development of an independent Host stack alternative.

As a state-of-the-art dual-mode Bluetooth stack, it is embedded today in millions of devices, with users ranging from hobbyists and security researchers, over OEMs, to Bluetooth Controller vendors and Bluetooth IP providers.

Clean Design

Using a single run loop, it doesn’t require multi-threading, doesn’t block nor queue data.

Platform Independent

While you can develop and test your Bluetooth application on desktop, it will run on different embedded target devices without changes.

Available Source Code

You can start evaluating BTstack right now, the source code is available on btstack.org.

Partners

Through our partnerships we provide joint customer solutions and drive new business opportunities.

CEVACEVA RivieraWaves
Infineon
Ezurio

Clients

BTstack is in use by companies across a wide range of products.

Raspberry Pi
Nordic Semiconductor
u-blox
Trimble
Snom
Konftel
BBPOS
EISST
AudioQuest
ab medica
Electric Imp
Breeze-Eastern
Hamilton Bonaduz
PeriCoach
Cygnus
V-ZUG

Address

BlueKitchen GmbH
Engelstrasse 9
8004 Zurich
Switzerland

Get in Touch

Newsletter

Our low-frequency newsletter keeps you informed about new releases and security updates.

Subscribe

BlueKitchen Blog

Here you'll find our experiences of porting BTstack to different platforms, the issues we encountered along the road, Bluetooth news, as well as details from more challenging BTstack projects, some of which require reverse engineering.

BTstack on Linux via Kernel HCI: Simplifying Bluetooth for Embedded Systems

On Linux, working with Bluetooth devices typically involves the BlueZ. The operating system detects and initializes the controller, while BlueZ acts as the central service that exposes Bluetooth functionality to applications. Although the kernel provides a uniform HCI interface for controllers connected via USB, UART, or SDIO, applications communicate with BlueZ over D-Bus and other high-level APIs to perform tasks such as device discovery, pairing, and accessing GATT services. BTstack, our proprietary user-space Bluetooth Host Stack, follows a different approach: it interacts directly with Bluetooth controllers at the HCI level. For embedded Linux systems, it provides custom HCI transport implementations for UART and USB to communicate with the controller. The direct access enables BTstack to handle controller initialization, including firmware download and vendor-specific setup steps for a wide range of devices, which are often required on embedded platforms. This gives developers full control over the complete Bluetooth stack within their application.
Read more

“Why do you guys exist at all? We already provide a free stack with our chip.”

We visited the Embedded World Exhibition in Nuremberg again this year as an independent Bluetooth Host Stack vendor. Events like this are a great opportunity to step outside of project threads and long technical email exchanges and actually meet the people behind them. It adds a much-needed personal dimension to the work we usually do remotely. It’s also a place where you quickly find others on the same wavelength — engineers dealing with the same practical realities of hardware and Bluetooth chip restrictions. As always, we had many discussions about solutions and possibilities. And yes, we’ll keep advocating for a few things we believe would make many developers’ lives easier — such as a very simple GPIO-toggle-based time synchronization mechanism for LE Audio TWS, as well as better support for forwarding Bluetooth Classic audio to LE Audio.
Read more

Bluetooth, Unleashed: Classic, BLE and LE Audio in the Browser

The Web has evolved into a powerful platform for hardware interaction, yet Classic Bluetooth and LE Audio support have long remained one of the last frontiers trapped in native code. Breaking that barrier would open the door to a new class of connected Web experiences – connecting your Bluetooth headphones, sensors, and controllers directly through the browser, with no drivers, or system dependencies could enable innovation that isn’t gated by operating systems but fueled by open standards and creativity.
Read more

All posts