README.md (4a4e2291e13040f1c0286e1d31d85c46fa2065ab) | README.md (59200c1c2d69b4e80af53a1d63492d824ff9fb12) |
---|---|
1# 2 3In this chapter, we first explain how Bluetooth chipsets are connected physically and then provide information about popular Bluetooth chipset and their use with BTstack. 4 5## HCI Interface 6 7The communication between a Host (a computer or an MCU) and a Host Controller (the actual Bluetooth chipset) follows the Host Controller Interface (HCI), see {@fig:HostChipsetConnection}. HCI defines how commands, events, asynchronous and synchronous data packets are exchanged. Asynchronous packets (ACL) are used for data transfer, while synchronous packets (SCO) are used for Voice with the Headset and the Hands-Free Profiles. 8 --- 39 unchanged lines hidden (view full) --- 48From our experience, only Texas Instruments and EM Microelectronics provide all relevant information directly on their website. Nordic Semiconductor does not officially have Bluetooth chipsets with HCI interface, but their the documentation on their nRF5 series is complete and very informative. TI and Nordic also provide excellent support via their respective web forum. 49 50Broadcom, whose Bluetooth + Wifi division has been acquired by the Cypress Semiconductor Corporation, provides developer documentation only to large customers as far as we know. It's possible to join their Community forum and download the WICED SDK. The WICED SDK is targeted at Wifi + Bluetooth Combo chipsets and contains the necessary chipset patch files. 51 52CSR, which has been acquired by Qualcomm, provides all relevant information on their Support website after signing an NDA. 53 54## Chipset Overview 55 | 1# 2 3In this chapter, we first explain how Bluetooth chipsets are connected physically and then provide information about popular Bluetooth chipset and their use with BTstack. 4 5## HCI Interface 6 7The communication between a Host (a computer or an MCU) and a Host Controller (the actual Bluetooth chipset) follows the Host Controller Interface (HCI), see {@fig:HostChipsetConnection}. HCI defines how commands, events, asynchronous and synchronous data packets are exchanged. Asynchronous packets (ACL) are used for data transfer, while synchronous packets (SCO) are used for Voice with the Headset and the Hands-Free Profiles. 8 --- 39 unchanged lines hidden (view full) --- 48From our experience, only Texas Instruments and EM Microelectronics provide all relevant information directly on their website. Nordic Semiconductor does not officially have Bluetooth chipsets with HCI interface, but their the documentation on their nRF5 series is complete and very informative. TI and Nordic also provide excellent support via their respective web forum. 49 50Broadcom, whose Bluetooth + Wifi division has been acquired by the Cypress Semiconductor Corporation, provides developer documentation only to large customers as far as we know. It's possible to join their Community forum and download the WICED SDK. The WICED SDK is targeted at Wifi + Bluetooth Combo chipsets and contains the necessary chipset patch files. 51 52CSR, which has been acquired by Qualcomm, provides all relevant information on their Support website after signing an NDA. 53 54## Chipset Overview 55 |
56Chipset | Type | HCI Transport | BD_ADDR (1) | SCO over HCI (2) | LE DLE | Multiple LE Roles (3)| Classic SC (4) | LE Addr Resolution | BTstack folder | Comment 57-------------------- |-----------| ---------------|--------------|------------------|--------|----------------------|----------------|--------------------|----------------|--------- 58Atmel ATWILC3000 | LE | H4 | Yes | n.a | No | No | n.a. | Don't know | atwilc3000 | BLE Firmware size: 60 kB 59Broadcom UART | Dual mode | H4, H5 | Rarely | Partially (2) | No | Maybe (3) | 43438: Yes | | bcm | Max UART baudrate 2 mbps 60Broadcom USB Dongles | Dual mode | USB | Yes | Yes | No | No | BCM20702: No | | bcm | 61CSR UART | Dual mode | H4, H5, BCSP | Rarely | Partially (2) | No | No | CSR8811: No | | csr | 62CSR USB Dongles | Dual mode | USB | Mostly | Yes | No | No | CSR8510: No | | csr | 63Cypress CYW20704/7 | Dual mode | H4, H5, USB | Don't know | Partially (2) | Yes | Yes | Yes | Yes | bcm | 64Cypress CYW20819 | Dual mode | H4, H5, USB | Don't know | Partially (2) | Yes | Yes | Yes | Don't know | bcm | Keep CTS high during power cycle 65Cypress CYW43xxx | Dual mode + Wifi | H4, H5 | Don't know | Partially (2) | Don't know | No | Don't know | Don't know | bcm | Bluetooth + Wifi Combo Controller 66Cypress PSoC 4 | LE | H4 | Don't know | n.a. | Yes | Don't know | n.a. | Don't know | | HCI Firmware part of PSoC Creator kits examples 67Dialog DA14531 | LE | H4 | No | n.a. | Yes | Yes | n.a. | Don't know | da145xx | Official HCI firmware included in BTstack 68Dialog DA14581 | LE | H4, SPI | No | n.a. | No | No | n.a. | Don't know | da145xx | Official HCI firmware included in BTstack 69Dialog DA14585 | LE | H4, SPI | No | n.a. | Yes | Yes | n.a. | Yes | da145xx | Official HCI firmware included in BTstack 70Dialog DA1469x | LE | H4, SPI | No | n.a. | Yes | Yes | n.a. | Yes | da145xx | HCI Firmware part of DA1469x SDK 71Espressif ESP32 | Dual mode + Wifi | VHCI | Yes | Yes | Yes | Yes | Yes | Don't know | | SoC with Bluetooth and Wifi 72EM 9301 | LE | SPI, H4 | No | n.a. | No | No | n.a. | Don't know | em9301 | Custom HCI SPI implementation 73EM 9304 | LE | SPI, H4 | Yes | n.a. | Yes | Yes | n.a. | Don't know | em9301 | Custom HCI SPI implementation 74Intel Dual Wireless 3165, 8260, 8265 | Dual mode | USB | Yes | Probably | Don't know | Don't know | Don't know | Don't know | intel | Firmware size: 400 kB 75Nordic nRF | LE | H4 | Fixed Random | n.a. | Yes | Yes | n.a. | Yes | | Requires HCI firmware 76STM STLC2500D | Classic | H4 | No | Don't know | n.a | n.a. | No | n.a. | stlc2500d | Custom deep sleep management not supported 77Renesas RX23W | LE | H4 | No | n.a. | Yes | Yes | n.a . | Don't know | | HCI Firmware part of BTTS 78Realtek RTL8822CS | Dual mode + Wifi | H5 | Yes | Yes | Don't know | Don't know | Don't know | Don't know | | Requires initial firmware + config 79Realtek USB Dongles | Dual mode + Wifi | USB | Yes | Yes | Don't know | Don't know | Don't know | Don't know | realtek | Requires initial firmware + config 80Toshiba TC35661 | Dual mode | H4 | No | No | No | No | No | No | tc3566 | Only -007/009 models provide full HCI. See below 81TI CC256x, WL183x | Dual mode | H4, H5, eHCILL | Yes | Yes | No | Yes for CC256XC | No | No | cc256x | Also WL185x, WL187x, and WL189x | 56| Chipset | Type | HCI Transport | BD_ADDR (1) | SCO over HCI (2) | LE DLE | Multiple LE Roles (3) | Classic SC (4) | LE Addr Resolution | BTstack folder | Comment | 57|--------------------------------------|------------------|----------------|--------------|------------------|------------|-----------------------|----------------|--------------------|----------------|--------------------------------------------------| 58| Atmel ATWILC3000 | LE | H4 | Yes | n.a | No | No | n.a. | Don't know | atwilc3000 | BLE Firmware size: 60 kB | 59| Broadcom UART | Dual mode | H4, H5 | Rarely | Partially (2) | No | Maybe (3) | 43438: Yes | | bcm | Max UART baudrate 2 mbps | 60| Broadcom USB Dongles | Dual mode | USB | Yes | Yes | No | No | BCM20702: No | | bcm | | 61| CSR UART | Dual mode | H4, H5, BCSP | Rarely | Partially (2) | No | No | CSR8811: No | | csr | | 62| CSR USB Dongles | Dual mode | USB | Mostly | Yes | No | No | CSR8510: No | | csr | | 63| Cypress CYW20704/7 | Dual mode | H4, H5, USB | Don't know | Partially (2) | Yes | Yes | Yes | Yes | bcm | | 64| Cypress CYW20819 | Dual mode | H4, H5, USB | Don't know | Partially (2) | Yes | Yes | Yes | Don't know | bcm | Keep CTS high during power cycle | 65| Cypress CYW43xxx | Dual mode + Wifi | H4, H5 | Don't know | Partially (2) | Don't know | No | Don't know | Don't know | bcm | Bluetooth + Wifi Combo Controller | 66| Cypress PSoC 4 | LE | H4 | Don't know | n.a. | Yes | Don't know | n.a. | Don't know | | HCI Firmware part of PSoC Creator kits examples | 67| Dialog DA14531 | LE | H4 | No | n.a. | Yes | Yes | n.a. | Don't know | da145xx | Official HCI firmware included in BTstack | 68| Dialog DA14581 | LE | H4, SPI | No | n.a. | No | No | n.a. | Don't know | da145xx | Official HCI firmware included in BTstack | 69| Dialog DA14585 | LE | H4, SPI | No | n.a. | Yes | Yes | n.a. | Yes | da145xx | Official HCI firmware included in BTstack | 70| Dialog DA1469x | LE | H4, SPI | No | n.a. | Yes | Yes | n.a. | Yes | da145xx | HCI Firmware part of DA1469x SDK | 71| Espressif ESP32 | Dual mode + Wifi | VHCI | Yes | Yes | Yes | Yes | Yes | Don't know | | SoC with Bluetooth and Wifi | 72| Espressif ESP32-S3,C3 | LE + Wifi | VHCI | Yes | No | Yes | Yes | Yes | Yes | | SoC with Bluetooth and Wifi | 73| EM 9301 | LE | SPI, H4 | No | n.a. | No | No | n.a. | Don't know | em9301 | Custom HCI SPI implementation | 74| EM 9304 | LE | SPI, H4 | Yes | n.a. | Yes | Yes | n.a. | Don't know | em9301 | Custom HCI SPI implementation | 75| Intel Dual Wireless 3165, 8260, 8265 | Dual mode | USB | Yes | Probably | Don't know | Don't know | Don't know | Don't know | intel | Firmware size: 400 kB | 76| Nordic nRF | LE | H4 | Fixed Random | n.a. | Yes | Yes | n.a. | Yes | | Requires HCI firmware | 77| STM STLC2500D | Classic | H4 | No | Don't know | n.a | n.a. | No | n.a. | stlc2500d | Custom deep sleep management not supported | 78| Renesas RX23W | LE | H4 | No | n.a. | Yes | Yes | n.a . | Don't know | | HCI Firmware part of BTTS | 79| Realtek RTL8822CS | Dual mode + Wifi | H5 | Yes | Yes | Don't know | Don't know | Don't know | Don't know | | Requires initial firmware + config | 80| Realtek USB Dongles | Dual mode + Wifi | USB | Yes | Yes | Don't know | Don't know | Don't know | Don't know | realtek | Requires initial firmware + config | 81| Toshiba TC35661 | Dual mode | H4 | No | No | No | No | No | No | tc3566 | Only -007/009 models provide full HCI. See below | 82| TI CC256x, WL183x | Dual mode | H4, H5, eHCILL | Yes | Yes | No | Yes for CC256XC | No | No | cc256x | Also WL185x, WL187x, and WL189x | |
82 83**Notes**: 84 85 1. BD_ADDR: Indicates if Bluetooth chipset comes with its own valid MAC Address. Better Broadcom and CSR dongles usually come with a MAC address from the dongle manufacturer, but cheaper ones might come with identical addresses. 86 2. SCO over HCI: All Bluetooth Classic chipsets support SCO over HCI in general. BTstack can receive SCO packets without problems. However, only TI CC256x has support for using SCO buffers in the Controller and a useful flow control. On CSR/Broadcom/Cypress Controllers, BTstack cannot queue multiple SCO packets in the Controller. Instead, the SCO packet must be sent periodically at the right time - without a clear indication about when this time is. The current implementation observes the timestamps of the received SCO packets to schedule sending packets. With full control over the system and no other Bluetooth data, this can be flawless, but it's rather fragile in general. For these, it's necessary to use the I2S/PCM interface for stable operation. 87 , for those that are marked with No, we either didn't try or didn't found enough information to configure it correctly. 88 3. Multiple LE Roles: Apple uses Broadcom Bluetooth+Wifi in their iOS devices and newer iOS versions support multiple concurrent LE roles, 89 so at least some Broadcom models support multiple concurrent LE roles. --- 84 unchanged lines hidden (view full) --- 174**BTstack integration**: *btstack_chipset_da145xx.c* contains the code to download the provided HCI firmware into the SRAM of the DA145xx. After that, it can be used as any other HCI chipset. No special support needed for DA1469x after compiling and flashing the HCI firmware. 175 176 177## Espressif ESP32 178 179The ESP32 is a SoC with a built-in Dual mode Bluetooth and Wifi radio. The HCI Controller is implemented in software and accessed via a so called Virtual HCI (VHCI) interface. 180It supports both LE Data Length Extensions (DLE) as well as multiple LE roles. Since ESP-IDF v4.3, SCO-over-HCI is usable for HSP/HFP. 181 | 83 84**Notes**: 85 86 1. BD_ADDR: Indicates if Bluetooth chipset comes with its own valid MAC Address. Better Broadcom and CSR dongles usually come with a MAC address from the dongle manufacturer, but cheaper ones might come with identical addresses. 87 2. SCO over HCI: All Bluetooth Classic chipsets support SCO over HCI in general. BTstack can receive SCO packets without problems. However, only TI CC256x has support for using SCO buffers in the Controller and a useful flow control. On CSR/Broadcom/Cypress Controllers, BTstack cannot queue multiple SCO packets in the Controller. Instead, the SCO packet must be sent periodically at the right time - without a clear indication about when this time is. The current implementation observes the timestamps of the received SCO packets to schedule sending packets. With full control over the system and no other Bluetooth data, this can be flawless, but it's rather fragile in general. For these, it's necessary to use the I2S/PCM interface for stable operation. 88 , for those that are marked with No, we either didn't try or didn't found enough information to configure it correctly. 89 3. Multiple LE Roles: Apple uses Broadcom Bluetooth+Wifi in their iOS devices and newer iOS versions support multiple concurrent LE roles, 90 so at least some Broadcom models support multiple concurrent LE roles. --- 84 unchanged lines hidden (view full) --- 175**BTstack integration**: *btstack_chipset_da145xx.c* contains the code to download the provided HCI firmware into the SRAM of the DA145xx. After that, it can be used as any other HCI chipset. No special support needed for DA1469x after compiling and flashing the HCI firmware. 176 177 178## Espressif ESP32 179 180The ESP32 is a SoC with a built-in Dual mode Bluetooth and Wifi radio. The HCI Controller is implemented in software and accessed via a so called Virtual HCI (VHCI) interface. 181It supports both LE Data Length Extensions (DLE) as well as multiple LE roles. Since ESP-IDF v4.3, SCO-over-HCI is usable for HSP/HFP. 182 |
183The newer ESP32-S3 and ESP32-C3 SoCs have a newer LE Controller, but no support for Classic (BR/EDR). |
|
182 | 184 |
185ALl can either be used as an SoC with the application running on the ESP32 itself or can be configured as a regular Bluetooth HCI Controller. 186BTstack can work either on the SoC itself, or another MCU when ESP32 is connected via 4-wire UART. 187 188Wifi can be used with Espressif's [ESP-Hosted firmware](https://github.com/espressif/esp-hosted), too. 189 |
|
183## EM Microelectronic Marin 184 185For a long time, the EM9301 has been the only Bluetooth Single-Mode LE chipset with an HCI interface. The EM9301 can be connected via SPI or UART. The UART interface does not support hardware flow control and is not recommended for use with BTstack. The SPI mode uses a proprietary but documented extension to implement flow control and signal if the EM9301 has data to send. 186 187In December 2016, EM released the new EM9304 that also features an HCI mode and adds support for optional Bluetooth 4.2. features. It supports the Data Length Extension and up to 8 LE roles. The EM9304 is a larger MCU that allows to run custom code on it. For this, an advanced mechanism to upload configuration and firmware to RAM or into an One-Time-Programmable area of 128 kB is supported. It supports a superset of the vendor specific commands of the EM9301. 188 189EM9304 is used by the 'stm32-l053r8-em9304' port in BTstack. The port.c file also contains an IRQ+DMA-driven implementation of the SPI H4 protocol specified in the [datasheet](http://www.emmicroelectronic.com/sites/default/files/public/products/datasheets/9304-ds_0.pdf). 190 --- 170 unchanged lines hidden --- | 190## EM Microelectronic Marin 191 192For a long time, the EM9301 has been the only Bluetooth Single-Mode LE chipset with an HCI interface. The EM9301 can be connected via SPI or UART. The UART interface does not support hardware flow control and is not recommended for use with BTstack. The SPI mode uses a proprietary but documented extension to implement flow control and signal if the EM9301 has data to send. 193 194In December 2016, EM released the new EM9304 that also features an HCI mode and adds support for optional Bluetooth 4.2. features. It supports the Data Length Extension and up to 8 LE roles. The EM9304 is a larger MCU that allows to run custom code on it. For this, an advanced mechanism to upload configuration and firmware to RAM or into an One-Time-Programmable area of 128 kB is supported. It supports a superset of the vendor specific commands of the EM9301. 195 196EM9304 is used by the 'stm32-l053r8-em9304' port in BTstack. The port.c file also contains an IRQ+DMA-driven implementation of the SPI H4 protocol specified in the [datasheet](http://www.emmicroelectronic.com/sites/default/files/public/products/datasheets/9304-ds_0.pdf). 197 --- 170 unchanged lines hidden --- |