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{#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{#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 --- |