README.md (3be461f39c2aa6e5feb66c5b717306a6954054de) README.md (3d5dc47f01e4910f39194faf63ace7fdf5b84860)
1In this chapter, we first explain how Bluetooth chipsets are connected physically and then provide information about popular Bluetooth chipset and their use with BTstack.
2
3## HCI Interface
4
5The 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.
6
7![Host Controller to Host connection](../doc/manual/docs/picts/host_chipset_connection.png){#fig:HostChipsetConnection}
8

--- 37 unchanged lines hidden (view full) ---

46From 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.
47
48Broadcom, 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.
49
50CSR, which has been acquired by Qualcomm, provides all relevant information on their Support website after signing an NDA.
51
52## Chipset Overview
53
1In this chapter, we first explain how Bluetooth chipsets are connected physically and then provide information about popular Bluetooth chipset and their use with BTstack.
2
3## HCI Interface
4
5The 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.
6
7![Host Controller to Host connection](../doc/manual/docs/picts/host_chipset_connection.png){#fig:HostChipsetConnection}
8

--- 37 unchanged lines hidden (view full) ---

46From 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.
47
48Broadcom, 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.
49
50CSR, which has been acquired by Qualcomm, provides all relevant information on their Support website after signing an NDA.
51
52## Chipset Overview
53
54Chipset | Type | HCI Transport | BD_ADDR (1) | SCO over HCI (2) | LE DLE | Multiple LE Roles (3)| Classic SC (4) | BTstack folder | Comment
55-------------------- |-----------| ---------------|--------------|------------------|--------|----------------------|----------------|----------------|---------
56Atmel ATWILC3000 | LE | H4 | Yes | n.a | No | No | n.a. | atwilc3000 | BLE Firmware size: 60 kB
57Broadcom UART | Dual mode | H4, H5 | Rarely | Partially (2) | No | Maybe (3) | 43438: Yes | bcm | Max UART baudrate 2 mbps
58Broadcom USB Dongles | Dual mode | USB | Yes | Yes | No | No | BCM20702: No | bcm |
59CSR UART | Dual mode | H4, H5, BCSP | Rarely | Partially (2) | No | No | CSR8811: No | csr |
60CSR USB Dongles | Dual mode | USB | Mostly | Yes | No | No | CSR8510: No | csr |
61Cypress CYW20704/7 | Dual mode | H4, H5, USB | Don't know | Partially (2) | Yes | Yes | Yes | bcm |
62Cypress CYW20819 | Dual mode | H4, H5, USB | Don't know | Partially (2) | Yes | Yes | Yes | bcm | Keep CTS high during power cycle
63Cypress PSoC 4 | LE | H4 | Don't know | n.a. | Yes | Don't know | n.a. | | HCI Firmware part of PSoC Creator kits examples
64Dialog DA14581 | LE | H4, SPI | No | n.a. | No | No | n.a. | da14581 | Official HCI firmware included in BTstack
65Dialog DA14585 | LE | H4, SPI | No | n.a. | Yes | Yes | n.a. | da14581 | Official HCI firmware included in BTstack
66Dialog DA1469x | LE | H4, SPI | No | n.a. | Yes | Yes | n.a. | da14581 | HCI Firmware part of DA1469x SDK
67Espressif ESP32 | Dual mode | VHCI | Yes | Not yet | Yes | Yes | Yes | | SoC with Bluetooth and Wifi
68EM 9301 | LE | SPI, H4 | No | n.a. | No | No | n.a. | em9301 | Custom HCI SPI implementation
69EM 9304 | LE | SPI, H4 | Yes | n.a. | Yes | Yes | n.a. | em9301 | Custom HCI SPI implementation
70Intel Dual Wireless 8260, 8265 | Dual mode | USB | Yes | Probably | Don't know | Don't know | Don't know | intel | Firmware size: 400 kB
71Nordic nRF | LE | H4 | Fixed Random | n.a. | Yes | Yes | n.a. | | Requires HCI firmware
72STM STLC2500D | Classic | H4 | No | Don't know | n.a | n.a. | No | stlc2500d | Custom deep sleep management not supported
73Renesas RX23W | LE | H4 | No | n.a. | Yes | Yes | n.a . | | HCI Firmware part of BTTS
74Toshiba TC35661 | Dual mode | H4 | No | No | No | No | No | tc3566 | Only -007/009 models provide full HCI. See below
75TI CC256x, WL183x | Dual mode | H4, H5, eHCILL | Yes | Yes | No | Yes for CC256XC | No | cc256x | Also WL185x, WL187x, and WL189x
54Chipset | 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
55-------------------- |-----------| ---------------|--------------|------------------|--------|----------------------|----------------|--------------------|----------------|---------
56Atmel ATWILC3000 | LE | H4 | Yes | n.a | No | No | n.a. | Don't know | atwilc3000 | BLE Firmware size: 60 kB
57Broadcom UART | Dual mode | H4, H5 | Rarely | Partially (2) | No | Maybe (3) | 43438: Yes | | bcm | Max UART baudrate 2 mbps
58Broadcom USB Dongles | Dual mode | USB | Yes | Yes | No | No | BCM20702: No | | bcm |
59CSR UART | Dual mode | H4, H5, BCSP | Rarely | Partially (2) | No | No | CSR8811: No | | csr |
60CSR USB Dongles | Dual mode | USB | Mostly | Yes | No | No | CSR8510: No | | csr |
61Cypress CYW20704/7 | Dual mode | H4, H5, USB | Don't know | Partially (2) | Yes | Yes | Yes | Yes | bcm |
62Cypress CYW20819 | Dual mode | H4, H5, USB | Don't know | Partially (2) | Yes | Yes | Yes | Don't know | bcm | Keep CTS high during power cycle
63Cypress 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
64Dialog DA14581 | LE | H4, SPI | No | n.a. | No | No | n.a. | Don't know | da14581 | Official HCI firmware included in BTstack
65Dialog DA14585 | LE | H4, SPI | No | n.a. | Yes | Yes | n.a. | Yes | da14581 | Official HCI firmware included in BTstack
66Dialog DA1469x | LE | H4, SPI | No | n.a. | Yes | Yes | n.a. | Yes | da14581 | HCI Firmware part of DA1469x SDK
67Espressif ESP32 | Dual mode | VHCI | Yes | Not yet | Yes | Yes | Yes | Don't know | | SoC with Bluetooth and Wifi
68EM 9301 | LE | SPI, H4 | No | n.a. | No | No | n.a. | Don't know | em9301 | Custom HCI SPI implementation
69EM 9304 | LE | SPI, H4 | Yes | n.a. | Yes | Yes | n.a. | Don't know | em9301 | Custom HCI SPI implementation
70Intel Dual Wireless 8260, 8265 | Dual mode | USB | Yes | Probably | Don't know | Don't know | Don't know | Don't know | intel | Firmware size: 400 kB
71Nordic nRF | LE | H4 | Fixed Random | n.a. | Yes | Yes | n.a. | Yes | | Requires HCI firmware
72STM STLC2500D | Classic | H4 | No | Don't know | n.a | n.a. | No | n.a. | stlc2500d | Custom deep sleep management not supported
73Renesas RX23W | LE | H4 | No | n.a. | Yes | Yes | n.a . | Don't know | | HCI Firmware part of BTTS
74Toshiba TC35661 | Dual mode | H4 | No | No | No | No | No | No | tc3566 | Only -007/009 models provide full HCI. See below
75TI CC256x, WL183x | Dual mode | H4, H5, eHCILL | Yes | Yes | No | Yes for CC256XC | No | No | cc256x | Also WL185x, WL187x, and WL189x
76
77**Notes**:
78
76
77**Notes**:
78
79 1. BD_ADDR: Indiates if Bluetooth chipset compes with its own valid MAC Addess. Better Broadcom and CSR dongles usually come with a MAC address from the dongle manufacturer, but cheaper ones might come with identical addresses.
79 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.
80 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.
81 , for those that are marked with No, we either didn't try or didn't found enough information to configure it correctly.
82 3. Multiple LE Roles: Apple uses Broadcom Bluetooth+Wifi in their iOS devices and newer iOS versions support multiple concurrent LE roles,
83 so at least some Broadcom models support multiple concurrent LE roles.
84
85## Atmel/Microchip
86
87The ATILC3000 Bluetooth/Wifi combo controller has been used with Linux on embedded devices by Atmel/Microchip. Drivers and documentation are available from a [GitHub repository](https://github.com/atwilc3000). The ATWILC3000 has a basic HCI implementation stored in ROM and requires a firmware image to be uploaded before it can be used. The BLE Controller is qualified as [QDID 99659](https://www.bluetooth.org/tpg/QLI_viewQDL.cfm?qid=36402). Please note: the BLE firmware is around 60 kB. It might need a separate Wifi firmware as well.

--- 234 unchanged lines hidden ---
80 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.
81 , for those that are marked with No, we either didn't try or didn't found enough information to configure it correctly.
82 3. Multiple LE Roles: Apple uses Broadcom Bluetooth+Wifi in their iOS devices and newer iOS versions support multiple concurrent LE roles,
83 so at least some Broadcom models support multiple concurrent LE roles.
84
85## Atmel/Microchip
86
87The ATILC3000 Bluetooth/Wifi combo controller has been used with Linux on embedded devices by Atmel/Microchip. Drivers and documentation are available from a [GitHub repository](https://github.com/atwilc3000). The ATWILC3000 has a basic HCI implementation stored in ROM and requires a firmware image to be uploaded before it can be used. The BLE Controller is qualified as [QDID 99659](https://www.bluetooth.org/tpg/QLI_viewQDL.cfm?qid=36402). Please note: the BLE firmware is around 60 kB. It might need a separate Wifi firmware as well.

--- 234 unchanged lines hidden ---