Skip to main content

Bluetooth Core Specification

Part E. Host Controller Interface Functional Specification

vAtlanta r00

This Part describes the functional specification for the Host Controller interface (HCI). The HCI provides a uniform command interface to a Controller.

1. Introduction

This Part of the specification describes the functional specifications for the Host Controller interface (HCI). The HCI provides a uniform command method for the Host to access Controller capabilities and to control connections to other Controllers. For the BR/EDR or LE Controller, these commands typically involve the Link Manager (LM) to exchange LMP commands or the Link Layer (LL) to exchange LL Control packets with remote Bluetooth devices. For details, see [Vol 2] Part C, Link Manager Protocol Specification and [Vol 6] Part B, Link Layer Specification.

The rest of this section provides a brief overview of the lower layers of the Bluetooth software stack and of the Bluetooth hardware. Section 2 provides an overview of the Lower HCI Device Driver Interface on the Host device. Section 3 lists the HCI commands and events and specifies the support requirements on different types of implementation. Section 4 describes the flow control used between the Host and the Controller. Section 5 describes the various data formats used by HCI. Section 6 further describes certain parameters that are common to several commands. Section 7 describes each of the HCI commands in detail, identifies parameters for each of the commands, and lists events associated with each command.

The specification is applicable to the following types of Controllers:

  • BR/EDR Controller

  • BR/EDR/LE Controller

  • LE Controller

A Controller shall support one of the following sets of functionality:

  • BR/EDR only

  • LE only

  • BR/EDR/LE

In the following sections, the term “BR/EDR Controller” is used to describe the BR/EDR functionality of a Controller which may be either a BR/EDR only Controller or a BR/EDR/LE Controller. Similarly, the term “LE Controller” is used to describe the LE functionality of a Controller which may be either an LE only Controller or a BR/EDR/LE Controller.

A BR/EDR Controller supports BR/EDR functionality only. A BR/EDR/LE Controller supports BR/EDR functionality and LE functionality. An LE Controller supports LE functionality only.

1.1. Lower Layers of the Bluetooth software stack
Overview of the lower software layers
Figure 1.1: Overview of the lower software layers


Figure 1.1 provides an overview of the lower software layers.

Several layers may exist between the HCI driver on the Host system and the HCI layer in the Controller(s). These intermediate layers, the Host Controller Transport Layer, provide the ability to transfer data without intimate knowledge of the data.

End to end overview of lower software layers to transfer data
Figure 1.2: End to end overview of lower software layers to transfer data


Figure 1.2 illustrates the path of a data transfer from one device to another. The HCI driver on the Host exchanges data and commands with the HCI firmware on the Bluetooth hardware. The Host Control Transport Layer (i.e. physical bus) driver provides both HCI layers with the ability to exchange information with each other.

The Host will receive asynchronous notifications of HCI events independent of which Host Controller Transport Layer is used. HCI events are used for notifying the Host when something occurs. When the Host discovers that an event has occurred it will then parse the received event packet to determine which event occurred.

A BR/EDR/LE Controller uses one shared command buffer and flow control for BR/EDR and LE. Data buffers can be either shared between BR/EDR and LE or there may be separate data buffers for BR/EDR and LE. The configuration of a Controller is determined through HCI.

LE Controllers use a reduced set of HCI commands and events. Some commands and events are re-used for multiple Controller types.

1.2. Cross-version issues

The Host and Controller communicating through HCI are not required to support the same version of this specification (see [Vol 1] Part D, Section 1).

If the Controller conforms to a newer version of the specification than the Host, events (including HCI_Command_Status and HCI_Command_Complete) may include values that are reserved for future use in the version supported by the Host. In the case of the Status parameter of the HCI_Command_Status and HCI_Command_Complete events, a value that is reserved for future use must be treated as if it were the error code Unspecified Error (0x1F) (see [Vol 1] Part F, Section 1.3). In all other circumstances the Host must obey the requirements for devices receiving reserved values (see [Vol 1] Part E, Section 2.4).

Note

Note: If the Host conforms to a newer version of the specification than the Controller and uses a command feature that is not part of the older specification version, then the Controller will report an error. Failure to handle such errors could result in unexpected behavior.

2. Overview of Host Controller transport layer

The Host driver stack has a transport layer between the Host Controller Interface driver and the Host.

The main goal of this transport layer is transparency. The Host Controller Interface driver (which interfaces to the Controller) should be independent of the underlying transport technology. In addition, the transport should not require any understanding of the data that the Host Controller Interface driver passes to the Controller. This allows the logical interface (HCI) or the Controller to be upgraded without affecting the transport layer.

The specified Host Controller Transport Layers are described in the other parts of Volume 4.

2.1. [This section is no longer used]

3. Overview of commands and events

The commands and events are sent between the Host and the Controller.

Table 3.1 lists each HCI command and event together with specification version information, a summary description, and the support requirements.

A command or event may have more than one version. All versions of a command or event implement the same basic functionality but with detail differences, such as additional parameters relating to newer features. The different versions are indicated by "[v1]", etc. where necessary; if no version number is given, a reference to the command or event applies to all versions.

The specification version information gives the version number of the specification which first specified this command or event or, where more than one specification version number is shown, each version of this command or event.

Table 3.1 lists the requirements for a Controller to support each command or event or version thereof. Subject to Section 3.2, a Controller shall support the command or event if it is shown as mandatory for at least one of the transports (i.e., BR/EDR or LE) that the Controller supports, otherwise the Controller may support the command or event if it is shown as optional for at least one of the transports that the Controller supports, otherwise it shall not support the command or event. If the command or event has more than one version, then this determination is made for each version separately using the requirements listed in the table for that version. The LMP features mentioned in the conditions are defined in [Vol 2] Part C, Section 3.2 and the Link Layer features in [Vol 6] Part B, Section 4.6.

Name

Vers.

Summary Description

BR/EDR

LE

Accept Connection Request command

1.1

The HCI_Accept_Connection_Request command is used to accept a new incoming BR/EDR connection request.

M

E

Accept Synchronous Connection Request command

1.2

The HCI_Accept_­Synchronous_­Connection_­Request command is used to accept an incoming request for a synchronous connection and to inform the local Link Manager about the acceptable parameter values for the synchronous connection.

C.134

E

Authenticated Payload Timeout Expired event

4.1

The HCI_Authenticated_­Payload_­Timeout_­Expired event is used to indicate that a packet containing a valid MIC on the Handle was not received within the authenticatedPayloadTO.

C.155

C.155

Authentication Complete event

1.1

The HCI_Authentication_­Complete event occurs when authentication has been completed for the specified connection.

C.101

E

Authentication Requested command

1.1

The HCI_Authentication_­Requested command is used to establish authentication between the two devices associated with the specified Connection_Handle.

O

E

Change Connection Link Key command

1.1

The HCI_Change_­Connection_­Link_­Key command is used to force both devices of a connection associated to the Connection_Handle, to generate a new link key.

O

E

Change Connection Link Key Complete event

1.1

The HCI_Change_Connection_Link_Key_Complete event is used to indicate that the change in the Link Key for the Connection_Handle specified by the Connection_Handle event parameter had been completed.

C.102

E

Change Connection Packet Type command

1.1

The HCI_Change_Connection_Packet_Type command is used to change which packet types can be used for a connection that is currently established.

C.133

E

Command Complete event

1.1

The HCI_Command_Complete event is used by the Controller to pass the return status of a command and the other event parameters for each HCI command.

M

M

Command Status event

1.1

The HCI_Command_Status event is used to indicate that the command described by the Command_Opcode parameter has been received and the Controller is currently performing the task for this command.

M

M

Configure Data Path command

5.2

The HCI_Configure_Data_Path command is used by a Host to configure a data path to enable codec operation in the Controller.

C.156

C.156

Connection Complete event

1.1

The HCI_Connection_Complete event indicates to both of the Hosts forming the connection that a new BR/EDR connection has been established.

M

E

Connection Packet Type Changed event

1.1

The HCI_Connection_Packet_Type_Changed event is used to indicate the completion of the process of the Link Manager changing the packet type mask used for the specified Connection_Handle.

C.133

E

Connection Request event

1.1

The HCI_Connection_Request event is used to indicate that a new incoming BR/EDR connection is trying to be established.

M

E

Connectionless Peripheral Broadcast Channel Map Change event

CSA4

The HCI_Connectionless_­Peripheral_­Broadcast_­Channel_­Map_­Change event indicates to the Host that the BR/EDR Controller has moved to a new AFH channel map for the PBD logical link.

C.201

E

Connectionless Peripheral Broadcast Receive event

CSA4

The HCI_Connectionless_Peripheral_Broadcast_Receive event provides the Host with the data received from a Connectionless Peripheral Broadcast packet.

C.202

E

Connectionless Peripheral Broadcast Timeout event

CSA4

On the Connectionless Peripheral Broadcast Receiver, the HCI_Connectionless_­Peripheral_­Broadcast_­Timeout event indicates to the Host that the BR/EDR Controller has lost synchronization with the Connectionless Peripheral Broadcast Transmitter.

On the Connectionless Peripheral Broadcast Transmitter, the HCI_Connectionless_Peripheral_Broadcast_Timeout event indicates to the Host that the BR/EDR Controller has been unable to transmit a Connectionless Peripheral Broadcast packet for the timeout interval specified in the HCI_Set_­Connectionless_­Peripheral_­Broadcast command.

C.202

E

Create Connection Cancel command

1.2

The HCI_Create_Connection_Cancel command is used to cancel an ongoing Create Connection.

M

E

Create Connection command

1.1

The HCI_Create_Connection command will cause the BR/EDR Link Manager to create an ACL connection to the BR/EDR Controller with the BD_ADDR specified by the command parameters.

M

E

Data Buffer Overflow event

1.1

The HCI_Data_Buffer_Overflow event is used to indicate that the Controller's data buffers have overflowed, because the Host has sent more packets than allowed.

O

O

Delete Reserved LT_ADDR command

CSA4

The HCI_Delete_Reserved_LT_ADDR command requests that the BR/EDR Controller cancel the reservation of a specific LT_ADDR reserved for the purposes of Connectionless Peripheral Broadcast.

C.201

E

Delete Stored Link Key command

1.1

The HCI_Delete_Stored_Link_Key command provides the ability to remove one or more of the link keys stored in the Controller.

C.121

E

Disconnect command

1.1

The HCI_Disconnect command is used to terminate an existing BR/EDR or LE connection.

M

C.3

Disconnection Complete event

1.1

The HCI_Disconnection_Complete event occurs when a connection has been terminated.

M

C.3

Enable Device Under Test Mode command

1.1

The HCI_Enable_Device_Under_Test_Mode command will allow the local Controller to enter test mode via LMP test commands. The Host issues this command when it wants the local device to be the DUT for the Testing scenarios as described in the Bluetooth Test Mode document.

C.123

E

Encryption Change event

1.1

5.3

The HCI_Encryption_Change event is used to indicate that the change in encryption has been completed for the specified Connection_Handle.

[v1]

M

[v2]

C.158

[v1]

C.4

[v2]

C.56

Encryption Key Refresh Complete event

2.1 + EDR

The HCI_Encryption_Key_Refresh_Complete event is used to indicate to the Host that the encryption key was refreshed on the given Connection_Handle any time encryption is paused and then resumed.

M

C.4

Enhanced Accept Synchronous Connection Request command

CSA2

The HCI_Enhanced_Accept_Synchronous_Connection_Request command is used to accept an incoming request for a synchronous connection and to inform the local Link Manager about the acceptable parameter values for the synchronous connection.

C.135

E

Enhanced Flush command

2.1 + EDR

The HCI_Enhanced_Flush command is used to discard specific packets currently pending for transmission in the Controller for the specified Handle. This command takes a parameter specifying the type of packets to be flushed.

M

E

Enhanced Flush Complete event

2.1 + EDR

The HCI_Enhanced_Flush_Complete event is used to indicate that an Enhanced Flush is complete.

M

E

Enhanced Setup Synchronous Connection command

CSA2

The HCI_Enhanced_Setup_Synchronous_Connection command adds a new or modifies an existing synchronous logical transport (SCO or eSCO) on a physical link depending on the Connection_Handle parameter specified.

C.135

E

Exit Periodic Inquiry Mode command

1.1

The HCI_Exit_Periodic_Inquiry_Mode command is used to end the Periodic Inquiry mode when the local device is in Periodic Inquiry Mode.

C.103

E

Exit Sniff Mode command

1.1

The HCI_Exit_Sniff_Mode command is used to end Sniff mode for a Connection_Handle which is currently in Sniff mode.

C.214

E

Extended Inquiry Result event

2.1 + EDR

The HCI_Extended_Inquiry_Result event indicates that a BR/EDR Controller has responded with an extended inquiry response during the current Inquiry process.

C.147

E

Flow Specification command

1.2

The HCI_Flow_Specification command is used to specify the flow parameters for the traffic carried over the ACL connection identified by the Connection_Handle.

M

E

Flow Specification Complete event

1.2

The HCI_Flow_Specification_Complete event is used to inform the Host about the Quality of Service for the ACL connection the Controller is able to support.

M

E

Flush command

1.1

The HCI_Flush command is used to discard all data that is currently pending for transmission in the Controller for the specified Connection_Handle.

M

E

Flush Occurred event

1.1

The HCI_Flush_Occurred event is used to indicate that, for the specified Handle, the data to be transmitted has been discarded.

M

E

Get MWS Transport Layer Configuration command

CSA3

The HCI_Get_MWS_Transport_Layer_Configuration command reads the supported baud rates from the Controller.

C.109

C.109

Hardware Error event

1.1

The HCI_Hardware_Error event is used to indicate some type of hardware failure for the Controller.

O

O

Hold Mode command

1.1

The HCI_Hold_Mode command is used to initiate Hold mode.

C.213

E

Host Buffer Size command

1.1

The HCI_Host_Buffer_Size command is used by the Host to notify the Controller about its buffer sizes for ACL and synchronous data. The Controller will segment the data to be transmitted from the Controller to the Host, so that data contained in HCI Data packets will not exceed these sizes.

C.107

C.107

Host Number Of Completed Packets command

1.1

The HCI_Host_Number_Of_Completed_Packets command is used by the Host to indicate to the Controller when the Host is ready to receive more HCI packets for any Connection_Handle.

C.107

C.107

Inquiry Cancel command

1.1

The HCI_Inquiry_Cancel command will cause the BR/EDR Controller to stop the current Inquiry if the BR/EDR Controller is in Inquiry Mode.

C.127

E

Inquiry command

1.1

The HCI_Inquiry command will cause the BR/EDR Controller to enter Inquiry Mode. Inquiry Mode is used to discovery other nearby BR/EDR Controllers.

C.127

E

Inquiry Complete event

1.1

The HCI_Inquiry_Complete event indicates that the Inquiry is finished.

C.127

E

Inquiry Response Notification event

CSA4

The HCI_Inquiry_Response_Notification event indicates to the Host that the BR/EDR Controller responded to an inquiry message.

C.126

E

Inquiry Result event

1.1

The HCI_Inquiry_Result event indicates that a BR/EDR Controller or multiple BR/EDR Controllers have responded so far during the current Inquiry process.

C.127

E

Inquiry Result with RSSI event

1.2

The HCI_Inquiry_Result_with_RSSI event indicates that a BR/EDR Controller or multiple BR/EDR Controllers have responded so far during the current Inquiry process.

C.128

E

IO Capability Request event

2.1 + EDR

The HCI_IO_Capability_Request event is used to indicate that the IO capabilities of the Host are required for a Secure Simple Pairing process.

M

E

IO Capability Request Negative Reply command

2.1 + EDR

The HCI_IO_Capability_Request_Negative_Reply command is used to reject a pairing attempt after an HCI_IO_Capability_Request event has been received by the Host.

M

E

IO Capability Request Reply command

2.1 + EDR

The HCI_IO_Capability_Request_Reply command is used to reply to an HCI_IO_Capability_Request event from the Controller, and specifies the current I/O capabilities of the Host.

M

E

IO Capability Response event

2.1 + EDR

The HCI_IO_Capability_Response event is used to indicate to the Host that IO capabilities from a remote device specified by BD_ADDR have been received during a Secure Simple Pairing process.

M

E

Keypress Notification event

2.1 + EDR

The HCI_Keypress_Notification event is sent to the Host after a passkey notification has been received by the Link Manager on the given BD_ADDR.

M

E

LE Accept CIS Request command

5.2

The HCI_LE_Accept_CIS_Request command is used by the Peripheral’s Host to inform the Controller to accept the request for creating the CIS.

E

C.40

LE Add Device To Filter Accept List command

4.0

The HCI_LE_Add_Device_To_Filter_Accept_List command will add a device to the Filter Accept List.

E

M

LE Add Device To Periodic Advertiser List command

5.0

The HCI_LE_Add_Device_To_Periodic_Advertiser_List command will add a device to the Periodic Advertiser List.

E

C.21

LE Add Device To Resolving List command

4.2

The HCI_LE_Add_Device_To_Resolving_List command is used to add one device to the resolving list used to resolve Resolvable Private Addresses in the Controller.

E

C.9

LE Advertising Report event

4.0

The HCI_LE_Advertising_Report event indicates that an advertising or scan response packet has been received.

E

C.98

LE Advertising Set Terminated event

5.0

The HCI_LE_Advertising_Set_Terminated event indicates that advertising in a given advertising set has stopped.

E

C.17

LE BIG Create Sync command

5.2

The HCI_LE_BIG_Create_Sync synchronizes and receives PDUs from one or more BISes.

E

C.42

LE BIG Sync Established event

5.2

The HCI_LE_BIG_Sync_Established event indicates that the Controller has completed an attempt to synchronize with the requested BISes.

E

C.42

LE BIG Sync Lost event

5.2

The HCI_LE_BIG_Sync_Lost event indicates that the Controller stopped synchronizing with a BIG.

E

C.42

LE BIG Terminate Sync command

5.2

The HCI_LE_BIG_Terminate_Sync command stops or cancels synchronizing with a BIG.

E

C.42

LE BIGInfo Advertising Report event

5.2

The HCI_LE_BIGInfo_Advertising_Report event indicates that the Controller has received an Advertising PDU that contained a BIGInfo field.

E

C.54

LE Channel Selection Algorithm event

5.0

The HCI_LE_Channel_Selection_Algorithm event indicates the channel selection algorithm used on a connection.

E

C.23

LE CIS Established event

5.2

The HCI_LE_CIS_Established event indicates that the Controller established a CIS.

E

C.38

LE CIS Request event

5.2

The HCI_LE_CIS_Request event indicates that the Peripheral’s Controller received a request from the Central to create a CIS.

E

C.40

LE Clear Advertising Sets command

5.0

The HCI_LE_Clear_Advertising_Sets command will remove all existing advertising sets from the Controller.

E

C.17

LE Clear Filter Accept List command

4.0

The HCI_LE_Clear_Filter_Accept_List command will clear the Filter Accept List.

E

M

LE Clear Periodic Advertiser List command

5.0

The HCI_LE_Clear_Periodic_Advertiser_List command will clear the Periodic Advertiser List.

E

C.21

LE Clear Resolving List command

4.2

The HCI_LE_Clear_Resolving_List command is used to remove all devices from the resolving list used to resolve Resolvable Private Addresses in the Controller.

E

C.9

LE Connection Complete event

4.0

The HCI_LE_Connection_Complete event indicates to the Host that a new connection has been created.

E

C.3

LE Connection CTE Request Enable command

5.1

The HCI_LE_Connection_CTE_Request_Enable command will request the Controller to start or stop sending of LL_CTE_REQ PDUs on a connection.

E

C.25

LE Connection CTE Response Enable command

5.1

The HCI_LE_Connection_CTE_Response_Enable command will command the Controller to respond to LL_CTE_REQ PDUs with LL_CTE_RSP PDUs.

E

C.26

LE Connection IQ Report event

5.1

The HCI_LE_Connection_IQ_Report event is used to report IQ samples from the Constant Tone Extension field of a received packet containing an LL_CTE_RSP PDU.

E

C.25

LE Connection Update command

4.0

The HCI_LE_Connection_Update command will be used to change the connection parameters of an existing connection.

E

C.62

LE Connection Update Complete event

4.0

The HCI_LE_Connection_Update_Complete event indicates the completion of the process to change the connection parameters.

E

C.3

LE Connectionless IQ Report event

5.1

The HCI_LE_Connectionless_IQ_Report event reports IQ information from the Constant Tone Extension of a received advertising packet.

E

C.28

LE Create BIG command

5.2

The HCI_LE_Create_BIG command creates one or more BISes of a BIG.

E

C.41

LE Create BIG Complete event

5.2

The HCI_LE_Create_BIG_Complete event indicates that the Controller completed an attempt to create the BISes that were requested by the Host.

E

C.41

LE Create BIG Test command

5.2

The HCI_LE_Create_BIG_Test command is used to create one or more BISes of a BIG for testing purposes.

E

C.41

LE Create CIS command

5.2

The HCI_LE_Create_CIS command is used by the Central’s Host to create one or more CISes.

E

C.39

LE Create Connection Cancel command

4.0

The HCI_LE_Create_Connection_Cancel command is used to cancel an ongoing HCI_LE_Create_Connection command.

E

C.94

LE Create Connection command

4.0

The HCI_LE_Create_Connection command is used to create a new connection.

E

C.59

LE CTE Request Failed event

5.1

The HCI_LE_CTE_Request_Failed event indicates a problem with a request generated by an HCI_LE_Connection_CTE_Request_Enable command for a peer device to send Constant Tone Extensions.

E

C.25

LE Data Length Change event

4.2

The HCI_LE_Data_Length_Change event is used to indicate a change in the maximum packet sizes by the Link Layer.

E

C.8

LE Directed Advertising Report event

4.2

The HCI_LE_Directed_Advertising_Report event indicates that directed advertisements have been received where the advertiser is using a resolvable private address for the TargetA field in the ADV_DIRECT_IND PDU and the scanning filter policy is set to send this event to the Host.

E

C.63

LE Enable Encryption command

4.0

The HCI_LE_Enable_Encryption command is used to enable link level encryption.

E

C.60

LE Encrypt command

4.0

The HCI_LE_Encrypt command will encrypt a block of unencrypted data against a key and generate a block of encrypted data.

E

C.4

LE Enhanced Connection Complete event

4.2

5.4

The HCI_LE_Enhanced_Connection_Complete event indicates to the Host that a new connection has been created. This event contains the additional parameters of the local and peer resolvable private addresses.

E

[v1]

C.24

[v2]

C.69

LE Enhanced Read Transmit Power Level command

5.2

The HCI_LE_Enhanced_Read_Transmit_Power_Level command is used to read the current and maximum transmit power levels used by the local Controller on a specified PHY on an ACL connection.

E

C.51

LE Extended Advertising Report event

5.0

The HCI_LE_Extended_Advertising_Report event indicates that an advertising packet has been received.

E

C.19

LE Extended Create Connection command

5.0

5.4

The LE Extended Create Connection Command is used to create a new connection supporting different initiating PHYs and to initiate a connection with a synchronized device.

E

[v1]

C.20

[v2]

C.67

LE Generate DHKey command

4.2

5.1

The HCI_LE_Generate_DHKey command is used to initiate generation of a Diffie-Hellman key in the Controller for use over the LE transport.

E

[v1]

C.99

[v2]

O

LE Generate DHKey Complete event

4.2

The HCI_LE_Generate_DHKey_Complete event indicates that LE Diffie-Hellman key generation has been completed by the Controller.

E

O

LE ISO Read Test Counters command

5.2

The HCI_LE_ISO_Read_Test_Counters command reads the test counters in the Controller which is configured in ISO Receive Test mode.

E

C.46

LE ISO Receive Test command

5.2

The HCI_LE_ISO_Receive_Test command configures a Link Layer to receive test payloads from an established CIS or a synchronized BIS.

E

C.46

LE ISO Test End command

5.2

The HCI_LE_ISO_Test_End command terminates the ISO Transmit and/or Receive Test mode.

E

C.47

LE ISO Transmit Test command

5.2

The HCI_LE_ISO_Transmit_Test command configures an established CIS or BIS to transmit test payloads that are generated by the Controller.

E

C.45

LE Long Term Key Request event

4.0

The HCI_LE_Long_Term_Key_Request event indicates that a Long Term Key is required for a connection.

E

C.61

LE Long Term Key Request Negative Reply command

4.0

The HCI_LE_Long_Term_Key_Request_Negative_Reply command is used to reply to an HCI_LE_Long_Term_Key_Request event and indicates that the Host does not have a Long Term Key for that connection.

E

C.61

LE Long Term Key Request Reply command

4.0

The HCI_LE_­Long_­Term_­Key_­Request_­Reply command is used to reply to an HCI_LE_­Long_­Term_­Key_­Request event and includes the Long Term Key stored in the Host for that connection.

E

C.61

LE Modify Sleep Clock Accuracy command

5.1

The HCI_LE_Modify_Sleep_Clock_Accuracy command requests the Controller changes its sleep clock accuracy for testing purposes.

E

C.37

LE Path Loss Threshold event

5.2

The HCI_LE_Path_Loss_Threshold event is used to report a path loss threshold crossing on an ACL connection.

E

C.52

LE Periodic Advertising Create Sync Cancel command

5.0

The HCI_LE_Periodic_Advertising_Create_Sync_Cancel command is used to cancel a pending HCI_LE_Periodic_Advertising_Create_Sync command.

E

C.16

LE Periodic Advertising Create Sync command

5.0

The HCI_LE_Periodic_Advertising_Create_Sync command is used to start receiving periodic advertising packets from an advertiser.

E

C.16

LE Periodic Advertising Report event

5.0

5.4

The HCI_LE_Periodic_Advertising_Report event indicates that a periodic advertising packet has been received.

E

[v1]

C.21

[v2]

C.68

LE Periodic Advertising Set Info Transfer command

5.1

The HCI_LE_Periodic_Advertising_Set_Info_Transfer command is used to send periodic advertising synchronization information, describing periodic advertising events that the Controller is transmitting, to a connected Controller.

E

C.34

LE Periodic Advertising Response Report event

5.4

The HCI_LE_­Periodic_­Advertising_­Response_­Report event is used to report response data to a Host.

E

C.67

LE Periodic Advertising Sub­event Data Request event

5.4

The HCI_LE_Periodic_Advertising_Subevent_Data_Request event is used to request subevent data from a Host.

E

C.67

LE Periodic Advertising Sync Established event

5.0

5.4

The HCI_LE_Periodic_Advertising_Sync_Established event indicates that the Controller has started receiving periodic advertising packets from an advertiser.

E

[v1]

C.16

[v2]

C.68

LE Periodic Advertising Sync Lost event

5.0

The HCI_LE_Periodic_Advertising_Sync_Lost event indicates the Controller has ended receiving a periodic advertising train.

E

C.21

LE Periodic Advertising Sync Transfer command

5.1

The HCI_LE_Periodic_Advertising_Sync_Transfer command is used to send periodic advertising synchronization information to a connected Controller.

E

C.33

LE Periodic Advertising Sync Transfer Received event

5.1

5.4

The HCI_LE_Periodic_Advertising_Sync_Transfer_Received event reports reception of periodic advertising synchronization information from a connected Controller.

E

[v1]

C.35

[v2]

C.68

LE Periodic Advertising Terminate Sync command

5.0

The HCI_LE_Periodic_Advertising_Terminate_Sync command is used to end receiving of a periodic advertising train.

E

C.21

LE PHY Update Complete event

5.0

The HCI_LE_PHY_Update_Complete event is used to inform the Host of the current PHY.

E

C.11

LE Rand command

4.0

The HCI_LE_Rand command will generate a random number.

E

C.4

LE Read Advertising Physical Channel Tx Power command

4.0

The HCI_LE_Read_Advertising_Physical_Channel_Tx_Power command will read the transmit power level that will be used for advertising.

E

C.97

LE Read Antenna Information command

5.1

The HCI_LE_Read_Antenna_Information command allows the Host to read the switching rates, the sampling rates, the number of antennae, and the maximum length of the Constant Tone Extension supported by the Controller.

E

C.31

LE Read Buffer Size command

4.0

The HCI_LE_Read_Buffer_Size command returns the size of the HCI buffers. These buffers are used by the LE Controller to buffer data that is to be transmitted.

E

[v1]

C.3

[v2]

C.55

LE Read Channel Map command

4.0

The HCI_LE_Read_Channel_Map command will read the current state of the channel map for a connection.

E

C.3

LE Read Filter Accept List Size command

4.0

The HCI_LE_Read_Filter_Accept_List_Size command will read the maximum number of Filter Accept List entries that this Controller supports.

E

M

LE Read ISO Link Quality command

5.2

The HCI_LE_Read_ISO_Link_Quality command returns the value of various counters related to link quality on an isochronous stream.

E

C.50

LE Read ISO TX Sync command

5.2

The HCI_LE_Read_ISO_TX_Sync command is used to read the Time_Stamp and Time_Offset of a transmitted SDU.

E

C.45

LE Read Local P-256 Public Key command

4.2

The HCI_LE_Read_Local_P-256_Public_Key command is used to return the local P-256 public key from the Controller.

E

O

LE Read Local P-256 Public Key Complete event

4.2

The HCI_LE_Read_Local_P-256_Public_Key_Complete event is generated when local P-256 key generation is complete.

E

O

LE Read Local Resolvable Address command

4.2

The HCI_LE_Read_Local_Resolvable_Address command is used to get the current local Resolvable Private Address being used for the corresponding peer Identity Address.

E

C.10

LE Read Local Supported Features command

4.0

The HCI_LE_Read_Local_Supported_Features command will read the version information for the local LE Controller.

E

M

LE Read Maximum Advertising Data Length command

5.0

The HCI_LE_Read_Maximum_Advertising_Data_Length command will read the maximum length of advertising data that the advertising Controller supports in a given advertising set.

E

C.17

LE Read Maximum Data Length command

4.2

The HCI_LE_Read_Maximum_Data_Length command allows the Host to read the Controller’s supportedMaxTxOctets, supportedMaxTxTime, supportedMaxRxOctets, and supportedMaxRxTime parameters.

E

C.8

LE Read Number of Supported Advertising Sets command

5.0

The HCI_LE_Read_Number_of_Supported_Advertising_Sets command will read the maximum number of advertising sets supported by the advertising Controller at the same time.

E

C.17

LE Read Peer Resolvable Address command

4.2

The HCI_LE_Read_Peer_Resolvable_Address command is used to get the current peer Resolvable Private Address being used for the corresponding peer Public and Random (static) Identity Address.

E

C.10

LE Read Periodic Advertiser List Size command

5.0

The HCI_LE_Read_Periodic_Advertiser_List_Size command will read the maximum number of Periodic Advertiser List entries that the Controller supports.

E

C.21

LE Read PHY command

5.0

The HCI_LE_Read_PHY command will read the current PHY.

E

C.11

LE Read Remote Features command

4.0

The HCI_LE_Read_Remote_Features command is used to read the features used on a connection and the features supported by a remote LE device.

E

C.3

LE Read Remote Features Complete event

4.0

The HCI_LE_Read_Remote_Features_Complete event indicates the completion of the process to read the features used on a connection and the features supported by a remote LE device.

E

C.3

LE Read Remote Transmit Power Level command

5.2

The HCI_LE_Read_Remote_Transmit_Power_Level command is used to read the transmit power level used by the remote Controller on a specified PHY on an ACL connection.

E

C.51

LE Read Resolving List Size command

4.2

The HCI_LE_Read_Resolving_List_Size command is used to read the total number of entries in the resolving list that can be stored in the Controller.

E

C.9

LE Read RF Path Compensation command

5.0

The HCI_LE_Read_RF_Path_Compensation command is used to read the RF Path Compensation Value.

E

C.22

LE Read Suggested Default Data Length command

4.2

The HCI_LE_Read_Suggested_Default_Data_Length command allows the Host to read the initial MaxTxOctets and MaxTxTime values for new connections it suggested to the Controller.

E

C.8

LE Read Supported States command

4.0

The HCI_LE_Read_Supported_States command will read the current supported state and role combinations for the local LE Controllers.

E

M

LE Read Transmit Power command

5.0

The HCI_LE_Read_Transmit_Power command will read the minimum and maximum transmit powers supported by the Controller.

E

C.64

LE Receiver Test command

4.0

5.0

5.1

The HCI_LE_Receiver_Test command will run the LE receiver test.

E

[v1]

C.2

[v2]

C.13

[v3]

C.30

LE Reject CIS Request command

5.2

The HCI_LE_Reject_CIS_Request command is used by the Peripheral’s Host to inform the Controller to reject the request for creating the CIS.

E

C.40

LE Remote Connection Parameter Request event

4.1

The LE Remote Connection Parameter Request event is used to indicate to the Host that the remote device is requesting a change in the connection parameters.

E

C.6

LE Remote Connection Parameter Request Negative Reply command

4.1

The HCI_LE_­Remote_­Connection_­Parameter_­Request_­Negative_­Reply command is used to reject the remote device’s request to change the connection parameters of the LE connection.

E

C.6

LE Remote Connection Parameter Request Reply command

4.1

The HCI_LE_Remote_Connection_Parameter_Request_Reply command is used to accept the remote device’s request to change the connection parameters of the LE connection.

E

C.6

LE Remove Advertising Set command

5.0

The HCI_LE_Remove_Advertising_Set command will remove an advertising set from the Controller.

E

C.17

LE Remove CIG command

5.2

The HCI_LE_Remove_CIG command is used by the Central’s Host to remove a CIG from the Controller.

E

C.39

LE Remove Device From Filter Accept List command

4.0

The HCI_LE_Remove_Device_From_Filter_Accept_List command will remove a single device from the Filter Accept List.

E

M

LE Remove Device From Periodic Advertiser List command

5.0

The HCI_LE_Remove_Device_From_Periodic_Advertiser_List command will remove a single device from the Periodic Advertiser List.

E

C.21

LE Remove Device From Resolving List command

4.2

The HCI_LE_Remove_Device_From_Resolving_List command is used to remove one device from the resolving list used to resolve Resolvable Private Addresses in the Controller.

E

C.9

LE Remove ISO Data Path command

5.2

The HCI_LE_Remove_ISO_Data_Path command removes an isochronous data path between the Host and the Controller.

E

C.47

LE Request Peer SCA command

5.2

The HCI_LE_Request_Peer_SCA command requests the Sleep Clock Accuracy of the peer device.

E

C.44

LE Request Peer SCA Complete event

5.2

The HCI_LE_Request_Peer_SCA_Complete event indicates that the Controller completed the attempt to read the Sleep Clock Accuracy (SCA) of the peer device.

E

C.95

LE Scan Request Received event

5.0

The HCI_LE_Scan_Request_Received event indicates that a scan request has been received.

E

C.17

LE Scan Timeout event

5.0

The HCI_LE_Scan_Timeout event indicates that scanning has finished.

E

C.19

LE Set Address Resolution Enable command

4.2

The HCI_LE_Set_Address_Resolution_Enable command is used to enable resolution of Resolvable Private Addresses in the Controller.

E

C.9

LE Set Advertising Data command

4.0

The HCI_LE_Set_Advertising_Data command will set the data transmitted when advertising.

E

C.97

LE Set Advertising Enable command

4.0

The HCI_LE_Set_Advertising_Enable command will enable or disable advertising.

E

C.97

LE Set Advertising Parameters command

4.0

The HCI_LE_Set_Advertising_Parameters command will set the parameters used for advertising.

E

C.97

LE Set Advertising Set Random Address command

5.0

The HCI_LE_Set_Advertising_Set_Random_Address command will set the random address used in advertising.

E

C.17

LE Set CIG Parameters command

5.2

The HCI_LE_Set_CIG_Parameters command is used by a Central’s Host to set the parameters of one or more Connected Isochronous Streams (CISes) that are associated with a CIG in the Controller.

E

C.39

LE Set CIG Parameters Test command

5.2

The HCI_LE_Set_CIG_Parameters_Test command is used by a Central’s Host to set the parameters of one or more CISes that are associated with a CIG in the Controller for testing purposes.

E

C.39

LE Set Connection CTE Receive Parameters command

5.1

The HCI_LE_Set_Connection_CTE_Receive_Parameters command will set the antenna-switching pattern, switching and sampling slot durations for receiving the Constant Tone Extension on a connection.

E

C.25

LE Set Connection CTE Transmit Parameters command

5.1

The HCI_LE_Set_Connection_CTE_Transmit_Parameters command will set the antenna-switching pattern, switching and sampling slot durations for transmitting the Constant Tone Extension on a connection.

E

C.26

LE Set Connectionless CTE Transmit Enable command

5.1

The HCI_LE_Set_Connectionless_CTE_Transmit_Enable command will request the Controller to enable or disable sending packets containing a Constant Tone Extension.

E

C.27

LE Set Connectionless CTE Transmit Parameters command

5.1

The HCI_LE_Set_Connectionless_CTE_Transmit_Parameters command will set the antenna-switching pattern and switching and sampling slot durations for the transmission of Constant Tone Extensions.

E

C.27

LE Set Connectionless IQ Sampling Enable command

5.1

The HCI_LE_Set_Connectionless_IQ_Sampling_Enable command will request the Controller to enable or disable taking IQ samples from the Constant Tone Extension of advertising packets.

E

C.28

LE Set Data Length command

4.2

The HCI_LE_Set_Data_Length command is used to suggest maximum packet sizes to the Controller.

E

C.8

LE Set Data Related Address Changes command

5.3

The HCI_LE_Set_Data_Related_Address_Changes command specifies circumstances when the Controller shall refresh any Resolvable Private Address used by an advertising set, whether or not the address timeout period has been reached.

E

C.10

LE Set Default Periodic Advertising Sync Transfer Parameters command

5.1

The HCI_LE_­Set_­Default_­Periodic_­Advertising_­Sync_­Transfer_­Parameters command is used to specify the default behavior of the Controller when periodic advertising synchronization information is received from a connected Controller.

E

C.35

LE Set Default PHY command

5.0

The HCI_LE_Set_Default_PHY command is used to configure preferred PHYs for new connections for the local device.

E

C.11

LE Set Default Subrate command

5.3

The HCI_LE_Set_Default_Subrate command sets the range of the min and max subrates and other subrate parameters on a Central that may be requested by a Peripheral.

E

C.57

LE Set Event Mask command

4.0

The HCI_LE_Set_Event_Mask command is used to control which events are generated by the HCI for the Host.

E

M

LE Set Extended Advertising Data command

5.0

The HCI_LE_Set_Extended_Advertising_Data command will set the advertising data transmitted when advertising.

E

C.17

LE Set Extended Advertising Enable command

5.0

The HCI_LE_Set_Extended_Advertising_Enable command will enable or disable advertising.

E

C.17

LE Set Extended Advertising Parameters command

5.0

5.4

The HCI_LE_Set_Extended_Advertising_Parameters command will set the parameters used for advertising.

E

[v1]

C.65

[v2]

C.66

LE Set Extended Scan Enable command

5.0

The HCI_LE_Set_Extended_Scan_Enable command will enable or disable scanning on the primary advertising physical channels.

E

C.19

LE Set Extended Scan Parameters command

5.0

The HCI_LE_Set_Extended_Scan_Parameters command will set the parameters used for scanning on the primary advertising physical channel.

E

C.19

LE Set Extended Scan Response Data command

5.0

The HCI_LE_Set_Extended_Scan_Response_Data command will set the data transmitted in a scan response.

E

C.17

LE Set Host Channel Classification command

4.0

The HCI_LE_Set_Host_Channel_Classification command allows the Host to specify a channel classification based on its “local information”.

E

C.36

LE Set Host Feature command

5.2

The HCI_LE_Set_Host_Feature command is used to set or clear a bit controlled by the Host in the Link Layer FeatureSet stored in the Controller.

E

C.49

LE Set Path Loss Reporting Enable command

5.2

The HCI_LE_Set_Path_Loss_Reporting_Enable command is used to enable or disable path loss reporting events for an ACL connection.

E

C.52

LE Set Path Loss Reporting Parameters command

5.2

The HCI_LE_Set_Path_Loss_Reporting_Parameters command is used to set the path loss threshold and related parameters used to trigger reports for an ACL connection.

E

C.52

LE Set Periodic Advertising Data command

5.0

The HCI_LE_Set_Periodic_Advertising_Data command will set the periodic advertising data transmitted when advertising.

E

C.18

LE Set Periodic Advertising Enable command

5.0

The HCI_LE_Set_Periodic_Advertising_Enable command will enable or disable periodic advertising.

E

C.18

LE Set Periodic Advertising Parameters command

5.0

5.4

The HCI_LE_Set_Periodic_Advertising_Parameters command will set the parameters used for periodic advertising.

E

[v1]

C.18

[v2]

C.67

LE Set Periodic Advertising Receive Enable command

5.1

The HCI_LE_Set_Periodic_Advertising_Receive_Enable command will enable or disable periodic advertising reports once synchronized.

E

C.32

LE Set Periodic Advertising Response Data command

5.4

The HCI_LE_Set_Periodic_Advertising_Response_Data command is used to set the data for a response slot.

E

C.68

LE Set Periodic Advertising Subevent Data command

5.4

The HCI_LE_Set_Periodic_Advertising_Subevent_Data command is used to send subevent data for one or more subevents.

E

C.67

LE Set Periodic Sync Subevent command

5.4

The HCI_LE_Set_Periodic_Sync_Subevent command is used to configure the subset of subevents a device will synchronize with.

E

C.68

LE Set Periodic Advertising Sync Transfer Parameters command

5.1

The HCI_LE_­Set_­Periodic_­Advertising_­Sync_­Transfer_­Parameters command is used to allow the Host to specify the behavior of the Controller when periodic advertising synchronization information is received from a connected Controller.

E

C.35

LE Set PHY command

5.0

The HCI_LE_Set_PHY command is used to request a change of the PHY for a Connection_Handle.

E

C.11

LE Set Privacy Mode command

5.0

The HCI_LE_Set_Privacy_Mode command is used to allow the Host to specify the privacy mode for an entry on the resolving list.

E

C.9

LE Set Random Address command

4.0

The HCI_LE_Set_Random_Address command will set the Random Device Address that may be used in a packet sent on the advertising physical channel.

E

C.1

LE Set Resolvable Private Address Timeout command

4.2

The HCI_LE_Set_Resolvable_Private_Address_Timeout sets the length of time the Controller uses a random private address before a new random private address is generated and starts being used.

E

C.9

LE Set Scan Enable command

4.0

The HCI_LE_Set_Scan_Enable command will enable or disable scanning.

E

C.98

LE Set Scan Parameters command

4.0

The HCI_LE_Set_Scan_Parameters command will set the parameters used for scanning.

E

C.98

LE Set Scan Response Data command

4.0

The HCI_LE_Set_Scan_Response_Data command will set the data transmitted in a scan response.

E

C.15

LE Set Transmit Power Reporting Enable command

5.2

The HCI_LE_Set_Transmit_Power_Reporting_Enable command is used to enable or disable reporting to the local Host of transmit power level changes on an ACL connection.

E

C.51

LE Setup ISO Data Path command

5.2

The HCI_LE_Setup_ISO_Data_Path command identifies and creates the isochronous data path between the Host and the Controller and optionally configures the codec in the Controller.

E

C.47

LE Subrate Change event

5.3

The HCI_LE_Subrate_Change event indicates that a new subrate factor has been applied to an existing ACL connection.

E

C.57

LE Subrate Request command

5.3

The HCI_LE_Subrate_Request command modifies an existing ACL connection by applying a subrate factor.

E

C.57

LE Terminate BIG command

5.2

The HCI_LE_Terminate_BIG command terminates the transmission of all BISes of a BIG or cancels the process of creating a BIG.

E

C.41

LE Terminate BIG Complete event

5.2

The HCI_LE_Terminate_BIG_Complete event indicates that the transmission of all the BISes in the BIG have been terminated.

E

C.41

LE Test End command

4.0

The HCI_LE_Test_End command will end the current the receiver or transmitter test.

E

M

LE Transmit Power Reporting event

5.2

The HCI_LE_Transmit_Power_Reporting event is used to report the transmit power level on the ACL connection.

E

C.51

LE Transmitter Test command

4.0

5.0

5.1

5.2

The HCI_LE_Transmitter_Test command will run the LE transmitter test.

E

[v1]

C.1

[v2]

C.12

[v3]

C.29

[v4]

C.53

LE Write RF Path Compensation command

5.0

The HCI_LE_Write_RF_Path_Compensation command is used to indicate the RF path gain or loss from the RF transceiver output to the antenna output contributed by intermediate components.

E

C.22

LE Write Suggested Default Data Length command

4.2

The HCI_LE_Write_Suggested_Default_Data_Length command allows the Host to suggest initial MaxTxOctets and MaxTxTime values for new connections.

E

C.8

Link Key Notification event

1.1

The HCI_Link_Key_Notification event is used to indicate to the Host that a new Link Key has been created for the connection with the BR/EDR Controller specified in BD_ADDR.

M

E

Link Key Request event

1.1

The HCI_Link_Key_Request event is used to indicate that a Link Key is required for the connection with the device specified in BD_ADDR.

M

E

Link Key Request Negative Reply command

1.1

The HCI_Link_­Key_­Request_­Negative_­Reply command is used to reply to an HCI_Link_­Key_­Request event from the BR/EDR Controller if the Host does not have a stored Link Key for the connection with the other BR/EDR Controller specified by BD_ADDR.

M

E

Link Key Request Reply command

1.1

The HCI_Link_Key_Request_Reply command is used to reply to an HCI_Link_Key_Request event from the BR/EDR Controller, and specifies the Link Key stored on the Host to be used as the link key for the connection with the other BR/EDR Controller specified by BD_ADDR.

M

E

Link Key Selection command

1.1

The HCI_Link_Key_Selection command is used to force both BR/EDR Controllers of a connection associated to the Connection_Handle to use the temporary link key of the Central or the regular link keys.

C.215

E

Link Key Type Changed event

1.1

The HCI_Link_Key_Type_Changed event is used to indicate that the change in the temporary Link Key or in the semi-permanent link keys on the Bluetooth Central side has been completed.

C.215

E

Link Supervision Timeout Changed event

2.1 + EDR

The HCI_Link_Supervision_Timeout_Changed event indicates that the remote device changed the Link Supervision Timeout.

M

E

Loopback Command event

1.1

The HCI_Loopback_Command event is used to loop back all commands that the Host sends to the BR/EDR Controller with some exceptions.

C.123

E

Max Slots Change event

1.1

The HCI_Max_Slots_Change event is used to indicate a change in the max slots by the LM.

C.132

E

Mode Change event

1.1

The HCI_Mode_Change event is used to indicate that the current mode has changed.

C.144

E

Number Of Completed Data Blocks event

3.0 + HS

The HCI_Number_Of_Completed_Data_Blocks event is used by the Controller to indicate to the Host how many HCI ACL Data packets have been completed and how many data block buffers have been freed for each Handle since the previous HCI_Number_Of_Completed_Data_Blocks event was sent.

C.124

E

Number Of Completed Packets event

1.1

The HCI_Number_Of_Completed_Packets event is used by the Controller to indicate to the Host how many HCI Data packets have been completed for each Connection_Handle since the previous HCI_Number_Of_Completed_Packets event was sent.

M

C.3

Page Scan Repetition Mode Change event

1.1

The HCI_Page_­Scan_­Repetition_­Mode_­Change event indicates that the connected remote BR/EDR Controller with the specified Connection_Handle has successfully changed the Page Scan Repetition Mode (SR).

O

E

Periodic Inquiry Mode command

1.1

The HCI_Periodic_Inquiry_Mode command is used to configure the BR/EDR Controller to perform an automatic Inquiry based on a specified period range.

C.128

E

Peripheral Page Response Timeout event

CSA4

The HCI_Peripheral_Page_Response_Timeout event indicates to the Host that the pagerespTO has been exceeded on the BR/EDR Controller after the Controller responded to an ID packet.

O

E

PIN Code Request event

1.1

The HCI_PIN_Code_Request event is used to indicate that a PIN code is required to create a new link key for a connection.

M

E

PIN Code Request Negative Reply command

1.1

The HCI_PIN_­Code_­Request_­Negative_­Reply command is used to reply to an HCI_PIN_­Code_­Request event from the Controller when the Host cannot specify a PIN code to use for a connection.

M

E

PIN Code Request Reply command

1.1

The HCI_PIN_Code_Request_Reply command is used to reply to an HCI_PIN_Code_Request event from the Controller and specifies the PIN code to use for a connection.

M

E

QoS Setup command

1.1

The HCI_QoS_Setup command is used to specify Quality of Service parameters for a Connection_Handle.

M

E

QoS Setup Complete event

1.1

The HCI_QoS_Setup_Complete event is used to indicate that QoS is set up.

M

E

QoS Violation event

1.1

The HCI_QoS_Violation event is used to indicate the Controller’s Link Manager is unable to provide the current QoS requirement for the Handle.

M

E

Read AFH Channel Assessment Mode command

1.2

The HCI_Read_AFH_Channel_Assessment_Mode command will read the value for the AFH Channel Classification Mode parameter. This value is used to enable or disable the Controller’s channel assessment scheme.

C.140

C.58

Read AFH Channel Map command

1.2

The HCI_Read_AFH_Channel_Map command will read the current state of the channel map for a connection.

C.139

E

Read Authenticated Payload Timeout command

4.1

The HCI_Read_Authenticated_Payload_Timeout command is used to read the Authenticated Payload Timeout parameter, which is used to set the maximum time between packets being received from the remote device without a valid MIC.

C.155

C.155

Read Authentication Enable command

1.1

The HCI_Read_Authentication_Enable command will read the value for the Authentication Enable parameter, which controls whether the Bluetooth device will require authentication for each connection with other Bluetooth devices.

C.111

E

Read Automatic Flush Timeout command

1.1

The HCI_Read_Automatic_Flush_Timeout command will read the value for the Flush Timeout configuration parameter for the specified Connection_Handle. The Flush Timeout parameter is only used for ACL connections.

M

E

Read BD_ADDR command

1.1

The HCI_Read_BD_ADDR command will read the value for the BD_ADDR parameter.

M

M

Read Buffer Size command

1.1

The HCI_Read_Buffer_Size command returns the size of the HCI buffers. These buffers are used by the Controller to buffer data that is to be transmitted.

M

E

Read Class of Device command

1.1

The HCI_Read_Class_of_Device command will read the value for the Class of Device configuration parameter, which is used to indicate its capabilities to other devices.

M

E

Read Clock command

1.2

The HCI_Read_Clock command will read an estimate of a piconet or the local Bluetooth Clock.

O

E

Read Clock Offset command

1.1

The HCI_Read_Clock_Offset command allows the Host to read the clock offset of remote BR/EDR Controllers.

O

E

Read Clock Offset Complete event

1.1

The HCI_Read_Clock_Offset_Complete event is used to indicate the completion of the process of the LM obtaining the Clock offset information.

C.104

E

Read Connection Accept Timeout command

1.1

The HCI_Read_Connection_Accept_Timeout command will read the value for the Connection Accept Timeout configuration parameter, which allows the Controller to automatically deny a connection request after a specified period has occurred, and to refuse a new connection.

M

C.40

Read Current IAC LAP command

1.1

The HCI_Read_Current_IAC_LAP command will read the LAP(s) used to create the Inquiry Access Codes (IAC) that the local BR/EDR Controller is simultaneously scanning for during Inquiry Scans.

C.125

E

Read Data Block Size command

3.0 + HS

The HCI_Read_Data_Block_Size command returns the maximum size of the HCI buffers. These buffers are used by the Controller to buffer data that is to be transmitted.

C.124

E

Read Default Erroneous Data Reporting command

2.1 + EDR

The HCI_Read_Default_Erroneous_Data_Reporting command will read the value for the Erroneous Data Reporting configuration parameter, which controls whether the BR/EDR Controller will provide data for every (e)SCO interval, with the Packet_Status_Flag in HCI Synchronous Data packets set according to HCI Synchronous Data packets.

C.112

E

Read Default Link Policy Settings command

1.2

The HCI_Read_Default_Link_Policy_Settings command will read the Default Link Policy configuration parameter for all new connections.

C.141

E

Read Encryption Key Size command

3.0 + HS

The HCI_Read_Encryption_Key_Size command is used to read the encryption key size on a given Connection_Handle.

M

E

Read Enhanced Transmit Power Level command

3.0 + HS

The HCI_Read_Enhanced_Transmit_Power_Level command will read the values for the GFSK, π/4-DQPSK and 8DPSK Transmit Power Level parameters for the specified Connection_Handle.

C.217

E

Read Extended Inquiry Length command

4.1

The HCI_Read_Extended_Inquiry_Length command is used to read the Extended Inquiry Length parameter from the Controller.

C.113

E

Read Extended Inquiry Response command

2.1 + EDR

The HCI_Read_Extended_Inquiry_Response command will read the data that the BR/EDR Controller sends in the extended inquiry response packet during inquiry response.

C.205

E

Read Extended Page Timeout command

4.1

The HCI_Read_Extended_Page_Timeout command is used to read the Extended Page Timeout parameter from the Controller.

C.114

E

Read Failed Contact Counter command

1.1

The HCI_Read_Failed_Contact_Counter command will read the value for the Failed Contact Counter configuration parameter for a particular connection to another device.

M

E

Read Flow Control Mode command

3.0 + HS

The HCI_Read_Flow_Control_Mode command returns the value of the Flow_Control_Mode configuration parameter supported by this Controller.

C.124

E

Read Hold Mode Activity command

1.1

The HCI_Read_Hold_Mode_ Activity command is used to read which activities should be suspended when the BR/EDR Controller is in Hold mode.

C.213

E

Read Inquiry Mode command

1.2

The HCI_Read_Inquiry_Mode command is used to read the Inquiry Mode configuration parameter of the local BR/EDR Controller.

C.115

E

Read Inquiry Response Transmit Power Level command

2.1 + EDR

The HCI_Read_Inquiry_Response_Transmit_Power_Level command will read the inquiry response Transmit Power level used to transmit the FHS and EIR data packets. This can be used directly in the Tx Power Level EIR data type.

C.125

E

Read Inquiry Scan Activity command

1.1

The HCI_Read_Inquiry_Scan_Activity command will read the value for Inquiry Scan Interval and Inquiry Scan Window configuration parameters. Inquiry Scan Interval defines the amount of time between consecutive inquiry scans. Inquiry Scan Window defines the amount of time for the duration of the inquiry scan.

C.125

E

Read Inquiry Scan Type command

1.2

The HCI_Read_Inquiry_Scan_Type command is used to read the Inquiry Scan Type configuration parameter of the local BR/EDR Controller. The Inquiry Scan Type configuration parameter can set the inquiry scan to either normal or interlaced scan.

C.125

E

Read LE Host Support command

4.0

The HCI_Read_LE_Host_Support command reads the LE Supported Host setting from the BR/EDR Controller.

C.116

E

Read Link Policy Settings command

1.1

The HCI_Read_Link_Policy_Settings command will read the Link Policy configuration parameter for the specified Connection_Handle. The Link Policy settings allow the Host to specify which Link Modes the Link Manager can use for the specified Connection_Handle.

C.141

E

Read Link Quality command

1.1

The HCI_Read_Link_Quality command will read the value for the Link Quality for the specified Connection_Handle.

O

E

Read Link Supervision Timeout command

1.1

The HCI_Read_Link_Supervision_Timeout command will read the value for the Link Supervision Timeout configuration parameter for the device. This parameter is used by the Controller to determine link loss.

C.117

E

Read LMP Handle command

1.2

The HCI_Read_LMP_Handle command will read the current LMP Handle associated with the Connection_Handle.

C.134

E

Read Local Extended Features command

1.2

The HCI_Read_Local_Extended_Features command requests a list of the supported extended features for the local device.

C.220

E

Read Local Name command

1.1

The HCI_Read_Local_Name command provides the ability to read the stored user-friendly name for the BR/EDR Controller.

M

E

Read Local OOB Data command

2.1 + EDR

The HCI_Read_Local_OOB_Data command is used to obtain a Secure Simple Pairing Hash C and Randomizer R which are intended to be transferred to a remote device using an OOB mechanism.

M

E

Read Local OOB Extended Data command

4.1

The HCI_Read_Local_OOB_Extended_Data command is used to obtain a Secure Simple Pairing Hash C and Randomizer R associated with both P-192 and P-256 public keys, which are intended to be transferred to a remote device using an OOB mechanism.

C.142

E

Read Local Simple Pairing Options command

Erratum 10734

The HCI_Read_Local_Simple_Pairing_Options command is used to read the Secure Simple Pairing options and the maximum encryption key size supported.

O

E

Read Local Supported Codec Capabilities command

5.2

The HCI_Read_Local_Supported_Codec_Capabilities command is used by a Host to query codec capabilities.

C.156

C.156

Read Local Supported Codecs command

CSA2

5.2

The HCI_Read_Local_Supported_Codecs command is used by a Host to query a Controller’s supported codecs.

[v1]

C.157

[v2]

O

[v1]

E

[v2]

O

Read Local Supported Commands command

1.2

The HCI_Read_Local_Supported_Commands command requests a list of the supported HCI commands for the local device.

M

M

Read Local Supported Controller Delay command

5.2

The HCI_Read_Local_Supported_Controller_Delay command is used by a Host to query a range of supported Controller delays for a given codec configuration.

C.156

C.156

Read Local Supported Features command

1.1

The HCI_Read_Local_Supported_Features command requests a list of the supported features for the local device.

M

M

Read Local Version Information command

1.1

The HCI_Read_Local_Version_Information command will read the version information for the local Controller.

M

M

Read Loopback Mode command

1.1

The HCI_Read_Loopback_Mode command will read the value for the setting of the BR/EDR Controller’s Loopback Mode. The setting of the Loopback Mode will determine the path of information.

C.123

E

Read Num Broadcast Retransmissions command

1.1

The HCI_Read_Num_Broadcast_Retransmissions command will read the parameter value for the Number of Broadcast Retransmissions for the BR/EDR Controller.

C.118

E

Read Number Of Supported IAC command

1.1

The HCI_Read_Number_Of_Supported_IAC command will read the value for the number of Inquiry Access Codes (IAC) that the local BR/EDR Controller can simultaneously listen for during an Inquiry Scan.

C.125

E

Read Page Scan Activity command

1.1

The HCI_Read_Page_Scan_Activity command will read the values for the Page Scan Interval and Page Scan Window configuration parameters. Page Scan Interval defines the amount of time between consecutive page scans. Page Scan Window defines the duration of the page scan.

M

E

Read Page Scan Type command

1.2

The HCI_Read_Page_Scan_Type command is used to read the page scan type of the local BR/EDR Controller. The Page Scan Type configuration parameter can set the page scan to either normal or interlaced scan.

C.119

E

Read Page Timeout command

1.1

The HCI_Read_Page_Timeout command will read the value for the Page Reply Timeout configuration parameter, which determines the time the BR/EDR Controller will wait for the remote device to respond to a connection request before the local device returns a connection failure.

M

E

Read PIN Type command

1.1

The HCI_Read_PIN_Type command is used for the Host to read the value that is specified to indicate whether the Host supports variable PINs or only fixed PINs.

C.120

E

Read Remote Extended Features command

1.2

The HCI_Read_Remote_Extended_Features command requests a list of the supported extended features of a remote device.

C.220

E

Read Remote Extended Features Complete event

1.2

The HCI_Read_Remote_Extended_Features_Complete event is used to indicate the completion of the process of the Link Manager obtaining the supported Extended features of the remote BR/EDR Controller specified by the Connection_Handle event parameter.

C.220

E

Read Remote Supported Features command

1.1

The HCI_Read_Remote_Supported_Features command requests a list of the supported features of a remote device.

M

E

Read Remote Supported Features Complete event

1.1

The HCI_Read_Remote_Supported_Features_Complete event is used to indicate the completion of the process of the Link Manager obtaining the supported features of the remote BR/EDR Controller specified by the Connection_Handle event parameter.

M

E

Read Remote Version Information command

1.1

The HCI_Read_Remote_Version_Information command will read the values for the version information for the remote device associated with the Connection_Handle.

O

C.3

Read Remote Version Information Complete event

1.1

The HCI_Read_Remote_Version_Information_Complete event is used to indicate the completion of the process of the Link Manager obtaining the version information of the remote device associated with the Connection_Handle event parameter.

C.105

C.3

Read RSSI command

1.1

The HCI_Read_RSSI command will read the value for the Received Signal Strength Indication (RSSI) for a Connection_Handle to another Controller.

O

C.3

Read Scan Enable command

1.1

The HCI_Read_Scan_Enable command will read the value for the Scan Enable configuration parameter, which controls whether or not the BR/EDR Controller will periodically scan for page attempts and/or inquiry requests from other BR/EDR Controllers.

M

E

Read Secure Connections Host Support command

4.1

The HCI_Read_­Secure_­Connections_­Host_­Support command is used to read the Secure Connections Host Supports parameter from the Controller.

C.218

E

Read Simple Pairing Mode command

2.1 + EDR

The HCI_Read_Simple_Pairing_Mode command reads the Secure Simple Pairing mode setting in the BR/EDR Controller.

M

E

Read Stored Link Key command

1.1

The HCI_Read_Stored_Link_Key command provides the ability to read whether one or more link keys are stored in the Controller.

C.121

E

Read Synchronization Train Parameters command

CSA4

The HCI_Read_Synchronization_Train_Parameters command returns the currently configured values for the Synchronization Train functionality in the BR/EDR Controller.

C.201

E

Read Synchronous Flow Control Enable command

1.1

The HCI_Read_Synchronous_Flow_Control_Enable command provides the ability to read the Synchronous Flow Control Enable setting. By using this setting, the Host can decide if the Controller will send HCI_Number_Of_Completed_Packets events for synchronous Connection_Handles.

C.122

E

Read Transmit Power Level command

1.1

The HCI_Read_Transmit_Power_Level command will read the values for the Transmit Power Level parameter for the specified Connection_Handle.

C.152

C.3

Read Voice Setting command

1.1

The HCI_Read_Voice_Setting command will read the values for the Voice Setting configuration parameter, which controls all the various settings for the voice connections.

C.134

E

Receive Synchronization Train command

CSA4

The HCI_Receive_Synchronization_Train command requests synchronization with the specified Connectionless Peripheral Broadcast transmitter.

C.202

E

Refresh Encryption Key command

2.1 + EDR

The HCI_Refresh_Encryption_Key command is used by the Host to cause the Controller to refresh the encryption key by pausing and resuming encryption

M

E

Reject Connection Request command

1.1

The HCI_Reject_Connection_Request command is used to decline a new incoming BR/EDR connection request.

M

E

Reject Synchronous Connection Request command

1.2

The HCI_Reject_Synchronous_Connection_Request command is used to decline an incoming request for a synchronous link.

C.134

E

Remote Host Supported Features Notification event

2.1 + EDR

The HCI_Remote_Host_Supported_Features_Notification event is used to return the LMP extended features page containing the Host features.

C.106

E

Remote Name Request Cancel command

1.2

The HCI_Remote_Name_Request_Cancel command is used to cancel an ongoing Remote Name Request.

C.106

E

Remote Name Request command

1.1

The HCI_Remote_Name_Request command is used to obtain the user-friendly name of another BR/EDR Controller.

O

E

Remote Name Request Complete event

1.1

The HCI_Remote_Name_Request_Complete event is used to indicate a remote name request has been completed.

C.106

E

Remote OOB Data Request event

2.1 + EDR

The HCI_Remote_OOB_Data_Request event is used to indicate that the Secure Simple Pairing Hash C and Randomizer R is required for the Secure Simple Pairing process involving the device identified by BD_ADDR.

M

E

Remote OOB Data Request Negative Reply command

2.1 + EDR

The HCI_Remote_OOB_Data_Request_Negative_Reply command is used to reply to an HCI_Remote_OOB_Data_Request event that the Host does not have the C and R

M

E

Remote OOB Data Request Reply command

2.1 + EDR

The HCI_Remote_OOB_Data_Request_Reply command is used to reply to an HCI_Remote_OOB_Data_Request event with the C and R values received via an OOB transfer from a remote BR/EDR Controller identified by BD_ADDR.

M

E

Remote OOB Extended Data Request Reply command

4.1

The HCI_Remote_OOB_Extended_Data_Request_Reply command is used to reply to an HCI_Remote_­OOB_­Data_­Request event with the C and R values received via an OOB transfer from a remote BR/EDR Controller identified by the BD_ADDR.

C.142

E

Reset command

1.1

For a BR/EDR Controller, the HCI_Reset command resets HCI, the Link Manager, and the Bluetooth radio. For an LE Controller, the HCI_Reset command resets HCI, the Link Layer, and LE PHY.

M

M

Reset Failed Contact Counter command

1.1

The HCI_Reset_Failed_Contact_Counter command will reset the value for the Failed Contact Counter configuration parameter for a particular connection to another device.

M

E

Return Link Keys event

1.1

The HCI_Return_Link_Keys event is used to return stored link keys after an HCI_Read_Stored_Link_Key command is used.

C.121

E

Role Change event

1.1

The HCI_Role_Change event is used to indicate that the current BR/EDR Controller role related to the particular connection has been changed.

C.212

E

Role Discovery command

1.1

The HCI_Role_Discovery command is used for a BR/EDR Controller to determine which role the device is performing for a particular Connection_Handle.

O

E

SAM Status Change event

5.0

The HCI_SAM_Status_Change event is used to indicate that either the local or remote SAM slot map on a particular connection has been changed.

C.219

E

Send Keypress Notification command

2.1 + EDR

The HCI_Send_Keypress_Notification command is used during the Passkey Entry protocol by a device with KeyboardOnly IO capabilities. It is used by a Host to inform the remote device when keys have been entered or erased.

M

E

Set AFH Host Channel Classification command

1.2

The HCI_Set_AFH_Host_Channel_Classification command allows the Host to specify a channel classification based on its “local information”.

C.140

E

Set Connection Encryption command

1.1

The HCI_Set_Connection_Encryption command is used to enable and disable the link level encryption.

M

E

Set Connectionless Peripheral Broadcast command

CSA4

The HCI_Set_Connectionless_Peripheral_Broadcast command controls Connectionless Peripheral Broadcast functionality (for transmission) in the BR/EDR Controller including enabling and disabling the broadcast.

C.201

E

Set Connectionless Peripheral Broadcast Data command

CSA4

The HCI_Set_Connectionless_Peripheral_Broadcast_Data command is used by the Host to set Connectionless Peripheral Broadcast data in the BR/EDR Controller.

C.201

E

Set Connectionless Peripheral Broadcast Receive command

CSA4

The HCI_Set_Connectionless_Peripheral_Broadcast_Receive command enables and disables Connectionless Peripheral Broadcast reception in the BR/EDR Controller.

C.202

E

Set Controller To Host Flow Control command

1.1

The HCI_Set_Controller_To_Host_Flow_Control command is used by the Host to turn flow control on or off in the direction from the Controller to the Host.

O

C.96

Set Ecosystem Base Interval command

5.2

The HCI_Set_Ecosystem_Base_Interval command indicates to the Controller the base interval of the ecosystem.

O

O

Set Event Filter command

1.1

The HCI_Set_Event_Filter command is used by the Host to specify different event filters. The Host may issue this command multiple times to request various conditions for the same type of event filter and for different types of event filters.

C.148

E

Set Event Mask command

1.1

The HCI_Set_Event_Mask command is used to control which events are generated by the HCI for the Host.

M

M

Set Event Mask Page 2 command

3.0 + HS

The HCI_Set_Event_Mask_Page 2 command is used to control which events are generated by the HCI for the Host.

C.145

C.145

Set External Frame Configuration command

CSA3

The HCI_Set_External_Frame_Configuration command enables an external device to describe a frame structure to the Controller.

C.108

O

Set Min Encryption Key Size command

5.3

The HCI_Set_Min_Encryption_Key_Size command is used to modify the minimum encryption key size that may be negotiated by the Controller.

O

E

Set MWS Channel Parameters command

CSA3

The HCI_Set_MWS_Channel_Parameters command enables an MWS device to inform the Controller about the MWS channel configuration.

O

O

Set MWS Scan Frequency Table command

CSA3

The HCI_Set_MWS_Scan_Frequency_Table command specifies the frequencies represented by the frequency index supplied by the MWS_SCAN_FREQUENCY signal.

O

O

Set MWS Signaling command

CSA3

The HCI_Set_MWS_Signaling command enables an MWS device to inform the Controller about the timing parameters for the MWS coexistence interface.

O

O

Set MWS Transport Layer command

CSA3

The HCI_Set_MWS_Transport_Layer command selects the MWS coexistence signaling transport layer in the Controller.

C.109

C.109

Set MWS_PATTERN Configuration command

CSA3

The HCI_Set_MWS_PATTERN_Configuration command specifies the configuration of the pattern indicated over the MWS Coexistence Transport Layer.

C.136

E

Set Reserved LT_ADDR command

CSA4

The HCI_Set_Reserved_LT_ADDR command requests that the BR/EDR Controller reserve a specific LT_ADDR for the purposes of Connectionless Peripheral Broadcast.

C.201

E

Set Triggered Clock Capture command

CSA4

The HCI_Set_Triggered_Clock_Capture command is used to configure the Controller to return events containing an estimate of a piconet or the local Bluetooth clock.

O

E

Setup Synchronous Connection command

1.2

The HCI_Setup_Synchronous_Connection command adds a new or modifies an existing synchronous logical transport (SCO or eSCO) on a physical link depending on the Connection_Handle parameter specified.

C.134

E

Simple Pairing Complete event

2.1 + EDR

The HCI_Simple_Pairing_Complete event is used to indicate that the Secure Simple Pairing process has completed.

M

E

Sniff Mode command

1.1

The HCI_Sniff_Mode command is used to alter the behavior of the LM and have the LM place the local or remote device into Sniff mode.

C.214

E

Sniff Subrating command

2.1 + EDR

The HCI_Sniff_Subrating command is used to configure the sniff subrating parameters in the local device.

C.221

E

Sniff Subrating event

2.1 + EDR

The HCI_Sniff_Subrating event is used to inform the Host of the local and remote transmit and receive latencies.

C.221

E

Start Synchronization Train command

CSA4

The HCI_Start_Synchronization_Train command enables the Synchronization Train on the BR/EDR Controller using the currently configured Synchronization Train parameters.

C.201

E

Switch Role command

1.1

The HCI_Switch_Role command is used to switch Central and Peripheral roles of the devices on either side of a connection.

C.212

E

Synchronization Train Complete event

CSA4

The HCI_Synchronization_Train_Complete event indicates that the Synchronization Train has completed.

C.201

E

Synchronization Train Received event

CSA4

The HCI_Synchronization_Train_Received event provides the status of Synchronization Train packets received from the device with the given BD_ADDR.

C.202

E

Synchronous Connection Changed event

1.2

The HCI_Synchronous_Connection_Changed event indicates to the Host that an existing synchronous connection has been reconfigured.

C.134

E

Synchronous Connection Complete event

1.2

The HCI_Synchronous_Connection_Complete event indicates to both the Hosts that a new synchronous connection has been established.

C.134

E

Triggered Clock Capture event

CSA4

The HCI_Triggered_Clock_Capture event reports the Bluetooth clock when an external trigger occurred.

C.110

E

Truncated Page Cancel command

CSA4

The HCI_Truncated_Page_Cancel command is used to cancel an ongoing Truncated Page.

C.129

E

Truncated Page command

CSA4

The HCI_Truncated_Page command will cause the BR/EDR Controller to page the BR/EDR Controller with the BD_ADDR specified by the command parameters and abort the page sequence after receiving the ID response packet.

C.129

E

Truncated Page Complete event

CSA4

The HCI_Truncated_Page_Complete event indicates to the Host that a Truncated Page has completed.

C.129

E

User Confirmation Request event

2.1 + EDR

The HCI_User_Confirmation_Request event is used to indicate that user confirmation of a numeric value is required.

M

E

User Confirmation Request Negative Reply command

2.1 + EDR

The HCI_User_Confirmation_Request_Negative_Reply command is used to reply to an HCI_User_­Confirmation_­Request event and indicates that the user selected “no”. This command will terminate Secure Simple Pairing.

M

E

User Confirmation Request Reply command

2.1 + EDR

The HCI_User_Confirmation_Request_Reply command is used to reply to an HCI_User_Confirmation_Request event and indicates that the user selected “yes”. It is also used when the Host has no input and no output capabilities.

M

E

User Passkey Notification event

2.1 + EDR

The HCI_User_Passkey_Notification event is used to provide a passkey for the Host to display to the user as required as part of a Secure Simple Pairing process.

M

E

User Passkey Request event

2.1 + EDR

The HCI_User_Passkey_Request event is used to indicate that a passkey is required as part of a Secure Simple Pairing process.

M

E

User Passkey Request Negative Reply command

2.1 + EDR

The HCI_User_Passkey_Request_Negative_Reply command is used to reply to an HCI_User_Passkey_Request event and indicates the Host could not provide a passkey. This command will terminate Secure Simple Pairing.

M

E

User Passkey Request Reply command

2.1 + EDR

The HCI_User_Passkey_Request_Reply command is used to reply to an HCI_User_Passkey_Request event and specifies the Numeric_Value (passkey) entered by the user to be used in the Secure Simple Pairing process.

M

E

Write AFH Channel Assessment Mode command

1.2

The HCI_Write_AFH_Channel_Assessment_Mode command will write the value for the Channel Classification Mode configuration parameter. This value is used to enable or disable the Controller’s channel assessment scheme.

C.140

C.58

Write Authenticated Payload Timeout command

4.1

The HCI_Write_Authenticated_Payload_Timeout command is used to write the Authenticated Payload Timeout parameter, which is used to set the maximum time between packets being received from the remote device without a valid MIC.

C.151

C.7

Write Authentication Enable command

1.1

The HCI_Write_Authentication_Enable command will write the value for the Authentication Enable parameter, which controls whether the Bluetooth device will require authentication for each connection with other Bluetooth devices.

O

E

Write Automatic Flush Timeout command

1.1

The HCI_Write_Automatic_Flush_Timeout command will write the value for the Flush Timeout configuration parameter for the specified Connection_Handle. The Flush Timeout parameter is only used for ACL connections.

M

E

Write Class of Device command

1.1

The HCI_Write_Class_of_Device command will write the value for the Class_of_Device configuration parameter, which is used to indicate its capabilities to other devices.

M

E

Write Connection Accept Timeout command

1.1

The HCI_Write_Connection_Accept_Timeout command will write the value for the Connection Accept Timeout configuration parameter, which allows the Controller to automatically deny a connection request after a specified period has occurred, and to refuse a new connection.

M

C.40

Write Current IAC LAP command

1.1

The HCI_Write_Current_IAC_LAP command will write the LAP(s) used to create the Inquiry Access Codes (IAC) that the local BR/EDR Controller is simultaneously scanning for during Inquiry Scans.

C.125

E

Write Default Erroneous Data Reporting command

2.1 + EDR

The HCI_Write_Default_Erroneous_Data_Reporting command will write the value for the Erroneous Data Reporting configuration parameter, which controls whether the Bluetooth Controller will provide data for every (e)SCO interval, with the Packet_Status_Flag in HCI Synchronous Data packets set according to HCI Synchronous Data packets.

C.135

E

Write Default Link Policy Settings command

1.2

The HCI_Write_Default_Link_Policy_Settings command will write the Default Link Policy configuration parameter for all new connections.

C.141

E

Write Extended Inquiry Length command

4.1

The HCI_Write_Extended_Inquiry_Length command is used to write the Extended Inquiry Length parameter to the Controller.

C.128

E

Write Extended Inquiry Response command

2.1 + EDR

The HCI_Write_Extended_Inquiry_Response command will write the data that the BR/EDR Controller sends in the extended inquiry response packet during inquiry response.

C.205

E

Write Extended Page Timeout command

4.1

The HCI_Write_Extended_Page_Timeout command is used to write the Extended Page Timeout parameter to the Controller.

O

E

Write Flow Control Mode command

3.0 + HS

The HCI_Write_Flow_Control_Mode command sets the value of the Flow_Control_Mode configuration parameter for this Controller.

C.124

E

Write Hold Mode Activity command

1.1

The HCI_Write_Hold_Mode_Activity command is used to write which activities should be suspended when the BR/EDR Controller is in Hold mode.

C.213

E

Write Inquiry Mode command

1.2

The HCI_Write_Inquiry_Mode command is used to write the Inquiry Mode configuration parameter of the local BR/EDR Controller.

C.146

E

Write Inquiry Scan Activity command

1.1

The HCI_Write_Inquiry_Scan_Activity command will write the value for Inquiry Scan Interval and Inquiry Scan Window configuration parameters. Inquiry Scan Interval defines the amount of time between consecutive inquiry scans. Inquiry Scan Window defines the amount of time for the duration of the inquiry scan.

C.125

E

Write Inquiry Scan Type command

1.2

The HCI_Write_Inquiry_Scan_Type command is used to write the Inquiry Scan Type configuration parameter of the local BR/EDR Controller. The Inquiry Scan Type configuration parameter can set the inquiry scan to either normal or interlaced scan.

C.125

E

Write Inquiry Transmit Power Level command

2.1 + EDR

The HCI_Write_Inquiry_Transmit_Power_Level command is used to write the transmit power level used to transmit the inquiry (ID) data packets.

C.127

E

Write LE Host Support command

4.0

The HCI_Write_LE_Host_Support command writes the LE Supported Host setting to the BR/EDR Controller.

C.153

E

Write Link Policy Settings command

1.1

The HCI_Write_Link_Policy_Settings command will write the Link Policy configuration parameter for the specified Connection_Handle. The Link Policy settings allow the Host to specify which Link Modes the Link Manager can use for the specified Connection_Handle.

C.141

E

Write Link Supervision Timeout command

1.1

The HCI_Write_Link_Supervision_Timeout command will write the value for the Link Supervision Timeout configuration parameter for the device. This parameter is used by the Controller to determine link loss.

O

E

Write Local Name command

1.1

The HCI_Write_Local_Name command provides the ability to modify the user-friendly name for the BR/EDR Controller.

M

E

Write Loopback Mode command

1.1

The HCI_Write_Loopback_Mode command will write the value for the setting of the BR/EDR Controllers Loopback Mode. The setting of the Loopback Mode will determine the path of information.

C.123

E

Write Num Broadcast Retransmissions command

1.1

The HCI_Write_Num_Broadcast_Retransmissions command will write the parameter value for the Number of Broadcast Retransmissions for the BR/EDR Controller.

O

E

Write Page Scan Activity command

1.1

The HCI_Write_Page_Scan_Activity command will write the value for Page Scan Interval and Page Scan Window configuration parameters. Page Scan Interval defines the amount of time between consecutive page scans. Page Scan Window defines the duration of the page scan.

M

E

Write Page Scan Type command

1.2

The HCI_Write_Page_Scan_Type command is used to write the page scan type of the local BR/EDR Controller. The Page Scan Type configuration parameter can set the page scan to either normal or interlaced scan.

C.154

E

Write Page Timeout command

1.1

The HCI_Write_Page_Timeout command will write the value for the Page Reply Timeout configuration parameter, which allows the BR/EDR Controller to define the amount of time a connection request will wait for the remote device to respond before the local device returns a connection failure.

M

E

Write PIN Type command

1.1

The HCI_Write_PIN_Type command is used for the Host to specify whether the Host supports variable PIN or only fixed PINs.

O

E

Write Scan Enable command

1.1

The HCI_Write_Scan_Enable command will write the value for the Scan Enable configuration parameter, which controls whether or not the BR/EDR Controller will periodically scan for page attempts and/or inquiry requests from other BR/EDR Controllers.

M

E

Write Secure Connections Host Support command

4.1

The HCI_Write_­Secure_­Connections_­Host_­Support command is used to write the Secure Connections Host Supports parameter to the Controller.

C.218

E

Write Secure Connections Test Mode command

4.1

The HCI_Write_­Secure_­Connections_­Test_­Mode command is used to put the Controller in a test mode where DM1 packets are not allowed to be used for ACL-U traffic and/or the contents of eSCO payloads can be looped back.

C.138

E

Write Simple Pairing Debug Mode command

2.1 + EDR

The HCI_Write_Simple_Pairing_Debug_Mode command configures the BR/EDR Controller to use a predefined Diffie Hellman private key for Secure Simple Pairing to enable debug equipment to monitor the encrypted connection.

M

E

Write Simple Pairing Mode command

2.1 + EDR

The HCI_Write_Simple_Pairing_Mode command writes the Secure Simple Pairing mode setting in the BR/EDR Controller.

M

E

Write Stored Link Key command

1.1

The HCI_Write_Stored_Link_Key command provides the ability to write one or more link keys to be stored in the Controller.

O

E

Write Synchronization Train Parameters command

CSA4

The HCI_Write_Synchronization_Train_Parameters command configures the Synchronization Train functionality in the BR/EDR Controller.

C.201

E

Write Synchronous Flow Control Enable command

1.1

The HCI_Write_Synchronous_Flow_Control_Enable command provides the ability to write the Synchronous Flow Control Enable setting. By using this setting, the Host can decide if the Controller will send HCI_Number_­Of_­Completed_­Packets events for synchronous Connection_Handles.

C.135

E

Write Voice Setting command

1.1

The HCI_Write_Voice_Setting command will write the values for the Voice Setting configuration parameter, which controls all the various settings for the voice connections.

C.134

E

Table 3.1: Alphabetical list of commands and events


C.1:

Mandatory if the LE Controller supports transmitting packets, otherwise excluded.

C.2:

Mandatory if the LE Controller supports receiving packets, otherwise excluded.

C.3:

Mandatory if the LE Controller supports Connection State, otherwise excluded.

C.4:

Mandatory if LE Feature (LE Encryption) is supported, otherwise excluded.

C.6:

Mandatory if LE Feature (Connection Parameters Request procedure) is supported, otherwise excluded.

C.7:

Mandatory if LE Feature (LE Encryption) and LE Feature (LE Ping) are supported, otherwise excluded.

C.8:

Mandatory if LE Feature (LE Data Packet Length Extension) is supported, otherwise optional.

C.9:

Mandatory if LE Feature (LL Privacy) is supported, otherwise excluded.

C.10:

Optional if LE Feature (LL Privacy) is supported, otherwise excluded.

C.11:

Mandatory if LE Feature (LE 2M PHY) or LE Feature (LE Coded PHY) is supported, otherwise optional.

C.12:

Mandatory if LE Feature (LE 2M PHY) or LE Feature (LE Coded PHY) or LE Feature (Stable Modulation Index - Transmitter) is supported, otherwise optional if the LE Controller supports transmitting packets, otherwise excluded.

C.13:

Mandatory if LE Feature (LE 2M PHY) or LE Feature (LE Coded PHY) or LE Feature (Stable Modulation Index - Receiver) is supported, otherwise optional if the LE Controller supports receiving packets, otherwise excluded.

C.15:

Mandatory if LE Controller supports transmitting scannable advertisements, otherwise excluded.

C.16:

Mandatory if LE Feature (Periodic Advertising) is supported and the LE Controller supports both Scanning State and Synchronization State, otherwise excluded.

C.17:

Mandatory if LE Feature (Extended Advertising) is supported and the LE Controller supports Advertising State, otherwise excluded.

C.18:

Mandatory if LE Feature (Periodic Advertising) is supported and the LE Controller supports Advertising State, otherwise excluded.

C.19:

Mandatory if LE Feature (Extended Advertising) is supported and the LE Controller supports Scanning State, otherwise excluded.

C.20:

Mandatory if LE Feature (Extended Advertising) is supported and the LE Controller supports Initiating State, otherwise excluded.

C.21:

Mandatory if LE Feature (Periodic Advertising) is supported and the LE Controller supports Synchronization State, otherwise excluded.

C.22:

Mandatory if the LE Controller supports sending Transmit Power in advertisements or if LE Feature (LE Power Control Request) is supported, otherwise optional.

C.23:

Mandatory if LE Feature (LE Channel Selection Algorithm #2) is supported, otherwise excluded.

C.24:

Mandatory if the LE Controller supports Connection State and either LE Feature (LL Privacy) or LE Feature (Extended Advertising) is supported, otherwise optional if the LE Controller supports Connection State, otherwise excluded.

C.25:

Mandatory if LE Feature (Connection CTE Request) is supported, otherwise excluded.

C.26:

Mandatory if LE Feature (Connection CTE Response) is supported, otherwise excluded.

C.27:

Mandatory if LE Feature (Connectionless CTE Transmitter) is supported, otherwise excluded.

C.28:

Mandatory if LE Feature (Connectionless CTE Receiver) is supported, otherwise excluded.

C.29:

Mandatory if LE Feature (Connection CTE Response) or LE Feature (Connectionless CTE Transmitter) is supported, otherwise optional if the LE Controller supports transmitting packets, otherwise excluded.

C.30:

Mandatory if LE Feature (Connection CTE Request) or LE Feature (Connectionless CTE Receiver) is supported, otherwise optional if the LE Controller supports receiving packets, otherwise excluded.

C.31:

Mandatory if LE Feature (Connection CTE Request) or LE Feature (Connection CTE Response) or LE Feature (Connectionless CTE Transmitter) or LE Feature (Connectionless CTE Receiver) is supported, otherwise excluded.

C.32:

Mandatory if LE Feature (Periodic Advertising Sync Transfer – Recipient) is supported, otherwise optional if LE Feature (Periodic Advertising) is supported and the LE Controller supports Synchronization State, otherwise excluded.

C.33:

Mandatory if LE Feature (Periodic Advertising Sync Transfer – Sender) is supported and the LE Controller supports Scanning State, otherwise excluded.

C.34:

Mandatory if LE Feature (Periodic Advertising Sync Transfer – Sender) is supported and the LE Controller supports Advertising State, otherwise excluded.

C.35:

Mandatory if LE Feature (Periodic Advertising Sync Transfer – Recipient) is supported, otherwise excluded.

C.36:

Mandatory if the LE Controller supports Central role or supports both Peripheral role and LE Feature (Channel Classification), otherwise optional if LE Feature (Extended Advertising) is supported and the LE Controller supports Advertising State or if LE Feature (Isochronous Broadcaster) is supported, otherwise excluded.

C.37:

Mandatory if the LE Controller can change its sleep clock accuracy, otherwise excluded.

C.38:

Mandatory if LE Feature (Connected Isochronous Stream - Central) or LE Feature (Connected Isochronous Stream - Peripheral) is supported, otherwise excluded.

C.39:

Mandatory if LE Feature (Connected Isochronous Stream - Central) is supported, otherwise excluded.

C.40:

Mandatory if LE Feature (Connected Isochronous Stream - Peripheral) is supported, otherwise excluded.

C.41:

Mandatory if LE Feature (Isochronous Broadcaster) is supported, otherwise excluded.

C.42:

Mandatory if LE Feature (Synchronized Receiver role) is supported, otherwise excluded.

C.44:

Mandatory if LE Feature (Sleep Clock Accuracy Updates) and either LE Feature (Connected Isochronous Stream - Central) or LE Feature (Connected Isochronous Stream - Peripheral) are supported, otherwise optional if LE Feature (Sleep Clock Accuracy Updates) is supported, otherwise excluded.

C.45:

Mandatory if LE Feature (Connected Isochronous Stream - Central), or LE Feature (Connected Isochronous Stream - Peripheral), or LE Feature (Isochronous Broadcaster) is supported, otherwise excluded.

C.46:

Mandatory if LE Feature (Connected Isochronous Stream - Central), or LE Feature (Connected Isochronous Stream - Peripheral), or LE Feature (Synchronized Receiver role) is supported, otherwise excluded.

C.47:

Mandatory if LE Feature (Connected Isochronous Stream - Central), or LE Feature (Connected Isochronous Stream - Peripheral), or LE Feature (Isochronous Broadcaster), or LE Feature (Synchronized Receiver role) is supported, otherwise excluded.

C.49:

Mandatory if LE Feature (Connected Isochronous Stream - Central) or LE Feature (Connected Isochronous Stream - Peripheral) or LE Feature (Connection Subrating) is supported, otherwise optional.

C.50:

Optional if LE Feature (Connected Isochronous Stream - Central), or LE Feature (Connected Isochronous Stream - Peripheral), or LE Feature (Synchronized Receiver role) is supported, otherwise excluded.

C.51:

Mandatory if LE Feature (LE Power Control Request) is supported, otherwise excluded.

C.52:

Mandatory if LE Feature (LE Path Loss Monitoring) is supported, otherwise excluded.

C.53:

Mandatory if LE Feature (LE Power Control Request) is supported, otherwise optional if the LE Controller supports transmitting packets, otherwise excluded.

C.54:

Mandatory if LE Feature (Synchronized Receiver) is supported, otherwise optional.

C.55:

Mandatory if LE Feature (Connected Isochronous Stream - Central), or LE Feature (Connected Isochronous Stream - Peripheral), or LE Feature (Isochronous Broadcaster) is supported, otherwise optional if the LE Controller supports Connection State, otherwise excluded.

C.56:

Optional if LE Feature (LE Encryption) is supported, otherwise excluded.

C.57:

Mandatory if LE Feature (Connection Subrating) is supported, otherwise excluded.

C.58:

Mandatory if LE Feature (Channel Classification) is supported, otherwise excluded.

C.59:

Mandatory if the LE Controller supports Central role, otherwise excluded.

C.60:

Mandatory if the LE Controller supports Central role and LE Feature (LE Encryption), otherwise excluded.

C.61:

Mandatory if the LE Controller supports Peripheral role and LE Feature (LE Encryption), otherwise excluded.

C.62:

Mandatory if the LE Controller supports Central role or supports both Peripheral role and LE Feature (Connection Parameters Request Procedure), otherwise excluded.

C.63:

Mandatory if the LE Controller supports Scanning state and LE Feature (LL Privacy), otherwise excluded.

C.64:

Optional if the Controller supports transmitting packets, otherwise excluded.

C.65:

Mandatory if LE Set Extended Advertising Parameters command [v2] is supported, otherwise mandatory if LE Feature (Extended Advertising) is supported and the LE Controller supports Advertising State, otherwise excluded.

C.66:

Mandatory if LE Feature (Advertising Coding Selection) is supported, otherwise optional if LE Feature (Extended Advertising) is supported and the LE Controller supports Advertising state, otherwise excluded.

C.67:

Mandatory if LE Feature (Periodic Advertising with Responses - Advertiser) is supported, otherwise excluded.

C.68:

Mandatory if LE Feature (Periodic Advertising with Responses - Scanner) is supported, otherwise excluded.

C.69:

Mandatory if LE Feature (Periodic Advertising with Responses - Advertiser) or LE Feature (Periodic Advertising with Responses - Scanner) is supported, otherwise excluded.

C.94:

Mandatory if the LE Create Connection or LE Extended Create Connection command is supported, otherwise excluded.

C.95:

Mandatory if the LE Request Peer SCA command is supported, otherwise excluded.

C.96:

Optional if the LE Controller supports Connection State, otherwise excluded.

C.97:

Mandatory if Advertising State is supported, otherwise excluded.

C.98:

Mandatory if Scanning State is supported, otherwise excluded.

C.99:

Mandatory if LE Generate DHKey command [v2] is supported, otherwise optional.

C.101:

Mandatory if the Authentication Requested command is supported, otherwise excluded.

C.102:

Mandatory if the Change Connection Link Key command is supported, otherwise excluded.

C.103:

Mandatory if the Periodic Inquiry Mode command is supported, otherwise excluded.

C.104:

Mandatory if the Read Clock Offset command is supported, otherwise excluded.

C.105:

Mandatory if the Read Remote Version Information command is supported, otherwise excluded.

C.106:

Mandatory if the Remote Name Request command is supported, otherwise excluded.

C.107:

Mandatory if the Set Controller To Host Flow Control command is supported, otherwise excluded.

C.108:

Mandatory if the Set MWS_PATTERN Configuration command is supported, otherwise optional.

C.109:

Mandatory if the Set MWS Signaling command is supported, otherwise excluded.

C.110:

Mandatory if the Set Triggered Clock Capture command is supported, otherwise excluded.

C.111:

Mandatory if the Write Authentication Enable command is supported, otherwise excluded.

C.112:

Mandatory if the Write Default Erroneous Data Reporting command is supported, otherwise excluded.

C.113:

Mandatory if the Write Extended Inquiry Length command is supported, otherwise excluded.

C.114:

Mandatory if the Write Extended Page Timeout command is supported, otherwise excluded.

C.115:

Mandatory if the Write Inquiry Mode command is supported, otherwise excluded.

C.116:

Mandatory if the Write LE Host Support command is supported, otherwise excluded.

C.117:

Mandatory if the Write Link Supervision Timeout command is supported, otherwise excluded.

C.118:

Mandatory if the Write Num Broadcast Retransmissions command is supported, otherwise excluded.

C.119:

Mandatory if the Write Page Scan Type command is supported, otherwise excluded.

C.120:

Mandatory if the Write PIN Type command is supported, otherwise excluded.

C.121:

Mandatory if the Write Stored Link Key command is supported, otherwise excluded.

C.122:

Mandatory if the Write Synchronous Flow Control Enable command is supported, otherwise excluded.

C.123:

Mandatory if BR/EDR test mode is supported, otherwise excluded.

C.124:

Mandatory if Data block based flow control is supported, otherwise excluded.

C.125:

Mandatory if Inquiry Scan is supported, otherwise excluded.

C.126:

Optional if Inquiry Scan is supported, otherwise excluded.

C.127:

Mandatory if Inquiry is supported, otherwise excluded.

C.128:

Optional if Inquiry is supported, otherwise excluded.

C.129:

Mandatory if Truncated page state is supported, otherwise excluded.

C.130:

Previously used

C.131:

Previously used

C.132:

Mandatory if multi-slot ACL packets are is supported, otherwise excluded.

C.133:

Mandatory if HV2, HV3, or multi-slot or EDR ACL packets are is supported, otherwise excluded.

C.134:

Mandatory if SCO or eSCO is supported, otherwise excluded.

C.135:

Optional if SCO or eSCO is supported, otherwise excluded.

C.136:

Optional if Slot Availability Mask is supported, otherwise excluded.

C.138:

Mandatory if Secure Connections (Controller) is supported, otherwise optional if eSCO is supported, otherwise excluded.

C.139:

Mandatory if the Controller is AFH capable in either role, otherwise excluded.

C.140:

Mandatory if the Controller supports AFH classification in either role or is an AFH capable Central, otherwise excluded.

C.141:

Mandatory if Role Switch, Hold mode, or Sniff mode is supported, otherwise excluded.

C.142:

Mandatory if Secure Connections (Host) is supported, otherwise excluded.

C.143:

Previously used

C.144:

Mandatory if Hold Mode or Sniff Mode is supported, otherwise excluded.

C.145:

Mandatory if any event in event mask page 2 is supported, otherwise optional.

C.146:

Mandatory if the Extended Inquiry Result event or the IO Capability Request event is supported, otherwise optional if Inquiry is supported, otherwise excluded.

C.147:

Optional if the Inquiry Result with RSSI event is supported, otherwise excluded.

C.148:

Optional if any of the Connection Complete, Connection Request, Extended Inquiry Result, Inquiry Result with RSSI, IO Capability Request, or Synchronous Connection Complete events is supported, otherwise excluded.

C.149:

Previously used

C.150:

Previously used

C.151:

Mandatory if Secure Connections (Controller) and Ping are supported, otherwise excluded.

C.152:

Mandatory if Power Control is supported, otherwise optional.

C.153:

Mandatory if LE supported in the Controller, otherwise optional.

C.154:

Mandatory if Interlaced Page Scan is supported, otherwise optional.

C.155:

Mandatory if the Write Authenticated Payload Timeout command is supported, otherwise excluded.

C.156:

Mandatory if the Read Local Supported Codecs command [v2] is supported, otherwise excluded.

C.157:

Mandatory if the Read Local Supported Codecs command [v2] is supported, otherwise optional.

C.158:

Mandatory if the Set Min Encryption Key Size command is supported, otherwise optional.

C.201:

Mandatory if Connectionless Peripheral Broadcast - Transmitter is supported, otherwise excluded.

C.202:

Mandatory if Connectionless Peripheral Broadcast - Receiver is supported, otherwise excluded.

C.203:

Previously used

C.204:

Previously used

C.205:

Mandatory if Extended Inquiry Response is supported, otherwise excluded.

C.212:

Mandatory if Role Switch is supported, otherwise excluded.

C.213:

Mandatory if Hold mode is supported, otherwise excluded.

C.214:

Mandatory if Sniff mode is supported, otherwise excluded.

C.215:

Mandatory if Broadcast Encryption is supported, otherwise excluded.

C.217:

Mandatory if BR/EDR Enhanced Power Control is supported, otherwise excluded.

C.218:

Mandatory if Secure Connections (Controller) is supported, otherwise excluded.

C.219:

Mandatory if Slot Availability Mask is supported, otherwise excluded.

C.220:

Mandatory if LMP Extended Features mask is supported, otherwise excluded.

C.221:

Mandatory if Sniff subrating is supported, otherwise excluded.

3.1. LE Controller requirements
3.1.1. Legacy and extended advertising

Table 3.2 lists the legacy and extended advertising commands and events.

If a Controller supports any legacy advertising command or event listed in the table and also supports the LE Feature (Extended Advertising), it shall support the corresponding extended advertising command or event in the same row of the table.

If, since the last power-on or reset, the Host has ever issued a legacy advertising command and then issues an extended advertising command, or has ever issued an extended advertising command and then issues a legacy advertising command, the Controller shall return the error code Command Disallowed (0x0C).

A Host should not issue legacy commands to a Controller that supports the LE Feature (Extended Advertising).

Legacy advertising command or event

Extended advertising command or event

HCI_LE_­Advertising_­Report event

HCI_LE_­Extended_­Advertising_­Report event

HCI_LE_­Directed_­Advertising_­Report event

HCI_LE_­Extended_­Advertising_­Report event

HCI_LE_­Set_­Advertising_­Parameters command

HCI_LE_­Set_­Extended_­Advertising_­Parameters command

HCI_LE_­Read_­Advertising_­Physical_­Channel_­Tx_­Power command

none

HCI_LE_­Set_­Advertising_­Data command

HCI_LE_Set_­Extended_­Advertising_­Data command

HCI_LE_­Set_­Scan_­Response_­Data command

HCI_LE_­Set_­Extended_­Scan_­Response_­Data command

HCI_LE_­Set_­Advertising_­Enable command

HCI_LE_­Set_­Extended_­Advertising_­Enable command

none

HCI_LE_­Read_­Maximum_­Advertising_­Data_­Length command

none

HCI_LE_­Read_­Number_­of_­Supported_­Advertising_­Sets command

none

HCI_LE_­Remove_­Advertising_­Set command

none

HCI_LE_­Clear_­Advertising_­Sets command

none

HCI_LE_­Set_­Periodic_­Advertising_­Parameters command

none

HCI_LE_­Set_­Periodic_­Advertising_­Data command

none

HCI_LE_­Set_­Periodic_­Advertising_­Enable command

HCI_LE_­Set_­Scan_­Parameters command

HCI_LE_­Set_­Extended_­Scan_­Parameters command

HCI_LE_­Set_­Scan_­Enable command

HCI_LE_­Set_­Extended_­Scan_­Enable command

HCI_LE_­Create_­Connection command

HCI_LE_­Extended_­Create_­Connection command

none

HCI_LE_Periodic_Advertising_Create_Sync command

none

HCI_LE_­Periodic_­Advertising_­Create_­Sync_­Cancel command

none

HCI_LE_­Periodic_­Advertising_­Terminate_­Sync command

none

HCI_LE_­Add_­Device_­To_­Periodic_­Advertiser_­List command

none

HCI_LE_­Remove_­Device_­From_­Periodic_­Advertiser_­List command

none

HCI_LE_­Clear_­Periodic_­Advertiser_­List command

none

HCI_LE_­Read_­Periodic_­Advertiser_­List_­Size command

none

HCI_LE_­Set_­Periodic_­Advertising_­Sync_­Transfer_­Parameters command

none

HCI_LE_­Set_­Default_­Periodic_­Advertising_­Sync_­Transfer_­Parameters command

none

HCI_LE_­Periodic_­Advertising_­Sync_­Transfer_­Received event

Table 3.2: Legacy and extended advertising commands and events


3.2. Underlying Support

Except as stated in this section, if a command or event is supported by a Controller then the feature underlying the command or event shall also be fully supported. If the feature applies to more than one transport, it shall be supported on all supported transports.

If the Controller supports ACL connections on BR/EDR but does not support Connection State on LE then, for each command or event that it supports that has a handle parameter, it shall only support the underlying functionality on BR/EDR (such Controllers will not support the commands or events that create LE connections and therefore all valid handles will represent BR/EDR connections).

For each of the commands and events in Table 3.3, the requirements in Table 3.1 shall be evaluated separately for each supported transport. If the requirement for a given supported transport evaluates to Mandatory, or evaluates to Optional and the Controller supports the command or event on that transport, then the underlying feature shall be fully supported on that transport. Otherwise the Controller shall not support the underlying feature on that transport and:

  • For a command, if the Host issues the command with the Handle or Connection_Handle parameter referring to a connection on that transport, the Controller shall return the error code Unsupported Feature or Parameter Value (0x11).

  • For an event, the Controller shall not generate that event with the Connection_Handle parameter referring to a connection on that transport.

HCI_Authenticated_Payload_Timeout_Expired event

HCI_Encryption_Change event

HCI_Encryption_Key_Refresh_Complete event

HCI_Read_Authenticated_Payload_Timeout command

HCI_Read_Remote_Version_Information command

HCI_Read_Remote_Version_Information_Complete event

HCI_Read_RSSI command

HCI_Read_Transmit_Power_Level command

HCI_Write_Authenticated_Payload_Timeout command

Table 3.3: Commands and events that have separate requirements for each transport


3.3. Feature Exchange

If a command has a Connection_Handle parameter, returns an HCI_Command_Status event followed by a completion event (see Section 4.4), and the specification of that command does not refer to feature exchange, then the command may perform feature exchange on the specified connection before any other procedure in order to determine whether the peer device supports a necessary feature.

4. HCI flow control

Flow control for data shall be used in the direction from the Host to the Controller to avoid overflowing the Controller data buffers with data destined for a remote device (using a Connection_Handle) that is not responding. The Host manages the data buffers of the Controller. Packet based flow control is the default for BR/EDR traffic and the only option for LE traffic. Flow control for data moving from the Controller to the Host may be in accordance with Section 4.2.

Command flow control is covered in Section 4.4 and Section 4.5.

4.1. Host to Controller data flow control

Two methods of data flow control are defined: 'packet-based' flow control and 'data-block-based' flow control, known as buffer management. Selection of the data flow control mechanism is performed with the HCI_Write_Flow_Control_Mode command (see Section 7.3.73).

If a BR/EDR/LE Controller implements separate buffers for ACL Data:

  1. The Host shall use the HCI_LE_Read_Buffer_Size command to determine the buffers that are used for ACL Data on an LE-U logical link.

  2. The Host shall use separate packet based flow control for each set of buffers.

  3. The Connection_Handle contained in the ACL Data packet shall be used by the Controller to determine which set of buffers to use and the logical link (ACL-U, APB-U, or LE-U) over which the data is to be sent.

If a BR/EDR/LE Controller does not implement separate buffers, then all ACL Data shall use the BR/EDR buffer management as described below, and only the logical link (ACL-U, APB-U, or LE-U) shall be determined by the Connection_Handle.

A packet is said to have completed when the Controller no longer needs the buffer space to store the data from the packet and has freed the corresponding buffer for re-use. This nominally happens when the data is transmitted or flushed, but can be delayed for implementation reasons or can happen early if the implementation transfers the data to other storage.

For each individual Connection_Handle, the data shall be sent to the Controller in HCI Data packets in the order in which it was provided by the Host and shall arrive at the Controller in that order.

4.1.1. Packet-based data flow control

When the packet based flow control mechanism is enabled, on initialization, a Host that supports LE shall issue the HCI_LE_Read_Buffer_Size command (see Section 7.8.2). Two of the return parameters of this command determine the maximum size of HCI ACL (excluding header) Data packets that can be used to transmit ACL data for an LE transport sent from the Host to the Controller. There is an additional return parameter that specifies the total number of HCI ACL Data packets that the Controller may have waiting for transmission in those buffers. A Controller that supports BR/EDR and LE may return zero for the total number of HCI ACL packets used to transmit ACL data for an LE transport. In this case the Host shall then send all BR/EDR and LE data using the HCI ACL Data packets into the buffers identified using the HCI_Read_Buffer_Size command. A Controller that does not support BR/EDR shall not return zero for the total number of HCI ACL packets used to transmit ACL data for an LE transport.

When the packet-based flow control mechanism is enabled, on initialization, a Host that supports isochronous data over HCI in either the Connected Isochronous Stream Central role, Connected Isochronous Stream Peripheral role, or Isochronous Broadcaster role shall issue the HCI_LE_Read_Buffer_Size command.

An HCI ISO Data packet is used to transfer isochronous data between the Host and Controller for transmission of isochronous data on an isochronous transport. The ISO_Data_Packet_Length parameter of this command specifies the maximum buffer size for each HCI ISO Data packet (excluding the header but including optional fields such as ISO_SDU_Length). The return parameter Total_Num_ISO_Data_Packets of this command specifies the maximum number of HCI ISO Data packets that the Controller can have waiting for transmission in its buffers.

Note

Note: The ISO_Data_Packet_Length and Total_Num_ISO_Data_Packets return parameters are only available when using v2 or above of the HCI_LE_Read_Buffer_Size command (see Section 7.8.2).

In a BR/EDR Controller, when the packet based flow control mechanism is enabled, on initialization, the Host shall issue the HCI_Read_Buffer_Size command. Two of the return parameters of this command determine the maximum size of HCI ACL and Synchronous Data packets (excluding header) sent from the Host to the Controller. There are also two additional return parameters that specify the total number of HCI ACL and Synchronous Data packets that the Controller may have waiting for transmission in its buffers. A Controller that supports BR/EDR shall not return zero for the total number of HCI ACL Data packets or their maximum size. A Controller that supports SCO or eSCO over HCI shall not return zero for the total number of HCI Synchronous Data packets or their maximum size.

When there is at least one connection to another device, or when in local loopback mode on a BR/EDR Controller, the Controller shall use the HCI_Number_Of_Completed_Packets event to control the flow of data from the Host. This event contains a list of Connection_Handles and a corresponding number of HCI Data packets and/or HCI ISO Data packets that have been completed since the previous time the event was returned (or since the connection was established, if the event has not been returned before for a particular Connection_Handle).

The Host chooses the Connection_Handles for the following HCI Data packets and/or HCI ISO Data packets based on the information returned in this event, and/or the HCI_LE_Read_Buffer_Size commands.

Every time it has sent an HCI Data packet, the Host shall assume that the free buffer space for the corresponding link type (ACL, SCO, or eSCO) in the Controller has decreased by one HCI Data packet.

Every time the Host sends an HCI ISO Data packet, the Host shall assume that the free buffer space for the corresponding logical link type (LE-S or LE-F) in the Controller has decreased by one HCI ISO Data packet.

Each HCI_Number_Of_Completed_Packets event received by the Host provides information about how many HCI Data packets and/or HCI ISO Data packets have been completed for each Connection_Handle since the previous HCI_Number_Of_Completed_Packets event was sent to the Host. It can then calculate the actual current buffer usage.

When the Controller has completed one or more HCI Data packet(s) and/or HCI ISO Data packet(s) it shall send an HCI_Number_Of_Completed_Packets event to the Host, until it finally reports that all the pending HCI Data packets have been completed. The frequency at which this event is sent is manufacturer specific.

Note

Note: The HCI_Number_Of_Completed_Packets events will not report on synchronous Connection_Handles if Synchronous Flow Control is disabled. (See Read Synchronous Flow Control Enable command, and Write Synchronous Flow Control Enable command.)

4.1.2. Data-block-based data flow control

When the data-block-based flow control mechanism is enabled, on initialization the Host shall issue the Read Data Block Size command. Two of the return parameters of this command determine the maximum size of HCI ACL Data packets (excluding header) sent from the Host to the Controller. A further return parameter specifies the total number of HCI ACL Data packets that the Controller may have waiting for transmission in its buffers.

The Controller shall use the HCI_Number_Of_Completed_Data_Blocks event to control the flow of data from the Host. This event contains a list of Handles and a corresponding number of HCI Data packets that have been completed since the previous time the event was returned (or since the link was established, if the event has not been returned before for a particular Handle).

Based on the information returned in this event, and the return parameters of the HCI_Read_Data_Block_Size command that specify the total number of HCI ACL Data packets that can be stored in the Controller, the Host decides for which Handles the following HCI Data packets should be sent.

Every time it has sent an HCI Data packet, the Host shall assume that the free buffer space for the corresponding ACL link type in the Controller has decreased by one HCI Data packet.

Each HCI_Number_Of_Completed_Data_Blocks event received by the Host provides information about how many HCI Data packets have been completed for each Handle since the previous HCI_Number_Of_Completed_Data_Blocks event was sent to the Host. It can then calculate the actual current buffer usage.

When the Controller has completed one or more HCI Data packet(s) it shall send an HCI_Number_Of_Completed_Data_Blocks event to the Host until it finally reports that all the pending HCI Data packets have been completed. The frequency at which this event is sent is manufacturer specific.

4.2. Controller to Host data flow control

In some implementations, flow control may also be necessary in the direction from the Controller to the Host. The HCI_Set_Controller_To_Host_Flow_Control command can be used to turn flow control on or off in that direction.

On initialization, the Host uses the HCI_Host_Buffer_Size command to notify the Controller about the maximum size of HCI ACL and Synchronous Data packets sent from the Controller to the Host. The command also contains two additional command parameters to notify the Controller about the total number of ACL and Synchronous Data packets that can be stored in the data buffers of the Host.

The Host uses the HCI_Host_Number_Of_Completed_Packets command in exactly the same way as the Controller uses the HCI_Number_Of_Completed_Packets event as was previously described in this section, but a packet is completed when the Host is ready to free the corresponding buffer.

The HCI_Host_Number_Of_Completed_Packets command is a special command for which no command flow control is used, and which can be sent anytime there is a connection or when in local loopback mode. The command also has no event after the command has completed. This makes it possible for the flow control to work in exactly the same way in both directions, and the flow of normal commands will not be disturbed.

For each individual Connection_Handle, the data shall be sent to the Host in HCI Data packets in the order in which it was provided by the Controller and shall arrive at the Host in that order.

4.3. Disconnection behavior

When the Host receives an HCI_Disconnection_Complete event, the Host shall assume that all unacknowledged HCI Data packets that have been sent to the Controller for the returned Handle have been flushed, and that the corresponding data buffers have been freed. A Controller does not have to notify the Host about this in an HCI_Number_Of_Completed_Packets or an HCI_Number_Of_Completed_Data_Blocks event before the disconnection event.

If flow control is also enabled in the direction from the Controller to the Host, the Controller may, after it has sent an HCI_Disconnection_Complete event, assume that the Host will flush its data buffers for the sent Handle when it receives the HCI_Disconnection_Complete event. The Host does not have to notify the Controller about this in an HCI_Host_Number_Of_Completed_Packets command.

4.4. Command flow control

On initial power-on, and after a reset, the Host shall send a maximum of one outstanding HCI Command packet until an HCI_Command_Complete or HCI_Command_Status event has been received.

The HCI_Command_Complete and HCI_Command_Status events contain a parameter called Num_HCI_Command_Packets, which indicates the number of HCI Command packets the Host is currently allowed to send to the Controller. The Controller may buffer one or more HCI Command packets, but the Controller shall start performing the commands in the order in which they are received. The Controller can start performing a command before it completes previous commands. Therefore, the commands do not always complete in the order they are started.

To indicate to the Host that the Controller is ready to receive HCI command packets, the Controller may generate an HCI_Command_Complete or HCI_Command_Status event with the Command Opcode set to 0x0000 and the Num_HCI_Command_Packets event parameter set to 1 or more. Command Opcode 0x0000 is a special value indicating that this event is not associated with a command sent by the Host. The Controller can send an HCI_Command_Complete or HCI_Command_Status event with Command Opcode 0x0000 at any time to change the number of outstanding HCI Command packets that the Host can send before waiting. If the Controller generates an HCI_Command_Complete or HCI_Command_Status event with the Num_HCI_Command_Packets event parameter set to zero, the Host shall stop sending commands.

HCI commands may take different amounts of time to be completed. Therefore, the results of commands will be reported back to the Host in the form of an event. For example, for most HCI commands the Controller will generate the HCI_Command_Complete event when a command is completed. This event contains the return parameters for the completed HCI command. For enabling the Host to detect errors on the HCI-Transport Layer, there needs to be a timeout between the transmission of the Host’s command and the reception of the Controller’s response (e.g. an HCI_Command_Complete or HCI_Command_Status event). Since the maximum response timeout is strongly dependent on the HCI-Transport Layer used, it is recommended to use a default value of one second for this timer. This amount of time is also dependent on the number of commands unprocessed in the command queue.

There are two separate patterns of command execution. For the first type (used by those commands which are expected to complete quickly and are carried out entirely in the local Controller), the Controller shall send the Host an HCI_Command_Complete event when it has completed the command. For the second type (used by those commands that are expected to take a significant length of time, usually because they involve interaction with a peer device), the Controller shall send the Host an HCI_Command_Status event when it has received the command and checked the parameters. When the actions associated with the command have finished, a separate event that is associated with the command (the "completion event") shall be sent by the Controller to the Host. Between the times that these two events are generated (even if they have not yet been received by the Host), this type of command is described as "pending".

If a command of the second type does not begin to execute (for example, if there was a parameter error or the command is currently not allowed), the HCI_Command_Status event shall be returned with the appropriate error code in the Status parameter and no completion event is generated.

When a Connection_Handle is deleted and there are pending commands relating to that Connection_Handle, the Controller may return the completion event for each command to the Host. Each such event shall have a non-zero status and shall precede the event indicating the deletion of the Connection_Handle. No events for that Connection_Handle shall be sent after the event indicating the deletion of the Connection_Handle.

4.5. Command error handling

Unless explicitly stated otherwise in the description of a command, any error in any parameter means that the command will not begin to execute; it will only return an error code. If more than one error code is applicable, the implementation shall choose one of them.

If an error occurs for a command for which an HCI_Command_Complete event is returned, the error shall be reported in the Status parameter.

If an error occurs for a command for which an HCI_Command_Status event and a completion event are returned, there are two possibilities; which happens will depend on the specific error. If the error is one which means the command will not begin to execute (including any errors in parameters), the error shall be returned as a non-zero Status parameter in the HCI_Command_Status event and no completion event will be returned. If the error is not detected until after the HCI_Command_Status event has been generated, the HCI_Command_Status event shall have the Status parameter set to zero and the error shall be returned in the Status parameter of the completion event.

If the Controller does not support an issued command, it shall return the error code Unknown HCI command (0x01) in the Status parameter of either an HCI_Command_Complete event or an HCI_Command_Status event; which event is used is vendor-specific.

If an error occurs for a command for which an HCI_Command_Complete event is returned, the Return Parameters field may only contain some of the return parameters specified for the command. The Status parameter, which explains the error reason and which is the first return parameter, shall always be returned. If there is a Handle parameter or a BD_ADDR parameter right after the Status parameter, this parameter shall also be returned so that the Host can identify to which instance of a command the HCI_Command_Complete event belongs. In this case, the Handle or BD_ADDR parameter shall have exactly the same value as that in the corresponding command parameter. It is implementation specific whether more parameters will be returned in case of an error; if they are not, the event will be shorter than if they were.

The above also applies to commands that have associated command specific completion events with a Status parameter in their completion event, with the exceptions shown in Table 4.1, which indicates the only parameters (other than Status) that are valid. The validity of other parameters is likewise implementation specific for failed commands in this group, but they shall be sent in any case.

Event

Valid parameters

Connection_Complete

BD_ADDR

Synchronous_Connection_Complete

BD_ADDR

LE_Connection_Complete

none

LE_Enhanced_Connection_Complete

none

LE_Periodic_Advertising_Sync_Established

none

LE_CIS_Established

Connection_Handle

LE_CIS_Request

none

LE_Create_BIG_Complete

BIG_Handle

LE_Terminate_BIG_Complete

BIG_Handle

LE_BIG_Sync_Established

BIG_Handle

LE_Request_Peer_SCA_Complete

Connection_Handle

Table 4.1: Valid parameters for command completion events reporting an error


For the purposes of this section, the Subevent_Code parameter of the HCI_LE_Meta event (see Section 7.7.65) is not treated as a parameter and is always valid.

Note

Note: The BD_ADDR return parameter of the command HCI_Read_BD_ADDR is not used to identify to which instance of the HCI_Read_BD_ADDR command the HCI_Command_Complete event belongs. It is optional for the Controller to return this parameter in case of an error.

4.6. LMP transaction and LL procedure collisions

If the Host issues a command that returns a successful HCI_Command_Status event but