README.md (c1fc8abcd56457bda06c37c835137bb17d3b7feb) README.md (fbacaeecf68f22294a9186dbb08a5b9d2c977d05)
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

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

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 | BTstack folder | Comment
55-------------------- |-----------| ---------------|--------------|------------------|--------|----------------------|----------------|---------
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

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

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 | BTstack folder | Comment
55-------------------- |-----------| ---------------|--------------|------------------|--------|----------------------|----------------|---------
56Atmel ATWILC3000 | Dual mode | H4 | Yes | Don't know | No | No | atwilc3000 | Required Bluetooth firmware is 270 kB
56Broadcom UART | Dual mode | H4, H5 | Rarely | Probably (2) | No | Maybe (3) | bcm | Max UART baudrate 2 mbps
57Broadcom USB Dongles | Dual mode | USB | Yes | Yes | No | No | bcm |
58CSR UART | Dual mode | H4, H5, BCSP | Rarely | No (didn't work) | No | No | csr |
59CSR USB Dongles | Dual mode | USB | Mostly | Yes | No | No | csr |
60Dialog DA14581 | LE | H4, SPI | No | n.a. | No | No | da14581 | Official HCI firmware included in BTstack
61EM 9301 | LE | SPI, H4 | No | n.a. | No | No | em9301 | Custom HCI SPI implementation
62EM 9304 | LE | SPI, H4 | No | n.a. | Yes | Yes | em9301 | Custom HCI SPI implementation
63Nordic nRF | LE | H4 | Fixed Random | n.a. | Yes | Yes | | Requires custom HCI firmware
64STM STLC2500D | Classic | H4 | No | No (didn't try) | n.a | n.a. | stlc2500d | Custom deep sleep management not supported
65Toshiba TC35661 | Dual mode | H4 | No | No (didn't try) | No | No | tc3566 | HCI version not tested. See below
66TI CC256x, WL183x | Dual mode | H4, H5, eHCILL | Yes | Yes | No | Yes for CC256XC | cc256x | Also WL185x, WL187x, and WL189x
67
68**Notes**:
69
70 1. BD_ADDR: Indciates 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.
71 2. SCO over HCI: All Bluetooth Classic chipsets support SCO over HCI, for those that are marked with No, we either didn't try or didn't found enough information to configure it correctly.
72 3. Multiple LE Roles: Apple uses Broadcom Bluetooth+Wifi in their iOS devices and newer iOS versions support multiple concurrent LE roles,
73 so at least some Broadcom models support multiple concurrent LE roles.
57Broadcom UART | Dual mode | H4, H5 | Rarely | Probably (2) | No | Maybe (3) | bcm | Max UART baudrate 2 mbps
58Broadcom USB Dongles | Dual mode | USB | Yes | Yes | No | No | bcm |
59CSR UART | Dual mode | H4, H5, BCSP | Rarely | No (didn't work) | No | No | csr |
60CSR USB Dongles | Dual mode | USB | Mostly | Yes | No | No | csr |
61Dialog DA14581 | LE | H4, SPI | No | n.a. | No | No | da14581 | Official HCI firmware included in BTstack
62EM 9301 | LE | SPI, H4 | No | n.a. | No | No | em9301 | Custom HCI SPI implementation
63EM 9304 | LE | SPI, H4 | No | n.a. | Yes | Yes | em9301 | Custom HCI SPI implementation
64Nordic nRF | LE | H4 | Fixed Random | n.a. | Yes | Yes | | Requires custom HCI firmware
65STM STLC2500D | Classic | H4 | No | No (didn't try) | n.a | n.a. | stlc2500d | Custom deep sleep management not supported
66Toshiba TC35661 | Dual mode | H4 | No | No (didn't try) | No | No | tc3566 | HCI version not tested. See below
67TI CC256x, WL183x | Dual mode | H4, H5, eHCILL | Yes | Yes | No | Yes for CC256XC | cc256x | Also WL185x, WL187x, and WL189x
68
69**Notes**:
70
71 1. BD_ADDR: Indciates 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.
72 2. SCO over HCI: All Bluetooth Classic chipsets support SCO over HCI, for those that are marked with No, we either didn't try or didn't found enough information to configure it correctly.
73 3. Multiple LE Roles: Apple uses Broadcom Bluetooth+Wifi in their iOS devices and newer iOS versions support multiple concurrent LE roles,
74 so at least some Broadcom models support multiple concurrent LE roles.
74 4. Datasheet doesn't mention it, while tech support stated that multiple roles are supported. Doc will be updated after some basic tests on this.
75
75
76## Atmel/Microchip
77
78The 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. Please note: the Bluetooth firmware is 270 kB.
79
80**BD Addr** seems to be stored in the device. Bluetooth address can be updated via vendor-specific command. (Documentation will be updated after checking the BD Addr of a different board.)
81
82**Baud rate** can be set with a custom command.
83
84**BTstack integration**: *btstack_chipset_atwilc3000.c* contains the code to download the Bluetooth firmware image into the RAM of the ATWILC3000. After that, it can be normally used by BTstack.
85
76## Broadcom
77
78Before the Broadcom Wifi+Bluetooth division was taken over by Cypress Semiconductor, it was not possible to buy Broadcom chipset in low quantities. Nevertheless, module manufacturers like Ampak created modules that contained Broadcom BCM chipsets (Bluetooth as well as Bluetooth+Wifi combos) that might already have been pre-tested for FCC and similar certifications.
79A popular example is the Ampak AP6212A module that contains an BCM 43438A1 and is used on the Raspberry Pi 3, the RedBear Duo, and the RedBear IoT pHAT for older Raspberry Pi models.
80
81The best source for documentation on vendor specific commands so far has been the source code for blueZ and the Bluedroid Bluetooth stack from Android.
82
83Broadcom USB dongles do not require special configuration, however SCO data is not routed over USB by default.

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

116
117SCO Data is routed over HCI for USB dongles, but not for UART connections. HSP and HFP Narrow Band Speech is supported via I2C/PCM pins.
118
119
120## Dialog Semiconductor
121
122Dialog Semiconductor offers the DA14581, an LE-only SoC that can be programmed with an HCI firmware. The HCI firmware can be uploaded on boot into SRAM or stored in the OTP (One-time programmable) memory, or in an external SPI.
123
86## Broadcom
87
88Before the Broadcom Wifi+Bluetooth division was taken over by Cypress Semiconductor, it was not possible to buy Broadcom chipset in low quantities. Nevertheless, module manufacturers like Ampak created modules that contained Broadcom BCM chipsets (Bluetooth as well as Bluetooth+Wifi combos) that might already have been pre-tested for FCC and similar certifications.
89A popular example is the Ampak AP6212A module that contains an BCM 43438A1 and is used on the Raspberry Pi 3, the RedBear Duo, and the RedBear IoT pHAT for older Raspberry Pi models.
90
91The best source for documentation on vendor specific commands so far has been the source code for blueZ and the Bluedroid Bluetooth stack from Android.
92
93Broadcom USB dongles do not require special configuration, however SCO data is not routed over USB by default.

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

126
127SCO Data is routed over HCI for USB dongles, but not for UART connections. HSP and HFP Narrow Band Speech is supported via I2C/PCM pins.
128
129
130## Dialog Semiconductor
131
132Dialog Semiconductor offers the DA14581, an LE-only SoC that can be programmed with an HCI firmware. The HCI firmware can be uploaded on boot into SRAM or stored in the OTP (One-time programmable) memory, or in an external SPI.
133
124IT does not implement the Data Length Extension or supports multiple concurrent roles.
134It does not implement the Data Length Extension or supports multiple concurrent roles.
125
126**BD Addr** fixed to 80:EA:CA:00:00:01. No command in HCI firmware to set it differently. Random addresses could be used instead.
127
128**Baud rate**: The baud rate is fixed at 115200 with the provided firmware. A higher baud rate could be achieved by re-compiling the HCI firmware using Dialog's HCI SDK.
129
130**BTstack integration**: *btstack_chipset_da14581.c* contains the code to download the provided HCI firmware into the SRAM of the DA14581. After that, it can be used as any other HCI chipset.
131
132## EM Microelectronic Marin

--- 131 unchanged lines hidden ---
135
136**BD Addr** fixed to 80:EA:CA:00:00:01. No command in HCI firmware to set it differently. Random addresses could be used instead.
137
138**Baud rate**: The baud rate is fixed at 115200 with the provided firmware. A higher baud rate could be achieved by re-compiling the HCI firmware using Dialog's HCI SDK.
139
140**BTstack integration**: *btstack_chipset_da14581.c* contains the code to download the provided HCI firmware into the SRAM of the DA14581. After that, it can be used as any other HCI chipset.
141
142## EM Microelectronic Marin

--- 131 unchanged lines hidden ---