Core v4.2 PDF
Core v4.2 PDF
Master Table of
Contents
& Compliance
Requirements
Revision History
The Revision History is shown in the [Vol 0] Part C, Appendix.
Contributors
The persons who contributed to this specification are listed in the [Vol 0] Part C,
Appendix.
Web Site
This specification can also be found on the official Bluetooth web site:
https://www.bluetooth.org/en-us/specification/adopted-specifications
Use of Bluetooth Specifications and any related intellectual property is governed by the
Promoters Membership Agreement among the Promoter Members and Bluetooth SIG (the
“Promoters Agreement”), certain membership agreements between Bluetooth SIG and its
Adopter and Associate Members, including, but not limited to, the Membership Application, the
Bluetooth Patent/Copyright License Agreement and the Bluetooth Trademark License
Agreement (collectively, the “Membership Agreements”) and the Bluetooth Specification Early
Adopters Agreements (1.2 Early Adopters Agreements) among Early Adopter members of the
unincorporated Bluetooth SIG and the Promoter Members (the “Early Adopters Agreement”).
Certain rights and obligations of the Promoter Members under the Early Adopters Agreements
have been assigned to Bluetooth SIG by the Promoter Members.
Use of the Specification by anyone who is not a member of Bluetooth SIG or a party to an Early
Adopters Agreement (each such person or party, a “Member”) is prohibited. The use of any
portion of a Bluetooth Specification may involve the use of intellectual property rights ("IPR"),
including pending or issued patents, or copyrights or other rights. Bluetooth SIG has made no
search or investigation for such rights and disclaims any undertaking or duty to do so. The legal
rights and obligations of each Member are governed by the applicable Membership
Agreements, Early Adopters Agreement or Promoters Agreement. No license, express or
implied, by estoppel or otherwise, to any intellectual property rights are granted herein.
Any use of the Specification not in compliance with the terms of the applicable Membership
Agreements, Early Adopters Agreement or Promoters Agreement is prohibited and any such
prohibited use may result in (i) termination of the applicable Membership Agreements or Early
Adopters Agreement and (ii) liability claims by Bluetooth SIG or any of its Members for patent,
copyright and/or trademark infringement claims permitted by the applicable agreement or by
applicable law.
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0] page 3
02 December 2014
Bluetooth SIG Proprietary
Master Table of Contents & Compliance Requirements
Part A
Note: Each Volume is a self contained book and is equipped with a TOC of its own.
• A Volume contains one or more Parts (A, B, etc.); each Part can be viewed
independently and has its own TOC.
Red or blue text on the following pages indicates hypertext links that take you
directly to the indicated section, on condition that you have access to a
complete specification.
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 6
Specification Volume 0
Master Table of Contents & Compliance Requirements
Part A
MASTER TABLE OF CONTENTS
Part B
BLUETOOTH COMPLIANCE REQUIREMENTS
1 Introduction ........................................................................................ 75
2 Scope .................................................................................................. 76
3 Definitions .......................................................................................... 77
3.1 Types of Bluetooth Products...................................................... 77
3.1.1 Bluetooth End Product .................................................. 78
3.1.2 Bluetooth Subsystem Product....................................... 78
3.1.3 Bluetooth Component Product...................................... 81
3.1.4 Bluetooth Development Tool ......................................... 81
3.1.5 Bluetooth Test Equipment ............................................. 81
4 Core Configurations .......................................................................... 82
4.1 Basic Rate Core Configuration .................................................. 82
4.2 Enhanced Data Rate Core Configurations ................................ 83
4.3 High Speed Core Configuration ................................................. 84
4.4 Low Energy Core Configuration ................................................ 85
4.5 Basic Rate and Low Energy Combined Core Configuration...... 86
4.6 Host Controller Interface Core Configuration............................. 87
Part C
APPENDIX
1 Revision History ................................................................................ 91
1.1 [Vol 0] Master TOC & Compliance Requirements ..................... 91
1.1.1 Bluetooth Compliance Requirements ........................... 91
1.2 [Vol 1] Architecture & Terminology Overview............................. 92
1.3 [Vols 2, 3, 5, 6 & 7] Core System Package ............................... 93
1.4 [Vol 4] Transport Layers............................................................. 95
2 Contributors ....................................................................................... 96
2.1 [Vol 0] Master TOC & Compliance Requirements ..................... 96
2.1.1 Part B: Bluetooth Compliance Requirements .............. 96
2.1.2 Vol 0 Part C: Appendix (Rev History and Contributors) 96
2.2 [Vol 1] Architecture & Terminology Overview............................. 97
2.2.1 Part A: Architectural Overview ..................................... 97
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 7
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 8
Specification Volume 1
Architecture & Terminology Overview
Part A
ARCHITECTURE
1 General Description........................................................................... 13
1.1 Overview of BR/EDR Operation ................................................ 14
1.2 Overview of Bluetooth Low Energy Operation........................... 16
1.3 Overview of AMP Operation ...................................................... 19
1.4 Nomenclature ............................................................................ 20
2 Core System Architecture................................................................. 26
2.1 Core Architectural Blocks .......................................................... 30
2.1.1 Host Architectural Blocks .............................................. 30
2.1.2 BR/EDR/LE Controller Architectural Blocks.................. 31
2.1.3 AMP Controller architectural blocks.............................. 33
3 Data Transport Architecture ............................................................. 35
3.1 Core Traffic Bearers .................................................................. 36
3.1.1 Framed Data Traffic ...................................................... 37
3.1.2 Unframed Data Traffic................................................... 38
3.1.3 Reliability of traffic bearers............................................ 39
3.2 Transport Architecture Entities .................................................. 42
3.2.1 BR/EDR Generic Packet Structure ............................... 43
3.2.2 LE Generic Packet Structure......................................... 44
3.3 Physical Channels ..................................................................... 46
3.3.1 BR/EDR Physical Channels.......................................... 46
3.3.2 LE Physical Channels ................................................... 52
3.3.3 AMP physical channel................................................... 55
3.4 Physical Links ............................................................................ 56
3.4.1 BR/EDR Links Supported By The Basic And Adapted
Piconet Physical Channel ............................................. 56
3.4.2 BR/EDR Links Supported by the Scanning Physical
Channels....................................................................... 59
3.4.3 LE Links Supported by the LE Physical Channels........ 59
3.4.4 Links Supported by the AMP Physical Channels.......... 59
3.5 Logical Links and Logical Transports ........................................ 60
3.5.1 Casting.......................................................................... 61
3.5.2 Scheduling and Acknowledgement Scheme................. 62
3.5.3 Class of Data ................................................................ 62
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 9
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 10
Part B
ACRONYMS & ABBREVIATIONS
1 List of Acronyms and Abbreviations ............................................. 113
Part C
CORE SPECIFICATION CHANGE HISTORY
1 Deprecated Features ....................................................................... 126
2 Changes from V1.1 to V1.2 ............................................................. 127
2.1 New Features .......................................................................... 127
2.2 Structure Changes................................................................... 127
2.3 Deprecated Features list ......................................................... 127
2.4 Changes in Wording ................................................................ 128
2.5 Nomenclature Changes ........................................................... 128
3 Changes from V1.2 to V2.0 + EDR.................................................. 129
3.1 New Features .......................................................................... 129
3.2 Deprecated Features ............................................................... 129
4 Changes from V2.0 + EDR to V2.1 + EDR ...................................... 130
4.1 New features ........................................................................... 130
4.2 Deprecated Features ............................................................... 130
5 Changes From V2.1 + EDR To V3.0 + HS ....................................... 131
5.1 New Features .......................................................................... 131
5.2 Deprecated Features ............................................................... 131
6 Changes From V3.0 + HS To v4.0 ................................................... 132
6.1 New Features .......................................................................... 132
6.2 Deprecated Features ............................................................... 132
7 Changes from v4.0 to v4.1 ............................................................. 133
7.1 New Features .......................................................................... 133
7.1.1 Features Added in CSA 4 – Integrated in v4.1 ........... 133
7.1.2 Features Added in CSA 3 – Integrated in v4.1 ........... 133
7.1.3 Features Added in CSA 2 – Integrated in v4.1 ........... 134
7.2 Deprecated Features ............................................................... 134
8 Changes from v4.1 to v4.2 .............................................................. 135
8.1 New Features .......................................................................... 135
8.2 Errata Incorporated in v4.2 ...................................................... 135
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 11
Part D
MIXING OF SPECIFICATION VERSIONS
1 Mixing of Specification Versions.................................................... 139
1.1 Features and their Types ......................................................... 141
1.2 Core Specification Addenda .................................................... 143
Part E
IEEE LANGUAGE
1 Use of IEEE Language..................................................................... 148
1.1 Shall......................................................................................... 149
1.2 Must ......................................................................................... 149
1.3 Will ........................................................................................... 149
1.4 Should ..................................................................................... 149
1.5 May .......................................................................................... 150
1.6 Can .......................................................................................... 150
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 12
Specification Volume 2
Core System Package
[BR/EDR Controller volume]
Part A
RADIO SPECIFICATION
1 Scope .................................................................................................. 34
2 Frequency Bands and Channel Arrangement................................. 36
3 Transmitter Characteristics .............................................................. 37
3.1 Basic Rate ................................................................................. 39
3.1.1 Modulation Characteristics............................................ 39
3.1.2 Spurious Emissions....................................................... 39
3.1.3 Radio Frequency Tolerance .......................................... 40
3.2 Enhanced Data Rate ................................................................. 41
3.2.1 Modulation Characteristics............................................ 41
3.2.2 Spurious Emissions....................................................... 44
3.2.3 Radio Frequency Tolerance .......................................... 46
3.2.4 Relative Transmit Power ............................................... 46
4 Receiver Characteristics ................................................................... 47
4.1 Basic Rate ................................................................................. 47
4.1.1 Actual Sensitivity Level ................................................. 47
4.1.2 Interference Performance ............................................. 47
4.1.3 Out-of-Band Blocking.................................................... 48
4.1.4 Intermodulation Characteristics .................................... 48
4.1.5 Maximum Usable Level................................................. 49
4.1.6 Receiver Signal Strength Indicator................................ 49
4.1.7 Reference Signal Definition .......................................... 49
4.2 Enhanced Data Rate ................................................................. 49
4.2.1 Actual Sensitivity Level ................................................. 49
4.2.2 BER Floor Performance................................................ 49
4.2.3 Interference Performance ............................................. 50
4.2.4 Maximum Usable Level................................................. 51
4.2.5 Out-of-Band and Intermodulation Characteristics......... 51
4.2.6 Reference Signal Definition .......................................... 51
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 13
Part B
BASEBAND SPECIFICATION
1 General Description........................................................................... 66
1.1 Bluetooth Clock ......................................................................... 67
1.2 Bluetooth Device Addressing .................................................... 69
1.2.1 Reserved Addresses..................................................... 69
1.3 Access Codes............................................................................ 70
2 Physical Channels ............................................................................. 71
2.1 Physical Channel Definition ....................................................... 72
2.2 Basic Piconet Physical Channel ................................................ 72
2.2.1 Master-slave Definition ................................................. 72
2.2.2 Hopping Characteristics................................................ 73
2.2.3 Time Slots ..................................................................... 73
2.2.4 Piconet Clocks .............................................................. 74
2.2.5 Transmit/Receive Timing .............................................. 74
2.3 Adapted Piconet Physical Channel ........................................... 78
2.3.1 Hopping Characteristics................................................ 78
2.4 Page Scan Physical Channel .................................................... 79
2.4.1 Clock Estimate for Paging............................................. 79
2.4.2 Hopping Characteristics................................................ 79
2.4.3 Paging Procedure Timing ............................................. 80
2.4.4 Page Response Timing................................................. 81
2.5 Inquiry Scan Physical Channel .................................................. 83
2.5.1 Clock for Inquiry ............................................................ 83
2.5.2 Hopping Characteristics................................................ 83
2.5.3 Inquiry Procedure Timing.............................................. 83
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 14
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 15
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 16
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 17
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 18
Part C
LINK MANAGER PROTOCOL SPECIFICATION
1 Introduction ...................................................................................... 229
2 General Rules................................................................................... 230
2.1 Message Transport.................................................................. 230
2.2 Synchronization ....................................................................... 230
2.3 Packet Format ......................................................................... 231
2.4 Transactions ............................................................................ 232
2.4.1 LMP Response Timeout ............................................. 234
2.5 Error Handling ......................................................................... 234
2.5.1 Transaction Collision Resolution................................. 235
2.6 Procedure Rules ...................................................................... 235
2.7 General Response Messages ................................................. 236
2.8 LMP Message Constraints....................................................... 236
3 Device Features ............................................................................... 237
3.1 General Description ................................................................. 237
3.2 Feature Definitions .................................................................. 237
3.3 Feature Mask Definition........................................................... 245
3.4 Link Manager Interoperability policy ........................................ 248
4 Procedure Rules .............................................................................. 249
4.1 Connection Control .................................................................. 249
4.1.1 Connection Establishment .......................................... 249
4.1.2 Detach......................................................................... 250
4.1.3 Power Control ............................................................. 251
4.1.4 Adaptive Frequency Hopping...................................... 255
4.1.5 Channel Classification ................................................ 258
4.1.6 Link Supervision.......................................................... 260
4.1.7 Channel Quality Driven Data Rate Change (CQDDR) 261
4.1.8 Quality of Service (QoS) ............................................. 262
4.1.9 Paging Scheme Parameters ....................................... 263
4.1.10 Control of Multi-slot Packets ....................................... 265
4.1.11 Enhanced Data Rate................................................... 266
4.1.12 Encapsulated LMP PDUs ........................................... 267
4.1.13 Ping............................................................................. 269
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 19
Part D
ERROR CODES
1 Overview of Error Codes................................................................. 373
1.1 Usage Descriptions ................................................................. 373
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 20
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 21
Part E
HOST CONTROLLER INTERFACE FUNCTIONAL SPECIFICATION
1 Introduction ...................................................................................... 399
1.1 Lower Layers of the Bluetooth Software Stack ........................ 400
2 Overview of Host Controller Transport Layer ............................... 402
2.1 Host Controller Transport Layer and AMPS ............................ 402
3 Overview of Commands and Events.............................................. 403
3.1 Generic Events ........................................................................ 404
3.2 Device Setup ........................................................................... 404
3.3 Controller Flow Control ............................................................ 405
3.4 Controller Information .............................................................. 406
3.5 Controller Configuration........................................................... 408
3.6 Device Discovery ..................................................................... 411
3.7 Connection Setup .................................................................... 414
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 22
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 23
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 24
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 25
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 26
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 27
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 28
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 29
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 30
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 31
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 32
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 33
Part F
MESSAGE SEQUENCE CHARTS
1 Introduction .................................................................................... 1061
1.1 Notation ................................................................................. 1061
1.2 Flow of Control ...................................................................... 1062
1.3 Example MSC........................................................................ 1062
2 Services Without Connection Request........................................ 1063
2.1 Remote Name Request ......................................................... 1063
2.2 One-time Inquiry .................................................................... 1065
2.3 Periodic Inquiry ...................................................................... 1067
3 ACL Connection Establishment and Detachment ...................... 1069
3.1 Connection Setup .................................................................. 1070
4 Optional Activities After ACL Connection Establishment ......... 1078
4.1 Authentication Requested ..................................................... 1078
4.2 Simple Pairing Message Sequence Charts ........................... 1080
4.2.1 Optional OOB Information Collection........................ 1081
4.2.2 Enable Simple Pairing and Secure Connections ...... 1082
4.2.3 Connection Establishment ........................................ 1083
4.2.4 L2CAP Connection Request for a Secure Service ... 1084
4.2.5 Optional OOB Information Transfer .......................... 1084
4.2.6 Start Simple Pairing .................................................. 1085
4.2.7 IO Capability Exchange ............................................ 1086
4.2.8 Public Key Exchange ................................................ 1087
4.2.9 Authentication ........................................................... 1087
4.2.10 Numeric Comparison ................................................ 1088
4.2.11 Numeric Comparison Failure on Initiating Side......... 1089
4.2.12 Numeric Comparison Failure on Responding Side... 1090
4.2.13 Passkey Entry ........................................................... 1091
4.2.14 Passkey Entry Failure on Responding Side.............. 1092
4.2.15 Passkey Entry Failure on Initiator Side ..................... 1093
4.2.16 Out of Band............................................................... 1094
4.2.17 OOB Failure on Initiator Side .................................... 1096
4.2.18 DHKey Checks.......................................................... 1097
4.2.19 Calculate Link Key .................................................... 1098
4.2.20 Enable Encryption..................................................... 1099
4.2.21 L2CAP Connection Response .................................. 1099
4.2.22 LMP Ping .................................................................. 1100
4.3 Link Supervision Timeout Changed Event............................. 1102
4.4 Set Connection Encryption .................................................... 1103
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 34
Part G
SAMPLE DATA
1 Encryption Sample Data................................................................ 1168
1.1 E0 Encryption Sample Data................................................... 1168
1.1.1 Generating Kc' from Kc............................................. 1168
1.1.2 First Set of Sample Data........................................... 1171
1.1.3 Second Set of Sample Data...................................... 1179
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 35
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 36
Part H
SECURITY SPECIFICATION
1 Security Overview.......................................................................... 1306
1.1 Pausing Encryption and Role Switch..................................... 1307
1.2 Change Connection Link Keys .............................................. 1308
1.3 Periodically Refreshing Encryption Keys ............................... 1308
2 Random Number Generation ........................................................ 1309
3 Key Management ........................................................................... 1310
3.1 Key Types .............................................................................. 1310
3.2 Key Generation and Initialization ........................................... 1312
3.2.1 Generation of initialization key, ................................ 1313
3.2.2 Authentication ........................................................... 1313
3.2.3 Generation of a unit key............................................ 1313
3.2.4 Generation of a combination key .............................. 1314
3.2.5 Generating the encryption key .................................. 1315
3.2.6 Point-to-multipoint configuration ............................... 1316
3.2.7 Modifying the link keys.............................................. 1316
3.2.8 Generating a master key........................................... 1317
4 Encryption (E0) .............................................................................. 1319
4.1 Encryption Key Size Negotiation ........................................... 1320
4.2 Encryption of Broadcast Messages ....................................... 1320
4.3 Encryption Concept ............................................................... 1321
4.4 Encryption Algorithm ............................................................. 1322
4.4.1 The operation of the cipher ....................................... 1324
4.5 LFSR Initialization.................................................................. 1325
4.6 Key Stream Sequence........................................................... 1328
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 37
5 Authentication................................................................................ 1329
5.1 Repeated Attempts ................................................................ 1332
6 The Authentication And Key-Generating Functions .................. 1333
6.1 The Authentication Function E1 ............................................ 1333
6.2 The Functions Ar and A’r ....................................................... 1335
6.2.1 The round computations ........................................... 1335
6.2.2 The substitution boxes “e” and “l” ............................. 1335
6.2.3 Key scheduling.......................................................... 1336
6.3 E2-Key Generation Function for Authentication .................... 1337
6.4 E3-Key Generation Function for Encryption .......................... 1339
7 Secure Simple Pairing ................................................................... 1340
7.1 Phase 1: Public Key Exchange ............................................. 1342
7.2 Phase 2: Authentication Stage 1............................................ 1342
7.2.1 Authentication Stage 1: Numeric Comparison
Protocol..................................................................... 1343
7.2.2 Authentication Stage 1: Out of Band Protocol........... 1344
7.2.3 Authentication Stage 1: Passkey Entry Protocol....... 1346
7.3 Phase 3: Authentication Stage 2............................................ 1348
7.4 Phase 4: Link Key Calculation ............................................... 1349
7.5 Phase 5: LMP Authentication and Encryption ....................... 1349
7.6 Elliptic Curve Definition.......................................................... 1349
7.7 Cryptographic Function Definitions........................................ 1351
7.7.1 The Simple Pairing Commitment Function f1 ........... 1351
7.7.2 The Simple Pairing Numeric Verification Function g. 1352
7.7.3 The Simple Pairing Key Derivation Function f2 ........ 1353
7.7.4 The Simple Pairing Check Function f3...................... 1354
7.7.5 The Simple Pairing AMP Key Derivation
Function h2 ............................................................... 1355
7.7.6 The AES Encryption Key Generation
Function h3 ............................................................... 1357
7.7.7 The Device Authentication Key Generation
Function h4 ............................................................... 1358
7.7.8 The Device Authentication Confirmation
Function h5 ............................................................... 1359
8 AMP Security.................................................................................. 1360
8.1 Creation of the Initial Generic AMP Link Key......................... 1360
8.2 Creation of Dedicated AMP Link Keys .................................. 1360
8.3 Debug Considerations ........................................................... 1362
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 38
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 39
Specification Volume 3
Core System Package
[Host volume]
Part A
LOGICAL LINK CONTROL AND ADAPTATION PROTOCOL
SPECIFICATION
1 Introduction ........................................................................................ 29
1.1 L2CAP Features ........................................................................ 29
1.2 Assumptions .............................................................................. 32
1.3 Scope ........................................................................................ 33
1.4 Terminology ............................................................................... 33
2 General Operation ............................................................................. 37
2.1 Channel Identifiers..................................................................... 37
2.2 Operation Between Devices ...................................................... 40
2.3 Operation Between Layers ........................................................ 41
2.4 Modes of Operation ................................................................... 42
2.5 Mapping Channels to Logical Links ........................................... 44
3 Data Packet Format ........................................................................... 45
3.1 Connection-oriented Channels in Basic L2CAP Mode .............. 45
3.2 Connectionless Data Channel in Basic L2CAP Mode ............... 46
3.3 Connection-oriented Channel in Retransmission/Flow Control/
Streaming Modes....................................................................... 47
3.3.1 L2CAP header fields ..................................................... 48
3.3.2 Control field (2 or 4 octets)............................................ 49
3.3.3 L2CAP SDU Length Field (2 octets) ............................. 51
3.3.4 Information Payload Field ............................................. 52
3.3.5 Frame Check Sequence (2 octets) ............................... 52
3.3.6 Invalid Frame Detection ................................................ 53
3.3.7 Invalid Frame Detection Algorithm................................ 53
3.4 Connection-Oriented Channels in LE Credit Based Flow Control
Mode.......................................................................................... 55
3.4.1 L2CAP Header Fields ................................................... 55
3.4.2 L2CAP SDU Length Field (2 octets) ............................. 55
3.4.3 Information Payload Field ............................................. 55
4 Signaling Packet Formats ................................................................. 57
4.1 Command Reject (code 0x01) ................................................... 60
4.2 Connection Request (code 0x02) .............................................. 61
4.3 Connection Response (code 0x03) ........................................... 63
4.4 Configuration Request (code 0x04) ........................................... 65
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 40
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 41
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 42
Part B
SERVICE DISCOVERY PROTOCOL (SDP) SPECIFICATION
1 Introduction ...................................................................................... 219
1.1 General Description ................................................................. 219
1.2 Motivation ................................................................................ 219
1.3 Requirements .......................................................................... 219
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 43
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 44
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 45
Part C
GENERIC ACCESS PROFILE
1 Introduction ...................................................................................... 286
1.1 Scope ...................................................................................... 286
1.2 Symbols and Conventions ....................................................... 287
1.2.1 Requirement Status Symbols...................................... 287
1.2.2 Signaling diagram conventions ................................... 288
1.2.3 Notation for Timers and Counters ............................... 288
2 Profile Overview............................................................................... 289
2.1 Profile Stack............................................................................. 289
2.2 Profile Roles ............................................................................ 289
2.2.1 Roles when Operating over BR/EDR Physical
Transport..................................................................... 289
2.2.2 Roles when Operating over an LE Physical Transport290
2.3 User Requirements and Scenarios.......................................... 293
2.4 Profile Fundamentals............................................................... 293
2.5 Conformance ........................................................................... 293
3 User Interface Aspects .................................................................... 294
3.1 The User Interface Level ......................................................... 294
3.2 Representation of Bluetooth Parameters................................. 294
3.2.1 Bluetooth Device Address (BD_ADDR) ...................... 294
3.2.2 Bluetooth Device Name (the user-friendly name) ....... 295
3.2.3 Bluetooth Passkey (Bluetooth PIN)............................. 296
3.2.4 Class of Device ........................................................... 297
3.2.5 Appearance Characteristic.......................................... 298
3.3 Pairing ..................................................................................... 299
4 Modes – BR/EDR Physical Transport............................................. 300
4.1 Discoverability Modes.............................................................. 300
4.1.1 Non-discoverable Mode .............................................. 301
4.1.2 Limited Discoverable Mode......................................... 301
4.1.3 General Discoverable Mode ....................................... 303
4.2 Connectability Modes .............................................................. 304
4.2.1 Non-connectable Mode............................................... 304
4.2.2 Connectable Mode...................................................... 304
4.3 Bondable Modes...................................................................... 306
4.3.1 Non-bondable Mode ................................................... 306
4.3.2 Bondable Mode........................................................... 306
4.4 Synchronizability Modes .......................................................... 307
4.4.1 Non-synchronizable Mode .......................................... 307
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 46
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 47
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 48
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 49
Appendix A (Normative):
Timers and Constants ........................................................ 404
Part D
TEST SUPPORT
1 Test Methodology ............................................................................ 414
1.1 BR/EDR Test Scenarios .......................................................... 414
1.1.1 Test Setup ................................................................... 414
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 50
Part E
AMP MANAGER PROTOCOL SPECIFICATION
1 Introduction ...................................................................................... 443
1.1 General Description ................................................................. 443
2 General Operation ........................................................................... 444
2.1 Basic Capabilities .................................................................... 444
2.2 AMP Manager Channel Over L2CAP ...................................... 445
2.3 Using the AMP Manager Protocol ........................................... 446
2.3.1 Discovering a Remote AMP Manager......................... 446
2.3.2 Discovering Available Controllers on a Remote
Device ......................................................................... 446
2.3.3 Creation of AMP Physical Links.................................. 447
2.4 Controller IDs........................................................................... 448
2.5 Controller Types ...................................................................... 448
3 Protocol Description ....................................................................... 449
3.1 Packet Formats........................................................................ 449
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 51
Part F
ATTRIBUTE PROTOCOL (ATT)
1 Introduction ...................................................................................... 471
1.1 Scope ...................................................................................... 471
1.2 Conformance ........................................................................... 471
2 Protocol Overview ........................................................................... 472
3 Protocol Requirements ................................................................... 473
3.1 Introduction .............................................................................. 473
3.2 Basic Concepts........................................................................ 473
3.2.1 Attribute Type.............................................................. 473
3.2.2 Attribute Handle .......................................................... 473
3.2.3 Attribute Handle Grouping .......................................... 474
3.2.4 Attribute Value............................................................. 474
3.2.5 Attribute Permissions .................................................. 474
3.2.6 Control-Point Attributes............................................... 476
3.2.7 Protocol Methods ........................................................ 476
3.2.8 Exchanging MTU Size ................................................ 476
3.2.9 Long Attribute Values.................................................. 476
3.2.10 Atomic Operations ...................................................... 477
3.3 Attribute PDU........................................................................... 477
3.3.1 Attribute PDU Format.................................................. 478
3.3.2 Sequential Protocol..................................................... 479
3.3.3 Transaction ................................................................. 480
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 52
Part G
GENERIC ATTRIBUTE PROFILE (GATT)
1 Introduction ...................................................................................... 519
1.1 Scope ...................................................................................... 519
1.2 Profile Dependency ................................................................. 519
1.3 Conformance ........................................................................... 519
1.4 Bluetooth Specification Release Compatibility......................... 520
1.5 Conventions............................................................................. 520
2 Profile Overview............................................................................... 521
2.1 Protocol Stack.......................................................................... 521
2.2 Configurations and Roles ........................................................ 521
2.3 User Requirements and Scenarios.......................................... 522
2.4 Profile Fundamentals............................................................... 522
2.5 Attribute Protocol ..................................................................... 523
2.5.1 Overview ..................................................................... 523
2.5.2 Attribute Caching ........................................................ 524
2.5.3 Attribute Grouping....................................................... 525
2.5.4 UUIDs ......................................................................... 526
2.6 GATT Profile Hierarchy............................................................ 527
2.6.1 Overview ..................................................................... 527
2.6.2 Service ........................................................................ 528
2.6.3 Included Services........................................................ 528
2.6.4 Characteristic .............................................................. 529
2.7 Configured Broadcast .............................................................. 529
3 Service Interoperability Requirements .......................................... 530
3.1 Service Definition..................................................................... 530
3.2 Include Definition ..................................................................... 531
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 53
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 54
Part H
SECURITY MANAGER SPECIFICATION
1 Introduction ...................................................................................... 591
1.1 Scope ...................................................................................... 591
1.2 Conventions............................................................................. 591
1.2.1 Bit and Byte Ordering Conventions............................. 591
2 Security Manager ............................................................................. 592
2.1 Introduction .............................................................................. 592
2.2 Cryptographic Toolbox ............................................................. 594
2.2.1 Security function e ...................................................... 595
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 55
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 56
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 57
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 58
Specification Volume 4
Host Controller Interface
[Transport Layer]
Part A
UART TRANSPORT LAYER
1 General ............................................................................................... 10
2 Protocol .............................................................................................. 11
3 RS232 Settings................................................................................... 12
4 Error Recovery ................................................................................... 13
Part B
USB TRANSPORT LAYER
1 Overview ............................................................................................. 16
2 USB Endpoint Expectations.............................................................. 20
2.1 Descriptor Overview .................................................................. 20
2.1.1 Primary Controller Descriptors...................................... 20
2.1.2 AMP Controller Descriptors .......................................... 26
2.2 Control Endpoint Expectations .................................................. 27
2.2.1 Single Function Primary Controller ............................... 28
2.2.2 Primary Controller Function in a Composite Device ..... 28
2.2.3 AMP Controller.............................................................. 28
2.3 Bulk Endpoints Expectations ..................................................... 29
2.4 Interrupt Endpoint Expectations................................................. 29
2.5 Isochronous Endpoints Expectations......................................... 29
3 Class Code ......................................................................................... 31
3.1 Bluetooth Codes ........................................................................ 31
3.1.1 Single Function Primary Controller ............................... 31
3.1.2 Single Function AMP Controller.................................... 31
3.1.3 Composite Bluetooth Primary and AMP Controller....... 32
3.1.4 Composite Device Including Bluetooth Primary and AMP
Controller ...................................................................... 32
4 Device Firmware Upgrade................................................................. 33
5 Limitations.......................................................................................... 34
5.1 Power Specific Limitations ......................................................... 34
5.2 Other Limitations........................................................................ 34
6 Bluetooth Composite Device Implementation ................................ 35
6.1 Configurations ........................................................................... 35
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 59
Part C
SECURE DIGITAL (SD)
TRANSPORT LAYER
1 Introduction ........................................................................................ 43
2 Goals ................................................................................................... 44
2.1 Hardware Goals......................................................................... 44
2.2 Software Goals .......................................................................... 44
2.3 Configuration Goals ................................................................... 45
2.4 Configuration for Multiple Controllers ........................................ 45
3 Physical Interface Documents.......................................................... 46
4 Communication.................................................................................. 47
4.1 Overview.................................................................................... 47
Part D
THREE-WIRE UART TRANSPORT LAYER
1 General ............................................................................................... 54
2 Overview ............................................................................................. 55
3 Slip Layer............................................................................................ 56
3.1 Encoding a Packet..................................................................... 56
3.2 Decoding a Packet .................................................................... 56
4 Packet Header .................................................................................... 58
4.1 Sequence Number..................................................................... 58
4.2 Acknowledge Number ............................................................... 59
4.3 Data Integrity Check Present..................................................... 59
4.4 Reliable Packet.......................................................................... 59
4.5 Packet Type ............................................................................... 59
4.6 Payload Length.......................................................................... 60
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 60
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 61
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 62
Specification Volume 5
Core System Package
[AMP Controller volume]
Part A
802.11 PROTOCOL ADAPTATION LAYER FUNCTIONAL SPECIFICATION
1 Introduction ........................................................................................ 11
1.1 Organization of the 802.11 PAL ................................................. 11
2 AMP Host Controller Interface.......................................................... 13
2.1 Read Local Version Information Command ............................... 13
2.2 Read Local Amp Info Command ............................................... 13
2.3 Reset Command........................................................................ 16
2.4 Read Failed Contact Counter Command................................... 16
2.5 Read Link Quality Command..................................................... 16
2.6 Read RSSI Command ............................................................... 16
2.7 Short Range Mode Command ................................................... 17
2.8 Write Best Effort Flush Timeout Command ............................... 17
2.9 Read Best Effort Flush Timeout Command ............................... 18
2.10 Physical Link Loss Early Warning Event ................................... 18
2.11 Physical Link Recovery Event ................................................... 18
2.12 Channel Selected Event ............................................................ 18
2.13 Short Range Mode Change Complete Event ............................ 18
2.14 Data Structures .......................................................................... 19
2.14.1 AMP_ASSOC Structure ................................................ 19
2.14.2 MAC Address................................................................ 20
2.14.3 802.11 PAL Capabilities ................................................ 20
2.14.4 Preferred Channel List .................................................. 21
2.14.5 Connected Channel List................................................ 22
2.14.6 802.11 PAL Version....................................................... 23
2.14.7 Preferred Channel List v2 ............................................. 24
2.15 Connection Accept Timeout Configuration Parameter .............. 25
2.16 Enable Device Under Test Mode ............................................... 25
3 Physical Link Manager ...................................................................... 26
3.1 Physical Link State Machine ...................................................... 26
3.1.1 General rules ................................................................ 26
3.1.2 State Diagram ............................................................... 26
3.1.3 States ............................................................................ 27
3.1.4 Events ........................................................................... 28
3.1.5 Conditions ..................................................................... 28
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 63
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 64
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 65
Specification Volume 6
Core System Package [Low Energy Controller volume]
Part A
PHYSICAL LAYER SPECIFICATION
1 Scope .................................................................................................. 13
2 Frequency Bands and Channel Arrangement................................. 15
3 Transmitter Characteristics .............................................................. 16
3.1 Modulation Characteristics ........................................................ 16
3.2 Spurious Emissions ................................................................... 17
3.2.1 Modulation Spectrum .................................................... 17
3.2.2 In-band Spurious Emission ........................................... 17
3.2.3 Out-of-band Spurious Emission .................................... 18
3.3 Radio Frequency Tolerance....................................................... 18
4 Receiver Characteristics ................................................................... 19
4.1 Actual Sensitivity Level .............................................................. 19
4.2 Interference Performance .......................................................... 20
4.3 Out-of-Band Blocking ................................................................ 21
4.4 Intermodulation Characteristics ................................................. 21
4.5 Maximum Usable Level ............................................................. 22
4.6 Reference Signal Definition ....................................................... 22
Part B
LINK LAYER SPECIFICATION
1 General Description........................................................................... 30
1.1 Link Layer States ....................................................................... 30
1.1.1 State and Role Combination Restrictions ..................... 31
1.2 Bit Ordering ............................................................................... 32
1.3 Device Address ......................................................................... 33
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 66
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 67
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 68
Part C
SAMPLE DATA
1 Encryption sample data .................................................................. 122
1.1 Encrypt Command ................................................................... 124
1.2 Derivation of the MIC and Encrypted Data .............................. 124
Part D
MESSAGE SEQUENCE CHARTS
1 Introduction ...................................................................................... 131
1.1 Notation ................................................................................... 131
1.2 Control Flow ............................................................................ 132
1.3 Example MSC.......................................................................... 132
2 Standby State ................................................................................... 133
2.1 Initial Setup .............................................................................. 133
2.2 Random Device Address ......................................................... 134
2.3 White Lists ............................................................................... 134
2.4 Adding IRK to Resolving List ................................................... 135
2.5 Default Data Length................................................................. 135
3 Advertising State ............................................................................. 136
3.1 Undirected Advertising ............................................................ 136
3.2 Directed Advertising ................................................................ 137
4 Scanning State ................................................................................. 139
4.1 Passive Scanning .................................................................... 139
4.2 Active Scanning ....................................................................... 140
4.3 Passive Scanning for Directed Advertisements with Privacy... 141
4.4 Active Scanning with Privacy................................................... 142
4.5 Active Scanning with Privacy and Controller Based Resolvable
Private Address Generation .................................................... 143
5 Initiating State .................................................................................. 144
5.1 Initiating a Connection ............................................................. 144
5.2 Canceling an Initiation ............................................................. 145
5.3 Initiating a Connection using Undirected Advertising with
Privacy ..................................................................................... 146
5.4 Initiating a Connection using Directed Advertising with
Privacy ..................................................................................... 147
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 69
Part E
LOW ENERGY LINK LAYER SECURITY
1 Encryption and Authentication Overview...................................... 167
2 CCM................................................................................................... 168
2.1 CCM Nonce ............................................................................. 168
2.2 Counter Mode Blocks .............................................................. 169
2.3 Encryption Blocks .................................................................... 170
Part F
DIRECT TEST MODE
1 Introduction ...................................................................................... 173
2 Low Energy Test Scenarios ............................................................ 174
2.1 Test Sequences ....................................................................... 174
2.2 Message Sequence Charts ..................................................... 175
3 UART Test Interface......................................................................... 176
3.1 UART Interface Characteristics ............................................... 176
3.2 UART Functional Description .................................................. 176
3.3 Commands and Events ........................................................... 177
3.3.1 Command and Event Behavior ................................... 177
3.3.2 Commands.................................................................. 177
3.4 Events...................................................................................... 179
3.4.1 LE_Test_Status_Event................................................ 180
3.4.2 LE_Packet_Report_Event........................................... 180
3.5 Timing – Command and Event ................................................ 181
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 70
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 71
Specification Volume 7
Core System Package [Wireless Coexistence volume]
Part A
MWS COEXISTENCE LOGICAL SIGNALING SPECIFICATION
1 Introduction .......................................................................................... 8
2 Logical Interface .................................................................................. 9
2.1 Coexistence Signals .................................................................... 9
2.1.1 FRAME_SYNC ............................................................... 9
2.1.2 MWS_RX ...................................................................... 10
2.1.3 BLUETOOTH_RX_PRI ................................................. 10
2.1.4 BLUETOOTH_TX_ON .................................................. 11
2.1.5 MWS_PATTERN........................................................... 11
2.1.6 MWS_TX....................................................................... 11
2.1.7 802_TX_ON .................................................................. 11
2.1.8 802_RX_PRI ................................................................. 12
2.1.9 MWS_INACTIVITY_DURATION................................... 12
2.1.10 MWS_SCAN_FREQUENCY......................................... 12
2.2 Tolerances for Offsets and Jitter ................................................ 12
Part B
WIRELESS COEXISTENCE INTERFACE 1 (WCI-1) TRANSPORT
SPECIFICATION
1 Introduction ........................................................................................ 18
2 Physical Layer.................................................................................... 19
2.1 Physical Signal Specifications (Informative) .............................. 20
3 Transport Layer.................................................................................. 22
3.1 Message Types ......................................................................... 22
3.1.1 Real-time Signal Message (Type 0).............................. 23
3.1.2 Transport Control Message (Type 1) ............................ 24
3.1.3 Transparent Data Message (Type 2) ............................ 24
3.1.4 MWS Inactivity Duration Message (Type 3).................. 25
3.1.5 MWS Scan Frequency Message (Type 4) .................... 25
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part A] page 72
Part C
WIRELESS COEXISTENCE INTERFACE 2 (WCI-2) TRANSPORT
SPECIFICATION
1 Introduction ........................................................................................ 28
2 Physical Layer.................................................................................... 29
3 Transport Layer.................................................................................. 30
3.1 Message Types ......................................................................... 30
3.1.1 Real-time Signal Message (Type 0).............................. 31
3.1.2 Transport Control Message (Type 1) ............................ 32
3.1.3 Transparent Data Message (Type 2) ............................ 32
3.1.4 MWS Inactivity Duration Message (Type 3).................. 33
3.1.5 MWS Scan Frequency Message (Type 4) .................... 33
02 December 2014
Bluetooth SIG Proprietary
Master Table of Contents & Compliance Requirements
Part B
PART B: BLUETOOTH
COMPLIANCE REQUIREMENTS
CONTENTS
1 Introduction ........................................................................................ 75
2 Scope .................................................................................................. 76
3 Definitions .......................................................................................... 77
3.1 Types of Bluetooth Products...................................................... 77
3.1.1 Bluetooth End Product .................................................. 78
3.1.2 Bluetooth Subsystem Product....................................... 78
3.1.2.1 Bluetooth Host Subsystem Product................ 79
3.1.2.2 Bluetooth Controller Subsystem Product ....... 80
3.1.2.3 Bluetooth Profile Subsystem Product ............. 81
3.1.3 Bluetooth Component Product...................................... 81
3.1.4 Bluetooth Development Tool ......................................... 81
3.1.5 Bluetooth Test Equipment ............................................. 81
4 Core Configurations .......................................................................... 82
4.1 Basic Rate Core Configuration .................................................. 82
4.2 Enhanced Data Rate Core Configurations ................................ 83
4.3 High Speed Core Configuration ................................................. 84
4.4 Low Energy Core Configuration ................................................ 85
4.5 Basic Rate and Low Energy Combined Core Configuration...... 86
4.6 Host Controller Interface Core Configuration............................. 87
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part B] page 75
1 INTRODUCTION
2 SCOPE
This part of the specification defines some fundamental concepts used in the
Bluetooth Qualification Program.
3 DEFINITIONS
Table 3.1 defines abbreviations for the different Core Configurations defined in
Section 4 on page 82.
Section
Abbreviation Explanation Reference
BR and LE Bluetooth Basic Rate and Low Energy Combined Core Section 4.5
Combined CC Configuration
Using the abbreviations in Table 3.1 the following tables define Bluetooth
product types in terms of Core Configurations. For the respective Core
Configuration, the letter “M” indicates that it is mandatory to claim support, “O”
indicates that it is optional to claim support, “P” indicates that it is optionally
permitted to claim only partial support of the Core Configuration, “I” indicates
that the Core Configuration is inherently included in the combined Core
Configuration, “X” indicates that support for the Core Configuration shall not be
claimed.
BR and LE
BR CC EDR CC HS CC Combined CC LE CC HCI CC
BR End Product M P P X X O
HS End Product M M M X X O
LE End Product X X X X M O
BR and LE
I P P M I O
End Product
EDR and LE
I M P M I O
End Product
HS and LE
I M M M I O
End Product
The required configuration for each Bluetooth Host Subsystem Product type is
listed in Table 3.3.
BR and LE
BR CC HS CC Combined CC LE CC
Host Parts Host Parts Host Parts Host Parts HCI CC
BR/EDR Host
M P X X M
Subsystem Product
HS Host
M M X X M
Subsystem Product
LE Host
X X X M M
Subsystem Product
HS and LE Host
I M M I M
Subsystem Product
Table 3.3: Required configuration per Bluetooth Host Subsystem Product type
BR and LE
BR CC EDR CC HS CC Combined CC LE CC
Controller Controller Controller Controller Controller HCI
Parts Parts Parts Parts Parts CC
BR Controller
Subsystem M P P X X M
Product
EDR Control-
ler Subsys- M M P X X M
tem Product
HS Controller
Subsystem M M M X X M
Product
HS only Con-
troller Subsys- X X M X X M
tem Product
LE Controller
Subsystem X X X X M M
Product
BR and LE
Controller
I P P M I M
Subsystem
Product
EDR and LE
Controller
I M P M I M
Subsystem
Product
HS and LE
Controller
I M M M I M
Subsystem
Product
Table 3.4: Required configuration per Bluetooth Controller Subsystem Product type
4 CORE CONFIGURATIONS
This section defines the set of features that are required for a product to be
qualified to a specification name. The Core Specification version number is
simply the version number of the specification itself.
Host Part:
L2CAP ([Vol. 3] Part A) L2CAP Signaling Channel (CID 0x0001) and all mandatory
features associated with it
GATT ([Vol. 3] Part G) GATT is mandatory when ATT is supported. When supported,
all mandatory features
GAP ([Vol. 3] Part C) All mandatory features in sections 2 through 8 and section 15
Table 4.1: BR Core Configuration Host requirements
Controller Part:
Host Part:
Controller Part:
Host Part:
L2CAP ([Vol. 3] Part A) If the GAP Peripheral or Central role is supported, L2CAP LE
Signaling Channel (CID 0x0005) and all mandatory features
associated with it
GAP ([Vol. 3] Part C) All mandatory features for at least one of the LE GAP roles
(Broadcaster, Observer, Peripheral or Central) in sections 9-12
and section 15
ATT ([Vol. 3] Part F) If the GAP Peripheral or Central role is supported, all manda-
tory features
GATT ([Vol. 3] Part G) GATT is mandatory when ATT is supported. When supported,
all mandatory features
SM ([Vol. 3] Part H) If the GAP Peripheral or Central role is supported, all manda-
tory features
Controller Part:
To claim support for the “Basic Rate and Low Energy” Core Configuration, an
implementation must support a set of Required Features, according to the
details inTable 4.8 and Table 4.9.
Host Part:
Controller Part:
HCI ([Vol. 2] Part E) All the supported features in the implementation shall be
compliant to the Host Controller Interface.
PART C: APPENDIX
Appendix
CONTENTS
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part C] page 90
Appendix
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 0, Part C] page 91
Appendix
1 REVISION HISTORY
Beginning with v1.2 of the Core System Package the core Bluetooth
specification documents, protocols and profiles were transferred to a new
partitioning comprising volumes and individual profile specifications are each
contained in an individual document instead of the two volumes (Core and
Profiles) used in v1.1.
v2.1 + EDR July 26 2007 No content changes. Updates to the Table of Contents.
Appendix
Appendix
Appendix
Appendix
June 30
4.0 Incorporated errata
2010
Updated the USB and SDIO HCI Transport protocols for high
April 21
3.0 + HS speed, support composite BR/EDR + AMP devices, and to
2009
include errata.
Appendix
2 CONTRIBUTORS
Appendix
Appendix
Appendix
Appendix
Appendix
Version 3.0 + HS
Phil Hough Anritsu
Edward Harrison Anritsu
Robert Hulvey Broadcom
Shawn Ding Broadcom
Mark Braun Motorola
Joel Linsky Qualcomm
Eran Reuveni TI
Version 1.2
Tom Siep Bluetooth SIG Inc.
Jennifer Bray CSR
Robin Heydon CSR
Morten Gade Digianswer/Motorola
Henrik Hedlund Ericsson
Stefan Agnani Ericsson
Robert Kokke Ericsson
Roland Hellfajer Infineon
Thomas Müller Nokia
Antonio Salloum Philips
Joel Linsky Silicon Wave
Steven Hall Silicon Wave
Oren Eliezer Texas Instruments
Mike Fitton Toshiba
Previous versions
Steve Williams 3Com Corporation
Todor V. Cooklov Aware
Poul Hove Kristensen Digianswer A/S
Appendix
Appendix
Version 4.1
John Padgette Accenture
Prasanna Desai Broadcom
Shawn Ding Broadcom
Steven Hall Broadcom
Farooq Hameed Broadcom
Robert Hulvey Broadcom
Knut Odman Broadcom
Erik Rivard Broadcom
Mayank Batra CSR
Joe Decuir CSR
Ian Jones CSR
Sean Mitchell CSR
Ross O'Connor CSR
Steven Singer CSR
Dishant Srivastava CSR
Steven Wenham CSR
Leif Wilhelmsson Ericsson
Oren Haggai Intel
Marcel Holtmann Intel
Sharon Yang Intel
Josselin de la Broise Marvell
L. C. Ko MediaTek
Huanchun Ye MediaTek
Lily Chen NIST
Kaisa Nyberg Nokia
Tsuyoshi Okada Panasonic Corporation
Olaf Hirsch Qualcomm Atheros
Joel Linsky Qualcomm Atheros
Cameron McDonald Qualcomm Atheros
Brian A. Redding Qualcomm Atheros
Jean-Philippe Lambert RivieraWaves
Clive D. W. Feather Samsung Electronics
Kyong-Sok Seo Samsung Electronics Co. Ltd
Andrew Estrada Sony Corporation
Masahiko Seki Sony Corporation
Jorgen van Parijs ST Ericsson
Yves Wernaers ST-Ericsson
Alon Cheifetz Texas Instruments
Alon Paycher Texas Instruments
Rod Kimmell X6D, Inc.
Appendix
Appendix
Version 1.2
P G Madhavan Agere
Hongbing Gan Bandspeed, Inc.
Tod Sizer Bell Labs
Alexander Thoukydides CSR
Jennifer Bray CSR
Robin Heydon CSR
Kim Schneider Digianswer/Motorola
Knud Dyring-Olsen Digianswer/Motorola
Niels Nielsen Digianswer/Motorola
Henrik Andersen Digianswer/Motorola
Christian Gehrmann Ericsson
Henrik Hedlund Ericsson
Jan Åberg Ericsson
Martin van der Zee Ericsson
Rakesh Taori Ericsson
Jaap Haartsen Ericsson
Stefan Zürbes Ericsson
Roland Hellfajer Infineon
YC Maa Integrated Programmable Communications, Inc.
HungKun Chen Integrated Programmable Communications, Inc.
Steve McGowan Intel
Adrian Stephens Mobilian Corporation
Jim Lansford Mobilian Corporation
Eric Meihofer Motorola
Arto Palin Nokia
Carmen Kühl Nokia
Hannu Laine Nokia
Jürgen Schnitzler Nokia
Päivi Ruuska Nokia
Thomas Müller Nokia
Antonio Salloum Philips
Harmke de Groot Philips
Marianne van de Casteelee Philips
Rob Davies Philips
Roland Matthijssen Philips
Appendix
Previous versions
Kevin D. Marquess Hyper Corporation
Chatschik Bisdikian IBM Corporation
Kris Fleming Intel Corporation
James P. Gilb Mobilian
David E. Cypher NIST
Nada Golmie NIST
Olaf Joeressen Nokia Corporation
Thomas Müller Nokia Corporation
Charlie Mellone Motorola, Inc.
Harmke de Groot Philips
Terry Bourk Silicon Wave
Steven J. Shellhammer Symbol
Jaap Haartsen Telefonaktiebolaget LM Ericsson
Henrik Hedlund (Section Owner) Telefonaktiebolaget LM Ericsson
Tobias Melin Telefonaktiebolaget LM Ericsson
Joakim Persson Telefonaktiebolaget LM Ericsson
Mary A. DuVal Texas Instruments
Onn Haran Texas Instruments
Thomas M. Siep Texas Instruments
Ayse Findikli Zeevo, Inc.
Appendix
Appendix
Version 4.1
Joakim Linde Apple
Shawn Ding Broadcom
Prasanna Desai Broadcom
Steven Hall Broadcom
Farooq Hameed Broadcom
Robert Hulvey Broadcom
Knut Odman Broadcom
Angel Polo Broadcom
Erik Rivard Broadcom
Mayank Batra CSR
Joe Decuir CSR
Tim Howes CSR
Ian Jones CSR
Sean Mitchell CSR
Ross O'Connor CSR
Steven Singer CSR
Dishant Srivastava CSR
Jonathan Tanner CSR
Steven Wenham CSR
Leif Wilhelmsson Ericsson
Magnus Eriksson Intel
Marcel Holtmann Intel
Sharon Yang Intel
Josselin de la Broise Marvell
L. C. Ko MediaTek
Huanchun Ye MediaTek
Krishna Singala Mindtree
Lily Chen NIST
Kaisa Nyberg Nokia
Tsuyoshi Okada Panasonic Corporation
Niclas Granqvist Polar
Olaf Hirsch Qualcomm Atheros
Joel Linsky Qualcomm Atheros
Cameron McDonald Qualcomm Atheros
Brian ReddingBrian A. Redding Qualcomm Atheros
Jean-Philippe Lambert RivieraWaves
Rasmus Abildgren Samsung Electronics
Clive D. W. Feather Samsung Electronics
Kyong-Sok Seo Samsung Electronics Co. Ltd
Andrew Estrada Sony Corporation
Masahiko Seki Sony Corporation
Jorgen van Parijs ST Ericsson
Appendix
Version 4.0
Robin Heydon CSR
Steven Wenham CSR
Kanji Kerai Nokia
Steve Davies Nokia
Tim Howes Nokia
Brian A. Redding Qualcomm
Joel Linsky Qualcomm
Alon Paycher Texas Instruments
Version 3.0 + HS
Phil Hough Anritsu
Edward Harrison Anritsu
Shawn Ding Broadcom
Robert Hulvey Broadcom
Mark Braun Motorola
Joel Linsky Qualcomm
Eran Reuveni TI
Appendix
Version 1.2
Jennifer Bray CSR
Robin Heydon CSR
Simon Morris CSR
Alexander Thoukydides CSR
Kim Schneider Digianswer/Motorola
Knud Dyring-Olsen Digianswer/Motorola
Henrik Andersen Digianswer/Motorola
Jan Åberg Ericsson
Martin van der Zee Ericsson
Roland Hellfajer Infineon
YC Maa Integrated Programmable Communications, Inc.
Steve McGowan Intel
Tod Sizer Lucent Technologies
Adrian Stephens Mobilian
Appendix
Previous versions
Kim Schneider Digianswer A/S
Toru Aihara IBM Corporation
Chatschik Bisdikian IBM Corporation
Kris Fleming Intel Corporation
David E. Cypher NIST
Thomas Busse Nokia Corporation
Julien Corthial Nokia Corporation
Olaf Joeressen Nokia Corporation
Thomas Müller Nokia Corporation
Dong Nguyen Nokia Corporation
Harmke de Groot Philips
Terry Bourk Silicon Wave
Johannes Elg Telefonaktiebolaget LM Ericsson
Jaap Haartsen Telefonaktiebolaget LM Ericsson
Tobias Melin (Section Owner) Telefonaktiebolaget LM Ericsson
Mary A. DuVal Texas Instruments
Onn Haran Texas Instruments
John Mersh TTPCom
Appendix
Version 4.1
Shawn Ding Broadcom
Steven Hall Broadcom
Knut Odman Broadcom
Angel Polo Broadcom
Mayank Batra CSR
Joe Decuir CSR
Giriraj Goyal CSR
Neil Stewart CSR
Leif Wilhelmsson Ericsson
Harish Balasubramaniam Intel
Magnus Eriksson Intel
Sharon Yang Intel
Olaf Hirsch Qualcomm Atheros
Joel Linsky Qualcomm Atheros
Jean-Philippe Lambert RivieraWaves
Clive D. W. Feather Samsung Electronics
Jorgen van Parijs ST Ericsson
Yves Wernaers ST-Ericsson
Alon Cheifetz Texas Instruments
Jason Hillyard Wicentric
Version 4.0
Robert Hulvey Broadcom
Steven Wenham CSR
Kanji Kerai Nokia
Steve Davies Nokia
Tim Howes Nokia
Brian A. Redding Qualcomm
Joel Linsky Qualcomm
Geert Sonck ST Ericsson
Appendix
Version 3.0 + HS
Phil Hough Anritsu
Kevin Hayes Atheros
Stratos Chatzikyriakos Artimi
Shawn Ding Broadcom
Joe Decuir CSR
David Suvak iAnywhere
Koen Derom NXP Semiconductors
Joel Linsky Qualcomm
Krishnan Rajamani Qualcomm
John Hillan Qualcomm
Mayank Sharma SiRF
Jason Hillyard Staccato Communications
William Stoye Staccato Communications
Appendix
Version 1.2
Robin Heydon (section owner) CSR
Roland Hellfajer Infineon
Joel Linsky Silicon Wave
John Mersh TTPCom
This part was earlier included in the LMP and HCI functional Specifications.
Appendix
Version 4.2
Edward Harrison Anritsu
Phil Hough Anritsu
Sriram Hariharan Apple
Angel Polo Broadcom
Mayank Batra CSR
Joe Decuir CSR
Giriraj Goyal CSR
Robin Heydon CSR
Jonathan Tanner CSR
Harish Balasubramaniam Intel
Magnus Eriksson Intel
Marcel Holtmann Intel
Yao Wang IVT Corporation
Frank Berntsen Nordic Semiconductor
David Engelien-Lopes Nordic Semiconductor
Rasmus Abildgren Samsung Electronics
Clive D.W. Feather Samsung Electronics
Ed Callaway Sunrise Micro Devices
Joel Linsky Qualcomm Atheros
Brian A. Redding Qualcomm Atheros
Jean-Philippe Lambert RivieraWaves
Jason Hillyard Wicentric
Version 4.1
John Padgette Accenture
Joakim Linde Apple
Prasanna Desai Broadcom
Shawn Ding Broadcom
Steven Hall Broadcom
Farooq Hameed Broadcom
Robert Hulvey Broadcom
Knut Odman Broadcom
Angel Polo Broadcom
Erik Rivard Broadcom
Mayank Batra CSR
Joe Decuir CSR
Giriraj Goyal CSR
Robin Heydon CSR
Tim Howes CSR
Ian Jones CSR
Sean Mitchell CSR
Ross O'Connor CSR
Appendix
Version 4.0
Edward Harrison Anritsu
Kevin Hayes Atheros
Joe Decuir CSR
Appendix
Version 3.0 + HS
Phil Hough Anritsu
Kevin Hayes Atheros
Stratos Chatzikyriakos Artimi
Angel Polo Broadcom
Shawn Ding Broadcom
Victor Zhodzishsky Broadcom
Joe Decuir CSR
David Suvak iAnywhere
Dominique Everaere ST-NXP Wireless
Yao Wang IVT
Koen Derom NXP Semiconductors
Ana Donezar Ibanez Parrot
Joel Linsky Qualcomm
John Hillan Qualcomm
Krishnan Rajamani Qualcomm
Mayank Sharma SiRF
Jason Hillyard Staccato Communications
William Stoye Staccato Communications
Doug Clark Symbian
Appendix
Version 1.2
Robin Heydon (section owner CSR
Jennifer Bray CSR
Alexander Thoukydides CSR
Knud Dyring-Olsen Digianswer/Motorola
Henrik Andersen Digianswer/Motorola
Appendix
Appendix
Appendix
Version 4.1
John Padgette Accenture
Prasanna Desai Broadcom
Farooq Hameed Broadcom
Robert Hulvey Broadcom
Erik Rivard Broadcom
Mayank Batra CSR
Ian Jones CSR
Sean Mitchell CSR
Ross O'Connor CSR
Steven Singer CSR
Dishant Srivastava CSR
Steven Wenham CSR
Marcel Holtmann Intel
Josselin De La Broise Marvell
Lily Chen NIST
Kaisa Nyberg Nokia
Tsuyoshi Okada Panasonic Corporation
Joel Linsky Qualcomm Atheros
Cameron McDonald Qualcomm Atheros
Brian A. Redding Qualcomm Atheros
Jean-Philippe Lambert RivieraWaves
Clive D. W. Feather Samsung Electronics
Kyong-Sok Seo Samsung Electronics Co. Ltd
Andrew Estrada Sony Corporation
Masahiko Seki Sony Corporation
Alon Cheifetz Texas Instruments
Alon Paycher Texas Instruments
Rod Kimmell X6D, Inc.
Appendix
Version 3.0 + HS
Phil Hough Anritsu
Kevin Hayes Atheros
Stratos Chatzikyriakos Artimi
Shawn Ding Broadcom
Joe Decuir CSR
David Suvak iAnywhere
Koen Derom NXP Semiconductors
Joel Linsky Qualcomm
Krishnan Rajamani Qualcomm
John Hillan Qualcomm
Mayank Sharma SiRF
Jason Hillyard Staccato Communications
William Stoye Staccato Communications
Appendix
Version 1.2
Tom Siep Bluetooth SIG Inc.
Robin Heydon (section owner) CSR
Simon Morris CSR
Jan Åberg Ericsson
Christian Gehrmann Ericsson
Joel Linsky Silicon Wave
John Mersh TTPCom
Previous versions
Todor Cooklev 3Com Corporation
Toru Aihara IBM Corporation
Chatschik Bisdikian IBM Corporation
Nathan Lee IBM Corporation
Kris Fleming Intel Corporation
Greg Muchnik Motorola, Inc.
David E. Cypher NIST
Thomas Busse Nokia Corporation
Dong Nguyen (Section Owner) Nokia Corporation
Fujio Watanabe Nokia Corporation
Christian Johansson Telefonaktiebolaget LM Ericsson
Tobias Melin Telefonaktiebolaget LM Ericsson
Mary A. DuVal Texas Instruments
Appendix
Version 4.1
John Padgette Accenture
Prasanna Desai Broadcom
Farooq Hameed Broadcom
Robert Hulvey Broadcom
Erik Rivard Broadcom
Mayank Batra CSR
Ian Jones CSR
Sean Mitchell CSR
Ross O'Connor CSR
Steven Singer CSR
Dishant Srivastava CSR
Steven Wenham CSR
Marcel Holtmann Intel
Josselin De La Broise Marvell
Lily Chen NIST
Kaisa Nyberg Nokia
Tsuyoshi Okada Panasonic Corporation
Joel Linsky Qualcomm Atheros
Cameron McDonald Qualcomm Atheros
Brian A. Redding Qualcomm Atheros
Jean-Philippe Lambert RivieraWaves
Clive D. W. Feather Samsung Electronics
Kyong-Sok Seo Samsung Electronics Co. Ltd
Andrew Estrada Sony Corporation
Masahiko Seki Sony Corporation
Alon Cheifetz Texas Instruments
Alon Paycher Texas Instruments
Rod Kimmell X6D, Inc.
Version 3.0 + HS
Kevin Hayes Atheros
Robert Hulvey Broadcom
Yao Wang IVT
Joel Linsky Qualcomm
John Saad Qualcomm
Appendix
Version 1.2
Joel Linsky Silicon Wave
Previous versions
Thomas Müller Nokia Corporation
Thomas Sander Nokia Corporation
Joakim Persson (Section Owner) Telefonaktiebolaget LM Ericsson
Appendix
Version 4.2
Sriram Hariharan Apple
Angel Polo Broadcom
Mayank Batra CSR
Joe Decuir CSR
Giriraj Goyal CSR
Robin Heydon CSR
Harish Balasubramaniam Intel
Marcel Holtmann Intel
Yao Wang IVT Corporation
Frank Berntsen Nordic Semiconductor
David Engelien-Lopes Nordic Semiconductor
Rasmus Abildgren Samsung Electronics
Joel Linsky Qualcomm Atheros
Brian A. Redding Qualcomm Atheros
Jason Hillyard Wicentric
Version 4.1
John Padgette Accenture
Prasanna Desai Broadcom
Robert Hulvey Broadcom
Erik Rivard Broadcom
Mayank Batra CSR
Ian Jones CSR
Sean Mitchell CSR
Ross O'Connor CSR
Steven Singer CSR
Steven Wenham CSR
Marcel Holtmann Intel
Josselin De La Broise Marvell
Lily Chen NIST
Kaisa Nyberg Nokia
Joel Linsky Qualcomm Atheros
Cameron McDonald Qualcomm Atheros
Jean-Philippe Lambert RivieraWaves
Clive D. W. Feather Samsung Electronics
Alon Cheifetz Texas Instruments
Alon Paycher Texas Instruments
Appendix
Version 3.0 + HS
Phil Hough Anritsu
Edward Harrison Anritsu
Kevin Hayes Atheros
Shawn Ding Broadcom
Robert Hulvey Broadcom
Yao Wang IVT
Mark Braun Motorola
Kaisa Nyberg Nokia
John Saad Qualcomm
Joel Linsky Qualcomm
Eran Reuveni TI
Appendix
Appendix
Version 4.2
Sriram Hariharan Apple
Angel Polo Broadcom
Mayank Batra CSR
Joe Decuir CSR
Giriraj Goyal CSR
Robin Heydon CSR
Harish Balasubramaniam Intel
Marcel Holtmann Intel
Yao Wang IVT Corporation
Frank Berntsen Nordic Semiconductor
David Engelien-Lopes Nordic Semiconductor
Rasmus Abildgren Samsung Electronics
Joel Linsky Qualcomm Atheros
Brian A. Redding Qualcomm Atheros
Jason Hillyard Wicentric
Version 4.1
Leonid Eidelman Broadcom
Ash Kapur Broadcom
Angel Polo Broadcom
Mayank Batra CSR
Chris Church CSR
Giriraj Goyal CSR
Robin Heydon CSR
Tim Howes CSR
Neil Stewart CSR
Harish Balasubramaniam Intel
Magnus Eriksson Intel
Oren Haggai Intel
Marcel Holtmann Intel
Robert Hughes Intel
Yao Wang IVT
Josselin De La Broise Marvell
Anindya Bakshi Mindtree
Shwetha Madadik Mindtree
Krishna Singala Mindtree
Niclas Granqvist Polar
Joel Linsky Qualcomm Atheros
Brian A. Redding Qualcomm Atheros
Jean-Philippe Lambert RivieraWaves
Appendix
Version 4.0
Xavier Boniface Alpwise
Alexandre Gimard Alpwise
Ash Kapur Broadcom
Robert Hulvey Broadcom
Joe Decuir CSR
Laurence Jupp CSR
Magnus Sommansson CSR
Robin Heydon CSR
Dave Suvak iAnywhere
James Dent Nokia
James Steele Nokia
Jonathan Tanner Nokia
Kanji Kerai Nokia
Miika Laaksonen Nokia
Steve Davies Nokia
Tim Howes Nokia
David Lopes Nordic Semiconductor
Brian A. Redding Qualcomm
Joel Linsky Qualcomm
Terry Bourk Qualcomm
Andy Estrada Sony
Karl Torvmark Texas Instruments
Version 3.0 + HS
Victor Zhodzishsky Broadcom
Angel Polo Broadcom
Ash Kapur Broadcom
Robert Hulvey Broadcom
Ken Steck CSR
Dave Suvak iAnywhere
Yao Wang IVT
Jacques Chassot Logitech
Nathan Sherman Microsoft
Sandy Spinrad Microsoft
Doug Clarke Nokia
Kanji Kerai Nokia
Ana Donezar Ibanez Parrot
Joel Linksy Qualcomm
Andy Estrada Sony
Dominique Everaere ST-NXP Wireless
Appendix
Version 1.2
Tom Siep Bluetooth SIG Inc.
Carsten Andersen (section owner) CSR
Jennifer Bray CSR
Jan Åberg Ericsson
Martin van der Zee Ericsson
Sam Ravnborg Ericsson
Stefan Agnani Ericsson
Steve McGowan Intel Corporation
Appendix
Previous versions
Jon Burgess 3Com Corporation
Paul Moran 3Com Corporation
Doug Kogan Extended Systems
Kevin D. Marquess Hyper Corporation
Toru Aihara IBM Corporation
Chatschik Bisdikian IBM Corporation
Kris Fleming Intel Corporation
Uma Gadamsetty Intel Corporation
Robert Hunter Intel Corporation
Jon Inouye Intel Corporation
Steve C. Lo Intel Corporation
Chunrong Zhu Intel Corporation
Sergey Solyanik Microsoft Corporation
David E. Cypher NIST
Nada Golmie NIST
Thomas Busse Nokia Corporation
Rauno Makinen Nokia Corporation
Thomas Müller Nokia Corporation
Petri Nykänen Nokia Corporation
Peter Ollikainen Nokia Corporation
Petri O. Nurminen Nokia Corporation
Johannes Elg Telefonaktiebolaget LM Ericsson
Jaap Haartsen Telefonaktiebolaget LM Ericsson
Elco Nijboer Telefonaktiebolaget LM Ericsson
Ingemar Nilsson Telefonaktiebolaget LM Ericsson
Stefan Runesson Telefonaktiebolaget LM Ericsson
Gerrit Slot Telefonaktiebolaget LM Ericsson
Johan Sörensen Telefonaktiebolaget LM Ericsson
Goran Svennarp Telefonaktiebolaget LM Ericsson
Mary A. DuVal Texas Instruments
Thomas M. Siep Texas Instruments
Kinoshita Katsuhiro Toshiba Corporation
Appendix
Version 4.1
Joakim Linde Apple
Robert Hulvey Broadcom
Angel Polo Broadcom
Mayank Batra CSR
Tim Howes CSR
Jonathan Tanner CSR
Magnus Eriksson Intel
Krishna Singala Mindtree
Niclas Granqvist Polar
Joel Linsky Qualcomm Atheros
Brian A. Redding Qualcomm Atheros
Rasmus Abildgren Samsung Electronics
Previous versions
Ned Plasson 3Com Corporation
John Avery Convergence
Jason Kronz Convergence
Chatschik Bisdikian IBM Corporation
Parviz Kermani IBM Corporation
Brent Miller IBM Corporation
Dick Osterman IBM Corporation
Bob Pascoe IBM Corporation
Jon Inouye Intel Corporation
Srikanth Kambhatla Intel Corporation
Jay Eaglstun Motorola, Inc.
Dale Farnsworth (Section Owner) Motorola, Inc.
Jean-Michel Rosso Motorola, Inc.
Jan Grönholm Nokia Corporation
Kati Rantala Nokia Corporation
Thomas Müller Nokia Corporation
Johannes Elg Telefonaktiebolaget LM Ericsson
Kazuaki Iwamura Toshiba Corporation
Appendix
Version 4.2
Sriram Hariharan Apple
Angel Polo Broadcom
Mayank Batra CSR
Joe Decuir CSR
Giriraj Goyal CSR
Robin Heydon CSR
Jonathan Tanner CSR
Harish Balasubramaniam Intel
Marcel Holtmann Intel
Yao Wang IVT Corporation
Frank Berntsen Nordic Semiconductor
David Engelien-Lopes Nordic Semiconductor
Rasmus Abildgren Samsung Electronics
Joel Linsky Qualcomm Atheros
Brian A. Redding Qualcomm Atheros
Jason Hillyard Wicentric
Version 4.1
John Padgette Accenture
Joakim Linde Apple
Prasanna Desai Broadcom
Farooq Hameed Broadcom
Robert Hulvey Broadcom
Angel Polo Broadcom
Erik Rivard Broadcom
Mayank Batra CSR
Joe Decuir CSR
Giriraj Goyal CSR
Tim Howes CSR
Ian Jones CSR
Sean Mitchell CSR
Krishnan Nair CSR
Ross O'Connor CSR
Steven Singer CSR
Dishant Srivastava CSR
Neil Stewart CSR
Jonathan Tanner CSR
Steven Wenham CSR
Harish Balasubramaniam Intel
Magnus Eriksson Intel
Oren Haggai Intel
Marcel Holtmann Intel
Appendix
Version 4.0
Alexandre Gimard Alpwise
Xavier Boniface Alpwise
Mike Tsai Atheros
John Padgette Booz Allen Hamilton
Ash Kapur Broadcom
Norbert Grunert Broadcom
Robert Hulvey Broadcom
Shawn Ding Broadcom
Burch Seymour Continental Automotive
Joe Decuir CSR
Magnus Sommansson CSR
Nick Hunn CSR
Robin Heydon CSR
Steven Wenham CSR
David Suvak iAnywhere
Chiu-Mien Chi ISSC
Anindya Bakshi MindTree
Ashok Kelur MindTree
Appendix
Appendix
Version 3.0 + HS
Robert Hulvey Broadcom
Ken Steck CSR
Jacques Chassot Logitech
Nathan Sherman Microsoft
Sandy Spinrad Microsoft
Kanji Kerai Nokia
Joel Linksy Qualcomm
Andy Estrada Sony
Version 1.2
Jennifer Bray CSR
Alexander Thoukydides CSR
Christian Gehrmann Ericsson
Henrik Hedlund Ericsson
Jan Åberg Ericsson
Stefan Agnani Ericsson
Thomas Müller Nokia
Joel Linsky Silicon Wave
Terry Bourk Silicon Wave
Katsuhiro Kinoshita Toshiba
Previous versions
Ken Morley 3Com Corporation
Chatschik Bisdikian IBM Corporation
Jon Inouye Intel Corporation
Brian A. Redding Motorola, Inc.
David E. Cypher NIST
Stephane Bouet Nokia Corporation
Thomas Müller Nokia Corporation
Martin Roter Nokia Corporation
Johannes Elg Telefonaktiebolaget LM Ericsson
Patric Lind (Section Owner) Telefonaktiebolaget LM Ericsson
Erik Slotboom Telefonaktiebolaget LM Ericsson
Johan Sörensen Telefonaktiebolaget LM Ericsson
Appendix
Version 3.0 + HS
Phil Hough Anritsu
Edward Harrison Anritsu
Angus Robinson Anritsu
Kevin Hayes Atheros
Stratos Chatzikyriakos Artimi
Shawn Ding Broadcom
Robert Hulvey Broadcom
Yao Wang IVT
Joe Decuir CSR
Mark Braun Motorola
Joel Linsky Qualcomm
Eran Reuveni TI
Version 1.2
Emilio Mira Escartis Cetecom
Robin Heydon CSR
Jennifer Bray CSR
Stefan Agnani (section owner) Ericsson
Terry Bourk Silicon Wave
Joel Linsky Silicon Wave
Michael Hasling Tality
Appendix
Version 3.0 + HS
Kevin Hayes Atheros
Robert Hulvey Broadcom
Dave Suvak iAnywhere
Yao Wang IVT
Doug Clark Nokia
Kaisa Nyberg Nokia
James Steele Nokia
Joel Linsky Qualcomm
John Saad Qualcomm
Version 4.1
Joakim Linde Apple
Robert Hulvey Broadcom
Angel Polo Broadcom
Mayank Batra CSR
Tim Howes CSR
Jonathan Tanner CSR
Magnus Eriksson Intel
Krishna Singala Mindtree
Niclas Granqvist Polar
Joel Linsky Qualcomm Atheros
Brian A. Redding Qualcomm Atheros
Rasmus Abildgren Samsung Electronics
Version 4.0
Alexandre Gimard Alpwise
Xavier Boniface Alpwise
Ash Kapur Broadcom
Norbert Grunert Broadcom
Srikanth Uppala Broadcom
Burch Seymour Continental Automotive
Joe Decuir CSR
Appendix
Version 4.1
Joakim Linde Apple
Robert Hulvey Broadcom
Angel Polo Broadcom
Mayank Batra CSR
Tim Howes CSR
Jonathan Tanner CSR
Magnus Eriksson Intel
Oren Haggai Intel
Krishna Singala Mindtree
Niclas Granqvist Polar
Joel Linsky Qualcomm Atheros
Brian A. Redding Qualcomm Atheros
Rasmus Abildgren Samsung Electronics
Appendix
Version 4.0
Alexandre Gimard Alpwise
Xavier Boniface Alpwise
Ash Kapur Broadcom
Norbert Grunert Broadcom
Srikanth Uppala Broadcom
Mats Andersson connectBlue
Burch Seymour Continental Automotive
Joe Decuir CSR
Laurence Jupp CSR
Magnus Sommansson CSR
Nick Hunn CSR
Robin Heydon CSR
Dave Suvak iAnywhere
Marcel Holtmann Intel
Anindya Bakshi MindTree
Krishna Shingala MindTree
Daidi Zhong Nokia
James Dent Nokia
James Steele Nokia
Jonathan Tanner Nokia
Juha Salokannel Nokia
Kanji Kerai Nokia
Miika Laaksonen Nokia
Päivi Ruuska Nokia
Steve Davies Nokia
Tim Howes Nokia
David Lopes Nordic Semiconductor
Sebastien Mackaie-Blanchi Nordic Semiconductor
Niclas Granqvist Polar
Brian A. Redding Qualcomm
Joel Linksy Qualcomm
Terry Bourk Qualcomm
Pär-Gunnar Hjälmdahl ST Ericsson
Aaron Atlas Texas Instruments
Appendix
Version 4.2
Sriram Hariharan Apple
Angel Polo Broadcom
Mayank Batra CSR
Joe Decuir CSR
Giriraj Goyal CSR
Robin Heydon CSR
Jonathan Tanner CSR
Harish Balasubramaniam Intel
Marcel Holtmann Intel
Yao Wang IVT Corporation
Frank Berntsen Nordic Semiconductor
David Engelien-Lopes Nordic Semiconductor
Rasmus Abildgren Samsung Electronics
Joel Linsky Qualcomm Atheros
Brian A. Redding Qualcomm Atheros
Jason Hillyard Wicentric
Version 4.0
Alexandre Gimard Alpwise
Mike Tsai Atheros
John Padgette Booz Allen Hamilton
Chaojing Sun Broadcom
Norbert Grunert Broadcom
Prasanna Desai Broadcom
Robert Hulvey Broadcom
Hermanni Suominen CSR
Laurence Jupp CSR
Magnus Sommansson CSR
Robin Heydon CSR
Steven Wenham CSR
Patrick Reinelt Frontline
Chiu-Mien Chi ISSC
Anindya Bakshi MindTree
Ashok Kelur MindTree
Michael Russell Motorola
James Dent Nokia
James Steele Nokia
Jonathan Tanner Nokia
Kanji Kerai Nokia
Miika Laaksonen Nokia
Appendix
Appendix
Appendix
Appendix
Version 4.1
Kevin Hayes Atheros
Raymond Hayes Broadcom
Francoise Bannister CSR
Nick Jackson CSR
Shailendra Govardham Marvell
Joel Linsky Qualcomm
Appendix
Version 4.2
Edward Harrison Anritsu
Phil Hough Anritsu
Mayank Batra CSR
Robin Heydon CSR
Harish Balasubramaniam Intel
Magnus Eriksson Intel
Marcel Holtmann Intel
Clive D.W. Feather Samsung Electronics
Ed Callaway Sunrise Micro Devices
Joel Linsky Qualcomm Atheros
Brian A. Redding Qualcomm Atheros
Jean-Philippe Lambert RivieraWaves
Jason Hillyard Wicentric
Version 4.0
Edward Harrison Anritsu
Robert Hulvey Broadcom
Burch Seymour Continental Automotive
Magnus Sommansson CSR
Robin Heydon CSR
Steven Wenham CSR
Henrik Arfwedson Infineon
Jukka Reunamaki Nokia
Mika Kasslin Nokia
Steve Davies Nokia
Frank Karlsen Nordic Semiconductor
Øyvind Vedal Nordic Semiconductor
Brian A. Redding Qualcomm
Joel Linsky Qualcomm
Terry Bourk Qualcomm
Don Sturek Texas Instruments
Version 4.2
Edward Harrison Anritsu
Phil Hough Anritsu
Sriram Hariharan Apple
Angel Polo Broadcom
Appendix
Version 4.1
Angel Polo Broadcom
Mayank Batra CSR
Joe Decuir CSR
Giriraj Goyal CSR
Robin Heydon CSR
Neil Stewart CSR
Harish Balasubramaniam Intel
Magnus Eriksson Intel
Oren Haggai Intel
Yao Wang IVT Corporation
Rajan S Pallathu MindTree Ltd.
David Lopes Nordic Semiconductor
Joel Linsky Qualcomm Atheros
Jean-Philippe Lambert RivieraWaves
Rasmus Abildgren Samsung Electronics
Anthony Viscardi Texas Instruments
Jason Hillyard Wicentric
Appendix
Version 4.0
Angel Polo Broadcom
Prasanna Desai Broadcom
Robert Hulvey Broadcom
Yuan Zhuang Broadcom
Burch Seymour Continental Automotive
Joe Decuir CSR
Magnus Sommansson CSR
Robin Heydon CSR
Steven Singer CSR
Steven Wenham CSR
Robert Kvacek EM Microelectronic
Henrik Arfwedson Infineon
James Dent Nokia
Jonathan Tanner Nokia
Kanji Kerai Nokia
Mika Kasslin Nokia
Steve Davies Nokia
Asbjørn Sæbø Nordic Semiconductor
David Lopes Nordic Semiconductor
Frank Karlsen Nordic Semiconductor
Torstein Nesje Nordic Semiconductor
Brian A. Redding Qualcomm
Joel Linsky Qualcomm
Terry Bourk Qualcomm
Harsha Master Sasken
Geert Sonck ST Ericsson
Alon Paycher Texas Instruments
Anthony Viscardi Texas Instruments
Don Sturek Texas Instruments
Helge Coward Texas Instruments
Version 4.0
Robin Heydon CSR
Steven Wenham CSR
Joel Linsky Qualcomm
Geert Sonck ST Ericsson
Appendix
Version 4.2
Sriram Hariharan Apple
Angel Polo Broadcom
Mayank Batra CSR
Joe Decuir CSR
Giriraj Goyal CSR
Robin Heydon CSR
Jonathan Tanner CSR
Harish Balasubramaniam Intel
Marcel Holtmann Intel
Yao Wang IVT Corporation
Frank Berntsen Nordic Semiconductor
David Engelien-Lopes Nordic Semiconductor
Rasmus Abildgren Samsung Electronics
Joel Linsky Qualcomm Atheros
Brian A. Redding Qualcomm Atheros
Jason Hillyard Wicentric
Version 4.1
Angel Polo Broadcom
Mayank Batra CSR
Joe Decuir CSR
Giriraj Goyal CSR
Robin Heydon CSR
Neil Stewart CSR
Harish Balasubramaniam Intel
Magnus Eriksson Intel
Yao Wang IVT Corporation
Rajan S Pallathu MindTree Ltd.
David Lopes Nordic Semiconductor
Joel Linsky Qualcomm Atheros
Jean-Philippe Lambert RivieraWaves
Rasmus Abildgren Samsung Electronics
Anthony Viscardi Texas Instruments
Jason Hillyard Wicentric
Version 4.0
Robin Heydon CSR
Steven Wenham CSR
Steve Davies Nokia
Joel Linsky Qualcomm
Geert Sonck ST Ericsson
Appendix
Version 4.2
Edward Harrison Anritsu
Phil Hough Anritsu
Mayank Batra CSR
Robin Heydon CSR
Harish Balasubramaniam Intel
Magnus Eriksson Intel
Marcel Holtmann Intel
Clive D.W. Feather Samsung Electronics
Ed Callaway Sunrise Micro Devices
Joel Linsky Qualcomm Atheros
Brian A. Redding Qualcomm Atheros
Jean-Philippe Lambert RivieraWaves
Jason Hillyard Wicentric
Version 4.0
Robin Heydon CSR
Steven Singer CSR
Steven Wenham CSR
Mika Kasslin Nokia
Joel Linsky Qualcomm
Geert Sonck ST Ericsson
Alon Paycher Texas Instruments
Appendix
Version 4.2
Edward Harrison Anritsu
Phil Hough Anritsu
Mayank Batra CSR
Robin Heydon CSR
Harish Balasubramaniam Intel
Magnus Eriksson Intel
Marcel Holtmann Intel
Clive D.W. Feather Samsung Electronics
Ed Callaway Sunrise Micro Devices
Joel Linsky Qualcomm Atheros
Brian A. Redding Qualcomm Atheros
Jean-Philippe Lambert RivieraWaves
Jason Hillyard Wicentric
Version 4.0
Edward Harrison Anritsu
Robert Hulvey Broadcom
Magnus Sommansson CSR
Robin Heydon CSR
Steven Wenham CSR
Steve Davies Nokia
Frank Karlsen Nordic Semiconductor
Joel Linsky Qualcomm
Helge Coward Texas Instruments
Appendix
Version 4.1
Knut Odman Broadcom
Shawn Ding Broadcom
Steven Hall Broadcom
Joe Decuir CSR
Leif Wilhelmsson Ericsson
Sharon Yang Intel
Josselin de la Broise Marvell
Huanchun Ye MediaTek
L. C. Ko MediaTek
Joel Linsky Qualcomm Atheros
Olaf Hirsch Qualcomm Atheros
Yves Wernaers ST-Ericsson
Alon Cheifetz Texas Instruments
Version 4.1
Steven Hall Broadcom
Joe Decuir CSR
Clive D.W. Feather CSR
Sharon Yang Intel
Huanchun Ye MediaTek
L. C. Ko MediaTek
Aaron Hsieh MediaTek
Joel Linsky Qualcomm Atheros
Olaf Hirsch Qualcomm Atheros
Alon Cheifetz Texas Instruments
Version 4.1
Knut Odman Broadcom
Shawn Ding Broadcom
Steven Hall Broadcom
Joe Decuir CSR
Clive D.W. Feather CSR
Appendix
Architecture &
Terminology
Overview
Revision History
The Revision History is shown in the [Vol 0] Part C, Appendix.
Contributors
The persons who contributed to this specification are listed in the [Vol 0] Part C,
Appendix.
Web Site
This specification can also be found on the official Bluetooth web site:
https://www.bluetooth.org/en-us/specification/adopted-specifications
Use of Bluetooth Specifications and any related intellectual property is governed by the
Promoters Membership Agreement among the Promoter Members and Bluetooth SIG (the
“Promoters Agreement”), certain membership agreements between Bluetooth SIG and its
Adopter and Associate Members, including, but not limited to, the Membership Application, the
Bluetooth Patent/Copyright License Agreement and the Bluetooth Trademark License
Agreement (collectively, the “Membership Agreements”) and the Bluetooth Specification Early
Adopters Agreements (1.2 Early Adopters Agreements) among Early Adopter members of the
unincorporated Bluetooth SIG and the Promoter Members (the “Early Adopters Agreement”).
Certain rights and obligations of the Promoter Members under the Early Adopters Agreements
have been assigned to Bluetooth SIG by the Promoter Members.
Use of the Specification by anyone who is not a member of Bluetooth SIG or a party to an Early
Adopters Agreement (each such person or party, a “Member”) is prohibited. The use of any
portion of a Bluetooth Specification may involve the use of intellectual property rights ("IPR"),
including pending or issued patents, or copyrights or other rights. Bluetooth SIG has made no
search or investigation for such rights and disclaims any undertaking or duty to do so. The legal
rights and obligations of each Member are governed by the applicable Membership
Agreements, Early Adopters Agreement or Promoters Agreement. No license, express or
implied, by estoppel or otherwise, to any intellectual property rights are granted herein.
Any use of the Specification not in compliance with the terms of the applicable Membership
Agreements, Early Adopters Agreement or Promoters Agreement is prohibited and any such
prohibited use may result in (i) termination of the applicable Membership Agreements or Early
Adopters Agreement and (ii) liability claims by Bluetooth SIG or any of its Members for patent,
copyright and/or trademark infringement claims permitted by the applicable agreement or by
applicable law.
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 1] page 3
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 1] page 4
TABLE OF CONTENTS
Part A
ARCHITECTURE
1 General Description........................................................................... 13
1.1 Overview of BR/EDR Operation ................................................ 14
1.2 Overview of Bluetooth Low Energy Operation........................... 16
1.3 Overview of AMP Operation ...................................................... 19
1.4 Nomenclature ............................................................................ 20
2 Core System Architecture................................................................. 26
2.1 Core Architectural Blocks .......................................................... 30
2.1.1 Host Architectural Blocks .............................................. 30
2.1.2 BR/EDR/LE Controller Architectural Blocks.................. 31
2.1.3 AMP Controller architectural blocks.............................. 33
3 Data Transport Architecture ............................................................. 35
3.1 Core Traffic Bearers .................................................................. 36
3.1.1 Framed Data Traffic ...................................................... 37
3.1.2 Unframed Data Traffic................................................... 38
3.1.3 Reliability of traffic bearers............................................ 39
3.2 Transport Architecture Entities .................................................. 42
3.2.1 BR/EDR Generic Packet Structure ............................... 43
3.2.2 LE Generic Packet Structure......................................... 44
3.3 Physical Channels ..................................................................... 46
3.3.1 BR/EDR Physical Channels.......................................... 46
3.3.2 LE Physical Channels ................................................... 52
3.3.3 AMP physical channel................................................... 55
3.4 Physical Links ............................................................................ 56
3.4.1 BR/EDR Links Supported By The Basic And Adapted
Piconet Physical Channel ............................................. 56
3.4.2 BR/EDR Links Supported by the Scanning Physical
Channels....................................................................... 59
3.4.3 LE Links Supported by the LE Physical Channels........ 59
3.4.4 Links Supported by the AMP Physical Channels.......... 59
3.5 Logical Links and Logical Transports ........................................ 60
3.5.1 Casting.......................................................................... 61
3.5.2 Scheduling and Acknowledgement Scheme................. 62
3.5.3 Class of Data ................................................................ 62
3.5.4 Logical Transports......................................................... 63
3.5.5 Logical Links ................................................................. 68
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 1] page 5
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 1] page 6
Part B
ACRONYMS & ABBREVIATIONS
1 List of Acronyms and Abbreviations ............................................. 113
Part C
CORE SPECIFICATION CHANGE HISTORY
1 Deprecated Features ....................................................................... 126
2 Changes from V1.1 to V1.2 ............................................................. 127
2.1 New Features .......................................................................... 127
2.2 Structure Changes................................................................... 127
2.3 Deprecated Features list ......................................................... 127
2.4 Changes in Wording ................................................................ 128
2.5 Nomenclature Changes ........................................................... 128
3 Changes from V1.2 to V2.0 + EDR.................................................. 129
3.1 New Features .......................................................................... 129
3.2 Deprecated Features ............................................................... 129
4 Changes from V2.0 + EDR to V2.1 + EDR ...................................... 130
4.1 New features ........................................................................... 130
4.2 Deprecated Features ............................................................... 130
5 Changes From V2.1 + EDR To V3.0 + HS ....................................... 131
5.1 New Features .......................................................................... 131
5.2 Deprecated Features ............................................................... 131
6 Changes From V3.0 + HS To v4.0 ................................................... 132
6.1 New Features .......................................................................... 132
6.2 Deprecated Features ............................................................... 132
7 Changes from v4.0 to v4.1 ............................................................. 133
7.1 New Features .......................................................................... 133
7.1.1 Features Added in CSA 4 – Integrated in v4.1 ........... 133
7.1.2 Features Added in CSA 3 – Integrated in v4.1 ........... 133
7.1.3 Features Added in CSA 2 – Integrated in v4.1 ........... 134
7.2 Deprecated Features ............................................................... 134
8 Changes from v4.1 to v4.2 .............................................................. 135
8.1 New Features .......................................................................... 135
8.2 Errata Incorporated in v4.2 ...................................................... 135
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 1] page 7
Part D
MIXING OF SPECIFICATION VERSIONS
1 Mixing of Specification Versions.................................................... 139
1.1 Features and their Types ......................................................... 141
1.2 Core Specification Addenda .................................................... 143
Part E
IEEE LANGUAGE
1 Use of IEEE Language..................................................................... 148
1.1 Shall......................................................................................... 149
1.2 Must ......................................................................................... 149
1.3 Will ........................................................................................... 149
1.4 Should ..................................................................................... 149
1.5 May .......................................................................................... 150
1.6 Can .......................................................................................... 150
02 December 2014
Bluetooth SIG Proprietary
Architecture & Terminology Overview
Part A
PART A: ARCHITECTURE
Architecture
CONTENTS
1 General Description........................................................................... 13
1.1 Overview of BR/EDR Operation ................................................ 14
1.2 Overview of Bluetooth Low Energy Operation........................... 16
1.3 Overview of AMP Operation ...................................................... 19
1.4 Nomenclature ............................................................................ 20
2 Core System Architecture................................................................. 26
2.1 Core Architectural Blocks .......................................................... 30
2.1.1 Host Architectural Blocks .............................................. 30
2.1.1.1 Channel Manager ........................................... 30
2.1.1.2 L2CAP Resource Manager ............................ 30
2.1.1.3 Security Manager Protocol ............................. 30
2.1.1.4 Attribute Protocol ............................................ 31
2.1.1.5 AMP Manager Protocol .................................. 31
2.1.1.6 Generic Attribute Profile ................................. 31
2.1.1.7 Generic Access Profile ................................... 31
2.1.2 BR/EDR/LE Controller Architectural Blocks.................. 31
2.1.2.1 Device Manager ............................................. 32
2.1.2.2 Link Manager.................................................. 32
2.1.2.3 Baseband Resource Manager........................ 32
2.1.2.4 Link Controller ................................................ 33
2.1.2.5 PHY ................................................................ 33
2.1.3 AMP Controller architectural blocks.............................. 33
2.1.3.1 AMP HCI ........................................................ 33
2.1.3.2 AMP PAL ........................................................ 34
2.1.3.3 AMP MAC....................................................... 34
2.1.3.4 AMP PHY ....................................................... 34
3 Data Transport Architecture ............................................................. 35
3.1 Core Traffic Bearers .................................................................. 36
3.1.1 Framed Data Traffic ...................................................... 37
3.1.2 Unframed Data Traffic................................................... 38
3.1.3 Reliability of traffic bearers............................................ 39
3.1.3.1 BR/EDR Reliability ......................................... 39
3.1.3.2 LE reliability .................................................... 40
3.1.3.3 AMP Reliability ............................................... 41
3.2 Transport Architecture Entities .................................................. 42
3.2.1 BR/EDR Generic Packet Structure ............................... 43
3.2.2 LE Generic Packet Structure......................................... 44
3.3 Physical Channels ..................................................................... 46
3.3.1 BR/EDR Physical Channels.......................................... 46
3.3.1.1 Basic Piconet Channel ................................... 47
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 1, Part A] page 10
Architecture
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 1, Part A] page 11
Architecture
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 1, Part A] page 12
Architecture
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 1, Part A] page 13
Architecture
1 GENERAL DESCRIPTION
There are two forms of Bluetooth wireless technology systems: Basic Rate
(BR) and Low Energy (LE). Both systems include device discovery, connection
establishment and connection mechanisms. The Basic Rate system includes
optional Enhanced Data Rate (EDR) Alternate Media Access Control (MAC)
and Physical (PHY) layer extensions. The Basic Rate system offers
synchronous and asynchronous connections with data rates of 721.2 kb/s for
Basic Rate, 2.1 Mb/s for Enhanced Data Rate and high speed operation up to
54 Mb/s with the 802.11 AMP. The LE system includes features designed to
enable products that require lower current consumption, lower complexity and
lower cost than BR/EDR. The LE system is also designed for use cases and
applications with lower data rates and has lower duty cycles. Depending on the
use case or application, one system including any optional parts may be more
optimal than the other.
The Bluetooth core system consists of a Host and one or more Controllers. A
Host is a logical entity defined as all of the layers below the non-core profiles
and above the Host Controller Interface (HCI). A Controller is a logical entity
defined as all of the layers below HCI. An implementation of the Host and
Controller may contain the respective parts of the HCI. Two types of Controllers
are defined in this version of the Core Specification: Primary Controllers and
Secondary Controllers.
Architecture
Figure 1.1: Bluetooth Host and Controller Combinations: (from left to right): LE Only Primary
Controller, BR/EDR only Primary Controller, BR/EDR Primary Controller, with one AMP Secondary
Controller, and BR/EDR with multiple AMP Secondary Controllers
Figure 1.2: Bluetooth Host and Controller Combinations (from left to right): BR/EDR and LE
Primary Controller, BR/EDR and LE Primary Controller with one AMP Secondary Controller, and
BR/EDR and LE Primary Controller with multiple AMP Secondary Controllers
Architecture
The physical channel is sub-divided into time units known as slots. Data is
transmitted between Bluetooth devices in packets that are positioned in these
slots. When circumstances permit, a number of consecutive slots may be
allocated to a single packet. Frequency hopping takes place between the
transmission or reception of packets. Bluetooth technology provides the effect
of full duplex transmission through the use of a Time-Division Duplex (TDD)
scheme.
Above the physical channel there is a layering of links and channels and
associated control protocols. The hierarchy of channels and links from the
physical channel upwards is physical channel, physical link, logical transport,
logical link and L2CAP channel. These are discussed in more detail in Section
3.3 to Section 3.6 but are introduced here to aid the understanding of the
remainder of this section.
The physical link is used as a transport for one or more logical links that
support unicast synchronous, asynchronous and isochronous traffic, and
broadcast traffic. Traffic on logical links is multiplexed onto the physical link by
occupying slots assigned by a scheduling function in the resource manager.
A control protocol for the baseband and physical layers is carried over logical
links in addition to user data. This is the link manager protocol (LMP). Devices
that are active in a piconet have a default asynchronous connection-oriented
Architecture
logical transport that is used to transport the LMP protocol signaling. For
historical reasons this is known as the ACL logical transport. With the
exception of Connectionless Slave Broadcast devices, the primary ACL logical
transport is the one that is created whenever a device joins a piconet.
Connectionless Slave Broadcast devices may join the piconet purely to listen
to Connectionless Slave Broadcast packets. In that case, a Connectionless
Slave Broadcast logical transport is created (also called a CSB logical
transport) and no ACL logical transport is required. For all devices, additional
logical transports may be created to transport synchronous data streams when
required.
The Link Manager function uses LMP to control the operation of devices in the
piconet and provide services to manage the lower architectural layers (radio
layer and baseband layer). The LMP protocol is only carried on the primary
ACL logical transport and the default broadcast logical transport
(LT_ADDR=0).
The physical channel is sub-divided into time units known as events. Data is
transmitted between LE devices in packets that are positioned in these events.
There are two types of events: Advertising and Connection events.
Devices that transmit advertising packets on the advertising PHY channels are
referred to as advertisers. Devices that receive advertising packets on the
advertising channels without the intention to connect to the advertising device
Architecture
Adv Ch(k) Adv Ch(k+1) Adv Ch(k+2) Adv Ch(k) Adv Ch(k+1)
Devices that need to form a connection to another device listen for connectable
advertising packets. Such devices are referred to as initiators. If the advertiser
is using a connectable advertising event, an initiator may make a connection
request using the same advertising PHY channel on which it received the
connectable advertising packet. The advertising event is ended and connection
events begin if the advertiser receives and accepts the request for a
connection be initiated. Once a connection is established, the initiator becomes
the master device in what is referred to as a piconet and the advertising
device becomes the slave device. Connection events are used to send data
packets between the master and slave devices. In connection events, channel
hopping occurs at the start of each connection event. Within a connection
event, the master and slave alternate sending data packets using the same
data PHY channel. The master initiates the beginning of each connection event
and can end each connection event at any time.
Architecture
Above the physical channel there are concepts of links, channels and
associated control protocols. The hierarchy is physical channel, physical link,
logical transport, logical link and L2CAP channel. These are discussed in more
detail in Section 3.3 to Section 3.6 but are introduced here to aid the
understanding of the remainder of this section.
Within a physical channel, a physical link is formed between a master and each
slave. Direct physical links between slaves in a piconet are not supported.
Slaves are permitted to have physical links to more than one master at a time.
A device is permitted to be master and slave at the same time. Role changes
between a master and slave device are not supported at this time.
The physical link is used as a transport for one or more logical links that
support asynchronous traffic. Traffic on logical links is multiplexed onto the
physical link assigned by a scheduling function in the resource manager.
A control protocol for the link and physical layers is carried over logical links in
addition to user data. This is the link layer protocol (LL). Devices that are active
in a piconet have a default LE asynchronous connection logical transport (LE
ACL) that is used to transport the LL protocol signaling. The default LE ACL is
the one that is created whenever a device joins a piconet.
The Link Layer function uses the LL protocol to control the operation of devices
in the piconet and provide services to manage the lower architectural layers
(PHY and LL).
Architecture
Just as in BR/EDR, above the link layer the L2CAP layer provides a channel-
based abstraction to applications and services. It carries out fragmentation and
de-fragmentation of application data and multiplexing and de-multiplexing of
multiple channels over a shared logical link. L2CAP has a protocol control
channel that is carried over the primary ACL logical transport.
Each AMP consists of a Protocol Adaptation Layer (PAL) on top of a MAC and
PHY. The PAL is responsible for mapping the Bluetooth protocols and behavior
(as specified by HCI) to the specific protocols of the underlying MAC and PHY.
L2CAP channels may be created on, or moved to, an AMP. L2CAP channels
may also be moved back to the BR/EDR radio when those capabilities are not
necessary or when the AMP physical link has a link supervision timeout. A link
supervision timeout on an ACL link connecting two BR/EDR devices forces a
disconnection of all AMP physical links between those devices.
Architecture
1.4 NOMENCLATURE
Where the following terms appear in the specification they have the meaning
given in Table 1.1.
Active Slave Broadcast (ASB) The Active Slave Broadcast logical transport that is
used to transport L2CAP user traffic to all active
devices in the piconet over the BR/EDR Controller. See
Section 3.5.4.4
Architecture
BR/EDR Piconet Physical Chan- A Channel that is divided into time slots in which each
nel slot is related to an RF hop frequency. Consecutive
hops normally correspond to different RF hop frequen-
cies and occur at a standard hop rate of 1600 hops/s.
These consecutive hops follow a pseudo-random hop-
ping sequence, hopping through a 79 RF channel set,
or optionally fewer channels when Adaptive Frequency
Hopping (AFH) is in use.
Connected devices Two BR/EDR devices and with a physical link between
them.
Architecture
Coverage area The area where two Bluetooth devices can exchange
messages with acceptable quality and performance.
Discovery procedure A Bluetooth device that is carrying out the inquiry pro-
cedure in BR/EDR or scanning for advertisers using a
discoverable or connectable advertising event with a
discoverable flag set in LE.
Architecture
Inquiring device A BR/EDR device that is carrying out the inquiry proce-
dure. This device is performing the discovery proce-
dure.
Link establishment A procedure for establishing the default ACL link and
hierarchy of links and channels between devices.
Link key A secret key that is known by two devices and is used
to authenticate the link.
Architecture
Paging device A Bluetooth device that is carrying out the page proce-
dure.
Paired device A Bluetooth device for which a link key has been cre-
ated (either before connection establishment was
requested or during connecting phase).
Piconet Slave Any BR/EDR device in a piconet that is not the Piconet
Master, but is connected to the Piconet Master.
Profile Broadcast Data (PBD) A logical link that carries data from a Connectionless
Slave Broadcast Transmitter to one or more
Connectionless Slave Broadcast Receivers.
Architecture
Service Layer Protocol A protocol that uses an L2CAP channel for transporting
PDUs.
The Parked Slave Broadcast The Parked Slave Broadcast logical transport that is
(PSB) used for communications between the master and
parked devices. These communications may also be
received by active devices. See Section 3.5.4.5.
Architecture
The Bluetooth Core system consists of a Host, a Primary Controller and zero or
more Secondary Controllers. A minimal implementation of the Bluetooth BR/
EDR core system covers the four lowest layers and associated protocols
defined by the Bluetooth specification as well as one common service layer
protocol; the Service Discovery Protocol (SDP) and the overall profile
requirements are specified in the Generic Access Profile (GAP). The BR/EDR
Core system includes support of Alternate MAC/PHYs (AMPs) including an
AMP Manager Protocol and Protocol Adaptation Layers (PALs) supporting
externally referenced MAC/PHYs. A minimal implementation of a Bluetooth LE
only core system covers the four lowest layers and associated protocols
defined by the Bluetooth specification as well as two common service layer
protocols; the Security Manager (SM) and Attribute Protocol (ATT) and the
overall profile requirements are specified in the Generic Attribute Profile
(GATT) and Generic Access Profile (GAP). Implementations combining
Bluetooth BR/EDR and LE include both of the minimal implementations
described above.
Architecture
Channel Manager
L2cap Resource
Manager
L2CAP
Host
.
HCI HCI
C/E SCO ACL C/E C/E ACL ACL C/E
Link Link
AMP PAL
Manager Manager
Device
Manager Baseband Resource Manager
AMP MAC
Link
Link Controller
Controller
Figure 2.1 shows the Core blocks, each with its associated communication
protocol. Link Manager, Link Controller and BR/EDR Radio blocks comprise a
BR/EDR Controller. An AMP PAL, AMP MAC, and AMP PHY comprise an AMP
Controller. Link Manager, Link Controller and LE Radio blocks comprise an LE
Controller. L2CAP, SDP and GAP blocks comprise a BR/EDR Host. L2CAP,
SMP, Attribute protocol, GAP and Generic Attribute Profile (GATT) blocks
comprise an LE Host. A BR/EDR/LE Host combines the set of blocks from
each respective Host. This is a common implementation involving a standard
Architecture
A number of functional blocks and the path of services and data between them
are shown. The functional blocks shown in the diagram are informative; in
general the Bluetooth specification does not define the details of
implementations except where this is required for interoperability. Thus the
functional blocks in Figure 2.1 are shown in order to aid description of the
system behavior. An implementation may be different from the system shown
in Figure 2.1.
The Bluetooth core system offers services through a number of service access
points that are shown in the diagram as ellipses. These services consist of the
basic primitives that control the Bluetooth core system. The services can be
split into three types. There are device control services that modify the
behavior and modes of a Bluetooth device, transport control services that
create, modify and release traffic bearers (channels and links), and data
services that are used to submit data for transmission over traffic bearers. It is
common to consider the first two as belonging to the C-plane and the last as
belonging to the U-plane.
Architecture
Therefore the L2CAP layer is expected to carry out some simple resource
management when submitting L2CAP PDUs to the controller for transport to a
peer device. This includes segmentation of L2CAP SDUs into more
manageable PDUs and then the fragmentation of PDUs into start and
continuation packets of a size suitable for the controller buffers, and
management of the use of controller buffers to ensure availability for channels
with Quality of Service (QoS) commitments.
The BR/EDR Baseband, LE Link Layer, and AMP MAC layers provides the
basic acknowledgement/repeat request (ARQ) protocol in Bluetooth. The
L2CAP layer can optionally provide a further error detection and retransmission
to the L2CAP PDUs. This feature is recommended for applications with
requirements for a low probability of undetected errors in the user data. A
further optional feature of L2CAP is a window-based flow control that can be
used to manage buffer allocation in the receiving device. Both of these optional
features augment the QoS performance in certain scenarios. Not all of the
L2CAP capabilities are available when using the LE system.
The tester exchanges with the Implementation Under Test (IUT) through the
PHY interface to ensure the correct responses to requests from remote
devices. The tester controls the IUT through HCI, DTM, GTM, or TCI to cause
the IUT to originate exchanges through the PHY interface so that these can
also be verified as conformant.
The TCI uses a different command-set (service interface) for the testing of
each architectural layer and protocol. A subset of the HCI command-set is
used as the TCI service interface for each of the layers and protocols within the
BR/EDR Controller subsystem. A separate service interface is used for testing
the L2CAP layer and protocol. As an L2CAP service interface is not defined in
the Bluetooth core specification it is defined separately in the Test Control
Interface specification. Implementation of the L2CAP service interface is only
required for conformance testing.
Architecture
Architecture
This block is only used in LE systems. Similar functionality in the BR/EDR system
is contained in the Link Manager block in the Controller. SMP functionality is in the
Host on LE systems to reduce the implementation cost of the LE only controllers.
The Generic Attribute Profile (GATT) block represents the functionality of the
attribute server and, optionally, the attribute client. The profile describes the
hierarchy of services, characteristics and attributes used in the attribute server.
The block provides interfaces for discovering, reading, writing and indicating of
service characteristics and attributes. GATT is used on LE devices for LE
profile service discovery.
The Generic Access Profile (GAP) block represents the base functionality
common to all Bluetooth devices such as modes and access procedures used
by the transports, protocols and application profiles. GAP services include
device discovery, connection modes, security, authentication, association
models and service discovery.
Architecture
The link manager is responsible for the creation, modification and release of
logical links (and, if required, their associated logical transports), as well as the
update of parameters related to physical links between devices. The link
manager achieves this by communicating with the link manager in remote
Bluetooth devices using the Link Manager Protocol (LMP) in BR/EDR and the
Link Layer Protocol (LL) in LE.
The LM or LL protocol allows the creation of new logical links and logical
transports between devices when required, as well as the general control of
link and transport attributes such as the enabling of encryption on the logical
transport, the adapting of transmit power in BR/EDR on the physical link, or the
adjustment of QoS settings in BR/EDR for a logical link.
The baseband resource manager is responsible for all access to the radio
medium. It has two main functions. At its heart is a scheduler that grants time
on the physical channels to all of the entities that have negotiated an access
contract. The other main function is to negotiate access contracts with these
entities. An access contract is effectively a commitment to deliver a certain
QoS that is required in order to provide a user application with an expected
performance.
The access contract and scheduling function must take account of any
behavior that requires use of the Primary Controller. This includes (for
example) the normal exchange of data between connected devices over logical
links, and logical transports, as well as the use of the radio medium to carry out
inquiries, make connections, be discoverable or connectable, or to take
readings from unused carriers during the use of adaptive frequency hopping
mode.
Architecture
The link controller is responsible for the encoding and decoding of Bluetooth
packets from the data payload and parameters related to the physical channel,
logical transport and logical link.
The link controller carries out the link control protocol signaling in BR/EDR and
link layer protocol in LE (in close conjunction with the scheduling function of the
resource manager), which is used to communicate flow control and
acknowledgement and retransmission request signals. The interpretation of
these signals is a characteristic of the logical transport associated with the
baseband packet. Interpretation and control of the link control signaling is
normally associated with the resource manager’s scheduler.
2.1.2.5 PHY
The AMP HCI is the logical interface between an AMP Controller and Host
(L2CAP and AMP manager). HCI is an optional layer used when the Host and
AMP Controller(s) are physically separated. Support for AMPs requires
additional HCI commands and events. These new commands and events are
related to AMP physical and logical link management, QoS, as well as flow
control.
There is one logical instantiation of an HCI per AMP Controller, and another
logical instantiation for the BR/EDR Controller. The physical HCI transport layer
manages the multiplexing of several Controllers over the same physical
transport bus in cases where multiple Controllers exist in a single physical unit.
Architecture
The AMP PAL is the AMP layer interfacing the AMP MAC with the Host
(L2CAP and AMP Manager). It translates commands from the Host into the
specific MAC service primitives and primitives into commands, and it translates
primitives from the AMP MAC into understandable event(s) for the Host. The
AMP PAL provides support for AMP channel management, data traffic
according to specified flow specifications, and power efficiency.
There is not a requirement that the AMP PAL has exclusive access to the AMP
itself. Implementers may choose to allow other protocols to be concurrent
clients of the AMP. Specific mechanisms for allowing other protocols to share
access to the AMP are outside the scope of this specification.
A generic PAL architecture is shown in Figure 2.2.
.
AMP HCI Interface
PAL
Physical Logical
Data
PAL Manager Link Link
Manager
Manager Manager
Security QoS
Capabilities of the PAL and the underlying MAC/PHY are exchanged via the
AMP_Info and AMP_Assoc structures by the AMP Manager Protocol. The
AMP_Info contains generic capabilities of the PAL such as bandwidth
availability, maximum PDU size, PAL capabilities, length of the AMP_Assoc
and flush timeout information. The contents of the AMP_Assoc are dependent
on the PAL and are related to the underlying MAC/PHY.
Architecture
L2CAP
L2CAP Channels
Layer
Logical Links
Logical
Layer Logical Transports
Physical Links
Physical
Layer Physical Channel
Prior to Version 1.2, the Bluetooth Core specification described the ACL and
SCO links as physical links. With the addition of Extended SCO (eSCO) and for
future expansion it is better to consider these as logical transport types, which
more accurately encapsulates their purpose. However, they are not as
independent as might be desired, due to their shared use of resources such as
the LT_ADDR and acknowledgement/repeat request (ARQ) scheme. Hence
the architecture is incapable of representing these logical transports with a
single transport layer. The additional logical transport layer goes some way
towards describing this behavior.
Architecture
AMP BR/EDR
Channel LE Link
Manager AMP PAL Link
Manager Layer
Protocol Manager
Signalling ACL-C
BR/EDR ACL
Higher Layer
Protocol Signalling AMP Manager Fixed Channel ACL-U
LE-C
Reliable LE ACL
Asynchronous LE-U
Framed User Data
AMP-C
Higher Layer Unicast
AMP ACL
Framed Isochronous
User Data AMP-U
The core traffic bearers that are available to applications are shown in Figure
3.2 as the shaded rounded rectangles. The architectural layers that are defined
to provide these services are described in Section 2. A number of data traffic
types are shown on the left of the diagram linked to the traffic bearers that are
typically suitable for transporting that type of data traffic.
The logical links are named using the names of the associated logical transport
and a suffix that indicates the type of data that is transported. (C for control
links carrying LMP or LL messages, U for L2CAP links carrying user data
(L2CAP PDUs) and S for stream links carrying unformatted synchronous or
isochronous data.) It is common for the suffix to be removed from the logical
link without introducing ambiguity, thus a reference to the default ACL logical
transport can be resolved to mean the ACL-C logical link in cases where the
LMP protocol is being discussed, the LE-C logical link in cases where LL
Architecture
protocol is being discussed, the AMP-C logical link in cases where a PAL
protocol is being discussed, or the ACL-U,LE-U, or AMP-U logical links when
the L2CAP layer is being discussed.
Figure 3.2 shows a number of application traffic types. These are used to
classify the types of data that may be submitted to the Bluetooth core system.
The original data traffic type may not be the same as the type that is submitted
to the Bluetooth core system if an intervening process modifies it. For example,
video data is generated at a constant rate but an intermediate coding process
may alter this to variable rate, e.g. by MPEG4 encoding. For the purposes of
the Bluetooth core system, only the characteristic of the submitted data is of
interest.
Architecture
Some L2CAP channels are fixed channels created when the ACL-U and/or LE-
U logical links are established. These fixed channels have fixed channel
identifiers and fixed configurations and do not permit negotiation of the
configuration after they are created. These fixed channels are used for BR/
EDR and LE L2CAP signaling (ACL-U or LE-U), connectionless channel (ACL-
U), AMP manager protocol (ACL-U), Security Manager Protocol (LE-U),
Attribute Protocol (ACL-U or LE-U) and AMP Test Manager (ACL-U).
The L2CAP channel manager is responsible for arranging to transport the
L2CAP channel data frames on an appropriate baseband logical link, possibly
multiplexing this onto the baseband logical link with other L2CAP channels with
similar characteristics.
If the application does not require delivery of data in frames, possibly because
it includes in-stream framing, or because the data is a pure stream, then it may
avoid the use of L2CAP channels and make direct use of a baseband logical
link.
The Bluetooth core system supports the direct transport of application data that
is isochronous and of a constant rate (either bit-rate, or frame-rate for pre-
framed data), using a SCO-S or eSCO-S logical link. These logical links
reserve physical channel bandwidth and provide a constant rate transport
locked to the piconet clock. Data is transported in fixed size packets at fixed
intervals with both of these parameters negotiated during channel
establishment. eSCO links provide a greater choice of bit-rates and also
provide greater reliability by using limited retransmission in case of error.
Enhanced Data Rate operation is supported for eSCO, but not for SCO logical
transports. SCO and eSCO logical transports do not support multiplexed
logical links or any further layering within the Bluetooth core. An application
may choose to layer a number of streams within the submitted SCO/eSCO
stream, provided that the submitted stream is, or has the appearance of being,
a constant rate stream.
The Bluetooth core system also supports the direct transport of application
data using a Profile Broadcast Data (PBD) logical link. This logical link is similar
Architecture
The application chooses the most appropriate type of logical link from those
available at the baseband, and creates and configures it to transport the data
stream, and releases it when completed. (The application will normally also
use a framed L2CAP unicast channel to transport its C-plane information to the
peer application on the remote device.)
If the application data is isochronous and of a variable rate, then this may only
be carried by the L2CAP unicast channel, and hence will be treated as framed
data.
On ACL logical transports the results of the error detection algorithm are used
to drive a simple ARQ protocol. This provides an enhanced reliability by re-
transmitting packets that do not pass the receiver’s error checking algorithm. It
is possible to modify this scheme to support latency-sensitive packets by
discarding an unsuccessfully transmitted packet at the transmitter if the
packet’s useful life has expired. eSCO links use a modified version of this
scheme to improve reliability by allowing a limited number of retransmissions.
The L2CAP layer provides an additional level of error control that is designed
to detect the occasional undetected errors in the baseband layer and request
retransmission of the affected data. This provides the level of reliability required
by typical Bluetooth applications.
Architecture
Broadcast links have no feedback route, and are unable to use the ARQ
scheme (although the receiver is still able to detect errors in received packets).
Instead each packet is transmitted several times in the hope that the receiver is
able to receive at least one of the copies successfully. Despite this approach
there are still no guarantees of successful receipt, and so these links are
considered unreliable.
The transmitter may remove packets from the transmit queue such that the
receiver does not receive all the packets in the sequence. If this happens
detection of the missing packets is delegated to the L2CAP layer.
3.1.3.2 LE reliability
Broadcast links have no feedback route, and are unable to use the
acknowledgement scheme (although the receiver is still able to detect errors in
received packets). Instead, each packet is transmitted several times to
increase the probability that the receiver is able to receive at least one of the
copies successfully. Despite this approach there are still no guarantees of
successful receipt, and so these links are considered unreliable.
Architecture
The transmitter may remove packets from the transmit queue such that the
receiver does not receive all the packets in the sequence. If this happens
detection of the missing packets is delegated to the L2CAP layer.
The Bluetooth Core maintains a level of reliability for protocols and profiles
above the Core by mandating the use of Enhanced Retransmission Mode or
Streaming Mode for any L2CAP channel used over the AMP.
Architecture
Unicast Broadcast
User
User
(L2CAP)
Logical
Control User Control User Profile User Control Control User Control User
Links
(L2CAP)
AMP-U
(PAL) (L2CAP)
AMP-U (LMP) (L2CAP) Stream Broadcast (L2CAP) (LMP) (LL) (L2CAP) (LL) (LL)
AMP-C AMP-U ACL-C ACL-U Data (PBD) PSB-U PSB-C LE-C LE-U ADVB-C ADVB-U
Transports
Logical
AMP BR/EDR LE
ASB SCO eSCO CSB PSB ADVB
ACL ACL ACL
AMP
Links
BR/EDR LE LE
Physical
Architecture
The general packet structure nearly reflects the architectural layers found in the
Bluetooth BR/EDR system. The BR/EDR packet structure is designed for
optimal use in normal operation. It is shown in Figure 3.4.
Guard &
Channel Access Code Packet Header Sync Payload Header Payload MIC CRC
(EDR Only)
Packets normally only include the fields that are necessary to represent the
layers required by the transaction. Thus a simple inquiry request over an
inquiry scan physical channel does not create or require a logical link or higher
layer and therefore consists only of the channel access code (associated with
the physical channel).
All packets include the channel access code. This is used to identify
communications on a particular physical channel, and to exclude or ignore
packets on a different physical channel that happens to be using the same RF
carrier in physical proximity.
There is no direct field within the BR/EDR packet structure that represents or
contains information relating to physical links. This information is implied by the
combination of the logical transport address (LT_ADDR) carried in the packet
header and the channel access code (CAC).
Most BR/EDR packets include a packet header. The packet header is always
present in packets transmitted on physical channels that support physical links,
logical transports and logical links. The packet header carries the LT_ADDR,
which is used by each receiving device to determine if the packet is addressed
to the device and is used to route the packet internally.
The BR/EDR packet header also carries part of the link control (LC) protocol
that is operated per logical transport (except for ACL and SCO transports that
operate a shared LC protocol carried on either logical transport).
Architecture
The Enhanced Data Rate (EDR) packets have a guard time and
synchronization sequence before the payload. This is a field used for physical
layer change of modulation scheme.
The payload header is present in all packets on logical transports that support
multiple logical links. The payload header includes a logical link identifier field
used for routing the payload, and a field indicating the length of the payload
body. Some packet types also include a CRC at the end of the packet payload
that is used to detect most errors in received packets. When AES-CCM
encryption is enabled, ACL packets include a Message Integrity Check (MIC)
just prior to the CRC field.
The packet payload body is used to transport the user data. The interpretation
of this data is dependent on the logical transport and logical link identifiers. For
ACL logical transports Link Manager Protocol (LMP) messages and L2CAP
signals are transported in the packet payload body, along with general user
data from applications.
For SCO, eSCO, and CSB logical transports the payload body contains the
user data for the logical link.
The general structure of the link layer air interface packet closely reflects the
architectural layers found in the LE system. The LE packet structure is
designed for optimal use in normal operation. It is shown in Figure 3.5.
Layer Information
Architecture
The physical channel identifier is not contained in the link layer air interface
packet. The physical channel identifiers are either fixed or are determined at
connection setup. All LE packets include the Access Address. This is used to
identify communications on a physical link, and to exclude or ignore packets on
different physical links that are using the same PHY channels in physical
proximity. The Access Address determines whether the packet is directed to
the advertising physical link or to an active physical link to a device. All LE
advertising physical links use a fixed Access Address. LE active physical links
use a randomly generated 32-bit value as their Access Address. This provides
an high number of active devices that can be addressed in an LE piconet.
All LE packets include a PDU header. The PDU header determines the type of
advertisement broadcast or logical link carried over the physical channel.
For advertising channel PDUs, the PDU header contains the type of
advertisement payload, the device address type for addresses contained in the
advertisement and advertising channel PDU payload length. Most advertising
channel PDU payloads contain the advertiser's address and advertising data.
One advertising channel PDU payload only contains the advertiser's device
address and the initiator's device address in which the advertisement is
directed. Advertising channel PDUs with scan requests payloads contain the
scanner's device address and the advertiser's device address. Advertising
channel PDUs with scan responses contain advertiser's device address and
the scan response data. Advertising channel PDUs with connection request
payloads contain the initiator's device address, advertiser's device address and
connection setup parameters.
For data channel PDUs, the PDU header contains the Logical Link Identifier
(LLID), the Next Expected Sequence Number (NESN), Sequence Number
(SN), More Data (MD) and payload length. For data channel PDUs that contain
control commands, the data channel PDU payload contains a command
opcode and control data that is specific to the command. There is an optional
Message Integrity Check (MIC) value that is used to authenticate the data
PDU. For data channel PDUs that are data, the data channel PDU payload
contains L2CAP data.
Architecture
The Bluetooth BR/EDR system and LE system differ slightly in the way they
use physical channels.
In the BR/EDR core system, peer devices use a shared physical channel for
communication. To achieve this their transceivers need to be tuned to the same
PHY frequency at the same time, and they need to be within a nominal range
of each other.
Given that the number of RF carriers is limited and that many Bluetooth
devices may be operating independently within the same spatial and temporal
area there is a strong likelihood of two independent Bluetooth devices having
their transceivers tuned to the same RF carrier, resulting in a physical channel
collision. To mitigate the unwanted effects of this collision each transmission on
a physical channel starts with an access code that is used as a correlation
code by devices tuned to the physical channel. This channel access code is a
property of the physical channel. The access code is present at the start of
every transmitted packet.
Four BR/EDR channels are defined. Each is optimized and used for a different
purpose. Two of these physical channels (the basic piconet channel and
adapted piconet channel) are used for communication between connected
devices and are associated with a specific piconet. The remaining BR/EDR
physical channels are used for discovering Bluetooth devices and for
connecting Bluetooth devices. In BR/EDR this is accomplished through the use
of inquiry scan and page scan channels respectively.
A Bluetooth device can only use one BR/EDR physical channel at any given
time. In order to support multiple concurrent operations the device uses time-
division multiplexing between the channels. In this way a Bluetooth device can
appear to operate simultaneously in several piconets, as well as being
discoverable and connectable.
Architecture
3.3.1.1.1 Overview
3.3.1.1.2 Characteristics
The channel is divided into time slots where each slot corresponds to an PHY
hop frequency. Consecutive hops correspond to different PHY hop frequencies.
The time slots are numbered according to the Bluetooth clock of the piconet
master. Packets are transmitted by Bluetooth devices participating in the piconet
aligned to start at a slot boundary. Each packet starts with the channel access
code, which is derived from the Bluetooth device address of the piconet master.
On the basic piconet channel the master controls access to the channel. The
master starts its transmission in even-numbered time slots only. Packets
transmitted by the master are aligned with the slot start and define the piconet
timing. Packets transmitted by the master may occupy up to five time slots
depending on the packet type.
Architecture
be transmitted then this is transmitted in the beacon train slots and takes
priority over any other logical transport.
3.3.1.1.3 Topology
There is, however, a limitation on the number of logical transports that can be
supported within a piconet. This means that although there is no theoretical
limit to the number of Bluetooth devices that share a channel there is a limit to
the number of these devices that can be actively involved in exchanging data
with the master.
3.3.1.2.1 Overview
The adapted piconet channel differs from the basic piconet channel in two
ways. First, the frequency on which a slave transmits is the same as the
frequency used by its master in the preceding transmission. In other words the
frequency is not recomputed between master and subsequent slave packets.
Second, the adapted piconet channel may be based on fewer than the full 79
frequencies. A number of frequencies may be excluded from the hopping
pattern by being marked as “unused”. The remainder of the 79 frequencies are
included. The two sequences are the same except that whenever the basic
pseudo-random hopping sequence selects an unused frequency, it is replaced
with an alternative chosen from the used set.
Because the adapted piconet channel uses the same timing and access code
as the basic piconet channel, the two channels are often coincident. This
provides a deliberate benefit as it allows slaves in either the basic piconet
channel or the adapted piconet channel to adjust their synchronization to the
master.
The topology and supported layers of the adapted piconet physical channel are
identical to the basic piconet physical channel with one exception: on the
adapted piconet physical channel, it is possible for a single master to transmit
data to an unlimited number of slaves using a single CSB logical transport. In
Architecture
this case, however, data is only transferred from master to slave and not from
slave to master.
3.3.1.3.1 Overview
3.3.1.3.2 Characteristics
Inquiry scan channels follow a slower hopping pattern and use an access code
to distinguish between occasional occupancy of the same radio frequency by
two co-located devices using different physical channels.
The access code used on the inquiry scan channel is taken from a reserved set
of inquiry access codes that are shared by all Bluetooth devices. One access
code is used for general inquiries, and a number of additional access codes
are reserved for limited inquiries. Each device has access to a number of
different inquiry scan channels. As all of these channels share an identical
hopping pattern, a device may concurrently occupy more than one inquiry scan
channel if it is capable of concurrently correlating more than one access code.
A device using one of its inquiry scan channels remains passive on that
channel until it receives an inquiry message on this channel from another
Bluetooth device. This is identified by the appropriate inquiry access code. The
inquiry scanning device will then follow the inquiry response procedure to
return a response to the inquiring device.
In order for a device to discover other Bluetooth devices it uses the inquiry
scan channel to send inquiry requests. As it has no prior knowledge of the
devices to discover, it cannot know the exact characteristics of the inquiry scan
channel.
The device takes advantage of the fact that inquiry scan channels have a
reduced number of hop frequencies and a slower rate of hopping. The inquiring
device transmits inquiry requests on each of the inquiry scan hop frequencies
and listens for an inquiry response. Transmissions are done at a faster rate,
allowing the inquiring device to cover all inquiry scan frequencies in a
reasonably short time period.
Architecture
3.3.1.3.3 Topology
3.3.1.4.1 Overview
3.3.1.4.2 Characteristics
The page scan channel uses an access code derived from the scanning
device’s Bluetooth device address to identify communications on the channel.
The page scan channel uses a slower hopping rate than the hop rate of the
basic and adapted piconet channels. The hop selection algorithm uses the
Bluetooth device clock of the scanning device as an input.
A device using its page scan channel remains passive until it receives a page
request from another Bluetooth device. This is identified by the page scan
channel access code. The two devices will then follow the page procedure to
form a connection. Following a successful conclusion of the page procedure
both devices switch to the basic piconet channel that is characterized by
having the paging device as master.
In order for a device to connect to another Bluetooth device it uses the page
scan channel of the target device in order to send page requests. If the paging
device does not know the phase of the target device’s page scan channel it
therefore does not know the current hop frequency of the target device. The
paging device transmits page requests on each of the page scan hop
frequencies and listens for a page response. This is done at a faster hop rate,
Architecture
allowing the paging device to cover all page scan frequencies in a reasonably
short time period.
The paging device may have some knowledge of the target device’s Bluetooth
clock (indicated during a previous inquiry transaction between the two devices,
or as a result of a previous involvement in a piconet with the device), in this
case it is able to predict the phase of the target device’s page scan channel. It
may use this information to optimize the synchronization of the paging and
page scanning process and speed up the formation of the connection.
3.3.1.4.3 Topology
Paging and connectable devices use a simple exchange of packets to fulfill the
paging function. The topology formed during this transaction is a simple and
transient point-to-point connection.
3.3.1.5.1 Overview
In order to receive packets sent on the CSB logical transport, a device must
first obtain information about the timing and frequency channels of those
packets. If a device misses a Coarse Clock Adjustment notification, it needs to
recover the current piconet clock. The synchronization scan channel is
provided for these purposes. A scanning device listens for synchronization
train packets on the synchronization scan channel. Once a synchronization
train packet is received, the device may stop listening for synchronization train
packets because it has the timing and frequency information necessary to start
receiving packets sent on the CSB logical transport or to recover the piconet
clock.
3.3.1.5.2 Characteristics
The synchronization scan channel uses an access code derived from the
Bluetooth device address of the synchronization train transmitter to identify
synchronization train packets on the channel. Once a synchronization train
packet is received, the scanning BR/EDR controller may start receiving packets
sent on the CSB logical transport, depending on the needs of the Host and any
applicable profile(s).
Architecture
3.3.1.5.3 Topology
The topology formed during this scan is transient and point-to-multipoint. There
can be an unlimited number of scanning devices simultaneously receiving
synchronization train packets from the same synchronization train transmitter.
In the LE core system, two Bluetooth devices use a shared physical channel
for communication. To achieve this, their transceivers need to be tuned to the
same PHY frequency at the same time, and they need to be within a nominal
range of each other.
Given that the number of PHY channels is limited, and many Bluetooth devices
can be operating independently within the same spatial and temporal area,
there is a strong likelihood of two pairs of independent Bluetooth devices
having their transceivers tuned to the same PHY channel, resulting in a
physical channel collision. Unlike BR/EDR where an access code is used to
identify the piconet, LE uses a randomly generated Access Address to identify
a physical link between devices. In the event that two devices happen to share
the same PHY channel in the same area, the targeted device Access Address
is used as a correlator to determine to which device the communication is
directed.
Two LE physical channels are defined. Each is optimized and used for a
different purpose. The LE piconet channel is used for communication between
connected devices and is associated with a specific piconet. The LE
advertisement broadcast channel is used for broadcasting advertisements to
LE devices. These advertisements can be used to discover, connect or send
user data to scanner or initiator devices.
An LE device can only use one of these LE physical channels at any given
time. In order to support multiple concurrent operations the device uses time-
division multiplexing between the channels. In this way a Bluetooth device can
appear to support connected devices while simultaneously sending advertising
broadcasts.
Architecture
simultaneously to more than one physical channel, but the specification does
not make this assumption.
3.3.2.1.1 Overview
3.3.2.1.2 Characteristics
The channel is divided into connection events where each connection event
corresponds to a PHY hop channel. Consecutive connection events
correspond to different PHY hop channels. The first packet sent by the master
after the connection establishment sets an anchor point for the timing of all
future connection events. In a connection event the master transmits packets
to a slave in the piconet and the slave may or may not respond with a packet of
its own.
On the LE piconet channel the master controls access to the channel. The
master starts its transmission in a connection event that occurs at regular
intervals. Packets transmitted by the master are aligned with the connection
event start and define the piconet timing. Packets sent by the master may vary
in length from 10 to 265 octets.
There are 37 LE piconet channels. The master can reduce this number through
the channel map indicating the used channels. When the hopping pattern hits
an unused channel the unused channel is replaced with an alternate from the
set of used channels.
Architecture
3.3.2.1.3 Topology
Only one LE piconet channel can exist between two LE device identities or
non-resolvable private addresses.
The LE piconet channel supports L2CAP channels used for general purpose
communications.
3.3.2.2.1 Overview
3.3.2.2.2 Characteristics
The channel is divided into advertising events where each advertising event
can hop on all three advertising PHY channels. Consecutive advertising events
begin on the first advertising PHY channel. The advertising events occur at
regular intervals which are slightly modified with a random delay to aid in
interference avoidance.
Architecture
can be used, with each advertising event type having different sized
advertising packets. These advertising packets can vary in length from 16 to 47
octets.
Some advertising events sent by the advertising device permit the listening
device to concurrently send scan requests or connection requests packets on
the same advertising PHY channel in which the advertising packet was
received. The advertising device can send a scan response packet again on
the same advertising PHY channel within the same advertising event. The
scan response packet can vary in length from 16 to 47 octets.
3.3.2.2.3 Topology
3.3.3.1 Overview
3.3.3.2 Characteristics
The AMP physical channel characteristics depend on the referenced MAC and
PHY. See Volume 5 for the referenced MAC and PHY for each PAL.
3.3.3.3 Topology
Architecture
In BR/EDR the access code packet field, together with the clock and address
of the master Bluetooth device, is used to identify a physical channel. In LE the
access address, hop index, and channel map are used to identify a physical
channel. For BR/EDR and LE, there is no subsequent part of the packet that
directly identifies the physical link. Instead the physical link may be identified by
association with the logical transport, as each logical transport is only received
on one physical link.
Some physical link types have properties that may be modified. An example of
this is the transmit power for the link. Other physical link types have no
modifiable properties. In the case of physical links with modifiable properties
the LM protocol (BR/EDR) is used to adapt these properties. As the LM
protocol (BR/EDR) is supported at a higher layer (by a logical link) the
appropriate physical link is identified by implication from the logical link that
transports the LM signaling.
The basic piconet physical channel supports a physical link which may be
active or parked. The adapted piconet physical channel may support several
physical links, including active, parked, and Connectionless Slave Broadcast.
An active or parked physical link is a point-to-point link between the master and
a slave. A Connectionless Slave Broadcast physical link is a point-to-multipoint
link between the master and zero or more slaves. At least one physical link on
the piconet physical channel is always present when a slave is synchronized in
the piconet.
Architecture
The physical link between a master and a slave device is active if a default ACL
logical transport exists between the devices. Active physical links have no direct
identification of their own, but are identified by association with the default ACL
logical transport ID with which there is a one-to-one correspondence.
An active physical link has the associated property of radio transmit power in
each direction. Transmissions from slave devices are always directed over the
active physical link to the master, and use the transmit power that is a property
of this link in the slave to master direction. Transmissions from the master may
be directed over a single active physical link (to a specific slave) or over a
number of physical links (to a group of slaves in the piconet). In the case of
point-to-point transmissions the master uses the appropriate transmit power for
the physical link in question. (In the case of point-to-multipoint transmissions
the master uses a transmit power appropriate for the set of devices
addressed.)
Active physical links may be placed into Hold or Sniff mode. The effect of these
modes is to modify the periods when the physical link is active and may carry
traffic. Logical transports that have defined scheduling characteristics are not
affected by these modes and continue according to their pre-defined scheduling
behavior. The default ACL logical transport and other links with undefined
scheduling characteristics are subject to the mode of the active physical link.
The physical link between a master and a slave device is parked when the
slave remains synchronized in the piconet, but has no default ACL logical
transport. Such a slave is also said to be parked. A beacon train is used to
provide regular synchronization to all parked slaves connected to the piconet
physical channel. A parked slave broadcast (PSB) logical transport is used to
allow communication of a subset of LMP signaling and broadcast L2CAP to
parked slaves. The PSB logical transport is closely associated with the beacon
train.
A slave is parked (its active link is changed to a parked link) using the park
procedure. The master is not allowed to park a slave that has any user created
logical transport supported by the physical link. These logical transports are
first removed, and any L2CAP channels that are built on these logical
transports are also removed. The broadcast logical transport and default ACL
logical transports are not considered as user created and are not explicitly
removed. When the active link is replaced with a parked link the default ACL
logical transport is implicitly removed. The supported logical links and L2CAP
channels remain in existence, but become suspended. It is not possible to use
these links and L2CAP channels to transport signaling or data while the active
link is absent.
Architecture
A parked slave may become active using the unpark procedure. This
procedure is requested by the slave at an access window and initiated by the
master. Following the unpark procedure the parked physical link is changed to
an active physical link and the default ACL logical transport is re-created.
L2CAP channels that were suspended during the most recent park procedure
are associated with the new default ACL logical transport and become active
again.
Parked links do not support radio power control, as there is no feedback path
from parked slaves to the piconet master that can be used to provide the
received signal strength at the slave or for the master to measure received
signal strength from the slave. Transmissions are carried out at nominal power
on parked links.
Parked links use the same physical channel as their associated active link. If a
master manages a piconet that contains parked slaves using the basic piconet
physical channel and also parked slaves using the adapted piconet physical
channel then it must create a parked slave broadcast logical transport (and
associated transport) for each of these physical channels.
A parked slave may use the inactive periods of the parked slave broadcast
logical transport to save power, or it may carry out activities on other physical
channels unrelated to the piconet within which it is parked.
Connectionless Slave Broadcast packets are sent at regular intervals. The BR/
EDR Controller selects an interval within a range requested by the Host.
Architecture
In the case of inquiry scan and page scan channels, the physical link exists for
a relatively short time and cannot be controlled or modified in any way. These
types of physical links are not further elaborated.
The physical link between a master and a slave device is active if a default LE
ACL logical transport exists between the devices. Active physical links are
identified by the randomly generated Access Address used in the Link Layer
packet. Each Access Address has a one-to-one relationship with the master
and the slave of the active physical link.
An AMP physical link is always associated with exactly one AMP physical
channel (although an AMP physical channel may support more than one AMP
physical link). The AMP physical link is a point-to-point link between two PALs.
The characteristics of an AMP physical link depend on the underlying AMP
technology.
Architecture
Logical transport identification and real-time (link control) signaling are carried
in the packet header, and for some logical links identification is carried in the
payload header. Control signaling that does not require single slot response
times is carried out using the LMP protocol.
Table 3.1 lists all of the logical transport types, the supported logical link types,
which type of physical links and physical channels can support them, and a
brief description of the purpose of the logical transport.
Links
Logical transport supported Supported by Bearer Overview
Architecture
Links
Logical transport supported Supported by Bearer Overview
The classification of each link type follows from a selection procedure within
three categories.
3.5.1 Casting
The first category is that of casting. This may be either unicast or broadcast.
• Unicast links. Unicast links exist between exactly two endpoints. Traffic may be
sent in either direction on unicast links.
• Broadcast links. Broadcast links exist between one source device and zero
or more receiver devices. Traffic is unidirectional, i e., only sent from the
source devices to the receiver devices. Broadcast links are connectionless,
meaning there is no procedure to create these links, and data may be sent
over them at any time. Broadcast links are unreliable, and there is no
guarantee that the data will be received.
Architecture
The final category is related to the class of data that is carried by the link. This
is either control (LMP or PAL) data or user data. The user data category is sub-
divided into L2CAP (or framed) data and stream (or unframed) data.
• Control links. Control links are only used for transporting LMP messages
between two link managers. These links are invisible above the baseband
layer, and cannot be directly instantiated, configured or released by
applications, other than by the use of the connection and disconnection
services that have this effect implicitly. Control links are always multiplexed
with an equivalent L2CAP link onto an ACL logical transport. Subject to the
rules defining the ARQ scheme, the control link traffic always takes priority
over the L2CAP link traffic.
• L2CAP links. L2CAP links are used to transport L2CAP PDUs, which may
carry the L2CAP signaling channel (on the default ACL-U logical link only) or
framed user data submitted to user-instantiated L2CAP channels. L2CAP
frames submitted to the baseband may be larger than the available
baseband packets. A link control protocol embedded within the LLID field
preserves the frame-start and frame-continuation semantics when the frame
is transmitted in a number of fragments to the receiver.
• Stream links. Stream links are used to transport user data that has no
inherent framing that should be preserved when delivering the data. Lost
data may be replaced by padding at the receiver.
Architecture
The default ACL is created between the master and the slave when a device
joins a piconet (connects to the basic piconet physical channel). This default
ACL is assigned a logical transport address (LT_ADDR) by the piconet master.
This LT_ADDR is also used to identify the active physical link when required
(or as a piconet active member identifier, effectively for the same purpose).
The LT_ADDR for the default ACL is reused for synchronous connection-
oriented logical transports between the same master and slave. (This is for
reasons of compatibility with earlier Bluetooth specifications). Thus the
LT_ADDR is not sufficient on its own to identify the default ACL. However the
packet types used on the ACL are different from those used on the
synchronous connection-oriented logical transport. Therefore, the ACL logical
transport can be identified by the LT_ADDR field in the packet header in
combination with the packet type field.
The default ACL may be used for isochronous data transport by configuring it
to automatically flush packets after the packets have expired. Asynchronous
traffic can be sent over an ACL logical transport configured for isochronous
traffic by marking the asynchronous packets as non-automatically-flushable.
This allows both isochronous and asynchronous traffic to be transferred at the
same time to a single device.
If the default ACL is removed from the active physical link then all other logical
transports that exist between the master and the slave are also removed. In the
case of unexpected loss of synchronization to the piconet physical channel the
physical link and all logical transports and logical links cease to exist at the time
that this synchronization loss is detected.
A device may remove its default ACL (and by implication its active physical
link) but remain synchronized to the piconet. This procedure is known as
parking, and a device that is synchronized to the piconet, but has no active
physical link is parked within that piconet.
When the device transitions to the parked state the default ACL logical links
that are transported on the default ACL logical transport remain in existence,
but become suspended. No data may be transferred across a suspended
logical link. When the device transitions from the parked state back into
connection state, a new default ACL logical transport is created (it may have a
different LT_ADDR from the previous one) and the suspended logical links are
attached to this default ACL and become active once again.
Architecture
Each SCO-S logical link is supported by a single SCO logical transport, which
is assigned the same LT_ADDR as the default ACL logical transport between
the devices. Therefore the LT_ADDR field is not sufficient to identify the
destination of a received packet. Because the SCO links use reserved slots, a
device uses a combination of the LT_ADDR, the slot numbers (a property of
the physical channel) and the packet type to identify transmissions on the SCO
link.
Although slots are reserved for the SCO, it is permissible to use a reserved slot
for traffic from another channel that has a higher priority. This may be required
as a result of QoS commitments, or to send LMP signaling on the default ACL
when the physical channel bandwidth is fully occupied by SCOs. As SCOs
carry different packet types to ACLs, the packet type is used to identify SCO
traffic (in addition to the slot number and LT_ADDR).
eSCO links also can offer limited retransmission of packets (unlike SCO links
where there is no retransmission). If these retransmissions are required they
take place in the slots that follow the reserved slots, otherwise the slots may be
used for other traffic.
Architecture
The active slave broadcast logical transport is used to transport L2CAP user
traffic to all devices in the piconet that are currently connected to the physical
channel that is used by the ASB. There is no acknowledgement protocol and
the traffic is uni-directional from the piconet master to the slaves. The ASB
channel may be used for L2CAP group traffic (a legacy of the 1.1
specification), and is never used for L2CAP connection-oriented channels,
L2CAP control signaling or LMP control signaling.
An ASB is implicitly created whenever a piconet exists, and there is always one
ASB associated with each of the basic and adapted piconet physical channels
that exist within the piconet. Because the basic and adapted piconet physical
channels are mostly coincident, a slave device cannot distinguish which of the
ASB channels is being used to transmit the packets. This adds to the general
unreliability of the ASB channel. (Although it is, perhaps, no more unreliable
than general missed packets.)
A master device may decide to use only one of its two possible ASBs (when it
has both a basic and adapted piconet physical channel), as with sufficient
retransmissions it is possible to address both groups of slaves on the same
ASB channel.
The ASB channel is never used to carry LMP or L2CAP control signals.
Architecture
The PSB logical transport is more complex than the other logical transports as
it consists of a number of phases, each having a different purpose. These
phases are the control information phase (used to carry the LMP logical link),
the user information phase (used to carry the L2CAP logical link), and the
access phase (carrying baseband signaling). The control information and
broadcast information phases are usually mutually exclusive as only one of
them can be supported in a single beacon interval. (Even if there is no control
or user information phase, the master is still required to transmit a packet in the
beacon slots so that the parked slaves can resynchronize.) The access phase
is normally present unless cancelled in a control information message.
The control information phase is used for the master to send information to the
parked slaves containing modifications to the PSB transport attributes,
modifications to the beacon train attributes, or a request for a parked slave to
become active in the piconet (known as unparking). This control information is
carried in LMP messages on the LMP logical link. (The control information
phase is also present in the case of a user information phase where the user
information requires more than one baseband packet.)
Packets in the control information phase are always transmitted in the physical
channel beacon train slots, and cannot be transmitted on any other slots. The
control information occupies a single DM1 packet and is repeated in every
beacon train slot within a single beacon interval. (If there is no control
information then there may be a user information phase that uses the beacon
slots. If neither phase is used then the beacon slots are used for other logical
transport traffic or for NULL packets.)
The user information phase is used for the master to send L2CAP packets that
are destined for all piconet slaves. User information may occupy one or more
baseband packets. If the user information occupies a single packet then the user
information packet is repeated in each of the piconet channel beacon train slots.
If the user information occupies more than one baseband packet then it is
transmitted in slots after the beacon train (the broadcast scan window) and the
beacon slots are used to transmit a control information phase message that
contains the timing attributes of this broadcast scan window. This is required so
that the parked slaves remain connected to the piconet physical channel to
receive the user information.
Architecture
order for a parked slave to become active in the piconet, it may send such an
access request to the piconet master during the access window. Each parked
slave is allocated an access request address (not necessarily unique) that
controls when during the access window the slave requests access.
The default LE ACL is automatically created between the master and the slave
when a device joins a piconet (connects to the LE piconet physical channel).
This default LE ACL is assigned an access channel number by the piconet
master. This access address is also used to identify the active physical link
when required.
If the default LE ACL is removed from the LE active physical link then all other
LE logical transports that exist between the master and the slave are also
removed. In the case of unexpected loss of synchronization to the LE piconet
physical channel the LE physical link and all LE logical transports and LE
logical links cease to exist at the time that this synchronization loss is detected.
Architecture
The CSB logical transport is used to transport profile broadcast data to all
devices connected to the Connectionless Slave Broadcast logical transport.
There is no acknowledgement scheme and the traffic is unidirectional from a
master to zero or more slaves. To improve reliability, profile broadcast data
may be transmitted multiple times.
Some logical transports are capable of supporting different logical links, either
concurrently multiplexed, or one of the choice.
Within BR/EDR logical transports, the logical link is identified by the logical link
identifier (LLID) bits in the payload header of baseband packets that carry a
data payload. The logical links distinguish between a limited set of core
protocols that are able to transmit and receive data on the logical transports.
Not all of the logical transports are able to carry all of the logical links (the
supported mapping is shown in Figure 3.2). In particular the BR/EDR SCO and
eSCO logical transports are only able to carry constant data rate streams, and
these are uniquely identified by the LT_ADDR. Such logical transports only use
packets that do not contain a payload header, as their length is known in
advance, and no LLID is necessary.
The ACL Control Logical Link (ACL-C) is used to carry BR/EDR LMP signaling
between devices in the piconet. The control link is only carried on the default
ACL logical transport and on the PSB logical transport (in the control
information phase). The ACL-C link is always given priority over the ACL-U
(see below) link when carried on the same logical transport.
Architecture
Within LE logical transports, the logical link is identified by the logical link
identifier (LLID) bits in the payload header of baseband packets that carry a
data payload. The logical links distinguish between a limited set of core
protocols that are able to transmit and receive data on the logical transports.
Not all of the logical transports are able to carry all of the logical links (the
supported mapping is shown in Figure 3.2).
The user asynchronous logical link (LE-U) is used to carry all asynchronous
and framed user data. The LE-U link is carried on the LE logical transport.
Packets on the LE-U link are identified by one of two reserved LLID values.
Architecture
One value is used to indicate whether the baseband packet contains the start
of an L2CAP frame and the other indicates a continuation of a previous frame
or empty PDU. This ensures correct synchronization of the L2CAP re-
assembler. The use of this technique removes the need for a more complex
L2CAP header in every baseband packet, but adds the requirement that a
complete L2CAP frame shall be transmitted before a new one is transmitted.
Each PAL functions differently with respect to a control logical link. When one
exists, this logical link is referred to as the AMP-C logical link.
Architecture
L2CAP supports channels that are connection-oriented and others that are
group-oriented. Group-oriented channels may be mapped onto the ASB-U
logical link, or implemented as iterated transmission to each member in turn
over an ACL-U logical link.
Apart from the creation, configuration and dismantling of channels, the main
role of L2CAP is to multiplex service data units (SDUs) from the channel clients
onto the ACL-U, LE-U, or AMP-U logical links, and to carry out a simple level of
scheduling, selecting SDUs according to relative priority.
L2CAP can provide per channel flow control with the peer L2CAP layer. This
option is selected by the application when the channel is established. L2CAP
can also provide enhanced error detection and retransmission to (a) reduce the
probability of undetected errors being passed to the application and (b) recover
from loss of portions of the user data when the Baseband layer performs a
flush on the ACL-U logical link.
In the case where an HCI is present, the L2CAP is also required to segment
L2CAP SDUs into fragments that will fit into the baseband buffers, and also to
operate a token based flow control procedure over the HCI, submitting
fragments to the baseband only when allowed to do so. This may affect the
scheduling algorithm.
Architecture
Any time a link is created using the BR/EDR Controller it is within the context of
a piconet. A piconet consists of two or more devices that occupy the same BR/
EDR physical channel.
The terms master and slave are only used when describing these roles in a
piconet.
Architecture
Adapted piconet
A physical channel F
E
H
B Basic piconet
G
physical channel
D
C
Basic piconet
physical channel
M
Basic piconet Inquiry scan
physical channel K
physical channel
J
N
Adapted piconet
physical channel
(Connectionless Slave
L Broadcast physical link)
Synchronization scan
physical channel
In piconet A there are two physical channels. Devices B and C are using the
basic piconet physical channel (represented by the blue enclosure) as they do
not support adaptive frequency hopping. Devices D and E are capable of
supporting adaptive frequency hopping, and are using the adapted piconet
physical channel (represented by the red enclosure). Device A is capable of
adaptive frequency hopping, and operates in a TDM basis on both physical
channels according to which slave is being addressed.
Piconet D and piconet F are both using only a basic piconet physical channel
(represented by the cyan and magenta enclosures respectively). In the case of
piconet D this is because device J does not support the adaptive hopping
mode. Although device D supports adaptive hopping it cannot use it in this
piconet. In piconet F device F does not support adaptive hopping, and
therefore it cannot be used in this piconet.
Architecture
Device K is shown in the same locality as the other devices. It is not currently a
member of a piconet, but has services that it offers to other Bluetooth devices.
It is currently listening on its inquiry scan physical channel (represented by the
green enclosure), awaiting an inquiry request from another device.
Device L is shown in the same locality as the other devices. It is not currently a
member of a piconet, but is currently listening on its Synchronization scan
physical channel (represented by the brown enclosure), awaiting a
synchronization train from another device.
4.1.2 LE Topology
sing
LE Adverti
annel D
Physical Ch
A
F
el
ha t
nn
l C ne
Phy
ica co
LE l Chan
l
ne
Ch net
ys Pi
sica
an
Pic
Ph LE
ic ico
ys P
one nel
al
Ph LE
H
t
B
I J
G
C
L LE Advertising
Ph E A
ys dv Physical Channel
ica er
l C tisi
ha ng
nn
el
E
sing
LE Adverti N
annel
K Physical Ch LE Adverti
sing
annel R
O Physical Ch
el
ha t
nn
Phy
l C ne
el
LE l Chan
ica co
ha t
nn
Phy
l C ne
sica
ys Pi
Pic
LE l Chan
ica co
Ph LE
sica
ys Pi
one nel
Pic
Ph LE
one nel
t
L
P
M
Q
Architecture
slave of device P and slave of device Q. Note: in the figure, solid arrows point
from master to slave; dashed arrows, indicating a connection initiation, point
from initiator to advertiser using a connectable advertising event; devices that
are advertising are indicated using stars.
Architecture
The inquiry procedure does not make use of any of the architectural layers
above the physical channel, although a transient physical link may be
considered to be present during the exchange of inquiry and inquiry response
information.
Architecture
The procedure for forming connections is asymmetrical and requires that one
Bluetooth device carries out the page (connection) procedure while the other
Bluetooth device is connectable (page scanning). The procedure is targeted,
so that the page procedure is only responded to by one specified Bluetooth
device.
Additional logical links are created using the Link Manager that exchanges Link
Manager Protocol messages with the remote Bluetooth device to negotiate the
creation and settings for these links. One of these links (ACL-C) transports the
LMP control protocol and is invisible to the layers above the Link Manager. The
other link (ACL-U) transports the L2CAP signaling protocol and any
multiplexed L2CAP best-effort channels. It is common to refer to a default ACL
logical transport, which can be resolved by context, but typically refers to the
default ACL-U logical link. Also note that these two logical links share a logical
transport.
During the time that a slave device is actively connected to a piconet there is
always a default ACL logical transport between the slave and the master
device. There are two methods of deleting the default ACL logical transport.
The first method is to detach the device from the piconet physical channel, at
Architecture
which time the entire hierarchy of L2CAP channels, logical links, and logical
transports between the devices is deleted.
The second method is to place the physical link to the slave device in the park
state, at which time it gives up its default ACL logical transport. This is only
allowed if all other logical transports have been deleted (except for the ASB
logical transport that cannot be explicitly created or deleted). It is not allowed to
park a device while it has any logical transports other than the default ACL and
ASB logical transports.
When the slave device physical link is parked, its default ACL logical transport
is released and the ASB logical transport is replaced with a PSB logical
transport. The ACL-C and ACL-U logical links that are multiplexed onto the
default ACL logical transport remain in existence but cannot be used for the
transport of data. The Link Manager on the master device restricts itself to the
use of LMP messages that are allowed to be transported over the PSB-C
logical link. The Channel Manager and L2CAP Resource Manager ensure that
no L2CAP unicast data traffic is submitted to the controller while the device is
parked. The Channel Manager may decide to manage the parking and
unparking of the device as necessary to allow data to be transported.
Hold mode is not a general device mode, but applies to unreserved slots on the
physical link. When in this mode, the physical link is only active during slots
that are reserved for the operation of the synchronous link types SCO and
eSCO. All asynchronous links are inactive. Hold modes operate once for each
invocation and are then exited when complete, returning to the previous mode.
Sniff mode is not a general device mode, but applies to the default ACL logical
transports. When in this mode the availability of these logical transports is
modified by defining a duty cycle consisting of periods of presence and
absence. Devices that have their default ACL logical transports in sniff mode
may use the absent periods to engage in activity on another physical channel,
or to enter reduced power mode. Sniff mode only affects the default ACL
logical transports (i.e. their shared ACL logical transport), and does not apply to
any additional SCO or eSCO logical transports that may be active. The periods
of presence and absence of the physical link on the piconet physical channel is
derived as a union of all logical transports that are built on the physical link.
Sniff subrating provides a mechanism for further reducing the active duty cycle,
thereby enhancing the power-saving capability of sniff mode. Sniff subrating
allows a Host to create a guaranteed access-like connection by specifying
maximum transmit and receive latencies. This allows the basebands to
optimize the low power performance without having to exit and re-enter sniff
mode using Link Manager commands.
Architecture
A slave device may remain connected to a piconet but have its physical link in
the parked state. In this state the device cannot support any logical links to the
master with the exception of the PSB-C and PSB-U logical links that are used
for all communication between the piconet master and the parked slave.
When the physical link to a slave device is parked this means that there are
restrictions on when the master and slave may communicate, defined by the
PSB logical transport parameters. During times when the PSB logical transport
is inactive (or absent) then the devices may engage in activity on other physical
channels, or enter reduced power mode.
The role switch procedure is a method for swapping the roles of two devices
connected in a piconet. The procedure involves moving from the physical
channel that is defined by the original master device to the physical channel
that is defined by the new master device. In the process of swapping from one
physical channel to the next, the hierarchy of physical links and logical
transports over the BR/EDR Controller are removed and rebuilt, with the
exception of the ASB and PSB logical transports that are implied by the
topology and are not preserved. Note that the role switch procedure does not
affect AMP physical channels. After the role switch, the original piconet
physical channel may cease to exist or may be continued if the original master
had other slaves that are still connected to the channel.
The procedure only copies the default ACL logical links and supporting layers
to the new physical channel. Any additional logical transports are not copied by
this procedure, and if required this must be carried out by higher layers. The
LT_ADDRs of any affected transports may not be preserved as the values may
already be in use on the new physical channel.
If there are any QoS commitments on the original logical transports, then these
are not preserved after a role switch. These must be renegotiated after the role
switch has completed.
Architecture
4.2.2 LE Procedures
The device filtering procedure is a method for controllers to reduce the number
of devices requiring communication responses. Since it is not required to
respond to requests from every device, it reduces the number of transmissions
an LE Controller is required to make which reduces power consumption. It also
reduces the communication the controller would be required to make with the
host. This results in additional power savings since the Host does not have to
be involved.
Architecture
device require that the scanning device send a request to the advertising
device. This advertisement can be ignored if device filtering is used and the
advertising device is being filtered. A similar situation occurs with connection
requests. Connection requests must be responded to by advertisers unless a
device filter is used to limit the devices to which the advertiser is required to
respond. Advertisers can also use device filters to limit the devices in which it
will accept a scan request or connection request.
This device filtering is accomplished through the use of a “White List” located in
the LL block of the controller. A white list enumerates the remote devices that
are allowed to communicate with the local device. When a white list is in effect,
transmissions from devices that are not in the white list will be ignored by the
LL. Since device filtering occurs in the LL it can have a significant impact on
power consumption by filtering (or ignoring) advertising packets, scan requests
or connection requests from being sent to the higher layers for handling.
Advertising devices may receive scan requests from listening devices in order
to get additional user data from the advertising device. Scan responses are
sent by the advertising device to the device making the scan request over the
same advertising physical channel. Whereas the broadcast user data sent as
part of the advertising packets is typically dynamic in nature, scan response
data is generally static in nature.
Architecture
advertising and enters the connected mode. The device can begin advertising
again after it is in the connected mode.
If the broadcasts are connectable advertising events and the scanning device
is in the initiator mode, it can initiate a connection by sending a connection
request on the advertising broadcast physical channel to the advertising
device. Once the connection request is sent, the scanning device ceases the
initiator mode scanning for additional broadcasts and enters the connected
mode. The device can use the scanning procedure after it enters the
connected mode. For a master device, using the initiator mode and scanning
for connectable advertisements is how additional devices can be added to the
master's LE piconet.
Using device filtering by the scanning device will prevent the scanning device
from discovering all the devices in a given area.
Architecture
The procedure for forming connections is asymmetrical and requires that one
Bluetooth device carries out the advertising procedure while the other
Bluetooth device carries out the scanning procedure. The advertising
procedure can be targeted, so that only one device will respond to the
advertising. The scanning device can also target an advertising device by first
discovering that the advertising device is present in a connectable manner, and
in the given area, and then scanning only connectable advertising events from
that device using the device filter. After receiving connectable advertising
events from the targeted advertising device, it can initiate a connection by
sending the connection request to the targeted advertising device over the
advertising broadcast physical channel.
Additional logical links are created using the Link Manager that exchanges LL
Protocol messages with the remote Bluetooth device to negotiate the creation
and settings for these links. One of these links (LE-C) transports the LL control
protocol and is invisible to the layers above the Link Manager. The other link
(LE-U) transports the L2CAP signaling protocol and any multiplexed L2CAP
best-effort channels. It is common to refer to a default LE ACL logical transport,
which can be resolved by context, but typically refers to the default LE-U logical
link. Also note that these two logical links share a logical transport.
During the time that a slave device is actively connected to a piconet there is
always a default LE ACL logical transport between the slave and the master
device. The method of deleting the default LE ACL logical transport is to detach
the device from the piconet physical channel, at which time the entire hierarchy
of L2CAP channels, logical links, and logical transports between the devices is
deleted.
Architecture
The AMP Manager is responsible for discovering local AMP Controller(s) and
maintaining that list over time as AMPs may be added or removed dynamically
from the system. The local AMP Manager may request a list of AMPs from the
remote AMP Manager. After the list of AMPs has been requested by the
remote device, when an AMP is added or removed from the system, the local
AMP Manager will notify that remote AMP Manager of the change.
Each AMP Is identified with an ID and a type. Once the list of AMPs has been
received, the AMP Manager may request information (AMP_Info) for each
AMP.
To set up an L2CAP channel with a remote device over an AMP physical link
(AMP channel), the AMP Manager first discovers the remote AMP(s), collects
the necessary information about the remote AMP(s) to set up a physical link in
an optimal way and then initiates the physical link creation. This is done over a
dedicated L2CAP channel.
The AMP Manager provides the remote AMP information that it collected about
the remote AMP to the local AMP PAL. The local AMP PAL then uses this
information to create the AMP physical link.
Once a physical link exists, L2CAP creates an AMP logical link with the desired
QoS. An L2CAP channel is then created over the logical link, at which point the
channel is ready for data communication.
Architecture
5 SECURITY OVERVIEW
The Bluetooth Core security architecture has evolved over time. Initially, pairing
utilized the E21 or E22 algorithms based on SAFER+. This version of pairing is
referred to as “BR/EDR legacy pairing”. Device authentication was initially
based on the E1 algorithm, which was also based on SAFER+. Encryption
utilizes the E0 algorithm derived from the Massey-Rueppel algorithm. There
was also no provision for cryptographic message integrity. Note that while the
CRC provides some integrity protection, it is not considered to provide
cryptographic integrity as it can be easily forged.
Version 2.1 + EDR of the Core Specification introduced Secure Simple Pairing,
which utilizes FIPS-approved algorithms (SHA-256, HMAC-SHA-256 and the
P-192 elliptic curve) and introduced four association models: Just Works,
Numeric Comparison, Passkey Entry and Out-Of-Band (see Section 5.2).
Device authentication and encryption remained the same when Secure Simple
Pairing was introduced.
Version 3.0 + HS of the Core Specification added support for AMPs (see
Section 5.5).
Version 4.0 added the entire security model for Low Energy (see Section 5.4)
but did not change any security functionality for BR/EDR or AMP.
Version 4.1 added the Secure Connections feature to the BR/EDR phyisical
transport, which upgraded Secure Simple Pairing to utilize the P-256 elliptic
curve, device authentication to use FIPS-approved algorithms (HMAC-SHA-
256 and AES-CTR). Secure Connections also added message integrity (AES-
CCM).
Architecture
physical transport to preclude the need for the user to pair a second time on
the other physical transport. LE pairing as defined in the Bluetooth Core
Specification 4.0 and 4.1 is referred to as LE legacy pairing.
The security key hierarchy for BR/EDR and AMP is shown in Figure 5.1. The
key hierarchy is different depending on whether a physical link is using Secure
Connections or legacy security procedures and algorithms.
f2 (HMAC-SHA-256)
Prior to Secure Connections, DHKey derived from P192
With Secure Connections, DHKey derived from P256
Link key
(128b)
AU_RAND BD_ADDR
(verifier) (claimant) “btdk” BD_ADDRm BD_ADDRs “gamp” “tmp2”
Device
SRES COF (ACO) Authentication GAMP_LK ILTK
Key AU_RAND_M AU_RAND_S
Claimant Verifies
“802b” “brle”
h5 (HMAC-SHA-256)
E3 (SAFER+) h3 (HMAC-SHA-256)
AES
Kc encryption
key
AES
Kc’ encryption
EN_RAND BD_ADDRm key
(shortened)
Nonce:
E0 (Massey Rueppel) nonce AES-CCM Counter / CLK
(CLK) IV (ACO or EN_RAND)
LE Long Term Key
Device Authentication and BR/EDR Derived from BR/EDR
Encryption Key Generation prior to Device Authentication and BR/EDR Encryption Key Secure Connections
Secure Connections Generation with Secure Connections AMP Link Key Generation Link Key
The security key hierarchy for LE is shown in Figure 5.2. The key hierarchy is
different depending on whether a physical link is using LE Secure Connections
or LE legacy pairing procedures and algorithms.
Architecture
BR/EDR Secure
Connections
s1(AES-128) f5(AES-CMAC-128)
LE STK BR/EDR
- legacy “tmp1” Link Key “tmp2”
LE LTK
Stored
Long Term Key
Secure Simple Pairing has two security goals: protection against passive
eavesdropping and protection against man-in-the-middle (MITM) attacks
(active eavesdropping). It is a goal of Secure Simple Pairing to exceed the
maximum security level provided by the use of a 16 alphanumeric PIN with the
pairing algorithm used in Bluetooth Core Specification version 2.0 + EDR and
earlier versions. Note that many Bluetooth devices compliant with Bluetooth
Core Specification 2.0 + EDR and earlier versions use a 4-digit PIN or a fixed
PIN of commonly known values significantly limiting the security on the link.
Architecture
Secure Simple Pairing uses Elliptic Curve Diffie Hellman (ECDH) public key
cryptography as a means to thwart passive eavesdropping attacks. ECDH
provides a very high degree of strength against passive eavesdropping attacks
but it may be subject to MITM attacks, which however, are much harder to
perform in practice than the passive eavesdropping attack (see Section 5.2.3).
Using the security protocols in the Bluetooth Core Specification version 2.0 +
EDR and earlier with a 16 numeric digit PIN achieves about 53 bits of entropy
whereas a 16 character alphanumeric, case sensitive PIN yields about 95 bits of
entropy when the entire 62 character set is used ([0, … 9, 'A', … 'Z', 'a', … 'z']).
For devices that do not support the Secure Connections feature (introduced in
Core Specification v4.1), Secure Simple Pairing has approximately 96 bits of
entropy using the FIPS approved P-192 elliptic curve which is at least as good as
the entropy in Bluetooth Core Specification 2.0 + EDR and earlier using a 16
character, alphanumeric, case sensitive PIN. For devices that do support the
Secure Connections feature, Secure Simple Pairing has approximately 128 bits
of entropy using the FIPS-approved P-256 elliptic curve. ECDH cryptography
was selected over standard Diffie Hellman (often referred to as DH76) since it is
computationally less complex and less likely to exceed the low computational
capacity in common Bluetooth Controllers.
Architecture
To prevent MITM attacks, Secure Simple Pairing offers two user assisted
numeric methods: numerical comparison or passkey entry. If Secure Simple
Pairing would use 16 decimal digit numbers, then the usability would be the
same as using legacy pairing with 16 decimal digit PIN. The chance for a MITM
to succeed inserting its own link keys in this case is a 1 in 1016 = 253 pairing
instances, which is an unnecessarily low probability.
Secure Simple Pairing protects the user from MITM attacks with a goal of
offering a 1 in 1,000,000 chance that a MITM could mount a successful attack.
The strength of the MITM protections was selected to minimize the user impact
by using a six digit number for numerical comparison and Passkey entry. This
level of MITM protection was selected since, in most cases, users can be
alerted to the potential presence of a MITM attacker when the connection
process fails as a result of a failed MITM attack. While most users feel that
provided that they have not compromised their passkey, a 4-digit key is
sufficient for authentication (i.e. bank card PIN codes), the use of six digits
allows Secure Simple Pairing to be FIPS compliant and this was deemed to
have little perceivable usability impact.
The association model used is deterministic based on the I/O capabilities of the
two devices.
Architecture
of having the user enter "yes" or "no". A good example of this model is the cell
phone / PC scenario.
The user is shown a six digit number (from "000000" to "999999") on both
displays and then asked whether the numbers are the same on both devices. If
"yes" is entered on both devices, the pairing is successful.
The numeric comparison serves two purposes. First, since many devices do
not have unique names, it provides confirmation to the user that the correct
devices are connected with each other. Second, the numeric comparison
provides protection against MITM attacks (see Section 5.2.3).
The Just Works association model is primarily designed for scenarios where at
least one of the devices does not have a display capable of displaying a six
digit number nor does it have a keyboard capable of entering six decimal digits.
A good example of this model is the cell phone/mono headset scenario where
most headsets do not have a display.
The Just Works association model uses the Numeric Comparison protocol but
the user is never shown a number and the application may simply ask the user
to accept the connection (exact implementation is up to the end product
manufacturer).
The Just Works association model provides the same protection as the
Numeric Comparison association model against passive eavesdropping but
offers no protection against the MITM attack.
When compared against today's experience of a headset with a fixed PIN, the
security level of the Just Works association model is considerably higher since
a high degree of protection against passive eavesdropping is realized.
Architecture
The Out of Band (OOB) association model is primarily designed for scenarios
where an Out of Band mechanism is used to both discover the devices as well
as to exchange or transfer cryptographic numbers used in the pairing process.
In order to be effective from a security point of view, the Out of Band channel
should provide different properties in terms of security compared to the
Bluetooth radio channel. The Out of Band channel should be resistant to MITM
attacks. If it is not, security may be compromised during authentication.
The user's experience differs a bit depending on the Out of Band mechanism.
As an example, with a Near Field Communication (NFC) solution, the user(s)
will initially touch the two devices together, and is given the option to pair the
first device with the other device. If "yes" is entered, the pairing is successful.
This is a single touch experience where the exchanged information is used in
both devices. The information exchanged includes discovery information (such
as the Bluetooth Device Address) as well as cryptographic information. One of
the devices will use a Bluetooth Device Address to establish a connection with
the other device. The rest of the exchanged information is used during
authentication.
The OOB protocol is selected only when the pairing process has been
activated by previous OOB exchange of information and one (or both) of the
device(s) gives OOB as the IO capabilities. The protocol uses the information
which has been exchanged and simply asks the user to confirm connection.
The Passkey Entry association model is primarily designed for the scenario
where one device has input capability but does not have the capability to
display six digits and the other device has output capabilities. A good example
of this model is the PC and keyboard scenario.
The user is shown a six digit number (from "000000" to "999999") on the
device with a display, and is then asked to enter the number on the other
device. If the value entered on the second device is correct, the pairing is
successful. Note that there is a significant difference from a cryptographic point
of view between Passkey Entry and the PIN entry model used by Bluetooth
Core Specification 2.0 + EDR and earlier versions. In the Passkey Entry
Architecture
association model, the six digit number is independent of the security algorithm
and not an input to it, as is the case in the 2.0 + EDR security model. Knowing
the entered number is of no benefit in decrypting the encoded data exchanged
between the two devices.
The following diagram shows Secure Simple Pairing from the point of view of
the technology used for discovery and then the different association
possibilities.
OOB
Pairing Procedure OOB
Bluetooth In Band Discovery and
Stage Discovery only
Authentication
Bluetooth
Bluetooth Information discovered
Device Discovery Bluetooth Information exchanged + Security Information
by Bluetooth Inquiry
via OOB exchanged via OOB
Security
Exchange Public Keys, IO Capabilities, Compute DHKey
Establishment
Security Information
Numeric Passkey Just Numeric Passkey Just from OOB
Authentication Compare Entry Works Compare Entry Works
OOB
When a device requires that only FIPS-approved algorithms are used on the
LE physical transport, it should enter Secure Connections Only Mode on the
LE physical transport. Secure Connections Only Mode is sometimes called a
Architecture
"FIPS Mode". This mode should be used when it is more important for a device
to have high security than it is for it to maintain backwards compatibility with
devices that do not support LE Secure Connections. In this mode, the Host will
enforce that the P-256 elliptic curve is used during pairing.
5.4 LE SECURITY
The pairing mechanisms introduced in Bluetooth Core Specification v4.0
(known as LE Legacy Pairing) have some differences in security aspects with
respect to BR/EDR security features such as Secure Simple Pairing. The
association models are similar to BR/EDR Secure Simple Pairing from the user
perspective and have the same names but have differences in the quality of
the protection provided.
The use of each association model is based on the I/O capabilities of the
devices.
Architecture
5.4.3 Encryption
In order for a device using the privacy feature to reconnect to known devices,
the device address, referred to as the private address, must be resolvable by
the other device. The private address is generated using the device’s resolving
identity key (IRK) exchanged during the bonding procedure.
Architecture
There are two variants of the privacy feature. In the first variant, private
addresses are resolved and generated by the Host. In the second variant,
private addresses are resolved and generated by the Controller without
involving the Host after the Host provides the Controller device identity
information. In addition, the second variant may involve the Host when the
resolving list in the Controller cannot store all the device identity resolving keys
necessary for bonded devices.
The Host maintains a resolving list by adding and removing device identities.
The Host may provide the Controller with a complete resolving list or a subset
of the resolving list. A device identity consists of the peer’s identity address and
a local and peer’s IRK pair.
When the Controller performs address resolution and the Host needs to refer to
a peer device that is included in the resolving list, it uses the peer’s device
identity address. Likewise, all incoming events from the Controller to the Host
will use the peer’s device identity, provided that the peer’s device address has
been resolved. If the Controller cannot resolve the peer’s device identity
address in an advertisement or, it may pass the event to the Host for resolution
in the Host.
Local IRK Peer IRK Peer Device Identity Address Address Type Device Identity Address Address Type
Local IRK Peer IRK Peer Device Identity Address Address Type
Local IRK Peer IRK Peer Device Identity Address Address Type Device Identity Address Address Type
Local IRK Peer IRK Peer Device Identity Address Address Type Device Identity Address Address Type
Figure 5.4: Logical Representation of the Resolving List and Device White List
Note: Not all devices in the white list are device identity addresses.
Architecture
AMP security starts during the Secure Simple Pairing process. The link key for
BR/EDR is generated during Phase 4 of Secure Simple Pairing. A 256-bit
Generic AMP Link Key (GAMP_LK) is generated from the BR/EDR Link Key.
The Generic AMP Link Key is stored in the security database alongside the
BR/EDR Link Key once pairing has completed.
AMP security does not affect the BR/EDR Link Key so backwards compatibility
is maintained for devices that support the Generic AMP feature with devices
that do not.
When an AMP is used for the first time, a dedicated AMP key is created by the
AMP Manager for that AMP type using the new Secure Simple Pairing function
h2 and a KeyID for the AMP type. The length of the Dedicated AMP Link Key
depends on the AMP Type. If the Pair-wise Master key already exists due to a
previous connection the AMP link key is not created and the stored key is
reused.
The Dedicated AMP Link Key is sent to the PAL during the Physical Link
creation process. Each PAL is responsible for using the Dedicated AMP Link
Key during the security phase of the physical link establishment process. Note
that a Dedicated AMP link key is used for multiple sessions over the same
AMP.
Each time a dedicated AMP key is successfully created, the Generic AMP Link
Key is updated. This is performed using the h2 function with KeyID 'gamp'.
The link key for BR/EDR generated during Phase 4 of Secure Simple Pairing
on the BR/EDR physical transport may be converted to a Long Term Key (LTK)
for use on the LE transport. Similarly, a LTK generated during Phase 2 of
pairing on the LE physical transport may be converted to the BR/EDR Link Key
for use on the BR/EDR physical transport.
Architecture
Bluetooth Profiles
Bluetooth Protocol Layers
L2CAP
Link Manager
Profile #1
Profile #2
Profile #3
GAP
Baseband
Radio (PHY)
In addition, application behaviors and data formats are also defined by the
profile. When two devices comply with all the requirements of a Bluetooth
profile, interoperability of an application is enabled.
Architecture
In BR/EDR, GAP defines a single role with functionality that may be present in
each device. This functionality includes how devices discovery each other,
establish connections and describes security association models used for
authentication. In BR/EDR this functionality may be present in both devices. It
may be necessary for a device to implement both the initiating and accepting
functionality if the device wants to discover or establish connections with all
devices. A device may only include either the initiating or the accepting
functionality but it requires the remote device to support the complimentary
functionality to discovery or establish connections with the device. For BR/
EDR, the Controller is required to support all the functionality, however the
Host may limit this functionality based on the other profiles or use cases
supported by the device.
In LE, GAP defines four specific roles: Broadcaster, Observer, Peripheral, and
Central. A device may support multiple LE GAP roles provided that the
underlying Controller supports those roles or role combinations. Each role
specifies the requirements for the underlying Controller. This allows for
Controllers to be optimized for specific use cases.
Architecture
Application Profile #1
Generic Profile #1
Generic Access
Profile
Application profiles contain by reference GAP and any other generic profile that
describes a set of common requirements of the Bluetooth system.
The GATT server stores the data transported over the Attribute Protocol and
accepts Attribute Protocol requests, commands and confirmations from the
GATT client. The GATT server sends responses to requests and when
configured, sends indication and notifications asynchronously to the GATT
client when specified events occur on the GATT server.
GATT also specifies the format of data contained on the GATT server.
Attributes, as transported by the Attribute Protocol, are formatted as Services
and Characteristics. Services may contain a collection of characteristics.
Architecture
The top level of the hierarchy is a profile. A profile is composed of one or more
services necessary to fulfill a use case. A service is composed of
characteristics or references to other services. Each characteristic contains a
value and may contain optional information about the value. The service and
characteristic and the components of the characteristic (i.e., value and
descriptors) contain the profile data and are all stored in Attributes on the
server.
Architecture
Profile
Service Service
Include Include
Include Include
Characteristic Characteristic
Properties Properties
Value Value
Descriptor Descriptor
Descriptor Descriptor
Characteristic Characteristic
Properties Properties
Value Value
Descriptor Descriptor
Descriptor Descriptor
6.5.1 Service
There are two types of services: primary and secondary. A primary service is a
service that provides the primary functionality of a device. A secondary service
is a service that provides auxiliary functionality of a device and is referenced
from at least one primary service on the device.
Services may be used in one or more profiles to fulfill a particular use case.
Architecture
6.5.3 Characteristic
Architecture
Bluetooth devices operate in the unlicensed 2.4 GHz Industrial, Scientific and
Medical (ISM) band. Many other technologies utilize the ISM band, including
wireless LAN, cordless phones, and microwave ovens. The ISM band is also
close enough to other frequency bands that Bluetooth devices may be an
interferer of or a victim of other technologies.
Type Description
Frequency division Simultaneous use of multiple radios enabled by filters and/or isolation
Time division One radio may transmit or receive at a time through scheduling or pri-
oritization
Time alignment Activities of the collocated radios are aligned in the time domain to
optimize performances by avoiding conflicting activities. E.g. Trans-
missions of multiple radios may occur simultaneously, multiple recep-
tions may occur simultaneously, but it is not possible to transmit and
receive simultaneously
Hybrid frequency Use of frequency division, time alignment, and time division tech-
and time division niques depending on the relative frequencies in use by the radios, fil-
ters and isolation
Architecture
Version
Feature Introduced Description
HCI Set Host Channel 1.2 Allows a Host to inform the local Bluetooth control-
Classification ler of the channels that are occupied by a collo-
cated technology
Enhanced SCO 1.2 Added retransmissions to SCO for the purpose of
(eSCO) combating interference
Architecture
The Bluetooth Specification also defines a mechanism that allows for a slave to
report channel classification information to the master.
1. https://www.bluetooth.org/en-us/specification/reference-publications/white-papers
Architecture
Host
Coex Signaling
Base MWS Bluetooth
Bluetooth
Station Device Controller
Co-located Interference
Two types of solutions have been considered. In the first solution, both
Bluetooth transmissions (TX) and receptions (RX) are constrained by
collocated MWS activities. Solutions of this type are called Pure TDM (Time
Division Multiplexed) Mode. In the second solution, only Bluetooth receptions
are affected by collocated MWS transmissions and Bluetooth transmissions do
not impact the operation of the collocated MWS. Solutions of this type are
called Hybrid Mode and are achieved, for example, by using steep roll-off Band
Select Filters (BSFs) for the ISM band in the Bluetooth transceiver. Hybrid
Mode applies where the Bluetooth transmission’s effect on MWS is sufficiently
reduced via filtering that the Bluetooth device can safely transmit during the
MWS downlink time. This requires a frequency guard band between the
Bluetooth and MWS operational frequency ranges as well as constraints on
both the Bluetooth BSF and the MWS BSF. The requirement for a time domain
solution still remains, but only to protect Bluetooth reception.
Architecture
Example where
Bluetooth is
master and is not M S M S M S M S M S M S M S M S M S M S
aligned with MWS
frame boundary
Even with the best relative timing relationship (when the Bluetooth slot
boundary is aligned with the MWS frame boundary), the Bluetooth radio in the
MRT suffers reduced transmission and reception opportunities due to time
multiplexing with the collocated MWS radio. The Bluetooth radio only gets one
transmission/reception opportunity every MWS frame, as shown in Figure 7.3.
Bluetooth slot
boundary is
aligned with MWS S M S M S M S M S M S M S M S M S M S
frame boundary
Consequently, three out of four (for 5 msec MWS frames) or seven out of eight
(for 10 msec MWS frames) slot pairs of Bluetooth can be punctured by MWS
activities. Furthermore, since Bluetooth inquiry and paging use a sequence of
16 channels at a time, when the Bluetooth radio in the MRT is performing
inquiry or paging the channel sequence will repeat every 5 ms resulting in the
same channels being repeatedly punctured by the collocated MWS activities,
see Figure 7.4. As a result, there is a high probability that the remote scanning
device will not be able to receive the page or inquiry IDs within the current
timeout.
When the inquiry or paging channel sequence gets repeatedly punctured, Train
Nudging can be used to add an additional offset to the clock bits in order to
shift the channel sequence.
Architecture
Bluetooth T T R R T T R R T T R R T T R R T T
X X X X X X X X X X X X X X X X X X
MASTER
Based on the pattern of slots that are not available for scanning, Generalized
Interlaced Scanning can be used to tune the phase of the second scan during
a back-to-back scan.
T T R R T T R R T T R R T T R R T T R R T T
X X X X X X X X X X X X X X X X X X X X X X
Master
Slave
(MRT) page scan page scan
Figure 7.5: Bluetooth radio can suffer inquiry scan/page scan failures
[Vol 7] Part A defines the timing of the MWS frame as a fixed offset from the
FRAME_SYNC signal in the coexistence signalling. This is shown in Figure 7.6
as FS. FS can be defined by the Host as any specific offset within the MWS
Architecture
frame. For a piconet master, the most useful position for FS is the boundary
between the uplink and the following downlink. This is because the master
needs to transmit in a master slot during the uplink and then receive in the
following slave slot during the downlink. Putting FS at this boundary allows the
master to easily align its Bluetooth clock to put it between these slots. The
situation is reversed in a slave: FS is most useful on the boundary between the
downlink and the following uplink.
FS Middle of GP
D S U U D D S U U D
Collocated
Master S M S M S M S M S M S M S M S M
Collocated
Slave M S M S M S M S M S M S M S M S
Note: In LTE, if the implementation does not have access to the exact LTE
timing it can assume that the downlink-to-uplink boundary is the middle of the
GP in a special LTE subframe.
Coarse Clock Adjustments can be used to move the Bluetooth CLK using the
LMP_clk_adj PDU. The clk_adj_us parameter is used to align the slots with the
MWS alignment point indicated by the FRAME_SYNC signal. The
clk_adj_slots parameter can be used to move the CLK several slots forward in
time. This can be useful to align e.g. eSCO. Coarse Clock Adjustment is
expected to be used only rarely, for instance at MWS connection or when the
MWS frame timing changes due to roaming. Coarse Clock Adjustment can
only be used when all slaves in the piconet support for it.
The other option for the master is to use Clock Dragging. This is a method of
slowly adjusting the phase of the clock backward or forward by making the
Architecture
slots a few µs shorter or longer, respectively, until the desired CLK phase has
been achieved. It should be noted that this is a very slow rate of adjustment, as
it is designed to allow a legacy device to track the change, and therefore Clock
Dragging must not be done at a faster rate than the maximum natural drift
between devices. For this reason its main use is to facilitate small corrections
over time if a misalignment with the MWS system is detected. If any device is
connected that does not support Coarse Clock Adjustment, slowly moving the
slave using Clock Dragging is the only option.
CONTENTS
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 1, Part B] page 113
Acronym or
Writing out in full Comments
abbreviation
AD Advertising Data
Adv_idx Advertising channel index
ADVB LE Advertising Broadcast
Acronym or
Writing out in full Comments
abbreviation
BB Baseband
CL Connectionless
CLK Master Clock
CLKE Estimated Clock
Acronym or
Writing out in full Comments
abbreviation
DA Destination address
Acronym or
Writing out in full Comments
abbreviation
E Excluded
ECWmax Enhanced Contention Window
maximum
Acronym or
Writing out in full Comments
abbreviation
Acronym or
Writing out in full Comments
abbreviation
IV Initialization Vector
IVm Initialization Vector (master)
IVs Initialization Vector (slave)
Acronym or
Writing out in full Comments
abbreviation
LL Link Layer
LLCP Link Layer Control Protocol
LR Loudness Rating
LSB Least Significant Bit
LSO Least Significant Octet
LSTO Link Supervision Timeout Event Controller can send LSTO event to
Host
LT_ADDR Logical Transport ADDRess
LTK Long-Term Key
M Master or Mandatory
MAC Medium Access Control
Acronym or
Writing out in full Comments
abbreviation
MS Mobile Station
MSB Most Significant Bit
mSBC modified Sub Band Codec Hands-Free Profile v1.6 or later
O Optional
π/4 DQPSK pi/4 Rotated Differential Quater- 2 Mb/s modulation type used by
nary Phase Shift Keying Enhanced Data Rate
Acronym or
Writing out in full Comments
abbreviation
PN Pseudo-random Noise
PPM Part Per Million
PPP Point-to-Point Protocol
RX Receive
Table 1.1: Acronyms and Abbreviations
Acronym or
Writing out in full Comments
abbreviation
S Slave
SAP Service Access Points
SD Service Discovery
SDP Service Discovery Protocol
SDU Service Data Unit
SKDs Session Key Diversifier (slave) Slave portion of the Session Key
Diversifier
SLR Send Loudness Ring
SM Security Manager
Acronym or
Writing out in full Comments
abbreviation
TX Transmit
U
CONTENTS
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 1, Part C] page 126
1 DEPRECATED FEATURES
Some features have been deemed no longer useful and have been
deprecated. The term deprecation does not mean that they are no longer
allowed, but that they are no longer recommended as the best way of
performing a given function.
The feature descriptions are incorporated into the existing text in different core
parts, described in Volumes 2 and 3.
In addition, new text and requirements were added for the new features as well
as many changes throughout the specification to update the text to use IEEE
language (see [Vol 1] Part E).
These additions are incorporated into the existing text in different core parts
described in Volumes 2 and 3.
ESR08 ESR09
ESR08 ESR09
V3C: GAP 2341, 4087, 4778, 4895, 5803, 5938, 5939, 5964,
4935, 4936, 5618, 5441, 5989,
5051,
V3F: ATT 6006
V3G: GATT 3817, 4358, 5116, 5117
V6B: Link Layer 5231, 5232, 5233, 5234, 5824, 5922, 5947, 5950,
5235, 5236, 5307, 5360, 5954, 5994, 6116
5419, 5428, 5526, 5577,
5653, 5656, 5706, 5707,
5720, 5721, 5722, 5723,
V6C: Sample Data 4948,
PART D: MIXING OF
SPECIFICATION VERSIONS
CONTENTS
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 1, Part D] page 139
This part describes how volumes, and parts within volumes, of different
versions and Specification Addenda of the Core Specification may be mixed in
Bluetooth implementations. The Core System consists of a BR/EDR Controller
Package (see Volume 2), a Low Energy Controller Package (see Volume 6), a
Host Package (see Volume 3) and AMP Protocol Adaptation Layers (see
Volume 5).
• All parts within a Primary Controller implementation shall comply with the
same version of Volume 2 and Volume 6.
• All parts within a Host implementation of Volume 3 shall comply with the
same version.
• An AMP Controller implementation shall contain parts of Volume 2 and
Volume 5 from the same version.
• The Primary Controller, AMP Controller, and Host may comply with different
versions within a single implementation.
In order to describe how these volumes and parts within volumes can be
mixed, one needs to distinguish between four categories of features specified
in the different specification versions. The four categories are:
Category Description
Type 1 Feature that exists below HCI and cannot be configured/enabled via
HCI
Type 2 Feature that exists below HCI and can be configured/enabled via HCI
Type 3 Feature that exists below and above HCI and requires HCI command/
events to function
The outcome of mixing different Core System Packages are derived from the
feature definitions in the table above:
• If an implementation contains features of type 1 or type 4, these features
can function with any combination of Host Package and Controller Package
or AMP Protocol Adaptation Layer (PAL) versions with applicable addenda.
• If an implementation contains features of type 2, these features can only be
used under a default condition if a Host Package of an older version with
applicable addenda is mixed with a Controller Package or AMP PAL of this
version with applicable Core Specification Addenda (CSAs).
• In order to fully use the feature under all conditions, the Host Package,
Controller Package, and AMP PAL must comply with the same or later
version with applicable CSAs.
• If an implementation contains features of type 3, these features can only
function if the Host Package supports this version or a later version with
applicable CSAs and if the Controller Package complies with this version or
a later version with applicable CSAs.
Note: Each Change may contain changes and/or additions to one or more
parts of the Core Specification.
C.1: Mandatory if either the Host Part of the Low Energy Core Configuration or the Host
Part of the Basic Rate and Low Energy Combined Core Configuration is supported,
otherwise Excluded.
C.2: Mandatory if either the Host Part of the Low Energy Core Configuration, Controller
Part of the Low Energy Core Configuration, Host Part of the Basic Rate and Low
Energy Combined Core Configuration, or Controller Part of the Basic Rate and Low
Energy Combined Core Configuration is supported, otherwise Excluded.
C.3: Mandatory if the Host Part of the Basic Rate and Low Energy Combined Core Con-
figuration is supported, otherwise Excluded.
C.4: Optional if MWS Coexistence Logical Signaling is supported, otherwise Excluded.
IEEE Language
CONTENTS
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 1, Part E] page 148
IEEE Language
One of the purposes of this terminology is to make it easy for the reader to
identify text that describes requirements as opposed to background
information. The general term for text that describes attributes that are required
for proper implementation of Bluetooth wireless technology is normative. The
general term for language that provides background and context for normative
text is informative. These terms are used in various sections to clarify
implementation requirements.
For clarity of the definition of those terms, the following sections document why
and how they are used. For these sections only, the IEEE terms are italicized to
indicate their use as a noun. Uses and examples of the use of the terms in this
section are underlined.
IEEE Language
1.1 SHALL
The word shall is used to indicate mandatory requirements that shall be
followed in order to conform to the specification and from which no deviation is
permitted.
There is a strong implication that the presence of the word shall indicates a
testable requirement. All testable requirements shall be reflected in the
Protocol Implementation Conformance Statement (PICS). In turn, all PICS
indicators should be reflected in the Test Cases (TCs) either directly or
indirectly.
A direct reference is a specific test for the attribute cited in the text. For
example, a minimum value for a given parameter may be an entry in the TCs.
Indirect test coverage may be appropriate if the existence of the attribute is
requisite for passing a higher level test.
1.2 MUST
The word must shall not be used when stating mandatory requirements. Must
is used only to describe unavoidable situations and is seldom appropriate for
the text of a Specification.
An example of an appropriate use of the term must is: “the Bluetooth radios
must be in range of each other to communicate”.
1.3 WILL
The use of the word will shall not be used when stating mandatory
requirements. The term will is only used in statements of fact. As with the term
must, will is not generally applicable to the description of a protocol. An
example of appropriate use of will is: “when power is removed from the radio, it
can be assumed that communications will fail”
1.4 SHOULD
Should equals is recommended that. The word should is used to indicate that
among several possibilities one is recommended as particularly suitable
without mentioning or excluding others. Alternatively it may indicate that a
certain course of action is preferred but not necessarily required. Finally, in the
negative form, it indicates a certain course of action is deprecated but not
prohibited.
IEEE Language
1.5 MAY
The word may is used to indicate a course of action permissible within the
limits of the specification. The term may equals is permitted. This is generally
used when there is a single, optional attribute described, but multiple
alternatives may be cited.
The use of may implies an optional condition in the PICS and therefore may
need to be reflected in the corresponding test cases.
1.6 CAN
The word can is used for statements of possibility and capability, whether
material, physical, or causal. The term can equals is able to.
The term can shall be used only in informative text. It describes capabilities by
virtue of the rules established by normative text.
Part A:
ARCHITECTURE
Figure 1.1: Bluetooth Host and Controller Combinations: (from left to right):
LE Only Primary Controller, BR/EDR only Primary Controller, BR/
EDR Primary Controller, with one AMP Secondary Controller,
and BR/EDR with multiple AMP Secondary Controllers ........... 14
Figure 1.2: Bluetooth Host and Controller Combinations (from left to right):
BR/EDR and LE Primary Controller, BR/EDR and LE Primary
Controller with one AMP Secondary Controller, and BR/EDR and
LE Primary Controller with multiple AMP Secondary
Controllers ................................................................................ 14
Figure 1.3: Advertising Events .................................................................... 17
Figure 1.4: Connection Events .................................................................... 18
Figure 2.1: Bluetooth core system architecture .......................................... 27
Figure 2.2: Generic PAL architecture .......................................................... 34
Figure 3.1: Bluetooth generic data transport architecture ........................... 35
Figure 3.2: Bluetooth traffic bearers ............................................................ 36
Figure 3.3: Overview of transport architecture entities and hierarchy ......... 42
Figure 3.4: BR/EDR packet structure .......................................................... 43
Figure 3.5: LE packet structure ................................................................... 44
Figure 4.1: Example Bluetooth BR/EDR topology ...................................... 73
Figure 4.2: Example of Bluetooth LE topology ........................................... 74
Figure 5.1: BR/EDR and AMP Key Hierarchy ............................................. 86
Figure 5.2: LE Key Hierarchy ...................................................................... 87
Figure 5.3: Secure Simple Pairing Association Models .............................. 92
Figure 5.4: Logical Representation of the Resolving List and Device White
List ............................................................................................ 95
Figure 6.1: Bluetooth Profiles ..................................................................... 97
Figure 6.2: Profile Hierarchy ....................................................................... 99
Figure 6.3: GATT-Based Profile Hierarchy ................................................ 101
Figure 7.1: MWS Coexistence Architecture .............................................. 106
Figure 7.2: MWS receptions interfered with by uncontrolled Bluetooth
transmissions .......................................................................... 107
Figure 7.3: Bluetooth radio has reduced transmission/receiving
opportunities ........................................................................... 107
Figure 7.4: Bluetooth radio can suffer Inquiry/Page failures ..................... 108
Figure 7.5: Bluetooth radio can suffer inquiry scan/page scan failures .... 108
Figure 7.6: Alignment of MWS frame timing and Bluetooth clock ............. 109
Part B:
ACRONYMS & ABBREVIATIONS
Part C:
CORE SPECIFICATION CHANGE HISTORY
Part D:
MIXING OF SPECIFICATION VERSIONS
Part E:
IEEE LANGUAGE
Part A:
ARCHITECTURE
Table 1.1: Nomenclature ............................................................................ 20
Table 3.1: Logical transport types ............................................................. 60
Table 7.1: Interference mitigation types ................................................... 103
Table 7.2: Interference mitigation features ............................................... 104
Part B:
ACRONYMS & ABBREVIATIONS
Table 1.1: Acronyms and Abbreviations ................................................... 113
Part C:
CORE SPECIFICATION CHANGE HISTORY
Table 8.1: Errata integrated in v4.2 .......................................................... 135
Part D:
MIXING OF SPECIFICATION VERSIONS
Table 1.1: Feature type definitions ........................................................... 139
Table 1.2: Features and their types .......................................................... 141
Table 1.3: Adopted core specification versions to use with addenda. ...... 143
Part E:
IEEE LANGUAGE
Core System
Package
[BR/EDR Controller volume]
Revision History
The Revision History is shown in the [Vol 0] Part C, Appendix.
Contributors
The persons who contributed to this specification are listed in the [Vol 0] Part C,
Appendix.
Web Site
This specification can also be found on the official Bluetooth web site:
https://www.bluetooth.org/en-us/specification/adopted-specifications
Use of Bluetooth Specifications and any related intellectual property is governed by the
Promoters Membership Agreement among the Promoter Members and Bluetooth SIG (the
“Promoters Agreement”), certain membership agreements between Bluetooth SIG and its
Adopter and Associate Members, including, but not limited to, the Membership Application, the
Bluetooth Patent/Copyright License Agreement and the Bluetooth Trademark License
Agreement (collectively, the “Membership Agreements”) and the Bluetooth Specification Early
Adopters Agreements (1.2 Early Adopters Agreements) among Early Adopter members of the
unincorporated Bluetooth SIG and the Promoter Members (the “Early Adopters Agreement”).
Certain rights and obligations of the Promoter Members under the Early Adopters Agreements
have been assigned to Bluetooth SIG by the Promoter Members.
Use of the Specification by anyone who is not a member of Bluetooth SIG or a party to an Early
Adopters Agreement (each such person or party, a “Member”) is prohibited. The use of any
portion of a Bluetooth Specification may involve the use of intellectual property rights ("IPR"),
including pending or issued patents, or copyrights or other rights. Bluetooth SIG has made no
search or investigation for such rights and disclaims any undertaking or duty to do so. The legal
rights and obligations of each Member are governed by the applicable Membership
Agreements, Early Adopters Agreement or Promoters Agreement. No license, express or
implied, by estoppel or otherwise, to any intellectual property rights are granted herein.
Any use of the Specification not in compliance with the terms of the applicable Membership
Agreements, Early Adopters Agreement or Promoters Agreement is prohibited and any such
prohibited use may result in (i) termination of the applicable Membership Agreements or Early
Adopters Agreement and (ii) liability claims by Bluetooth SIG or any of its Members for patent,
copyright and/or trademark infringement claims permitted by the applicable agreement or by
applicable law.
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2] page 3
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2] page 4
TABLE OF CONTENTS
Part A
RADIO SPECIFICATION
1 Scope .................................................................................................. 34
2 Frequency Bands and Channel Arrangement................................. 36
3 Transmitter Characteristics .............................................................. 37
3.1 Basic Rate ................................................................................. 39
3.1.1 Modulation Characteristics............................................ 39
3.1.2 Spurious Emissions....................................................... 39
3.1.3 Radio Frequency Tolerance .......................................... 40
3.2 Enhanced Data Rate ................................................................. 41
3.2.1 Modulation Characteristics............................................ 41
3.2.2 Spurious Emissions....................................................... 44
3.2.3 Radio Frequency Tolerance .......................................... 46
3.2.4 Relative Transmit Power ............................................... 46
4 Receiver Characteristics ................................................................... 47
4.1 Basic Rate ................................................................................. 47
4.1.1 Actual Sensitivity Level ................................................. 47
4.1.2 Interference Performance ............................................. 47
4.1.3 Out-of-Band Blocking.................................................... 48
4.1.4 Intermodulation Characteristics .................................... 48
4.1.5 Maximum Usable Level................................................. 49
4.1.6 Receiver Signal Strength Indicator................................ 49
4.1.7 Reference Signal Definition .......................................... 49
4.2 Enhanced Data Rate ................................................................. 49
4.2.1 Actual Sensitivity Level ................................................. 49
4.2.2 BER Floor Performance................................................ 49
4.2.3 Interference Performance ............................................. 50
4.2.4 Maximum Usable Level................................................. 51
4.2.5 Out-of-Band and Intermodulation Characteristics......... 51
4.2.6 Reference Signal Definition .......................................... 51
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2] page 5
Part B
BASEBAND SPECIFICATION
1 General Description........................................................................... 66
1.1 Bluetooth Clock ......................................................................... 67
1.2 Bluetooth Device Addressing .................................................... 69
1.2.1 Reserved Addresses..................................................... 69
1.3 Access Codes............................................................................ 70
2 Physical Channels ............................................................................. 71
2.1 Physical Channel Definition ....................................................... 72
2.2 Basic Piconet Physical Channel ................................................ 72
2.2.1 Master-slave Definition ................................................. 72
2.2.2 Hopping Characteristics................................................ 73
2.2.3 Time Slots ..................................................................... 73
2.2.4 Piconet Clocks .............................................................. 74
2.2.5 Transmit/Receive Timing .............................................. 74
2.3 Adapted Piconet Physical Channel ........................................... 78
2.3.1 Hopping Characteristics................................................ 78
2.4 Page Scan Physical Channel .................................................... 79
2.4.1 Clock Estimate for Paging............................................. 79
2.4.2 Hopping Characteristics................................................ 79
2.4.3 Paging Procedure Timing ............................................. 80
2.4.4 Page Response Timing................................................. 81
2.5 Inquiry Scan Physical Channel .................................................. 83
2.5.1 Clock for Inquiry ............................................................ 83
2.5.2 Hopping Characteristics................................................ 83
2.5.3 Inquiry Procedure Timing.............................................. 83
2.5.4 Inquiry Response Timing .............................................. 83
2.6 Hop Selection ............................................................................ 85
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2] page 6
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2] page 7
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2] page 8
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2] page 9
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2] page 10
Part C
LINK MANAGER PROTOCOL SPECIFICATION
1 Introduction ...................................................................................... 229
2 General Rules................................................................................... 230
2.1 Message Transport.................................................................. 230
2.2 Synchronization ....................................................................... 230
2.3 Packet Format ......................................................................... 231
2.4 Transactions ............................................................................ 232
2.4.1 LMP Response Timeout ............................................. 234
2.5 Error Handling ......................................................................... 234
2.5.1 Transaction Collision Resolution................................. 235
2.6 Procedure Rules ...................................................................... 235
2.7 General Response Messages ................................................. 236
2.8 LMP Message Constraints....................................................... 236
3 Device Features ............................................................................... 237
3.1 General Description ................................................................. 237
3.2 Feature Definitions .................................................................. 237
3.3 Feature Mask Definition........................................................... 245
3.4 Link Manager Interoperability policy ........................................ 248
4 Procedure Rules .............................................................................. 249
4.1 Connection Control .................................................................. 249
4.1.1 Connection Establishment .......................................... 249
4.1.2 Detach......................................................................... 250
4.1.3 Power Control ............................................................. 251
4.1.4 Adaptive Frequency Hopping...................................... 255
4.1.5 Channel Classification ................................................ 258
4.1.6 Link Supervision.......................................................... 260
4.1.7 Channel Quality Driven Data Rate Change (CQDDR) 261
4.1.8 Quality of Service (QoS) ............................................. 262
4.1.9 Paging Scheme Parameters ....................................... 263
4.1.10 Control of Multi-slot Packets ....................................... 265
4.1.11 Enhanced Data Rate................................................... 266
4.1.12 Encapsulated LMP PDUs ........................................... 267
4.1.13 Ping............................................................................. 269
4.1.14 Piconet Clock Adjustment ........................................... 270
4.2 Security.................................................................................... 274
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2] page 11
Part D
ERROR CODES
1 Overview of Error Codes................................................................. 373
1.1 Usage Descriptions ................................................................. 373
1.2 HCI Command Errors .............................................................. 373
1.3 List of Error Codes................................................................... 374
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2] page 12
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2] page 13
Part E
HOST CONTROLLER INTERFACE FUNCTIONAL SPECIFICATION
1 Introduction ...................................................................................... 399
1.1 Lower Layers of the Bluetooth Software Stack ........................ 400
2 Overview of Host Controller Transport Layer ............................... 402
2.1 Host Controller Transport Layer and AMPS ............................ 402
3 Overview of Commands and Events.............................................. 403
3.1 Generic Events ........................................................................ 404
3.2 Device Setup ........................................................................... 404
3.3 Controller Flow Control ............................................................ 405
3.4 Controller Information .............................................................. 406
3.5 Controller Configuration........................................................... 408
3.6 Device Discovery ..................................................................... 411
3.7 Connection Setup .................................................................... 414
3.8 Remote Information ................................................................. 419
3.9 Synchronous Connections....................................................... 420
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2] page 14
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2] page 15
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2] page 16
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2] page 17
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2] page 18
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2] page 19
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2] page 20
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2] page 21
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2] page 22
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2] page 23
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2] page 24
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2] page 25
Part F
MESSAGE SEQUENCE CHARTS
1 Introduction .................................................................................... 1061
1.1 Notation ................................................................................. 1061
1.2 Flow of Control ...................................................................... 1062
1.3 Example MSC........................................................................ 1062
2 Services Without Connection Request........................................ 1063
2.1 Remote Name Request ......................................................... 1063
2.2 One-time Inquiry .................................................................... 1065
2.3 Periodic Inquiry ...................................................................... 1067
3 ACL Connection Establishment and Detachment ...................... 1069
3.1 Connection Setup .................................................................. 1070
4 Optional Activities After ACL Connection Establishment ......... 1078
4.1 Authentication Requested ..................................................... 1078
4.2 Simple Pairing Message Sequence Charts ........................... 1080
4.2.1 Optional OOB Information Collection........................ 1081
4.2.2 Enable Simple Pairing and Secure Connections ...... 1082
4.2.3 Connection Establishment ........................................ 1083
4.2.4 L2CAP Connection Request for a Secure Service ... 1084
4.2.5 Optional OOB Information Transfer .......................... 1084
4.2.6 Start Simple Pairing .................................................. 1085
4.2.7 IO Capability Exchange ............................................ 1086
4.2.8 Public Key Exchange ................................................ 1087
4.2.9 Authentication ........................................................... 1087
4.2.10 Numeric Comparison ................................................ 1088
4.2.11 Numeric Comparison Failure on Initiating Side......... 1089
4.2.12 Numeric Comparison Failure on Responding Side... 1090
4.2.13 Passkey Entry ........................................................... 1091
4.2.14 Passkey Entry Failure on Responding Side.............. 1092
4.2.15 Passkey Entry Failure on Initiator Side ..................... 1093
4.2.16 Out of Band............................................................... 1094
4.2.17 OOB Failure on Initiator Side .................................... 1096
4.2.18 DHKey Checks.......................................................... 1097
4.2.19 Calculate Link Key .................................................... 1098
4.2.20 Enable Encryption..................................................... 1099
4.2.21 L2CAP Connection Response .................................. 1099
4.2.22 LMP Ping .................................................................. 1100
4.3 Link Supervision Timeout Changed Event............................. 1102
4.4 Set Connection Encryption .................................................... 1103
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2] page 26
Part G
SAMPLE DATA
1 Encryption Sample Data................................................................ 1168
1.1 E0 Encryption Sample Data................................................... 1168
1.1.1 Generating Kc' from Kc............................................. 1168
1.1.2 First Set of Sample Data........................................... 1171
1.1.3 Second Set of Sample Data...................................... 1179
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2] page 27
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2] page 28
Part H
SECURITY SPECIFICATION
1 Security Overview.......................................................................... 1306
1.1 Pausing Encryption and Role Switch..................................... 1307
1.2 Change Connection Link Keys .............................................. 1308
1.3 Periodically Refreshing Encryption Keys ............................... 1308
2 Random Number Generation ........................................................ 1309
3 Key Management ........................................................................... 1310
3.1 Key Types .............................................................................. 1310
3.2 Key Generation and Initialization ........................................... 1312
3.2.1 Generation of initialization key, ................................ 1313
3.2.2 Authentication ........................................................... 1313
3.2.3 Generation of a unit key............................................ 1313
3.2.4 Generation of a combination key .............................. 1314
3.2.5 Generating the encryption key .................................. 1315
3.2.6 Point-to-multipoint configuration ............................... 1316
3.2.7 Modifying the link keys.............................................. 1316
3.2.8 Generating a master key........................................... 1317
4 Encryption (E0) .............................................................................. 1319
4.1 Encryption Key Size Negotiation ........................................... 1320
4.2 Encryption of Broadcast Messages ....................................... 1320
4.3 Encryption Concept ............................................................... 1321
4.4 Encryption Algorithm ............................................................. 1322
4.4.1 The operation of the cipher ....................................... 1324
4.5 LFSR Initialization.................................................................. 1325
4.6 Key Stream Sequence........................................................... 1328
5 Authentication................................................................................ 1329
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2] page 29
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2] page 30
02 December 2014
Bluetooth SIG Proprietary
Core System Package [BR/EDR Controller volume]
Part A
Radio Specification
CONTENTS
1 Scope .................................................................................................. 34
2 Frequency Bands and Channel Arrangement................................. 36
3 Transmitter Characteristics .............................................................. 37
3.1 Basic Rate ................................................................................. 39
3.1.1 Modulation Characteristics............................................ 39
3.1.2 Spurious Emissions....................................................... 39
3.1.2.1 In-band spurious emission ............................. 40
3.1.3 Radio Frequency Tolerance .......................................... 40
3.2 Enhanced Data Rate ................................................................. 41
3.2.1 Modulation Characteristics............................................ 41
3.2.1.1 Modulation Method Overview ......................... 41
3.2.1.2 Differential Phase Encoding ........................... 41
3.2.1.3 Pulse Shaping ................................................ 42
3.2.1.4 Modulation Accuracy ...................................... 43
3.2.2 Spurious Emissions....................................................... 44
3.2.2.1 In-band Spurious Emission............................. 44
3.2.3 Radio Frequency Tolerance .......................................... 46
3.2.4 Relative Transmit Power ............................................... 46
4 Receiver Characteristics ................................................................... 47
4.1 Basic Rate ................................................................................. 47
4.1.1 Actual Sensitivity Level ................................................. 47
4.1.2 Interference Performance ............................................. 47
4.1.3 Out-of-Band Blocking.................................................... 48
4.1.4 Intermodulation Characteristics .................................... 48
4.1.5 Maximum Usable Level................................................. 49
4.1.6 Receiver Signal Strength Indicator................................ 49
4.1.7 Reference Signal Definition .......................................... 49
4.2 Enhanced Data Rate ................................................................. 49
4.2.1 Actual Sensitivity Level ................................................. 49
4.2.2 BER Floor Performance................................................ 49
4.2.3 Interference Performance ............................................. 50
4.2.4 Maximum Usable Level................................................. 51
4.2.5 Out-of-Band and Intermodulation Characteristics......... 51
4.2.6 Reference Signal Definition .......................................... 51
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2, Part A] page 33
Radio Specification
A.1.1
Nominal temperature .................................................. 52
A.1.2
Nominal power source ................................................ 52
A.1.2.1 Mains voltage ............................................... 52
A.1.2.2 Lead-acid battery power sources used in
vehicles ........................................................ 52
A.1.2.3 Other power sources .................................... 52
A.2 Extreme Test Conditions ........................................................ 52
A.2.1 Extreme temperatures ................................................ 52
A.2.2 Extreme power source voltages .................................. 53
A.2.2.1 Mains voltage ............................................... 53
A.2.2.2 Lead-acid battery power source used on
vehicles ........................................................ 53
A.2.2.3 Power sources using other types of
batteries ....................................................... 53
A.2.2.4 Other power sources .................................... 53
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2, Part A] page 34
Radio Specification
1 SCOPE
Bluetooth devices operate in the unlicensed 2.4 GHz ISM (Industrial Scientific
Medical) band. A frequency hop transceiver is applied to combat interference
and fading.
Two modulation modes are defined. A mandatory mode, called Basic Rate,
uses a shaped, binary FM modulation to minimize transceiver complexity. An
optional mode, called Enhanced Data Rate, uses PSK modulation and has two
variants: π/4-DQPSK and 8DPSK. The symbol rate for all modulation modes is
1 Ms/s. The gross air data rate is 1 Mb/s for Basic Rate, 2 Mb/s for Enhanced
Data Rate using π/4-DQPSK and 3 Mb/s for Enhanced Data Rate using
8DPSK.
For full duplex transmission, a Time Division Duplex (TDD) scheme is used in
both modes. This specification defines the requirements for a Bluetooth radio
for the Basic Rate and Enhanced Data Rate modes.
The Bluetooth radio shall fulfil the stated requirements under the operating
conditions specified in Appendix A and Appendix B. The radio parameters shall
be measured according to the methods described in the RF Test Specification.
Europe:
Japan:
Radio Specification
North America:
Radio Specification
The Bluetooth system operates in the 2.4 GHz ISM band. This frequency band
is 2400 - 2483.5 MHz.
Radio Specification
3 TRANSMITTER CHARACTERISTICS
The requirements stated in this section are given as power levels at the
antenna connector of the Bluetooth device. If the device does not have a
connector, a reference antenna with 0 dBi gain is assumed.
If transmitting antennas of directional gain greater than 0 dBi are used, the
power level delivered to the antenna shall be compensated to comply with the
applicable paragraphs in EN 300 328, EN 301 489-17and FCC part 15.
Bluetooth devices are classified into three power classes based on the
modulation mode with the highest output power. That modulation mode shall
meet the specification requirements for the power class. The other modulation
modes do not need to meet the power class requirements of the applicable
device power class, but the maximum output power used for the other
modulation modes shall not exceed the maximum power of the modulation
mode used for classification.
A power class 1 device shall support received power control requests. Power
control may be used to limit the transmitted power of a remote device to no
more than +4 dBm to prevent saturation of the receiver of the local device.
Support of received power control requests is optional for class 2 and class 3
devices but may be used to optimize the power consumption and reduce the
overall interference level for all devices that use the same spectrum that
Bluetooth devices use. The power steps shall form a monotonic sequence, with
a maximum step size of 8 dB and a minimum step size of 2 dB.
Radio Specification
A class 1 device shall support handling of power control requests and shall be
able to adjust its transmit power down to 4 dBm or less. A device that supports
changing its transmit power controls the output power in a physical link in
response to LMP commands received from a peer device that is capable of
sending such requests (see [Vol 2] Part C).
In a connection, the output power shall not exceed the maximum output power
of power class 2 for transmitting packets if the receiving device does not
support the necessary messaging for sending the power control messages,
see [Vol 2] Part C, Section 4.1.3. In this case, the transmitting device shall
comply with the rules of a class 2 or class 3 device.
If a class 1 device is paging or inquiring very close to another device, the input
power can be larger than the requirement in Section 4.1.5 on page 49. This can
cause the receiving device to fail to respond. It may therefore be useful to page
at class 2 or 3 power in addition to paging at power class 1.
The transmit power level difference between the packet headers of all
supported packet types at any given power step shall not exceed 10dB.
When communicating with a device that does not support enhanced power
control, an enhanced power control device shall have an equal number of
steps for each supported modulation scheme so that all supported modulation
modes shall reach their respective maximum (or minimum) levels at the same
time. The power levels may vary per modulation mode.
Devices shall not exceed the maximum allowed transmit power levels set by
the regulatory bodies that have jurisdiction over the locales in which the device
is to be sold or intended to operate. Implementers should be aware that the
maximum transmit power level permitted under a given set of regulations might
not be the same for all modulation modes.
Radio Specification
Fm in-
T ransm it
Frequency Tim e
Ft F m in +
F t - fd
Z ero C rossing Error
In addition, the minimum frequency deviation shall never be smaller than 115
kHz. The data transmitted has a symbol rate of 1 Ms/s.
The zero crossing error is the time difference between the ideal symbol period
and the measured crossing time. This shall be less than ± 1/8 of a symbol period.
Radio Specification
Within the ISM band the transmitter shall pass a spectrum mask, given in
Table 3.2. The spectrum shall comply with the 20 dB bandwidth definition in
FCC part 15.247 and shall be measured accordingly. In addition to the FCC
requirement an adjacent channel power on adjacent channels with a difference
in RF channel number of two or greater is defined. This adjacent channel
power is defined as the sum of the measured power in a 1 MHz bandwidth. The
transmitted power shall be measured in a 100 kHz bandwidth using maximum
hold. The device shall transmit on RF channel M and the adjacent channel
power shall be measured on RF channel number N. The transmitter shall
transmit a pseudo random data pattern in the payload throughout the test.
The transmitted initial center frequency shall be within ±75 kHz from Fc. The
initial frequency accuracy is defined as being the frequency accuracy before
any packet information is transmitted. Note that the frequency drift requirement
is not included in the ±75 kHz.
The limits on the transmitter center frequency drift within a packet are specified
in Table 3.3. The different packets are defined in the Baseband Specification.
Radio Specification
During access code and packet header transmission the Basic Rate GFSK
modulation mode shall be used. During the transmission of the synchronization
sequence, payload, and trailer sequence a PSK type of modulation with a data
rate of 2 Mb/s or optionally 3 Mb/s shall be used. The following subsections
specify the PSK modulation for this transmission.
The PSK modulation format defined for the 2 Mb/s transmission shall be π/4
rotated differential encoded quaternary phase shift keying (π/4-DQPSK).
The PSK modulation format defined for the 3 Mb/s transmission shall be
differential encoded 8-ary phase shift keying (8DPSK).
j2πF c t
S ( t ) = Re v ( t )e (EQ 1)
For the M-ary modulation, the binary data stream {bn}, n=1,2,3, …N, shall be
mapped onto a corresponding sequence {Sk}, k=1,2, …N/log2(M) of complex
valued signal points. M=4 applies for 2 Mb/s and M=8 applies for 3 Mb/s. Gray
coding shall be applied as shown in Table 3.4 and Table 3.5. In the event that
the length of the binary data stream N is not an integer multiple of log2(M), the
last symbol of the sequence {Sk} shall be formed by appending data zeros to
the appropriate length. The signal points Sk shall be defined by:
jϕ k
Sk = Sk – 1 e k = 1, 2, ..N/ log 2 ( M ) (EQ 2)
Radio Specification
jφ
S0 = e with φ ∈ [ 0, 2π ) (EQ 3)
The relationship between the binary input bk and the phase φk shall be as
defined in Table 3.4 for the 2 Mb/s transmission and in Table 3.5 for the 3 Mb/s
transmission.
b2k-1 b2k ϕk
0 0 π/4
0 1 3π/4
1 1 -3π/4
1 0 -π/4
Table 3.4: π/4-DQPSK mapping
0 0 0 0
0 0 1 π/4
0 1 1 π/2
0 1 0 3π/4
1 1 0 π
1 1 1 -3π/4
1 0 1 -π/2
1 0 0 -π/4
Table 3.5: 8DPSK mapping
v ( t ) = S k p ( t – kT ) (EQ 4)
k
Radio Specification
1–β
1 0 ≤ f ≤ ------------
2T
P(f) = 1--- π(2 f T – 1) – β- 1+β (EQ 5)
1 – sin -------------------------------
1-----------
≤ f ≤ ------------
2 2β 2T 2T
0 elsewhere
The DEVM shall be measured over the synchronization sequence and payload
portions of the packet, but not the trailer symbols. For each modulation method
and each measurement carrier frequency, the DEVM measurement is made
over a total of 200 non-overlapping blocks, where each block contains 50
symbols.
The transmitted packets shall be the longest supported packet type for each
modulation method, as defined in [Vol 2] Part B, Table 6.9 and [Vol 2] Part B,
Table 6.10.
The DEVM is measured using a square-root raised cosine filter, with a roll-off
of 0.4 and a 3 dB bandwidth of ±500 kHz.
The RMS DEVM for any of the measured blocks shall not exceed 0.20 for
π/4-DQPSK and 0.13 for 8DPSK.
The 99% DEVM (defined as the DEVM value for which 99% of measured
symbols have a lower DEVM) shall not exceed 0.30 for π/4-DQPSK and 0.20
for 8DPSK.
The Peak DEVM shall not exceed 0.35 for π/4-DQPSK and 0.25 for 8DPSK.
Radio Specification
Within the ISM band the power spectral density of the transmitter shall comply
with the following requirements when sending pseudo random data. All power
measurements shall use a 100 kHz bandwidth with maximum hold. The power
measurements between 1 MHz and 1.5 MHz from the carrier shall be at least
26 dB below the maximum power measurement up to 500 kHz from the carrier.
The adjacent channel power for channels at least 2 MHz from the carrier is
defined as the sum of the power measurements over a 1 MHz channel and
shall not exceed -20 dBm for the second adjacent channels and -40 dBm for
the third and subsequent adjacent channels. These requirements shall apply to
the transmitted signal from the start of the guard time to the end of the power
down ramp. The spectral mask is illustrated in Figure 3.2.
Radio Specification
26 dB
-20 dBm
-40 dBm
FC - 2.5 MHz FC - 1.5 MHz FC - 1 MHz Carrier FC FC + 1 MHz FC + 1.5 MHz FC + 2.5 MHz
Radio Specification
The same carrier frequencies Fc as used for Basic Rate transmissions shall be
used for the Enhanced Data Rate transmissions. The transmitted initial center
frequency accuracy shall be within ±75 kHz from Fc. The maximum excursion
from Fc (frequency offset plus drift) shall not exceed ±75 kHz.
Sync
Access Code Header Guard Payload Trailer
Word
Maximum Excursion
±10 kHz
±75 kHz
FC
Maximum Excursion
The requirements on accuracy and stability are illustrated by Figure 3.3 for the
Enhanced Data Rate packet format defined in Baseband Specification. The
higher frequency accuracy requirement shall start at the first symbol of the
header. The maximum drift over the header, synchronization sequence and
payload shall be ±10 kHz.
The requirement on the relative power of the GFSK and DPSK portions of the
Enhanced Data Rate packet is defined as follows. The average power level
during the transmission of access code and header is denoted as PGFSK and
the average power level during the transmission of the synchronization
sequence and the payload is denoted as PDPSK. The following inequalities
shall be satisfied independently for each Enhanced Data Rate packet
transmitted:
Radio Specification
4 RECEIVER CHARACTERISTICS
The actual sensitivity level is defined as the input level for which a raw bit error
rate (BER) of 0.1% is met. The receiver sensitivity shall be below or equal to
–70 dBm with any Bluetooth transmitter compliant to the transmitter
specification specified in Section 3 on page 37.
Radio Specification
RF channels where the requirements are not met are called spurious response
RF channels. Five spurious response RF channels are allowed at RF channels
with a distance of ≥2 MHz from the wanted signal. On these spurious response
RF channels a relaxed interference requirement C/I = -17 dB shall be met.
The out-of-band suppression (or rejection) shall be measured with the wanted
signal 3 dB over the reference sensitivity level. The interfering signal shall be a
continuous wave signal. The BER shall be ≤0.1%. The out-of-band blocking
shall fulfil the following requirements:
24 exceptions are permitted which are dependent upon the given RF channel
and are centered at a frequency which is an integer multiple of 1 MHz. For at
least 19 of these spurious response frequencies, a reduced interference level
of at least -50dBm is allowed in order to achieve the required BER=0.1%
performance, whereas for a maximum of 5 of the spurious frequencies the
interference level may be assumed arbitrarily lower.
The reference sensitivity performance, BER = 0.1%, shall be met under the
following conditions:
• The wanted signal shall be at frequency f0 with a power level 6 dB over the
reference sensitivity level.
• A static sine wave signal shall be at a frequency f1 with a power level of –39
dBm.
• A Bluetooth modulated signal (see Section 4.1.7 on page 49) shall be at f2
with a power level of -39 dBm.
Radio Specification
Frequencies f0, f1 and f2 shall be chosen such that f0=2f1-f2 and f2-f1 =n*1
MHz, where n can be 3, 4, or 5. The system shall fulfill at least one of the three
alternatives (n=3, 4, or 5).
The maximum usable input level that the receiver operates at shall be greater
than -20 dBm. The BER shall be less than or equal to 0.1% at –20 dBm input
power.
The actual sensitivity level shall be defined as the input level for which a raw bit
error rate (BER) of 0.01% is met. The requirement for a Bluetooth π/4-DQPSK
and 8DPSK Enhanced Data Rate receiver shall be an actual sensitivity level of
–70 dBm or better. The receiver shall achieve the –70 dBm sensitivity level with
any Bluetooth transmitter compliant to the Enhanced Data Rate transmitter
specification as defined in Section 3.2.
The receiver shall achieve a BER less than 0.001% at 10 dB above the
reference sensitivity level.
Radio Specification
The interference performance for co-channel and adjacent 1 MHz and 2 MHz
channels shall be measured with the wanted signal 10 dB above the reference
sensitivity level. On all other frequencies the wanted signal shall be 3 dB above
the reference sensitivity level. The requirements in this section shall only apply
if the frequency of the interferer is inside of the band 2400-2483.5 MHz.
A BER of 0.1% or better shall be achieved for the signal to interference ratios
defined in Table 4.3.
Frequencies where the requirements are not met are called spurious response
frequencies. Five spurious response frequencies are allowed at frequencies
with a distance of ≥2 MHz from the wanted signal. On these spurious response
frequencies a relaxed interference requirement C/I = -15 dB for π/4-DQPSK
and C/I = -10 dB for 8DPSK shall be met.
Radio Specification
The maximum usable input level that the receiver operates at shall be greater
than -20 dBm. The BER shall be less than or equal to 0.1% at -20 dBm input
power.
Modulation = π/4-DQPSK
Symbol Rate = 1 Msym/s ± 1 ppm
Frequency accuracy better than ±1 ppm
Modulating Data for wanted signal = PRBS9
Modulating Data for interfering signal = PRBS15
RMS Differential Error Vector Magnitude < 5%
Average power over the GFSK and DPSK portions of the packet shall be equal
to within +/- 1 dB
Modulation = 8DPSK
Symbol Rate = 1 Msym/s ± 1 ppm
Frequency accuracy better than ±1 ppm
Modulating Data for wanted signal = PRBS9
Modulating Data for interfering signal = PRBS15
RMS Differential Error Vector Magnitude < 5%
Average power over the GFSK and DPSK portions of the packet shall be equal
to within +/- 1 dB
Radio Specification
The nominal temperature conditions for tests shall be +15 to +35 °C. When it is
impractical to carry out the test under this condition a note to this effect, stating
the ambient temperature, shall be recorded. The actual value during the test
shall be recorded in the test report.
The nominal test voltage for equipment to be connected to the mains shall be
the nominal mains voltage. The nominal voltage shall be the declared voltage
or any of the declared voltages for which the equipment was designed. The
frequency of the test power source corresponding to the AC mains shall be
within 2% of the nominal frequency.
When radio equipment is intended for operation from the alternator-fed lead-
acid battery power sources which are standard in vehicles, then the nominal
test voltage shall be 1.1 times the nominal voltage of the battery (6V, 12V, etc.).
The extreme temperature range shall be the largest temperature range given
by the combination of:
• The minimum temperature range 0 °C to +35 °C
• The product operating temperature range declared by the manufacturer.
This extreme temperature range and the declared operating temperature range
shall be recorded in the test report.
Radio Specification
Tests at extreme power source voltages specified below are not required when
the equipment under test is designed for operation as part of and powered by
another system or piece of equipment. Where this is the case, the limit values
of the host system or host equipment shall apply. The appropriate limit values
shall be declared by the manufacturer and recorded in the test report.
When radio equipment is intended for operation from the alternator-fed lead-
acid battery power sources which are standard in vehicles, then extreme test
voltage shall be 1.3 and 0.9 times the nominal voltage of the battery (6V, 12V
etc.).
The lower extreme test voltage for equipment with power sources using the
following types of battery, shall be
a) for Leclanché, alkaline, or lithium type battery: 0.85 times the
nominal voltage of the battery
b) for mercury or nickel-cadmium types of battery: 0.9 times the
nominal voltage of the battery.
In both cases, the upper extreme test voltage shall be 1.15 times the nominal
voltage of the battery.
For equipment using other power sources, or capable of being operated from a
variety of power sources (primary or secondary), the extreme test voltages
shall be those declared by the manufacturer. These shall be recorded in the
test report.
Radio Specification
The Basic Rate radio parameters shall be tested in the following conditions:
The Enhanced Data Rate radio parameters shall be tested in the following
conditions:
Radio Specification
In an ideal transmitter, the input bit sequence {bj} is mapped onto a complex
valued symbol sequence {Sk}. Subsequently, this symbol sequence is
transformed into a baseband signal S(t) by means of a pulse-shaping filter.
Actual TX
Ideal TX (Baseband)
H[SMȦct)
Figure C.1: TX model
Let Z(t) be the output of the measurement filter after first compensating the
received signal for the initial center frequency error, ωi, of the received packet,
i.e. the output after down conversion and filtering the transmit signal R(t) (see
Figure C.2).The measurement filter is defined by a square-root raised cosine
shaping filter with a roll-off factor equal to 0.4 and 3 dB bandwidth of ±500 kHz.
Let {Zk(ε)} be the sequence of samples obtained by sampling the signal Z(t)
with a sampling period equal to the symbol period T and a sampling phase
Radio Specification
equal to ε such that Zk(ε)=Z((k+ε)T). Note that this sequence {Zk(ε)} would
coincide with the symbol sequence {Sk} if no distortion is present and the
correct timing phase ε is chosen.
Let {Qk(ε,ω)} denote the compensated sequence {Zk(ε)}, where the ideal phase
changes have been removed and ε and ω are chosen optimally to minimize the
DEVM, (i.e. remove time and frequency uncertainty). For a transmitter with no
distortions other than a constant frequency error, {Qk(ε,ω)} is a complex
constant that depends on the initial carrier phase and the output power of the
transmitter.
The definitions of the DEVM measures are based upon this differential error
sequence {Ek(ε,ω)}. The generation of the error sequence is depicted in Figure
C.2.
Delay
EkİȦ
1 μsec
QkİȦ
Measurement Z(t) Zkİ
R(t)
Filter
e MȦcȦi)t Sk*·W-k
Radio Specification
The root mean squared DEVM (RMS DEVM) computed over N = 50 symbols is
defined as:
N N
RMS DEVM = min Ek( ) 2
Qk( ) 2 (EQ 6)
k=1 k=1
As can be seen from the expression above, the RMS DEVM is the square-root
of the normalized power of the error.
Ek
DEVM (k) = (EQ 7)
N
Qj N
j=1
where ε0 and ω0 are the values for ε and ω used to calculate the RMS DEVM.
PART B: BASEBAND
SPECIFICATION
Baseband Specification
CONTENTS
1 General Description........................................................................... 66
1.1 Bluetooth Clock ......................................................................... 67
1.2 Bluetooth Device Addressing .................................................... 69
1.2.1 Reserved Addresses..................................................... 69
1.3 Access Codes............................................................................ 70
2 Physical Channels ............................................................................. 71
2.1 Physical Channel Definition ....................................................... 72
2.2 Basic Piconet Physical Channel ................................................ 72
2.2.1 Master-slave Definition ................................................. 72
2.2.2 Hopping Characteristics................................................ 73
2.2.3 Time Slots ..................................................................... 73
2.2.4 Piconet Clocks .............................................................. 74
2.2.5 Transmit/Receive Timing .............................................. 74
2.2.5.1 Piconet physical channel timing ..................... 75
2.2.5.2 Piconet physical channel re-synchronization . 77
2.3 Adapted Piconet Physical Channel ........................................... 78
2.3.1 Hopping Characteristics................................................ 78
2.4 Page Scan Physical Channel .................................................... 79
2.4.1 Clock Estimate for Paging............................................. 79
2.4.2 Hopping Characteristics................................................ 79
2.4.3 Paging Procedure Timing ............................................. 80
2.4.4 Page Response Timing................................................. 81
2.5 Inquiry Scan Physical Channel .................................................. 83
2.5.1 Clock for Inquiry ............................................................ 83
2.5.2 Hopping Characteristics................................................ 83
2.5.3 Inquiry Procedure Timing.............................................. 83
2.5.4 Inquiry Response Timing .............................................. 83
2.6 Hop Selection ............................................................................ 85
2.6.1 General Selection Scheme ........................................... 85
2.6.2 Selection Kernel............................................................ 89
2.6.2.1 First addition operation ................................... 89
2.6.2.2 XOR operation................................................ 90
2.6.2.3 Permutation operation .................................... 90
2.6.2.4 Second addition operation.............................. 91
2.6.2.5 Register bank ................................................. 91
2.6.3 Adapted Hop Selection Kernel...................................... 92
2.6.3.1 Channel re-mapping function ......................... 92
2.6.4 Control Word................................................................. 93
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2, Part B] page 60
Baseband Specification
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2, Part B] page 61
Baseband Specification
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2, Part B] page 62
Baseband Specification
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2, Part B] page 63
Baseband Specification
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2, Part B] page 64
Baseband Specification
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2, Part B] page 65
Baseband Specification
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2, Part B] page 66
Baseband Specification
1 GENERAL DESCRIPTION
Master
Slave
a b c
Figure 1.1: Piconets with a single slave operation (a), a multi-slave operation (b) and a scatternet
operation (c)
Data is transmitted over the air in packets. Two modes are defined: a
mandatory mode called Basic Rate and an optional mode called Enhanced
Data Rate. The symbol rate for all modulation modes is 1 Ms/s. The gross air
data rate is 1 Mb/s for Basic Rate. Enhanced Data Rate has a primary
modulation mode that provides a gross air data rate of 2 Mb/s, and a
secondary modulation mode that provides a gross air data rate of 3 Mb/s.
Baseband Specification
The general Basic Rate packet format is shown in Figure 1.2. Each packet
consists of 3 entities: the access code, the header, and the payload.
ACCESS
HEADER PAYLOAD
CODE
The general Enhanced Data Rate packet format is shown in Figure 1.3. Each
packet consists of 6 entities: the access code, the header, the guard period, the
synchronization sequence, the Enhanced Data Rate payload and the trailer.
The access code and header use the same modulation mode as for Basic Rate
packets while the synchronization sequence, the Enhanced Data Rate payload
and the trailer use the Enhanced Data Rate modulation mode. The guard time
allows for the transition between the modulation modes.
GFSK DPSK
The clock determines critical periods and triggers the events in the device.
Four periods are important in the Bluetooth system: 312.5 μs, 625 μs, 1.25 ms,
and 1.28 s; these periods correspond to the timer bits CLK0, CLK1, CLK2, and
CLK12, respectively, see Figure 1.4 on page 68.
Baseband Specification
CLK 27 12 11 10 9 8 7 6 5 4 3 2 1 0 3.2kHz
312.5μs
625μs
1.25ms
1.28s
In the different modes and states a device can reside in, the clock has different
appearances:
• CLKR reference clock
• CLKN native clock
• CLKE estimated clock
• CLK master clock
CLKR is the reference clock driven by the free running system clock. CLKN
may be offset from the reference clock by a timing offset. In STANDBY and in
Park, Hold, Sniff, and Connectionless Slave Broadcast modes the reference
clock may be driven by a low power oscillator (LPO) with worst case accuracy
(+/-250ppm). Otherwise, the reference clock shall be driven by the reference
crystal oscillator with worst case accuracy of +/-20ppm. The master shall use
the higher resolution oscillator while performing Piconet Clock Adjustment (see
Section 8.6.10).
See Section 2.2.4 on page 74 for the definition of CLK and Section 2.4.1 on
page 79 for the definition of CLKE.
The master may adjust its native clock during the existence of the piconet
within certain limits (see Section 8.6.10.3). The master may also perform a
coarse adjustment of the native clock by using the LMP_clk_adj sequence.
Baseband Specification
LSB MSB
company_assigned company_id
0000 0001 0000 0000 0000 0000 0001 0010 0111 1011 0011 0101
The BD_ADDR may take any values except the 64 reserved LAP values for
general and dedicated inquiries (see Section 1.2.1 on page 69).
Baseband Specification
All access codes are derived from the LAP of a device address or an inquiry
address. The device access code is used during page, page scan and page
response substates and shall be derived from the paged device’s BD_ADDR.
The channel access code is used in the CONNECTION state,
synchronization train substate, and synchronization scan substate, and
forms the beginning of all packets exchanged on the piconet physical channel.
The channel access code shall be derived from the LAP of the master’s
BD_ADDR. Finally, the inquiry access code shall be used in the inquiry
substate. There is one general IAC (GIAC) for general inquiry operations and
there are 63 dedicated IACs (DIACs) for dedicated inquiry operations.
The access code also indicates to the receiver the arrival of a packet. It is used
for timing synchronization and offset compensation. The receiver correlates
against the entire synchronization word in the access code, providing very
robust signaling.
Baseband Specification
2 PHYSICAL CHANNELS
The lowest architectural layer in the Bluetooth system is the physical channel.
A number of types of physical channels are defined. All Bluetooth physical
channels are characterized by the combination of a pseudo-random frequency
hopping sequence, the specific slot timing of the transmissions, the access
code and packet header encoding. These aspects, together with the range of
the transmitters, define the signature of the physical channel. For the basic and
adapted piconet physical channels frequency hopping is used to change
frequency periodically to reduce the effects of interference and to satisfy local
regulatory requirements.
Two devices that wish to communicate use a shared physical channel for this
communication. To achieve this, their transceivers must be tuned to the same RF
frequency at the same time, and they must be within a nominal range of each
other.
Given that the number of RF carriers is limited and that many Bluetooth
devices could be operating independently within the same spatial and temporal
area there is a strong likelihood of two independent Bluetooth devices having
their transceivers tuned to the same RF carrier, resulting in a physical channel
collision. To mitigate the unwanted effects of this collision each transmission on
a physical channel starts with an access code that is used as a correlation
code by devices tuned to the physical channel. This channel access code is a
property of the physical channel. The access code is always present at the
start of every transmitted packet.
Five Bluetooth physical channels are defined. Each is optimized and used for a
different purpose. Two of these physical channels (the basic piconet channel
and adapted piconet channel) are used for communication between connected
devices and are associated with a specific piconet. Other physical channels
are used for discovering (the inquiry scan channel) and connecting (the page
scan channel) Bluetooth devices. The synchronization scan physical channel is
used by devices to obtain timing and frequency information about the
Connectionless Slave Broadcast physical link or to recover the current piconet
clock.
A Bluetooth device can only use one of these physical channels at any given
time. In order to support multiple concurrent operations the device uses time-
division multiplexing between the channels. In this way a Bluetooth device can
appear to operate simultaneously in several piconets, as well as being
discoverable and connectable.
Baseband Specification
simultaneously to more than one physical channel, but the specification does
not assume that this is possible.
The basic piconet physical channel is defined by the master of the piconet. The
master controls the traffic on the piconet physical channel by a polling scheme
(see Section 8.5 on page 174).
Baseband Specification
The basic piconet physical channel uses the basic channel hopping sequence
and is described in Section 2.6 on page 85.
The basic piconet physical channel is divided into time slots, each 625 μs in
length. The time slots are numbered according to the most significant 27 bits of
the Bluetooth clock CLK28-1 of the piconet master. The slot numbering ranges
from 0 to 227-1 and is cyclic with a cycle length of 227. The time slot number is
denoted as k.
A TDD scheme is used where master and slave alternately transmit, see
Figure 2.1 on page 73. The packet start shall be aligned with the slot start.
Packets may extend over up to five time slots.
625 µs
f(k) f(k+1) f(k+2) f(k+3) f(k+4) f(k+5) f(k+6) f(k+7) f(k+8) f(k+9) f(k+10) f(k+11) f(k+12) f(k+13)
Master
Slave
The term slot pairs is used to indicate two adjacent time slots starting with a
master-to-slave transmission slot.
Baseband Specification
CLKN(master)
a) CLKR(master) + + CLK
time_base_offset slave_offset = 0
CLKN(slave)
b) CLKR(slave) + + CLK
time_base_offset slave_offset
Baseband Specification
transmission may continue in odd numbered slots and slave transmission may
continue in even numbered slots, see Figure 2.1 on page 73.
All timing diagrams shown in this chapter are based on the signals as present
at the antenna. The term “exact” when used to describe timing refers to an
ideal transmission or reception and neglects timing jitter and clock frequency
imperfections.
The average timing of packet transmission shall not drift faster than
20 ppm relative to the ideal slot timing of 625 μs. The instantaneous timing
shall not deviate more than 1 μs from the average timing. Thus, the absolute
packet transmission timing t k of slot boundary k shall fulfill the equation:
k
tk = ( 1 + d i )T N + j k + offset, (EQ 1)
i = 1
where T N is the nominal slot length (625 μs), j k denotes jitter ( j k ≤ 1 μs) at the
start of slot k , and, d k , denotes the drift ( d k ≤ 20 ppm) within slot k . The jitter and
drift can vary arbitrarily within the given limits for every slot, while offset is an
arbitrary but fixed constant. For hold, Park, and sniff the drift and jitter parameters
specified in Link Manager Protocol [Vol 2] Part C, Section 4.3.1 apply.
The master TX/RX timing is shown in Figure 2.3 on page 76. In Figure 2.3 and
Figure 2.4 the channel hopping frequencies are indicated by f(k) where k is the
time slot number. After transmission, a return packet is expected N × 625 μs
after the start of the TX packet where N is an odd, integer larger than 0. N
depends on the type of the transmitted packet.
To allow for some time slipping, an uncertainty window is defined around the
exact receive timing. During normal operation, the window length shall be 20
μs, which allows the RX packet to arrive up to 10 μs too early or 10 μs too late.
It is recommended that slaves implement variable sized windows or time
tracking to accommodate a master's absence of more than 250ms.
During the beginning of the RX cycle, the access correlator shall search for the
correct channel access code over the uncertainty window. If an event trigger
does not occur the receiver may go to sleep until the next RX event. If in the
course of the search, it becomes apparent that the correlation output will never
exceed the final threshold, the receiver may go to sleep earlier. If a trigger
event occurs, the receiver shall remain open to receive the rest of the packet
unless the packet is for another device, a non-recoverable header error is
detected, or a non-recoverable payload error is detected.
Baseband Specification
<
_ 426 μs ±10 μs
625 μs
1250 μs
Figure 2.3: RX/TX cycle of master transceiver in normal mode for single-slot packets
Each master transmission shall be derived from bit 2 of the Master's native
Bluetooth clock, thus the current transmission will be scheduled Mx1250μs
after the start of the previous master TX burst where M depends on the
transmitted and received packet type and is an even, integer larger than 0. The
master TX timing shall be derived from the master's native Bluetooth clock, and
thus it will not be affected by time drifts in the slave(s).
The slave's TX/RX timing is shown in Figure 2.4 on page 77. The slave’s
transmission shall be scheduled N × 625μs after the start of the slave’s RX
packet where N is an odd, positive integer larger than 0. If the slave’s RX timing
drifts, so will its TX timing. During periods when a slave is in the active mode
(see Section 8.6 on page 176) and is prevented from receiving valid channel
access codes from the master due to local RF interference, slave activity in a
different piconet, or any other reason, the slave may increase its receive
uncertainty window and/or use predicted timing drift to increase the probability
of receiving the master's bursts when reception resumes.
Baseband Specification
±10 μs
625 μs
1250 μs
Figure 2.4: RX/TX cycle of slave transceiver in normal mode for single-slot packets
In the piconet physical channel, a slave can lose synchronization if it does not
receive a packet from the master at least every 200ms (or less if the low power
clock is used). The master may not transmit to the slave due to the master
device being busy with other tasks such as maintaining connections to other
devices in Sniff, Hold, or Park modes, due to SCO, eSCO, or Connectionless
Slave Broadcast activity, due to the master being involved in a scatternet, or
due to interference. When re-synchronizing to the piconet physical channel a
slave device shall listen for the master before it may send information (except
for a Connectionless Slave Broadcast slave device which shall listen for the
master but does not send information). In this case, the length of the
synchronization search window in the slave device may be increased from 20
µs to a larger value X µs as illustrated in Figure 2.5 on page 78. Note that only
RX hop frequencies are used. The hop frequency used in the master-to-slave
(RX) slot shall also be used in the uncertainty window, even when it is
extended into the preceding time interval normally used for the slave-to-master
(TX) slot.
If the length of search window, X, exceeds 1250 µs, consecutive windows shall
avoid overlapping search windows. Consecutive windows should instead be
centered at f(k), f(k+4),... f(k+4i) (where 'i' is an integer), which gives a
maximum value X=2500 µs, or even at f(k), f(k+6),...f(k+6i) which gives a
maximum value X=3750 µs. The RX hop frequencies used shall correspond to
the master-to-slave transmission slots.
It is recommended that single slot packets are transmitted by the master during
slave re-synchronization.
Baseband Specification
RX slot
X µs
625 µs
The adapted piconet physical channel shall use at least Nmin RF channels
(where Nmin is 20).
The adapted piconet physical channel uses the adapted channel hopping
sequence described in Section 2.6 on page 85.
Adapted piconet physical channels can be used for connected devices that
have adaptive frequency hopping (AFH) enabled. There are two distinctions
between basic and adapted piconet physical channels. The first is the same
channel mechanism that makes the slave frequency the same as the
preceding master transmission. The second aspect is that the adapted piconet
physical channel may be based on less than the full 79 frequencies of the basic
piconet physical channel.
Baseband Specification
A paging device uses an estimate of the native clock of the page scanning
device, CLKE; i.e. an offset shall be added to the CLKN of the pager to
approximate the CLKN of the recipient, see Figure 2.6 on page 79. CLKE shall
be derived from the native CLKN by adding an offset. By using the CLKN of the
recipient, the pager might be able to speed up the connection establishment.
Note: CLKR is never used for deriving CLKE or for any other control of the
hopping kernel.
&/.1SDJHU
CLKR(pager) + + &/.(§&/.1
time_base_offset Estimated
Offset
The page scan physical channel follows a slower hopping pattern than the
basic piconet physical channel and is a short pseudo-random hopping
sequence through the RF channels. The timing of the page scan channel shall
be determined by the native Bluetooth clock of the scanning device. The
frequency hopping sequence is determined by the Bluetooth address of the
scanning device.
The page scan physical channel uses the page, master page response, slave
page response, and page scan hopping sequences specified in Section 2.6 on
page 85.
Baseband Specification
hop f(k) hop f(k+1) hop f'(k) hop f'(k+1) hop f(k+2) hop f(k+3)
68 µs ±10 µs
312.5 µs
625 µs
Baseband Specification
Master
ID ID FHS
ID
Slave
625 µs 312.5 µs
Figure 2.8: Timing of page response packets on successful page in first half slot
In Figure 2.9 on page 82, the slave receives the paging message sent second
in the master-to-slave slot. It then responds with a slave page response packet
in the second half of the slave-to-master slot exactly 625 μs after the receipt of
the page message. The timing of the master page response packet is still
based on the timing of the page message sent first in the preceding master-to-
slave slot: there is an exact 1250 μs delay between the first page message
and the master page response packet. The packet is sent at the hop frequency
f(k+2) which is the hop frequency following the hop frequency f(k+1) the page
message was received in.
Baseband Specification
hop f(k) hop f(k+1) hop f'(k) hop f'(k+1) hop f(k+2)
68 µs
Master
ID ID FHS
ID
Slave
625µs
Figure 2.9: Timing of page response packets on successful page in second half slot
The slave shall adjust its RX/TX timing according to the reception of the master
page response packet (and not according to the reception of the page
message). That is, the second slave page response message that
acknowledges the reception of the master page response packet shall be
transmitted 625 μs after the start of the master page response packet.
Baseband Specification
The clock used for inquiry and inquiry scan shall be the device's native clock.
The inquiry scan channel follows a slower hopping pattern than the piconet
physical channel and is a short pseudo-random hopping sequence through the
RF channels. The timing of the inquiry scan channel is determined by the
native Bluetooth clock of the scanning device while the frequency hopping
sequence is determined by the general inquiry access code.
The inquiry scan physical channel uses the inquiry, inquiry response, and
inquiry scan hopping sequences described in Section 2.6 on page 85.
During the inquiry procedure, the master shall transmit inquiry messages with
the general or dedicated inquiry access code. The timing for inquiry is the
same as for paging (see Section 2.4.3 on page 80).
An inquiry response packet is transmitted from the slave to the master after the
slave has received an inquiry message (see Table 8.5 on page 174). This
packet contains information necessary for the inquiring master to page the
slave (see definition of the FHS packet in Section 6.5.1.4 on page 126) and
follows 625 μs after the receipt of the inquiry message. If the slave transmits an
extended inquiry response packet, it shall be transmitted1250 μs after the start
of the inquiry response packet.
In Figure 2.10 and Figure 2.11, f(k) is used for the frequencies of the inquiry
hopping sequence and f'(k) denotes the corresponding inquiry response
sequence frequency. The inquiry response packet and the extended inquiry
response packet are received by the master at the hop frequency f'(k) when the
inquiry message received by the slave was first in the master-to-slave slot.
Baseband Specification
master-to-slave slot slave-to-master slot master-to-slave slot slave-to-master slot master-to-slave slot
hop f(k) hop f(k+1) hop f’(k) hop f’(k)
68 μs
Master ID
625 μs 1250 μs
Figure 2.10: Timing of inquiry response packets on successful inquiry in first half slot
When the inquiry message received by the slave was the second in the
master-to-slave slot the inquiry response packet and the extended inquiry
response packet are received by the master at the hop frequency f'(k+1).
master-to-slave slot master-to-slave slot master-to-slave slot slave-to-master slot master-to-slave slot
hop f(k) hop f(k+1) hop f’(k) hop f’(k+1) hop f’(k+1)
68 μs
Master ID
625 μs 1250 μs
Figure 2.11: Timing of inquiry response packets on successful inquiry in second half slot
Baseband Specification
In total, six types of hopping sequence are defined − five for the basic hop
system and one for an adapted set of hop locations used by adaptive
frequency hopping (AFH). These sequences are:
• A page hopping sequence with 32 wake-up frequencies distributed equally
over the 79 MHz, with a period length of 32;
• A page response hopping sequence covering 32 response frequencies
that are in a one-to-one correspondence to the current page hopping
sequence. The master and slave use different rules to obtain the same
sequence;
• An inquiry hopping sequence with 32 wake-up frequencies distributed
equally over the 79 MHz, with a period length of 32;
• An inquiry response hopping sequence covering 32 response
frequencies that are in a one-to-one correspondence to the current inquiry
hopping sequence.
• A basic channel hopping sequence which has a very long period length,
which does not show repetitive patterns over a short time interval, and which
distributes the hop frequencies equally over the 79 MHz during a short time
interval.
• An adapted channel hopping sequence derived from the basic channel
hopping sequence which uses the same channel mechanism and may use
fewer than 79 frequencies. The adapted channel hopping sequence is only
used in place of the basic channel hopping sequence. All other hopping
sequences are not affected by hop sequence adaptation.
The general block diagram of the hop selection scheme is shown in Figure
2.12 on page 87. The mapping from the input to a particular RF channel index
is performed in the selection box.
The inputs to the selection box are the selected clock, frozen clock, N, koffset,
interlace_offset, address, sequence selection and AFH_channel_map. The
source of the clock input depends on the hopping sequence selected.
Baseband Specification
Additionally, each hopping sequence uses different bits of the clock (see Table
2.2 on page 94). N, interlace_offset, and koffset are defined in Section 2.6.4 on
page 93.
The address input consists of 28 bits including the entire LAP and the 4 LSBs
of the UAP. This is designated as the UAP/LAP. When the basic or adapted
channel hopping sequence is selected, the Bluetooth device address of the
master (BD_ADDR) shall be used. When the page, master page response,
slave page response, or page scan hopping sequences are selected the
BD_ADDR given by the Host of the paged device shall be used (see HCI
Create Connection Command [Part E] Section 7.1.5 on page 512). When the
inquiry, inquiry response, or inquiry scan hopping sequences are selected, the
UAP/LAP corresponding to the GIAC shall be used even if it concerns a DIAC.
Whenever one of the reserved BD_ADDRs (see Section 1.2.1 on page 69) is
used for generating a frequency hop sequence, the UAP shall be replaced by
the default check initialization (DCI, see Section 7.1 on page 144). The hopping
sequence is selected by the sequence selection input to the selection box.
Baseband Specification
28
UAP/LAP
SELECTION RF channel
index
27 BOX
CLOCK
0 2 4 6 62 64 78 1 73 75 77
segment 1
segment 2 ǻ
segment 3
segment length ǻ
32 16
The RF frequency shall remain fixed for the duration of the packet. The RF
frequency for the packet shall be derived from the Bluetooth clock value in the
Baseband Specification
first slot of the packet. The RF frequency in the first slot after a multi-slot packet
shall use the frequency as determined by the Bluetooth clock value for that
slot. Figure 2.14 on page 88 illustrates the hop definition on single- and multi-
slot packets.
625 µs
Master
Tx 3-slot packet 5-slot packet
Slave
Tx 3-slot packet
CLK k k+1 k+2 k+3 k+4 k+5 k+6 k+7 k+8 k+9 k+10 k+11 k+12 k+13
Baseband Specification
The basic hop selection kernel shall be as shown in Figure 2.16 on page 89
and is used for the page, page response, inquiry, inquiry response and basic
channel hopping selection kernels. In these substates the AFH_channel_map
input is unused. The adapted channel hopping selection kernel is described in
Section 2.6.3 on page 92. The X input determines the phase in the 32-hop
segment, whereas Y1 and Y2 selects between master-to-slave and slave-to-
master. The inputs A to D determine the ordering within the segment, the inputs
E and F determine the mapping onto the hop frequencies. The kernel
addresses a register containing the RF channel indices. This list is ordered so
that first all even RF channel indices are listed and then all odd hop
frequencies. In this way, a 32-hop segment spans about 64 MHz.
A B C D E F
5
Y1 XOR
5 4 9 7 7
5
0
5 5 X 5 5 7
2
X ADD O PERM5 ADD
R 4
mod32
mod 79
Y2 78
1
3
77
Figure 2.16: Block diagram of the basic hop selection kernel for the hop system
Baseband Specification
A 22-19
xor
Z'0 Z0
Z'1 Z1
Z'2 Z2
Z'3 Z3
Z'4 Z4
The permutation operation involves the switching from 5 inputs to 5 outputs for
the hop system, controlled by the control word. The permutation or switching
box shall be as shown in Figure 2.18 on page 91. It consists of 7 stages of
butterfly operations. The control of the butterflies by the control signals P is
shown in Table 2.1. P0-8 corresponds to D0-8, and, P i + 9 corresponds to
C i ⊕ Y1 for i = 0…4 in Figure 2.16.
Control Control
signal Butterfly signal Butterfly
P0 {Z0,Z1} P8 {Z1,Z4}
P1 {Z2,Z3} P9 {Z0,Z3}
P6 {Z0,Z2}
P7 {Z3,Z4}
The Z input is the output of the XOR operation as described in the previous
section. The butterfly operation can be implemented with multiplexers as
depicted in Figure 2.19 on page 91.
Baseband Specification
stage 1 2 3 4 5 6 7
Z0
Z1
Z2
Z3
Z4
0
1
1
0
The addition operation selects the hop frequencies to be used by the current
segment and also switches between master-to-slave and slave-to-master. It
adds the output of the current permutation (which selects a channel within the
segment), a constant, the clock bit selecting master or slave slots, and a value
used to switch each segment to a new set of channels in connection state. The
addition is applied modulo 79.
The output of the adder addresses a bank of 79 registers. The registers are
loaded with the synthesizer code words corresponding to the hop frequencies
0 to 78. Note that the upper half of the bank contains the even hop frequencies,
whereas the lower half of the bank contains the odd hop frequencies.
Baseband Specification
The adapted hop selection kernel is based on the basic hop selection kernel
defined in the preceding sections.
The inputs to the adapted hop selection kernel are the same as for the basic
hop system kernel except that the input AFH_channel_map (defined in Link
Manager Protocol [Part C] Section 5.2 on page 358) is used. The
AFH_channel_map indicates which RF channels shall be used and which shall
be unused. When hop sequence adaptation is enabled, the number of used RF
channels may be reduced from 79 to some smaller value N. All devices shall
be capable of operating on an adapted hop sequence (AHS) with Nmin ≤ N ≤
79, with any combination of used RF channels within the AFH_channel_map
that meets this constraint. Nmin is defined in Section 2.3.1 on page 78.
When the adapted hop selection kernel is selected, the basic hop selection
kernel according to Figure 2.16 on page 89 is initially used to determine an RF
channel. If this RF channel is unused according to the AFH_channel_map, the
unused RF channel is re-mapped by the re-mapping function to one of the
used RF channels. If the RF channel determined by the basic hop selection
kernel is already in the set of used RF channels, no adjustment is made. The
hop sequence of the (non-adapted) basic hop equals the sequence of the
adapted selection kernel on all locations where used RF channels are
generated by the basic hop. This property facilitates non-AFH slaves remaining
synchronized while other slaves in the piconet are using the adapted hopping
sequence.
Baseband Specification
Hop Selection of
UAP/LAP Is fk in YES
basic hop sy stem fk
the set of used Use fk for next slot
CLK Figure 2.16 on carriers?
page 89
NO
Re-mapping Function
E
Y2 k' fk'
F' ADD Use fk' instead of fk
Mod N for next slot
PERM5out
Mapping Table
AFH_channel_map
where F’ is defined in Table 2.2 on page 94. The index k’ is then used to select
the re-mapped channel from a mapping table that contains all of the even used
RF channels in ascending order followed by all the odd used RF channels in
ascending order (i.e., the mapping table of Figure 2.16 on page 89 with all the
unused RF channels removed).
In the following section Xj-i, i<j, denotes bits i, i+1,...,j of the bit vector X. By
convention, X0 is the least significant bit of the vector X.
The control word of the kernel is controlled by the overall control signals X, Y1,
Y2, A to F, and F’ as illustrated in Figure 2.16 on page 89 and Figure 2.20 on
page 93. During paging and inquiry, the inputs A to E use the address values
as given in the corresponding columns of Table 2.2 on page 94. In addition, the
inputs X, Y1 and Y2 are used. The F and F’ inputs are unused. The clock bits
CLK6-2 (i.e., input X) specify the phase within the length 32 sequence. CLK1
(i.e., inputs Y1 and Y2) is used to select between TX and RX. The address
inputs determine the sequence order within segments. The final mapping onto
the hop frequencies is determined by the register contents.
During the CONNECTION state (see Section 8.5 on page 174), the inputs A, C
and D shall be derived from the address bits being bit-wise XORed with the
clock bits as shown in the “Connection state” column of Table 2.2 on page 94
Baseband Specification
(the two most significant bits, MSBs, are XORed together, the two second
MSBs are XORed together, etc.).
Page scan /
Generalized Interlaced
Page Scan / Master/Slave page
Connection
Page/Inquiry response and
Inquiry scan / state
Inquiry response
Generalized Interlaced
Inquiry Scan
Xir 4 – 0 / Xir 4 – 0
( Xir 4 – 0 +
interlace offset )mod32
32 × CLKN 1 32 × CLKN 1 /
32 × 1
A A 27 – 23 A 27 – 23 A 27 – 23 A 27 – 23 ⊕ CLK 25 – 21
B A 22 – 19 A 22 – 19 A 22 – 19 A 22 – 19
C A 8, 6, 4, 2, 0 A 8, 6, 4, 2, 0 A 8, 6, 4, 2, 0 A 8, 6, 4, 2, 0 ⊕ CLK 20 – 16
D A 18 – 10 A 18 – 10 A 18 – 10 A 18 – 10 ⊕ CLK 15 – 7
F 0 0 0 16 × CLK 27 – 7 mod 79
The five X input bits vary depending on the current state of the device. In the
page scan and inquiry scan substates, the native clock (CLKN) shall be used.
In CONNECTION state the master clock (CLK) shall be used as input. The
situation is somewhat more complicated for the other states.
When the sequence selection input is set to page scan, the Bluetooth device
address of the scanning device shall be used as address input. When the
sequence selection input is set to inquiry scan, the GIAC LAP and the four
LSBs of the DCI (as A 27 – 24 ), shall be used as address input for the hopping
sequence. For the transmitted access code and in the receiver correlator, the
Baseband Specification
appropriate GIAC or DIAC shall be used. The application decides which inquiry
access code to use depending on the purpose of the inquiry.
When the sequence selection input is set to page, the paging device shall start
using the A-train, i.e., { f(k – 8), …, f(k), …, f(k + 7) } , where f(k) is the source’s
estimate of the current receiver frequency in the paged device. The index k is a
function of all the inputs in Figure 2.16. There are 32 possible paging
frequencies within each 1.28 second interval. Half of these frequencies belong
to the A-train, the rest (i.e., { f(k + 8), …, f(k + 15), f(k – 16), …, f(k – 9) } ) belong
to the B-train. In order to achieve the -8 offset of the A-train, a constant of 24
shall be added to the clock bits (which is equivalent to -8 due to the modulo 32
operation). The B-train is obtained by setting the offset to 8. In the case where
slots to receive the first slave response are periodically not available, an
additional offset ( k nudge ) is added to the clock bits in order to shift the train by an
integer multiple of 1.25 ms duration. A cyclic shift of the order within the trains
is also necessary in order to avoid a possible repetitive mismatch between the
paging and scanning devices. Thus,
where
24 A-train,
k offset = (EQ 3)
8 B-train.
st
0 During 1 2 × N page repetitions
k nudge = (EQ 4)
Even During all other repetitions.
When the sequence selection input is set to slave page response, in order to
eliminate the possibility of losing the link due to discrepancies of the native
clock CLKN and the master’s clock estimate CLKE, the four bits CLKN16 – 12
shall be frozen at their current value. The value shall be frozen at the content it
has in the slot where the recipient’s access code is detected. The native clock
shall not be stopped; it is merely the values of the bits used for creating the X-
input that are kept fixed for a while. A frozen value is denoted by an asterisk (*)
in the discussion below.
For each response slot the paged device shall use an X-input value one larger
(modulo 32) than in the preceding response slot. However, the first response
Baseband Specification
shall be made with the X-input kept at the same value as it was when the
access code was recognized. Let N be a counter starting at zero. Then, the X-
input in the ( N + 1 ) -th response slot (the first response slot being the one
immediately following the page slot now responding to) of the slave response
substate is:
The counter N shall be set to zero in the slot where the slave acknowledges
the page (see Figure 8.3 on page 166 and Figure 8.4 on page 166). Then, the
value of N shall be increased by one each time CLKN 1 is set to zero, which
corresponds to the start of a master TX slot. The X-input shall be constructed
this way until the first FHS packet is received and the immediately following
response packet has been transmitted. After this the slave shall enter the
CONNECTION state using the parameters received in the FHS packet.
When the sequence selection input is set to master page response, the master
shall freeze its estimated slave clock to the value that triggered a response
from the paged device. It is equivalent to using the values of the clock estimate
when receiving the slave response (since only CLKE 1 will differ from the
corresponding page transmission). Thus, the values are frozen when the slave
ID packet is received. In addition to the clock bits used, the current values of
k offset and k nudge shall also be frozen. The master shall adjust its X-input in the
same way the paged device does, i.e., by incrementing this value by one for
each time CLKE 1 is set to zero. The first increment shall be done before
sending the FHS packet to the paged device. Let N be a counter starting at
one. The rule for forming the X-input is:
The value of N shall be increased each time CLKE 1 is set to zero, which
corresponds to the start of a master TX slot.
When the sequence selection input is set to inquiry, the X-input is similar to that
used in the page hopping sequence. Since no particular device is addressed,
the native clock CLKN of the inquirer shall be used. Moreover, which of the two
train offsets to start with is of no real concern in this state. Consequently,
where k offset and k nudge are defined by (EQ 3) and (EQ 4) on page 95.
The initial choice of k offset is arbitrary.
Baseband Specification
The GIAC LAP and the four LSBs of the DCI (as A 27 – 24 ) shall be used as
address input for the hopping sequence generator.
The inquiry response hopping sequence is similar to the slave page response
hopping sequence with respect to the X-input. The clock input shall not be
frozen, thus the following equation apply:
Furthermore, the counter N is increased not on CLKN1 basis, but rather after
each FHS packet has been transmitted in response to the inquiry. There is no
restriction on the initial value of N as it is independent of the corresponding
value in the inquiring unit.
The Xir value used for the extended inquiry response packet shall be the same
Xir value as calculated for the immediately preceding FHS packet.
The GIAC LAP and the four LSBs of the DCI (as A 27 – 24 ) shall be used as
address input for the hopping sequence generator. The other input bits to the
generator shall be the same as for page response.
In the basic and adapted channel hopping sequences, the clock bits to use in
the basic or adapted hopping sequence generation shall always be derived
from the master clock, CLK. The address bits shall be derived from the
Bluetooth device address of the master.
The synchronization train and synchronization scan use RF channels from the
set of three fixed RF Channels with indices 0, 24, and 78.
Baseband Specification
When a device enters the synchronization scan substate, it shall scan the
synchronization train RF channels using the timing defined in Section 2.7.3 on
page 99. Each individual scan window shall use a different RF channel than the
previous two scan windows.
The synchronization scan physical channel shall use all of the synchronization
train RF channels defined in Section 2.6.4.8 on page 97.
Baseband Specification
TSync_Train_Delay TSync_Train_Delay
TSync_Train_Interval
Baseband Specification
≤ TSync_Scan_Interval ≤ TSync_Scan_Interval
f1 f2 f3
Baseband Specification
3 PHYSICAL LINKS
The Connectionless Slave Broadcast physical link is associated with the BR/
EDR adapted piconet physical channel, a single logical transport (the CSB
logical transport), and does not support the Link Manager Protocol. For
information on link supervision on Connectionless Slave Broadcast physical
links, see Section 3.2 on page 102. Multi-slot packets on Connectionless Slave
Broadcast physical links are controlled by the Host and specified at the profile
level.
To be able to detect link loss, both the master and the slave shall use a link
supervision timer, T supervision. Upon reception of a valid packet header with
one of the slave's addresses (see Section 4.2 on page 103) on the physical
link, the timer shall be reset. If at any time in CONNECTION state, the timer
reaches the supervisionTO value, the connection shall be considered
disconnected. The same link supervision timer shall be used for SCO, eSCO,
and ACL logical transports.
Baseband Specification
The device shall reset the timer each time after the Host is notified. The
Controller shall reset the timer when the Host writes the
authenticatedPayloadTO value.
Baseband Specification
4 LOGICAL TRANSPORTS
4.1 GENERAL
Between master and slave(s), different types of logical transports may be
established. Six logical transports have been defined:
• Synchronous Connection-Oriented (SCO) logical transport
• Extended Synchronous Connection-Oriented (eSCO) logical transport
• Asynchronous Connection-Oriented (ACL) logical transport
• Active Slave Broadcast (ASB) logical transport
• Parked Slave Broadcast (PSB) logical transport
• Connectionless Slave Broadcast (CSB) logical transport.
The ACL logical transport is also a point-to-point logical transport between the
master and a slave. In the slots not reserved for synchronous logical
transport(s), the master can establish an ACL logical transport on a per-slot
basis to any slave, including the slave(s) already engaged in a synchronous
logical transport.
The CSB logical transport is used by a master to send profile broadcast data to
zero or more slaves.
Baseband Specification
packet header (see Section 6.4 on page 122). The LT_ADDR shall only be valid
for as long as a slave is in the active mode. As soon as it is disconnected or
parked, the slave shall lose all of its LT_ADDRs.
The primary LT_ADDR shall be assigned by the master to the slave when the
slave is activated. This is either at connection establishment, or role switch, or
when the slave is unparked. At connection establishment and at role switch,
the primary LT_ADDR is carried in the FHS payload. When unparking, the
primary LT_ADDR is carried in the unpark message.
At any given time an LT_ADDR (other than the special case of the all-zero
LT_ADDR) is either unused or is used for exactly one of the three purposes of
the primary address for a slave, a secondary address for eSCO traffic, or for a
CSB logical transport. Therefore allocating a secondary LT_ADDR for an
eSCO logical transport, or reserving an LT_ADDR for the CSB logical
transport, reduces the maximum number of active slaves possible in the
piconet.
The second type of synchronous logical transport, the eSCO logical transport,
is a point-to-point logical transport between the master and a specific slave.
eSCO logical transports may be symmetric or asymmetric. Similar to SCO,
eSCO reserves slots and can therefore be considered a circuit-switched
connection between the master and the slave. In addition to the reserved slots,
eSCO supports a retransmission window immediately following the reserved
slots. Together, the reserved slots and the retransmission window form the
complete eSCO window.
Baseband Specification
with only a CSB logical transport. If there is no data to be sent on the ACL
logical transport and no polling is required, no transmission is required.
Baseband Specification
The TX and RX routines described in sections 4.5.1 and 4.5.2 are informative only.
4.5.1 TX Routine
TX asynchronous buffer
packet
composer
TX synchronous buffer
Of the packets common on the ACL and SCO logical transports (NULL, POLL
and DM1) only the DM1 packet carries a payload that is exchanged between
the Link Controller and the Link Manager; this common packet makes use of
Baseband Specification
the asynchronous buffer. All ACL packets make use of the asynchronous
buffer. All SCO and eSCO packets make use of the synchronous buffer except
for the DV packet where the synchronous data part is handled by the
synchronous buffer and the data part is handled by the asynchronous buffer. In
the next sections, the operation for ACL traffic, SCO traffic, eSCO traffic, and
combined data-voice traffic on the SCO logical transport are described.
Baseband Specification
On the SCO logical transport only HV and DV packet types are used, See
Section 6.5.2 on page 128. The synchronous port may continuously load the
next register in the synchronous buffer. The S2 switches are changed
according to the Tsco interval. This Tsco interval is negotiated between the
master and the slave at the time the SCO logical transport is established.
For each new SCO slot, the packet composer reads the current register after
which the S2 switch is changed. If the SCO slot has to be used to send control
information with high priority concerning a control packet between the master
and the SCO slave, or a control packet between the master and any other
slave, the packet composer will discard the SCO information and use the
control information instead. This control information shall be sent in a DM1
packet. Data or link control information may also be exchanged between the
master and the SCO slave by using the DV or DM1 packets.
In Section 6.5.2 on page 128, a DV packet has been defined that can support
both data and voice simultaneously on a single SCO logical transport. When
the TYPE is DV, the Link Controller reads the data register to fill the data field
and the voice register to fill the voice field. Thereafter, the switch S2 is
changed. However, the position of S1 depends on the result of the
transmission as on the ACL logical transport: only if an ACK has been received
will the S1 switch change its position. In each DV packet, the voice information
is new, but the data information might be retransmitted if the previous
transmission failed. If there is no data to be sent, the SCO logical transport will
automatically change from DV packet type to the current HV packet type used
before the mixed data/voice transmission. Note that a flush command is
necessary when the data stream has been interrupted and new data has
arrived.
Baseband Specification
On the eSCO logical transport only EV, POLL and NULL packet types are
used, see Section 6.5.3 on page 130. The synchronous port may continuously
load the next register in the synchronous buffer. The S2 switches are changed
according to the TeSCO interval. This TeSCO interval is negotiated between the
master and the slave at the time the eSCO logical transport is established.
For each new eSCO slot, the packet composer reads the current register after
which the S2 switch is changed. If the eSCO slot has to be used to send control
information with high priority concerning a control packet between the master
and the eSCO slave, or an ACL packet between the master and any other
slave, the packet composer will discard the eSCO information and use the
control information instead. Control information to the eSCO slave is sent in a
DM1 packet on the primary LT_ADDR.
On the ACL links, the default type is always NULL both for the master and the
slave. This means that if no user information needs to be sent, either a NULL
packet is sent if there is ACK or STOP information, or no packet is sent at all.
The NULL packet can be used by the master to allocate the next slave-to-
master slot to a certain slave (namely the one addressed). However, the slave
is not forced to respond to the NULL packet from the master. If the master
requires a response, it sends a POLL packet.
The SCO and eSCO packet types are negotiated at the LM level when the
SCO or eSCO logical transport is established. The agreed packet type is also
the default packet type for the reserved SCO or eSCO slots.
4.5.2 RX Routine
The RX routine is carried out separately for the ACL logical transport and the
synchronous logical transports. However, in contrast to the master TX
asynchronous buffer, a single RX buffer is shared among all slaves. For the
synchronous buffer, how the different synchronous logical transports are
distinguished depends on whether extra synchronous buffers are required or
not. Figure 4.2 on page 110 shows the asynchronous and synchronous buffers
as used in the RX routine. The RX asynchronous buffer consists of two FIFO
registers: one register that can be accessed and loaded by the Link Controller
with the payload of the latest RX packet, and one register that can be accessed
by the Baseband Resource Manager to read the previous payload. The RX
synchronous buffer also consists of two FIFO registers: one register which is
Baseband Specification
filled with newly arrived voice information, and one register which can be read
by the voice processing unit.
RX asynchronous buffer
RX synchronous buffer
Since the TYPE indication in the header (see Section 6.4.2 on page 122) of the
received packet indicates whether the payload contains data and/or voice, the
packet de-composer can automatically direct the traffic to the proper buffers.
The switch S1 changes every time the Baseband Resource Manager reads the
old register. If the next payload arrives before the RX register is emptied, a
STOP indication is included in the packet header of the next TX packet that is
returned. The STOP indication is removed again as soon as the RX register is
emptied. The SEQN field is checked before a new ACL payload is stored into
the asynchronous register (flush indication in LLID and broadcast messages
influence the interpretation of the SEQN field see Section 7.6 on page 150).
The S2 switch is changed every TSCO or TeSCO for SCO and eSCO
respectively. If, due to errors in the header, no new synchronous payload
arrives, the switch still changes. The synchronous data processing unit then
processes the synchronous data to account for the missing parts.
Since the RX ACL buffer can be full while a new payload arrives, flow control is
required. The header field FLOW in the return TX packet may use STOP or GO
in order to control the transmission of new data.
Baseband Specification
In a multi-slave configuration, only the transmission to the slave that issued the
STOP signal shall be stalled. This means that the master shall only stop
transmission from the TX ACL buffer corresponding to the slave that
momentarily cannot accept data.
Baseband Specification
The all-zero PM_ADDR shall be reserved for parked slaves that only use their
BD_ADDR to be unparked.
Baseband Specification
5 LOGICAL LINKS
The control logical links LC and ACL-C are used at the link control level and
link manager level, respectively. The ACL-U logical link is used to carry either
asynchronous or isochronous user information. The SCO-S, and eSCO-S
logical links are used to carry synchronous user information. The PBD logical
link is used to carry profile broadcast data. The LC logical link is carried in the
packet header, all other logical links are carried in the packet payload. The
ACL-C and ACL-U logical links are indicated in the logical link ID, LLID, field in
the payload header. The SCO-S and eSCO-S logical links are carried by the
synchronous logical transports only; the ACL-U link is normally carried by the
ACL logical transport; however, it may also be carried by the data in the DV
packet on the SCO logical transport. The ACL-C link may be carried either by
the SCO or the ACL logical transport. The PBD logical link is carried by the
CSB logical transport.
Baseband Specification
When paused by LM, the Link Controller transmits the current packet with ACL-
U information, if any, until an ACK is received. While the ACL-U logical link is
paused, the Link Controller shall not transmit any packets with ACL-U logical
link information.
If the ACL-U was paused after an ACK, the next sequence number shall be
used on the next packet. If the ACL-U was paused after a NAK, the same
sequence number shall be used on the next packet and the un-acknowledged
packet shall be transmitted once the ACL-U logical link is un-paused.
When the ACL-U logical link is un-paused by LM, the Link Controller may
resume transmitting packets with ACL-U information.
Baseband Specification
6 PACKETS
Bluetooth devices shall use the packets as defined in the following sections.
The general packet format of Basic Rate packets is shown in Figure 6.1 on
page 115. Each packet consists of 3 entities: the access code, the header, and
the payload. In the figure, the number of bits per entity is indicated.
The access code is 72 or 68 bits and the header is 54 bits. The payload ranges
from zero to a maximum of 2790 bits. Different packet types have been
defined. A packet may consist of:
• the shortened access code only (see ID packet on page 116)
• the access code and the packet header
• the access code, the packet header and the payload.
The general format of Enhanced Data Rate packets is shown in Figure 6.2 on
page 115. The access code and packet header are identical in format and
modulation to Basic Rate packets. Enhanced Data Rate packets have a guard
time and synchronization sequence following the packet header. Following the
payload are two trailer symbols. The guard time, synchronization sequence
and trailer are defined in section 6.6.
LSB MSB
GFSK DPSK
Baseband Specification
b 0 b 1 b 2 = 110
Baseband Specification
The shortened access code is used in paging, inquiry, and park. In this case,
the access code itself is used as a signaling message and neither a header nor
a payload is present.
The access code consists of a preamble, a sync word, and possibly a trailer,
see Figure 6.3 on page 117. For details see Section 6.3.1 on page 117.
LSB 4 64 4 MSB
The different access code types use different Lower Address Parts (LAPs) to
construct the sync word. The LAP field of the BD_ADDR is explained in
Section 1.2 on page 69. A summary of the different access code types is in
Table 6.1 on page 117.
CAC Master 72
DAC Paged device 68/721
See also Section 1.3
GIAC Reserved 1 on page 70
68/72
DIAC Dedicated 68/721
Table 6.1: Summary of access code types
1. length 72 is only used in combination with FHS packets
The CAC consists of a preamble, sync word, and trailer and its total length is
72 bits. When used as self-contained messages without a header, the DAC
and IAC do not include the trailer bits and are of length 68 bits.
Baseband Specification
6.3.2 Preamble
1010 1 0101 0
The sync word is a 64-bit code word derived from a 24 bit address (LAP); for
the CAC the master’s LAP is used; for the GIAC and the DIAC, reserved,
dedicated LAPs are used; for the DAC, the slave LAP is used. The construction
guarantees large Hamming distance between sync words based on different
LAPs. In addition, the good auto correlation properties of the sync word
improve timing acquisition.
The sync words are based on a (64,30) expurgated block code with an overlay
(bit-wise XOR) of a 64 bit full length pseudo-random noise (PN) sequence. The
expurgated code guarantees large Hamming distance ( d min = 14 ) between
sync words based on different addresses. The PN sequence improves the auto
correlation properties of the access code. The following steps describe how the
sync word shall be generated:
Baseband Specification
codeword. At the same time the parity bits of the codeword are scrambled.
Consequently, the original LAP and Barker sequence are ensured a role as a
part of the access code sync word, and the cyclic properties of the underlying
code is removed. The principle is depicted in Figure 6.5 on page 119.
LAP
a 0 a 1 …a 23 001101 if a 23 = 0
a 0 a 1 …a 23 110010 if a 23 = 1
⊕
p 34 p 35 …p 57 p 58 …p 63
c 0 …c 33 a 0 a 1 …a 23 001101 if a 23 = 0
c 0 …c 33 a 0 a 1 …a 23 110010 if a 23 = 1
Baseband Specification
F 0(D) = D + D 3 ,
(EQ 10)
F (D ) = 1 + D 2 ,
1
respectively. Furthermore,
B 0 (D ) = D 2 + D 3 + D 5 ,
(EQ 11)
B (D ) = 1 + D + D 4 ,
1
which are used to create the length seven Barker sequences. Then, the access
code shall be generated by the following procedure:
x̃(D) = x(D) + p 34 + p 35 D + … + p 63 D 29 .
1. x(D) mod y(D) denotes the remainder when x(D) is divided by y(D).
Baseband Specification
shown in Figure 6.6 on page 121. The PN sequence generated (including the
extra terminating zero) becomes (hexadecimal notation) 83848D96BBCC54FC.
The LFSR output starts with the left-most bit of this PN sequence. This
corresponds to p'(D) of the previous section. Thus, using the reciprocal p(D) as
overlay gives the 64 bit sequence:
where the left-most bit is p 0 = 0 (there are two initial zeros in the binary
representation of the hexadecimal digit 3), and p 63 = 1 is the right-most bit.
+ + +
1 0 0 0 0 0
6.3.4 Trailer
The trailer is appended to the sync word as soon as the packet header follows
the access code. This is typically the case with the CAC, but the trailer is also
used in the DAC and IAC when these codes are used in FHS packets
exchanged during page response and inquiry response.
The trailer is a fixed zero-one pattern of four symbols. The trailer together with
the three MSBs of the syncword form a 7-bit pattern of alternating ones and
zeroes which can be used for extended DC compensation. The trailer
sequence is either ‘1010’ or ‘0101’(in transmission order) depending on
whether the MSB of the sync word is 0 or 1, respectively. The choice of trailer is
illustrated in Figure 6.7 on page 121.
a) b)
Figure 6.7: Trailer in CAC when MSB of sync word is 0 (a), and when MSB of sync word is 1 (b)
Baseband Specification
The total header, including the HEC, consists of 18 bits, see Figure 6.8 on page
122, and is encoded with a rate 1/3 FEC (not shown but described in Section
7.4 on page 148) resulting in a 54-bit header. The LT_ADDR and TYPE fields
shall be sent LSB first.
LSB 3 4 1 1 1 8 MSB
6.4.1 LT_ADDR
The 3-bit LT_ADDR field contains the logical transport address for the packet
(see Section 4.2 on page 103). This field indicates the destination slave (or
slaves in the case of a broadcast) for a packet in a master-to-slave
transmission slot and indicates the source slave for a slave-to-master
transmission slot.
6.4.2 TYPE
Sixteen different types of packets can be distinguished. The 4-bit TYPE code
specifies which packet type is used. The interpretation of the TYPE code
depends on the logical transport address in the packet. First, it shall be
determined whether the packet is sent on an SCO logical transport, an eSCO
logical transport, an ACL logical transport, or a CSB logical transport. Second,
it shall be determined whether Enhanced Data Rate has been enabled for the
logical transport (ACL or eSCO) indicated by LT_ADDR. It can then be
determined which type of SCO packet, eSCO packet, or ACL packet has been
received. The TYPE code determines how many slots the current packet will
occupy (see the slot occupancy column in Table 6.2 on page 125). This allows
the non-addressed receivers to refrain from listening to the channel for the
duration of the remaining slots. In Section 6.5 on page 124, each packet type is
described in more detail.
Baseband Specification
6.4.3 FLOW
The FLOW bit is used for flow control of packets over the ACL logical transport.
When the RX buffer for the ACL logical transport in the recipient is full, a STOP
indication (FLOW=0) shall be returned to stop the other device from
transmitting data temporarily. The STOP signal only affects ACL packets.
Packets including only link control information (ID, POLL, and NULL packets),
SCO packets or eSCO packets can still be received. When the RX buffer can
accept data, a GO indication (FLOW=1) shall be returned. When no packet is
received, or the received header is in error, a GO shall be assumed implicitly. In
this case, the slave can receive a new packet with CRC although its RX buffer
is still not emptied. The slave shall then return a NAK in response to this packet
even if the packet passed the CRC check.
The FLOW bit is not used on the eSCO logical transport and shall be set to one
on transmission and ignored upon receipt. The FLOW bit is not used on the
CSB logical transport and shall be set to zero on transmission and ignored
upon receipt.
6.4.4 ARQN
The ARQN bit is not used on the CSB logical transport and shall be set to zero
on transmission and ignored upon receipt.
6.4.5 SEQN
The SEQN bit provides a sequential numbering scheme to order the data
packet stream. See Section 7.6.2 on page 153 for initialization and usage of
the SEQN bit. For active and parked slave broadcast packets, a modified
sequencing method is used, see Section 7.6.5 on page 157.
The SEQN bit is not used on the CSB logical transport and shall be set to zero
on transmission and ignored upon receipt.
6.4.6 HEC
Each header has a header-error-check to check the header integrity. The HEC
is an 8-bit word (generation of the HEC is specified in Section 7.1.1 on page
144). Before generating the HEC, the HEC generator is initialized with an 8-bit
value. For FHS packets sent in master response substate, the slave upper
address part (UAP) shall be used. For FHS packets and extended inquiry
response packets sent in inquiry response, the default check initialization
(DCI, see Section 1.2.1 on page 69) shall be used. In all other cases, the UAP
of the master device shall be used.
Baseband Specification
After the initialization, a HEC shall be calculated for the 10 header bits. Before
checking the HEC, the receiver shall initialize the HEC check circuitry with the
proper 8-bit UAP (or DCI). If the HEC does not check, the entire packet shall be
discarded. More information can be found in Section 7.1 on page 144.
To indicate the different packets on a logical transport, the 4-bit TYPE code is
used. The packet types are divided into four segments. The first segment is
reserved for control packets. All control packets occupy a single time slot. The
second segment is reserved for packets occupying a single time slot. The third
segment is reserved for packets occupying three time slots. The fourth segment is
reserved for packets occupying five time slots. The slot occupancy is reflected in
the segmentation and can directly be derived from the type code. Table 6.2 on
page 125 summarizes the packets defined for the SCO, eSCO, ACL, and CSB
logical transport types.
All packet types with a payload shall use GFSK modulation unless specified
otherwise in the following sections.
ACL logical transports Enhanced Data Rate packet types are explicitly selected
via LMP using the packet_type_table (ptt) parameter. eSCO Enhanced Data
Rate packet types are selected when the eSCO logical transport is established.
Enhanced Data Rate packet types for the CSB logical transport are selected
when the CSB logical transport is established.
Packets
Slot SCO logical eSCO logical eSCO logical ACL logical ACL logical CSB logical CSB logical
Segment code occu- transport transport transport transport transport transport transport
b3b2b1b0 pancy (1 Mb/s) (1 Mb/s) (2-3 Mb/s) (1 Mb/s) ptt=0 (2-3 Mb/s) ptt=1 (1 Mb/s) (2-3 Mb/s)
1
0010 1 FHS reserved reserved FHS FHS reserved reserved
Table 6.2: Packets defined for synchronous, asynchronous, and CSB logical transport types
page 125
Baseband Specification
There are five common kinds of packets. In addition to the types listed in
segment 1 of the previous table, the ID packet is also a common packet type
but is not listed in segment 1 because it does not have a packet header.
6.5.1.1 ID Packet
The identity or ID packet consists of the device access code (DAC) or inquiry
access code (IAC). It has a fixed length of 68 bits. It is a very robust packet
since the receiver uses a bit correlator to match the received packet to the
known bit sequence of the ID packet.
Baseband Specification
the FHS packet is not used by Connectionless Slave Broadcast slaves for
frequency hop synchronization with Connectionless Slave Broadcast masters.
LSB MSB
34 24 1 1 2 2 8 16 24 3 26 3
Res erved
Page
Un- Class of LT_
Parity bits LAP EIR defined SR UAP NAP device ADDR CLK27-2 scan
mode
This 34-bit field contains the parity bits that form the first part of the sync
Parity bits word of the access code of the device that sends the FHS packet. These
bits are derived from the LAP as described in Section 1.2 on page 69.
This 24-bit field shall contain the lower address part of the device that sends
LAP the FHS packet.
This bit shall indicate that an extended inquiry response packet may follow.
EIR See Section 8.4.3 on page 172.
Undefined This 1-bit field is reserved for future use and shall be set to zero.
This 2-bit field is the scan repetition field and indicates the interval between two
SR consecutive page scan windows, see also Table 6.4 and Table 8.1 on page 162
This 8-bit field shall contain the upper address part of the device that sends
UAP the FHS packet.
This 16-bit field shall contain the non-significant address part of the device
NAP that sends the FHS packet (see also Section 1.2 on page 69 for LAP, UAP,
and NAP).
Class of This 24-bit field shall contain the class of device of the device that sends the
device FHS packet. The field is defined in Bluetooth Assigned Numbers.
This 3-bit field shall contain the logical transport address the recipient shall
use if the FHS packet is used at connection setup or role switch. A slave
LT_ADDR responding to a master or a device responding to an inquiry request mes-
sage shall include an all-zero LT_ADDR field if it sends the FHS packet.
This 26-bit field shall contain the value of the native clock of the device that
sends the FHS packet, sampled at the beginning of the transmission of the
CLK27-2 access code of this FHS packet. This clock value has a resolution of
1.25ms (two-slot interval). For each new transmission, this field is updated
so that it accurately reflects the real-time clock value.
This 3-bit field shall indicate which scan mode is used by default by the
Page scan sender of the FHS packet. The interpretation of the page scan mode is illus-
mode trated in Table 6.5.
Table 6.3: Description of the FHS payload
Baseband Specification
The device sending the FHS shall set the SR bits according to Table 6.4.
00 R0
01 R1
10 R2
11 reserved
The device sending the FHS shall set the page scan mode bits according to
Table 6.5.
The LAP, UAP, and NAP together form the 48-bit Bluetooth Device Address of
the device that sends the FHS packet. Using the parity bits and the LAP, the
recipient can directly construct the channel access code of the sender of the
FHS packet.
When initializing the HEC and CRC for the FHS packet of inquiry response, the
UAP shall be the DCI.
HV and DV packets are used on the synchronous SCO logical transport. The
HV packets do not include a MIC or CRC and shall not be retransmitted. DV
Baseband Specification
packets include a CRC on the data section, but not on the synchronous data
section. DV packets do not include a MIC. The data section of DV packets shall
be retransmitted. SCO packets may be routed to the synchronous I/O port.
Four packets are allowed on the SCO logical transport: HV1, HV2, HV3 and
DV. These packets are typically used for 64kb/s speech transmission but may
be used for transparent synchronous data.
The HV1 packet has 10 information bytes. The bytes are protected with a rate
1/3 FEC. No MIC is present. No CRC is present. The payload length is fixed at
240 bits. There is no payload header present.
The HV2 packet has 20 information bytes. The bytes are protected with a rate
2/3 FEC. No MIC is present. No CRC is present. The payload length is fixed at
240 bits. There is no payload header present.
The HV3 packet has 30 information bytes. The bytes are not protected by FEC.
No MIC is present. No CRC is present. The payload length is fixed at 240 bits.
There is no payload header present.
6.5.2.4 DV Packet
The DV packet is a combined data - voice packet. The DV packet shall only be
used in place of an HV1 packet. The payload is divided into a voice field of 80
bits and a data field containing up to 150 bits, see Figure 6.10. The voice field is
not protected by FEC. The data field has between 1 and 10 information bytes
(including the 1-byte payload header) plus a 16-bit CRC code. No MIC is
present. The data field (including the CRC) is encoded with a rate 2/3 FEC.
Since the DV packet has to be sent at regular intervals due to its synchronous
contents, it is listed under the SCO packet types. The voice and data fields shall
be treated separately. The voice field shall be handled in the same way as
normal SCO data and shall never be retransmitted; that is, the voice field is
always new. The data field is checked for errors and shall be retransmitted if
necessary. When the asynchronous data field in the DV packet has not be
acknowledged before the SCO logical transport is terminated, the asynchronous
data field shall be retransmitted in a DM1 packet.
Baseband Specification
EV packets are used on the synchronous eSCO logical transport. The packets
include a CRC and retransmission may be applied if no acknowledgement of
proper reception is received within the retransmission window. No MIC is
present. eSCO packets may be routed to the synchronous I/O port. Three
eSCO packet types (EV3, EV4, EV5) are defined for Basic Rate operation and
four additional eSCO packet types (2-EV3, 3-EV3, 2-EV5, 3-EV5) for
Enhanced Data Rate operation. The eSCO packets may be used for 64kb/s
speech transmission as well as transparent data at 64kb/s and other rates.
The EV3 packet has between 1 and 30 information bytes plus a 16-bit CRC
code. No MIC is present. The bytes are not protected by FEC. The EV3 packet
may cover up to a single time slot. There is no payload header present. The
payload length is set during the LMP eSCO setup and remains fixed until the
link is removed or re-negotiated.
The EV4 packet has between 1 and 120 information bytes plus a 16-bit CRC
code. No MIC is present. The EV4 packet may cover to up three time slots. The
information plus CRC bits are coded with a rate 2/3 FEC. There is no payload
header present. The payload length is set during the LMP eSCO setup and
remains fixed until the link is removed or re-negotiated.
The EV5 packet has between 1 and 180 information bytes plus a 16-bit CRC
code. No MIC is present. The bytes are not protected by FEC. The EV5 packet
may cover up to three time slots. There is no payload header present. The
payload length is set during the LMP eSCO setup and remains fixed until the
link is removed or re-negotiated.
Baseband Specification
The 2-EV3 packet is similar to the EV3 packet except that the payload is
modulated using π/4-DQPSK. It has between 1 and 60 information bytes plus a
16-bit CRC code. No MIC is present. The bytes are not protected by FEC. The
2-EV3 packet covers a single time slot. There is no payload header present.
The payload length is set during the LMP eSCO setup and remains fixed until
the link is removed or re-negotiated.
The 2-EV5 packet is similar to the EV5 packet except that the payload is
modulated using π/4-DQPSK. It has between 1 and 360 information bytes plus
a 16-bit CRC code. No MIC is present. The bytes are not protected by FEC.
The 2-EV5 packet may cover up to three time slots. There is no payload
header present. The payload length is set during the LMP eSCO setup and
remains fixed until the link is removed or re-negotiated.
The 3-EV3 packet is similar to the EV3 packet except that the payload is
modulated using 8DPSK. It has between 1 and 90 information bytes plus a 16-
bit CRC code. No MIC is present. The bytes are not protected by FEC. The 3-
EV3 packet covers a single time slot. There is no payload header present. The
payload length is set during the LMP eSCO setup and remains fixed until the
link is removed or re-negotiated.
The 3-EV5 packet is similar to the EV5 packet except that the payload is
modulated using 8DPSK. It has between 1 and 540 information bytes plus a
16-bit CRC code. No MIC is present. The bytes are not protected by FEC. The
3-EV5 packet may cover up to three time slots. There is no payload header
present. The payload length is set during the LMP eSCO setup and remains
fixed until the link is removed or re-negotiated.
Baseband Specification
ACL packets are used on the asynchronous logical transport and the CSB
logical transport. The information carried may be user data for either logical
transport or control data for the asynchronous logical transport.
Seven packet types are defined for Basic Rate operation: DM1, DH1, DM3,
DH3, DM5, DH5 and AUX1. Six additional packets are defined for Enhanced
Data Rate operation: 2-DH1, 3-DH1, 2-DH3, 3-DH3, 2-DH5 and 3-DH5.
The length indicator in the payload header specifies the number of user bytes
(excluding payload header, MIC and the CRC code).
The DM1 packet carries data information only. The payload has between 1 and
18 information bytes (including the 1-byte payload header) plus a 16-bit CRC
code. A 32-bit MIC is present only when encryption with AES-CCM is enabled.
The DM1 packet occupies a single time slot. The information bits, MIC bits
(when present), plus CRC bits are coded with a rate 2/3 FEC. The payload
header in the DM1 packet is 1 byte long, see Figure 6.12 on page 137.
This packet is similar to the DM1 packet, except that the information in the
payload is not FEC encoded. As a result, the DH1 packet has between 1 and
28 information bytes (including the 1-byte payload header) plus a 16-bit CRC
code. A 32-bit MIC is present only when encryption with AES-CCM is enabled.
The DH1 packet occupies a single time slot.
The DM3 packet may occupy up to three time slots. The payload has between
2 and 123 information bytes (including the 2-byte payload header) plus a 16-bit
CRC code. A 32-bit MIC is present only when encryption with AES-CCM is
enabled. The information bits, MIC bits (when present), plus CRC bits are
coded with a rate 2/3 FEC. The payload header in the DM3 packet is 2 bytes
long, see Figure 6.13 on page 137.
This packet is similar to the DM3 packet, except that the information in the
payload is not FEC encoded. As a result, the DH3 packet has between 2 and
185 information bytes (including the 2-byte payload header) plus a 16-bit CRC
code. A 32-bit MIC is present only when encryption with AES-CCM is enabled.
The DH3 packet may occupy up to three time slots.
Baseband Specification
The DM5 packet may occupy up to five time slots. The payload has between 2
and 226 information bytes (including the 2-byte payload header) plus a 16-bit
CRC code. A 32-bit MIC is present only when encryption with AES-CCM is
enabled. The payload header in the DM5 packet is 2 bytes long. The
information bits, MIC bits (when present), plus CRC bits are coded with a rate
2/3 FEC.
This packet is similar to the DM5 packet, except that the information in the
payload is not FEC encoded. As a result, the DH5 packet has between 2 and
341 information bytes (including the 2-byte payload header) plus a 16-bit CRC
code. A 32-bit MIC is present only when encryption with AES-CCM is enabled.
The DH5 packet may occupy up to five time slots.
This packet resembles a DH1 packet but has no MIC or CRC code. The AUX1
packet has between 1 and 30 information bytes (including the 1-byte payload
header). The AUX1 packet occupies a single time slot. The AUX1 packet shall
not be used for the ACL-U, ACL-C or PBD logical links. An AUX1 packet may
be discarded. The AUX1 packet shall only be encrypted when E0 encryption is
enabled. The AUX1 packet shall not be used when AES-CCM encryption is
enabled.
This packet is similar to the DH1 packet except that the payload is modulated
using π/4-DQPSK. The 2-DH1 packet has between 2 and 56 information bytes
(including the 2-byte payload header) plus a 16-bit CRC code. A 32-bit MIC is
present only when encryption with AES-CCM is enabled.The 2-DH1 packet
occupies a single time slot.
This packet is similar to the DH3 packet except that the payload is modulated
using π/4-DQPSK. The 2-DH3 packet has between 2 and 369 information
bytes (including the 2-byte payload header) plus a 16-bit CRC code. A 32-bit
MIC is present only when encryption with AES-CCM is enabled. The 2-DH3
packet may occupy up to three time slots.
Baseband Specification
This packet is similar to the DH5 packet except that the payload is modulated
using π/4-DQPSK. The 2-DH5 packet has between 2 and 681 information
bytes (including the 2-byte payload header) plus a 16-bit CRC code. A 32-bit
MIC is present only when encryption with AES-CCM is enabled. The 2-DH5
packet may occupy up to five time slots.
This packet is similar to the DH1 packet except that the payload is modulated
using 8DPSK. The 3-DH1 packet has between 2 and 85 information bytes
(including the 2-byte payload header) plus a 16-bit CRC code. A 32-bit MIC is
present only when encryption with AES-CCM is enabled. The 3-DH1 packet
occupies a single time slot.
This packet is similar to the DH3 packet except that the payload is modulated
using 8DPSK. The 3-DH3 packet has between 2 and 554 information bytes
(including the 2-byte payload header) plus a 16-bit CRC code. A 32-bit MIC is
present only when encryption with AES-CCM is enabled. The 3-DH3 packet
may occupy up to three time slots.
This packet is similar to the DH5 packet except that the payload is modulated
using 8DPSK. The 3-DH5 packet has between 2 and 1023 information bytes
(including the 2-byte payload header) plus a 16-bit CRC code. A 32-bit MIC is
present only when encryption with AES-CCM is enabled. The 3-DH5 packet
may occupy up to five time slots.
Baseband Specification
In SCO, which is only supported in Basic Rate mode, the synchronous data
field has a fixed length and consists only of the synchronous data body portion.
No payload header is present.
In Basic Rate eSCO, the synchronous data field consists of two segments: a
synchronous data body and a CRC code. No payload header is present.
In Enhanced Data Rate eSCO, the synchronous data field consists of five
segments: a guard time, a synchronization sequence, a synchronous data
body, a CRC code and a trailer. No payload header is present.
1. Enhanced Data Rate Guard Time
For Enhanced Data Rate packets the guard time is defined as the period
starting at the end of the last GFSK symbol of the header and ending at the
start of the reference symbol of the synchronization sequence. The length of
the guard time shall be between 4.75 µsec and 5.25 µsec.
Baseband Specification
Guard
End of Sref EDR
Time 5 S1 S2 S3 S4 S5 S6 S7 S8 S9 S 10
Header Payload
sec
1 2 3 4 5 6 7 8 9 10
Sref is the reference symbol. ϕ1 is the phase change between the reference
symbol and the first DPSK symbol S1. ϕk is the phase change between the
k-1th symbol Sk-1 and the kth symbol Sk
Note: the synchronization sequence may be generated using the modulator
by pre-pending the data with bits that generate the synchronization
sequence.
For π/4-DQPSK, the bit sequence used to generate the synchronization
sequence is 0,1,1,1,0,1,1,1,0,1,1,1,1,1,0,1,0,1,0,1.
For 8DPSK, the bit sequence used to generate the synchronization
sequence is 0,1,0,1,1,1,0,1,0,1,1,1,0,1,0,1,1,1,1,1,1,0,1,0,0,1,0,0,1,0.
3. Synchronous data body
For HV and DV packets, the synchronous data body length is fixed. For EV
packets, the synchronous data body length is negotiated during the LMP
eSCO setup. Once negotiated, the synchronous data body length remains
constant unless re-negotiated. The synchronous data body length may be
different for each direction of the eSCO logical transport.
4. CRC code
The 16-bit CRC in the payload is generated as specified in Section 7.1 on
page 144. The 8-bit UAP of the master is used to initialize the CRC generator.
Only the Synchronous data body segment is used to generate the CRC code.
Baseband Specification
Basic rate ACL packets have an asynchronous data field consisting of two,
three or four segments: a payload header, a payload body, possibly a MIC, and
possibly a CRC code.
Enhanced Data Rate ACL packets have an asynchronous data field consisting
of six or seven segments: a guard time, a synchronization sequence, a payload
header, a payload body, possibly a MIC, a CRC and a trailer.
LSB MSB
2 1 5
Figure 6.12: Payload header format for Basic Rate single-slot ACL packets
LSB MSB
2 1 10 3
Figure 6.13: Payload header format for multi-slot ACL packets and all EDR ACL packets
Baseband Specification
The LLID field shall be transmitted first, the length field last. In Table 6.6 on
page 138, more details about the contents of the LLID field are listed.
LLID code
b1b0 Logical Link Information
00 NA undefined
01 ACL-U Continuation fragment of an L2CAP message
ACL-U Start of an L2CAP message or no fragmentation
10
PBD Profile broadcast data, no fragmentation
11 ACL-C LMP message
Table 6.6: Logical link LLID field contents
Baseband Specification
LLID code
b1b0 Usage and semantics of the ACL payload header FLOW bit
The length indicator shall be set to the number of bytes (i.e. 8-bit words) in
the payload excluding the payload header, MIC, and the CRC code; i.e. the
payload body only. With reference to Figure 6.12 and Figure 6.13, the MSB
of the length field in a 1-byte header is the last (right-most) bit in the payload
header; the MSB of the length field in a 2-byte header is the fourth bit to the
left from the right-most end of the second byte in the payload header.
4. Payload body
The payload body includes the user information and determines the effective
user throughput. The length of the payload body is indicated in the length
field of the payload header.
5. Message Integrity Check
The 32-bit Message Integrity Check (MIC) in the payload is generated as
specified in [Vol. 2, Part H] Section 9.2 on page 1365.
Baseband Specification
Baseband Specification
Asymmetric
Payload User Symmetric Max. Rate (kb/s)
Header Payload Max. Rate
Type (bytes) (bytes) FEC MIC CRC (kb/s) Forward Reverse
Baseband Specification
Payload Symmetric
Header User Payload Max. Rate
Type (bytes) (bytes) FEC MIC CRC (kb/s)
Baseband Specification
7 BITSTREAM PROCESSING
Before the payload is sent over the air interface, several bit manipulations are
performed in the transmitter to increase reliability and security. An HEC is
added to the packet header, the header bits are scrambled with a whitening
word, and FEC coding is applied. In the receiver, the inverse processes are
carried out. Figure 7.1 on page 143 shows the processes carried out for the
packet header both at the transmit and the receive side. All header bit
processes are mandatory except that whitening and de-whitening shall not be
performed on synchronization train packets. In Figure 7.1 on page 143
processes not performed on all packet types are indicated by dashed blocks.
RF interface
Figure 7.2 on page 144 shows the processes that may be carried out on the
payload. In addition to the processes defined for the packet header, encryption
can be applied on the payload. Whitening and de-whitening, as explained in
Section 7.2 on page 147, are mandatory for every payload except
synchronization train payloads, where they are forbidden.All other processes
are optional and depend on the packet type (see Section 6.6 on page 135) and
whether encryption is enabled. In Figure 7.2 on page 144, optional processes
are indicated by dashed blocks. When E0 encryption is used, the entire
payload shall be encrypted. When AES-CCM encryption is used, only the
payload body and MIC shall be encrypted; the payload header and CRC shall
not be encrypted.
Baseband Specification
TX Payload
whitening encoding
(LSB first)
encryption and
MIC generation CRC
(AES-CCM)
RF interface
The generation and check of the HEC and CRC are summarized in Figure 7.5
on page 145 and Figure 7.8 on page 146. Before calculating the HEC or CRC,
the shift registers in the HEC/CRC generators shall be initialized with the 8-bit
UAP (or DCI) value. Then the header and payload information shall be shifted
into the HEC and CRC generators, respectively (with the LSB first).
The HEC generating LFSR is depicted in Figure 7.3 on page 145. The
generator polynomial is
g(D) = ( D + 1 ) ( D 7 + D 4 + D 3 + D 2 + 1 ) = D 8 + D 7 + D 5 + D 2 + D + 1 . Initially this
circuit shall be pre-loaded with the 8-bit UAP such that the LSB of the UAP
(denoted UAP0) goes to the left-most shift register element, and, UAP7 goes to
Baseband Specification
the right-most element. The initial state of the HEC LFSR is depicted in Figure
7.4 on page 145. Then the data shall be shifted in with the switch S set in
position 1. When the last data bit has been clocked into the LFSR, the switch S
shall be set in position 2, and, the HEC can be read out from the register. The
LFSR bits shall be read out from right to left (i.e., the bit in position 7 is the first
to be transmitted, followed by the bit in position 6, etc.).
2
D0 D1 D2 D5 D7 S D8
1
Position 0 1 2 3 4 5 6 7
Data in (LSB first)
Position: 0 1 2 3 4 5 6 7
LFSR: UAP 0 UAP 1 UAP 2 UAP 3 UAP 4 UAP 5 UAP 6 UAP 7
TX part
HEC
circuitry
LSB MSB
10b header info 8b HEC
RX part
HEC
zero remainder
circuitry
Baseband Specification
The 16 bit LFSR for the CRC is constructed similarly to the HEC using the CRC-
CCITT generator polynomial g(D) = D 16 + D 12 + D 5 + 1 (i.e. 210041 in octal
representation) (see Figure 7.6 on page 146). For this case, the 8 left-most bits
shall be initially loaded with the 8-bit UAP (UAP0 to the left and UAP7 to the
right) while the 8 right-most bits shall be reset to zero. The initial state of the 16
bit LFSR is specified in Figure 7.7 on page 146. The switch S shall be set in
position 1 while the data is shifted in. After the last bit has entered the LFSR, the
switch shall be set in position 2, and, the register’s contents shall be transmitted,
from right to left (i.e., starting with position 15, then position 14, etc.).
D0 D5 D 12 S
2
D 16
1
Position 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Data in (LSB first)
Position: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
LFSR: UAP0 UAP1 UAP2 UAP3 UAP4 UAP5 UAP6 UAP7 0 0 0 0 0 0 0 0
TX part
CRC
circuitry
LSB MSB
data info 16b CRC
RX part
8-bit UAP
LSB first
appended with 8 zero bits
CRC
zero remainder
circuitry
Baseband Specification
0 1 2 3 4 5 6
data out
After initialization, the packet header and the payload (including the CRC) are
whitened. The payload whitening shall continue from the state the whitening
LFSR had at the end of HEC. There shall be no re-initialization of the shift
register between packet header and payload. The first bit of the “data in”
sequence shall be the LSB of the packet header.
For Enhanced Data Rate packets, whitening shall not be applied to the guard,
synchronization and trailer portions of the Enhanced Data Rate packets.
During the periods where whitening is not applied the LFSR shall be paused.
Baseband Specification
The purpose of the FEC scheme on the data payload is to reduce the number
of retransmissions. However, in a reasonably error-free environment, FEC
gives unnecessary overhead that reduces the throughput. Therefore, the
packet definitions given in Section 6 have been kept flexible to use FEC in the
payload or not, resulting in the DM and DH packets for the ACL logical
transport, HV packets for the SCO logical transport, and EV packets for the
eSCO logical transport. The packet header is always protected by a 1/3 rate
FEC since it contains valuable link information and is designed to withstand
more bit errors.
Correction measures to mask errors in the voice decoder are not included in
this section. This matter is discussed in Section 9.3 on page 213.
b b b b b b b b b
0 0 0 1 1 1 2 2 2
Baseband Specification
2
D0 D2 D 4 S1 D5
1
2
S2
1
Baseband Specification
In the first POLL packet at the start of a new connection (as a result of a page,
page scan, role switch, or unpark) the master shall initialize the ARQN bit to
NAK. The response packet sent by the slave shall also have the ARQN bit set
to NAK. The subsequent packets shall use the following rules. The initial value
of the master’s eSCO ARQN at link set-up shall be NAK.
The ARQN bit shall only be affected by data packets containing CRC and
empty slots. As shown in Figure 7.12 on page 151, upon successful reception
of a CRC packet, the ARQN bit shall be set to ACK. If, in any receive slot in the
slave, or, in a receive slot in the master following transmission of a packet, one
of these events applies:
1. no access code is detected
2. the HEC fails
3. the CRC fails
4. the MIC fails.
then the ARQN bit shall be set to NAK. In eSCO the ARQN bit may be set to
ACK even when the CRC on an EV packet has failed thus enabling delivery of
erroneous packets.
Packets that have correct HEC but that are addressed to other slaves, or
packets other than DH, DM, DV or EV packets, shall not affect the ARQN bit,
except as noted in Section 7.6.2.2 on page 154. In these cases the ARQN bit
shall be left as it was prior to reception of the packet. For ACL packets, if a
CRC packet with a correct header has the same SEQN as the previously
received CRC packet, the ARQN bit shall be set to ACK and the payload shall
Baseband Specification
be ignored without checking the CRC. For eSCO packets, the SEQN shall not
be used when determining the ARQN. If an eSCO packet has been received
successfully within the eSCO window subsequent receptions within the eSCO
window shall be ignored. At the end of the eSCO window, the master’s ARQN
shall be retained for the first master-to-slave transmission in the next eSCO
window.
The ARQN bit in the FHS packet is not meaningful. Contents of the ARQN bit in
the FHS packet shall not be checked.
The ARQN bit in the extended inquiry response packet is not used. The bit
shall be set to zero and ignored upon receipt.
Broadcast packets shall be checked on errors using the CRC, but no ARQ
scheme shall be applied. Broadcast packets shall never be acknowledged.
RX
Role
Slave Master
TRIGGER? TRIGGER?
F F
ARQN=NAK in
next transmission
on all LT_ADDRs
LT_ADDR LT_ADDR
OK? F OK? F
NO
"A" TX "A" TX
TX
Figure 7.12: Stage 1 of the receive protocol for determining the ARQN bit
Baseband Specification
"A"
eSCO
LT_ADDR? "B"
Packet POLL/NULL/HV/AUX1
Type?
DM/DH/DV
SEQN =
SEQNOLD
F
SEQN =
SEQNOLD
CRC OK?
F
MIC OK?
(if present)
F
SEQNOLD =
SEQN
TX
Figure 7.13: Stage 2 (ACL) of the receive protocol for determining the ARQN bit
Baseband Specification
"B"
Already
received valid
payload in
this eSCO
window
Packet OK?
F
ARQN=ACK in ARQN=NAK in
next transmission next transmission
on eSCO on eSCO
LT_ADDR LT_ADDR
TX
Figure 7.14: Stage 2 (eSCO) of the receive protocol for determining the ARQN bit
Baseband Specification
The SEQN bit of the first CRC data packet at the start of a connection (as a
result of page, page scan, or role switch or unpark) on both the master and the
slave sides shall be set to 1. The subsequent packets shall use the rules in the
following sections.
The SEQN bit shall only be affected by the CRC data packets as shown in Figure
7.15. It shall be inverted every time a new CRC data packet is sent. The CRC
data packet shall be retransmitted with the same SEQN number until an ACK is
received or the packet is flushed. When an ACK is received, a new payload may
be sent and on that transmission the SEQN bit shall be inverted. If a device
decides to flush (see Section 7.6.3 on page 156), and it has not received an
acknowledgement for the current packet, it shall replace the current packet with
an ACL-U continuation packet with the same sequence number as the current
packet and length zero. If it replaces the current packet in this way it shall not
move on to transmit the next packet until it has received an ACK.
If the slave receives a packet other than DH, DM, DV or EV with the SEQN bit
inverted from that in the last header successfully received on the same
LT_ADDR, it shall set the ARQN bit to NAK until a DH, DM, DV or EV packet is
successfully received.
TX
DM/DH/DV?
F
Has latest
DM/DH/DV packet been
ACKed? F
Send new pay load Send old pay load Send zero length pay load
in ACL-U continuation packet
RX
Baseband Specification
In eSCO, the SEQN bit shall be toggled every eSCO window. The value shall
be constant for the duration of the eSCO window. The initial value of SEQN
shall be zero.
The SEQN bit in the FHS packet is not meaningful. This bit may be set to any
value. Contents of the SEQN bit in the FHS packet shall not be checked.
The SEQN bit in the extended inquiry response packet is not used. The bit
shall be set to zero and ignored upon receipt.
During transmission of packets without a CRC the SEQN bit shall remain the
same as it was in the previous packet.
Baseband Specification
On ACL logical transports, the ARQ scheme can cause variable delay in the
traffic flow since retransmissions are inserted to assure error-free data transfer.
For certain communication links, only a limited amount of delay is allowed:
retransmissions are allowed up to a certain limit at which the current payload
shall be ignored. This data transfer is indicated as isochronous traffic. This
means that the retransmit process must be overruled in order to continue with
the next data payload. Aborting the retransmit scheme is accomplished by
flushing the old data and forcing the link controller to take the next data instead.
The Flush Timeout defines a maximum period after which all segments of the
ACL-U packet with a Packet_Boundary_Flag value of 10 are flushed from the
Controller buffer. The Flush Timeout shall start when the First segment of the
ACL-U packet is stored in the Controller buffer. If the First segment of an ACL-
U packet has a Packet_Boundary_Flag value of 00, it is non-automatically-
flushable and shall not cause the Flush Timeout to start. After the Flush timeout
has expired the Link Controller may continue transmissions according to the
procedure described in Section 7.6.2.2 on page 154, however the Baseband
Resource Manager shall not continue the transmission of the ACL-U packet to
the Link Controller. If the Baseband Resource Manager has further segments
of the packet queued for transmission to the Link Controller it shall delete the
remaining segments of the ACL-U packet from the queue. In case the complete
ACL-U packet was not stored in the Controller buffer yet, any Continuation
segments, received for the ACL logical transport, shall be flushed, until a First
segment is received. When the complete ACL-U packet has been flushed, the
Link Manager shall continue transmission of the next ACL-U packet for the
ACL logical transport. The default Flush Timeout shall be infinite, i.e. re-
transmissions are carried out until physical link loss occurs. This is also
referred to as a 'reliable channel.' All devices shall support the default Flush
Timeout. Reliable data shall be sent over a channel with a finite flush timeout
by marking reliable packets as non-automatically-flushable.
Baseband Specification
In a piconet with multiple logical transports, the master shall carry out the ARQ
protocol independently on each logical transport.
ASB and PSB broadcast packets are packets transmitted by the master to all
the slaves simultaneously (see Section 8.6.4) If multiple hop sequences are
being used each transmission may only be received by some of the slaves. In
this case the master shall repeat the transmission on each hop sequence. An
ASB or PSB broadcast packet shall be indicated by the all-zero LT_ADDR
(note; the FHS packet and the extended inquiry response packet are the only
packets which may have an all-zero LT_ADDR but are not broadcast packets).
Broadcast packets shall not be acknowledged (at least not at the LC level).
If multiple hop sequences are being used then the master may transmit on the
different hop sequences in any order, providing that transmission of a new
broadcast packet shall not be started until all transmissions of any previous
broadcast packet have completed on all hop sequences. The transmission of a
single broadcast packet may be interleaved among the hop sequences to
minimize the total time to broadcast a packet. The master has the option of
transmitting only NBC times on channels common to all hop sequences.
ASB and PSB broadcast packets with a CRC shall have their own sequence
number. The SEQN of the first broadcast packet with a CRC shall be set to
SEQN = 1 by the master and shall be inverted for each new broadcast packet
with CRC thereafter. ASB and PSB broadcast packets without a CRC have no
influence on the sequence number. The slave shall accept the SEQN of the
first broadcast packet it receives in a connection and shall check for change in
SEQN for subsequent broadcast packets. Since there is no acknowledgement
of broadcast messages and there is no end packet indication, it is important to
receive the start packets correctly. To ensure this, repetitions of the broadcast
packets that are L2CAP start packets and LMP packets shall not be filtered out.
These packets shall be indicated by LLID=1X in the payload header as
explained in Table 6.6 on page 138. Only repetitions of the L2CAP continuation
packets shall be filtered out.
Baseband Specification
broadcast message
broadcast packets 1 2 M
1 2 N
BC
1 1 1 2 2 2 M M M
t
Baseband Specification
This section describes how a piconet is established and how devices can be
added to and released from the piconet. Several states of operation of the
devices are defined to support these functions. In addition, the operation of
several piconets with one or more common members, the scatternet, is
discussed.
STANDBY
Synchronization Inquiry
Train
Synchronization Inquiry
Scan Scan
CONNECTION
PARK
Baseband Specification
The controller may leave the STANDBY state to scan for page or inquiry
messages, or to page or inquiry itself.
In the page scan substate, a device may be configured to use either the
standard or generalized interlaced scanning procedure. During a standard
scan, a device listens for the duration of the scan window Tw_page_scan
(11.25ms default, see HCI [Part E] Section 7.3.20 on page 673), while the
generalized interlaced scan is performed as two back to back scans of
Tw_page_scan. If the scan interval is not at least twice the scan window, then
generalized interlaced scan shall not be used. During each scan window, the
device shall listen at a single hop frequency, its correlator matched to its device
access code (DAC). The scan window shall be long enough to completely scan
16 page frequencies.
When a device enters the page scan substate, it shall select the scan
frequency according to the page hopping sequence determined by the device's
Bluetooth device address, see Section 2.6.4.1 on page 94. The phase in the
sequence shall be determined by CLKN16-12 of the device’s native clock; that
is, every 1.28s a different frequency is selected.
Baseband Specification
In the case of a standard scan, if the correlator exceeds the trigger threshold
during the page scan, the device shall enter the slave response substate
described in Section 8.3.3.1 on page 167. The scanning device may also use
generalized interlaced scan. In this case, if the correlator does not exceed the
trigger threshold during the first scan it shall scan a second time using the
phase in the sequence determined by [CLKN16-12 + interlace_offset] mod 32. If
on this second scan the correlator exceeds the trigger threshold the device
shall enter the slave response substate using [CLKN16-12 + interlace_offset]
mod 32 as the frozen CLKN* in the calculation for Xprs(79) (see Section 2.6.4.3
on page 95 for details). If the correlator does not exceed the trigger threshold
during a scan in normal mode or during the second scan in interlaced scan
mode it shall return to either the STANDBY or CONNECTION state.
The interlace_offset value ranges from 0 to 31. The value 16 should be used
unless the pattern of slots that are not available for scanning implies a different
value should be used.
The page scan substate can be entered from the STANDBY state or the
CONNECTION state. In the STANDBY state, no connection has been
established and the device can use all the capacity to carry out the page scan.
Before entering the page scan substate from the CONNECTION state, the
device should reserve as much capacity as possible for scanning. If desired,
the device may place ACL connections in Hold, Park, or Sniff (see Section 8.8
on page 197 and Section 8.9 on page 197). Synchronous connections should
not be interrupted by the page scan, although eSCO retransmissions should be
paused during the scan. The page scan may be interrupted by the reserved
synchronous slots which should have higher priority than the page scan. SCO
packets should be used requiring the least amount of capacity (HV3 packets).
The scan window shall be increased to minimize the setup delay. If one SCO
logical transport is present using HV3 packets and TSCO=6 slots or one eSCO
logical transport is present using EV3 packets and TeSCO=6 slots, a total scan
window Tw page scan of at least 36 slots (22.5ms) is recommended; if two SCO
links are present using HV3 packets and TSCO=6 slots or two eSCO links are
present using EV3 packets and TeSCO=6 slots, a total scan window of at least
54 slots (33.75ms) is recommended.
The scan interval Tpage scan is defined as the interval between the beginnings
of two consecutive page scans. A distinction is made between the case where
the scan interval is equal to the scan window Tw page scan (continuous scan),
the scan interval is maximal 1.28s, or the scan interval is maximal 2.56s. These
three cases shall determine the behavior of the paging device; that is, whether
the paging device shall use R0, R1 or R2, see also Section 8.3.2 on page 162.
Table 8.1 illustrates the relationship between Tpage scan and modes R0, R1 and
R2. Although scanning in the R0 mode is continuous, the scanning may be
interrupted for example by reserved synchronous slots. The scan interval
information is included in the SR field in the FHS packet.
Baseband Specification
R1 ≤ 1.28s
R2 ≤ 2.56s
Reserved -
Table 8.1: Relationship between scan interval, and paging modes R0, R1, and R2
The page substate is used by the master (source) to activate and connect to a
slave (destination) in the page scan substate. The master tries to coincide with
the slave's scan activity by repeatedly transmitting the paging message
consisting of the slave’s device access code (DAC) in different hop channels.
Since the Bluetooth clocks of the master and the slave are not synchronized,
the master does not know exactly when the slave wakes up and on which hop
frequency. Therefore, it transmits a train of identical page scan messages at
different hop frequencies and listens in between the transmit intervals until it
receives a response from the slave.
The page procedure in the master consists of a number of steps. First, the Host
communicates the BD_ADDR of the slave to the Controller. This BD_ADDR
shall be used by the master to determine the page hopping sequence; see
Section 2.6.4.2 on page 95. For the phase in the sequence, the master shall
use an estimate of the slave’s clock. For example, this estimate can be derived
from timing information that was exchanged during the last encounter with this
particular device (which could have acted as a master at that time), or from an
inquiry procedure. With this estimate CLKE of the slave’s Bluetooth clock, the
master can predict on which hop channel the slave starts page scanning.
The estimate of the Bluetooth clock in the slave can be completely wrong.
Although the master and the slave use the same hopping sequence, they use
different phases in the sequence and might never select the same frequency.
To compensate for the clock drifts, the master shall send its page message
during a short time interval on a number of wake-up frequencies. It shall
transmit also on hop frequencies just before and after the current, predicted
hop frequency. During each TX slot, the master shall sequentially transmit on
two different hop frequencies. In the following RX slot, the receiver shall listen
sequentially to two corresponding RX hops for an ID packet. The RX hops shall
be selected according to the page response hopping sequence. The page
response hopping sequence is strictly related to the page hopping sequence:
for each page hop there is a corresponding page response hop. The RX/TX
timing in the page substate is described in Section 2.2.5, see also Figure 2.7
on page 80. In the next TX slot, the master shall transmit on two hop
Baseband Specification
frequencies different from the former ones. Note: The hop rate is increased to
3200 hops/s.
With the increased hopping rate as described above, the transmitter can cover
16 different hop frequencies in 16 slots or 10 ms. The page hopping sequence
is divided over two paging trains A and B of 16 frequencies. Train A includes
the 16 hop frequencies surrounding the current, predicted hop frequency f(k),
where k is determined by the clock estimate CLKE16-12. The first train consists
of hops
f(k-8), f(k-7),...,f(k),...,f(k+7)
When the difference between the Bluetooth clocks of the master and the slave
is between -8x1.28 s and +7x1.28 s, one of the frequencies used by the master
will be the hop frequency the slave will listen to. Since the master does not
know when the slave will enter the page scan substate, the master has to
repeat this train A Npage times or until a response is obtained, whichever is
shorter. If the slave scan interval corresponds to R1, the repetition number is at
least 128; if the slave scan interval corresponds to R2 or if the master has not
previously read the slave's SR mode, the repetition number is at least 256. If
the master has not previously read the slave's SR mode it shall use Npage >=
256. Note that CLKE16-12 changes every 1.28 s; therefore, every 1.28 s, the
trains will include different frequencies of the page hopping set.
When the difference between the Bluetooth clocks of the master and the slave
is less than -8x1.28 s or larger than +7x1.28 s, the remaining 16 hops are used
to form the new 10 ms train B. The second train consists of hops
f(k-16), f(k-15),...,f(k-9),f(k+8)...,f(k+15)
The page substate may be entered from the STANDBY state or the
CONNECTION state. In the STANDBY state, no connection has been
established and the device can use all the capacity to carry out the page.
Before entering the page substate from the CONNECTION state, the device
should free as much capacity as possible for paging. To ensure this, it is
recommended that the ACL connections are put on hold or park. However, the
synchronous connections shall not be disturbed by the page. This means that
the page will be interrupted by the reserved SCO and eSCO slots which have
higher priority than the page. In order to obtain as much capacity for paging, it
is recommended to use the SCO packets which use the least amount of
Baseband Specification
capacity (HV3 packets). If SCO or eSCO links are present, the repetition
number Npage of a single train shall be increased, see Table 8.2. Here it has
been assumed that the HV3 packet are used with an interval TSCO=6 slots or
EV3 packets are used with an interval of TeSCO=6 slots, which would
correspond to a 64 kb/s synchronous link.
Table 8.2: Relationship between train repetition, and paging modes R0, R1 and R2 when
synchronous links are present
10ms train
1,2 3,4 5,6 7,8 9,10 11,12 13,14 15,16 1,2 3,4 5,6 7,8 9,10 11,12 13,14 15,16 1,2 3,4 5,6
a)
Synchronous slot
1,2 5,6 7,8 11,12 13,14 1,2 3,4 7,8 9,10 13,14 15,16 3,4 5,6
b)
Synchronous slots
1,2 7,8 13,14 3,4 9,10 15,16 5,6
c)
Figure 8.2: Conventional page (a), page while one synchronous link present (b), page while two
synchronous links present (c)
Baseband Specification
The initial messaging between master and slave is shown in Table 8.3 on page
165 and in Figure 8.3 on page 166 and Figure 8.4 on page 166. In those two
figures frequencies f (k), f(k+1), etc. are the frequencies of the page hopping
sequence determined by the slave’s BD_ADDR. The frequencies f’(k), f’(k+1),
etc. are the corresponding page_response frequencies (slave-to-master). The
frequencies g(m) belong to the basic channel hopping sequence.
Master page
3 FHS Master to slave Page Slave
response
Second slave
4 ID Slave to master Page response Slave
page response
5 1st packet master POLL Master to slave Channel Master
Any
6 1st packet slave Slave to master Channel Master
type
Table 8.3: Initial messaging during start-up
In step 1 (see Table 8.3 on page 165), the master device is in page substate
and the slave device in the page scan substate. Assume in this step that the
page message sent by the master reaches the slave. On receiving the page
message, the slave enters the slave response in step 2. The master waits for
a reply from the slave and when this arrives in step 2, it shall enter the master
response in step 3. Note that during the initial message exchange, all
Baseband Specification
parameters are derived from the slave’s device address, and that only the page
hopping and page response hopping sequences are used (are also derived
from the slave’s device address). Note that when the master and slave enter
the response states, their clock input to the page and page response hop
selection is frozen as is described in Section 2.6.4.3 on page 95.
MASTER
SLAVE
Figure 8.3: Messaging at initial connection when slave responds to first page message
MASTER
SLAVE
Figure 8.4: Messaging at initial connection when slave responds to second page message
In the case of the truncated page procedure, the messaging stops after step 2
in the sequence shown in Table 8.3 on page 165. This procedure is illustrated
in Figure 8.5 and Figure 8.6.
Baseband Specification
Master ID ID FHS
FHS not
sent
Slave ID
Master ID ID FHS
FHS not
sent
ID
Slave
After having received the page message in step 1, the slave device shall
transmit a slave page response message (the slave's device access code) in
step 2. This response message shall be the slave’s device access code. The
slave shall transmit this response 625 μs after the beginning of the received
page message and at the response hop frequency that corresponds to the hop
frequency in which the page message was received. The slave transmission is
therefore time aligned to the master transmission. During initial messaging, the
slave shall still use the page response hopping sequence to return information
to the master. The clock input CLKN16-12 shall be frozen at the value it had at
the time the page message was received.
After having sent the response message, the slave’s receiver shall be activated
312.5 μs after the start of the response message and shall await the arrival of
an FHS packet. Note that an FHS packet can arrive 312.5 μs after the arrival of
the page message as shown in Figure 8.4 on page 166, and not after 625 μs as
Baseband Specification
is usually the case in the piconet physical channel RX/TX timing. More details
about the timing can be found in Section 2.4.4 on page 81.
If the setup fails before the CONNECTION state has been reached, the
following procedure shall be carried out. The slave shall listen as long as no
FHS packet is received until pagerespTO is exceeded. Every 1.25 ms,
however, it shall select the next master-to-slave hop frequency according to the
page hop sequence. If nothing is received after pagerespTO, the slave shall
return back to the page scan substate for one scan period. Length of the scan
period depends on the synchronous reserved slots present. If no page
message is received during this additional scan period, the slave shall resume
scanning at its regular scan interval and return to the state it was in prior to the
first page scan state.
If an FHS packet is received by the slave in the slave response substate, the
slave shall return a slave page response message in step 4 to acknowledge
reception of the FHS packet. This response shall use the page response
hopping sequence. The transmission of the slave page response packet is
based on the reception of the FHS packet. Then the slave shall change to the
master's channel access code and clock as received from the FHS packet.
Only the 26 MSBs of the master clock are transferred: the timing shall be such
that CLK1 and CLK0 are both zero at the time the FHS packet was received as
the master transmits in even slots only. The offset between the master’s clock
and the slave’s clock shall be determined from the master’s clock in the FHS
packet and reported to the slave’s Baseband Resource Manager.
Finally, the slave enters the CONNECTION state in step 5. From then on, the
slave shall use the master’s clock and the master's BD_ADDR to determine the
basic channel hopping sequence and the channel access code. The slave shall
use the LT_ADDR in the FHS payload as the primary LT_ADDR in the
CONNECTION state. The connection mode shall start with a POLL packet
transmitted by the master. The slave may respond with any type of packet. If
the POLL packet is not received by the slave, or the response packet is not
received by the master, within newconnectionTO number of slots after FHS
packet acknowledgement, the master and the slave shall return to page and
page scan substates, respectively. See Section 8.5 on page 174
When the master has received a slave page response message in step 2, and the
master is not executing the truncated page procedure, it shall enter the master
response routine. It shall freeze the current clock input to the page hop selection
scheme. The master shall then transmit an FHS packet in step 3 containing the
master’s real-time Bluetooth clock, the master’s BD_ADDR, the BCH parity bits,
and the class of device. The FHS packet contains all information to construct the
channel access code without requiring a mathematical derivation from the
master's Bluetooth device address. The LT_ADDR field in the packet header of
FHS packets in the master response substate shall be set to all-zeros. The FHS
packet shall be transmitted at the beginning of the master-to-slave slot following
Baseband Specification
the slot in which the slave responded. The FHS packet shall carry the all-zero
LT_ADDR. The TX timing of the FHS is not based on the reception of the
response packet from the slave. The FHS packet may therefore be sent 312.5 μs
after the reception of the response packet like shown in Figure 8.4 on page 166
and not 625 μs after the received packet as is usual in the piconet physical
channel RX/TX timing, see also Section 2.4.4 on page 81.
After the master has sent its FHS packet, it shall wait for a second slave page
response message in step 4 acknowledging the reception of the FHS packet.
This response shall be the slave’s device access code. If no response is
received, the master shall retransmit the FHS packet with an updated clock
and still using the slave’s parameters. It shall retransmit the FHS packet with
the clock updated each time until a second slave page response message is
received, or the timeout of pagerespTO is exceeded. In the latter case, the
master shall return to the page substate and send an error message to the
Baseband Resource Manager. During the retransmissions of the FHS packet,
the master shall use the page hopping sequence.
If the slave’s response is received, the master shall change to using the master
parameters, so it shall use the channel access code and the master clock. The
lower clock bits CLK0 and CLK1 shall be reset to zero at the start of the FHS
packet transmission and are not included in the FHS packet. Finally, the master
enters the CONNECTION state in step 5. The master BD_ADDR shall be used
to change to a new hopping sequence, the basic channel hopping sequence.
The basic channel hopping sequence uses all 79 hop channels in a pseudo-
random fashion, see also Section 2.6.4.7 on page 97. The master shall now
send its first traffic packet in a hop determined with the new (master)
parameters. This first packet shall be a POLL packet. See Section 8.5 on page
174. This packet shall be sent within newconnectionTO number of slots after
reception of the FHS packet acknowledgement. The slave may respond with
any type of packet. If the POLL packet is not received by the slave or the POLL
packet response is not received by the master within newconnectionTO
number of slots, the master and the slave shall return to page and page scan
substates, respectively.
Baseband Specification
During the inquiry substate, the discovering device collects the Bluetooth
device addresses and clocks of all devices that respond to the inquiry
message. In addition, the discovering device also collects extended
information (e.g. local name and supported services) from devices that
respond with an extended inquiry response packet. It can then, if desired,
make a connection to any one of the discovered devices by means of the
previously described page procedure.
The inquiry message broadcast by the source does not contain any information
about the source. However, it may indicate which class of devices should
respond. There is one general inquiry access code (GIAC) to inquire for any
device, and a number of dedicated inquiry access codes (DIAC) that only
inquire for a certain type of device. The inquiry access codes are derived from
reserved Bluetooth device addresses and are further described in Section
6.3.1.
The inquiry scan substate is very similar to the page scan substate. However,
instead of scanning for the device's device access code, the receiver shall
scan for the inquiry access code long enough to completely scan for 16 inquiry
frequencies. Two types of scans are defined: standard and generalized
interlaced. In the case of a standard scan the length of this scan period is
denoted Tw_inquiry_scan (11.25ms default, see HCI [Part E] Section 7.3.22 on
page 676). The standard scan is performed at a single hop frequency as
defined by Xir4-0 (see Section 2.6.4.6 on page 97). The generalized interlaced
scan is performed as two back to back scans of Tw_inquiry_scan where the first
scan is on the normal hop frequency and the second scan is defined by [Xir4-0
+ interlace_offset] mod 32. If the scan interval is not at least twice the scan
window then generalized interlaced scan shall not be used. The inquiry
procedure uses 32 dedicated inquiry hop frequencies according to the inquiry
hopping sequence. These frequencies are determined by the general inquiry
address. The phase is determined by the native clock of the device carrying out
the inquiry scan; the phase changes every 1.28s.
The interlace_offset value ranges from 0 to 31. The value 16 should be used
unless the pattern of slots that are not available for scanning implies a different
value should be used.
Instead of, or in addition to, the general inquiry access code, the device may
scan for one or more dedicated inquiry access codes. However, the scanning
shall follow the inquiry scan hopping sequence determined by the general
inquiry address. If an inquiry message is received during an inquiry wake-up
period, the device shall enter the inquiry response substate.
The inquiry scan substate can be entered from the STANDBY state or the
CONNECTION state. In the STANDBY state, no connection has been
established and the device can use all the capacity to carry out the inquiry
scan. Before entering the inquiry scan substate from the CONNECTION
Baseband Specification
state, the device should reserve as much capacity as possible for scanning. If
desired, the device may place ACL logical transports in Sniff, Hold, or Park.
Synchronous logical transports are preferably not interrupted by the inquiry
scan, although eSCO retransmissions should be paused during the scan. In
this case, the inquiry scan may be interrupted by the reserved synchronous
slots. SCO packets should be used requiring the least amount of capacity (HV3
packets). The scan window, Tw inquiry scan, shall be increased to increase the
probability to respond to an inquiry message. If one SCO logical transport is
present using HV3 packets and TSCO=6 slots or one eSCO logical transport is
present using EV3 packets and TeSCO=6 slots, a total scan window of at least
36 slots (22.5ms) is recommended; if two SCO links are present using HV3
packets and TSCO=6 slots or two eSCO links are present using EV3 packets
and TeSCO=6 slots, a total scan window of at least 54 slots (33.75ms) is
recommended.
The scan interval Tinquiry scan is defined as the interval between two consecutive
inquiry scans. The inquiry scan interval shall be less than or equal to 2.56 s.
The inquiry substate is used to discover new devices. This substate is very
similar to the page substate; the TX/RX timing shall be the same as in paging,
see Section 2.4.4 on page 81 and Figure 2.7 on page 80. The TX and RX
frequencies shall follow the inquiry hopping sequence and the inquiry response
hopping sequence, and are determined by the general inquiry access code and
the native clock of the discovering device. In between inquiry transmissions,
the receiver shall scan for inquiry response messages. When a response is
received, the entire packet (an FHS packet) shall be read. If the EIR bit in the
FHS packet is set to one, the device should try to receive the extended inquiry
response packet 1250μs after the start of the FHS packet. After this, the device
shall continue with inquiry transmissions. The device in an inquiry substate
shall not acknowledge the inquiry response messages. If enabled by the Host
(see HCI [Part E] Section 7.3.50 on page 714), the RSSI value of the inquiry
response message shall be measured. It shall keep probing at different hop
channels and in between listening for response packets. As in the page
substate, two 10 ms trains A and B are defined, splitting the 32 frequencies of
the inquiry hopping sequence into two 16-hop parts. A single train shall be
repeated for at least Ninquiry=256 times before a new train is used. In order to
collect all responses in an error-free environment, at least three train switches
must have taken place. As a result, the inquiry substate may have to last for
10.24 s unless the inquirer collects enough responses and aborts the inquiry
substate earlier. If desired, the inquirer may also prolong the inquiry substate
to increase the probability of receiving all responses in an error-prone
environment. When some receive slots are periodically not available, it may
require up to 31 train switches to collect all responses in an error-free
environment, depending on the pattern of the available receive slots. Before
each switch to train A, knudge may be updated. As a result, the inquiry
substate may have to last for 40.96s. If an inquiry procedure is automatically
Baseband Specification
initiated periodically (say a 10 s period every minute), then the interval between
two inquiry instances shall be determined randomly. This is done to avoid two
devices synchronizing their inquiry procedures.
The inquiry substate can be entered from the STANDBY state or the
CONNECTION state. In the STANDBY state, no connection has been
established and the device can use all the capacity to carry out the inquiry.
Before entering the inquiry substate from the CONNECTION state, the device
should free as much capacity as possible for inquiry. To ensure this, it is
recommended that the ACL logical transports are placed in Sniff, Hold, or Park.
However, the reserved slots of synchronous logical transports shall not be
disturbed by the inquiry. This means that the inquiry will be interrupted by the
reserved SCO and eSCO slots which have higher priority than the inquiry. In
order to obtain as much capacity as possible for inquiry, it is recommended to
use the SCO packets which use the least amount of capacity (HV3 packets). If
SCO or eSCO links are present, the repetition number Ninquiry shall be
increased, see Table 8.4 on page 172.
Here it has been assumed that HV3 packets are used with an interval TSCO=6
slots or EV3 packets are used with an interval of TeSCO=6 slots, which would
correspond to a 64 kb/s synchronous link.
Table 8.4: Increase of train repetition when synchronous links are present
The slave response substate for inquiries differs completely from the slave
response substate applied for pages. When the inquiry message is received in the
inquiry scan substate, the recipient shall return an inquiry response (FHS) packet
containing the recipient's device address (BD_ADDR) and other parameters. If the
recipient has non-zero extended inquiry response data to send it shall return an
extended inquiry response packet after the FHS packet.
Baseband Specification
The following protocol in the slave's inquiry response shall be used. On the
first inquiry message received in the inquiry scan substate the slave shall enter
the inquiry response substate. If the slave has non-zero extended inquiry
response data to send it shall return an FHS packet with the EIR bit set to one
to the master 625μs after the inquiry message was received. It shall then return
an extended inquiry response packet 1250μs after the start of the FHS packet.
If the slave's extended inquiry response data is all zeroes the slave shall only
return an FHS packet with the EIR bit set to zero. A contention problem could
arise when several devices are in close proximity to the inquiring device and all
respond to an inquiry message at the same time. However, because every
device has a free running clock it is highly unlikely that they all use the same
phase of the inquiry hopping sequence. In order to avoid repeated collisions
between devices that wake up in the same inquiry hop channel simultaneously,
a device shall back-off for a random period of time. Thus, if the device receives
an inquiry message and returns an FHS packet, it shall generate a random
number, RAND, between 0 and MAX_RAND. For scanning intervals ≥ 1.28s
MAX_RAND shall be 1023, however, for scanning intervals < 1.28s
MAX_RAND may be as small as 127. A profile that uses a special DIAC may
choose to use a smaller MAX_RAND than 1023 even when the scanning
interval is ≥ 1.28s. The slave shall return to the CONNECTION or STANDBY
state for the duration of at least RAND time slots. Before returning to the
CONNECTION and STANDBY state, the device may go through the page
scan substate. After at least RAND slots, the device shall add an offset of 1 to
the phase in the inquiry hop sequence (the phase has a 1.28 s resolution) and
return to the inquiry scan substate again. If the slave is triggered again, it shall
repeat the procedure using a new RAND. The offset to the clock accumulates
each time an FHS packet is returned. During a probing window, a slave may
respond multiple times, but on different frequencies and at different times.
Reserved synchronous slots should have priority over response packets; that
is, if a response packet overlaps with a reserved synchronous slot, it shall not
be sent but the next inquiry message is awaited. If a device has extended
inquiry response data to send but the extended inquiry response packet
overlaps with a reserved synchronous slot the FHS packet may be sent with
the EIR bit set to zero.
The messaging during the inquiry routines is summarized in Table 8.5 on page
174. In step 1, the master transmits an inquiry message using the inquiry
access code and its own clock. The slave responds with the FHS packet
containing the slave’s Bluetooth device address, native clock and other slave
information. This FHS packet is returned at times that tend to be random. The
FHS packet is not acknowledged in the inquiry routine, but it is retransmitted at
other times and frequencies as long as the master is probing with inquiry
messages. If the slave has non-zero extended inquiry response data it sends
an extended inquiry response packet to the master in step 3.
The extended inquiry response packet is an ACL packet with type DM1, DM3,
DM5, DH1, DH3 or DH5. To minimize interference it is recommended to use
the shortest packet that fits the data. The packet shall be sent on the same
frequency as the FHS packet, 1250 µs after the start of the FHS packet. In the
Baseband Specification
packet header, LT_ADDR shall be set to zero. TYPE shall be one of DM1,
DM3, DM5, DH1, DH3 or DH5. FLOW, ARQN and SEQN shall all be set to
zero and ignored during receipt. The HEC LFSR shall be initialized with the
same DCI (default check initialization) as for the FHS packet. In the payload
header, LLID shall contain the value 10 (start of an L2CAP message or no
fragmentation). FLOW shall be set to zero and ignored upon receipt. The
length of the payload body (LENGTH) shall be smaller than or equal to 240
bytes. The CRC LFSR shall be initialized with the same DCI as for the FHS
packet. The data whitening LFSR shall be initialized with the same value as for
the FHS packet.
The payload data has two parts, a significant part followed by a non-significant
part. The significant part contains a sequence of data structures as defined in
[Vol. 3, Part C] Section 8 on page 346. The non-significant part contains all-
zero octets.
The baseband shall not change any octets in the significant part. When
transmitting data, the non-significant part octets may be omitted from the
payload.
A device shall store a single extended inquiry response packet. This packet
shall be used with all IACs.
Baseband Specification
There are two ways to enter the CONNECTION state. A device can transition
from the page/page scan substates to the CONNECTION state or directly from
the STANDBY state to the connectionless slave broadcast mode of the
CONNECTION state.
If a device enters from the page/page scan substates, the CONNECTION state
starts with a POLL packet sent by the master to verify the switch to the
master’s timing and channel frequency hopping. The slave may respond with
any type of packet. If the slave does not receive the POLL packet or the master
does not receive the response packet for newconnectionTO number of slots,
both devices shall return to page/page scan substates.
CONNECTION State
Connectionless Active PARK
Slave Broadcast
Mode Mode State
Sniff Hold
Mode Mode
Baseband Specification
TX
master 1 2 2 1
RX
TX
slave 1 RX
TX
slave 2 RX
For ACL logical transports the mode selection may be left to real time packet
type selections. The packet type table (ptt) in section 6.5 allows the selection of
Basic Rate or Enhanced Data Rate for each of the packet type codes,
however; the DM1 packet is available in all packet type tables. ACL traffic over
Baseband Specification
this given physical or logical link shall utilize the packet types in the given
column of Table 6.2 on page 125.
The master always has full control over the piconet. Due to the TDD scheme,
slaves can only communicate with the master and not other slaves. In order to
avoid collisions on the ACL logical transport, a slave is only allowed to transmit
in the slave-to-master slot when addressed by the LT_ADDR in the packet
header in the preceding master-to-slave slot. If the LT_ADDR in the preceding
slot does not match, or a valid packet header was not received, the slave shall
not transmit.
The master normally attempts to poll a slave's ACL logical transport no less
often than once every Tpoll slots. Tpoll is set by the Link Manager (see [Part C]
Section 4.1.8 on page 262).
The slave's ACL logical transport may be polled with any packet type except for
FHS and ID. For example, polling during SCO may use HV packets, since the
slave may respond to an HV packet with a DM1 packet (see Section 8.6.2 on
page 177).
8.6.2 SCO
The SCO logical transport shall be established by the master sending a SCO
setup message via the LM protocol. This message contains timing parameters
including the SCO interval TSCO and the offset DSCO to specify the reserved
slots.
The slave-to-master SCO slots shall directly follow the reserved master-to-
slave SCO slots. After initialization, the clock value CLK(k+1) for the next
master-to-slave SCO slot shall be derived by adding the fixed interval TSCO to
the clock value of the current master-to-slave SCO slot:
Baseband Specification
The master will send SCO packets to the slave at regular intervals (the SCO
interval TSCO counted in slots) in the reserved master-to-slave slots. An HV1
packet can carry 1.25ms of speech at a 64 kb/s rate. An HV1 packet shall
therefore be sent every two time slots (TSCO=2). An HV2 packet can carry
2.5ms of speech at a 64 kb/s rate. An HV2 packet shall therefore be sent every
four time slots (TSCO=4). An HV3 packet can carry 3.75ms of speech at a 64
kb/s rate. An HV3 packet shall therefore be sent every six time slots (TSCO=6).
The slave is allowed to transmit in the slot reserved for its SCO logical
transport unless the (valid) LT_ADDR in the preceding slot indicates a different
slave. If no valid LT_ADDR can be derived in the preceding slot, the slave may
still transmit in the reserved SCO slot.
Since the DM1 packet is recognized on the SCO logical transport, it may be
sent during the SCO reserved slots if a valid packet header with the primary
LT_ADDR is received in the preceding slot. DM1 packets sent during SCO
reserved slots shall only be used to send ACL-C data.
The slave shall not transmit anything other than an HV packet in a reserved
SCO slot unless it decodes its own slave address in the packet header of the
packet in the preceding master-to-slave transmission slot.
8.6.3 eSCO
To enter eSCO, the master or slave shall send an eSCO setup command via
the LM protocol. This message shall contain the eSCO interval TeSCO and an
offset DeSCO. In order to prevent clock wrap-around problems, an initialization
flag in the LMP setup message indicates whether initialization procedure 1 or 2
shall be used. The initiating device shall use initialization 1 when the MSB of
the current master clock (CLK27) is 0; it shall use initialization 2 when the MSB
of the current master clock (CLK27) is 1. The responding device shall apply the
initialization method as indicated by the initialization flag. The master-to-slave
eSCO slots reserved by the master and the slave shall be initialized on the
slots for which the clock satisfies the applicable equation:
The slave-to-master eSCO slots shall directly follow the reserved master-to-
slave eSCO slots. After initialization, the clock value CLK(k+1) for the next
master-to-slave eSCO slot shall be found by adding the fixed interval TeSCO to
the clock value of the current master-to-slave eSCO slot:
Baseband Specification
There are two different polling rules in eSCO. In the eSCO reserved slots, the
polling rule is the same as to the SCO reserved slots. The master may send a
packet in the master slot. The slave may transmit on the eSCO LT_ADDR in
the following slot either if it received a packet on the eSCO LT_ADDR in the
previous slot, or if it did not receive a valid packet header in the previous slot.
When the master-to-slave packet type is a three-slot packet, the slave’s
transmit slot is the fourth slot of the eSCO reserved slots. A master shall
transmit in an eSCO retransmission window on a given eSCO LT_ADDR only if
it addressed that eSCO LT_ADDR or did not transmit any packet in the
immediately preceding eSCO reserved slots. A slave may transmit on an
eSCO LT_ADDR in the eSCO reserved slots only if the slave did not received a
valid packet header with a different LT_ADDR in the eSCO reserved slots.
Inside retransmission windows, the same polling rule as for ACL traffic is used:
the slave shall transmit on the eSCO channel only if it received a valid packet
header and correct LT_ADDR on the eSCO channel in the previous master-to-
slave transmission slot. The master may transmit on any non-eSCO LT_ADDR
in any master-to-slave transmission slot inside the eSCO retransmission
window. The master shall only transmit on an eSCO LT_ADDR in the
retransmission window if there are enough slots left for both the master and
slave packets to complete in the retransmission window. The master may
refrain from transmitting in any slot during the eSCO retransmission window.
When there is no data to transmit from master to slave, either due to the traffic
being unidirectional or due to the master-to-slave packet having been ACK’ed,
the master shall use the POLL packet. When the master-to-slave packet has
been ACK’ed, and the slave-to-master packet has been correctly received, the
master shall not address the slave on the eSCO LT_ADDR until the next eSCO
reserved slot, with the exception that the master may transmit a NULL packet
with ARQN=ACK on the eSCO LT_ADDR. When there is no data to transmit
from slave to master, either due to the traffic being unidirectional or due to the
slave-to-master packet having been ACK'ed, the slave shall use NULL
packets. eSCO traffic should be given priority over ACL traffic in the
retransmission window.
Figure 8.9 on page 180 shows the eSCO window when single slot packets are
used.
Baseband Specification
M M
S S
When multi-slot packets are used in either direction of the eSCO logical
transport, the first transmission continues into the following slots. The
retransmission window in this case starts the slot after the end of the slave-to-
master packet, i.e. two, four or six slots immediately following the eSCO instant
are reserved and should not be used for other traffic. Figure 8.10 on page 180
shows the eSCO window when multi-slot packets are used in one direction and
single-slot packets are used in the other direction.
eSCO
Instant
Reserved Retransmission
Slots Window
eSCO Window
eSCO windows may overlap on the master, but shall not overlap on an
individual slave.
In the reserved slots both master and slave shall only listen and transmit at
their allocated slots at the first transmission time of each eSCO window.
Intermittent lapses due to, for instance, time-critical signaling during connection
establishment are allowed. Both master and slave may refrain from sending
data and may use instead POLL and NULL packets respectively. When the
master transmits a POLL packet instead of an EV4 or EV5 packet the slave
shall transmit starting in the same slot as if the master transmitted an EV4 or
Baseband Specification
EV5 packet. If the slave does not receive anything in the reserved master-to-
slave transmission slot it shall transmit in the same slot as if the master had
transmitted the negotiated packet type. For example, if the master had
negotiated an EV5 packet the slave would transmit three slots later. If the
master does not receive a slave transmission in response to an eSCO packet it
causes an implicit NAK of the packet in question. The listening requirements
for the slave during the retransmission window are the same as for an active
ACL logical transport.
The master of the piconet can broadcast messages to all slaves on the ASB-U,
PSB-C, and PSB-U logical transports. An ASB or PSB broadcast packet shall
have an LT_ADDR set to all zero. Each new broadcast message (which may
be carried by a number of packets) shall start with the start of L2CAP message
indication (LLID=10).
In order to support the PARK state (as described in Section 8.9 on page 197),
a master transmission shall take place at fixed intervals. This master
transmission will act as a beacon to which slaves can synchronize. If no traffic
takes place at the beacon event, broadcast packets shall be sent. More
information is given in Section 8.9 on page 197.
Baseband Specification
Prior to the role switch, encryption if present, shall be paused or disabled in the
old piconet. A role switch shall not be performed if the physical link is in Sniff or
Hold mode, in the PARK state, or has any synchronous logical transports.
For the master and slave involved in the role switch, the switch results in a
reversal of their TX and RX timing: a TDD switch. Additionally, since the
piconet parameters are derived from the Bluetooth device address and clock of
the master, a role switch inherently involves a redefinition of the piconet as
well: a piconet switch. The new piconet's parameters shall be derived from the
former slave's device address and clock.
Assume device A is to become master; device B was the former master. Then
there are two alternatives: either the slave initiates the role switch or the master
initiates the role switch. These alternatives are described in Link Manager
Protocol, [Part C] Section 4.4.2 on page 316. The baseband procedure is the
same regardless of which alternative is used.
In step 1, the slave A and master B shall perform a TDD switch using the
former hopping scheme (still using the Bluetooth device address and clock of
device B), so there is no piconet switch yet. The slot offset information sent by
slave A shall not be used yet but shall be used in step 3. Device A now
becomes the master, device B the slave. The LT_ADDR formerly used by
device A in its slave role, shall now be used by slave B.
At the moment of the TDD switch, both devices A and B shall start a timer with
a time out of newconnectionTO. The timer shall be stopped in slave B as soon
as it receives an FHS packet from master A on the TDD-switched channel. The
timer shall be stopped in master A as soon as it receives an ID packet from
slave B. If the newconnectionTO expires, the master and slave shall return to
the old piconet timing and AFH state, taking their old roles of master and slave.
The FHS packet shall be sent by master A using the "old" piconet parameters.
The LT_ADDR in the FHS packet header shall be the former LT_ADDR used
by device A. The LT_ADDR carried in the FHS payload shall be the new
LT_ADDR intended for device B when operating on the new piconet. After the
FHS acknowledgment, which is the ID packet and shall be sent by the slave on
the old hopping sequence, both master A and slave B shall use the new
channel parameters of the new piconet as indicated by the FHS with the
sequence selection set to basic channel hopping sequence. If the new master
Baseband Specification
has physical links that are AFH enabled, following the piconet switch the new
master is responsible for controlling the AFH operational mode of its new slave.
Since the old and new masters' clocks are synchronized, the clock information
sent in the FHS payload shall indicate the new master's clock at the beginning
of the FHS packet transmission. Furthermore, the 1.25 ms resolution of the
clock information given in the FHS packet is not sufficient for aligning the slot
boundaries of the two piconets. The slot-offset information in the LMP message
previously sent by device A shall be used to provide more accurate timing
information. The slot offset indicates the delay between the start of the master-
to-slave slots of the old and new piconet channels. This timing information
ranges from 0 to 1249 μs with a resolution of 1μs. It shall be used together with
the clock information in the FHS packet to accurately position the correlation
window when switching to the new master's timing after acknowledgment of
the FHS packet.
After reception of the FHS packet acknowledgment, the new master A shall
switch to its own timing with the sequence selection set to the basic channel
hopping sequence and shall send a POLL packet to verify the switch. Both the
master and the slave shall start a new timer with a time out of
newconnectionTO on FHS packet acknowledgment. The start of this timer shall
be aligned with the beginning of the first master TX slot boundary of the new
piconet, following the FHS packet acknowledgment. The slave shall stop the
timer when the POLL packet is received; the master shall stop the timer when
the POLL packet is acknowledged. The slave shall respond with any type of
packet to acknowledge the POLL. Any pending AFH_Instant shall be cancelled
once the POLL packet has been received by the slave. If no response is
received, the master shall re-send the POLL packet until newconnectionTO is
reached. If this timer expires, both the slave and the master shall return to the
old piconet timing with the old master and slave roles. Expiry of the timer shall
also restore the state associated with AFH (including any pending
AFH_Instant), Channel Quality Driven Data Rate (CQDDR, Link Manager
Protocol [Part C] Section 4.1.7 on page 261) and power control (Link Manager
Protocol [Part C] Section 4.1.3 on page 251). The procedure may then start
again beginning at step 1. Aligning the timer with TX boundaries of the new
piconet ensures that no device returns to the old piconet timing in the middle of
a master RX slot.
After the role switch the ACL logical transport is reinitialized as if it were a new
connection. For example, the SEQN of the first data packet containing a CRC
on the new piconet channel shall be set according to the rules in Section 7.6.2
on page 153.
Baseband Specification
8.6.6 Scatternet
Multiple piconets can cover the same area. Since each piconet has a different
master, the piconets hop independently, each with their own hopping sequence
and phase as determined by the respective master. In addition, the packets
carried on the channels are preceded by different channel access codes as
determined by the master device addresses. As more piconets are added, the
probability of collisions increases; a graceful degradation of performance
results as is common in frequency-hopping spread spectrum systems.
If multiple piconets cover the same area, a device can participate in two or
more overlaying piconets by applying time multiplexing. To participate on the
proper channel, it shall use the associated master device address and proper
clock offset to obtain the correct phase. A device can act as a slave in several
piconets, but only as a master in a single piconet: since two piconets with the
same master are synchronized and use the same hopping sequence, they are
one and the same piconet. A group of piconets in which connections exist
between different piconets is called a scatternet.
Baseband Specification
Since the clocks of two masters of different piconets are not synchronized, a
slave device participating in two piconets shall maintain two offsets that, added
to its own native clock, create the two master clocks. Since the two master
clocks drift independently, the slave must regularly update the offsets in order
to keep synchronization to both masters.
Hop sequence adaptation is controlled by the master and can be set to either
enabled or disabled. Once enabled, hop sequence adaptation shall apply to all
logical transports on a physical link. Once enabled, the master may periodically
update the set of used and unused channels as well as disable hop sequence
adaptation on a physical link. When a master has multiple physical links the
state of each link is independent of all other physical links.
When hop sequence adaptation is enabled, the sequence selection hop selection
kernel input is set to adapted channel hopping sequence and the
AFH_channel_map input is set to the appropriate set of used and unused
channels. Additionally, the same channel mechanism shall be used. When hop
sequence adaptation is enabled with all channels used this is known as AHS(79).
The hop sequence adaptation state shall be changed when the master sends
the LMP_set_AFH PDU and a baseband acknowledgement is received. When
the baseband acknowledgement is received prior to the hop sequence switch
instant, AFH_Instant, (See Link Manager Protocol [Part C] Section 4.1.4 on
page 255) the hop sequence proceeds as shown in Figure 8.11 on page 185.
AFH_Instant
AFH CMD
Master t
ACK
Slave t
Hop Sequence
Non-AHS AHS(A)
(Enabling)
Hop Sequence AHS(A) Non-AHS
(Disabling)
Hop Sequence AHS(A) AHS(B)
(Updating)
Baseband Specification
AFH_Instant
AFH CMD
Master t
ACK
Slave ? ?
t
Hop Sequence
Non-AHS AHS(A)
(Enabling)
Hop Sequence AHS(A) Non-AHS
(Disabling)
Hop Sequence AHS(A) AHS(B)
Recovery
(Updating)
Sequence
Baseband Specification
f f f' f'
k k+3 k+4 k+4
Master
3-slot packet
Enabling Tx
Slave
Tx
CLK k k+1 k+2 k+3 k+4 k+5
AFH_Instant
f' f' f" f"
i i i+4 i+4
Master
3-slot packet
Tx
Updating
Slave
Tx
CLK i i+1 i+2 i+3 i+4 i+5
AFH_Instant
f" f" f f
j j j+4 j+5
Master
3-slot packet
Tx
Disabling
Slave
Tx
CLK j j+1 j+2 j+3 j+4 j+5
AFH_Instant
Figure 8.13: AFH_Instant changes during multi-slot packets transmitted by the master
Baseband Specification
Classification Definition
Baseband Specification
The algorithm used by the master to combine these information sources and
generate the AFH_channel_map is not defined in the specification and will be
implementation specific. At no time shall the number of channels used be less
than Nmin, defined in Section 2.3.1 on page 78.
If a master determines that all channels should be used, it may keep AFH
operation enabled using an AFH_channel_map of 79 used channels, i.e.
AHS(79).
For all devices that support Synchronizable mode, the RF channel indices
used for the Synchronization Train (see Section 2.6.4.8 on page 97) shall be
marked as unused in the AFH_channel_map for all logical links.
Features are provided to allow low-power operation. These features are both at
the microscopic level when handling the packets, and at the macroscopic level
when using certain operation modes.
As was described in Section 6.5 on page 124, the packet type indicates how
many slots a packet may occupy. A slave not addressed in the packet header
may go to sleep for the remaining slots the packet occupies. This can be read
from the TYPE code.
The most common and flexible methods for reducing power consumption are
the use of sniff and park. Hold can also be used by repeated negotiation of hold
periods.
Baseband Specification
Enhanced Data Rate provides power saving because of the ability to send a
given amount of data in either fewer packets or with the same (or similar)
number of packets but with shorter payloads.
A master may adjust the piconet clock during the existence of a piconet using
two mechanisms: Coarse Clock Adjustment and Clock Dragging. Both
mechanisms may be used within the same piconet.
The master shall provide the opportunity for each slave to acknowledge the
adjustment with LMP_clk_adj_ack (see [Part C] Section 4.1.14.1 on page 270).
If the master receives any other packet than LMP_clk_adj_ack with the current
clk_adj_id, it should poll the slave more times until the expected
acknowledgement is received or the slave responds with a NULL packet. If any
slave does not acknowledge the adjustment, the master shall start the Coarse
Clock Adjustment Recovery Mode (see Section 8.6.10.2).
When the clk_adj_instant occurs, the master will add (clk_adj_slots * 625 +
clk_adj_us) µs to time_base_offset and the slave(s) will add the same amount
to slave_offset. If the clk_adj_instant occurs during a multi-slot packet the
adjustment is delayed until the start of the following master-to-slave slot. If a
role switch is successful prior to the clk_adj_instant, the pending coarse clock
adjustment shall be discarded. The effect of the adjustment is that devices will
use the new clock domain starting at clk_adj_instant.
Baseband Specification
slave slot which can be used, for example, for eSCO. If clk_adj_slots had been
an odd number, the first complete slot would have been a master slot. The first
complete master slot in this example happens at CLKnew[27:1] = 20.
clk_adj_instant = 12
CLKold[27:1] 11 12 13
17 18 19 20
CLKnew[27:1]
625 μs
clk_adj_us
= 400 μs
start of slot
clk_adj_instant +
clk_adj_slots =
12 + 6 = 18
Last slave slot in Unusable First new slave slot in First new complete master
CLKold domain 225 μs CLKnew domain slot in CLKnew domain
clk_adj_instant = 12
CLKold[27:1] 11 12 13
CLKnew[27:1] 10 11 12 13
clk_adj_us 625 μs
= - 400 μs
start of slot
clk_adj_instant +
clk_adj_slots =
12 + 0 = 12
Last slave slot in Unusable First new master slot First new slave slot in
CLKold domain 400 μs in CLKnew domain CLKnew domain
If clk_adj_us is zero then the adjustment alters the slot numbering but not the
actual times at which slots start. Therefore all slots remain available for use,
though if clk_adj_slots is odd then there will be two consecutive slave slots.
Baseband Specification
When a slave does not detect any transmissions from its master it may enter
the Synchronization Scan Substate (see Section 8.11.1) and scan for
synchronization train packets as defined in Section 2.7. TSync_Scan_Window
should be set large enough to enable reception of at least one synchronization
train packet. A slave that could have lost its connection to the master due to
coarse clock adjustment should prioritize synchronization scan.
A slave that receives a Synchronization Train packet with the BD_ADDR of its
master shall change the value of slave_offset to make CLK correspond to the
contents of the packet and then exit the Synchronization Scan Substate. If the
new clock is in the range CLKOLD–LSTO to CLKOLD inclusive (where LSTO is
the link supervision timeout period), then this shall be treated as a negative
change. In this case, the slave shall not transmit any packet and shall ignore all
received directed packets until the value of CLK, after being changed, is strictly
greater than the value of CLK the last time it transmitted or received (as
appropriate) a packet. If the new clock is outside this range then this shall be
treated as a positive change (and thus might involve a clock wrap).
Clock Dragging means that the master periodically adjusts its time_base_offset
(see Section 2.2.4) until a desired time adjustment has been accomplished.
A single adjustment shall be less than or equal to 3 µs. Within any period of
125 ms, the total adjustment in a single direction shall be less than or equal to
5 µs. Note: these requirements apply to the changes to time_base_offset and
Baseband Specification
are applied irrespective of the accuracy of the master's reference clock (see
Section 1.1). This means that slaves may observe a change in CLK greater
than 20ppm.
The slave listens in master-to-slave transmission slots starting at the sniff anchor
point. It shall use the following rules to determine whether to continue listening:
• If fewer than Nsniff attempt master-to-slave transmission slots have elapsed
since the sniff anchor point then the slave shall continue listening.
• If the slave has received a packet with a matching LT_ADDR that contains
ACL data (DM, DH, DV, or AUX1 packets) in the preceding Nsniff timeout
master-to-slave transmission slots then it shall continue listening.
• If the slave has transmitted a packet containing ACL data (DM, DH, DV, or
AUX1 packets) in the preceding Nsniff timeout slave-to-master transmission
slots then it shall continue listening.
• If the slave has received any packet with a matching LT_ADDR in the
preceding Nsniff timeout master-to-slave transmission slots then it may
continue listening.
Baseband Specification
• A device may override the rules above and stop listening prior to Nsniff timeout
or the remaining Nsniff attempt slots if it has activity in another piconet.
It is possible that activity from one sniff timeout may extend to the next sniff
anchor point. Any activity from a previous sniff timeout shall not affect activity
after the next sniff anchor point. So in the above rules, only the slots since the
last sniff anchor point are considered.
Note that Nsniff attempt =1 and Nsniff timeout =0 cause the slave to listen only at
the slot beginning at the sniff anchor point, irrespective of packets received
from the master.
Nsniff attempt =0 shall not be used.
Sniff mode only applies to asynchronous logical transports and their associated
LT_ADDR. Sniff mode shall not apply to synchronous logical transports,
therefore, both masters and slaves shall still respect the reserved slots and
retransmission windows of synchronous links.
To enter sniff mode, the master or slave shall issue a sniff command via the LM
protocol. This message includes the sniff interval Tsniff and an offset Dsniff. In
addition, an initialization flag indicates whether initialization procedure 1 or 2
shall be used. The device shall use initialization 1 when the MSB of the current
master clock (CLK27) is 0; it shall use initialization 2 when the MSB of the
current master clock (CLK27) is 1. The slave shall apply the initialization
method as indicated by the initialization flag irrespective of its clock bit value
CLK27. The sniff anchor point determined by the master and the slave shall be
initialized on the slots for which the clock satisfies the applicable equation:
After initialization, the clock value CLK(k+1) for the next sniff anchor point shall
be derived by adding the fixed interval Tsniff to the clock value of the current
sniff anchor point:
Sniff transition mode is a special mode which is used during the transition
between sniff and active mode. It is required because during this transition it is
unclear which mode (Sniff or Active) the slave is in and it is necessary to
ensure that the slave is polled correctly regardless of which mode it is in.
In sniff transition mode the master shall maintain the active mode poll interval
in case the slave is in active mode. In addition the master shall poll the slave at
Baseband Specification
least once in the sniff attempt transmit slots starting at each sniff anchor point.
Note that this transmission counts for the active mode polling as well. The
master shall use its high power accurate clock when in Sniff Transition Mode.
The precise circumstances under which the master enters Sniff Transition
Mode are defined in [Part C] Section 4.5.3.1 on page 330.
Sniff Subrating
Sniff Mode
Mode
Data received
A slave device in sniff subrating mode shall also temporarily enter sniff mode
after transmitting a packet requiring acknowledgement until the baseband
acknowledgement is received.
Note: Once sniff subrating is enabled the master and slave devices may be in
sniff mode or sniff subrating mode at different times. The rules defined in
Section 8.7.2.2 on page 196 describe how the two devices maintain
synchronization and can reliably exchange data.
Baseband Specification
Note that there are two sniff mode timeout values: one for the local device and
one for the remote device.
When the sniff mode timeout has expired a device shall enter sniff subrating
mode. In sniff subrating mode the mandatory sniff subrate anchor points at
which the master shall transmit to the slave and the slave shall listen for the
master, are defined as follows (where M is the max subrate received by the
master, N is the max subrate received by the slave, A is the sniff subrating
instant, and k is any positive integer):
Master Slave
Baseband Specification
Prior to entering hold mode, master and slave agree on the time duration the
slave remains in hold mode. A timer shall be initialized with the holdTO value.
When the timer is expired, the slave shall wake up, synchronize to the traffic on
the channel and will wait for further master transmissions.
Baseband Specification
To support parked slaves, the master establishes a beacon train when one or
more slaves are parked. The beacon train consists of one beacon slot or a train
of equidistant beacon slots which is transmitted periodically with a constant
time interval. The beacon train is illustrated in Figure 8.18 on page 199. A train
of NB (NB ≥ 1) beacon slots is defined with an interval of TB slots. The beacon
slots in the train are separated by ΔB. The start of the first beacon slot is
referred to as the beacon instant and serves as the beacon timing reference.
The beacon parameters NB and TB are chosen such that there are sufficient
beacon slots for a parked slave to synchronize to during a certain time window
in an error-prone environment.
When parked, the slave shall receive the beacon parameters through an LMP
command. In addition, the timing of the beacon instant is indicated through the
offset DB. As with the SCO logical transport (see Section 8.6.2 on page 177),
two initialization procedures 1 or 2 are used. The master shall use initialization
1 when the MSB of the current master clock (CLK27) is 0; it shall use
initialization 2 when the MSB of the current master clock (CLK27) is 1. The
chosen initialization procedure shall also be carried by an initialization flag in
the LMP command. The slave shall apply the initialization method as indicated
by the initialization flag irrespective of its clock bit CLK27. The master-to-slave
slot positioned at the beacon instant shall be initialized on the slots for which
the clock satisfies the applicable equation:
After initialization, the clock value CLK(k+1) for the next beacon instant shall be
derived by adding the fixed interval TB to the clock value of the current beacon
instant:
CLK27-1(k+1) = CLK27-1(k) + TB
Baseband Specification
Since a slave can synchronize to any packet which is preceded by the proper
channel access code, the packets carried on the beacon slots do not have to
contain specific broadcast packets for parked slaves to be able to synchronize;
any packet may be used. The only requirement placed on the beacon slots is
that there is a master-to-slave transmission present on the hopping sequence
associated with the park structure. If there is no information to be sent, NULL
packets may be transmitted by the master. If there is indeed broadcast
information to be sent to the parked slaves, the first packet of the broadcast
message shall be repeated in every beacon slot of the beacon train. However,
synchronous traffic in the synchronous reserved slots may interrupt the beacon
transmission if it is on the same hopping sequence as the parked slaves. The
master shall configure its park beacon structure so that reserved slots of
synchronous logical transports do not cause slaves to miss synchronization on a
beacon slot. For example, a master that has active slaves using AHS, and
parked slaves using Non-AHS shall ensure that the Park beacons cannot be
interrupted by AHS synchronous reserved slots.
beacon instant
1 2 N 1 2 N
B B
t
B
beacon slots
T
B
The master can place parked slaves in any of the AFH operating modes, but
shall ensure that all parked slaves use the same hop sequence. Masters should
use AHS(79) or AHS when all the slaves in the Piconet are AFH capable.
Baseband Specification
In addition to the beacon slots, an access window is defined where the parked
slaves can send requests to be unparked. To increase reliability, the access
window may be repeated Maccess times (Maccess ≥1), see Figure 8.19 on page
200. The access window starts a fixed delay Daccess after the beacon instant.
The width of the access window is Taccess.
t
D T
access access
beacon instant
The access window supports a polling slave access technique. The format of
the polling technique is shown in Figure 8.20 on page 200. The same TDD
structure is used as on the piconet channel, i.e. master-to-slave transmission is
alternated with slave-to-master transmission. The slave-to-master slot is
divided into two half slots of 312.5 μs each. The half slot a parked slave is
allowed to respond in corresponds to its access request address (AR_ADDR),
see also Section 8.9.6 on page 203. For counting the half slots to determine
the access request slot, the start of the access window is used, see Figure 8.20
on page 200. The slave shall only send an access request in the proper slave-
to-master half slot if a broadcast packet has been received in the preceding
master-to-slave slot. In this way, the master polls the parked slaves.
AR_ADDR=2
AR_ADDR=3
AR_ADDR=4
AR_ADDR=5
The slots of the access window may also be used for traffic on the piconet if
required. For example, if a synchronous connection has to be supported, the
slots reserved for the synchronous link may carry synchronous information
instead of being used for access requests, i.e. if the master-to-slave slot in the
Baseband Specification
When the slave is parked, the master shall indicate what type of access
scheme will be used. For the polling scheme, the number of slave-to-master
access slots Nacc_slot is indicated.
AR_ADDR=2
AR_ADDR=5
broadcast master SCO slave SCO broadcast
packet packet packet packet
t
625 µs 312.5 µs
Baseband Specification
master with DB_sleep which indicates the offset (in multiples of TB) with respect
to the beacon instant (0< DB_sleep<NB_sleep-1). To initialize the wake-up period,
the applicable equation shall be used:
where initialization 1 shall be chosen by the master if the MSB in the current
master clock is 0 and initialization 2 shall be chosen by the master if the MSB in
the current master clock is 1.
When the master needs to send broadcast messages to the parked slaves, it
may use the beacon slots for these broadcast messages. However, if NB<NBC,
the slots following the last beacon slot in the beacon train shall be used for the
remaining NBC-NB broadcast packets. If NB>NBC, the broadcast message shall
be repeated on all NB beacon slots.
A parked slave shall read the broadcast messages sent in the beacon slot(s) it
wakes up in. If the parked slave wakes up, the minimum wake-up activity shall
be to read the channel access code for re-synchronization and the packet
header to check for broadcast messages.
beacon instant
master
t
T
B
scan scan
8.9.4 Parking
A master can park an active slave through the exchange of LMP commands.
Before being put into park, the slave shall be assigned a PM_ADDR and an
AR_ADDR. Every parked slave shall have a unique PM_ADDR or a
PM_ADDR of 0. The AR_ADDR is not necessarily unique. The beacon
parameters shall be given by the master when the slave is parked. The slave
shall then give up its LT_ADDR and shall enter PARK state. A master can park
only a single slave at a time. The park message is carried with a normal data
packet and addresses the slave through its LT_ADDR.
The master can unpark a parked slave by sending a dedicated LMP unpark
command including the parked slave’s address. This message shall be sent in
Baseband Specification
a broadcast packet on the beacon slots. The master shall use either the slave’s
PM_ADDR, or its BD_ADDR. The message also includes the logical transport
address LT_ADDR the slave shall use after it has re-entered the piconet. The
unpark message may include a number of slave addresses so that multiple
slaves may be unparked simultaneously. For each slave, a different LT_ADDR
shall be assigned.
After having received the unpark message, the parked slave matching the
PM_ADDR or BD_ADDR shall leave the PARK state and enter the
CONNECTION state. It shall keep listening to the master until it is addressed
by the master through its LT_ADDR. The first packet sent by the master shall
be a POLL packet. The return packet in response to the POLL packet confirms
that the slave has been unparked. If no response packet from the slave is
received for newconnectionTO number of slots after the end of beacon
repetition period, the master shall unpark the slave again. The master shall use
the same LT_ADDR on each unpark attempt until it has received a link
supervision timeout for that slave or the unpark has completed successfully. If
the slave does not receive the POLL packet for newconnectionTO number of
slots after the end of beacon repetition period, it shall return to park, with the
same beacon parameters. After confirming that the slave is in the
CONNECTION state, the master decides in which mode the slave will
continue.
When a device is unparked, the SEQN bit for the link shall be reset to 1 on both
the master and the slave (see Section 7.6.2.1 on page 154).
A slave can request access to the channel through the access window defined
in Section 8.9.2 on page 200. As shown in Figure 8.20 on page 200, the access
window includes several slave-to-master half slots where the slave may send
an access request message. The specific half slot the slave is allowed to
respond in, corresponds to its access request address (AR_ADDR) which it
received when it was parked. The order of the half slots (in Figure 8.20 the
AR_ADDR numbers linearly increase from 1 to 5) is not fixed: an LMP
command sent in the beacon slots may reconfigure the access window. When
a slave desires access to the channel, it shall send an access request
message in the proper slave-to-master half slot. The access request message
of the slave is the ID packet containing the device access code (DAC) of the
master (which is the channel access code without the trailer). The parked slave
shall only transmit an access request message in the half slot, when in the
preceding master-to-slave slot a broadcast packet has been received. This
broadcast message may contain any kind of broadcast information not
necessarily related to the parked slave(s). If no broadcast information is
available, a broadcast NULL or broadcast POLL packet shall be sent.
After having sent an access request, the parked slave shall listen for an unpark
message from the master. As long as no unpark message is received, the
slave shall repeat the access requests in the subsequent access windows.
Baseband Specification
After the last access window (there are Maccess windows in total, see Section
8.9.2 on page 200), the parked slave shall listen for an additional Npoll time
slots for an unpark message. If no unpark message is received within Npoll
slots after the end of the last access window, the slave may return to sleep and
retry an access attempt after the next beacon instant.
After having received the unpark message, the parked slave matching the
PM_ADDR or BD_ADDR shall leave the PARK state and enter the
CONNECTION state. It shall keep listening to the master until it is addressed by
the master through its LT_ADDR. The first packet sent by the master shall be a
POLL packet. The return packet in response to the POLL packet confirms that
the slave has been unparked. After confirming that the slave is in the
CONNECTION state, the master decides in which mode the slave will continue.
If no response packet from the slave is received for newconnectionTO number of
slots after Npoll slots after the end of the last access window, the master shall
send the unpark message to the slave again. If the slave does not receive the
POLL packet for newconnectionTO number of slots after Npoll slots after the end
of the last access window, it shall return to park, with the same beacon
parameters.
When a device is unparked, the SEQN bit for the link shall be reset to 1 on both
the master and the slave (see Section 7.6.2.1 on page 154).
In the beacon train, the master can support broadcast messages to the parked
slaves. However, it may extend its broadcast capacity by indicating to the parked
slaves that more broadcast information is following after the beacon train. This is
achieved by an LMP command ordering the parked slaves (as well as the active
slaves) to listen to the channel for broadcast messages during a limited time
window. This time window starts at the beacon instant and continues for the
period indicated in the LMP command sent in the beacon train.
In the PARK state, parked slaves may send access requests in the access
window provided a broadcast packet is received in the preceding master-to-
slave slot. Slaves in the CONNECTION state shall not send in the slave-to-
master slots following the broadcast packet, since they are only allowed to
send if addressed specifically.
Baseband Specification
If the Host has not yet provided the BR/EDR Controller with any data packets
to transmit since enabling the broadcast, or if the length of the data is zero, the
BR/EDR Controller shall transmit NULL packets. This is different than the case
where the Host has provided data since enabling the broadcast but has not
provided new data since the previous broadcast packet. In that case, the BR/
EDR Controller resends the most recent data.
The Host may provide Connectionless Slave Broadcast data through HCI
commands. Because HCI commands are limited to 255 bytes, a single
command cannot carry the maximum payloads allowed by larger packets, such
as DH5. Therefore, HCI commands for Connectionless Slave Broadcast allow
fragmentation of large payloads at the HCI level. The BR/EDR Controller shall
assemble all HCI fragments of a packet before transmission and shall not
transmit incomplete packets. Until such assembly is complete, the controller
shall continue to transmit the previous data (if any).
Baseband Specification
Slave Broadcast interval can be any even value from 0x0002 to 0xFFFE slots and
is negotiated between the BR/EDR Controller and the Host during CSB setup. At
the start of each Connectionless Slave Broadcast Instant, the Connectionless
Slave Broadcast packet is transmitted using the adapted piconet physical
channel. Connectionless Slave Broadcast packets shall not be encrypted.
The Skip parameter is set by the Host and specifies the number of consecutive
Connectionless Slave Broadcast instants which the receiver may skip after
successfully receiving a Connectionless Slave Broadcast packet. If the
Connectionless Slave Broadcast packet is received successfully, the payload
data shall be forwarded to the Host. If no Connectionless Slave Broadcast
packet is received by a slave during a Connectionless Slave Broadcast Instant,
the slave shall ignore Skip and instead listen at every scheduled
Connectionless Slave Broadcast Instant until it is able to successfully receive a
Connectionless Slave Broadcast packet or until CSB_supervisionTO number
of slots have passed.
The BR/EDR Controller shall stop listening for Connectionless Slave Broadcast
packets after CSB_supervisionTO slots have passed without receiving a
Connectionless Slave Broadcast packet.
Baseband Specification
If the correlator exceeds the trigger threshold during the Synchronization Scan
procedure, the scanning device shall receive the synchronization train packet,
whose contents are defined in Table 8.8 on page 208. Upon reception of the
synchronization train packet the device shall exit the synchronization scan
substate and return to the STANDBY or CONNECTED state as appropriate. If
the packet is not received the device should stay in the synchronization scan
substate. If the synchronization_scanTO expires before reception of a
Synchronization Train packet, the device shall return to the STANDBY state. A
device attempting to synchronize to a Connectionless Slave Broadcast
transport shall ignore any synchronization train packet whose Connectionless
Slave Broadcast LT_ADDR field in the payload is set to zero.
Baseband Specification
Reserved SCO and eSCO slots should have higher priority than the
synchronization train. Once the master enters the synchronization train
substate, it shall remain in the synchronization train substate until
synchronization_trainTO expires or the Host directs otherwise. The master
shall transition to the STANDBY or CONNECTED state when exiting the
synchronization train substate.
The synchronization train packet is a basic rate ACL packet with type DM3 and
LT_ADDR of zero. FLOW, ARQN and SEQN shall all be set to zero upon
transmission and ignored upon receipt. The HEC LFSR shall be initialized with
the master UAP. In the payload header, the LLID shall contain the value 10b
(start of an L2CAP message or no fragmentation). FLOW in the payload
header shall be set to zero upon transmission and ignored upon reception. The
length of the payload body (LENGTH) shall be 28 bytes. The CRC LFSR shall
be initialized with the master UAP. Data whitening is not used. Encryption is not
used.
There are two possible formats. Format 1 shall be used when the
synchronization train is being transmitted by a device which is the master of a
piconet where Connectionless Slave Broadcast mode is enabled, and format 2
shall be used otherwise. The format of the payload portion of the DM3 packet
used in the synchronization train is shown in Table 8.8.
Format 1 Format 2
Bytes Field Length Description Description
Baseband Specification
Format 1 Format 2
Bytes Field Length Description Description
The Host provides the Service Data for the synchronization train packet
payload body when format 1 is used. The BR/EDR Controller provides the data
for all other fields.
All devices in the synchronization scan substate shall accept payloads of any
length from 28 to 121 bytes inclusive and shall ignore bytes 28 (counting from
0) and beyond.
When format 1 is used the Future Connectionless Slave Broadcast Instant in
the synchronization train packet payload shall correspond to one of the next 4
broadcast instants. Figure 8.24 shows an example of valid and invalid values
for this field.
Invalid
Valid
Figure 8.24: Examples of Synchronization Train Pointing to Connectionless Slave Broadcast Instant
Baseband Specification
9 AUDIO
On the air-interface, either a 64 kb/s log PCM (Pulse Code Modulation) format
(A-law or μ-law) may be used, or a 64 kb/s CVSD (Continuous Variable Slope
Delta Modulation) may be used. The latter format applies an adaptive delta
modulation algorithm with syllabic companding.
The voice coding on the line interface is designed to have a quality equal to or
better than the quality of 64 kb/s log PCM.
Table 9.1 on page 210 summarizes the voice coding schemes supported on
the air interface. The appropriate voice coding scheme is selected after
negotiations between the Link Managers.
Voice Codecs
linear CVSD
A-law
8-bit logarithmic
μ-law
Baseband Specification
x(k)
+ b(k)
-
x̂(k – 1)
Accumulator Step size
δ(k) control
b(k)
b(k)
Denote the CVSD encoder output bit b(k) , the encoder input x(k) , the
accumulator contents y(k) , and the step size δ(k) . Furthermore, let h be the
decay factor for the accumulator, let β denote the decay factor for the step size,
and, let α be the syllabic companding parameter. The latter parameter monitors
the slope by considering the K most recent output bits
Let
Then, the CVSD encoder internal state shall be updated according to the
following set of equations:
Baseband Specification
where
In these equations, δmin and δmax are the minimum and maximum step sizes,
and, ymin and ymax are the accumulator’s negative and positive saturation
values, respectively. Over air, the bits shall be sent in the same order they are
generated by the CVSD encoder.
For a 64 kb/s CVSD, the parameters as shown in Table 9.2 shall be used. The
numbers are based on a 16 bit signed number output from the accumulator.
These values result in a time constant of 0.5 ms for the accumulator decay, and
a time constant of 16 ms for the step size decay
Parameter Value
h 1
1 – ------
32
β 1
1 – ------------
1024
J 4
K 4
δmin 10
δmax 1280
ymin – 2 15 or – 2 15 + 1
ymax 2 15 – 1
Table 9.2: CVSD parameter values. The values are based on a 16 bit signed number output
from the accumulator
Baseband Specification
The voice payload in the HV2 and EV4 packets are protected by a 2/3 rate
FEC. For errors that are detected but cannot be corrected, the receiver should
try to minimize the audible effects. For instance, from the 15-bit FEC segment
with uncorrected errors, the 10-bit information part as found before the FEC
decoder should be used. The HV1 packet is protected by a 3 bit repetition FEC.
For this code, the decoding scheme will always assume zero or one-bit errors.
Thus, there exist no detectable but uncorrectable error events for HV1 packets.
For A-law and μ-law log-PCM encoded signals the requirements on signal
levels shall follow the ITU-T recommendation G.711.
Full swing at the 16 bit linear PCM interface to the CVSD encoder is defined to
be 3 dBm0.
For Bluetooth audio quality the requirements are put on the transmitter side.
The 64 ksamples/s linear PCM input signal should have negligible spectral
power density above 4 kHz. The power spectral density in the 4-32 kHz band of
the decoded signal at the 64 ksamples/s linear PCM output, should be more
than 20 dB below the maximum in the 0-4 kHz range.
Baseband Specification
The physical test set-up for Handsets and Headsets is described in ITU-T
Recommendation P.51 and P.57
The physical test set-up for speakerphones and “Vehicle hands-free systems”
is specified in ITU-T Recommendation P.34.
A general equation for computation of loudness rating (LR) for telephone sets
is given by ITU-T recommendations P.79 and is given by
N
2 m ( s i – w i ) ⁄ 10
LR = – ------ log10 ,
10
m 10
(EQ 20)
i = N1
where
m is a constant (~ 0.2).
wi = weighting coefficient (different for the various LRs).
Si = the sensitivity at frequency Fi, of the electro-acoustic path
N1,N2, consecutive filter bank numbers (Art. Index: 200-4000 Hz)
(EQ 20) on page 214 is used for calculating the (SLR) according to Figure A.1,
and (RLR) according to Figure A.2. When calculating LRs one must only
include those parts of the frequency band where an actual signal transmission
can occur in order to ensure that the additive property of LRs is retained.
Baseband Specification
CVSD
BTR D/A, Filter
ERP
PGA
PCM
1- The output of the CVSD decoder are 16-bit linear PCM digital samples, at a
sampling frequency of 8 ksample/s. Bluetooth also supports 8-bit log PCM
samples of A-law and μ-law type. The sound pressure at the ear reference
point for a given 16-bit CVSD sample, should follow the sound pressure level
given in the cellular standard specification.
Baseband Specification
Baseband Specification
Bluetooth
dB GSM mask
8.0
4.0
0.0
-6.0
-9.0
-12.0
-20.0
Figure A.3: Plot of recommended frequency mask for Bluetooth. The GSM send frequency mask is
given for comparison (dotted line)
50 -20 -
300 4 -12
1000 4 -9
2000 4 -9
3000 4 --9
3400 4 -12
4000 0 -
Table A.1: Recommended Frequency Mask for Bluetooth
Baseband Specification
APPENDIX B TIMERS
B.1.1 inquiryTO
The inquiryTO defines the number of slots the inquiry substate shall last. The
timer value may be changed by the host. HCI provides a command to change
the timer value.
B.1.2 pageTO
The pageTO defines the number of slots the page substate can last before a
response is received when the extended_pageTO is zero. The timer value may
be changed by the host. HCI provides a command to change the timer value.
B.1.3 extended_pageTO
B.1.4 pagerespTO
In the slave, it defines the number of slots the slave shall await the master’s
response, FHS packet, after sending the page acknowledgment ID packet. In
the master, pagerespTO defines the number of slots the master should wait for
the FHS packet acknowledgment before returning to page substate. Both
master and slave units should use the same value for this timeout, to ensure
common page/scan intervals after reaching pagerespTO.
B.1.5 newconnectionTO
Every time a new connection is started through paging, scanning, role switch or
unparking, the master sends a POLL packet as the first packet in the new
connection. Transmission and acknowledgment of this POLL packet is used to
confirm the new connection. If the POLL packet is not received by the slave or
the response packet is not received by the master for newconnectionTO
Baseband Specification
number of slots, both the master and the slave should return to the previous
substate.
B.1.6 supervisionTO
The supervisionTO is used by both the master and slave to monitor link loss. If
a device does not receive any packets that pass the HEC check and have the
proper LT_ADDR for a period of supervisionTO, it should reset the link. The
supervision timer keeps running in Hold mode, Sniff mode and Park state.
B.1.7 CSB_supervisionTO
B.1.8 synchronization_trainTO
B.1.9 synchronization_scanTO
B.1.10 authenticatedPayloadTO
Baseband Specification
B.1.11 CLK_adj_dragTO
The CLK_adj_dragTO is the minimum amount of time in seconds the drag shall
be suspended when a slave has not responded after the master has dragged
the clock.
Baseband Specification
The three possible AFH operation modes for an AFH capable slave in Park
state, Hold mode, and Sniff mode are the same three AFH operation modes
used during CONNECTION state:
• Enabled (using the same AHS as slaves in the CONNECTION state)
• Enabled (using AHS(79))
• Disabled
The master may place an AFH capable slave in any of the three AFH operating
modes.
A master that has multiple slaves with non-overlapping “wake” times (e.g.
slaves in sniff mode with different timing parameters) may keep them enabled
on the same adaptation provided that its scheduling of the AFH_Instant allows
enough time to update them all.
This timing is summarized in the figure below. In this example the master
decides that a hop sequence adaptation is required. However it cannot
schedule an AFH_Instant until it has informed its active slave, its slave in hold,
its slave in sniff, and had time to un-park its parked slaves.
Appendix C: Recommendations for AFH Operation in Park, Hold, Sniff and CSB 02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2, Part B] page 222
Baseband Specification
THS
AFH-enabled
sniff mode slave
awake
THS
B Access B Access Baseband B Access
Beacon trains Window Window unpark Window
THS
ENA
AFH-enabled Awake Awake Awake
slave in
hold mode ENA
THS
AFH-enabled Awake
slave not in a
ENA
power-saving
mode
Master
activity
Figure C.1: Timing constraint on AFH_Instant with slaves in park, hold and sniff
Appendix C: Recommendations for AFH Operation in Park, Hold, Sniff and CSB 02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2, Part B] page 223
Baseband Specification
Host Controller
AFH Channel
Map Change
Command Status
Sync
Train
Sync
Train
Modification of the AFH channel map will affect slaves using a different AFH
channel map. Depending on the overlap between a slave’s current AFH
channel map and the current AFH channel map of the master, the slave may
miss some Connectionless Slave Broadcast instants and, in the case of disjoint
or nearly disjoint AFH channel maps, the slave may lose synchronization.
Slaves should monitor the Connectionless Slave Broadcast reception rate and
obtain the current AFH channel map of the master (via the synchronization
train) if degradation exceeds desired thresholds.
Appendix C: Recommendations for AFH Operation in Park, Hold, Sniff and CSB 02 December 2014
Bluetooth SIG Proprietary
Core System Package [BR/EDR Controller volume]
Part C
CONTENTS
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2, Part C] page 226
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2, Part C] page 227
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2, Part C] page 228
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2, Part C] page 229
1 INTRODUCTION
The Link Manager Protocol (LMP) is used to control and negotiate all aspects
of the operation of the Bluetooth connection between two devices. This
includes the set-up and control of logical transports and logical links, and for
control of physical links.
LM LMP LM
LC LC
RF RF
Physical layer
2 GENERAL RULES
The ACL-C has a higher priority than other traffic - see Baseband Specification,
Section 5.6, on page 114.
The error detection and correction capabilities of the baseband ACL logical
transport are generally sufficient for the requirements of the LMP. Therefore
LMP messages do not contain any additional error detection information
beyond what can be realized by means of sanity checks performed on the
contents of LMP messages. Any such checks and protections to overcome
undetected errors in LMP messages is an implementation matter.
2.2 SYNCHRONIZATION
This section is informative and explains why many of the LMP message
sequences are defined as they are.
LMP messages are carried on the ACL-C logical link, which does not
guarantee a time to deliver or acknowledge packets. LMP procedures take
account of this when synchronizing state changes in the two devices. For
example, criteria are defined that specify when a logical transport address
(LT_ADDR) may be re-used after it becomes available due to a device leaving
the piconet or entering the park state. Other LMP procedures, such as hold or
role switch include the Bluetooth clock as a parameter in order to define a fixed
synchronization point. The transitions into and out of sniff mode are protected
with a transition mode.
The LC normally attempts to communicate with each slave no less often than
every Tpoll slots (see Section 4.1.8 on page 262) based on the Tpoll for that
slave.
LC Master LC Slave
Message From LM
Message
Tpoll
Tdeliver Message
Message Message To LM
Ack
Message
Ack
Tack
Message
Ack
Message
Ack Available Ack
Figure 2.1 on page 231 illustrates the fundamental problem. It shows the
transmission of a packet from the master to the slave in conditions of heavy
interference for illustrative purposes. It is obvious that neither side can
determine the value of either Tdeliver or Tack. It is therefore not possible to use
simple messages to identify uniquely the instant at which a state change
occurs in the other device.
The FLOW bit in the packet header is always 1 and is ignored on reception.
If the PDU contains one or more parameters these are placed in the payload
starting immediately after the opcode, i.e. at byte 2 if the PDU has a 7 bit
opcode or byte 3 if the PDU has a 15 bit opcode. The number of bytes used
1. Note the diagram shows the limiting case where the master transmits the message at inter-
vals of Tpoll. In the case of heavy interference improved performance is gained by transmit-
ting more often.
Parameters may have an arrayed type with a fixed number of elements of the
same type; for example, 'u_int8 [5]' designates that the parameter is an array of
5 u_int8 values. In these cases the elements of the array are transferred in
order of index. Where the element size is 1, 2, or 4 bits, the elements are
packed 8, 4, or 2 at a time into each byte with the element with the lowest index
placed in the least significant bit(s).
LSB MSB
T
I OpCode Payload
D
LMP PDU with 7 bit OpCode
LSB MSB
T
Escape Extended
I Payload
OpCode OpCode
D
LMP PDU with 15 bit OpCode
2.4 TRANSACTIONS
The LMP operates in terms of transactions. A transaction is a connected set of
message exchanges which achieve a particular purpose. All PDUs which form
part of the same transaction shall have the same value for the transaction ID
which is stored as part of the first byte of the OpCode (see Section 2.3 on page
231).
The transaction ID is in the least significant bit. It shall be 0 if the PDU forms
part of a transaction that was initiated by the master and 1 if the transaction
was initiated by the slave.
For error handling, see Section 2.5 on page 234, the PDU to be rejected and
LMP_not_accepted or LMP_not_accepted_ext shall form a single transaction.
The time between receiving a baseband packet carrying an LMP PDU and
sending a baseband packet carrying a valid response PDU, according to the
procedure rules in Section 4 on page 249, shall be less than the LMP
Response Timeout. The value of this timeout is 30 seconds. Note that the LMP
Response Timeout is applied not only to sequences described in Section 4 on
page 249, but also to the series of the sequences defined as the transactions in
Section 4 on page 249. It shall also be applied to the series of LMP
transactions that take place during a period when traffic on the ACL-U logical
link is disabled for the duration of the series of LMP transactions, for example
during the enabling of encryption.
The LMP Response Timeout shall restart each time an LMP PDU which
requires a reply is queued for transmission by the baseband.
If the maximum response time, see Section 2.4 on page 232, is exceeded or if
a link loss is detected (see Baseband Specification, Section 3.1, on page 101),
the party that waits for the response shall conclude that the procedure has
terminated unsuccessfully.
When the LM receives a PDU that is not allowed, and the PDU normally
expects a PDU reply, for example LMP_host_connection_req or LMP_unit_key,
the LM shall return PDU LMP_not_accepted or LMP_not_accepted_ext with
the error code LMP PDU Not Allowed (0x24). If the PDU normally doesn’t
expect a reply, for example LMP_sres or LMP_temp_key, the PDU will be
ignored.
Since LMP PDUs are not interpreted in real time, collision situations can occur
where both LMs initiate the same procedure and both cannot be completed. In
this situation, the master shall reject the slave-initiated procedure by sending
LMP_not_accepted or LMP_not_accepted_ext with the error code LMP Error
Transaction Collision (0x23). The master-initiated procedure shall then be
completed.
Collision situations can also occur where both LMs initiate different procedures
and both cannot be completed. In this situation, the master shall reject the
slave-initiated procedure by sending LMP_not_accepted or
LMP_not_accepted_ext with the error code Different Transaction Collision
(0x2A). The master-initiated procedure shall then be completed.
A B
PDU1
PDU2
PDU3
PDU4
PDU5
M LMP_accepted op code
M LMP_not_accepted op code
error code
3 DEVICE FEATURES
All features added after the 1.1 specification have associated LMP feature bits.
Support of these features may be made “mandatory” by the qualification
process but the LM still considers them to be optional since it must interoperate
with older devices which do not support them.
The LM does not need to be able to transmit a PDU which is optional. Support
of optional PDUs is indicated by a device's features mask. The features mask
can be read (see Section 4.3.4 on page 312). An LM shall not send or be sent
any PDU which is incompatible with the features signalled in its or its peer's
features mask, as detailed in Section 3.2.
Feature Definition
Extended features This feature indicates whether the device is able to support the
extended features mask using the LMP sequences defined in Sec-
tion 4.3.4 on page 312.
Timing accuracy This feature indicates whether the LM supports requests for timing
accuracy using the sequence defined in Section 4.3.1 on page 309.
Enhanced inquiry This feature indicates whether the device is capable of supporting
scan the enhanced inquiry scan mechanism as defined in Baseband
Specification, Section 8.4.1, on page 170. The presence of this fea-
ture has only local meaning and does not imply support for any addi-
tional LMP PDUs or sequences.
Interlaced inquiry This feature indicates whether the device is capable of supporting
scan the interlaced inquiry scan mechanism as defined in Baseband Spec-
ification, Section 8.4.1, on page 170. The presence of this feature
has only local meaning and does not imply support for any additional
LMP PDUs or sequences.
Interlaced page This feature indicates whether the device is capable of supporting
scan the interlaced page scan mechanism as defined in Baseband Specifi-
cation, Section 8.3.1, on page 160. The presence of this feature has
only local meaning and does not imply support for any additional
LMP PDUs or sequences.
Table 3.1: Feature Definitions (Sheet 1 of 8)
Feature Definition
RSSI with inquiry This feature bit shall be set if the "Extended Inquiry Response" fea-
results ture bit is set. This feature indicates whether the device is capable of
reporting the RSSI with inquiry results as defined in Baseband Spec-
ification, Section 8.4.2, on page 171. The presence of this feature
has only local meaning and does not imply support for any additional
LMP PDUs or sequences.
Extended Inquiry This feature indicates whether the device supports extended inquiry
Response response as defined in the Baseband specification. If this bit is set,
the "RSSI with inquiry results" feature bit shall also be set.
Paging parameter This feature indicates whether the LM is capable of supporting the
negotiation signaling of changes in the paging scheme as defined in Section
4.1.9 on page 263.
3 slot packets This feature indicates whether the device supports the transmission
and reception of both DM3 and DH3 packets for the transport of traf-
fic on the ACL-U logical link.
5 slot packets This feature indicates whether the device supports the transmission
and reception of both DM5 and DH5 packets for the transport of traf-
fic on the ACL-U logical link.
Flow control lag This is defined as the total amount of ACL-U data that can be sent
following the receipt of a valid payload header with the payload
header flow bit set to 0 and is in units of 256 bytes. See further in
Baseband Specification, Section 6.6.2, on page 137.
AFH capable slave This feature indicates whether the device is able to support the Adap-
tive Frequency Hopping mechanism as a slave as defined in Base-
band Specification, Section 2.3, on page 78 using the LMP
sequences defined in Section 4.1.4 on page 255.
AFH classification This feature indicates whether the device is able to support the AFH
slave classification mechanism as a slave as defined in Baseband Specifi-
cation, Section 8.6.8, on page 188 using the LMP sequences defined
Section 4.1.5 on page 258.
AFH capable mas- This indicates whether the device is able to support the Adaptive Fre-
ter quency Hopping mechanism as a master as defined in Baseband
Specification, Section 2.3, on page 78 using the LMP sequences
defined in Section 4.1.4 on page 255.
AFH classification This feature indicate whether the device is able to support the AFH
master classification mechanism as a master as defined in Baseband Speci-
fication, Section 8.6.8, on page 188 using the LMP sequences
defined Section 4.1.5 on page 258.
Power control This feature indicates whether the device is capable of adjusting its
transmission power. This feature indicates the ability to receive the
LMP_incr_power and LMP_decr_power PDUs and transmit the
LMP_max_power and LMP_min_power PDUs, using the sequences
defined in Section 4.1.3 on page 251. These sequences may be
used even if the remote device does not support the power control
feature, as long as it supports the Power control requests feature.
Feature Definition
Power control This feature indicates whether the device is capable of determining if
requests the transmit power level of the other device should be adjusted and
will send the LMP_incr_power and LMP_decr_power PDUs to
request the adjustments. It indicates the ability to receive the LMP_-
max_power and LMP_min_power PDUs, using the sequences in
Section 4.1.3 on page 251. These sequences may be used even if
the remote device does not support the RSSI feature, as long as it
supports the power control feature.
Enhanced power This feature indicates whether the device is able to support
control enhanced power control using the LMP sequences as defined in
Section 4.1.3.1 on page 253.
This feature bit shall only be set if the "power control" feature bit (bit
18) is set and if the "power control requests" feature bit (bit 9) is set.
Channel Quality This feature indicates whether the LM is capable of recommending a
Driven Data Rate packet type (or types) depending on the channel quality using the
LMP sequences defined in Section 4.1.7 on page 261.
Encryption This feature shall be supported. This feature indicates whether the
device supports the encryption of packet contents using the
sequence defined in Section 4.2.5 on page 284.
Pause Encryption When this feature bit is enabled on both sides, then the encryption
pause/resume sequences shall be used. If either side does not sup-
port the Pause Encryption feature bit, then the encryption pause/
resume sequences shall not be used.
This feature bit shall be set if the “Secure Connections (Controller
Support)” feature bit is set.
Slot offset This feature indicates whether the LM supports the transfer of the
slot offset using the sequence defined in Section 4.4.1 on page 315.
Role switch This feature indicates whether the device supports the change of
master and slave roles as defined by baseband Section 8.6.5 on
page 182 using the sequence defined in Section 4.4.2 on page 316.
Hold mode This feature indicates whether the device is able to support Hold
mode as defined in baseband Section 8.8 on page 197 using the
LMP sequences defined in Section 4.5.1 on page 319.
Sniff mode This feature indicates whether the device is able to support sniff
mode as defined in baseband Section 8.7 on page 193 using the
LMP sequences defined in Section 4.5.3 on page 329.
Table 3.1: Feature Definitions (Sheet 3 of 8)
Feature Definition
Sniff subrating This feature indicates whether the device is able to support sniff sub-
rating as defined in [PART B] Sniff Subrating on page 195 using the
LMP sequences as defined in Sniff Subrating on page 331.This fea-
ture bit shall be set if the "Sniff mode" feature bit is set.
Park state This feature indicates whether the device is able to support Park
state as defined in baseband Section 8.9 on page 197 using the LMP
sequences defined in Section 4.5.2 on page 322.
SCO link This feature shall indicate whether the device is able to support the
SCO logical transport as defined in Baseband Specification, Section
4.3, on page 104, the HV1 packet defined in Baseband Specification,
Section 6.5.2.1, on page 129 and receiving the DV packet defined in
Baseband Specification, Section 6.5.2.4, on page 129 using the LMP
sequence in Section 4.6.1 on page 333.
HV2 packets This feature indicates whether the device is capable of supporting
the HV2 packet type as defined in baseband Section 6.5.2.2 on page
129 on the SCO logical transport.
HV3 packets This feature indicates whether the device is capable of supporting
the HV3 packet type as defined in baseband Section 6.5.2.3 on page
129 on the SCO logical transport.
μ-law log synchro- This feature indicates whether the device is capable of supporting µ-
nous data Law Log format data as defined in Baseband Specification, Section
9.1, on page 210 on the SCO and eSCO logical transports.
A-law log synchro- This feature indicates whether the device is capable of supporting A-
nous data Law Log format data as defined in Baseband Specification, Section
9.1, on page 210 on the SCO and eSCO logical transports.
CVSD synchro- This feature indicates whether the device is capable of supporting
nous data CVSD format data as defined in Baseband Specification, Section 9.2,
on page 210 on the SCO and eSCO logical transports.
Extended SCO link This feature indicates whether the device is able to support the
eSCO logical transport as defined Baseband Specification, Section
5.5, on page 114 and the EV3 packet defined in Baseband Specifica-
tion, Section 6.5.3.1, on page 130 using the LMP sequences defined
in Section 4.6.2 on page 336.
EV4 packets This feature indicates whether the device is capable of supporting
the EV4 packet type defined in Baseband Specification, Section
6.5.3.2, on page 130 on the eSCO logical transport.
EV5 packets This feature indicates whether the device is capable of supporting
the EV5 packet type defined in Baseband Specification, Section
6.5.3.3, on page 130 on the eSCO logical transport.
Feature Definition
Enhanced Data This feature indicates whether the device supports the transmission
Rate ACL and reception of 2-DH1 packets for the transport of traffic on the
2 Mb/s mode ACL-U logical link.
Enhanced Data This feature indicates whether the device supports the transmission
Rate ACL and reception of 3-DH1 packets for the transport of traffic on the
3 Mb/s mode ACL-U logical link.
This feature bit shall only be set if the “Enhanced Data Rate ACL 2
Mb/s mode” feature bit is set.
3-slot Enhanced This feature indicates whether the device supports the transmission
Data Rate ACL and reception of three-slot Enhanced Data Rate packets on the ACL-
packets U logical link.
This feature bit shall only be set if the “Enhanced Data Rate ACL 2
Mb/s mode” feature bit is set.
5-slot Enhanced This feature indicates whether the device supports the transmission
Data Rate ACL and reception of 5-slot Enhanced Data Rate packets for the transport
packets of traffic on the ACL-U logical link.
This feature bit shall only be set if the “Enhanced Data Rate ACL 2
Mb/s mode” feature bit is set.
Enhanced Data This feature indicates whether the device supports the transmission
Rate eSCO and reception of 2-EV3 packets for the transport of traffic on the
2 Mb/s mode eSCO logical transport.
Enhanced Data This feature indicates whether the device supports the transmission
Rate eSCO and reception of 3-EV3 packets for the transport of traffic on the
3 Mb/s mode eSCO logical transport.
This feature bit shall only be set if the “Enhanced Data Rate eSCO 2
Mb/s mode” feature bit is set.
3-slot Enhanced This feature indicates whether the device supports the transmission
Data Rate eSCO and reception of 3-slot Enhanced Data Rate packets for the transport
packets of traffic on the eSCO logical transport.
This feature bit shall only be set if the “Enhanced Data Rate eSCO 2
Mb/s mode” feature bit is set.
Erroneous Data This feature indicates whether the device is able to support the Pack-
Reporting et_Status_Flag and the HCI commands "Write Default Erroneous
Data Reporting" and "Read Default Erroneous Data Reporting".
This feature bit may be set if at least one of the "SCO link" or
"Extended SCO link" feature bits are set.
Link Supervision This feature bit indicates whether the device supports the sending
Timeout Changed the HCI Link Supervision Timeout Changed Event to the Host.
Event
Non-flushable This feature indicates that the device supports the capability to cor-
Packet Boundary rectly handle HCI ACL Data Packets with a Packet_Boundary_Flag
Flag value of 00 (Non-Automatically-Flushable packet).
Table 3.1: Feature Definitions (Sheet 5 of 8)
Feature Definition
Secure Simple Pair- This feature indicates whether the Link Manager is capable of sup-
ing (Controller Sup- porting the Secure Simple Pairing, Section 4.2.7, “Secure Simple
port) Pairing,” on page 294.
Secure Simple Pair- This feature indicates whether the Host is capable of supporting
ing (Host Support) Secure Simple Pairing Section 4.2.7, “Secure Simple Pairing,” on
page 294.
If HCI is supported, this bit shall be set if Write Simple Pairing Mode
has been issued to enable the Secure Simple Pairing feature. When
HCI is not supported, this bit may be set using a vendor specific
mechanism,
This bit shall only be set if the Secure Simple Pairing (Controller Sup-
port) bit is set.
Encapsulated PDU This feature indicates whether the device is capable of supporting
the Encapsulated PDU mechanism as defined in Section 4.1.12.1,
“Sending an Encapsulated PDU,” on page 267.
This feature shall be set if Secure Simple Pairing is supported.
Variable Inquiry TX This feature indicates whether the device is capable of setting the TX
Power Level power level for Inquiry.
BR/EDR Not Sup- This feature indicates whether the device does not support BR/EDR.
ported If this feature bit is set, then all other LMP feature bits shall be set to
zero except the LE Supported (Controller) feature bit that shall be set
to one.
LE Supported (Con- This feature indicates whether the Controller supports LE.
troller) The local Host uses this feature bit to determine whether the Control-
ler supports LE.
A remote device does not use this feature bit.
Simultaneous LE This feature indicates that the Controller supports simultaneous LE
and BR/EDR to and BR/EDR links to the same remote device.
Same Device Capa- This bit shall only be set if the LE Supported (Controller) bit is set.
ble (Controller)
The local Host uses this feature bit to determine whether the Control-
ler is capable of supporting simultaneous LE and BR/EDR connec-
tions to a remote device.
A remote device does not use this feature bit.
LE Supported This feature indicates that the Host supports LE.
(Host) This bit shall only be set if the LE Supported (Controller) bit is set on
the local Controller.
The local Host sets this feature bit to indicate to a remote device that
the local device is capable of supporting LE.
A remote Host uses this feature bit to determine whether an LE con-
nection to the peer device is possible.
Feature Definition
Simultaneous LE This feature indicates that the Host supports simultaneous LE and
and BR/EDR to BR/EDR links to the same remote device.
Same Device Capa- The local Host shall set this feature bit to zero.
ble (Host)
A remote Host shall ignore this feature bit.
Connectionless This feature indicates whether the device supports Connectionless
Slave Broadcast - Slave Broadcast as master.
Master Operation
Feature Definition
Generalized This feature indicates whether the device is able to support the gen-
interlaced scan eralized interlaced scan mechanism described in Baseband Specifi-
cation, Section 8.3.1, on page 160 and Section 8.4.1 on page 170.
The presence of this feature has only local meaning and does not
imply support for any additional LMP PDUs or sequences.
Coarse Clock This feature indicates whether the device is able to support coarse
Adjustment clock adjustments using the LMP sequences as defined in Section
4.1.14 on page 270.
This feature bit shall only be set if the “AFH capable master” (bit 43)
and “AFH capable slave” (bit 35) feature bits are set.
0 3 slot packets 0 0
1 5 slot packets 0 1
2 Encryption 0 2
3 Slot offset 0 3
4 Timing accuracy 0 4
5 Role switch 0 5
6 Hold mode 0 6
7 Sniff mode 0 7
8 Park state 1 0
9 Power control requests 1 1
13 HV3 packets 1 5
14 μ-law log synchronous data 1 6
15 A-law log synchronous data 1 7
32 EV4 packets 4 0
33 EV5 packets 4 1
34 Reserved 4 2
52 Encapsulated PDU 6 4
53 Erroneous Data Reporting 6 5
54 Non-flushable Packet Boundary Flag 6 6
55 Reserved 6 7
56 Link Supervision Timeout Changed Event 7 0
Table 3.2: Feature mask definitions (page 0)
60 Reserved 7 4
61 Reserved 7 5
62 Reserved 7 6
63 Extended features 7 7
Table 3.2: Feature mask definitions (page 0)
135 Reserved 0 7
136 Secure Connections (Controller Support) 1 0
137 Ping 1 1
138 Reserved 1 2
139 Train nudging 1 3
Table 3.4: Extended feature mask definition (page 2)
4 PROCEDURE RULES
After the paging procedure, LMP procedures for clock offset request, LMP
version, supported features, name request and detach may then be initiated.
Paging Paged
device device
LMP_host_connection_req
LMP_accepted or LMP_not_accepted
LMP_setup_complete
LMP_setup_complete
When the paging device wishes to create a connection involving layers above
LM, it sends an LMP_host_connection_req PDU. When the other side receives
this message, the host is informed about the incoming connection. The remote
device can accept or reject the connection request by sending an
LMP_accepted PDU or an LMP_not_accepted PDU. Alternatively, if the slave
needs a role switch, see Section 4.4.2 on page 316, it sends an
LMP_slot_offset PDU and LMP_switch_req PDU after it has received an
LMP_host_connection_req PDU. If the role switch fails the LM shall continue
with the creation of the connection unless this cannot be supported due to
limited resources in which case the connection shall be terminated with an
LMP_detach PDU with error code Remote Device Terminated Connection due
to Low Resources (0x14). When the role switch has been successfully
completed, the old slave will reply with an LMP_accepted PDU or an
LMP_not_accepted PDU to the LMP_host_connection_req PDU (with the
transaction ID set to 0).
M LMP_host_connection_req -
M LMP_setup_complete -
Table 4.1: Connection establishment PDU
4.1.2 Detach
The initiating LM shall pause traffic on the ACL-U logical link (see Baseband
Specification, Section 5.3.1, on page 114). The initiating LM then queues the
LMP_detach for transmission and it shall start a timer for 6*Tpoll slots where
Tpoll is the poll interval for the connection. If the initiating LM receives the
baseband acknowledgement before the timer expires it starts a timer for 3*Tpoll
slots. When this timer expires, and if the initiating LM is the master, the
LT_ADDR(s) may be re-used immediately. If the initial timer expires then the
initiating LM drops the link and starts a timer for Tlinksupervisiontimeout slots after
which the LT_ADDR(s) may be re-used if the initiating LM is the master.
When the receiving LM receives the LMP_detach, it shall start a timer for
6*Tpoll slots if it is the master and 3*Tpoll if it is the slave. On timer expiration,
the link shall be detached and, if the receiving LM is the master, the
LT_ADDR(s) may be re-used immediately. If the receiver never receives the
LMP_detach then a link supervision timeout will occur, the link will be
detached, and the LT_ADDR may be re-used immediately.
If at any time during this or any other LMP sequence the Link supervision
timeout expires then the link shall be terminated immediately and the
LT_ADDR(S) may be re-used immediately.
If the connection is in hold mode, the initiating LM shall wait for hold mode to
end before initiating the procedure defined above. If the connection is in sniff
mode or park state, the initiating LM shall perform the procedure to exit sniff
mode or park state before initiating the procedure defined above. If the
procedure to exit sniff mode or park state does not complete within the LMP
response timeout (30 seconds) the procedure defined above shall be initiated
anyway.
Initiating
LM
LM
LMP_detach
If the received signal characteristics differ too much from the preferred value of
a Bluetooth device, it may request an increase or a decrease of the other
device’s transmit power level. A device's transmit power level is a property of
the physical link, and affects all logical transports carried over the physical link.
Power control requests carried over the default ACL-C logical link shall only
affect the physical link associated with the requesting device’s default ACL-C
logical link; they shall not affect the power level used on the physical links to
other slaves.
Two power control mechanisms are specified: legacy power control (see Table
4.3) and enhanced power control (see Table 4.4 and Section 4.1.3.1). A device
that supports enhanced power control shall also support legacy power control.
O(18) LMP_min_power -
Table 4.3: Legacy Power control PDU
The power adjustment requests may be made at any time using the legacy
power control mechanism following a successful baseband paging procedure
and before the Link Manager supported features responses have been
processed. After the Link Manager supported features responses have been
processed, if both devices support enhanced power control (see Section
4.1.3.1) then only enhanced power control shall be used. Otherwise, if either
device supports only the legacy power control mechanism then only legacy
power control shall be used.
If a device does not support power control requests this is indicated in the
supported features list and thus no power control requests shall be sent after
the supported features response has been processed. Prior to this time, a
power control adjustment might be sent and if the recipient does not support
power control it is allowed to send LMP_max_power in response to
LMP_incr_power_req and LMP_min_power in response to
LMP_decr_power_req. Another possibility is to send LMP_not_accepted with
the error code Unsupported LMP Feature (0x1A).
Initiating
LM
LM
LMP_incr_power_req
or
LMP_decr_power_req
Initiating
LM
LM
LMP_incr_power_req
LMP_max_power
Initiating
LM
LM
LMP_decr_power_req
LMP_min_power
Enhanced power control shall only be used when both devices support the
enhanced power control LMP feature. Legacy power control shall not be used
when both devices support the enhanced power control LMP feature.
To adjust the remote device's output power, a device shall send the
LMP_power_control_req PDU with the power_adjustment_request parameter.
The power_adjustment_request parameter may be set to: one step up, one
step down, or all the way to the max power level. The remote device shall
respond with an LMP_power_control_res PDU. The responder shall transmit
the LMP_power_control_res PDU at the new power level. Upon reception of
the LMP_power_control_res PDU, the initiating device should restart any
processes used to determine whether additional power level changes are
required.
Note: See [Vol. 2, Part A] Section 3 on page 37 for requirements on the relative
power levels of different modulation modes.
The not supported value shall be used for each unsupported modulation type.
Initiating
LM
LM
LMP_power_control_req
LMP_power_control_res
When the LMP_set_AFH PDU is received the AFH instant shall be compared
with the current Bluetooth clock value. If it is in the past then the AFH_instant
has passed and the slave shall immediately configure the hop selection kernel
(see Baseband Specification, Section 2.6.3, on page 92) with the new
AFH_mode and AFH_channel_map specified in the LMP_set_AFH PDU. If it is
in the future then a timer shall be started to expire at the AFH instant. When
this timer expires it shall configure the hop selection kernel with the new
AFH_mode and AFH_channel_map.
The master shall not send a new LMP_set_AFH PDU to a slave until it has
received the baseband acknowledgement for any previous LMP_set_AFH
addressed to that slave and the instant has passed.
Role switch while AFH is enabled shall follow the procedures define by
Baseband Specification, Section 8.6.5, on page 182.
Prior to enabling AFH the master LM shall pause traffic on the ACL-U logical
link (see Baseband Specification, Section 5.3.1, on page 114). The master
shall then enable AFH on a physical link by sending the LMP_set_AFH PDU
with AFH_mode set to AFH_enabled, the AFH_channel_map parameter
containing the set of used and unused channels, and an AFH_instant. The LM
shall not calculate the AFH instant until after traffic on the ACL-U logical link
has been stopped. The master considers the physical link to be AFH_enabled
once the baseband acknowledgement has been received and the AFH_instant
has passed. Once the baseband acknowledgement has been received the
master shall restart transmission on the ACL-U logical link.
Master Slave
LM LM
LMP_set_AFH
Prior to disabling AFH the master LM shall pause traffic on the ACL-U logical
link (Baseband Specification, Section 5.3.1, on page 114). The master shall
then disable AFH operation on a physical link by sending the LMP_set_AFH
PDU with AFH_mode set to AFH_disabled and an AFH_instant. The
AFH_channel_map parameter is not valid when AFH_mode is AFH_disabled.
The LM shall not calculate the AFH instant until after traffic on the ACL-U
logical link has been stopped. The master considers the physical link to have
entered AFH_disabled operation once the baseband acknowledgement has
been received and the AFH_instant has passed. Once the baseband
acknowledgement has been received the master shall restart transmission on
the ACL-U logical link.
Master Slave
LM LM
LMP_set_AFH
A master shall update the AFH parameters on a physical link by sending the
LMP_set_AFH PDU with AFH_mode set to AFH_enabled, an AFH_instant and
a new AFH_channel_map. The master shall consider the slave to have the
updated AFH parameters once the baseband acknowledgement has been
received and the AFH_instant has passed.
Master Slave
LM LM
LMP_set_AFH
The master continues with the LMP signaling, for Park, Hold or Sniff initiation,
once the baseband acknowledgement for the LMP_set_AFH PDU has been
received. Optionally, the master may delay the continuation of this LMP
signaling until after the instant. An AFH_capable_slave device shall support
both of these cases.
The slave shall report pairs of channels as good, bad or unknown. See Table
5.2 on page 358 for the detailed format of the AFH_Channel_Classification
parameter. When one channel in the nth channel pair is good and the other
channel is unknown the nth channel pair shall be reported as good. When one
channel in the nth channel pair is bad and the other is unknown the nth channel
pair shall be reported as bad. It is implementation dependent what to report
when one channel in a channel pair is good and the other is bad.
When a slave has had classification reporting enabled by the master it shall
send the LMP_channel_classification PDU according to the information in the
latest LMP_channel_classification_req PDU. The LMP_channel_classification
PDU shall not be sent if there has been no change in the slave’s channel
classification.
Master Slave
LM LM
LMP_channel_classification_req (enable)
...
LMP_channel_classification
...
LMP_channel_classification
...
LMP_channel_classification_req (disable)
Each physical link has a timer that is used for link supervision. This timer is
used to detect physical link loss caused by devices moving out of range, or
being blocked by interference, a device’s power-down, or other similar failure
cases. Link supervision is specified in Baseband Specification, Section 3.1, on
page 101.
Master Slave
LM LM
LMP_supervision_timeout
The data throughput for a given packet type depends on the quality of the RF
channel. Quality measurements in the receiver of one device can be used to
dynamically control the packet type transmitted from the remote device for
optimization of the data throughput. Device A sends the LMP_auto_rate PDU
once to notify device B to enable this feature. Once enabled, device B may
request packet type(s) that A should transmit by sending the
LMP_preferred_rate PDU. This PDU has a parameter which determines the
preferred error coding (with or without 2/3 FEC) and optionally the preferred
size in slots of the packets. Device A is not required to change to the packet
type specified by this parameter. Device A shall not send a packet that is larger
than max slots (see Section 4.1.10 on page 265) even if the preferred size is
greater than this value.
The data rate parameter includes the preferred rate for Basic Rate and
Enhanced Data Rate modes. When operating in Basic Rate mode, the device
shall use bits 0-2 to determine the preferred data rate. When operating in
Enhanced Data Rate mode, the device shall use bits 3-6 to determine the
preferred data rate. For devices that support Enhanced Data Rate, the
preferred rates for both Basic Rate and Enhanced Data Rate modes shall be
valid at all times.
These PDUs may be sent at any time after connection setup is completed.
O(10) LMP_auto_rate -
O(10) LMP_preferred_rate data rate
Table 4.8: Quality-driven change of the data rate PDU
A LM B LM
LMP_auto_rate
A LM B LM
LMP_preferred_rate
The LM provides QoS capabilities. A poll interval, Tpoll, that is defined as the
maximum time between transmissions from the master to a particular slave on
the ACL logical transport, is used to support bandwidth allocation and latency
control - see Baseband Specification, Section 8.6.1, on page 177 for details.
The poll interval is guaranteed in the active and sniff modes except when there
are collisions with page, page scan, inquiry and inquiry scan, during time
critical LMP sequences in the current piconet and any other piconets in which
the Bluetooth device is a member, and during critical baseband sequences
(such as the page response, initial connection state until the first POLL, and
master slave switch). These PDUs may be sent at any time after connection
setup is completed.
Master and slave negotiate the number of repetitions for broadcast packets
(NBC), see Baseband Specification, Section 7.6.5, on page 157.
The master notifies the slave of the new poll interval and NBC by sending the
LMP_quality_of_service PDU. The slave cannot reject the notification.
Master Slave
LM LM
LMP_quality_of_service
Either the master or the slave may request a new poll interval and NBC by
sending an LMP_quality_of_service_req PDU. The parameter NBC is
meaningful only when it is sent by a master to a slave. For transmission of
LMP_quality_of_service_req PDUs from a slave, this parameter shall be
ignored by the master. The request can be accepted or rejected. This allows
the master and slave to dynamically negotiate the quality of service as needed.
The selected poll interval by the slave shall be less than or equal to the
specified Access Latency for the outgoing traffic of the ACL link (see L2CAP
Quality of Service (QoS) Option [Vol. 3, Part A] Section 5.3 on page 92).
Initiating
LM
LM
LMP_quality_of_service_req
LMP_accepted
Initiating
LM
LM
LMP_quality_of_service_req
LMP_not_accepted
LMP provides a means to negotiate the paging scheme parameters that are
used the next time a device is paged.
This procedure is initiated from device A and negotiates the paging scheme
used when device A pages device B. Device A proposes a paging scheme
including the parameters for this scheme and device B can accept or reject. On
rejection the old setting shall not be changed. A request to switch to a reserved
paging scheme shall be rejected.
A LM B LM
LMP_page_mode_req
LMP_accepted or LMP_not_accepted
This procedure is initiated from device A and negotiates the paging scheme
and paging scheme settings used when device B pages device A. Device A
proposes a paging scheme and paging scheme settings and device B may
accept or reject. On reject the old setting is not changed. A request specifying
the mandatory scheme shall be accepted. A request specifying a non-
mandatory scheme shall be rejected. This procedure should be used when
device A changes its paging scheme settings. A slave should also send this
message to the master after connection establishment, to inform the master of
the slave's current paging scheme and paging scheme settings.
A LM B LM
LMP_page_scan_mode_req
LMP_accepted or LMP_not_accepted
The number of consecutive slots used by a device on an ACL-U logical link can
be limited. It does not affect traffic on the eSCO links where the packet sizes
are defined as part of link setup. A device allows the remote device to use a
maximum number of slots by sending the PDU LMP_max_slot providing max
slots as parameter. Each device can request to use a maximal number of slots
by sending the PDU LMP_max_slot_req providing max slots as parameter.
After a new connection, as a result of page, page scan role switch or unpark,
the default value is 1 slot. These PDUs can be sent at any time after
connection setup is completed.
Initiating
LM
LM
LMP_max_slot
Sequence 18: Device allows Remote Device to use a maximum number of slots
Initiating
LM
LM
LMP_max_slot_req
LMP_accepted
Sequence 19: Device requests a maximum number of slots. Remote Device accepts
Initiating
LM
LM
LMP_max_slot_req
LMP_not_accepted
Sequence 20: Device requests a maximum number of slots. Remote Device rejects
A device may change the packet type table, ptt, to select which if any of the
packets and optional modulation modes are to be used on an ACL logical
transport.
Either the master or the slave may request a new packet type table and
therefore the packets and modulation mode to be used on this ACL link. After a
new baseband connection, as a result of page or page scan, the default value
for ptt shall be 0.
The change of the modulation mode for an ACL logical transport shall not
affect the packet and packet types used for an associated SCO logical
transport on the same LT_ADDR.
Note: Enhanced Data Rate eSCO links are negotiated using the LMP eSCO
link_req as described in section 4.6.2.
Before changing the packet type table, the initiator shall finalize the
transmission of the current ACL packet with ACL-U information and shall stop
ACL-U transmissions. It shall then send the LMP_packet_type_table_req PDU.
If the receiver accepts the change, then it shall finalize the transmission of the
current ACL packet with ACL-U information and shall stop ACL-U
transmissions, it shall change to the new packet type table and shall respond
with an LMP_accepted_ext PDU. When it receives the baseband level
acknowledgement for the LMP_accepted_ext PDU it shall restart ACL-U
transmissions.
LM-A LM-B
LMP_packet_type_table_req
LMP_not_accepted_ext
LM-A LM-B
LMP_packet_type_table_req
LMP_accepted_ext
Some transactions require sending LMP payload data that is longer than 16
octets. To enable a link manager to send a large PDU, an encapsulated LMP
PDU is defined. An encapsulated LMP PDU is composed of a minimum of two
LMP messages, a header PDU and one or more payload PDUs.
Initiating
LM
LM
LMP_encapsulated_header
LMP_accepted or LMP_not_accepted
LMP_encapsulated_payload
LMP_accepted or LMP_not_accepted
LMP_encapsulated_payload
LMP_accepted or LMP_not_accepted
4.1.13 Ping
When both devices support the Ping feature, a Link Manager may verify the
presence of the remote Link Manager by using the LMP ping mechanism. The
LMP ping mechanism may also be used to verify message integrity on the ACL
logical transport by forcing the remote device to send an ACL packet that
contains a MIC.
Note: Since the LMP_ping_res PDU contains a MIC and will update the packet
counter, the sender of the LMP_ping_req PDU can verify that packets with
earlier packet counter values have not been deliberately suppressed by an
attacker.
O(137) LMP_ping_req
O(137) LMP_ping_res
The initiating link manager sends the LMP_ping_req PDU. The responding link
manager responds with the LMP_ping_res PDU. The initiating link manager
may be a master or slave.
Initiating
LM
LM
LMP_ping_req
LMP_ping_res
The Link Manager shall send an LMP_ping_req PDU when the remote device
has not sent a packet containing a payload protected by a MIC within an
authenticated payload timeout set by the Host (see [Part E] Section 7.3.94 on
page 780). The Link Manager should send an LMP_ping_req PDU in advance
enough of the expiration of the authenticated payload timeout to allow the
remote device reasonable time to respond with an LMP_ping_res PDU before
the timeout expires.
The master may adjust the piconet clock (e.g. to align with an external time
base) by initiating the Coarse Clock Adjustment or Clock Dragging procedures.
A slave may request that the master adjust the piconet clock.
Piconet clock adjustment requests may be made at any time after the Link
Manager supported features responses have been processed.
The coarse clock adjustment procedure shall only be used if all connected
slaves declare support for the Coarse Clock Adjustment feature.
For all devices that may use Coarse Clock Adjustment Recovery Mode (see
[Part B] Section 8.6.10.2 on page 192), the RF channel indices used for the
Synchronization Train (see [Part B] Section 2.6.4.8 on page 97) shall be
marked as unused in the AFH_channel_map for all logical links.
The master may use the clk_adj_period parameter from one or more slaves, in
addition to other scheduling considerations, to select an optimal value of
clk_adj_slots.
The master selects the parameters of the coarse clock adjustment. Some
parameters shall remain the same for every LMP_clk_adj PDU associated with
a given adjustment. These are the number of slots (clk_adj_slots) between 0
and 255, an offset within a slot (clk_adj_us) between –624 µs and 624 µs, a
coarse clock adjustment instant (clk_adj_instant), which is specified in the old
time domain before the instant, and an identifier for the instant (clk_adj_id).
The clk_adj_instant shall be at least 12 slots in the future and no more than 12
hours away. The clk_adj_id shall be different for any two adjacent adjustments
and for any two adjustments whose instants are closer together in time than the
longest Link Supervision Timeout period for any slave. Each LMP_clk_adj PDU
also contains the value of CLK when it is transmitted (clk_adj_clk) and a flag
clk_adj_mode, which shall be set to Before Instant if the LMP_clk_adj PDU is
sent before the instant or to After Instant if the LMP_clk_adj_PDU is sent on or
after the instant.
A master shall not initiate a coarse clock adjustment if there are any
transactions outstanding that involve LMP PDUs containing an instant or timing
control flags including, but not limited to: role switch, adaptive frequency
hopping, SCO, eSCO, sniff, sniff subrating, hold, park, and encryption pause
resume.
A slave shall discard and not acknowledge an LMP_clk_adj PDU with a value
of clk_adj_id that is the same as that in the most recently received
LMP_clk_adj PDU, if any, and any LMP_clk_adj PDU with any parameters
outside the valid range (see Section 5.2).
On receipt of an LMP_clk_adj PDU that passes these checks, the slave shall
reply with an LMP_clk_adj_ack PDU containing the same value of clk_adj_id
as in the LMP_clk_adj PDU and shall change the value of slave_offset, if not
already performed, as described in [Part B] Section 8.6.10.1 on page 190,
either at the adjustment instant or, if that has passed, immediately.
Master LM Slave LM
LMP_clk_adj
LMP_clk_adj_ack
The slave may request a coarse adjustment of the piconet clock by sending the
LMP_clk_adj_req PDU to the master. The LMP_clk_adj_req PDU contains
three parameters: clk_adj_us, clk_adj_slots, and clk_adj_period. The
parameters clk_adj_us and clk_adj_slots have the same meaning as in the
LMP_clk_adj PDU and clk_adj_slots or clk_adj_us shall be non-zero. If non-
zero, the parameter clk_adj_period is an indication to the master that the
request is for any of a set of possible adjustments, all of which are equally
acceptable to the slave. These adjustments are those where the number of
slots is equal to clk_adj_slots + N * clk_adj_period, where N is zero or a
positive integer, and the offset within a slot equals clk_adj_us. For example, if
clk_adj_slots is 18 and clk_adj_period is 48, then the acceptable adjustments
are 18, 66, 114, 162, and 210 slots. A value of zero for clk_adj_period indicates
that an adjustment of any number of slots is equally acceptable to the slave
(that is, the master may ignore the value of clk_adj_slots). A request for a
coarse adjustment shall also update the master’s local record of clk_adj_period
for the slave.
The slave may indicate its preferred clk_adj_period to the master without
requesting a clock adjustment. In this case it shall set clk_adj_slots and
clk_adj_us to zero. Upon receiving an LMP_clk_adj_req PDU with
clk_adj_slots and clk_adj_us set to zero, the master shall respond with
LMP_accepted PDU and update its local record of clk_adj_period for the slave,
but shall not initialize any clock adjustment. The master is not required to honor
a slave’s preferred clk_adj_period when making coarse clock adjustments.
The master may accept the coarse clock adjustment request from the slave by
sending an LMP_accepted_ext PDU. This indicates that the master intends to
carry out a coarse clock adjustment with the requested value of clk_adj_us;
however, the value of clk_adj_slots may be different to that requested and
might not follow the clk_adj_period parameter.
Master LM Slave LM
LMP_clk_adj_req
LMP_accepted_ext
Sequence 26: Master accepts slave request for a coarse clock adjustment
The master may reject the coarse clock adjustment request from the slave by
sending an LMP_not_accepted_ext PDU with the error code Command
Disallowed (0x0C) (see [Part D] Section 2.12 on page 378). The master's
decision not to follow the clk_adj_slots or clk_adj_period parameters does not
constitute a rejection.
The master may implement the coarse clock adjustment request from the slave
by carrying out clock dragging (see [Part B] Section 8.6.10.3 on page 192) to
achieve the requested clock adjustment. If so, it shall send an
LMP_not_accepted_ext PDU with the error code Coarse Clock Adjustment
Rejected but Will Try to Adjust Using Clock Dragging (0x40) (see [Part D]
Section 2.61 on page 385).
Master LM Slave LM
LMP_clk_adj_req
LMP_not_accepted_ext
Sequence 27: Master rejects a slave request for coarse clock adjustment
4.2 SECURITY
4.2.1 Authentication
If the claimant has a link key associated with the verifier, it shall calculate the
response and sends it to the verifier with LMP_sres. The verifier checks the
response. If the response is not correct, the verifier can end the connection by
sending an LMP_detach PDU with the error code Authentication Failure
(0x05), see Section 4.1.2 on page 250.
Verifier Claimant
LM LM
LMP_au_rand
LMP_sres
Note: There can be concurrent requests caused by the master and slave
simultaneously initiating an authentication. The procedures in Section 2.5.1 on
page 235 assures that devices will not have different Authenticated Ciphering
Offset (ACO, see [Part H] Section 6.1 on page 1333) when they calculate the
encryption key.
If the claimant does not have a link key associated with the verifier it shall send
an LMP_not_accepted PDU with the error code PIN or Key Missing (0x06)
after receiving an LMP_au_rand PDU ([Part D] Section 2.6 ).
Verifier Claimant
LM LM
LMP_au_rand
LMP_not_accepted
The scheme described in [Part H] Section 5.1 on page 1332 shall be applied
when an authentication fails. This will prevent an intruder from trying a large
number of keys in a relatively short time.
Both the master and slave LM act as verifier and claimant. The initiator is the
device that sends the LMP_au_rand PDU first.
Initiating LM
Responding LM
(Master)
LMP_au_rand
LMP_au_rand
LMP_sres
LMP_sres
Sequence 30: Secure Authentication. Responder has link key. Initiator is master
Initiating LM
Responding LM
(Slave)
LMP_au_rand
LMP_au_rand
LMP_sres
LMP_sres
Sequence 31: Secure Authentication. Responder has link key. Initiator is slave
In the case where the master and slave both initiate the secure authentication
sequence, the master shall reject the slave’s LMP_au_rand PDU with an
LMP_not_accepted PDU with the error code LMP Error Transaction Collision
(0x23). The slave shall send another LMP_au_rand PDU with transaction ID
set to 0 (master).
4.2.2 Pairing
When two devices do not have a common link key an initialization key (Kinit)
shall be created using either the pairing or Secure Simple Pairing procedures.
When pairing is used, Kinit shall be created based on a PIN, and a random
number and a BD_ADDR. Kinit shall be created as specified in [Part H] Section
6.3 on page 1337. When both devices have calculated Kinit the link key shall be
created, and a mutual authentication is performed. The pairing procedure
starts with a device sending an LMP_in_rand PDU; this device is referred to as
the "initiating LM" or "initiator" in Section 4.2.2.1 on page 277 - Section 4.2.2.5
on page 280. The other device is referred to as the "responding LM" or
"responder". The PDUs used in the pairing procedure are:
M LMP_unit_key key
Table 4.17: Pairing PDUs
When the initiator sends an LMP_in_rand PDU and the responder shall reply
with an LMP_accepted PDU. Both devices shall then calculate Kinit based on
the BD_ADDR of the responder and the procedure continues with creation of
the link key; see Section 4.2.2.4 on page 279.
Initiating Responding
LM LM
LMP_in_rand
LMP_accepted
Sequence 32: Pairing accepted. Responder has a variable PIN. Initiator has a variable or fixed PIN
If the responder has a fixed PIN it shall generate a new random number and
send it back in an LMP_in_rand PDU. If the initiator has a variable PIN it shall
accept the LMP_in_rand PDU and shall respond with an LMP_accepted PDU.
Both sides shall then calculate Kinit based on the last IN_RAND and the
BD_ADDR of the initiator. The procedure continues with creation of the link
key; see Section 4.2.2.4 on page 279.
Initiating Responding
LM LM
LMP_in_rand
LMP_in_rand
LMP_accepted
Sequence 33: Responder has a fixed PIN and initiator has a variable PIN
If the responder has a fixed PIN and the initiator also has a fixed PIN, the
second LMP_in_rand shall be rejected by the initiator sending an
LMP_not_accepted PDU with the error code Pairing not Allowed (0x18).
Initiating Responding
LM LM
LMP_in_rand
LMP_in_rand
LMP_not_accepted
Initiating Responding
LM LM
LMP_in_rand
LMP_not_accepted
When Kinit is calculated in both devices the link key shall be created. This link
key will be used in the authentication between the two devices for all
subsequent connections until it is changed; see Section 4.2.3 on page 280 and
Section 4.2.4 on page 282. The link key created in the pairing procedure will
either be a combination key or one of the device's unit keys. The following rules
shall apply to the selection of the link key:
• if one device sends an LMP_unit_key PDU and the other device sends
LMP_comb_key, the unit key will be the link key.
• if both devices send an LMP_unit_key PDU, the master's unit key will be the
link key.
• if both devices send an LMP_comb_key PDU, the link key shall be
calculated as described in [Part H] Section 3.2 on page 1312.
The content of the LMP_unit_key PDU is the unit key bitwise XORed with Kinit.
The content of the LMP_comb_key PDU is LK_RAND bitwise XORed with Kinit.
Any device configured to use a combination key shall store the link key.
When the new link key has been created mutual authentication shall be
performed to confirm that the same link key has been created in both devices.
After mutual authentication, the initiating device shall pause and immediately
resume encryption to produce a new encryption key. Note that this will cause a
new encryption key to be generated from the ACO created during the mutual
authentication process, and when E0 encryption is used, the random number
sent in the LMP_start_encryption_req PDU which occurs in response to the
resumption of encryption.
Initiating Responding
LM LM
LMP_comb_key or LMP_unit_key
LMP_comb_key or LMP_unit_key
When the authentication after creation of the link key fails because of an
incorrect authentication response, the same scheme as in Section 4.2.1.3 on
page 275 shall be used. This prevents an intruder from trying a large number of
different PINs in a relatively short time.
If the link key is derived from combination keys and the current link is the semi-
permanent link key, the link key can be changed. If the link key is a unit key, the
devices shall go through the pairing procedure in order to change the link key.
The contents of the LMP_comb_key PDU is protected by a bitwise XOR with
the current link key.
Initiating
LM
LM
LMP_comb_key
LMP_comb_key
Initiating
LM
LM
LMP_comb_key
LMP_not_accepted
Sequence 38: Change of the link key not possible since the other device uses a unit key
If the change of link key is successful the new link key shall be stored and the
old link key shall be discarded. The new link key shall be used as link key for all
the following connections between the two devices until the link key is changed
again. The new link key also becomes the current link key. It will remain the
current link key until the link key is changed again, or until a temporary link key
is created, see Section 4.2.4 on page 282.
When the new link key has been created, mutual or secure authentication shall
be performed to confirm that the same link key has been created in both
devices.
The current link key can be a semi-permanent link key or a temporary link key.
It may be changed temporarily, but the change shall only be valid for the
current connection, see [Part H] Section 3.1 on page 1310. Changing to a
temporary link key is necessary if the piconet is to support encrypted
broadcast. The current link key may not be changed before the connection
establishment procedure has completed. This feature is only supported if
broadcast encryption is supported as indicated by the LMP features mask.
O(23) LMP_use_semi_permanent_key -
Table 4.19: Change current link key PDU
The master starts by creating the master key Kmaster as specified in Security
Specification (EQ 4), on page 1317. Then the master shall generate a random
number, RAND, and shall send it to the slave in an LMP_temp_rand PDU. Both
sides then calculate an overlay denoted OVL as OVL= E22(current link key,
RAND, 16). The master shall then send Kmaster protected by a modulo-2
addition with OVL to the slave in an LMP_temp_key PDU. The slave calculates
Kmaster, based on OVL, that becomes the current link key. It shall be the current
link key until the devices fall back to the semi-permanent link key, see Semi-
permanent Link Key Becomes Current Link Key on page 283.
Note: the terminology in this section is the same as used in [Part H] Section
3.2.8 on page 1317.
Master Slave
LM LM
LMP_temp_rand
LMP_temp_key
All sequences described in Section 4.2.4.1 on page 282, including the mutual
authentication after Kmaster has been created, shall form a single transaction.
The transaction ID shall be set to 0.
When the devices have changed to the temporary key, a mutual authentication
shall be made to confirm that the same link key has been created in both
Should the mutual authentication fail at either side, the LM of the verifier should
start the detach procedure. This will allow the procedure to succeed even
though one of the devices may be erroneous.
After the current link key has been changed to Kmaster, this change can be
undone and the semi-permanent link key becomes the current link key again. If
encryption is used on the link, the procedure to go back to the semi-permanent
link key shall be immediately followed by the master stopping encryption using
the procedure described in Section 4.2.5.4 on page 287. Encryption may be
restarted by the master according to the procedures in Encryption Mode on
page 284 subsection 3. This is to assure that encryption with encryption
parameters known by other devices in the piconet is not used when the semi-
permanent link key is the current link key.
Master Slave
LM LM
LMP_use_semi_permanent_key
LMP_accepted
4.2.5 Encryption
If at least one authentication has been performed encryption may be used. Two
encryption mechanisms are defined: E0 encryption (legacy) and AES-CCM
encryption. If both devices support the Secure Connections (Controller
Support) and Secure Connections (Host Support) features, then AES-CCM
shall be used when encryption is enabled. If at least one device does not
support both the Secure Connections (Controller Support) and Secure
Connections (Host Support) features, then E0 shall be used when encryption is
enabled.
In order for the master to use the same encryption parameters for all slaves in
the piconet where E0 encryption would be used it shall issue a temporary key,
Kmaster. The master shall make this key the current link key for all slaves in the
piconet where E0 encryption would be used before encryption is started, see
Section 4.2.4 on page 282. This is required if broadcast packets are to be
encrypted.
O (42) LMP_pause_encryption_req
O (42) LMP_resume_encryption_req
O (136) LMP_pause_encryption_aes_req random number
All sequences described in Section 4.2.5 shall form a single transaction. The
transaction ID from the LMP_encryption_mode_req PDU shall be used for all
start encryption and stop encryption sequences.
The master and the slave must agree upon whether to use encryption
(encryption mode=1 in LMP_encryption_mode_req) or not (encryption
mode=0). If the semi-permanent key is used (Key_Flag=0x00) encryption shall
only apply to point-to-point packets. If the master link key is used
(Key_Flag=0x01) encryption shall apply to both point-to-point packets and
broadcast packets. If master and slave agree on the encryption mode, the
master continues to give more detailed information about the encryption.
If both devices support both the Secure Connections (Controller Support) and
Secure Connections (Host Support) features, setting the encryption mode to 0
shall not be allowed. If a device receives an LMP_encryption_mode PDU with
encryption mode set to 0, it shall respond with an LMP_not_accepted PDU with
error code Encryption Mode Not Allowed (0x25).
The initiating LM shall pause traffic on the ACL-U logical link (see Baseband
Specification, Section 5.3.1, on page 114). The initiating device shall then send
the LMP_encryption_mode_req PDU. If the responding device accepts the
change in encryption mode then it shall complete the transmission of the
current packet on the ACL logical transport and shall then suspend
transmission on the ACL-U logical link. The responding device shall then send
the LMP_accepted PDU.
ACL-U logical link traffic shall only be resumed after the attempt to encrypt or
decrypt the logical transport is completed, i.e. at the end of Sequence 39 (on
failure), 40, 41 or 42.
Initiating
LM
LM
LMP_encryption_mode_req
LMP_accepted or LMP_not_accepted
Note: this section uses the same terms as in [Part H] Section 4.1 on page
1320. The master sends an LMP_encryption_key_size_req PDU including the
suggested key size Lsug, m, that is initially equal to Lmax, m. If Lmin, s ≤ Lsug, m
and the slave supports Lsug, m it shall respond with an LMP_accepted PDU and
Lsug, m shall be used as the key size. If both conditions are not fulfilled the
slave sends back an LMP_encryption_key_size_req PDU including the slave's
suggested key size Lsug, s. This value shall be the slave's largest supported
key size that is less than Lsug, m. Then the master performs the corresponding
test on the slave’s suggestion. This procedure is repeated until a key size
agreement is reached or it becomes clear that no such agreement can be
reached. If an agreement is reached a device sends an LMP_accepted PDU
and the key size in the last LMP_encryption_key_size_req PDU shall be used.
After this, encryption is started; see Section 4.2.5.3 on page 287. If an
agreement is not reached a device sends an LMP_not_accepted PDU with the
error code Unsupported LMP Parameter Value (0x20) and the devices shall not
communicate using encryption.
Master Slave
LM LM
LMP_encryption_key_size_req
LMP_encryption_key_size_req
LMP_encryption_key_size_req
LMP_accepted
Master Slave
LM LM
LMP_encryption_key_size_req
LMP_encryption_key_size_req
LMP_encryption_key_size_req
LMP_not_accepted
To start encryption, the master issues the random number EN_RAND and
calculates the encryption key. See [Part H] Section 3.2.5 on page 1315. The
random number shall be the same for all slaves in the piconet when broadcast
encryption is used. The master then sends an LMP_start_encryption_req PDU,
that includes EN_RAND.
The slave shall calculate the encryption key when this message is received
and shall acknowledge with an LMP_accepted PDU. For E0, the encryption
key shall be calculated using the E3 algorithm (see [Part H] Section 6.4 on
page 1339). For AES-CCM, the encryption key shall be calculated using the h3
algorithm (see [Part H] Section 7.7.6 on page 1357). Note: for AES-CCM, the
EN_RAND is not used when creating the encryption key.
If encryption has been paused, then this sequence shall not be used.
Master Slave
LM LM
LMP_start_encryption_req
LMP_accepted
If encryption has been paused, then this sequence shall not be used.
Master Slave
LM LM
LMP_stop_encryption_req
LMP_accepted
For E0 encryption:
• To pause encryption without disabling encryption, a device shall finalize the
transmission of the current ACL-U data packet and then send an
LMP_pause_encryption_req PDU (with the transaction ID set to the role of
the device at the time the LMP_pause_encryption_req PDU is sent).
If the responding device is a master, then the master device shall finalize the
transmission of the current ACL-U data packet and then respond with an
LMP_stop_encryption_req PDU to the slave.
If the responding device is a slave, then the slave device shall finalize the
transmission of the current ACL-U data packet and then respond with an
Master Slave
LM LM
LMP_pause_encryption_req
LMP_pause_encryption_req
LMP_stop_encryption_req
LMP_accepted
Master Slave
LM LM
LMP_pause_encryption_aes_req
LMP_pause_encryption_req
LMP_stop_encryption_req
LMP_accepted
Master Slave
LM LM
LMP_pause_encryption_req
LMP_stop_encryption_req
LMP_accepted
Master Slave
LM LM
LMP_pause_encryption_aes_req
LMP_stop_encryption_req
LMP_accepted
For E0 encryption:
• The LMP_pause_encryption_req PDU and LMP_stop_encryption_req PDU
shall only be rejected when a transaction collision needs to be resolved.
Note: A device can only restart ACL-U data traffic by resuming encryption
using the procedures in Section 4.2.5.6.
Initiating – Responding –
Master LM Slave LM
LMP_start_encryption_req
LMP_accepted
Initiating – Responding –
Slave LM Master LM
LMP_resume_encryption_req
LMP_start_encryption_req
LMP_accepted
For E0 encryption:
• If the responding device is a slave, then the slave shall calculate the
encryption key and respond with an LMP_accepted PDU.
• If the responding device is a master, then the master shall respond with an
LMP_start_encryption_req PDU. The slave, upon receiving the
LMP_start_encryption_req PDU from the master, shall calculate the
encryption key and respond with an LMP_accepted PDU.
When E0 encryption is used, the Link Manager shall refresh the encryption key
within 228 ticks of the Bluetooth clock from the previous start or resume of
encryption. When AES-CCM encryption is used, the Link Manager shall refresh
the encryption key before the PayloadCounter or dayCounter roll over (at least
236 ticks of the Bluetooth clock from the previous start of encryption). To
refresh the encryption key, the Link Manager shall Pause encryption using the
procedure in Section 4.2.5.5 on page 288 and immediately Resume encryption
using the procedure in Section 4.2.5.6 on page 291.
If the encryption key has not been refreshed before the rollover event, the link
shall be terminated immediately.
O(23) LMP_encryption_key_size_mask_req
The slave shall return a bit mask indicating all broadcast encryption key sizes
supported. The least significant bit shall indicate support for a key size of 1, the
next most significant bit shall indicate support for a key size of 2 and so on up
to a key size of 16. In all cases a bit set to 1 shall indicate support for a key
size; a bit set to 0 shall indicate that the key size is not supported.
Master LM Slave LM
LMP_encryption_key_size_mask_req
LMP_encryption_key_size_mask_res
There are four stages defined in the Secure Simple Pairing LM process:
• IO capabilities exchange
• Public key exchange
• Authentication stage 1
• Authentication stage 2
The devices shall first exchange the IO capabilities to determine the proper
algorithm to be used. Three algorithms have been specified: Numeric
comparison, Passkey entry, Out of band.
Note that the host shall enable Secure Simple Pairing before the LMP Secure
Simple Pairing procedures start.
O(51) LMP_OOB_Failed -
O(51) LMP_keypress_notification Notification Type
O(51) LMP_Passkey_Entry_Failed -
The Link Managers shall use the local and remote IO capabilities to determine
which association model shall be used.
Local Device
Does not have OOB Data No OOB Data Received No OOB Data Received
Does not support
Secure Connections. OOB Data Received OOB Data Received
P-192 OOB Data Available
Remote Device
Initiating
LM
LM
LMP_io_capability_req
LMP_io_capability_res
The master LM shall remain the initiating LM for the remainder of the Secure
Simple Pairing sequences.
Master Slave
LM LM
LMP_io_capability_req
LMP_io_capability_req
LMP_not_accepted_ext (transaction collision)
LMP_io_capability_res
Master Slave
LM LM
LMP_io_capability_req
LMP_io_capability_req
LMP_not_accepted_ext (transaction collision)
LMP_io_capability_res
Since the public key size is longer than the payload body length of a DM1
packet, the exchange shall be done using the LMP LMP_encapsulated_header
and LMP_encapsulated_payload PDUs as defined in Section 4.1.12.
When at least one device does not support Secure Connections, the P-192
curve shall be used for calculating the public and private keys. When both
devices support Secure Connections, the P-256 curve shall be used for
calculating the public and private keys.
The Initiator shall first send its public key, and the Responder shall reply with its
public key.
Initiating
LM
LM
Repeat N Times
LMP_encapsulated_payload
LMP_accepted
Repeat N Times
LMP_encapsulated_payload
LMP_accepted
The device can then start computing its Diffie Hellman Key.
Once public keys have been exchanged, both devices shall generate a random
number.
Initiating
LM
LM
LMP_simple_pairing_confirm
LMP_simple_pairing_number
LMP_accepted
LMP_simple_pairing_number
LMP_accepted
Initiating
LM
LM
LMP_simple_pairing_confirm
LMP_simple_pairing_number
LMP_accepted
LMP_simple_pairing_number
LMP_not_accepted
If the user on the initiating side indicates that the confirm values do not match
(as indicated by the HCI_User_Confirmation_Negative_Reply command) the
initiating LM shall send an LMP_numeric_comparison_failure PDU.
Secure Simple Pairing process shall then be aborted. The Link Managers shall
not disconnect the connection.
Initiating
LM
LM
LMP_numeric_comparison_failed
If the user on the responding side indicates that the confirm values do not
match (as indicated by the HCI_User_Confirmation_Negative_Reply
command) the responding LM shall send an LMP_not_accepted PDU in
response to the LMP_dhkey_check PDU.
Simple Pairing process shall then be aborted. The Link Managers shall not
disconnect the connection.
Initiating
LM
LM
LMP_simple_pairing_confirm
LMP_simple_pairing_number
LMP_accepted
LMP_simple_pairing_number
LMP_accepted
LMP_dhkey_check (authentication stage 2)
LMP_not_accepted
The initiating LM shall start the following procedure after receiving the Passkey
Reply from the host. This procedure shall be repeated 20 times:
Initiating
LM
LM
Repeat 20 times
LMP_simple_pairing_confirm
LMP_simple_pairing_confirm
LMP_simple_pairing_number
LMP_accepted
LMP_simple_pairing_number
LMP_accepted
When this procedure has successfully passed 20 times, the Secure Simple
Pairing process continues with the Authentication step 2 as described in
Authentication stage 2: DHKey Check on page 306.
Secure Simple Pairing procedures shall then be aborted. The Link Managers
shall not disconnect the connection.
Initiating
LM
LM
LMP_simple_pairing_confirm
LMP_simple_pairing_confirm
LMP_simple_pairing_number
LMP_not_accepted
Sequence 62: Authentication Passkey Entry: Commitment check failure on the Responder side
Secure Simple Pairing procedures shall then be aborted. The Link Managers
shall not disconnect the connection.
Initiating
LM
LM
LMP_simple_pairing_confirm
LMP_simple_pairing_confirm
LMP_simple_pairing_number
LMP_accepted
LMP_simple_pairing_number
LMP_not_accepted
Sequence 63: Authentication Passkey Entry: Commitment check failure on the Initiator side
If the initiating side indicates that the passkey was not entered or canceled (as
indicated by the HCI_Passkey_Request_Negative_Reply command) the
initiating LM shall send an LMP_passkey_entry_failed PDU.
Secure Simple Pairing process shall then be aborted. The Link Managers shall
not disconnect the connection.
Initiating
LM
LM
LMP_passkey_entry_failed
If the responding side indicates that the passkey was not entered or canceled
(as indicated by the HCI_Passkey_Request_Negative_Reply command), the
responding LM shall send an LMP_not_accepted PDU in response to the
LMP_simple_pairing_config PDU.
Simple Pairing process shall then be aborted. The Link Managers shall not
disconnect the connection.
Initiating
LM
LM
LMP_simple_pairing_confirm
LMP_not_accepted
A Controller that allows the Host to change its IO capabilities shall send
notifications on key presses to the remote side using the
LMP_keypress_notification PDU when the Host sets the IO capabilities to
KeyboardOnly IO and when Secure Simple Pairing is supported on the Host
and Controller.
Initiating
LM
LM
LMP_keypress_notification
If the commitment check on the initiator is valid, the Initiator shall then generate
a random number (nonce) and send it to the Responder using an
LMP_simple_pairing_number PDU. If the commitment succeeds, the
Responder shall acknowledge by sending an LMP_accepted PDU otherwise it
shall send an LMP_not_accepted PDU. The Responder shall then generate a
random number (nonce) and send it to the Initiator using an
LMP_simple_pairing_number PDU. If the commitment succeeds, the Initiator
shall acknowledge by sending an LMP_accepted PDU otherwise it shall send
an LMP_not_accepted PDU.
Initiating
LM
LM
LMP_simple_pairing_number
LMP_accepted
LMP_simple_pairing_number
LMP_accepted
When these operations have been passed successfully, Secure Simple Pairing
procedures continue with Authentication step 2 as described in Authentication
stage 2: DHKey Check on page 306.
If the commitment received OOB from the host is not equal to the calculated
commitment, the Responder shall send an LMP_not_accepted PDU with
reason "Authentication Failure" in response to LMP_simple_pairing_number
PDU.
Secure Simple Pairing process shall then be aborted. The Link Managers shall
not disconnect the connection.
Initiating
LM
LM
LMP_simple_pairing_number
LMP_not_accepted
Sequence 68: Authentication stage 1 OOB: Commitment check failure on the Responder side
If the commitment received OOB from the host is not equal to the calculated
commitment, the Initiator shall send an LMP_not_accepted PDU with reason
"Authentication Failure" in response to LMP_simple_pairing_number PDU.
Secure Simple Pairing process shall then be aborted. The Link Managers shall
not disconnect the connection.
Initiating
LM
LM
LMP_simple_pairing_number
LMP_accepted
LMP_simple_pairing_number
LMP_not_accepted
Sequence 69: Authentication stage 1 OOB: Commitment check failure on the Initiator side
If the Host on the initiating side does not have out-of-band information the
Initiator shall send an LMP_oob_failed PDU.
Simple Pairing process shall then be aborted. The Link Managers shall not
disconnect the connection.
Initiating
LM
LM
LMP_oob_failed
Sequence 70: Authentication stage 1 OOB: OOB information not available on the Initiator side
At this stage, both devices compute new confirmation values based on Diffie-
Hellman key and previously exchanged information according to Section 7.7.4,
“The Simple Pairing Check Function f3,” on page 1354.
At this point, both devices shall compute the link key according to
Section 7.7.3, “The Simple Pairing Key Derivation Function f2,” on page 1353.
If at least one device does not support both the Secure Connections (Controller
Support) and the Secure Connections (Host Support) features, the Initiator
shall then start standard mutual authentication as described in Section 4.2.1.1
If both devices support both the Secure Connections (Controller Support) and
the Secure Connections (Host Support) features, the Initiator shall then start
secure authentication as described in Section 4.2.1.4.
Initiating
LM
LM
LMP_DHKey_check
LMP_accepted
LMP_DHKey_check
LMP_accepted
If the confirmation value received via LMP by the Responder is not equal to the
one it has calculated according to Section 7.7.4 on page 1354, the Responder
shall send an LMP_not_accepted PDU with reason "Authentication Failure".
Secure Simple Pairing procedures shall then be aborted. The Link Managers
shall not disconnect the connection.
Initiating
LM
LM
LMP_DHKey_check
LMP_not_accepted
If the confirmation value received via LMP by the Initiator is not equal to the
one it has calculated according to Section 7.7.4 on page 1354, the Initiator
shall send an LMP_not_accepted PDU with reason "Authentication Failure".
Secure Simple Pairing procedures shall then be aborted. The Link Managers
shall not disconnect the connection.
Initiating
LM
LM
LMP_DHKey_check
LMP_accepted
LMP_DHKey_check
LMP_not_accepted
LMP supports requests for the timing accuracy. This information can be used to
minimize the scan window during piconet physical channel re-synchronization
(see Baseband Specification, Section 2.2.5.2, on page 77). The timing
accuracy parameters returned are the long term drift measured in ppm and the
long term jitter measured in µs of the worst case clock used. These parameters
are fixed for a certain device and shall be identical when requested several
times. Reported time accuracy shall not include changes caused by performing
Piconet Clock Adjustment. If timing accuracy information has not been
received from the remote device, the worst-case values (drift=250ppm and
jitter=10µs) shall be used.
O(4) LMP_timing_accuracy_req -
O(4) LMP_timing_accuracy_res drift
jitter
Table 4.24: Request limited timing PDU
Initiating
LM
LM
LMP_timing_accuracy_req
LMP_timing_accuracy_res
Initiating
LM
LM
LMP_timing_accuracy_req
LMP_not_accepted
Sequence 75: The requested device does not support timing accuracy information
The clock offset can be used to speed up the paging time the next time the
same device is paged. The master can request the clock offset at anytime
following a successful baseband paging procedure (i.e., before, during or after
connection setup). The clock offset shall be defined by the following equation:
M LMP_clkoffset_req -
M LMP_clkoffset_res clock offset
Table 4.25: PDUs used for clock offset request.
Master Slave
LM LM
LMP_clkoffset_req
LMP_clkoffset_res
M LMP_version_req VersNr
CompId
SubVersNr
M LMP_version_res VersNr
CompId
SubVersNr
Initiating
LM
LM
LMP_version_req
LMP_version_res
The number of features bits required will in the future exceed the size of a
single page of features. An extended features mask is therefore provided to
allow support for more than 64 features. Support for the extended features
mask is indicated by the presence of the appropriate bit in the LMP features
mask. The LMP_features_req_ext and LMP_features_res_ext PDUs operate
in precisely the same way as the LMP_features_req and LMP_features_res
PDUs except that they allow the various pages of the extended features mask
to be requested. The LMP_features_req_ext may be sent at any time following
the exchange of the LMP_features_req and LMP_features_rsp PDUs.
If the extended features request is not supported then all bits in all extended
features pages for that device shall be assumed to be zero.
M LMP_features_req features
M LMP_features_res features
O(63) LMP_features_req_ext features page
max supported page
extended features
Initiating
LM
LM
LMP_features_req
LMP_features_res
Initiating
LM
LM
LMP_features_req_ext
LMP_features_res_ext
Initiating
LM
LM
LMP_name_req
LMP_name_res
With LMP_slot_offset the information about the difference between the slot
boundaries in different piconets is transmitted. The LMP_slot_offset PDU may
be sent anytime after the baseband paging procedure has completed. This
PDU carries the parameters slot offset and BD_ADDR. The slot offset shall be
the time in microseconds between the start of a master transmission in the
current piconet to the start of the next following master transmission in the
piconet where the BD_ADDR device (normally the slave) is master at the time
that the request is interpreted by the BD_ADDR device.
Master transmissions in
piconet where slave becomes
the master after role switch
Master transmissions in
piconet before role switch
Slot offset in
microseconds
See Section 4.4 on page 315 for the use of LMP_slot_offset in the context of
the role switch. In the case of role switch the BD_ADDR is that of the slave
device.
Initiating
LM
LM
LMP_slot_offset
Since the paging device always becomes the master of the piconet, a switch of
the master slave role is sometimes needed, see Baseband Specification,
Section 8.6.5, on page 182. A role switch may be performed anytime after the
baseband paging procedure has completed.
The LMP_slot_offset shall be sent only if the ACL logical transport is in active
mode. The LMP_switch_req shall be sent only if the ACL logical transport is in
active mode, when encryption is disabled or paused, and all synchronous
logical transports on the same physical link are disabled. Additionally,
LMP_slot_offset or LMP_switch_req shall not be initiated or accepted while a
synchronous logical transport is being negotiated by LM.
The initiating LM shall pause traffic on the ACL-U logical link (see Baseband
Specification, Section 5.3.1, on page 114). If the encryption mode is set to
"encryption" and both devices support pausing encryption, then the initiating
device shall initiate the pause encryption sequence (see Section 4.2.5.5,
“Pause Encryption,” on page 288.) It shall then send an LMP_slot_offset PDU
immediately followed by an LMP_switch_req PDU. If the master accepts the
role switch and encryption is not already paused, it shall pause traffic on the
ACL-U logical link (see Baseband Specification, Section 5.3.1, on page 114)
and respond with an LMP_accepted PDU. When the role switch has been
completed at the baseband level (successfully or not) if encryption was
paused, the device that paused encryption shall initiate the resume encryption
sequence (see Section 4.2.5.6, “Resume Encryption,” on page 291). If
encryption was not paused, both devices shall re-enable transmission on the
ACL-U logical link. If the master rejects the role switch it responds with an
LMP_not_accepted PDU and the slave re-enables transmission on the ACL-U
logical link. The transaction ID for the role switch PDUs in the sequence
(LMP_slot_offset and LMP_switch_req along with the associated
LMP_accepted or LMP_not_accepted) shall be set to 1.
Slave Master
LM LM
LMP_slot_offset
LMP_switch_req
LMP_accepted or LMP_not_accepted
If the master initiates the role switch and if the encryption mode is set to
"encryption" and both devices support pausing encryption, the master device
shall initiate the pause encryption sequence (See [Part C] Section 4.2.5.5 on
page 288), otherwise it shall pause traffic on the ACL-U logical link (see
Baseband Specification, Section 5.3.1, on page 114) and send an
LMP_switch_req PDU. If the slave accepts the role switch and encryption is not
already paused, it shall pause traffic on the ACL-U logical link (see Baseband
Specification, Section 5.3.1, on page 114) and responds with an
LMP_slot_offset PDU immediately followed by an LMP_accepted PDU. When
the role switch has been completed at the baseband (successfully or not) if
encryption was paused, the device that paused encryption shall initiate the
resume encryption sequence (see Section 4.2.5.6, “Resume Encryption,” on
page 291). When AES-CCM encryption is used, the LMs shall calculate a new
encryption key using the h3 algorithm (see [Part H] Section 7.7.6 on page
1357) with the BD_ADDRs for the new master and slave prior to resuming
encryption. If encryption was not paused, both devices re-enable transmission
on the ACL-U logical link. If the slave rejects the role switch it responds with an
LMP_not_accepted PDU and the master re-enables transmission on the ACL-
U logical link. The transaction ID for the role switch PDUs in the sequence
(LMP_slot_offset and LMP_switch_req along with the associated
LMP_accepted or LMP_not_accepted) shall be set to 0.
Master Slave
LM LM
LMP_switch_req
This instant is chosen by the sender of the message and shall be at least
2*Tpoll or 32 (whichever is greater) slots in the future. The switch instant shall
be within 12 hours of the current clock value to avoid clock wrap.
The sender of the LMP_switch_req PDU selects the switch instant and queues
the LMP_switch_req PDU to LC for transmission and starts a timer to expire at
the switch instant. When the timer expires it initiates the mode switch. In the
case of a master initiated switch if the LMP_slot_offset PDU has not been
received by the switch instant the role switch is carried out without an estimate
of the slave's slot offset. If an LMP_not_accepted PDU is received before the
timer expires then the timer is stopped and the role switch shall not be initiated.
When the LMP_switch_req is received the switch instant is compared with the
current master clock value. If it is in the past then the instant has been passed
and an LMP_not_accepted PDU with the error code Instant Passed (0x28)
shall be returned. If it is in the future then an LMP_accepted PDU shall be
returned assuming the role switch is allowed and a timer is started to expire at
the switch instant. When this timer expires the role switch shall be initiated.
After a successful role switch the supervision timeout and poll interval (Tpoll)
shall be set to their default values. The authentication state and the ACO shall
remain unchanged. Adaptive Frequency Hopping shall follow the procedures
described in Baseband Specification, Section 8.6.5, on page 182. The default
value for max_slots shall be used.
The ACL logical transport of a connection between two Bluetooth devices can
be placed in hold mode for a specified hold time. See Baseband Specification,
Section 8.8, on page 197 for details.
The master may force hold mode if there has previously been a request for
hold mode that has been accepted by the slave. The hold time included in the
PDU when the master forces hold mode shall not be longer than any hold time
the slave has previously accepted when there was a request for hold mode.
The master LM shall first pause traffic on the ACL-U logical link (see Baseband
Specification, Section 5.3.1, on page 114). It shall select the hold instant and
queue the LMP_hold PDU to its LC for transmission. It shall then start a timer
to wait until the hold instant occurs. When this timer expires then the
connection shall enter hold mode. If the baseband acknowledgement for the
LMP_hold PDU is not received then the master may enter hold mode, but it
shall not use its low accuracy clock during the hold.
When the slave LM receives an LMP_hold PDU it compares the hold instant
with the current master clock value. If it is in the future then it starts a timer to
expire at this instant and enters hold mode when it expires.
When the master LM exits from Hold mode it re-enables transmission on the
ACL-U logical link.
Master Slave
LM LM
LMP_hold
The slave may force hold mode if there has previously been a request for hold
mode that has been accepted by the master. The hold time included in the
PDU when the slave forces hold mode shall not be longer than any hold time
the master has previously accepted when there was a request for hold mode.
The slave LM shall first complete the transmission of the current packet on the
ACL logical transport and then shall suspend transmission on the ACL-U
logical link. It shall select the hold instant and queue the LMP_hold PDU to its
LC for transmission. It shall then wait for an LMP_hold PDU from the master
acting according to the procedure described in Section 4.5.1.1.
When the master LM receives an LMP_hold PDU it shall pause traffic on the
ACL-U logical link (see Baseband Specification, Section 5.3.1, on page 114). It
shall then inspect the hold instant. If this is less than 6*Tpoll slots in the future it
shall modify the instant so that it is at least 6*Tpoll slots in the future. It shall
then send an LMP_hold PDU using the mechanism described in Section
4.5.1.1.
When the master and slave LMs exit from Hold mode they shall re-enable
transmission on the ACL-U logical link.
Master Slave
LM LM
LMP_hold
LMP_hold
The master or the slave may request to enter hold mode. Upon receipt of the
request, the same request with modified parameters may be returned or the
negotiation may be terminated. If an agreement is seen an LMP_accepted
PDU terminates the negotiation and the ACL link is placed in hold mode. If no
agreement is seen, an LMP_not_accepted PDU with the error code
Unsupported LMP Parameter Value (0x20) terminates the negotiation and hold
mode is not entered.
The initiating LM shall pause traffic on the ACL-U logical link (see Baseband
Specification, Section 5.3.1, on page 114). On receiving an LMP_hold_req
PDU the receiving LM shall complete the transmission of the current packet on
the ACL logical transport and then shall suspend transmission on the ACL-U
logical link.
The LM sending the LMP_hold_req PDU selects the hold instant, that shall be
at least 9*Tpoll slots in the future. If this is a response to a previous
LMP_hold_req PDU and the contained hold instant is at least 9*Tpoll slots in the
future then this shall be used. The LMP_hold_req PDU shall then be queued to
its LC for transmission and a timer shall be started to expire at this instant and
the connection enters hold mode when it expires unless an LMP_not_accepted
or LMP_hold_req PDU is received by its LM before that point. If the LM
receiving LMP_hold_req PDU agrees to enter hold mode it shall return an
LMP_accepted PDU and shall start a timer to expire at the hold instant. When
this timer expires it enters hold mode.
When each LM exits from Hold mode it shall re-enable transmission on the
ACL-U logical link.
Initiating
LM
LM
LMP_hold_req
LMP_hold_req
LMP_hold_req
LMP_accepted or LMP_not_accepted
If a slave does not need to participate in the channel, but should still remain
synchronized to the master, it may be placed in park state. See Baseband
Specification, Section 8.9, on page 197 for details.
Note: To keep a parked slave connected the master shall periodically unpark
and repark the slave if the supervision timeout is not set to zero (see Baseband
Specification, Section 3.1, on page 101).
All PDUs sent from the master to parked slaves are carried on the PSB-C
logical link (LMP link of parked slave broadcast logical transport). These PDUs,
LMP_set_broadcast_scan_window, LMP_modify_beacon,
LMP_unpark_BD_addr_req and LMP_unpark_PM_addr_req, are the only
PDUs that shall be sent to a slave in park state and the only PDUs that shall be
broadcast. To increase reliability for broadcast, the packets are as short as
possible. Therefore the format for these LMP PDUs are somewhat different.
The parameters are not always byte-aligned and the length of the PDUs is
variable.
The master can request park state. The master LM shall pause traffic on the
ACL-U logical link (see Baseband Specification, Section 5.3.1, on page 114)
and then send an LMP_park_req PDU. If the slave agrees to enter park state it
shall pause traffic on the ACL-U logical link (see Baseband Specification,
Section 5.3.1, on page 114). and then respond with an LMP_accepted PDU.
When the slave queues an LMP_accepted PDU it shall start a timer for 6*Tpoll
slots. If the baseband acknowledgement is received before this timer expires it
shall enter park state immediately otherwise it shall enter park state when the
timer expires.
When the master receives an LMP_accepted PDU it shall start a timer for
6*Tpoll slots. When this timer expires the slave is in park state and the
LT_ADDR may be re-used.
Master Slave
LM LM
LMP_park_req
LMP_accepted
If the slave rejects the attempt to enter park state it shall respond with an
LMP_not_accepted PDU and the master shall re-enable transmission on the
ACL-U logical link.
Master Slave
LM LM
LMP_park_req
LMP_not_accepted
The slave can request park state. The slave LM shall pause traffic on the ACL-
U logical link (see Baseband Specification, Section 5.3.1, on page 114) and
then send an LMP_park_req PDU. When sent by the slave, the parameters
PM_ADDR and AR_ADDR are not valid and the other parameters represent
suggested values. If the master accepts the slave's request to enter park state
it shall pause traffic on the ACL-U logical link (see Baseband Specification,
Section 5.3.1, on page 114) and then send an LMP_park_req PDU, where the
parameter values may be different from the values in the PDU sent from the
slave. If the slave can accept these parameter it shall respond with an
LMP_accepted PDU.
When the slave queues an LMP_accepted PDU for transmission it shall start a
timer for 6*Tpoll slots. If the baseband acknowledgement is received before
this timer expires it shall enter park state immediately otherwise it shall enter
park state when the timer expires.
When the master receives an LMP_accepted PDU it shall start a timer for
6*Tpoll slots. When this timer expires the slave is in park state and the
LT_ADDR may be re-used.
If the master never receives the LMP_accepted PDU then a link supervision
timeout will occur.
Master Slave
LM LM
LMP_park_req
LMP_park_req
LMP_accepted
Sequence 89: Slave requests to enter park state and accepts master's beacon parameters
If the master does not agree that the slave enters park state it shall send an
LMP_not_accepted PDU. The slave shall then re-enable transmission on the
ACL-U logical link.
Master Slave
LM LM
LMP_park_req
LMP_not_accepted
If the slave does not accept the parameters in the LMP_park_req PDU sent
from the master it shall respond with an LMP_not_accepted PDU and both
devices shall re-enable transmission on the ACL-U logical link.
Master Slave
LM LM
LMP_park_req
LMP_park_req
LMP_not_accepted
Sequence 91: Slave requests to enter park state, but rejects master's beacon parameters
If more broadcast capacity is needed than the beacon train, the master may
indicate to the slaves that more broadcast information will follow the beacon
train by sending an LMP_set_broadcast_scan_window PDU. This message
shall be sent in a broadcast packet at the beacon slot(s). The scan window
shall start in the beacon instant and shall only be valid for the current beacon.
LMP_set_broadcast_scan_window
When the beacon parameters change the master notifies the parked slaves of
this by sending an LMP_modify_beacon PDU. This PDU shall be sent in a
broadcast packet.
LMP_modify_beacon
The master can unpark one or many slaves by sending a broadcast LMP
message including the PM_ADDR or the BD_ADDR of the device(s) to be
unparked. Broadcast LMP messages are carried on the PSB-C logical link.
See Baseband Specification, Section 8.9.5, on page 202 for further details.
This message also includes the LT_ADDR that the master assigns to the
slave(s). After sending this message, the master shall check the success of the
unpark by polling each unparked slave by sending POLL packets, so that the
slave is granted access to the channel. The unparked slave shall then send a
response with an LMP_accepted PDU. If this message is not received from the
slave within a certain time after the master sent the unpark message, the
unpark failed and the master shall consider the slave as still being in park state.
One PDU is used where the parked device is identified with the PM_ADDR,
and another PDU is used where it is identified with the BD_ADDR. Both
messages have variable length depending on the number of slaves the master
unparks. For each slave the master wishes to unpark an LT_ADDR followed by
the PM_ADDR or BD_ADDR of the device that is assigned this LT_ADDR is
included in the payload. If the slaves are identified with the PM_ADDR a
maximum of 7 slaves can be unparked with the same message. If they are
identified with the BD_ADDR a maximum of 2 slaves can be unparked with the
same message.
LMP_unpark_BD_ADDR_req
LMP_accepted (from 1st unparked slave)
LMP_accepted (from 2nd unparked slave)
LMP_unpark_PM_ADDR_req
LMP_accepted (from 1st unparked slave)
LMP_accepted (from 2nd unparked slave)
To enter sniff mode, master and slave negotiate a sniff interval Tsniff and a sniff
offset, Dsniff, that specifies the timing of the sniff slots. The offset determines
the time of the first sniff slot; after that the sniff slots follow periodically with the
sniff interval Tsniff. To avoid clock wrap-around during the initialization, one of
two options is chosen for the calculation of the first sniff slot. A timing control
flag in the message from the master indicates this. Only bit1 of the timing
control flag is valid.
When the ACL logical transport is in sniff mode the master shall only start a
transmission in the sniff slots. Two parameters control the listening activity in
the slave: the sniff attempt and the sniff timeout. The sniff attempt parameter
determines for how many slots the slave shall listen when the slave is not
treating this as a scatternet link, beginning at the sniff slot, even if it does not
receive a packet with its own LT_ADDR. The sniff timeout parameter
determines for how many additional slots the slave shall listen when the slave
is not treating this as a scatternet link if it continues to receive only packets with
its own LT_ADDR. It is not possible to modify the sniff parameters while the
device is in sniff mode.
Either the master or the slave may request entry to sniff mode. The process is
initiated by sending an LMP_sniff_req PDU containing a set of parameters. The
receiving LM shall then decide whether to reject the attempt by sending an
LMP_not_accepted PDU, to suggest different parameters by replying with an
LMP_sniff_req PDU or to accept the request.
Before the first time that the master sends LMP_sniff_req it shall enter sniff
transition mode. If the master receives or sends an LMP_not_accepted PDU it
shall exit from sniff transition mode. If the master receives an LMP_sniff_req
PDU it shall enter sniff transition mode.
If the master receives an LMP_accepted PDU the master shall exit from sniff
transition mode and enter sniff mode.
Initiating
LM
LM
LMP_sniff_req
LMP_sniff_req
LMP_sniff_req
LMP_accepted or LMP_not_accepted
Sniff mode may be exited by either the master or the slave sending an
LMP_unsniff_req PDU. The requested device shall reply with an
LMP_accepted PDU.
If the master requests an exit from sniff mode it shall enter sniff transition mode
and then send an LMP_unsniff_req PDU. When the slave receives the
LMP_unsniff_req it shall exit from sniff mode and reply with an LMP_accepted
PDU. When the master receives the LMP_accepted PDU it shall exit from sniff
transition mode and enter active mode.
If the slave requests an exit from sniff mode it shall send an LMP_unsniff_req
PDU. When the master receives the LMP_unsniff_req PDU it shall enter sniff
transition mode and then send an LMP_accepted PDU. When the slave
receives the LMP_accepted PDU it shall exit from sniff mode and enter active
mode. When the master receives the baseband acknowledgement for the
LMP_accepted PDU it shall leave sniff transition mode and enter active mode.
Initiating
LM
LM
LMP_unsniff_req
LMP_accepted
Once sniff mode has been started, sniff subrating may be initiated by either
Link Manager.
The sniff subrating instant value shall be used to calculate the first sniff
subrating anchor point. The sniff subrating instant value shall be a maximum of
216 time slots (40.9 seconds) from the current master clock and shall be a sniff
anchor point. The sniff subrating instant value should indicate a clock value in
the future with respect to the clock value when the LMP message is first sent.
The initiating device shall not transition to the new sniff subrating parameters
until the sniff subrating instant has passed and the LMP_sniff_subrating_res
PDU has been received. The non-initiating device shall remain in sniff mode
and shall not transition to the new sniff subrating parameters until after the sniff
subrating instant has passed and the baseband acknowledgement of the
LMP_sniff_subrating_res PDU has been received.
Initiating
LM
LM
LMP_sniff_subrating_req
LMP_sniff_subrating_res
A device shall not send a new LMP_sniff_subrating_req PDU until the previous
sniff subrating transaction has completed and the sniff subrating instant has
passed.
The maximum clock interval between two sniff subrating anchor points shall be
less than the link supervision timeout. If the link supervision timeout needs to
be updated to a shorter value than the clock interval between two sniff
subrating anchor points, the master shall disable sniff subrating, shall send the
LMP_Supervision_Timeout PDU with the new supervision timeout value, and
shall start using the new supervision timeout value after receiving a baseband
ACK for the LMP_Supervision_Timeout PDU. Upon reception of the
LMP_Supervision_Timeout PDU the slave shall disable sniff subrating and
shall start using the new supervision timeout value.
The master shall initiate sniff subrating with the max_sniff_subrate parameter
less than the new supervision timeout. The slave shall respond with the
LMP_sniff_subrating_res PDU with the max_sniff_subrate parameter less than
the new supervision timeout.
Note: When changing the link supervision timeout while sniff subrating is
enabled, refer to Section 4.5.3.3 on page 331.
The SCO logical transport reserves slots separated by the SCO interval, Tsco.
The first slot reserved for the SCO logical transport is defined by Tsco and the
SCO offset, Dsco. See Baseband Specification, Section 8.6.2, on page 177 for
details. A device shall initiate a request for HV2 or HV3 packet type only if the
other device supports it (bits 12, 13) in its features mask. A device shall initiate
CVSD, μ-law or A-law coding or uncoded (transparent) data only if the other
device supports the corresponding feature. To avoid problems with a wrap-
around of the clock during initialization of the SCO logical transport, the timing
control flags parameter is used to indicate how the first SCO slot shall be
calculated. Only bit1 of the timing control flags parameter is valid. The SCO link
is distinguished from all other SCO links by an SCO handle. The SCO handle
zero shall not be used.
SCO handle
timing control flags
Dsco
O(11) LMP_SCO_link_req
Tsco
SCO packet
air mode
SCO handle
O(11) LMP_remove_SCO_link_req
error
Table 4.34: SCO link management PDUs
The slots used for the SCO links are determined by three parameters
controlled by the master: Tsco, Dsco and a flag indicating how the first SCO slot
is calculated. After the first slot, the SCO slots follow periodically at an interval
of Tsco.
If the slave does not accept the SCO link, but is willing to consider another
possible set of SCO parameters, it can indicate what it does not accept in the
error code field of LMP_not_accepted PDU. The master may then issue a new
request with modified parameters.
The SCO handle in the message shall be different from existing SCO link(s).
If the SCO packet type is HV1 the LMP_accepted shall be sent using the DM1
packet.
Master Slave
LM LM
LMP_SCO_link_req
LMP_accepted or LMP_not_accepted
The slave may initiate the establishment of an SCO link. The slave sends an
LMP_SCO_link_req PDU, but the parameters timing control flags and Dsco are
invalid as well as the SCO handle, that shall be zero. If the master is not
capable of establishing an SCO link, it replies with an LMP_not_accepted PDU.
Otherwise it sends back an LMP_SCO_link_req PDU. This message includes
the assigned SCO handle, Dsco and the timing control flags. The master should
try to use the same parameters as in the slave request; if the master cannot
meet that request, it is allowed to use other values. The slave shall then reply
with LMP_accepted or LMP_not_accepted PDU.
If the SCO packet type is HV1 the LMP_accepted shall be sent using the DM1
packet.
Master Slave
LM LM
LMP_SCO_link_req
LMP_not_accepted
Master Slave
LM LM
LMP_SCO_link_req
LMP_SCO_link_req
LMP_accepted or LMP_not_accepted
The master sends an LMP_SCO_link_req PDU, where the SCO handle is the
handle of the SCO link the master wishes to change parameters for. If the slave
accepts the new parameters, it replies with an LMP_accepted PDU and the
SCO link will change to the new parameters. If the slave does not accept the
new parameters, it shall reply with an LMP_not_accepted PDU and the SCO
link is left unchanged. When the slave replies with an LMP_not_accepted PDU
it shall indicate in the error code parameter what it does not accept. The master
may then try to change the SCO link again with modified parameters. The
sequence is the same as in Section 4.6.1.1 on page 333.
The slave sends an LMP_SCO_link_req PDU, where the SCO handle is the
handle of the SCO link to be changed. The parameters timing control flags and
Dsco are not valid in this PDU. If the master does not accept the new
parameters it shall reply with an LMP_not_accepted PDU and the SCO link is
left unchanged. If the master accepts the new parameters it shall reply with an
LMP_SCO_link_req PDU containing the same parameters as in the slave
request. When receiving this message the slave replies with an
LMP_not_accepted PDU if it does not accept the new parameters. The SCO
link is then left unchanged. If the slave accepts the new parameters it replies
with an LMP_accepted PDU and the SCO link will change to the new
parameters. The sequence is the same as in Section 4.6.1.2 on page 334.
Master or slave may remove the SCO link by sending a request including the
SCO handle of the SCO link to be removed and an error code indicating why
the SCO link is removed. The receiving side shall respond with an
LMP_accepted PDU.
Initiating
LM
LM
LMP_remove_SCO_link_req
LMP_accepted
Note that the slave shall use the initialization flag appropriate to the master's
Bluetooth clock. See section 8.6.3, “eSCO,” on page 178.
After an ACL link has been established, one or more extended SCO (eSCO)
links can be set up to the remote device. The eSCO links are similar to SCO
links using timing control flags, an interval TeSCO and an offset DeSCO. Only bit1
of the timing control flags parameter is valid. As opposed to SCO links, eSCO
links have a configurable data rate that may be asymmetric, and can be set up
to provide limited retransmissions of lost or damaged packets inside a
retransmission window of size WeSCO. The DeSCO shall be based on CLK.
eSCO handle
eSCO LT_ADDR
timing control flags
DeSCO
TeSCO
WeSCO
O(31) LMP_eSCO_link_req
eSCO packet type M->S
eSCO packet type S->M
packet length M->S
packet length S->M
air mode
negotiation state
eSCO handle
O(31) LMP_remove_eSCO_link_req
error
The parameters DeSCO, TeSCO, WeSCO, eSCO packet type M->S, eSCO packet
type S->M, packet length M->S, packet length S->M are henceforth referred to
as the negotiable parameters.
Master Slave
LM LM
LMP_eSCO_link_req
LMP_eSCO_link_req
LMP_eSCO_link_req
LMP_accepted_ext or LMP_not_accepted_ext
Master Slave
LM LM
LMP_eSCO_link_req
LMP_eSCO_link_req
LMP_eSCO_link_req
LMP_accepted_ext or LMP_not_accepted_ext
Note that the slave should use the initialization flag appropriate to the master's
Bluetooth clock. See Baseband Specification Section 8.6.3.
Master Slave
LM LM
LMP_eSCO_link_req
LMP_not_accepted_ext
The master or slave may request a renegotiation of the eSCO parameters. The
master or slave shall send an LMP_eSCO_link_req PDU with the eSCO
handle of the eSCO link the device wishes to renegotiate. The remote device
may accept the changed parameters immediately with LMP_accepted_ext
PDU, or the negotiation may be continued with further LMP_eSCO_link_req
PDUs until the master or slave accepts the latest parameters with an
LMP_accepted_ext PDU or terminates the negotiation with an
LMP_not_accepted_ext PDU. In the case of termination with an
LMP_not_accepted_ext PDU, the eSCO link continues on the previously
negotiated parameters.
During re-negotiation, the eSCO LT_ADDR and eSCO handle shall not be re-
negotiated and shall be set to the originally negotiated values. The negotiation
shall use the procedures defined in Section 4.6.2.5 on page 339.
Either the master or slave may remove the eSCO link by sending a request
including the eSCO handle of the eSCO link to be removed and an error code
indicating why the eSCO link is removed. The receiving side shall respond with
an LMP_accepted_ext PDU. The slave shall shut down its eSCO logical
transport before sending its PDU (LMP_remove_eSCO_link_req for slave
initiated removal, LMP_accepted_ext for master initiated). The master shall not
reassign the eSCO LT_ADDR until the end of the removal procedure. If, for
some reason, such as the slave being out of range, the procedure cannot be
completed, the master shall not reassign the eSCO LT_ADDR until the primary
LT_ADDR is available for reuse (supervision timeout).
Initiating
LM
LM
LMP_remove_eSCO_link_req
LMP_accepted_ext
Rule 1: the negotiation_state shall be set to 0 by the initiating LM. After the
initial LMP_eSCO_link_req is sent the negotiation_state shall not be set to 0.
Rule 2: if the bandwidth (defined as 1600 times the packet length in bytes
divided by TeSCO in slots) for either RX or TX or the air_mode cannot be
accepted the device shall send LMP_not_accepted_ext with the appropriate
error code.
Rule 3: Bandwidth and air_mode are not negotiable and shall not be changed
for the duration of the negotiation. Once one side has rejected the negotiation
(with LMP_not_accepted_ext) a new negotiation may be started with different
bandwidth and air_mode parameters.
Rule 6: if the parameters cause both a reserved slot violation and a latency
violation or if the parameters are not supported and a latency violation occurs,
then the device shall set the negotiation_state to 3 (latency violation).
Rule 7: if the parameters will cause a reserved slot violation the device should
propose new parameters that shall not cause a reserved slot violation. In this
case the negotiation_state shall be set to 2. Otherwise the device shall send
LMP_not_accepted_ext.
Rule 8: If the requested parameters are not supported the device should
propose a setting that is supported, and set the negotiation_state to 4. If it is
not possible to find such a parameter set, the device shall send
LMP_not_accepted_ext.
Rule 9: when proposing new parameters for reasons other than a latency
violation, reserved slot violation, or configuration not supported, the
negotiation_state shall be set to 1.
Latency Violation: a latency violation is when the receiving LM cannot setup the
requested eSCO logical transport because the latency (WeSCO+TeSCO +
reserved synchronous slots) is greater than the maximum allowed latency.
Master Slave
LM LM
LMP_test_activate
LMP_accepted
Master Slave
LM LM
LMP_test_activate
LMP_not_accepted
Sequence 108: Activation of test mode fails. Slave is not allowed to enter test mode
A Bluetooth device in test mode shall ignore all LMP commands not related to
control of the test mode. LMP commands dealing with power control and the
request for LMP features (LMP_features_req), and adaptive frequency hopping
(LMP_set_AFH, LMP_channel_classification_req and
LMP_channel_classification) are allowed in test mode; the normal procedures
are also used to test the adaptive power control.
The DUT shall leave the test mode when an LMP_Detach command is
received or an LMP_test_control command is received with test scenario set to
'exit test mode'.
When the DUT has entered test mode, the PDU LMP_test_control PDU can be
sent to the DUT to start a specific test. This PDU is acknowledged with an
LMP_accepted PDU. If a device that is not in test mode receives an
LMP_test_control PDU it responds with an LMP_not_accepted PDU, where
the error code shall be LMP PDU Not Allowed (0x24).
Master Slave
LM LM
LMP_test_control
LMP_accepted
Master Slave
LM LM
LMP_test_control
LMP_not_accepted
Sequence 110: Control of test mode rejected since slave is not in test mode
Table 4.36 lists all LMP messages used for test mode. To ensure that the
contents of LMP_test_control PDU are suitably whitened (important when sent
in transmitter mode), all parameters listed in Table 4.37 are XORed with 0x55
before being sent.
LMP_test_activate 56 m→s
LMP_test_control 57 m→s test scenario 2
hopping mode 3
TX frequency 4
RX frequency 5
power control mode 6
poll period 7
packet type 8
length of test data 9-10
LMP_detach 7 m→s
LMP_accepted 3 m←s
LMP_not_accepted 4 m←s
Table 4.36: LMP messages used for Test Mode
Length
Name (bytes) Type Unit Detailed
Length
Name (bytes) Type Unit Detailed
The control PDU is used for both transmitter and loop back tests. The following
restrictions apply for the parameter settings:
Restrictions Restrictions
Parameter Transmitter Test Loopback Test
TX frequency 0 ≤ k ≤ 78 0 ≤ k ≤ 78
RX frequency same as TX frequency 0 ≤ k ≤ 78
5 SUMMARY
extended op code 2
Escape 1 variable 124 DM1 m↔s
variable 3-?
extended op code 2
Escape 2 variable 125 DM1 m↔s
variable 3-?
extended op code 2
Escape 3 variable 126 DM1 m↔s
variable 3-?
extended op code 2
Escape 4 variable 127 DM1 m↔s
variable 3-?
LMP_accepted 2 3 DM1/DV m ↔ s op code 2
escape op code 3
LMP_accepted_ext 4 127/01 DM1 m↔s
extended op code 4
LMP_au_rand 17 11 DM1 m↔s random number 2-17
LMP_auto_rate 1 35 DM1/DV m ↔ s -
LMP_channel AFH_channel_
12 127/17 DM1 m←s 3 – 12
_classification classification
AFH_reporting
3
_mode
LMP_channel
7 127/16 DM1 m→s
_classification_req AFH_min_interval 4-5
AFH_max_interval 6-7
clk_adj_id 3
clk_adj_instant 4-7
clk_adj_us 8-9
LMP_clk_adj 15 127/5 DM1 m→s
clk_adj_slots 10
clk_adj_mode 11
clk_adj_clk 12-15
Position
Length op Packet Possible in
LMP PDU (bytes) code type direction Contents payload
clk_adj_us 3-4
LMP_clk_adj_req 6 127/7 DM1 m←s clk_adj_slots 5
clk_adj_period 6
LMP_clkoffset_req 1 5 DM1/DV m → s –
LMP_clkoffset_res 3 6 DM1/DV m ← s clock offset 2–3
LMP_comb_key 17 9 DM1 m↔s random number 2-17
LMP_decr_power
2 32 DM1/DV m ↔ s for future use 2
_req
LMP_detach 2 7 DM1/DV m ↔ s error code 2
encapsulated pay-
4
load length
LMP_encapsulated
17 62 DM1 m↔s encapsulated data 2-17
_payload
LMP_encryption
_key_size_mask 1 58 DM1 m→s
_req
LMP_encryption
_key_size 3 59 DM1 m←s key size mask 2-3
_mask_res
LMP_encryption
2 16 DM1/DV m ↔ s key size 2
_key_size_req
LMP_encryption
2 15 DM1/DV m ↔ s encryption mode 2
_mode_req
Position
Length op Packet Possible in
LMP PDU (bytes) code type direction Contents payload
eSCO handle 3
eSCO LT_ADDR 4
timing control flags 5
DeSCO 6
TeSCO 7
WeSCO 8
LMP_eSCO_link_req
(see Note 4) 16 127/12 DM1 m↔ s eSCO packet type
9
M->S
LMP_host
1 51 DM1/DV m ↔ s –
_connection_req
LMP_in_rand 17 8 DM1 m↔s random number 2-17
LMP_incr_power
2 31 DM1/DV m ↔ s for future use 2
_req
Position
Length op Packet Possible in
LMP PDU (bytes) code type direction Contents payload
IO_capabilities 3
OOB Authentica-
LMP_IO 4
5 127/25 DM1 m↔s tion Data
_Capability_req
Authentication_
5
Requirement
IO_capabilities 3
OOB Authentica-
LMP_IO 4
5 127/26 DM1 m↔s tion Data
_Capability_res
Authentication_
5
Requirement
LMP_keypress
3 127/30 DM1 m↔s Notification Type 2
_notification
LMP_max_power 1 33 DM1/DV m ↔ s –
TB 5-6
NB 7
ΔB 8
LMP_modify 11
_beacon or 28 DM1 m→s Daccess 9
(see Note 1) 13
Taccess 10
Nacc-slots 11
Npoll 12
Maccess 13:0-3
name offset 2
LMP_name_res 17 2 DM1 m↔s name length 3
name fragment 4-17
Position
Length op Packet Possible in
LMP PDU (bytes) code type direction Contents payload
op code 2
LMP_not_accepted 3 4 DM1/DV m ↔ s
error code 3
escape op code 3
LMP_not
5 127/02 DM1 m↔s extended op code 4
_accepted_ext
error code 5
LMP_numeric
2 127/27 DM1 m↔s –
_ comparison_failed
paging scheme 2
LMP_page_mode
3 53 DM1/DV m ↔ s paging scheme set-
_req 3
tings
paging scheme 2
LMP_page_scan
3 54 DM1/DV m ↔ s paging scheme set-
_mode_req 3
tings
timing control flags 2
DB 3-4
TB 5-6
NB 7
ΔB 8
PM_ADDR 9
AR_ADDR 10
DBsleep 12
Daccess 13
Taccess 14
Nacc-slots 15
Npoll 16
Maccess 17:0-3
Position
Length op Packet Possible in
LMP PDU (bytes) code type direction Contents payload
LMP_passkey
2 127/28 DM1 m↔s –
_failed
LMP_pause_encryp-
17 66 DM1 m↔s random number 2-17
tion_aes_req
LMP_pause
2 127/23 DM1 m↔s –
_encryption_req
LMP_power power_adjust-
3 127/32 DM1/DV m ↔ s 3
_control_res ment_response
LMP_preferred_rate 2 36 DM1/DV m ↔ s data rate 2
LMP_resume
2 127/24 DM1 m←s –
_encryption_req
SCO handle 2
timing control flags 3
Dsco 4
LMP_SCO_link_req 7 43 DM1/DV m ↔ s
Tsco 5
SCO packet 6
air mode 7
AFH_instant 2-5
LMP_set_AFH 16 60 DM1 m→s AFH_mode 6
AFH_channel_map 7-16
Table 5.1: Coding of the different LM PDUs (Sheet 6 of 10)
Position
Length op Packet Possible in
LMP PDU (bytes) code type direction Contents payload
LMP_Simple
17 63 DM1 m↔s Commitment Value 2-17
_Pairing_Confirm
LMP_Simple
17 64 DM1 m↔s Nonce Value 2-17
_Pairing_Number
slot offset 2-3
LMP_slot_offset 9 52 DM1/DV m ↔ s
BD_ADDR 4-9
timing control flags 2
Dsniff 3-4
min_sniff_mode_ 4-5
LMP_sniff timeout
9 127/21 DM1 m↔s
_subrating_req
sniff_subrating_in- 6-9
stant
max_sniff_subrate 3
min_sniff_mode_
LMP_sniff 4-5
9 127/22 DM1 m↔s timeout
_subrating_res
sniff_subrating_
6-9
instant
authentication
LMP_sres 5 12 DM1/DV m ↔ s 2-5
response
LMP_start
17 17 DM1 m→s random number 2-17
_encryption_req
LMP_stop
1 18 DM1/DV m → s –
_encryption_req
LMP_supervision
3 55 DM1/DV m →s supervision timeout 2-3
_timeout
Position
Length op Packet Possible in
LMP PDU (bytes) code type direction Contents payload
LMP_test_activate 1 56 DM1/DV m → s –
test scenario 2
hopping mode 3
TX frequency 4
RX frequency 5
LMP_test_control 10 57 DM1 m→s
power control mode 6
poll period 7
packet type 8
LMP_timing drift 2
3 48 DM1/DV m ↔ s
_accuracy_res jitter 3
LMP_unit_key 17 10 DM1 m↔s key 2-17
timing control flags 2
DB 3-4
Position
Length op Packet Possible in
LMP PDU (bytes) code type direction Contents payload
PM_ADDR 1st 6
unpark
PM_ADDR 2nd 7
unpark
PM_ADDR 4th 10
unpark
PM_ADDR 6th 12
unpark
PM_ADDR 6th 13
unpark
PM_ADDR 7th 15
unpark
LMP_unsniff_req 1 24 DM1/DV m ↔ s -
LMP_use_semi
1 50 DM1/DV m → s -
_permanent_key
Table 5.1: Coding of the different LM PDUs (Sheet 9 of 10)
Position
Length op Packet Possible in
LMP PDU (bytes) code type direction Contents payload
VersNr 2
LMP_version_req 6 37 DM1/DV m ↔ s CompId 3-4
SubVersNr 5-6
VersNr 2
LMP_version_res 6 38 DM1/DV m ↔ s CompId 3-4
SubVersNr 5-6
When responding to an eSCO link request with a new suggestion for these
parameters, this flag may be set to 1 to indicate that the last received
negotiable parameters are possible, but the new parameters specified in the
response eSCO link request would be preferable, to 2 to indicate that the
last received negotiable parameters are not possible as they cause a
reserved slot violation or to 3 to indicate that the last received negotiable
parameters would cause a latency violation. The flag shall be set to zero in
the initiating LMP_eSCO_link_req.
Length
(bytes)
Mandatory
Name Type Unit Detailed
range
Length
(bytes)
Mandatory
Name Type Unit Detailed
range
Range is 0x0640 to
AFH_min 0xBB80 slots (1 to 30s)
2 u_int16 slots
_interval
Only even values are valid1
0: AFH_disabled
AFH_mode 1 u_int8 - 1: AFH_enabled
2-255: Reserved
0: AFH_reporting_disabled
AFH_reporting
1 u_int8 - 1: AFH_reporting_enabled
_mode
2-255: reserved
0: µ-law log
1: A-law log See Table
air mode 1 u_int8 2: CVSD 5.3 on page
3: transparent data 368
4-255: Reserved
AR_ADDR 1 u_int8
authentication multiple
4
response bytes
0x00:MITM Protection Not
Required – No Bonding
0x01: MITM Protection
Required – No Bonding
0x02: MITM Protection Not
Required – Dedicated
Bonding
0x03: MITM Protection
Authentication
1 u_int8 Required – Dedicated
_Requirements
Bonding
0x04: MITM Protection Not
Required – General Bond-
ing
0x05: MITM Protection
Required – General Bond-
ing
0x06 to 0xFF– Reserved
multiple BD_ADDR of the sending
BD_ADDR 6
bytes device
broadcast scan
2 u_int16 slots
window
Length
(bytes)
Mandatory
Name Type Unit Detailed
range
Length
(bytes)
Mandatory
Name Type Unit Detailed
range
see
CompId 2 u_int16 Bluetooth Assigned Num-
bers)
Confirmation Multiple
16 Little Endian format
value bytes
Daccess 1 u_int8 slots
ΔB 1 u_int8 slots
DBsleep 1 u_int8
Length
(bytes)
Mandatory
Name Type Unit Detailed
range
See Table
Only even values less than
DeSCO 1 u_int8 slots 5.3 on page
TeSCO are valid1
368
drift 1 u_int8 ppm
Only even values less than
DSCO 1 u_int8 slots
TSCO are valid1
Length
(bytes)
Mandatory
Name Type Unit Detailed
range
If the value is
0x00: NULL/POLL 0x00 the
0x07: EV3 POLL packet
0x0C: EV4 shall be used
0x0D: EV5 by the mas-
eSCO packet 0x26: 2-EV3 ter, the NULL
1 u_int8
type 0x2C: 2-EV5 packet shall
0x37: 3-EV3 be used by
0x3D: 3-EV5 the slave.
See Table
Other values are reserved 5.3 on page
368
Length
(bytes)
Mandatory
Name Type Unit Detailed
range
multiple
key 16
bytes
key size 1 u_int8 byte
Bit mask of supported
broadcast encryption key
sizes: least significant bit is
key size mask 2 u_int16
support for length 1, and so
on. The bit shall be one if
the key size is supported.
LT_ADDR 1 u_int4
number of access win-
Maccess 1 u_int4
dows
min_sniff
_mode_timeout
2 u_int16 slots Only even values are valid1
name multiple
14 UTF-8 characters.
fragment bytes
name length 1 u_int8 bytes
NBC 1 u_int8
NBsleep 1 u_int8
Length
(bytes)
Mandatory
Name Type Unit Detailed
range
0: Initiate negotiation
1: the latest received set of
negotiable parameters
were possible but these
parameters are preferred.
2: the latest received set of
negotiable parameters
would cause a reserved
negotiation slot violation.
1 u_int8
state
3: the latest received set of
negotiable parameters
would cause a latency vio-
lation.
4: the latest received set of
of negotiable parameters
are not supported.
Other values are reserved
Muliti-
Nonce Value 16 ple Little Endian Format
bytes
0=passkey entry started
1=passkey digit entered
Notification 2=passkey digit erased
1 U_int8
Value 3=passkey cleared
4=passkey entry completed
5-255: reserved
Npoll 1 u_int8
0: No OOB Authentication
Data received
OOB Authenti-
1 u_int8 1: OOB Authentication
cation Data
Data received
2-255: reserved
op code 1 u_int8
Length
(bytes)
Mandatory
Name Type Unit Detailed
range
PM_ADDR 1 u_int8
0x0006 to
poll interval 2 u_int16 slots Only even values are valid1 0x1000
0: decrement power one
step
1: increment power one
power
step
_adjustment 1 u_int8
2: increase to maximum
_request
power
3-255: reserved for future
use
bit0-1: GFSK
bit2-3: DQPSK
bit4-5: 8DPSK
bit6-7: reserved
power Each 2-bit value is defined
_adjustment 1 u_int8 as follows
_response 0: not supported
1: changed one step, (not
min or max)
2: max power
3: min power
Table 5.2: Parameters in LM PDUs. (Sheet 9 of 11)
Length
(bytes)
Mandatory
Name Type Unit Detailed
range
random multiple
16
number bytes
Reserved for future use –
shall be 0 when transmit-
reserved(n) n u_int8
ted, ignore value when
received
SCO handle 1 u_int8
0: HV1
1: HV2
SCO packet 1 u_int8
2: HV3
3-255: Reserved
slot offset 2 u_int16 µs 0 ≤ slot offset < 1250
received 1 to Tsniff/2
sniff attempt 2 u_int16 slots Number of receive slots
received
sniff timeout 2 u_int16 slots Number of receive slots 0 to 0x0028
TB 2 u_int16 slots
Length
(bytes)
Mandatory
Name Type Unit Detailed
range
Note:
Where a parameter is described as bits N:M of some other value V, the
parameter value in the PDU shall be V shifted right by M bits. Where the space
available for the parameter is greater than that needed (N-M+1 bits), the
parameter value still occupies the entire space and the remaining bits shall be
zero.
For example, if a 16 bit parameter is equal to 0xDEAD and bits 10:6 are stored
in a u_int8, the resulting parameter will be 0x1A.
EV4: 16
EV3: 6
EV5: 16
TeSCO 2-EV3: 6-12 (even)
2-EV5: 16
3-EV3: 6-18 (even)
3-EV5: 16
X, Y format
Bytes 23-0: X co-ordinate
P-192 Public Key 1 1 48
Bytes 47-24: Y co-ordinate
Little Endian Format
X, Y format
Bytes 31-0: X co-ordinate
P-256 Public Key 1 2 64
Bytes 63-32: Y co-ordinate
Little Endian Format
Parameter Value
AFH_mode AFH_disabled
AFH_reporting_mode AFH_reporting_disabled
drift 250
jitter 10
max slots 1
poll interval 40
Table 5.5: Device default values
Error Codes
CONTENTS
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2, Part D] page 372
Error Codes
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2, Part D] page 373
Error Codes
This document lists the various possible error codes. When a command fails,
or an LMP, LL, or AMP message needs to indicate a failure, error codes are
used to indicate the reason for the error. Error codes have a size of one octet.
If an HCI Command that sent a Command Status with the error code ‘Success’
to the Host before processing may find an error during execution then the error
may be reported in the normal completion command for the original command
or in a Command Status event.
Some HCI Commands may generate errors that need to be reported to the
Host, but there is insufficient information to determine how the command would
normally be processed. In this case, two events can be used to indicate this to
the Host, the Command Complete event and Command Status events. Which
of the two events is used is implementation-dependent.
Error Codes
Values marked as “Reserved for Future Use”, can be used in future versions of
the specification. A Host shall consider any error code that it does not explicitly
understand equivalent to the “Unspecified Error (0x1F).”
0x00 Success
0x01 Unknown HCI Command
Error Codes
0x33 Reserved
0x34 Reserved Slot Violation
0x35 Role Switch Failed
Error Codes
Error Codes
Error Codes
Error Codes
Note: An invalid type can be, for example, when an SCO connection handle is
used where an ACL connection handle is required.
Error Codes
Error Codes
Error Codes
Error Codes
Error Codes
Error Codes
CONTENTS
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2, Part E] page 388
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2, Part E] page 389
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2, Part E] page 390
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2, Part E] page 391
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2, Part E] page 392
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2, Part E] page 393
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2, Part E] page 394
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2, Part E] page 395
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2, Part E] page 396
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2, Part E] page 397
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2, Part E] page 398
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2, Part E] page 399
1 INTRODUCTION
A Host may drive a Primary Controller and zero or more AMP Controllers. A
Primary 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 Primary 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 Primary Controller which may be
either an LE only Controller or a BR/EDR/LE Controller.
Bluetooth Host
HCI Driver
HCI HCI
Link
Link Layer AMP PAL
Manager
Link Layer
Baseband Controller AMP MAC & PHY
Controller
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.
Host 1 Host 2
Bluetooth Host Bluetooth Host
User Data
Firmware Firmware
HCI Link Manager AMP PAL AMP PAL Link Manager
HCI Driver HCI HCI Driver
HCI Firmware HCI Firmware
AMP HCI Firmware AMP HCI Firmware
HCI
Physical Bus
Firmware
Physical Physical
PhysicalBus
Card,
Other)
Bus(USB,
Other)
(USB,SDIO,
Firmware
PC
Firmware
Physical Bus (USB, SDIO,
Other) Firmware
Physical Bus (USB, SDIO,
Other) Firmware
Physical Bus (USB,
SDIO, Other) Firmware
Physical Physical Bus
Firmware
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.
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.
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 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 driver passes to the
Controller. This allows the logical interface (HCI) or the Controller to be
upgraded without affecting the transport layer.
The logical HCI definition does not consider the initial discovery of what AMPs
are present in the system.
The upper layers discover the AMP capabilities (see Section 3.3). As seen by
the AMP Manager, each local AMP has a Controller_ID that is used to route the
data and commands to the correct AMP Controller. This identifier is not used in
AMP HCI.
The separate logical HCIs within a system may be on the same physical HCI
transport, on separate physical HCI transports, or any combination. This may
require a layer of multiplexing, which is not defined within this AMP HCI logical
specification.
The logical HCI is not affected by this topology. The logical HCI definition
describes commands and events as seen by a single AMP.
The commands and events are sent between the Host and the Controller(s).
These are grouped into logical groups by function.
Generic Events The generic events can occur due to multiple com-
mands, or events that can occur at any time.
Device Setup The device setup commands are used to place the Con-
troller into a known state.
Controller Flow Control The Controller flow control commands and events are
used to control data flow from the Host to the Controller.
Controller Information The Controller information commands allow the Host to
discover local information about the device.
Controller Configuration The Controller configuration commands and events allow
the global configuration parameters to be configured.
Device Discovery The device discovery commands and events allow a
device to discover other devices in the surrounding area.
Connection Setup The connection setup commands and events allow a
device to make a connection to another device.
Remote Information The remote information commands and events allow
information about a remote device's configuration to be
discovered.
Synchronous Connections The synchronous connection commands and events
allow synchronous connections to be created
Connection State The connection state commands and events allow the
configuration of a link, especially for low power operation.
Piconet Structure The piconet structure commands and events allow the
discovery and reconfiguration of piconet.
Quality of Service The quality of service commands and events allow qual-
ity of service parameters to be specified.
Physical Links The physical link commands and events allow the con-
figuration of a physical link.
Host Flow Control The Host flow control commands and events allow flow
control to be used towards the Host.
Link Information The link information commands and events allow infor-
mation about a link to be read.
Authentication and The authentication and encryption commands and
Encryption events allow authentication of a remote device and then
encryption of the link.
Testing The testing commands and events allow a device to be
placed into test mode.
Connectionless Slave The Connectionless Slave Broadcast commands and
Broadcast events allow setup and teardown of a Connectionless
Slave Broadcast physical link.
Table 3.1: Overview of commands and events
The version information in this section denotes the version number of the
specification in which this command or event is first specified. The Supported
Controllers column denotes the Controller types that support the command: All,
BR/EDR, LE, or AMP, or a comma-separated list of Controller types (e.g. “BR/
EDR, LE”).
Supported
Name Vers. Summary description Controllers
Supported
Name Vers. Summary description Controllers
Supported
Name Vers. Summary description Controllers
Read Data Block Size 3.0 + HS The Read Data Block Size com- BR/EDR, AMP
Command mand returns the maximum size
of the HCI buffers. These buffers
are used by the Controller to buf-
fer data that is to be transmitted.
Number Of Completed 3.0 + HS The Number Of Completed Data BR/EDR, AMP
Data Blocks Event Blocks event is used by the Con-
troller 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 Number of Com-
pleted Data Blocks event was
sent.
Read Flow Control 3.0 + HS The Read Flow Control Mode BR/EDR, AMP
Mode Command command returns the value of the
Flow_Control_Mode configura-
tion parameter supported by this
Controller.
Write Flow Control 3.0 + HS The Write Flow Control Mode BR/EDR, AMP
Mode Command command sets the value of the
Flow_Control_Mode configura-
tion parameter for this Controller.
LE Read Buffer Size 4.0 The LE Read Buffer Size com- LE
Command mand returns the size of the HCI
buffers. These buffers are used
by the LE Controller to buffer data
that is to be transmitted.
Table 3.4: Controller flow control
Supported
Name Vers. Summary description Controllers
Read Local Version 1.1 The Read Local Version Informa- All
Information Command tion command will read the ver-
sion information for the local
Controller.
Read Local Supported 1.2 The Read Local Supported Com- All
Commands Command mands command requests a list
of the supported HCI commands
for the local device.
Read Local Supported 1.1 The Read Local Supported Fea- All
Features Command tures command requests a list of
the supported features for the
local device.
Read Local Extended Fea- 1.2 The Read Local Extended Fea- BR/EDR
tures Command tures command requests a list of
the supported extended features
for the local device
Read BD_ADDR 1.1 The Read BD_ADDR command BR/EDR, LE
Command will read the value for the
BD_ADDR parameter.
Set External Frame CSA3 The Set External Frame Configu- BR/EDR, LE
Configuration Command ration command enables an and AMP
external device to describe a
frame structure to the Controller.
Table 3.5: Controller information
Supported
Name Vers. Summary description Controllers
Set MWS Signaling CSA3 The Set MWS Signaling com- BR/EDR, LE
Command mand enables a MWS device to and AMP
inform the Controller about the
timing parameters for the MWS
coexistence interface.
Set MWS Transport Layer CSA3 The Set MWS Transport Layer BR/EDR, LE
Command command selects the MWS coex- and AMP
istence signaling transport layer in
the Controller.
Get MWS Transport Layer CSA3 The Get MWS Transport Layer BR/EDR, LE
Configuration Command Configuration command reads the and AMP
supported baud rates from the
Controller.
Set MWS Scan Frequency CSA3 The Set MWS Scan Frequency BR/EDR, LE
Table Command Table command specifies the fre- and AMP
quencies represented by the fre-
quency index supplied by the
MWS_SCAN_FREQUENCY sig-
nal.
Set MWS_PATTERN CSA3 The Set MWS_PATTERN Config- BR/EDR, LE
Configuration Command uration command specifies the and AMP
configuration of the pattern indi-
cated over the MWS Coexistence
Transport Layer.
Supported
Name Vers. Summary description Controllers
Read Local Name 1.1 The Read Local Name command BR/EDR
Command provides the ability to read the
stored user-friendly name for the
BR/EDR Controller.
Write Local Name Com- 1.1 The Write Local Name command BR/EDR
mand provides the ability to modify the
user-friendly name for the BR/
EDR Controller.
Read Class of Device 1.1 The Read Class of Device com- BR/EDR
Command mand will read the value for the
Class of Device configuration
parameter, which is used to indi-
cate its capabilities to other
devices.
Write Class of Device 1.1 The Write Class of Device com- BR/EDR
Command mand will write the value for the
Class_of_Device configuration
parameter, which is used to indi-
cate its capabilities to other
devices.
Read Number Of 1.1 The Read Number of Supported BR/EDR
Supported IAC Command IAC command will read the value
for the number of Inquiry Access
Codes (IAC) that the local BR/
EDR Controller can simultane-
ously listen for during an Inquiry
Scan.
Read Current IAC LAP 1.1 The Read Current IAC LAP com- BR/EDR
Command mand 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.
Write Current IAC LAP 1.1 The Write Current IAC LAP com- BR/EDR
Command mand 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.
Table 3.6: Controller configuration (Sheet 1 of 4)
Supported
Name Vers. Summary description Controllers
Read Scan Enable Com- 1.1 The Read Scan Enable com- BR/EDR
mand mand will read the value for the
Scan Enable configuration
parameter, which controls
whether or not the BR/EDR Con-
troller will periodically scan for
page attempts and/or inquiry
requests from other BR/EDR
Controllers.
Write Scan Enable Com- 1.1 The Write Scan Enable com- BR/EDR
mand mand will write the value for the
Scan Enable configuration
parameter, which controls
whether or not the BR/EDR Con-
troller will periodically scan for
page attempts and/or inquiry
requests from other BR/EDR
Controllers.
Write Extended Inquiry 2.1 + EDR The Write Extended Inquiry BR/EDR
Response Command Response command will write
the data that the BR/EDR Con-
troller sends in the extended
inquiry response packet during
inquiry response.
Read Extended Inquiry 2.1 + EDR The Read Extended Inquiry BR/EDR
Response Command Response command will read
the data that the BR/EDR Con-
troller sends in the extended
inquiry response packet during
inquiry response.
Write Default Erroneous 2.1 + EDR The Write Default Erroneous BR/EDR
Data Reporting Command 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 Pack-
et_Status_Flag in HCI Synchro-
nous Data Packets set according
to HCI Synchronous Data Pack-
ets.
Supported
Name Vers. Summary description Controllers
Read Default Erroneous 2.1 + EDR The Read Default Erroneous BR/EDR
Data Reporting Command 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 Pack-
et_Status_Flag in HCI Synchro-
nous Data Packets set according
to HCI Synchronous Data Pack-
ets.
Read Location Data 3.0 + HS The Read Location Data com- AMP
Command mand provides the ability to read
the Location Data parameters
from any stored knowledge of
environment or regulations or
currently in use in the AMP Con-
troller
Write Location Data 3.0 + HS The Write Location Data com- AMP
Command mand is used to tell the Control-
ler any knowledge of
environment or regulations cur-
rently in force, which may affect
the operation of the Controller.
LE Set Advertise Enable 4.0 The LE Set Advertise Enable LE
Command Command will enable or disable
advertising.
LE Set Advertising Data 4.0 The LE Set Advertising Data LE
Command Command will set the data trans-
mitted when advertising.
Supported
Name Vers. Summary description Controllers
Supported
Name Vers. Summary description Controllers
Inquiry Command 1.1 The Inquiry command will cause the BR/EDR
BR/EDR Controller to enter Inquiry
Mode. Inquiry Mode is used to discov-
ery other nearby BR/EDR Controllers.
Inquiry Result Event 1.1 The Inquiry Result event indicates BR/EDR
that a BR/EDR Controller or multiple
BR/EDR Controllers have responded
so far during the current Inquiry pro-
cess.
Inquiry Result with RSSI 1.2 The Inquiry Result with RSSI event BR/EDR
Event indicates that a BR/EDR Controller or
multiple BR/EDR Controllers have
responded so far during the current
Inquiry process.
Extended Inquiry Result 2.1 + The Extended Inquiry Result event BR/EDR
Event EDR indicates that a BR/EDR Controller
has responded with an extended
inquiry response during the current
Inquiry process.
Inquiry Cancel Command 1.1 The Inquiry Cancel command will BR/EDR
cause the BR/EDR Controller to stop
the current Inquiry if the BR/EDR Con-
troller is in Inquiry Mode.
Inquiry Complete Event 1.1 The Inquiry Complete event indicates BR/EDR
that the Inquiry is finished.
Table 3.7: Device discovery (Sheet 1 of 3)
Supported
Name Vers. Summary description Controllers
Periodic Inquiry Mode 1.1 The Periodic Inquiry Mode command BR/EDR
Command is used to configure the BR/EDR Con-
troller to perform an automatic Inquiry
based on a specified period range.
Exit Periodic Inquiry Mode 1.1 The Exit Periodic Inquiry Mode com- BR/EDR
Command mand is used to end the Periodic
Inquiry mode when the local device is
in Periodic Inquiry Mode.
Read Inquiry Scan Activity 1.1 The Read Inquiry Scan Activity com- BR/EDR
Command mand will read the value for Inquiry
Scan Interval and Inquiry Scan Win-
dow 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.
Write Inquiry Scan Activity 1.1 The Write Inquiry Scan Activity com- BR/EDR
Command mand will write the value for Inquiry
Scan Interval and Inquiry Scan Win-
dow 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.
Read Inquiry Scan Type 1.2 The Read Inquiry Scan Type com- BR/EDR
Command mand 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 nor-
mal or interlaced scan.
Write Inquiry Scan Type 1.2 The Write Inquiry Scan Type com- BR/EDR
Command mand 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 nor-
mal or interlaced scan.
Read Inquiry Mode Com- 1.2 The Read Inquiry Mode command is BR/EDR
mand used to read the Inquiry Mode config-
uration parameter of the local BR/
EDR Controller.
Table 3.7: Device discovery (Sheet 2 of 3)
Supported
Name Vers. Summary description Controllers
Write Inquiry Mode 1.2 The Write Inquiry Mode command is BR/EDR
Command used to write the Inquiry Mode config-
uration parameter of the local BR/
EDR Controller.
Read Inquiry Response 2.1 + This command will read the inquiry BR/EDR
Transmit Power Level EDR response Transmit Power level used
Command to transmit the FHS and EIR data
packets. This can be used directly in
the Tx Power Level EIR data type.
Write Inquiry Transmit 2.1 + This command is used to write the BR/EDR
Power Level Command EDR transmit power level used to transmit
the inquiry (ID) data packets.
Write Extended Inquiry 4.1 The Write Extended Inquiry Length BR/EDR
Length Command command is used to write the
Extended Inquiry Length parameter to
the Controller.
LE Direct Advertising 4.2 The LE Direct Advertising Report LE
Report Event event indicates that directed adver-
tisements have been received where
the advertiser is using a resolvable
private address for the InitA field in
the ADV_DIRECT_IND PDU and the
filter policy is set to send this event to
the host.
Table 3.7: Device discovery (Sheet 3 of 3)
Supported
Name Vers. Summary description Controllers
Create Connection Com- 1.1 The Create Connection command will BR/EDR
mand cause the BR/EDR Link Manager to
create an ACL connection to the BR/
EDR Controller with the BD_ADDR
specified by the command parame-
ters.
Connection Request Event 1.1 The Connection Request event is BR/EDR
used to indicate that a new incoming
BR/EDR connection is trying to be
established.
Read Page Timeout Com- 1.1 The Read Page Timeout command BR/EDR
mand 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.
Table 3.8: Connection setup (Sheet 1 of 6)
Supported
Name Vers. Summary description Controllers
Write Page Timeout Com- 1.1 The Write Page Timeout command BR/EDR
mand will write the value for the Page Reply
Timeout configuration parameter,
which allows the BR/EDR Controller
to define the amount of time a con-
nection request will wait for the
remote device to respond before the
local device returns a connection fail-
ure.
Read Page Scan Activity 1.1 The Read Page Scan Activity com- BR/EDR
Command mand 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 dura-
tion of the page scan.
Write Page Scan Activity 1.1 The Write Page Scan Activity com- BR/EDR
Command mand 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 dura-
tion of the page scan.
Page Scan Repetition 1.1 The Page Scan Repetition Mode BR/EDR
Mode Change Event Change event indicates that the con-
nected remote BR/EDR Controller
with the specified Connection_Han-
dle has successfully changed the
Page_Scan_Repetition_Mode (SR)."
Read Page Scan Type 1.2 The Read Page Scan Type command BR/EDR
Command is used to read the page scan type of
the local BR/EDR Controller. The
Page Scan Type configuration param-
eter can set the page scan to either
normal or interlaced scan.
Write Page Scan Type 1.2 The Write Page Scan Type command BR/EDR
Command is used to write the page scan type of
the local BR/EDR Controller. The
Page Scan Type configuration param-
eter can set the page scan to either
normal or interlaced scan.
Table 3.8: Connection setup (Sheet 2 of 6)
Supported
Name Vers. Summary description Controllers
Read Connection Accept 1.1 The Read Connection Accept Timeout BR/EDR,
Timeout Command command will read the value for the AMP
Connection Accept Timeout configu-
ration parameter, which allows the
Controller to automatically deny a
connection request after a specified
period has occurred, and to refuse a
new connection.
Read Hold Mode Activity 1.1 The Read Hold Mode Activity com- BR/EDR
Command mand is used to read which activities
should be suspended when the BR/
EDR Controller is in Hold Mode.
Write Hold Mode Activity 1.1 The Write Hold Mode Activity com- BR/EDR
Command mand is used to write which activities
should be suspended when the BR/
EDR Controller is in Hold Mode.
Write Connection Accept 1.1 The Write Connection Accept Timeout BR/EDR,
Timeout Command command will write the value for the AMP
Connection Accept Timeout configu-
ration parameter, which allows the
Controller to automatically deny a
connection request after a specified
period has occurred, and to refuse a
new connection.
Accept Logical Link 3.0 + The Accept Logical Command will AMP
Command HS cause the AMP Controller to create a
logical link to the remote AMP Con-
troller identified by the physical link
handle.
Accept Physical Link 3.0 + The Accept Physical Link command AMP
Command HS will cause the AMP Controller to
accept a Physical Link request from
the initiating BR/EDR Controller 's
AMP Controller specified by the com-
mand parameters.
Create Logical Link 3.0 + The Create Logical Command will AMP
Command HS cause the AMP Controller to create a
logical link to the remote AMP Con-
troller identified by the physical link
handle.
Create Physical Link 3.0 + The Create Physical Link command AMP
Command HS will cause the AMP Controller to initi-
ate a Physical Link creation to the
remote BR/EDR Controller's AMP
Controller specified by the command
parameters.
Supported
Name Vers. Summary description Controllers
Disconnect Logical Link 3.0 + The Disconnect Logical Link com- AMP
Command HS mand is used to terminate the desig-
nated logical link.
Disconnection Logical Link 3.0 + The Disconnection Logical Link Com- AMP
Complete Event HS plete event occurs when an AMP Log-
ical Link has been terminated.
Disconnect Physical Link 3.0 + The Disconnect Physical Link com- AMP
Command HS mand is used to terminate the desig-
nated physical link (during or after
creation).
Logical Link Complete 3.0 + The Logical Link Complete event indi- AMP
Event HS cates to both of the Hosts forming the
connection that a new AMP Logical
Link has been established.
Physical Link Complete 3.0 + The Physical Link Complete event AMP
Event HS indicates to both of the Hosts forming
the connection that a new AMP Physi-
cal Link has been established.
Physical Link Loss Early 3.0 + The Physical Link Loss Early Warning AMP
Warning Event HS event occurs when a physical link has
indication that the link may be dis-
rupted.
Physical Link Recovery 3.0 + The Physical Link Recovery event AMP
Event HS indicates that whatever interruption
caused an earlier Physical Link Loss
Early Warning event has now been
cleared.
Read Logical Link Accept 3.0 + The Read Logical Link Accept Time- AMP
Timeout Command HS out command will read the value for
the Logical Link Accept Timeout con-
figuration parameter, which allows the
AMP Controller to automatically deny
a Logical Link request after a speci-
fied period has occurred, and to
refuse a new connection.
Table 3.8: Connection setup (Sheet 4 of 6)
Supported
Name Vers. Summary description Controllers
Write Logical Link Accept 3.0 + The Write Logical Link Accept Time- AMP
Timeout Command HS out command will write the value for
the Logical Link Accept Timeout con-
figuration parameter, which allows the
AMP Controller to automatically deny
a connection request after a specified
period has occurred, and to refuse a
new connection.
Channel Selected Event 3.0 + The Channel Selected event indicates AMP
HS to the Host originating the physical
link that the link information data is
available to be read using the Read
Local AMP Assoc command.
LE Connection Complete 4.0 The LE Connection Complete event LE
Event indicates to the Host that a new con-
nection has been created.
LE Create Connection 4.0 The LE Create Connection Cancel LE
Cancel Command Command is used to cancel an ongo-
ing LE Create Connection Command.
LE Create Connection 4.0 The LE Create Connection Com- LE
Command mand is used to create a new connec-
tion.
Slave Page Response Tim- CSA4 The Slave Page Response Timeout BR/EDR
eout Event event indicates to the Host that the
pagerespTO has been exceeded on
the BR/EDR Controller after the Con-
troller responded to an ID packet.
Truncated Page Command CSA4 The Truncated Page command will BR/EDR
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.
Truncated Page Cancel CSA4 The Truncated Page Cancel Com- BR/EDR
Command mand is used to cancel an ongoing
Truncated Page.
Truncated Page Complete CSA4 The Truncated Page Complete event BR/EDR
Event indicates to the Host that a Truncated
Page has completed.
Read Extended Page 4.1 The Read Extended Page Timeout BR/EDR
Timeout Command command is used to read the
Extended Page Timeout parameter
from the Controller.
Table 3.8: Connection setup (Sheet 5 of 6)
Supported
Name Vers. Summary description Controllers
Write Extended Page 4.1 The Write Extended Page Timeout BR/EDR
Timeout Command command is used to write the
Extended Page Timeout parameter to
the Controller.
LE Enhanced Connection 4.2 The LE Enhanced Connection Com- LE
Complete Event plete 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.
Table 3.8: Connection setup (Sheet 6 of 6)
Supported
Name Vers. Summary description Controllers
Remote Name Request 1.1 The Remote Name Request command BR/EDR
Command is used to obtain the user-friendly
name of another BR/EDR Controller.
Remote Name Request 1.2 The Remote Name Request Cancel BR/EDR
Cancel Command command is used to cancel an ongo-
ing Remote Name Request.
Remote Name Request 1.1 The Remote Name Request complete BR/EDR
Complete Event event is used to indicate a remote
name request has been completed.
Read Remote Supported 1.1 The Read Remote Supported Fea- BR/EDR
Features Command tures command requests a list of the
supported features of a remote device.
Read Remote Supported 1.1 The Read Remote Supported Fea- BR/EDR
Features Complete Event tures Complete event is used to indi-
cate the completion of the process of
the Link Manager obtaining the sup-
ported features of the remote BR/EDR
Controller specified by the Connec-
tion_Handle event parameter.
Read Remote Extended 1.2 The Read Remote Extended Features BR/EDR
Features Command command requests a list of the sup-
ported extended features of a remote
device
Table 3.9: Remote information
Supported
Name Vers. Summary description Controllers
Read Remote Extended 1.2 The Read Remote Extended Features BR/EDR
Features Complete Event 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 Con-
nection_Handle event parameter.
Read Remote Version 1.1 The Read Remote Version Information BR/EDR,
Information Command command will read the values for the LE
version information for the remote
device associated with the Connec-
tion_Handle.
Read Remote Version 1.1 The Read Remote Version Information BR/EDR,
Information Complete Complete event is used to indicate the LE
Event completion of the process of the Link
Manager obtaining the version infor-
mation of the remote device associ-
ated with the Connection_Handle
event parameter.
Remote Host Supported 2.1 + The Remote Host Supported Features BR/EDR
Features Notification Event EDR Notification event is used to return the
LMP extended features page contain-
ing the Host features.
LE Read Remote Used 4.0 The LE Read Remote Used Features LE
Features Command Command is used to read the used
features of a LE remote device.
Supported
Name Vers. Summary description Controllers
Supported
Name Vers. Summary description Controllers
Write Voice Setting Com- 1.1 The Write Voice Setting command will BR/EDR
mand write the values for the Voice Setting
configuration parameter, which con-
trols all the various settings for the
voice connections.
Enhanced Setup Synchro- CSA The Enhanced Setup Synchronous BR/EDR
nous Connection Com- 2 Connection command adds a new or
mand modifies an existing synchronous log-
ical transport (SCO or eSCO) on a
physical link depending on the Con-
nection_Handle parameter specified.
Enhanced Accept Synchro- CSA The Enhanced Accept Synchronous BR/EDR
nous Connection Request 2 Connection Request command is
Command 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.
Read Local Supported CSA The Read Local Supported Codecs BR/EDR
Codecs Command 2 command is used for a host to query
a controller’s supported codecs.
Table 3.10: Synchronous connections
Supported
Name Vers. Summary description Controllers
Sniff Subrating Event 2.1 + EDR The Sniff Subrating event is BR/EDR
used to inform the Host of the
local and remote transmit and
receive latencies
Exit Sniff Mode Command 1.1 The Exit Sniff Mode command BR/EDR
is used to end the sniff mode for
a Connection_Handle which is
currently in sniff mode.
Park State Command 1.1 The Park State command is BR/EDR
used to alter the behavior of the
Link Manager and have the Link
Manager place the local or
remote device into the park
state.
Exit Park State Command 1.1 The Exit Park State command is BR/EDR
used to switch the BR/EDR
Controller from park state back
to active mode.
Table 3.11: Connection state
Supported
Name Vers. Summary description Controllers
Read Link Policy Settings 1.1 The Read Link Policy Settings BR/EDR
Command command will read the Link Pol-
icy configuration parameter for
the specified Connection_Han-
dle. The Link Policy settings
allow the Host to specify which
Link Modes the Link Manager
can use for the specified Con-
nection_Handle.
Write Link Policy Settings 1.1 The Write Link Policy Settings BR/EDR
Command command will write the Link Pol-
icy configuration parameter for
the specified Connection_Han-
dle. The Link Policy settings
allow the Host to specify which
Link Modes the Link Manager
can use for the specified Con-
nection_Handle.
Read Default Link Policy 1.2 The Read Default Link Policy BR/EDR
Settings Command Settings command will read the
Default Link Policy configuration
parameter for all new connec-
tions.
Write Default Link Policy 1.2 The Write Default Link Policy BR/EDR
Settings Command Settings command will write the
Default Link Policy configuration
parameter for all new connec-
tions.
LE Connection Update 4.0 The LE Connection Update LE
Command Command will be used to
change the connection parame-
ters of an existing connection.
Supported
Name Vers. Summary description Controllers
Supported
Name Vers. Summary description Controllers
Role Change Event 1.1 The Role Change event is used to BR/EDR
indicate that the current BR/EDR
Controller role related to the particular
connection has been changed.
Table 3.12: Piconet structure
Supported
Name Vers. Summary description Controllers
QoS Setup Command 1.1 The QoS Setup command is used BR/EDR
to specify Quality of Service
parameters for a Connection_Han-
dle.
QoS Setup Complete 1.1 The QoS Setup Complete event is BR/EDR
Event used to indicate that QoS is setup.
QoS Violation Event 1.1 The QoS Violation event is used to BR/EDR,
indicate the Controller’s Link Man- AMP
ager or PAL is unable to provide
the current QoS requirement for
the Handle.
Enhanced Flush Com- 2.1 + EDR The Enhanced Flush Complete BR/EDR,
plete Event event is used to indicate that an AMP
Enhanced Flush is complete.
Table 3.13: Quality of service
Supported
Name Vers. Summary description Controllers
Read Automatic Flush 1.1 The Read Automatic Flush Time- BR/EDR
Timeout Command out command will read the value
for the Flush Timeout configuration
parameter for the specified Con-
nection_Handle. The Flush Time-
out parameter is only used for ACL
connections.
Write Automatic Flush 1.1 The Write Automatic Flush Time- BR/EDR
Timeout Command out command will write the value
for the Flush Timeout configuration
parameter for the specified Con-
nection_Handle. The Flush Time-
out parameter is only used for ACL
connections.
Read Failed Contact 1.1 The Read Failed Contact Counter- BR/EDR,
Counter Command command will read the value for AMP
the Failed Contact Counter config-
uration parameter for a particular
connection to another device.
Reset Failed Contact 1.1 The Reset Failed Contact Counter- BR/EDR,
Counter Command command will reset the value for AMP
the Failed Contact Counter config-
uration parameter for a particular
connection to another device.
Read Num Broadcast 1.1 The Read Num Broadcast BR/EDR
Retransmissions Com- Retransmissions command will
mand read the parameter value for the
Number of Broadcast Retransmis-
sions for the BR/EDR Controller.
Read Best Effort Flush 3.0 + HS The Read Best Effort Flush Time- AMP
Timeout Command out command returns the last value
written with the Write Best Effort
Flush Timeout command.
Table 3.13: Quality of service
Supported
Name Vers. Summary description Controllers
Write Best Effort Flush 3.0 + HS The Write Best Effort Flush Time- 802.11 PAL
Timeout Command out command configures the AMP only
device with a maximum time to
attempt to transmit any given
frame on the Best Effort logical
link.
Table 3.13: Quality of service
Supported
Name Vers. Summary description Controllers
Read Link Supervision 1.1 The Read Link Supervision Time- BR/EDR,
Timeout Command out command will read the value AMP
for the Link Supervision Timeout
configuration parameter for the
device. This parameter is used by
the Controller to determine link
loss.
Write Link Supervision 1.1 The Write Link Supervision Time- BR/EDR,
Timeout Command out command will write the value AMP
for the Link Supervision Timeout
configuration parameter for the
device. This parameter is used by
the Controller to determine link
loss.
Link Supervision Time- 2.1 + EDR The Link Supervision Timeout- BR/EDR
out Changed Event event indicates that the remote
device changed the Link Supervi-
sion Timeout.
Read AFH Channel 1.2 The Read AFH Channel Assess- BR/EDR
Assessment Mode ment Mode command will read
Command the value for the AFH Channel
Classification Mode parameter.
This value is used to enable or
disable the Controller’s channel
assessment scheme.
Table 3.14: Physical links
Supported
Name Vers. Summary description Controllers
Write AFH Channel 1.2 The Write AFH Channel Assess- BR/EDR
Assessment Mode ment Mode command will write
Command the value for the Channel Classifi-
cation Mode configuration param-
eter. This value is used to enable
or disable the Controller’s channel
assessment scheme.
Set AFH Host Channel 1.2 The Set AFH Host Channel Clas- BR/EDR
Classification Com- sification command allows the
mand Host to specify a channel classifi-
cation based on its “local informa-
tion”.
Change Connection 1.1 The Change Connection Packet BR/EDR
Packet Type Command Type command is used to change
which packet types can be used
for a connection that is currently
established.
Connection Packet 1.1 The Connection Packet Type BR/EDR
Type Changed Event 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.
Read Local AMP 3.0 + HS The Read Local AMP_ASSOC AMP
ASSOC Command command will return a fragment of
the AMP_ASSOC structure, which
contains AMP specific informa-
tion for this AMP Controller.
Supported
Name Vers. Summary description Controllers
Supported
Name Vers. Summary description Controllers
Host Buffer Size Command 1.1 The Host Buffer Size command is BR/EDR, LE
used by the Host to notify the Control-
ler 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 Pack-
ets will not exceed these sizes.
Set Event Mask Command 1.1 The Set Event Mask command is All
used to control which events are gen-
erated by the HCI for the Host.
Set Event Filter Command 1.1 The Set Event Filter command is BR/EDR,
used by the Host to specify different AMP
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.
Set Controller To Host Flow 1.1 The Set Controller To Host Flow Con- BR/EDR, LE
Control Command trol command is used by the Host to
turn flow control on or off in the direc-
tion from the Controller to the Host.
Host Number Of Com- 1.1 The Host Number Of Completed All
pleted Packets Command Packets command is used by the
Host to indicate to the Controller
when the Host is ready to receive
more HCI packets for any Connec-
tion_Handle.
Supported
Name Vers. Summary description Controllers
Data Buffer Overflow Event 1.1 The Data Buffer Overflow event is All
used to indicate that the Controller's
data buffers have overflowed,
because the Host has sent more
packets than allowed.
Read Synchronous Flow 1.1 The Read Synchronous Flow Control BR/EDR
Control Enable Command 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 Number Of Completed
Packets events for Synchronous Con-
nection_Handles.
Write Synchronous Flow 1.1 The Write Synchronous Flow Control BR/EDR
Control Enable Command Enable command provides the ability
to write the Synchronous Flow Con-
trol Enable setting. By using this set-
ting, the Host can decide if the
Controller will send Number Of Com-
pleted Packets events for Synchro-
nous Connection_Handles.
Set Event Mask Page 2 3.0 + The Set Event Mask Page 2 com- All
Command HS mand is used to control which events
are generated by the HCI for the
Host.
LE Add Device To White 4.0 The LE Add Device To White List LE
List Command Command will add a device to the
white list.
Supported
Name Vers. Summary description Controllers
Supported
Name Vers. Summary description Controllers
Read LMP Handle Com- 1.2 The Read LMP Handle command BR/EDR
mand will read the current LMP Handle
associated with the Connec-
tion_Handle.
Read Transmit Power 1.1 The Read Transmit Power Level BR/EDR, LE
Level Command command will read the values for
the Transmit Power Level parame-
ter for the specified Connec-
tion_Handle.
Read Link Quality Com- 1.1 The Read Link Quality command BR/EDR,
mand will read the value for the Link AMP
Quality for the specified Connec-
tion_Handle.
Read RSSI Command 1.1 The Read RSSI command will All
read the value for the Received
Signal Strength Indication (RSSI)
for a Connection_Handle to
another Controller.
Read Clock Offset Com- 1.1 The Read Clock Offset command BR/EDR
mand allows the Host to read the clock
offset of remote BR/EDR Control-
lers.
Read Clock Offset Com- 1.1 The Read Clock Offset Complete BR/EDR
plete Event event is used to indicate the com-
pletion of the process of the LM
obtaining the Clock offset informa-
tion.
Read Clock Command 1.2 The Read Clock command will BR/EDR
read an estimate of a piconet or
the local Bluetooth Clock.
Set Triggered Clock CSA4 The Set Triggered Clock Capture BR/EDR
Capture Command command is used to configure the
Controller to return events contain-
ing an estimate of a piconet or the
local Bluetooth clock.
Supported
Name Vers. Summary description Controllers
Read AFH Channel Map 1.2 The Read AFH Channel Map com- BR/EDR
Command mand will read the current state of
the channel map for a connection.
Read Local AMP Info 3.0 + HS The Read Local AMP Info com- AMP
Command mand returns information about
this AMP Controller.
AMP Status Change 3.0 + HS The AMP Status Change event AMP
Event can occur at any time, after initial
Read Local AMP_Info request, the
Controller detects a change has
occurred regarding status.
Supported
Name Vers. Summary description Controllers
Link Key Request Nega- 1.1 The Link Key Request Negative BR/EDR
tive Reply Command Reply command is used to reply to
a 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.
PIN Code Request 1.1 The PIN Code Request event is BR/EDR
Event used to indicate that a PIN code is
required to create a new link key
for a connection.
Table 3.17: Authentication and encryption (Sheet 1 of 8)
Supported
Name Vers. Summary description Controllers
PIN Code Request 1.1 The PIN Code Request Reply BR/EDR
Reply Command command is used to reply to a PIN
Code Request event from the
Controller and specifies the PIN
code to use for a connection.
PIN Code Request Neg- 1.1 The PIN Code Request Negative BR/EDR
ative Reply Command Reply command is used to reply to
a PIN Code Request event from
the Controller when the Host can-
not specify a PIN code to use for a
connection.
Link Key Notification 1.1 The Link Key Notification event is BR/EDR
Event 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.
Authentication 1.1 The Authentication Requested BR/EDR
Requested Command command is used to establish
authentication between the two
devices associated with the speci-
fied Connection_Handle.
Authentication Complete 1.1 The Authentication Complete BR/EDR
Event event occurs when authentication
has been completed for the speci-
fied connection.
Change Connection Link 1.1 The Change Connection Link Key BR/EDR
Key Complete Event 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.
Table 3.17: Authentication and encryption (Sheet 2 of 8)
Supported
Name Vers. Summary description Controllers
Master Link Key Com- 1.1 The Master Link Key command is BR/EDR
mand used to force both BR/EDR Con-
trollers of a connection associated
to the Connection_Handle to use
the temporary link key of the Mas-
ter device or the regular link keys.
Master Link Key Com- 1.1 The Master Link Key Complete BR/EDR
plete Event event is used to indicate that the
change in the temporary Link Key
or in the semi-permanent link keys
on the Bluetooth master side has
been completed.
Read PIN Type Com- 1.1 The Read PIN Type command is BR/EDR
mand used for the Host to read the value
that is specified to indicate
whether the Host supports vari-
able PIN or only fixed PINs.
Write PIN Type Com- 1.1 The Write PIN Type command is BR/EDR
mand used for the Host to specify
whether the Host supports vari-
able PIN or only fixed PINs.
Read Stored Link Key 1.1 The Read Stored Link Key com- BR/EDR
Command mand provides the ability to read
whether one or more link keys are
stored in the Controller.
Return Link Keys Event 1.1 The Return Link Keys event is BR/EDR
used to return stored link keys
after a Read Stored Link Key com-
mand is used.
Write Stored Link Key 1.1 The Write Stored Link Key com- BR/EDR
Command mand provides the ability to write
one or more link keys to be stored
in the Controller.
Delete Stored Link Key 1.1 The Delete Stored Link Key com- BR/EDR
Command mand provides the ability to
remove one or more of the link
keys stored in the Controller.
Create New Unit Key 1.1 The Create New Unit Key com- BR/EDR
Command mand is used to create a new unit
key.
Refresh Encryption Key 2.1 + EDR The Refresh Encryption Key com- BR/EDR
Command mand s used by the Host to cause
the Controller to refresh the
encryption key by pausing and
resuming encryption
Table 3.17: Authentication and encryption (Sheet 3 of 8)
Supported
Name Vers. Summary description Controllers
Encryption Key Refresh 2.1 + EDR The Encryption Key Refresh Com- BR/EDR, LE
Complete Event plete event is used to indicate to
the Host that the encryption key
was refreshed on the given Con-
nection_Handle any time encryp-
tion is paused and then resumed.
IO Capability Request 2.1 + EDR The IO Capability_Request_Reply BR/EDR
Reply Command command is used to reply to an IO
Capability Request event from the
controller, and specifies the cur-
rent I/O capabilities of the Host.
IO Capability Request 2.1 + EDR The IO Capability Request event is BR/EDR
Event used to indicate that the IO capa-
bilities of the Host are required for
a simple pairing process.
IO Capability Response 2.1 + EDR The IO Capability Response event BR/EDR
Event is used to indicate to the host that
IO capabilities from a remote
device specified by BD_ADDR
have been received during a sim-
ple pairing process.
User Confirmation 2.1 + EDR The User Confirmation Request BR/EDR
Request Reply Com- Reply command is used to reply to
mand a 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.
Supported
Name Vers. Summary description Controllers
User Passkey Request 2.1 + EDR The User Passkey Request Nega- BR/EDR
Negative Reply Com- tive Reply command is used to
mand reply to a User Passkey Request
event and indicates the host could
not provide a passkey. This com-
mand will terminate Simple Pair-
ing.
User Passkey Request 2.1 + EDR The User Passkey Request event BR/EDR
Event is used to indicate that a passkey
is required as part of a Simple
Pairing process.
User Passkey Notifica- 2.1 + EDR The User Passkey Notification BR/EDR
tion Event event is used to provide a passkey
for the Host to display to the user
as required as part of a Simple
Pairing process.
Remote OOB Data 2.1 + EDR The Remote OOB Data BR/EDR
Request Reply Com- Request Reply command is used
mand to reply to a Remote OOB Data
Request event with the C and R
values received via an OOB trans-
fer from a remote BR/EDR Con-
troller identified by BD ADDR.
Remote OOB Data 2.1 + EDR The Remote OOB Data Request BR/EDR
Request Negative Reply Negative Reply command is used
Command to reply to a Remote OOB Data
Request event that the Host does
not have the C and R
Remote OOB Data 2.1 + EDR The Remote OOB Data Request BR/EDR
Request Event event is used to indicate that the
Simple Pairing Hash C and the
Simple Pairing Randomizer R is
required for the Secure Simple
Pairing process involving the
device identified by BD_ADDR.
Read Simple Pairing 2.1 + EDR This command reads the Simple BR/EDR
Mode Command Pairing mode setting in the BR/
EDR Controller.
Write Simple Pairing 2.1 + EDR This command writes the Simple BR/EDR
Mode Command Pairing mode setting in the BR/
EDR Controller.
Supported
Name Vers. Summary description Controllers
Read Local OOB Data 2.1 + EDR This command is used to obtain a BR/EDR
Command Simple Pairing Hash C and Simple
Pairing Randomizer R which are
intended to be transferred to a
remote device using an OOB
mechanism.
Send Keypress Notifica- 2.1 + EDR This command is used during the BR/EDR
tion Command 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.
Simple Pairing Com- 2.1 + EDR The Simple Pairing Complete BR/EDR
plete Event event is used to indicate that the
simple pairing process has com-
pleted.
Keypress Notification 2.1 + EDR The Keypress Notification event is BR/EDR
Event sent to the Host after a passkey
notification has been received by
the Link Manager on the given
BD_ADDR.
IO Capability Request 2.1 + EDR The IO_Capability_Request_Neg- BR/EDR
Negative Reply Com- ative_Reply command is used to
mand reject a pairing attempt after an
HCI IO Capability Request event
has been received by the Host.
Read Encryption Key 3.0 + HS The Read Encryption Key Size BR/EDR
Size Command command is used to read the
encryption key size on a given
Connection_Handle.
LE Encrypt Command 4.0 The LE Encrypt Command will LE
encrypt a block of unencrypted
data against a key and generate a
block of encrypted data.
LE Long Term Key 4.0 The LE Long Term Key Request LE
Request Event event indicates that a Long Term
Key is required for a connection.
Supported
Name Vers. Summary description Controllers
Remote OOB Extended 4.1 The Remote OOB Extended Data BR/EDR
Data Request Reply Request Reply command is used
Command to reply to a Remote OOB Data
Request event with the C and R
values received via an OOB trans-
fer from a remote BR/EDR Con-
troller identified by the BD_ADDR.
Read Local OOB 4.1 This command is used to obtain BR/EDR
Extended Data Com- Simple Pairing Hash C and Ran-
mand domizer 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.
Write Authenticated 4.1 This command is used to write the BR/EDR, LE
Payload Timeout Com- Authenticated Payload Timeout
mand parameter, which is used to set the
maximum time between packets
being received from the remote
device without a valid MIC.
Supported
Name Vers. Summary description Controllers
3.17 TESTING
The testing group of commands and events allows a device to be placed into a
special testing mode to allow for testing to be performed.
Supported
Name Vers. Summary description Controllers
Supported
Name Vers. Summary description Controllers
AMP Start Test Event 3.0 + HS The AMP Start Test event AMP
shall be generated when the
AMP Test command has com-
pleted and the first data is
ready to be sent or received .
AMP Test Command 3.0 + HS The AMP Test command is AMP
used to configure and start a
test. This command shall be
only valid in AMP Test Mode.
AMP Test End Command 3.0 + HS The AMP Test End command AMP
is used to stop any test sce-
nario which is in progress.
This command shall only be
used in AMP Test Mode when
a test is in progress
AMP Test End Event 3.0 + HS The AMP Test End event shall AMP
be generated to indicate that
the AMP has transmitted or
received the number of
frames/bursts configured.
Enable AMP Receiver 4.0 The Enable AMP Receiver AMP
Reports Command Reports command is used to
enable and disable the report-
ing of frames received.
Commands/Events Group
Commands/Events Group
Commands/Events Group
Commands/Events Group
LE Read Local P-256 Public Key Complete Event Authentication and Encryption
LE Read Local Resolvable Address Command Host Flow Control
LE Read Local Supported Features Command Controller Information
Commands/Events Group
Commands/Events Group
Commands/Events Group
Commands/Events Group
Commands/Events Group
Commands/Events Group
Supported
Name Vers. Summary description Controllers
Set Connectionless Slave CSA4 The Set Connectionless Slave Broad- BR/EDR
Broadcast Data Command cast Data command is used by the
Host to set Connectionless Slave
Broadcast data in the BR/EDR Con-
troller.
Set Connectionless Slave CSA4 The Set Connectionless Slave Broad- BR/EDR
Broadcast Command cast command controls Connection-
less Slave Broadcast functionality (for
transmission) in the BR/EDR Control-
ler including enabling and disabling
the broadcast.
Set Connectionless Slave CSA4 The Set Connectionless Slave Broad- BR/EDR
Broadcast Receive Com- cast Receive command enables and
mand disables Connectionless Slave
Broadcast reception in the BR/EDR
Controller.
Supported
Name Vers. Summary description Controllers
Flow control for data shall be used in the direction from the Host to the
Controller to avoid overflowing the Controller data buffers with ACL data
destined for a remote device (using a Connection_Handle) that is not
responding. The Host manages the data buffers of the Controller. For Primary
Controller, packet based flow control is the default. For AMP Controllers, data
block based data flow control is the default for ACL traffic. Flow control for data
moving from the Controller to the Host may be used in the Primary Controller in
accordance with Section 4.2.
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 or LE-U) shall be determined by the
Connection_Handle.
BR/EDR and LE data using the HCI ACL Data Packets into the buffers
identified using the Read Buffer Size command.
The Host chooses the Connection Handles for the following HCI Data Packets
based on the information returned in this event, and/or the 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.
When the Controller has completed one or more HCI Data Packet(s) it shall
send a 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.
For each individual Handle, the data shall be sent to the Controller in HCI Data
Packets in the order in which it was created in the Host. The Controller shall
also transmit data on the air that is received from the Host for a given Handle
in the same order as it is received from the Host.
Data that is received on the air from another device shall, for the corresponding
Connection_Handle, be sent in HCI Data Packets to the Host in the same order
as it is received. This means the scheduling shall be decided separately for
each Handle basis. For each individual Handle, the order of the data shall not
be changed from the order in which the data has been created.
HCI ACL Data Packets on an LE-U logical link shall be 27 octets or larger. A
Host shall not fragment HCI ACL Data Packets on an LE-U logical link that are
27 octets or less in length.
When there is at least one Logical Link to another AMP the Controller shall use
the 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 (transmitted or flushed) 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 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 Number Of Completed Data Blocks event received by the Host provides
information about how many HCI Data Packets have been completed
(transmitted or flushed) for each Handle since the previous 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 a 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.
For each individual Handle, the data must be sent to the Controller in HCI Data
Packets in the order in which it was created in the Host. The Controller shall
also transmit data for a given Handle in the same order as it is received from
the Host.
Data that is received shall be sent in HCI Data Packets to the Host in the same
order as it is received. This means the scheduling shall be decided separately
for each Handle basis.
On initialization, the Host uses the 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 Primary 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 Host Number Of Completed Packets command in exactly
the same way as the Primary Controller uses the Number Of Completed
Packets event as was previously described in this section.
If flow control is also enabled in the direction from the Controller to the Host,
the Controller may, after it has sent a Disconnection Complete event, assume
that the Host will flush its data buffers for the sent Handle when it receives the
Disconnection Complete event. The Host does not have to notify the Primary
Controller about this in a Host Number Of Completed Packets command.
To indicate to the Host that the Controller is ready to receive HCI command
packets, the Controller may generate a Command Complete event with the
Command Opcode 0x0000, and the Num HCI Command Packets event
parameter is set to 1 or more. Command Opcode 0x0000 is a NOP (No
OPeration), and can be used to change the number of outstanding HCI
command packets that the Host can send. The Controller may generate a
Command Complete event with the Num HCI Command Packets event
parameter set to zero to inform Host it must stop sending commands.
For most commands, a Command Complete event shall be sent to the Host
when the Controller completes the command. Some commands are executed
in the background and do not return a Command Complete event when they
have been completed. Instead, the Controller shall send a Command Status
event back to the Host when it has begun to execute the command. When the
actions associated with the command have finished, an event that is
associated with the command shall be sent by the Controller to the Host.
If the command does not begin to execute (for example, if there was a
parameter error or the command is currently not allowed), the Command
Status event shall be returned with the appropriate error code in the Status
parameter, and the event associated with the sent command shall not be
returned.
The above also applies to commands that have associated command specific
completion events with a status parameter in their completion event, with four
exceptions. The first two exceptions are the Connection Complete and the
Synchronous Connection Complete events. On failure, for these two events
only, the second parameter, Connection_Handle, is not valid and the third
parameter, BD_ADDR, is valid for identification purposes. The third exception
is the LE Connection Complete event. On failure, the Status parameter is valid,
all other parameters are not valid. The fourth exception is the Logical Link
completion event. On failure, for this event, the second parameter
(Logical_Link_Handle) is not valid but the third parameter
(Physical_Link_Handle) is valid for identification purposes. The validity of other
parameters is likewise implementation specific for failed commands in this
group, but they shall be sent in any case.
Note: The BD_ADDR return parameter of the command Read BD_ADDR is not
used to identify to which instance of the Read BD ADDR command the
Command Complete event belongs. It is optional for the Controller to return
this parameter in case of an error.
5.1 INTRODUCTION
The HCI provides a uniform command method of accessing Controller
capabilities. The HCI Link commands provide the Host with the ability to control
connections to other BR/EDR Controllers. For the BR/EDR 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 “Part C, Link Manager Protocol
Specification” and see [Vol 6] Part B, Link Layer Specification. For AMP
Controllers, these commands typically involve the AMP PAL. For details see
the appropriate PAL specification (see [Vol 5] Part A, 802.11 Protocol
Adaptation Layer Functional Specification).
The HCI Policy commands are used to affect the behavior of the local and
remote LM or LL. These Policy commands provide the Host with methods of
influencing how the LM or LL manages the piconet. The Controller &
Baseband, Informational, and Status commands provide the Host access to
various registers in the Controller.
• Unless noted otherwise, all parameter values are sent and received in Little
Endian format (i.e. for multi-octet parameters the rightmost (Least
Significant Octet) is transmitted first)
• All command and event parameters that are not-arrayed and all elements in
an arrayed parameter have fixed sizes (an integer number of octets). The
parameters and the size of each not arrayed parameter (or of each element
in an arrayed parameter) contained in a command or an event is specified
for each command or event. The number of elements in an arrayed
parameter is not fixed.
• Where bit strings are specified, the low order bit is the right hand bit, e.g. 0 is
the low order bit in 10b.
• Values or parameters marked as Reserved for Future Use, shall be set to 0
unless explicitly stated otherwise on transmission, and shall be ignored on
reception. Parameter values or opcodes that an implementation does not
know how to interpret shall be ignored, and the operation that is being
attempted shall be completed with the correct signaling. The host or
controller shall not stop functioning because of receiving a reserved value.
5.3 HANDLES
Three types of handles are used to identify logical channels between the Host
and a Controller: Connection Handles, Logical Link Handles, and Physical Link
Handles.
Connection Handles are used to identify logical channels between the Host
and the Primary Controller. Connection Handles are assigned by the Primary
Controller when a new logical link is created, using the Connection Complete,
Synchronous Connection Complete, or LE Connection Complete events.
Broadcast Connection Handles are handled differently, and are described in
Section 5.3.1.1.
The first time the Host sends an HCI Data Packet with Broadcast_Flag set to
01b (active slave broadcast) or 10b (parked slave broadcast) after a power-on
or a reset, the value of the Connection Handle parameter must be a value
which is not currently assigned by the Host Controller. The Host must use
different Connection Handles for active broadcast and piconet broadcast.
The BR/EDR Controller must then continue to use the same connection
Handles for each type of broadcast until a reset is made. Note: The Host
Note: In some situations, it may happen that the Host Controller sends a
Connection Complete event before having interpreted a Broadcast packet
received from the Host, and that the Connection_Handles of both Connection
Complete event and HCI Data packet are the same. This conflict has to be
avoided as follows:
This Connection_Handle must then be used for all the following broadcasts of
that type until a reset is performed or the same conflict situation happens
again. However, this will occur very rarely.
The Host Controller must, in the above conflict case, be able to distinguish
between the Broadcast message sent by the Host and the new connection
made (this could be even a new synchronous link) even though the Connection
Handles are the same.
For an HCI Data Packet sent from the Host Controller to the Host where the
Broadcast_Flag is 01 or 10, the Connection_Handle parameter should contain
the Connection Handle for the ACL connection to the master that sent the
broadcast.
AMP Controllers have two types of handles: Physical Link Handles and Logical
Link Handles. For data, command and event operations between the Host and
an AMP Controller, a Logical Link Handle is used where a Connection Handle
is specified, unless a Physical Link Handle is explicitly specified.
For each Physical Link, an AMP Controller provides zero or more Logical
Links.
The HCI Command Packet is used to send commands to the Controller from
the Host. The format of the HCI Command Packet is shown in Figure 5.1, and
the definition of each field is explained below.
Controllers shall be able to accept HCI Command Packets with up to 255 bytes
of data excluding the HCI Command Packet header.
Note: The OGF composed of all ‘ones’ has been reserved for vendor-specific
debug commands. These commands are vendor-specific and are used during
manufacturing, for a possible method for updating firmware, and for debugging.
The host shall assume that sending of a Vendor Specific Debug command will
consume an HCI Command credit.
Note: The OGF composed of all ‘zeros’ and an OCF or all ‘zeros’ is the NOP
command. This command Opcode may be used in Command Flow Control.
(See Section 4.4 on page 465.)
0 4 8 12 16 20 24 28 31
0xXXXX OGF Range (6 bits): 0x00-0x3F (0x3F reserved for vendor-specific debug
commands)
OCF Range (10 bits): 0x0000-0x03FF
0xXX Each command has a specific number of parameters associated with it.
These parameters and the size of each of the parameters are defined for
each command. Each parameter is an integer number of octets in size.
HCI ACL Data Packets are used to exchange data between the Host and
Controller. There are two types of HCI ACL Data Packets:
• Automatically-Flushable
• Non-Automatically-Flushable
All packets on an AMP logical link are affected by the automatic flush timer.
0 4 8 12 16 20 24 28 31
PB BC
Handle Flag Flag
Data Total Length
Data
00 No broadcast. Only point-to-point (this is the only valid option for AMPs).
01 Active Slave Broadcast: packet is sent to all active slaves (i.e. packet is
usually not sent during park beacon slots), and it may be received by
slaves in sniff mode or park state.
10 Parked Slave Broadcast: packet is sent to all slaves and all slaves in park
state (i.e. packet is sent during park beacon slots if there are parked
slaves), and it may be received by slaves in sniff mode.
00 Point-to-point
01 BR/EDR Packet received as a slave not in park state (either Active Slave
Broadcast or Parked Slave Broadcast)
10 BR/EDR Packet received as a slave in park state (Parked Slave Broad-
cast)
Note: Active slave broadcast packets may be sent in park beacon slots.
Note: Slaves in sniff mode may or may not receive a broadcast packet
depending on whether they happen to be listening at sniff slots, when the
packet is sent.
HCI synchronous (SCO and eSCO) Data Packets are used to exchange
synchronous data between the Host and Controller. The format of the
synchronous Data Packet is shown in Figure 5.1. The definition for each of the
fields in the data packets is explained below.
0 4 8 12 16 20 24 28 31
Packet_
Connection_Handle Status_ Reser- Data_Total_Length
Flag ved
Data
The Packet_Status_Flag bits consist of two bits, which are located from bit 4 to
5 in the second octet of the HCI Synchronous Data packet.
11 Data partially lost. Not all, but at least one (e)SCO packet has been
marked as “lost data” by the baseband in the (e)SCO intervals corre-
sponding to the HCI Synchronous Data Packet. The payload data octets
corresponding to the missing (e)SCO packets shall be set to 0.
Note: Some HCI transports and/or controller implementations will align the HCI
Synchronous Data Packets with the (e)SCO baseband packets such that data
integrity can be explicitly marked in the Packet_Status_Flag. For HCI
transports or Controller implementations that do not preserve this alignment,
information in the Packet_Status_Flag may be ambiguous.
The Reserved Bits consist of two bits which are located from bit 6 to bit 7 in the
second octet of the HCI Synchronous Data packet.
The HCI Event Packet is used by the Controller to notify the Host when events
occur. The Host must be able to accept HCI Event Packets with up to 255
octets of data excluding the HCI Event Packet header. The format of the HCI
Event Packet is shown in Figure 5.1, and the definition of each field is
explained below.
0 4 8 12 16 20 24 28 31
Parameter Total
Event Code Event Parameter 0
Length
0xXX Each event is assigned a 1-Octet event code used to uniquely identify dif-
ferent types of events.
Range: 0x00-0xFF (The event code 0xFF is reserved for the event code
used for vendor-specific debug events.)
0xXX Each event has a specific number of parameters associated with it. These
parameters and the size of each of the parameters are defined for each
event. Each parameter is an integer number of octets in size.
0x02-0xFF Reserved
0x03-0xFF Reserved
0x02-0xFF Reserved
Note: The local BR/EDR Controller may be forced into hold mode (regardless
of whether the local device is master or slave) by the remote device regardless
of the value of the Link_Policy_Settings parameter. The forcing of hold mode
can however only be done once the connection has already been placed into
hold mode through an LMP request (the Link_Policy_Settings determine if
requests from a remote device should be accepted or rejected). The forcing of
hold mode can after that be done as long as the connection lasts regardless of
the setting for hold mode in the Link_Policy_Settings parameter.
Note that the previous description implies that if the implementation in the
remote device is a “polite” implementation that does not force another device
into hold mode via LMP PDUs, then the Link_Policy_Settings will never be
overruled.
Note: Since for AMP Controllers a Flush Timeout value is maintained as part of
the Extended Flow Specification for each logical link, the separate Flush
Timeout configuration parameter is not used.
N = 0xXX NBC = N + 1
Range 0x00-0xFE
0x0000 No Link_Supervision_Timeout.
Shall not be used with AMP Controllers.
N = 0xXXXX Size: 2 Octets
Range: 0x0001 to 0xFFFF
Default: 0x7D00
Mandatory Range: 0x0190 to 0xFFFF
Time = N * 0.625 msec
Time Range: 0.625 msec to 40.9 sec
Time Default:
BR/EDR 20 sec
AMP 10 sec
The Supported Commands is a 64 octet bit field. If a bit is set to 1, then this
command is supported.
0 0 Inquiry
1 Inquiry Cancel
5 Disconnect
6 Add SCO Connection (deprecated)
7 Create Connection Cancel
3 Reserved
4 Reserved
5 Reserved
6 Reserved
7 Reserved
4 0 Reserved
1 Hold Mode
2 Sniff Mode
3 Exit Sniff Mode
4 Park State
5 Exit Park State
6 QoS Setup
7 Role Discovery
5 0 Switch Role
1 Read Link Policy Settings
5 Flow Specification
6 Set Event Mask
7 Reset
5 Reserved
6 Reserved
7 Reserved
14 0 Reserved
1 Reserved
2 Reserved
1 Read BD ADDR
2 Read Failed Contact Counter
7 Reserved
17 0 Read Extended Inquiry Response
1 Write Extended Inquiry Response
6 Reserved
7 IO Capability Request Reply
19 0 User Confirmation Request Reply
6 Enhanced Flush
7 Remote OOB Data Request Negative Reply
20 0 Reserved
1 Reserved
2 Send Keypress Notification
3 IO Capability Request Negative Reply
7 Reserved
21 0 Create Physical Link
1 Accept Physical Link
3 Reserved
4 Reserved
5 Enable AMP Receiver Reports
1 Reserved
2 Read Best Effort Flush Timeout
3 Write Best Effort Flush Timeout
7 Reserved
25 0 LE Set Event Mask
1 LE Read Buffer Size
6 LE Encrypt
7 LE Rand
28 0 LE Start Encryption
4 LE Receiver Test
5 LE Transmitter Test
6 LE Test End
7 Reserved
29 0 Reserved
1 Reserved
2 Reserved
3 Enhanced Setup Synchronous Connection
4 Enhanced Accept Synchronous Connection
6 Truncated Page
7 Truncated Page Cancel
31 0 Set Connectionless Slave Broadcast
6 Reserved
7 Reserved
0xXXXX Shall be set to the character string "XX" (0x5858) for a non-country entity
or when Location_Domain_Aware is set to regulatory domain unknown.
When the regulatory domain is known, it shall be set to the relevant ISO
3166-11 alpha-2 two character country code, with the first letter in the
least significant octet (for example, "BT" is encoded as 0x5442).
1. ISO 3166-1-alpha-2 code elements (English),
http://www.iso.org/iso/country_names_and_code_elements
0 0 Not mains-powered
0 1 Mains powered
0x00 Packet based data flow control mode (default for a Primary Controller)
0x01 Data block based data flow control mode (default for an AMP Control-
ler)
0x02-0xFF Reserved for future use
In the BR/EDR Controller, when the Link Control commands are used, the Link
Manager (LM) controls how the Bluetooth piconets and scatternets are
established and maintained. These commands instruct the LM to create and
modify link layer connections with Bluetooth remote devices, perform Inquiries
of other BR/EDR Controllers in range, and other LMP commands.
In the AMP Controller, Link Control commands are used to create, modify and
disconnect physical and logical links.
Description:
This command causes the BR/EDR Controller to enter Inquiry Mode. Inquiry
Mode is used to discover other nearby BR/EDR Controllers. The LAP input
parameter contains the LAP from which the inquiry access code shall be
derived when the inquiry procedure is made. The Inquiry_Length parameter
specifies the total duration of the Inquiry Mode and, when this time expires,
Inquiry will be halted. When Extended_Inquiry_Length is greater than zero, the
duration of the Inquiry Mode may be changed to (Inquiry_Length +
Extended_Inquiry_Length). The Num_Responses parameter specifies the
number of responses that can be received before the Inquiry is halted. Inquiry
Result events will be sent to report the details of nearby BR/EDR Controllers
that have responded to this inquiry. The Inquiry Complete event is sent to
report that Inquiry Mode has ended.
Command Parameters:
0x9E8B00– This is the LAP from which the inquiry access code should be derived
0X9E8B3F when the inquiry procedure is made; see Bluetooth Assigned Numbers.
Return Parameters:
None.
A Command Status event shall be sent from the BR/EDR Controller to the Host
when the BR/EDR Controller has started the Inquiry process. Unless filtered,
an Inquiry Result event shall be created for each BR/EDR Controller which
responds to the Inquiry message. In addition, multiple BR/EDR Controllers
which respond to the Inquire message may be combined into the same event.
An Inquiry Complete event shall be generated when the Inquiry process has
completed.
Description:
This command shall cause the BR/EDR Controller to stop the current Inquiry if
the BR/EDR Controller is in Inquiry Mode. This command allows the Host to
interrupt the BR/EDR Controller and request the BR/EDR Controller to perform
a different task. The command should only be issued after the Inquiry
command has been issued, a Command Status event has been received for
the Inquiry command, and before the Inquiry Complete event occurs.
Return Parameters:
Description:
Command Parameters:
0x9E8B00– This is the LAP from which the inquiry access code should be derived
0X9E8B3F when the inquiry procedure is made;
see “Bluetooth Assigned Numbers”
Return Parameters:
The Periodic Inquiry Mode begins when the BR/EDR Controller sends the
Command Complete event for this command to the Host. Unless filtered, an
Inquiry Result event shall be created for each remote device that have
responded to the Inquiry message. In addition, multiple BR/EDR Controllers
which response to the Inquiry message may be combined into the same event.
An Inquiry Complete event shall be generated when each of the periodic
Inquiry processes has completed. No Inquiry Complete event will be generated
for the canceled Inquiry process.
Command
Command OCF
Parameters Return Parameters
Description:
Command Parameters:
None.
Return Parameters:
A Command Complete event for this command shall occur when the local
device is no longer in Periodic Inquiry Mode. No Inquiry Complete event will be
generated for the canceled Inquiry process.
Return
Command OCF Command Parameters
Parameters
Description:
This command causes the Link Manager to create a connection to the remote
device with the BD_ADDR specified by the command parameters. This
command causes the local BR/EDR Controller to begin the Page process to
create a link level connection. The Link Manager will determine how the new
ACL connection is established. This ACL connection is determined by the
current state of the device, its piconet, and the state of the device to be
connected. The Packet_Type command parameter specifies which packet
types the Link Manager shall use for the ACL connection. When sending HCI
ACL Data Packets the Link Manager shall only use the packet type(s) specified
by the Packet_Type command parameter or the always-allowed DM1 packet
type. Multiple packet types may be specified for the Packet Type parameter by
performing a bit-wise OR operation of the different packet types. The Link
Manager may choose which packet type to be used from the list of acceptable
packet types. The Page_Scan_Repetition_Mode parameter specifies the page
scan repetition mode supported by the remote device with the BD_ADDR. This
is the information that was acquired during the inquiry process. The
Clock_Offset parameter is the difference between its own clock and the clock
of the remote device with BD_ADDR. Only bits 2 through 16 of the difference
are used, and they are mapped to this parameter as bits 0 through 14
respectively. A Clock_Offset_Valid_Flag, located in bit 15 of the Clock_Offset
parameter, is used to indicate if the Clock Offset is valid or not. A
Connection_Handle for this connection is returned in the Connection Complete
event (see below). The Allow_Role_Switch parameter specifies if the local
device accepts or rejects the request of a master-slave role switch when the
remote device requests it at the connection setup (in the Role parameter of the
Accept_Connection_Request command) (before the local Controller returns a
Connection Complete event). For a definition of the different packet types see
the Part B, Baseband Specification on page 58.
Note: The Host should enable as many packet types as possible for the Link
Manager to perform efficiently. However, the Host must not enable packet
types that the local device does not support.
Command Parameters:
0x00 R0
0x01 R1
0x02 R2
0x00 The local device will be a master, and will not accept a role switch
requested by the remote device at the connection setup.
0x01 The local device may be a master, or may become a slave after
accepting a role switch requested by the remote device at the connec-
tion setup.
0x02-0xFF Reserved for future use.
Return Parameters:
None.
Description:
Command Parameters:
0x05, Authentication Failure error code (0x05), Other End Terminated Connec-
0x13-0x15, tion error codes (0x13-0x15), Unsupported Remote Feature error code
0x1A, (0x1A), Pairing with Unit Key Not Supported error code (0x29) and Unac-
0x29, ceptable Connection Parameters error code (0x3B), see Part D, Error
0x3B Codes on page 370 for a list of error codes and descriptions.
Return Parameters:
None.
When the Controller receives the Disconnect command, it shall send the
Command Status event to the Host. The Disconnection Complete event will
occur at each Host when the termination of the connection has completed, and
indicates that this command has been completed.
Description:
Command Parameters:
Return Parameters:
0x01-0xff Create Connection Cancel command failed. See Part D, Error Codes on
page 370 for list of error codes
Description:
Note: The Link Manager may terminate the connection if it would be low on
resources if the role switch fails. The decision to accept a connection must be
completed before the connection accept timeout expires on the local Bluetooth
Module.
Command Parameters:
0x00 Become the Master for this connection. The LM will perform the role
switch.
0x01 Remain the Slave for this connection. The LM will NOT perform the role
switch.
Return Parameters:
None.
Description:
Command Parameters:
0x0D-0x0F Host Reject Error Code. See Part D, Error Codes on page 370 for list of
Error Codes and descriptions.
Return Parameters:
None.
Command
Command OCF
Parameters Return Parameters
Description:
The Link_Key_Request_Reply command is used to reply to a Link Key
Request event from the 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. The Link Key Request event will be
generated when the BR/EDR Controller needs a Link Key for a connection.
When the BR/EDR Controller generates a Link Key Request event in order for
the local Link Manager to respond to the request from the remote Link
Manager (as a result of a Create_Connection or Authentication_Requested
command from the remote Host), the local Host must respond with either a
Link_Key_Request_Reply or Link_Key_Request_Negative_Reply command
before the remote Link Manager detects LMP response timeout. (See Part C,
Link Manager Protocol Specification on page 224.)
When the BR/EDR Controller supports the Secure Connections (Controller
Support) feature, it shall discard the Link Key once the connection has been
disconnected.
Command Parameters:
Return Parameters:
0xXXXXXXXX BD_ADDR of the Device of which the Link Key request reply has
XXXX completed.
Description:
The Link_Key_Request_Negative_Reply command is used to reply to a 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. The Link Key Request event will be generated when the BR/
EDR Controller needs a Link Key for a connection.
When the Controller generates a Link Key Request event in order for the local
Link Manager to respond to the request from the remote Link Manager (as a
result of a Create_Connection or Authentication_Requested command from
the remote Host), the local Host must respond with either a
Link_Key_Request_Reply or Link_Key_Request_Negative_Reply command
before the remote Link Manager detects LMP response timeout. (See Part C,
Link Manager Protocol Specification on page 224.)
Command Parameters:
Return Parameters:
0xXXXXXXXX BD_ADDR of the Device which the Link Key request negative reply has
XXXX completed.
Command
Command OCF
Parameters Return Parameters
Description:
When the BR/EDR Controller generates a PIN Code Request event in order for
the local Link Manager to respond to the request from the remote Link
Manager (as a result of a Create_Connection or Authentication_Requested
command from the remote Host), the local Host must respond with either a
PIN_Code_Request_Reply or PIN_Code_Request_Negative_Reply command
before the remote Link Manager detects LMP response timeout. (See Part C,
Link Manager Protocol Specification on page 224.)
Command Parameters:
0xXX The PIN code length specifics the length, in octets, of the PIN code to
be used.
Range: 0x01-0x10
0xXXXXXXXXXX PIN code for the device that is to be connected. The Host should
XXXXXXXXXXX ensure that strong PIN Codes are used. PIN Codes can be up to a
XXXXXXXXXXX maximum of 128 bits. Note: The PIN_Code Parameter is a string
parameter. Endianess does therefore not apply to the PIN_Code
Parameter. The first octet of the PIN code should be transmitted first.
Return Parameters:
0xXXXXXXXX BD_ADDR of the Device which the PIN Code request reply has
XXXX completed.
Description:
When the BR/EDR Controller generates a PIN Code Request event in order for
the local Link Manager to respond to the request from the remote Link
Manager (as a result of a Create_Connection or Authentication_Requested
command from the remote Host), the local Host must respond with either a
PIN_Code_Request_Reply or PIN_Code_Request_Negative_Reply command
before the remote Link Manager detects LMP response timeout. (See Part C,
Link Manager Protocol Specification on page 224.)
Command Parameters:
Return Parameters:
0xXXXXXXXX BD_ADDR of the Device which the PIN Code request negative reply has
XXXX completed.
Description:
Note: The Host should enable as many packet types as possible for the Link
Manager to perform efficiently. However, the Host must not enable packet
types that the local device does not support.
Command Parameters:
0x0020 HV1
0x0040 HV2
0x0080 HV3
Return Parameters:
None.
When the BR/EDR Controller receives the Change Connection Packet Type
command, BR/EDR the Controller shall send the Command Status event to the
Host. In addition, when the Link Manager determines the packet type has been
changed for the connection, the Controller on the local device will send a
Connection Packet Type Changed event to the Host. This will be done at the
local side only.
Description:
Command Parameters:
Return Parameters:
None.
Description:
If both devices support both the Secure Connections (Controller Support) and
Secure Connections (Host Support) features, and Encryption_Enable is set to
Turn Link Level Encryption OFF when encryption is currently enabled on the
specified Connection_Handle, the Controller shall return the error code
Encryption Mode Not Acceptable (0x25).
Command Parameters:
Return Parameters:
None.
event to the Host, and the BR/EDR Controller on the remote device will also
generate an Encryption Change event.
Description:
Command Parameters:
Return Parameters:
None.
Description:
The HCI Master Link Key Command shall be rejected with error code
Command Disallowed (0x0C) when all slaves in the piconet support AES-CCM
encryption and Key_Flag is set to “Use Temporary Link Key”.
Note: When at least one slave in the piconet cannot support AES-CCM
encryption, encrypted broadcast packets will not be received by slave devices
where both the Controller and Host support Secure Connections. When all
slaves in the piconet support AES-CCM encryption, broadcast packets will not be
encrypted and may be received by slaves that have AES-CCM encryption
enabled.
Command Parameters:
Return Parameters:
None.
The Master Link Key Complete event contains the status of this command.
Return
Command OCF Command Parameters
Parameters
Description:
Note: If no connection exists between the local device and the device
corresponding to the BD_ADDR, a temporary link layer connection will be
established to obtain the LMP features and name of the remote device.
Command Parameters:
0x00 R0
0x01 R1
0x02 R2
Return Parameters:
None.
Command Return
Command OCF
Parameters Parameters
Description:
Command Parameters:
0xXXXXXXXXXXXX BD_ADDR of the Remote Name Request command that was issued
before and that is subject of this cancellation request
Return Parameters:
0xXXXXXXXXXXXX BD_ADDR of the Remote Name Request Cancel command that was
issued before and that was subject of this cancellation request
The Remote Name Request Complete event for the corresponding Remote
Name Request Command shall always be sent. The Remote Name Request
Complete event shall be sent after the Command Complete event for the
Command Return
Command OCF
Parameters Parameters
Description:
This command requests a list of the supported features for the remote device
identified by the Connection_Handle parameter. The Connection_Handle must
be a Connection_Handle for an ACL connection. The Read Remote Supported
Features Complete event will return a list of the LMP features. For details see
Part C, Link Manager Protocol Specification on page 224.
Command Parameters:
Return Parameters:
None.
Command Return
Command OCF
Parameters Parameters
Description:
Command Parameters:
0xXXXX The Connection_Handle identifying the remote device for which extended
feature information is required. Range: 0x0000-0x0EFF (0x0F00-0x0FFF
Reserved for future use)
Return Parameters:
None.
Return
Command OCF Command Parameters
Parameters
Description:
This command will obtain the values for the version information for the remote
device identified by the Connection_Handle parameter. The
Connection_Handle must be a Connection_Handle for an ACL or LE
connection.
Command Parameters:
Return Parameters:
None.
Description:
Both the System Clock and the clock offset to a remote device are used to
determine what hopping frequency is used by a remote device for page scan.
This command allows the Host to read the clock offset of remote devices. The
clock offset can be used to speed up the paging procedure when the local
device tries to establish a connection to a remote device, for example, when
the local Host has issued Create_Connection or Remote_Name_Request. The
Connection_Handle must be a Connection_Handle for an ACL connection.
Command Parameters:
Return Parameters:
None.
Description:
This command reads the current LMP Handle associated with the
Connection_Handle. The Connection_Handle shall be a SCO or eSCO
Handle. If the Connection_Handle is a SCO Connection_Handle, then this
command shall read the LMP SCO Handle for this connection. If the
Connection_Handle is an eSCO Connection_Handle, then this command shall
read the LMP eSCO Handle for this connection.
Command Parameters:
Return Parameters:
0x01 – 0xFF Read_LMP_Handle command failed. See Part D, Error Codes on page
370 for a list of error codes and descriptions.
0xXXXX The Connection_Handle for the Connection for which the LMP_Handle
has been read.
Range: 0x0000-0x0EFF (0x0F00 – 0x0FFF Reserved for future use)
0xXX The LMP Handle is the LMP Handle that is associated with this Connec-
tion_Handle.
For a synchronous handle, this would be the LMP Synchronous Handle
used when negotiating the synchronous connection in the link manager.
Description:
The Packet_Type field is a bitmap specifying which packet types the LM shall
accept in the negotiation of the link parameters. Multiple packet types are
specified by bitwise OR of the packet type codes in the table. At least one
packet type must be specified for each negotiation. It is recommended to
enable as many packet types as possible. Note that it is allowed to enable
packet types that are not supported by the local device.
Note: The link manager may choose any combination of packet types, timing,
and retransmission window sizes that satisfy the parameters given. This may
be achieved by using more frequent transmissions of smaller packets. The link
manager may choose to set up either a SCO or an eSCO connection, if the
parameters allow, using the corresponding LMP sequences.
Note: To modify a SCO connection, use the Change Connection Packet Type
command.
Note: If the lower layers cannot achieve the exact transmit and receive
bandwidth requested subject to the other parameters, then the link shall be
rejected.
Command Parameters:
0xXXXX Connection_Handle for the ACL connection being used to create a syn-
chronous Connection or for the existing Connection that shall be modified.
Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use)
Transmit_Bandwidth: 4 octets
Value Parameter Description
Receive_Bandwidth: 4 octets
Value Parameter Description
Max_Latency: 2 octets
Value Parameter Description
0x0000- Reserved
0x0003
0x0004- This is a value in milliseconds representing the upper limit of the sum of
0xFFFE the synchronous interval, and the size of the eSCO window, where the
eSCO window is the reserved slots plus the retransmission window. (See
Figure 8.7 in the Baseband specification)
0xFFFF Don't care.
Retransmission_Effort: 1 octet
Value Parameter Description
0x00 No retransmissions
0x01 At least one retransmission, optimize for power consumption.
Packet_Type: 2 octets
Value Parameter Description
Return Parameters:
None.
If this command is used to change the parameters of an existing eSCO link, the
Synchronous Connection Changed Event is sent to both hosts. In this case no
Connection Setup Complete Event or Connection Request Event will be sent to
either host. This command cannot be used to change the parameters of an
SCO link.
Description:
The Command shall only be issued after a Connection_Request event with link
type SCO or eSCO has occurred. Connection_Request event contains the
BD_ADDR of the device requesting the connection. The decision to accept a
connection must be taken before the connection accept timeout expires on the
local device.
If the ACL link has encryption enabled using AES-CCM and the Controller
cannot establish an eSCO transport (e.g. the Host parameters restricting the
packet types to only SCO packet types), error code 0x0E (Connection Rejected
Due to Security Reasons) shall be returned and a SCO transport will not be
established.
If the Link Type of the incoming request is SCO, then only the
Transmit_Bandwidth, Max_Latency, Voice_Settings, and Packet_Type fields
are valid.
Command Parameters:
BD_ADDR: 6 octets
Value Parameter Description
Transmit_Bandwidth: 4 octets
Value Parameter Description
Receive_Bandwidth: 4 octets
Value Parameter Description
Max_Latency: 2 octets
Value Parameter Description
0x0000- Reserved
0x0003
0x0004- This is a value in milliseconds representing the upper limit of the sum of
0xFFFE the synchronous interval and the size of the eSCO window, where the
eSCO window is the reserved slots plus the retransmission window.
0xFFFF Don't care.
Retransmission_Effort: 1 octet
Value Parameter Description
0x00 No retransmissions
0x01 At least one retransmission, optimize for power consumption.
Packet_Type: 2 octets
Value Parameter Description
Return Parameters:
None.
Note: No Command Complete event will be sent by the host controller as the
result of this command. Instead, the Synchronous Connection Complete or
Connection Complete event will indicate that this command has been
completed.
Command
Command OCF
Parameters Return Parameters
Description:
Command Parameters:
BD_ADDR: 6 octets
Value Parameter Description
Reason: 1 octet
Value Parameter Description
0x0D-0x0F Host Reject Error Code. See Part D, Error Codes on page 370 for error
codes and descriptions.
Return Parameters:
None.
Description:
The IO_Capability_Request_Reply command is used to reply to an IO
Capability Request event from the controller, and specifies the current I/O
capabilities of the host. This includes the Host input, output and out-of-band
(OOB) capabilities.
• "P-256 OOB authentication data from remote device present" when the host
has received only P-256 OOB data, or
• "P-192 and P-256 OOB authentication data from remote device present"
when the host has received both P-192 and P-256 OOB data.
Otherwise OOB_Data_Present shall be set to "OOB authentication data not
present".
Command Parameters:
0x00 DisplayOnly
0x01 DisplayYesNo
0x02 KeyboardOnly
0x03 NoInputNoOutput
0x04 - 0xFF Reserved for future use
0x03 P-192 and P-256 OOB authentication data from remote device present
0x04 - 0xFF Reserved for future use
Return Parameters:
Return
Command OCF Command Parameters Parameters
Description:
Command Parameters:
Return Parameters:
Return
Command OCF Command Parameters Parameters
Description:
Command Parameters:
Return Parameters:
Command Return
Command OCF Parameters Parameters
Description:
Command Parameters:
0x00000000 - Numeric value (passkey) entered by user. Valid values are decimal
0x000F423F 000000 - 999999.
Return Parameters:
Return
Command OCF Command Parameters Parameters
Description:
Command Parameters:
Return Parameters:
Return
Command OCF Command Parameters Parameters
Description:
Command Parameters:
0xXXXXXXXXXX BD_ADDR of remote device from which the C and R values were
XX received
C: Size: 16 Octets
Value Parameter Description
R: Size: 16 Octets
Value Parameter Description
Return Parameters:
Return
Command OCF Command Parameters Parameters
Description:
Command Parameters:
Return Parameters:
Return
Command OCF Command Parameters Parameters
Description:
Command Parameters:
0xXX Reason that Simple Pairing rejected. See Part D, Error Codes on
page 370 for a list of error codes and descriptions.
Return Parameters:
Return
Command OCF Command Parameters Parameters
Description:
Command Parameters:
0xXX Physical Link Handle identifying the physical link to be created (see
Section 5.3.2).
0x00 Reserved
0 Reserved
0x00 Reserved
0x01 Reserved
0x02 Reserved
0x06 Reserved
0x07-0xFF Reserved
0xXX...XX Dedicated AMP Key for the associated AMP. The Dedicated AMP
Key is a multi-octet integer.
Return Parameters:
None.
When the AMP Controller receives the Create Physical Link command, the
AMP Controller shall send the Command Status event to the Host. When the
AMP Controller has determined underlying connection details to populate the
AMP_ASSOC the AMP Controller shall generate a Channel Selected event to
the Host. After the Channel Selected event is received the Host uses the Read
Local AMP_ASSOC command to obtain the capabilities and status of the local
AMP. The AMP_ASSOC is sent to the remote AMP to be used to perform a
matching Accept Physical Link command. When the connection has been
completed the AMP Controller on both devices that form the connection shall
send a Physical Link Complete event to its Host. The Physical Link Complete
event indicates to the Host whether the physical link creation was successful.
This sequence must be completed before any Logical Links using this
Controller can be created.
If the AMP physical link security establishment process fails (for instance, if the
two AMP Controllers do not have matching keys) then the physical link shall be
disconnected and the Physical Link Complete event shall be sent to the Host
with the Authentication Failure error code see Part D, Error Codes on page 370.
Return
Parameter
Command OCF Command Parameters s
Description:
Command Parameters:
0x00 Reserved
0xXX See Assigned Numbers.
33-255 Reserved
0x00 Reserved
0x01 Reserved
0x02 Reserved
0x06 Reserved
0x07-0xFF Reserved
0xXX..XX Dedicated AMP Key for the associated AMP. The Dedicated AMP
Key is a multi-octet integer.
Return Parameters:
None.
When the AMP Controller receives the Accept Physical Link command, the
AMP Controller shall send the Command Status event to the Host. When the
connection has been completed, the AMP Controller shall send a Physical Link
Complete event to the Host. The Physical Link Complete event indicates to the
Host whether the link creation was successful. This sequence must be
completed before any Logical Links can be created.
If the AMP-specific security establishment process fails (for instance, if the two
AMP Controllers do not have matching keys) then the physical link shall be
deleted and the Physical Link Complete event sent to the Host with the
Authentication Failure error code.
No Physical Link Complete event shall be sent before the security is established.
Return
Command OCF Command Parameters Parameters
Description:
All logical links on a physical link should be disconnected before the physical
link is disconnected.
Command Parameters:
Return Parameters:
None.
When the AMP Controller receives the Disconnect Physical Link command, a
Command Status event shall be sent to the Host. The Disconnection Physical
Link Complete event occurs at both Hosts when the termination of the
connection has completed, and indicates that this command has been
completed.
The Disconnect Physical Link command may be used to cancel the creation of
a physical link. In such a case, the Physical Link Complete event for the
corresponding Create Physical Link or Accept Physical Link command shall
always be sent. The Physical Link Complete event shall be sent after the
Disconnection Physical Link Complete event, in the case the Controller has
already issued a Command Status event for the Disconnect Physical Link
command, thus treating it as a creation cancel. If the cancellation was
successful, the Physical Link Complete event shall be generated with the error
code Unknown Connection Identifier (0x02).
Return
Command OCF Command Parameters Parameters
Description:
The Flow_Spec structures define the traffic requirements of the link. The Flow
Spec ID values in the Tx/Rx parameters identify the logical link. Note: The
Tx_Flow_Spec and Rx_Flow_Spec parameter only use 16 out of the 18 octets
of the L2CAP Extended Flow Spec. The Type and Length fields from the
L2CAP format are not included in the Tx_Flow_Spec and Rx_Flow_Spec
parameters. A logical link can be created between two devices that are already
joined by a physical link. In order to create a logical link the Create Logical Link
command is called on one device (the initiating device) and the Accept Logical
Link command is called on the other device (the responding device). The
Flow_Spec information must match for the two calls (see [Vol 3] Part A, Section
5.6 and Section 9.1).
The AMP Controller may refuse to create the logical link if it has insufficient
resources. If the AMP Controller is already in the process of creating one or
more logical links, it may reject a Create Logical Link command with the error
code "Busy" (see Part D, Section 2.55, Controller Busy (0X3A). When the Host
receives this error code, it shall wait until a previous logical link creation
completes before requesting another logical link.
The logical link must be completed before the Logical Link Accept Timeout
expires on the local AMP.
Command Parameters:
0xXX Physical Link Handle over which the logical link is to be established.
Extended Flow Specification value defining received traffic. (See [Vol 3] Part A, Section 5.6).
Return Parameters:
None.
When the AMP Controller receives the Create Logical Link command, the AMP
Controller shall send the Command Status event to the Host. In addition, when
the AMP Controller determines the logical link is established, the AMP
Controller shall send a Logical Link Complete event to each Host. The Logical
Link Complete event contains the Logical Link Handle, Physical Link Handle,
and the corresponding flow spec ID if this command is successful.
Return
Command OCF Command Parameters Parameters
Description:
The Flow_Spec structures define the traffic requirements of the link. The Flow
Spec ID in the Tx/Rx parameter values identify the logical link.
A logical link may be created between two devices which are already joined by
a physical link. In order to create a logical link the Create Logical Link
command is called on one device (the initiating device) and the Accept Logical
Link command is called on the other device (the responding device). The
Flow_Spec information must match for the two calls. See [Vol 3] Part A,
Section 5.6 and Section 9.1 for how this is achieved.
The AMP Controller may refuse to create the logical link if it has insufficient
resources.
The logical link must be completed before the Logical Link Accept Timeout
expires on the local AMP.
Command Parameters:
0xXX Physical Link Handle over which the logical link is to be established.
Extended Flow Specification value defining transmitted traffic (see [Vol 3] Part A, Section
5.6, Extended Flow Specification Option)).
Extended Flow Specification value defining received traffic (see [Vol 3] Part A, Section 5.6,
Extended Flow Specification Option).
Return Parameters:
None.
When the AMP Controller receives the Accept Logical Link command, the AMP
Controller shall send the Command Status event to the Host. In addition, when
the AMP Controller determines the logical link is established, it shall send a
Logical Link Complete event to each Host. This action shall occur on both
controllers that form the connection. The Logical Link Complete event contains
the Logical Link Handle if this command is successful.
Return
Command OCF Command Parameters Parameters
Description:
Command Parameters:
Return Parameters:
None.
When the AMP Controller receives the Disconnect Logical Link command it
shall send the Command Status event to the Host. The Disconnection Logical
Link Complete event shall be sent to the Host when the termination of the
logical link has completed, and indicates that this command has been
completed.
Description:
Command Parameters:
0xXX Flow Spec ID identifying the logical link whose creation is being
cancelled. This matches the ID field of the Tx_Flow_Spec in the
matching Create or Accept Logical Link command.
Return Parameters:
0x01-0xFF Logical Link Cancel command failed. See Part D, Error Codes on
page 370 for list of error codes.
0xXX Physical Link Handle identifying the logical link creation being can-
celled.
0xXX Flow Spec ID identifying the logical link creation being cancelled.
This matches the ID field of the Tx_Flow_Spec in the matching Cre-
ate or Accept Logical Link command.
If the logical link is already established by the Controller, but the AMP
Controller has not yet sent the Logical Link Complete event, then the local
Controller shall detach the logical link and return a Command Complete event
with the status "Success".
If the logical link is already established, and the Logical Link Complete event
has been sent, then the AMP Controller shall return a Command Complete
event with the error code ACL Connection already exists (0x0B).
If the Logical Link Cancel command is sent to the AMP Controller without a
preceding Create or Accept Logical Link command to the same device, the
Controller shall return a Command Complete event with the error code
Unknown Connection Identifier (0x02).
The Logical Link Complete event for the corresponding Create Logical Link
Command shall always be sent. The Logical Link Complete event shall be sent
after the Command Complete event for the Logical Link Cancel command. If
the cancellation was successful, the Logical Link Complete event shall be
generated with the error code Unknown Connection Identifier (0x02).
Return
Command OCF Command Parameters Parameters
Description:
Matching commands will be issued on both devices. This ensures that both
Controllers have full knowledge of the traffic requirements on this logical link, in
both directions. Each Controller is responsible for meeting its own Tx Flow
specification.
Command Parameters:
Extended Flow Specification value defining transmitted traffic (see [Vol 3] Part A, Section
5.6, Extended Flow Specification Option).
Extended Flow Specification value defining received traffic (see [Vol 3] Part A, Section 5.6).
Return Parameters:
None.
When the AMP Controller receives the Flow Spec Modify command, the AMP
Controller shall send the Command Status event to the Host. When each AMP
Controller has completed the change a Flow Spec Modify Complete event shall
be sent to the Host. If the modify fails, the controllers shall revert to previously
specified values.
Return
Command OCF Command Parameters Parameters
Description:
The following terms are used to describe the four different audio paths:
Transmit, Receive, Input and Output. The Transmit and Receive paths are from
the perspective of the local Controller’s radio. The Input and Output paths are
from the perspective of the Controller.
INPUT
OUTPUT
OUTPUT
RECEIVE TRANSMIT
Local Controller Remote Controller
TRANSMIT RECEIVE
The following parameters are used to describe the transmit and receive paths
over the air:
• The Transmit_Bandwidth and Receive_Bandwidth parameters specify how
much bandwidth shall be available for transmitting and for receiving data.
The Host shall set the Transmit_Bandwidth and Receive_Bandwidth
parameters to be equal or shall set one of them to be zero and the other
non-zero.
• The Transmit_Coding_Format and Receive_Coding_Format parameters
specify the coding format used for transmitted or received data. The Host
shall set the Transmit_Coding_Format and Receive_Coding_Formats to be
equal. Note: When the Transmit_Coding_Format and
Receive_Coding_Format parameters are not equal to CVSD, A-law or µ-law,
the Link Manager shall map these to Transparent air mode.
• The Transmit_Codec_Frame_Size and Receive_Codec_Frame_Size
parameters specify the frame size produced by the codecs in the context of
over-the-air coding. The over-the-air packet size should have the following
relationship with the codec frame size:
Packet_Size = Frame_Size * N, or
Packet_Size = Frame_Size / N
where N is an integer.
The following parameters are used to describe the coding format used prior to
encapsulating over the audio data transport path:
• The Input_Bandwidth and Output_Bandwidth specify the nominal rate at
which the Host or Controller transfers data (note that for HCI transports this
excludes the HCI header). The Host shall either set the Input_Bandwidth
and Output_Bandwidth to be equal, or shall set one of them to be zero and
the other non-zero.
• The Input_Coding_Format and Output_Coding_Format parameters specify
the coding format used over the transport. The Host shall set the
Input_Coding_Format and Output_Coding_Format to be equal.
• The Input_Coded_Data_Size and Output_Coded_Data_Size specify the
number of bits in each sample or frame of data. For CVSD, a frame of data
shall be 8 bits.
• The Input_PCM_Data_Format and Output_PCM_Data_Format parameters
specify the data format over the transport for linear samples. It is ignored
when the data is encoded in any other way.
• The Input_PCM_Sample_Payload_MSB_Position and
Output_PCM_Sample_Payload_MSB_Position parameters indicate, for
linear samples, how many bit positions that the MSB of the sample is away
from starting at the MSB of the data. It is ignored when the data is encoded
in any other way. For example, if Input_Coded_Data_Size =16 and
Input_PCM_Sample_Payload_MSB_Position = 3, then each sample is
actually only 13 bits, the MSB (which is the sign bit for signed formats) is bit
12 (counting from the LSB at bit 0), and the contents of bits 13, 14, and 15 of
each sample are ignored.
The following parameters are used by the Link Manager to negotiate the
synchronous transport:
• The Max_Latency parameter specifies an upper limit to the time in
milliseconds between the eSCO (or SCO) instants, plus the size of the
retransmission window, plus the length of the reserved synchronous slots for
this logical transport.
• The Packet_Type parameter is a bitmap specifying which synchronous
packet types may be used by the Link Manager in the negotiation of the link
parameters. Multiple packet types are specified by bitwise OR of the packet
type codes in the table. At least one packet type shall be specified for each
negotiation. It is recommended to enable as many packet types as possible.
Note: It is allowed to enable packet types that are not supported by the local
device.
• The Retransmission_Effort parameter specifies the extra resources that are
allocated to this connection if a packet may need to be retransmitted. The
Retransmission_Effort parameter shall be set to indicate the required
behavior, or to “Don’t care”.
created when an ACL connection already exists and when it is not in Park
state.
The data at the audio data transport interface shall be treated as a stream of
bits. The bits in each unit of data delivered by the transport shall be taken LSB
first, and the units shall be taken in the order of delivery. The samples, encoded
samples, frames, or other entity to be transcoded for transmission, or that has
been transcoded after reception, shall be taken in the order of transmission or
reception, with each entity taken LSB first.
For example, if the audio data transport uses 16 bit units and the Input or
Output coding format is A-law, each unit represents two samples with the first
in the 8 least significant bits and the second in the 8 most significant bits.
Similarly, if the audio data transport uses 8 bit units and the Input or Output
coding format is linear PCM with a size of 16 bits, the 8 least significant bits of
each sample are transmitted first.
Command Parameters:
0x0000 Reserved
0xXX The number of bit positions within an audio sample that the MSB of
the sample is away from starting at the MSB of the data.
0xXX The number of bit positions within an audio sample that the MSB of
the sample is away from starting at the MSB of the data.
0x00 HCI
0x01-0xFE Logical_Channel_Number. The meaning of the logical channels will be
vendor specific.
0xFF Audio test mode
0x00 HCI
0x01-0xFE Logical_Channel_Number. The meaning of the logical channels will
be vendor specific.
1 to 255 The number of bits in each unit of data received from the Host over the
audio data transport.
0 Not applicable (implied by the choice of audio data transport)
1 to 255 The number of bits in each unit of data sent to the Host over the audio
data transport.
0 Not applicable (implied by the choice of audio data transport)
0x00 No retransmission
0x01 At least one retransmission, optimize for power consumption
Return Parameters:
None.
Return
Command OCF Command Parameters Paramters
Description:
If the Link Type of the incoming request is SCO, then the Retransmission Effort
parameter shall be ignored.
If the ACL link has encryption enabled using AES-CCM and the Controller
cannot establish an eSCO transport (e.g. the Host parameters restricting the
packet types to SCO packet types), Error code 0x0E (Connection Rejected
Due to Security Reasons) shall be returned and a SCO transport will not be
established.
Command Parameters:
Octets 1-4 Octet 1-2: Company ID, see Assigned Numbers for Company Identifier.
Octet 3-4: Vendor specific codec ID.
0x0000 Reserved
0x0000 Reserved
0xXX The number of bit positions within an audio sample that the MSB of
the sample is away from starting at the MSB of the data.
0x00 HCI
0x01-0xFE Logical_Channel_Number. The meaning of the logical channels will
be vendor specific.
0xFF Audio test mode
0x00 HCI
0x01-0xFE Logical_Channel_Number. The meaning of the logical channels will
be vendor specific.
1 to 255 The number of bits in each unit of data received from the Host over
the audio data transport.
1 to 255 The number of bits in each unit of data sent to the Host over the audio
data transport.
0 Not applicable (implied by the choice of audio data transport)
0x00 No retransmission
Return Parameters:
None.
Note: No Command Complete event will be sent by the local Controller as the
result of this command. Instead, the Synchronous Connection Complete or
Connection Complete event will indicate that this command has been
completed.
Return
Command OCF Command Parameters Parameters
Description:
Command Parameters:
0x00 R0
0x01 R1
0x02 R2
0x03 – 0xFF Reserved.
Return Parameters:
None.
When the BR/EDR Controller receives the Truncated_Page command the BR/
EDR Controller shall send the Command Status event to the Host. In addition,
when the Truncated Page procedure has completed, the BR/EDR Controller
shall send a Truncated Page Complete event to the Host.
Return
Command OCF Command Parameters Parameters
Description:
Command Parameters:
Return Parameters:
If the truncated page procedure has already completed, but the BR/EDR
Controller has not yet sent the Truncated Page Complete event, then the local
device shall return a Command Complete event with status “Success”.
Return
Command OCF Command Parameters Parameters
Description:
The Packet_Type parameter specifies which packet types are allowed. The
Host shall either enable BR packet types only, or shall enable EDR and DM1
packet types only.
The Interval_Min and Interval_Max parameters specify the range from which
the BR/EDR Controller must select the Connectionless Slave Broadcast
Interval. The selected Interval is returned.
Command Parameters:
0x00 Disabled
0x01 Enabled
0x02-0xFF Reserved for future use
0x00 BR/EDR Controller shall not sleep (that is, clock accuracy shall be
equal to or better than ± 20 ppm)
0x01 BR/EDR Controller may sleep (that is, clock accuracy shall be
equal to or better than ± 250 ppm)
0x02-0xFF Reserved for future use
N = 0xXXXX Duration in slots after which the BR/EDR Controller reports a Con-
nectionless Slave Broadcast Timeout event if it is unable to transmit
a Connectionless Slave Broadcast packet.
Range: 0x0002-0xFFFE; only even values are valid
Return Parameters:
Return
Command OCF Command Parameters Parameters
Description:
The Packet_Type parameter specifies which packet types are allowed. The
Host shall either enable BR packet types only or shall enable EDR and DM1
packet types only.
Command Parameters:
0x00 Disabled
0x01 Enabled
N = 0xXX Timing accuracy of the master in ppm. Typical values are 20ppm
and 250ppm.
Return Parameters:
Command Return
Command OCF Parameters Parameters
Description:
The synchronization train packets will be sent using the parameters specified
by the latest Write_Synchronization_Train_Parameters command. The
Synchronization Train will continue until synchronization_trainTO slots (as
specified in the last Write_Synchronization_Train command) have passed or
until the Host disables the Connectionless Slave Broadcast logical transport.
Command Parameters:
None.
Return Parameters:
None
Return
Command OCF Command Parameters Parameters
Description:
Command Parameters:
Return Parameters:
None.
Command Return
Command OCF Parameters Parameters
Description:
Command Parameters:
0xXXXXXXXXXXX BD_ADDR of remote device from which the C and R values were
X received
0xXXXXXXXXXXX Simple Pairing Hash C derived from the P-192 public key.
XXXXXXXXXXXX
XXXXXXXXX
0xXXXXXXXXXXX Simple Pairing Randomizer associated with the P-192 public key.
XXXXXXXXXXXX
XXXXXXXXX
0xXXXXXXXXXXX Simple Pairing Hash C derived from the P-256 public key.
XXXXXXXXXXXX
XXXXXXXXX
0xXXXXXXXXXXX Simple Pairing Randomizer associated with the P-256 public key.
XXXXXXXXXXXX
XXXXXXXXX
Return Parameters:
0xXXXXXXXXXXX BD_ADDR of remote device from which the C and R values were
X received
Note: Only one ACL connection can exist between two BR/EDR Controllers,
and therefore there can only be one ACL HCI Connection_Handle for each
physical link layer Connection. The BR/EDR Controller provides policy
adjustment mechanisms to provide support for a number of different policies.
This capability allows one Bluetooth module to be used to support many
different usage models, and the same Bluetooth module can be incorporated in
many different types of BR/EDR Controllers.
Description:
The Hold_Mode command is used to alter the behavior of the Link Manager,
and have it place the ACL baseband connection associated by the specified
Connection_Handle into the hold mode. The Hold_Mode_Max_Interval and
Hold_Mode_Min_Interval command parameters specify the length of time the
Host wants to put the connection into the hold mode. The local and remote
devices will negotiate the length in the hold mode. The Hold_Mode_Max_
Interval parameter is used to specify the maximum length of the Hold interval
for which the Host may actually enter into the hold mode after negotiation with
the remote device. The Hold interval defines the amount of time between when
the Hold Mode begins and when the Hold Mode is completed. The Hold_
Mode_Min_Interval parameter is used to specify the minimum length of the
Hold interval for which the Host may actually enter into the hold mode after the
negotiation with the remote device. Therefore the Hold_Mode_Min_Interval
cannot be greater than the Hold_Mode_Max_Interval. The BR/EDR Controller
will return the actual Hold interval in the Interval parameter of the Mode
Change event, if the command is successful. This command enables the Host
to support a low-power policy for itself or several other BR/EDR Controllers,
and allows the devices to enter Inquiry Scan, Page Scan, and a number of
other possible actions.
Note: The above is not valid for an HCI Data Packet sent from the Host to the
BR/EDR Controller on the master side where the Connection_Handle is a
Connection_Handle used for broadcast and the Broadcast_Flag is set to Active
Broadcast or Piconet Broadcast. The broadcast data will then never be
received by slaves in hold mode.
Command Parameters:
Return Parameters:
None.
When the BR/EDR Controller receives the Hold_Mode command, the BR/EDR
Controller shall send the Command Status event to the Host. The Mode
Change event shall occur when the Hold Mode has started and the Mode
Change event shall occur again when the Hold Mode has completed for the
specified Connection_Handle. The Mode Change event signaling the end of
the Hold Mode is an estimation of the hold mode ending if the event is for a
remote BR/EDR Controller.
Description:
The Sniff_Mode command is used to alter the behavior of the Link Manager
and have it place the ACL baseband connection associated with the specified
Connection_Handle into the sniff mode. The Connection_Handle command
parameter is used to identify which ACL link connection is to be placed in sniff
mode. The Sniff_Max_Interval and Sniff_Min_Interval command parameters
are used to specify the requested acceptable maximum and minimum periods
in the Sniff Mode. The Sniff_Min_Interval shall not be greater than the
Sniff_Max_Interval. The sniff interval defines the amount of time between each
consecutive sniff period. The BR/EDR Controller will return the actual sniff
interval in the Interval parameter of the Mode Change event, if the command is
successful. For a description of the meaning of the Sniff_Attempt and
Sniff_Timeout parameters, see Baseband Specification, Section 8.7, on page
193. Sniff_Attempt is there called Nsniff attempt and Sniff_Timeout is called Nsniff
timeout. This command enables the Host to support a low-power policy for itself
or several other BR/EDR Controllers, and allows the devices to enter Inquiry
Scan, Page Scan, and a number of other possible actions.
Note: In addition, the Connection_Handle cannot be one of the synchronous
link types. If the Host sends data to the BR/EDR Controller with a
Connection_Handle corresponding to a connection in sniff mode, the BR/EDR
Controller will keep the data in its buffers until either the data can be
transmitted or a flush, a flush timeout or a disconnection occurs. This is valid
even if the Host has not yet been notified of the sniff mode through a Mode
Change event when it sends the data. Note that it is possible for the master to
transmit data to a slave without exiting sniff mode (see description in Baseband
Specification, Section 8.7, on page 193).
Note: The above is not valid for an HCI Data Packet sent from the Host to the
BR/EDR Controller on the master side where the Connection_Handle is a
Connection_Handle used for broadcast and the Broadcast_Flag is set to Active
Broadcast or Piconet Broadcast. In that case, the broadcast data will only be
received by a slave in sniff mode if that slave happens to listen to the master
when the broadcast is made.
The Sniff_Max_Interval shall be less than the Link Supervision Timeout
configuration parameter.
Command Parameters:
Return Parameters:
None.
When the BR/EDR Controller receives the Sniff_Mode command, the BR/EDR
Controller shall send the Command Status event to the Host. The Mode
Change event shall occur when the Sniff Mode has started for the specified
Connection_Handle.
Description:
Command Parameters:
Return Parameters:
None.
Description:
The Park_State command is used to alter the behavior of the Link Manager, and
have the LM place the baseband connection associated by the specified
Connection_Handle into Park state. The Connection_Handle command parameter
is used to identify which connection is to be placed in Park state. The
Connection_Handle must be a Connection_Handle for an ACL connection. The
Beacon Interval command parameters specify the acceptable length of the interval
between beacons. However, the remote device may request shorter interval. The
Beacon_Max_Interval parameter specifies the acceptable longest length of the
interval between beacons. The Beacon_Min_Interval parameter specifies the
acceptable shortest length of the interval between beacons. Therefore, the Beacon
Min Interval cannot be greater than the Beacon Max Interval. The BR/EDR
Controller will return the actual Beacon interval in the Interval parameter of the
Mode Change event, if the command is successful. This command enables the
Host to support a low-power policy for itself or several other BR/EDR Controllers,
allows the devices to enter Inquiry Scan, Page Scan, provides support for large
number of BR/EDR Controllers in a single piconet, and a number of other possible
activities.
Note: When the Host issues the Park State command, no Connection_Handles for
synchronous connections are allowed to exist to the remote device that is identified
by the Connection_Handle parameter. If one or more Connection_Handles for
synchronous connections exist to that device, depending on the implementation, a
Command Status event or a Mode Change event (following a Command Status
event where Status=0x00) will be returned with the error code 0x0C Command
Disallowed.
Note: The above is not valid for an HCI Data Packet sent from the Host to the BR/
EDR Controller on the master side where the Connection_Handle is a
Connection_Handle used for Piconet Broadcast and the Broadcast_Flag is set to
Piconet Broadcast. In that case, slaves in park state will also receive the broadcast
data. (If the Broadcast_Flag is set to Active Broadcast, the broadcast data will
usually not be received by slaves in park state.)
It is possible for the Controller to do an automatic unpark to transmit data and then
Command Parameters:
Return Parameters:
None.
When the BR/EDR Controller receives the Park_State command, the BR/EDR
Controller shall send the Command Status event to the Host . The Mode
Change event shall occur when the Park State has started for the specified
Connection_Handle.
Description:
Command Parameters:
Return Parameters:
None.
When the BR/EDR Controller receives the Exit_Park_State command, the BR/
EDR Controller shall send the Command Status event to the Host. The Mode
Change event shall occur when park state has ended for the specified
Connection_Handle.
Command
Command OCF
Parameters Return Parameters
Description:
Command Parameters:
0x00 No Traffic.
0x01 Best Effort.
0x02 Guaranteed.
Return Parameters:
None.
Description:
The Role_Discovery command is used for a Host to determine which role the
device is performing for a particular Connection_Handle. The
Connection_Handle must be a Connection_Handle for an ACL connection.
Command Parameters:
Return Parameters:
Description:
The Switch_Role command is used to switch the current BR/EDR role the
device is performing for a particular connection with another specified BR/EDR
Controller. The BD_ADDR command parameter indicates for which connection
the role switch is to be performed. The Role parameter indicates the requested
new role that the local device performs.
Note: If there is an (e)SCO connection between the local device and the device
identified by the BD_ADDR parameter, an attempt to perform a role switch
shall be rejected by the local device.
Note: If the connection between the local device and the device identified by
the BD_ADDR parameter is placed in Sniff Mode, an attempt to perform a role
switch will be rejected by the local device.
Command Parameters:
0xXXXXXXXXXX BD_ADDR for the connected device with which a role switch is to be
XX performed.
Return Parameters:
None.
Description:
This command will read the Link Policy setting for the specified
Connection_Handle. The Connection_Handle shall be a Connection_Handle
for an ACL connection. Section 6.18 on page 485.
Command Parameters:
Return Parameters:
Description:
This command writes the Link Policy setting for the specified
Connection_Handle. The Connection_Handle shall be a Connection_Handle
for an ACL connection. See Section 6.18 on page 485.
The default value is the value set by the Write Default Link Policy Settings
Command.
Command Parameters:
Return Parameters:
Command Return
Command OCF
Parameters Parameters
Description:
This command reads the Default Link Policy setting for all new BR/EDR
connections.
Note: See the Link Policy Settings configuration parameter for more
information. See Section 6.18 on page 485.
Command Parameters:
None.
Return Parameters:
Command Return
Command OCF
Parameters Parameters
Description:
This command writes the Default Link Policy configuration value. The
Default_Link_Policy_Settings parameter determines the initial value of the
Link_Policy_Settings for all new BR/EDR connections.
Note: See the Link Policy Settings configuration parameter for more
information. See Section 6.18 on page 485.
Command Parameters:
Return Parameters:
Description:
The Flow_Specification command is used to specify the flow parameters for the
traffic carried over the ACL connection identified by the Connection_Handle. The
Connection_Handle must be a Connection_Handle for an ACL connection. The
Connection_Handle command parameter is used to identify for which connection
the Flow Specification is requested. The flow parameters refer to the outgoing or
incoming traffic of the ACL link, as indicated by the Flow_direction field. The Flow
Specification command allows the Link Manager to have the parameters of the
outgoing as well as the incoming flow for the ACL connection. The flow
parameters are defined in the L2CAP specification [Vol 3] Part A, Section 5.3,
Quality of Service (QoS) Option. The Link Manager will determine if the flow
parameters can be supported. BR/EDR Controllers that are both master and
slave can use this command.
Command Parameters:
0xXXXX Connection_Handle used to identify for which ACL connection the Flow is
specified.
Range: 0x0000 - 0x0EFF (0x0F00 – 0x0FFF Reserved for future use)
0x00 Outgoing Flow i.e. traffic send over the ACL connection
0x01 Incoming Flow i.e. traffic received over the ACL connection
0x02 – 0xFF Reserved for future use.
0x00 No Traffic
0x01 Best Effort
0x02 Guaranteed
Return Parameters:
None.
Description:
The Sniff_Subrating command specifies the parameters for sniff subrating for a
given link. The interval shall be determined from the sniff interval and the
maximum subrate latency parameters from the command. The link may have
smaller subrates and therefore lower latencies and longer timeouts than those
specified. When the sniff subrate has been exchanged a Sniff Subrating event
shall be generated. If this command is used on a link in sniff mode this shall
cause sniff subrating to be negotiated at the Link Manager, otherwise sniff
subrating shall be negotiated only after the device has entered the sniff mode.
The Maximum Latency parameter shall define the maximum allowed sniff
subrate of the remote device.
Note: If the Host does not write the sniff subrating parameters prior to sniff
subrating being initiated by the Link Manager the default values shall be used.
Command Parameters:
N = 0xXXXX The Maximum Latency parameter shall be used to calculate the maxi-
mum_sniff subrate that the remote device may use.
Default: Tsniff
Latency = N * 0.625 msec (1 Baseband slot)
Range for N: 0x0002 – 0xFFFE
Time Range: 1.25msec – 40.9 sec
N = 0xXXXX Minimum base sniff subrate timeout that the remote device may use
Default: 0x0000
Latency = N * 0.625 msec (1 Baseband slot)
Range for N: 0x0000 – 0xFFFE
Time Range: 0 sec - 40.9 sec
N = 0xXXXX Minimum base sniff subrate timeout that the local device may use.
Default: 0x0000
Latency = N * 0.625 msec (1 Baseband slot)
Range for N: 0x0000 – 0xFFFE
Time Range: 0 sec - 40.9 sec
Return Parameters:
0x01 - 0xFF Sniff Subrating command failed. See Part D, Error Codes for a list of error
codes and descriptions.
A Sniff_Subrating event shall occur when the sniff subrating has been
negotiated for the specified Connection_Handle.
For the HCI Control and Baseband Commands, the OGF is defined as 0x03.
Description:
Command Parameters:
0x0000000000004000 Reserved
0x0000000000008000 Hardware Error Event
0x0000000000010000 Flush Occurred Event
0x0000002000000000 Reserved
0x0000004000000000 Reserved
0x0000008000000000 Reserved
0x0000010000000000 Reserved
0x0000020000000000 Reserved
0x0000040000000000 Reserved
0x0040000000000000 Reserved
0x0080000000000000 Link Supervision Timeout Changed Event
0x0100000000000000 Enhanced Flush Complete Event
0x0200000000000000 Reserved
0x0400000000000000 User Passkey Notification Event
0x0800000000000000 Keypress Notification Event
0x00 00 1F FF FF FF FF Default
FF
Return Parameters:
0x01-0xFF Set_Event_Mask command failed. See Part D, Error Codes for error
codes and descriptions.
Description:
The Reset command will reset the Controller and the Link Manager on the BR/
EDR Controller, the PAL on an AMP Controller, or the Link Layer on an LE
Controller. If the Controller supports both BR/EDR and LE then the Reset
command shall reset the Link Manager, Baseband and Link Layer. The Reset
command shall not affect the used HCI transport layer since the HCI transport
layers may have reset mechanisms of their own. After the reset is completed,
the current operational state will be lost, the Controller will enter standby mode
and the Controller will automatically revert to the default values for the
parameters for which default values are defined in the specification.
Note: The Reset command will not necessarily perform a hardware reset. This
is implementation defined. On an AMP Controller, the Reset command shall
reset the service provided at the logical HCI to its initial state , but beyond this
the exact effect on the Controller device is implementation defined and should
not interrupt the service provided to other protocol stacks.
The Host shall not send additional HCI commands before the Command
Complete event related to the Reset command has been received.
Command Parameters:
None.
Return Parameters:
When the reset has been performed, a Command Complete event shall be
generated.
Description:
The Inquiry Result filter allows the BR/EDR Controller to filter out Inquiry Result
events. The Inquiry Result filter allows the Host to specify that the BR/EDR
Controller only sends Inquiry Results to the Host if the Inquiry Result event
meets one of the specified conditions set by the Host. For the Inquiry Result
filter, the Host can specify one or more of the following Filter Condition Types:
1. Return responses from all devices during the Inquiry process
2. A device with a specific Class of Device responded to the Inquiry process
3. A device with a specific BD_ADDR responded to the Inquiry process
The Inquiry Result filter is used in conjunction with the Inquiry and Periodic
Inquiry command.
The Connection Setup filter allows the Host to specify that the Controller only
sends a Connection Complete or Connection Request event to the Host if the
event meets one of the specified conditions set by the Host. For the
Connection Setup filter, the Host can specify one or more of the following Filter
Condition Types:
1. Allow Connections from all devices
2. Allow Connections from a device with a specific Class of Device
3. Allow Connections from a device with a specific BD_ADDR
The BR/EDR Controller will store these filters in volatile memory until the Host
clears the event filters using the Set_Event_Filter command or until the Reset
command is issued. The number of event filters the BR/EDR Controller can
store is implementation dependent. If the Host tries to set more filters than the
BR/EDR Controller can store, the BR/EDR Controller will return the Memory
Full error code and the filter will not be installed.
Note: The Clear All Filters has no Filter Condition Types or Conditions.
Note: In the condition that a connection is auto accepted, a Link Key Request
event and possibly also a PIN Code Request event and a Link Key Notification
event could be sent to the Host by the Controller before the Connection
Complete event is sent.
If there is a contradiction between event filters, the latest set event filter will
override older ones. An example is an incoming connection attempt where
more than one Connection Setup filter matches the incoming connection
attempt, but the Auto-Accept_Flag has different values in the different filters.
Command Parameters:
0x00 Clear All Filters (Note: In this case, the Filter_Condition_Type and Condi-
tion parameters should not be given, they should have a length of 0
octets. Filter_Type should be the only parameter.)
0x01 Inquiry Result.
0x02 Connection Setup.
Filter Condition Types: For each Filter Type one or more Filter Condition types
exists.
0x00 Return responses from all devices during the Inquiry process.
(Note: A device may be reported to the Host in an Inquiry Result event
more than once during an inquiry or inquiry period depending on the
implementation, see description in Section 7.1.1 on page 505 and Section
7.1.3 on page 508)
0x01 A device with a specific Class of Device responded to the Inquiry process.
0x02 A device with a specific BD_ADDR responded to the Inquiry process.
0x03-0xFF Reserved for future use
Condition: For each Filter Condition Type defined for the Inquiry Result Filter
and the Connection Setup Filter, zero or more Condition parameters are
required – depending on the filter condition type and filter type.
Condition:
Size: 6 Octets
0xXXXXXX Bit Mask used to determine which bits of the Class of Device parameter
are ‘don’t care’. Zero-value bits in the mask indicate the ‘don’t care’ bits
of the Class of Device.
Condition:
Size: 6 Octets
Condition:
Size: 1 Octet
0x02 Do Auto accept the connection with role switch disabled. (Auto accept
is on).
0x03 Do Auto accept the connection with role switch enabled. (Auto accept is
on).
Note: When auto accepting an incoming synchronous connection, no
role switch will be performed. The value 0x03 of the Auto_Accept_Flag
will then get the same effect as if the value had been 0x02.
0x04 – 0xFF Reserved for future use.
Condition:
Size: 7 Octets
0xXXXXXX Bit Mask used to determine which bits of the Class of Device parameter
are ‘don’t care’. Zero-value bits in the mask indicate the ‘don’t care’ bits
of the Class of Device.
Note: For an incoming SCO connection, if the class of device is
unknown then the connection will be accepted.
0x02 Do Auto accept the connection with role switch disabled. (Auto accept
is on).
0x03 Do Auto accept the connection with role switch enabled. (Auto accept is
on).
Note: When auto accepting an incoming synchronous connection, no
role switch will be performed. The value 0x03 of the Auto_Accept_Flag
will then get the same effect as if the value had been 0x02.
0x04 – 0xFF Reserved for future use.
Condition:
Size: 7 Octets
Return Parameters:
0x01-0xFF Set_Event_Filter command failed. See Part D, Error Codes for a list of
error codes and descriptions.
A Command Complete event for this command shall occur when the Controller
has enabled the filtering of events. When one of the conditions are met, a
specific event shall occur.
Description:
The Flush command is used to discard all data that is currently pending for
transmission in the Controller for the specified Connection_Handle, even if
there currently are chunks of data that belong to more than one L2CAP packet
in the Controller. Both automatically-flushable and non-automatically-flushable
packets shall be discarded (see Section 5.4.2 on page 472). After this, all data
that is sent to the Controller for the same Connection_Handle will be discarded
by the Controller until an HCI Data Packet with one of the start
Packet_Boundary_Flag values (0x00 or 0x02) is received. When this happens,
a new transmission attempt can be made.
Note: The Flush command is used for ACL connections only. In addition to the
Flush command, the automatic flush timers (see Section 7.3.29 on page 683)
can be used to automatically flush an automatically-flushable L2CAP packet
that is currently being transmitted after the specified flush timer has expired.
Command Parameters:
Return Parameters:
The Flush Occurred event shall occur once the flush is completed. A Flush
Occurred event could be from an automatic Flush or could be caused by the
Host issuing the Flush command. When the Flush command has completed, a
Command Complete event shall be generated, to indicate that the Host caused
the Flush.
Description:
Command Parameters:
None.
Return Parameters:
Description:
Command Parameters:
Return Parameters:
Description:
Note: This command will not have any effect for a device which doesn’t use
unit keys (i.e. a device which uses only combination keys).
Command Parameters:
None.
Return Parameters:
0x01-0xFF Create_New_Unit_Key command failed. See Part D, Error Codes for a list
of error codes and descriptions.
Description:
Command Parameters:
Return Parameters:
0xXXXX Total Number of Link Keys that the Controller can store.
Range: 0x0000 – 0xFFFF
Zero or more instances of the Return Link Keys event shall occur after the
command is issued. When there are no link keys stored, no Return Link Keys
events will be returned. When there are link keys stored, the number of link
keys returned in each Return Link Keys event is implementation specific.
When the Read_Stored_Link_Key command has completed a Command
Complete event shall be generated.
Command
Command OCF
Parameters Return Parameters
Description:
A Host in Secure Connections Only Mode should not store link keys in the
Controller.
Command Parameters:
Return Parameters:
Description:
Command Parameters:
Return Parameters:
Description:
Command Parameters:
Return Parameters:
0x01-0xFF Write_Local_Name command failed. See Part D, Error Codes for a list of
error codes and descriptions.
Description:
The Read_Local_Name command provides the ability to read the stored user-
friendly name for the BR/EDR Controller. See Section 6.23 on page 488.
Command Parameters:
None.
Return Parameters:
Description:
Command Parameters:
None.
Return Parameters:
Description:
Command Parameters:
Return Parameters:
Description:
This command reads the value for the Page_Timeout configuration parameter.
See Section 6.6 on page 480.
Command Parameters:
None.
Return Parameters:
Description:
This command writes the value for the Page_Timeout configuration parameter.
The Page_Timeout configuration parameter defines the maximum time the
local Link Manager shall wait for a baseband page response from the remote
device at a locally initiated connection attempt. If this time expires and the
remote device has not responded to the page at baseband level, the
connection attempt will be considered to have failed.
Command Parameters:
Return Parameters:
0x01-0xFF Write_Page_Timeout command failed. See Part D, Error Codes for a list
of error codes and descriptions.
Description:
This command reads the value for the Scan_Enable parameter configuration
parameter. See Section 6.1 on page 478.
Command Parameters:
None.
Return Parameters:
Description:
This command writes the value for the Scan_Enable configuration parameter.
See Section 6.1 on page 478.
Command Parameters:
0x04-0xFF Reserved
Return Parameters:
Description:
Note: Page Scan is only performed when Page_Scan is enabled (see 6.1,
7.3.17 and 7.3.18). A changed Page_Scan_Interval could change the local
Page_Scan_Repetition_Mode (see Part B, Baseband Specification).
Command Parameters:
None.
Return Parameters:
Description:
Note: Page Scan is only performed when Page_Scan is enabled (see 6.1,
7.3.17 and 7.3.18). A changed Page_Scan_Interval could change the local
Page_Scan_Repetition_Mode (see Part B, Baseband Specification).
Command Parameters:
Return Parameters:
Description:
Note: Inquiry Scan is only performed when Inquiry_Scan is enabled see 6.1,
7.3.17 and 7.3.18).
Command Parameters:
None.
Return Parameters:
Description:
Note: Inquiry Scan is only performed when Inquiry_Scan is enabled (see 6.1,
7.3.17 and 7.3.18).
Command Parameters:
Return Parameters:
Description:
Command Parameters:
None.
Return Parameters:
Description:
Command Parameters:
0x02-0xFF Reserved
Return Parameters:
Description:
This command reads the value for the Class_of_Device parameter. See
Section 6.26 on page 489.
Command Parameters:
None.
Return Parameters:
Return
Command OCF Command Parameters
Parameters
Description:
Command Parameters:
Return Parameters:
Description:
This command reads the values for the Voice_Setting configuration parameter.
See Section 6.12 on page 482.
Command Parameters:
None.
Return Parameters:
Description:
This command writes the values for the Voice_Setting configuration parameter.
See Section 6.12 on page 482.
Command Parameters:
Return Parameters:
0x01-0xFF Write_Voice_Setting command failed. See Part D, Error Codes for a list of
error codes and descriptions.
Description:
This command reads the value for the Flush_Timeout parameter for the
specified Connection_Handle. See Section 6.19 on page 486.
Command Parameters:
Return Parameters:
Description:
This command writes the value for the Flush_Timeout parameter for the
specified Connection_Handle. See Section 6.19 on page 486.
Command Parameters:
Return Parameters:
Command
Command OCF
Parameters Return Parameters
Description:
This command reads the device’s parameter value for the Number of
Broadcast Retransmissions. See Section 6.20 on page 486
Command Parameters:
None.
Return Parameters:
Description:
This command writes the device’s parameter value for the Number of
Broadcast Retransmissions. See Section 6.20 on page 486.
Command Parameters:
Return Parameters:
Command
Command OCF Parameters Return Parameters
Description:
Command Parameters:
None.
Return Parameters:
Command
Command OCF
Parameters Return Parameters
Description:
This command writes the value for the Hold_Mode_Activity parameter.
See Section 6.16 on page 484.
Command Parameters:
Return Parameters:
Description:
This command reads the values for the Transmit_Power_Level parameter for
the specified Connection_Handle. The Connection_Handle shall be a
Connection_Handle for an ACL connection.
Command Parameters:
Return Parameters:
Description:
Command Parameters:
None.
Return Parameters:
Description:
Command Parameters:
Return Parameters:
Description:
This command is used by the Host to turn flow control on or off for data and/or
voice sent in the direction from the Controller to the Host. If flow control is turned
off, the Host should not send the Host_Number_Of_Completed_Packets
command. That command will be ignored by the Controller if it is sent by the
Host and flow control is off. If flow control is turned on for HCI ACL Data Packets
and off for HCI synchronous Data Packets,
Host_Number_Of_Completed_Packets commands sent by the Host should only
contain Connection Handles for ACL connections. If flow control is turned off for
HCI ACL Data Packets and on for HCI synchronous Data Packets,
Host_Number_Of_Completed_Packets commands sent by the Host should only
contain Connection Handles for synchronous connections. If flow control is
turned on for HCI ACL Data Packets and HCI synchronous Data Packets, the
Host will send Host_Number_Of_Completed_Packets commands both for ACL
connections and synchronous connections.
The Flow_Control_Enable parameter shall only be changed if no connections
exist.
Command Parameters:
0x03 Flow control on both for HCI ACL Data Packets and HCI synchronous
Data Packets in direction from Controller to Host.
0x04-0xFF Reserved
Return Parameters:
Return
Command OCF Command Parameters
Parameters
Description:
The Set Controller To Host Flow Control Command is used to turn flow control
on or off. The Host_ACL_Data_Packet_Length command parameter will be
used to determine the size of the L2CAP segments contained in ACL Data
Packets, which are transferred from the Controller to the Host. The
Host_Synchronous_Data_Packet_Length command parameter is used to
determine the maximum size of HCI synchronous Data Packets. Both the Host
and the Controller shall support command and event packets, where the data
portion (excluding header) contained in the packets is 255 octets in size.
Command Parameters:
0xXXXX Maximum length (in octets) of the data portion of each HCI ACL Data
Packet that the Host is able to accept.
0xXX Maximum length (in octets) of the data portion of each HCI synchronous
Data Packet that the Host is able to accept.
0xXXXX Total number of HCI ACL Data Packets that can be stored in the data
buffers of the Host.
0xXXXX Total number of HCI synchronous Data Packets that can be stored in the
data
buffers of the Host.
Return Parameters:
0x01-0xFF Host_Buffer_Size command failed. See Part D, Error Codes for a list of
error codes and descriptions.
Return
Command OCF Command Parameters
Parameters
Description:
The Set Controller To Host Flow Control Command is used to turn flow control on
or off. If flow control from the Controller to the Host is turned on, the
Host_Buffer_Size command shall always be sent by the Host after a power-on or
a reset before the first Host_Number_Of_Completed_Packets command is sent.
Command Parameters:
N = 0xXXXX The number of HCI Data Packets that have been completed for the asso-
ciated Connection Handle since the previous time the event was returned.
Range for N: 0x0000-0xFFFF
Return Parameters:
None.
Command
Command OCF
Parameters Return Parameters
Description:
The Handle used for this command shall be the ACL connection to the
appropriate device. See Section 6.21 on page 487.
Command Parameters:
Return Parameters:
0xXXXX Specifies which Connection Handle’s Link Supervision Timeout value was
read.
The Handle is a Connection Handle for a BR/EDR Controller. On an AMP
a Physical Link Handle is used as the lower 8 bits of the Handle. The
upper 4 bits are reserved and shall be set to 0.
Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use)
0x0000 No Link_Supervision_Timeout.
N = 0xXXXX Measured in Number of BR/EDR Baseband slots
Link_Supervision_Timeout = N * 0.625 msec (1 Baseband slot)
Range for N: 0x0001 – 0xFFFF
Time Range: 0.625ms - 40.9 sec
Description:
The Handle used for this command shall be the ACL connection to the
appropriate device. This command will set the Link_Supervision_
Timeout values for other Synchronous Handles to that device.
See Section 6.21 on page 487.
Command Parameters:
0x0000 No Link_Supervision_Timeout.
N = 0xXXXX Measured in Number of BR/EDR Baseband slots
Link_Supervision_Timeout = N*0.625 msec (1 Baseband slot)
Range for N: 0x0001 – 0xFFFF
Time Range: 0.625ms – 40.9 sec
Default: N = 0x7D00
Link_Supervision_Timeout = 20 sec
Mandatory Range for Controller: 0x0190 to 0xFFFF; plus 0 for infinite tim-
eout
Return Parameters:
0xXXXX Specifies which Handle’s Link Supervision Timeout value was written.
The Handle is a Connection Handle for a BR/EDR Controller. On an AMP
a Physical Link Handle is used as the lower 8 bits of the Handle. The
upper 4 bits (of the 12 meaningful bits) are reserved and shall be set to 0.
Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use)
Command Return
Command OCF
Parameters Parameters
Description:
This command reads the value for the number of Inquiry Access Codes (IAC)
that the local BR/EDR Controller can simultaneous listen for during an Inquiry
Scan. All BR/EDR Controllers are required to support at least one IAC, the
General Inquiry Access Code (the GIAC). Some BR/EDR Controllers support
additional IACs.
Command Parameters:
None.
Return Parameters:
0xXX Specifies the number of Supported IAC that the local BR/EDR Controller
can simultaneous listen for during an Inquiry Scan.
Range: 0x01-0x40
Description:
This command reads the LAP(s) used to create the Inquiry Access Codes
(IAC) that the local BR/EDR Controller is simultaneously scanning for during
Inquiry Scans. All BR/EDR Controllers shall support at least one IAC, the
General Inquiry Access Code (the GIAC). Some BR/EDR Controllers support
additional IACs.
Command Parameters:
None.
Return Parameters:
0xXX Specifies the number of IACs which are currently in use by the local BR/
EDR Controller to simultaneously listen for during an Inquiry Scan.
Range: 0x01-0x40
0xXXXXXX LAPs used to create the IAC which is currently in use by the local BR/EDR
Controller to simultaneously listen for during an Inquiry Scan.
Range: 0x9E8B00-0x9E8B3F
Description:
This command writes the LAP(s) used to create the Inquiry Access Codes
(IAC) that the local BR/EDR Controller is simultaneously scanning for during
Inquiry Scans. All BR/EDR Controller shall support at least one IAC, the
General Inquiry Access Code (the GIAC). Some BR/EDR Controllers support
additional IACs.
This command shall clear any existing IACs and stores Num_Current_IAC and
the IAC_LAPs in to the controller. If Num_Current_IAC is greater than
Num_Support_IAC then only the first Num_Support_IAC shall be stored in the
controller, and a Command Complete event with error code Success (0x00)
shall be generated.
Command Parameters:
0xXX Specifies the number of IACs which are currently in use by the local BR/
EDR Controller to simultaneously listen for during an Inquiry Scan.
Range: 0x01-0x40
0xXXXXXX LAP(s) used to create IAC which is currently in use by the local BR/EDR
Controller to simultaneously listen for during an Inquiry Scan.
Range: 0x9E8B00-0x9E8B3F.
The GIAC is the default IAC to be used. If additional IACs are supported,
additional default IAC will be determined by the manufacturer.
Return Parameters:
Return
Command OCF Command Parameters
Parameters
Description:
The Set_AFH_Host_Channel_Classification command allows the Host to specify
a channel classification based on its “local information”. This classification
persists until overwritten with a subsequent
Set_AFH_Host_Channel_Classification command or until the BR/EDR
Controller is reset.
This command shall be supported by a device that declares support for any of
the AFH_capable_master, AFH_classification_slave or
AFH_classification_master features.
If this command is used, updates should be sent within 10 seconds, of the
Host knowing that the channel classification has changed. The interval
between two successive commands sent shall be at least 1 second.
Command Parameters:
Return Parameters:
Command Return
Command OCF
Parameters Parameters
Description:
Command Parameters:
None.
Return Parameters:
0x02-0xFF Reserved
Return
Command OCF Command Parameters
Parameters
Description:
This command writes the Inquiry Scan Type configuration parameter of the
local BR/EDR Controller. See Section 6.4 on page 479. For details, see the
Baseband Specification, Part B, Inquiry scan substate.
Command Parameters:
Return Parameters:
Return
Command OCF Command Parameters
Parameters
Description:
Return Parameters:
0x02 Inquiry Result with RSSI format or Extended Inquiry Result format
0x03-0xFF Reserved
Return
Command OCF Command Parameters
Parameters
Description:
Command Parameters:
Return Parameters:
0x01-0xFF Write_Inquiry_Mode command failed. See Part D, Error Codes for a list of
error codes and descriptions.
Command Return
Command OCF
Parameters Parameters
Description:
This command reads the Page Scan Type configuration parameter of the local
BR/EDR Controller. See Section 6.11 on page 482. For details, see the
Baseband Specification, “Part B, Page Scan Substate” .
Return Parameters:
Return
Command OCF Command Parameters
Parameters
Description:
This command writes the Page Scan Type configuration parameter of the local
BR/EDR Controller. See Section 6.11 on page 482. For details, see the
Baseband Specification, Part B, Section 8.3.1, Page Scan Substate.
Command Parameters:
Return Parameters:
Command Return
Command OCF
Parameters Parameters
Description:
This command shall be supported by a device that declares support for any of
the AFH_capable_master, AFH_classification_slave or
AFH_classification_master features.
Return Parameters:
Return
Command OCF Command Parameters
Parameters
Description:
This command shall be supported by a device that declares support for any of
the AFH_capable_master, AFH_classification_slave or
AFH_classification_master features.
Command Parameters:
Return Parameters:
Command
Command OCF Parameters Return Parameters
Description:
Command Parameters:
None.
Return Parameters:
Command
Command OCF Parameters Return Parameters
Description:
Command Parameters:
Return Parameters:
Return
Command OCF Command Parameters Parameters
Description:
This command is used by the Host to cause the BR/EDR Controller to refresh
the encryption key by pausing and resuming encryption.
Command Parameters:
0xXXXX Connection Handle for the ACL connection to have the encryption
key refreshed on.
Return
Command OCF Command Parameters Parameters
Description:
Command Parameters:
None.
Return Parameters:
Return
Command OCF Command Parameters Parameters
Description:
This command enables Simple Pairing mode in the BR/EDR Controller. When
Simple Pairing Mode is set to 'enabled' the Link Manager shall respond to an
LMP_io_capability_req PDU with an LMP_io_capability_res PDU and continue
with the subsequent pairing procedure. When Simple Pairing mode is set to
'disabled', the Link Manager shall reject an IO capability request. A Host shall
not set the Simple Pairing Mode to ‘disabled.’
The Link Manager Secure Simple Pairing (Host Support) feature bit shall be set
to the Simple_Pairing_Mode parameter. The default value for
Simple_Pairing_Mode shall be 'disabled.' When Simple_Pairing_Mode is set to
'enabled,' the bit in the LMP features mask indicating support for Secure
Simple Pairing (Host Support) shall be set to enabled in subsequent responses
to an LMP_features_req from a remote device.
Command Parameters:
Return Parameters:
Return
Command OCF Command Parameters Parameters
Description:
Note: Each OOB transfer will have unique C and R values so after each OOB
transfer this command shall be used to obtain a new set of values for the next
OOB transfer.
Note: The controller keeps information used to generate these values for later
use in the simple pairing process. If the BR/EDR Controller is powered off or
reset then this information is lost and the values obtained before the power off
or reset are invalid.
Command Parameters:
None.
Return Parameters:
C: Size: 16 Octets
Value Parameter Description
R: Size: 16 Octets
Value Parameter Description
Return
Command OCF Command Parameters Parameters
Description:
This command reads the power level used to transmit the FHS and EIR data
packets. This can be used directly in the Tx Power Level EIR data type.
Command Parameters:
None.
Return Parameters:
Return
Command OCF Command Parameters Parameters
Description:
This command writes the inquiry transmit power level used to transmit the
inquiry (ID) data packets. The Controller should use the supported TX power
level closest to the Tx_Power parameter.
Command Parameters:
Return Parameters:
Description:
This 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.
Command Parameters:
Return Parameters:
Command
Command OCF Parameters Return Parameters
Description:
Command Parameters:
None.
Return Parameters:
Return
Command OCF Command Parameters Parameters
Description:
Command Parameters:
Return Parameters:
Command
Command OCF Parameters Return Parameters
Description:
After flushing the packets, all data that is sent to the BR/EDR Controller for the
same Handle and packet type shall be discarded by the Controller until an HCI
Data Packet with the start Packet_Boundary_Flag (0x00 or 0x02) is received.
This command allows higher-level software to control how long the baseband
should try to retransmit a baseband packet of a specific type for a Handle
before all data of that type currently pending for transmission in the Controller
should be flushed. Note that the Enhanced Flush command is used for ACL-U
connections only. On the BR/EDR Controller, the Flush command can be used
to flush all packets (see Section 7.3.4 on page 652). In addition to the
Enhanced Flush and Flush commands, the automatic flush timers (see Section
7.3.29 on page 683) can be used to automatically flush an automatically-
flushable L2CAP packet that is currently being transmitted after the specified
flush timer has expired.
This command shall be supported by a device that declares support for the
Non-Flushable Packet Boundary Flag feature.
Command Parameters:
Return Parameters:
None.
Command
Command OCF Parameters Return Parameters
Description:
Command Parameters:
None.
Return Parameters:
Command Return
Command OCF Parameters Parameters
Description:
Command Parameters:
Return Parameters:
Return
Command OCF Command Parameters Parameters
Description:
Command Parameters:
Return Parameters:
Command
Command OCF Parameters Return Parameters
Description:
Command Parameters:
None.
Return Parameters:
Return
Command OCF Command Parameters Parameters
Description:
Command Parameters:
Return Parameters:
Command
Command OCF Parameters Return Parameters
Description:
Command Parameters:
None.
Return Parameters:
Command Return
Command OCF Parameters Parameters
Description:
Command Parameters:
0x00 Packet based data flow control mode (default for a BR/EDR Control-
ler)
0x01 Data block based data flow control mode (default for an AMP Control-
ler)
Return Parameters:
Command Return
Command OCF Parameters Parameters
Description:
Command Parameters:
0x01-0xFF Reserved.
Return Parameters:
Description:
This command reads the value of the Best Effort Flush Timeout from the AMP
Controller.
Command Parameters:
Return Parameters:
Return
Command OCF Command Parameters Parameters
Description:
This command writes the value of the Best_Effort_Flush_Timeout into the AMP
Controller. The Best_Effort_Flush_Timeout shall be associated with the given
logical link, and that Logical_Link_Handle must specify a Best Effort logical
link.
Command Parameters:
Return Parameters:
Description:
Command Parameters:
Return Parameters:
None.
A Command Status event is sent from the AMP Controller to the Host when the
AMP Controller has received the Short_Range_Mode command. When the
Short_Range_Mode command has completed, a Short Range Mode Change
Complete event shall be generated.
Command
Command OCF Parameters Return Parameters
Description:
Command Parameters:
None.
Return Parameters:
Description:
The default value for these feature bits shall be disabled. When
LE_Supported_Host is set to enabled the bit in LMP features mask indicating
support for LE Support (Host) shall be set. The Simultaneous_LE_Host
parameter shall be set to disabled.
Command Parameters:
Return Parameters:
Return
Command OCF Command Parameters Parameters
Description:
Command Parameters:
Return Parameters:
Command Return
Command OCF Parameters Parameters
Description:
This command may be supported by a device that declares support for the
Coarse Clock Adjustment feature. It may be used to allow the Controller to
align the piconet clock with an external frame structure.
When the external frame structure is a multiple of 1.25 ms, it can be aligned in
a stable manner with the piconet clock.
The start of the external frame structure is defined as an offset from an external
frame synchronization signal. This offset is defined by the
Ext_Frame_Sync_Assert_Offset parameter. The offset is represented as the
time (in microseconds) from the start of the next MWS frame to the
FRAME_SYNC signal.
Command Parameters:
0x00 Downlink
0x01 Uplink
0x02 Bi-Directional
0x03 Guard Period
0x04-0xFF Reserved
Return Parameters:
MWS_RX_Deassert_Jitter, Bluetooth_Rx_Priority_
Assert_Jitter,
MWS_TX_Assert_Offset,
Bluetooth_Rx_Priority_
MWS_TX_Assert_Jitter, Deassert_Offset,
MWS_TX_Deassert_Offset, Bluetooth_Rx_Priority_
MWS_TX_Deassert_Jitter, Deassert_Jitter,
MWS_Pattern_Assert_Offset, 802_Rx_Priority_Assert_
MWS_Pattern_Assert_Jitter, Offset,
MWS_Inactivity_Duration_ 802_Rx_Priority_Assert_
Assert_Offset, Jitter,
MWS_Inactivity_Duration_ 802_Rx_Priority_Deassert_
Assert_Jitter, Offset,
MWS_Scan_Frequency_ 802_Rx_Priority_Deassert_
Assert_Offset, Jitter,
MWS_Scan_Frequency_ Bluetooth_Tx_On_Assert_
Assert_Jitter, Offset,
MWS_Priority_Assert_ Bluetooth_Tx_On_Assert_
Offset_Request Jitter,
Bluetooth_Tx_On_Deassert_
Offset,
Bluetooth_Tx_On_Deassert_
Jitter,
802_Tx_On_Assert_Offset,
802_Tx_On_Assert_Jitter,
802_Tx_On_Deassert_Offset,
802_Tx_On_Deassert_Jitter
Description:
Command Parameters:
Return Parameters:
Description:
Command Parameters:
Return Parameters:
Description:
Command Parameters:
0xXXXX Lower edge of the MWS scan frequency in MHz (unsigned integer).
0xXXXX Upper edge of the MWS scan frequency in MHz (unsigned integer).
Return Parameters:
Description:
Command Parameters:
MWS_PATTERN_IntervalDuration[i]:
Size: MWS_PATTERN_NumInterval * 2 Octets
Value Parameter Description
MWS_PATTERN_IntervalType[i]:
Size: MWS_PATTERN_NumInterval * 1 Octet
Value Parameter Description
Return Parameters:
Return
Command OCF Command Parameters Parameters
Description:
Command Parameters:
Return Parameters:
Return
Command OCF Command Parameters Parameters
Description:
The Delete_Reserved_LT_ADDR command requests that the BR/EDR
Controller cancel the reservation for a specific LT_ADDR reserved for the
purposes of Connectionless Slave Broadcast.
If the LT_ADDR indicated in the LT_ADDR parameter is not reserved by the
BR/EDR Controller, it shall return the Unknown Connection Identifier (0x02)
error code.
If connectionless slave broadcast mode is still active, then the Controller shall
return the Command Disallowed (0x0C) error code.
Command Parameters:
Return Parameters:
Return
Command OCF Command Parameters Parameters
Description:
The Host may fragment the data using the Fragment field in the command. If
the combined length of the fragments exceeds the capacity of the largest
allowed packet size specified in the Set Connectionless Slave Broadcast
command, all fragments associated with the data being assembled shall be
discarded and the Invalid HCI Command Parameters error (0x12) shall be
returned.
Command Parameters:
Return Parameters:
Command
Command OCF Parameters Return Parameters
Description:
Command Parameters:
None.
Return Parameters:
Description:
Command Parameters:
Return Parameters:
Command Return
Command OCF Parameters Parameters
Description:
Return Parameters:
Command Return
Command OCF Parameters Parameters
Description:
The Link Manager Secure Connections (Host Support) feature bit shall be set
to the Secure_Connections_Host_Support parameter. The default value for
Secure_Connections_Host_Support shall be 'disabled.' When
Secure_Connections_Host_Support is set to 'enabled,' the bit in the LMP
features mask indicating support for Secure Connections (Host Support) shall
be set to enabled in subsequent responses to an LMP_features_req from a
remote device.
Command Parameters:
Return Parameters:
Command Return
Command OCF Parameters Parameters
Description:
Command Parameters:
Return Parameters:
Command Return
Command OCF Parameters Parameters
Description:
Command Parameters:
Return Parameters:
Command Return
Command OCF Parameters Parameters
Description:
Note: Each OOB transfer will have unique C_192, R_192, C_256, and R_256
values so after each OOB transfer this command shall be used to obtain a new
set of values for the next OOB transfer.
Note: The Controller keeps information used to generate these values for later
use in the simple pairing process. If the BR/EDR Controller is powered off or
reset then this information is lost and the values obtained before the power off
or reset are invalid.
Command Parameters:
None.
Return Parameters:
0xXXXXXXXXXXX Simple Pairing Hash C derived from the P-192 public key.
XXXXXXXXXXXX
XXXXXXXXX
0xXXXXXXXXXXX Simple Pairing Randomizer associated with the P-192 public key.
XXXXXXXXXXXX
XXXXXXXXX
0xXXXXXXXXXXX Simple Pairing Hash C derived from the P-256 public key.
XXXXXXXXXXXX
XXXXXXXXX
0xXXXXXXXXXXX Simple Pairing Randomizer associated with the P-256 public key.
XXXXXXXXXXXX
XXXXXXXXX
Command Return
Command OCF Parameters Parameters
Description:
Command Parameters:
None.
Return Parameters:
Command Return
Command OCF Parameters Parameters
Description:
Command Parameters:
0 Default
N = 0xXXXX Extended Page Timeout measured in Number of Baseband slots.
Interval Length = N * 0.625 msec (1 Baseband slot)
Range for N: 0x0000 – 0xFFFF
Time Range: 0 - 40.9 Seconds
Mandatory Range for Controller: 0x0000 to 0xFFFF
Return Parameters:
Command Return
Command OCF Parameters Parameters
Description:
Command Parameters:
None.
Return Parameters:
Command Return
Command OCF Parameters Parameters
Description:
Command Parameters:
0 Default
0xXXXX Extended_Inquiry_Length measured in Number of Baseband slots.
Interval Length = N * 0.625 msec (1 Baseband slot)
Range for N: 0x0000 – 0xFFFF
Time Range: 0 - 40.9 Seconds
Return Parameters:
Command
Command OCF
Parameters Return Parameters
Description:
This command reads the values for the version information for the local
Controller.
The HCI Version information defines the version information of the HCI layer.
The LMP/PAL Version information defines the version of the LMP or PAL. The
Manufacturer_Name information indicates the manufacturer of the local device.
Command Parameters:
None.
Return Parameters:
0xXXXX Subversion of the Current LMP or PAL in the Controller. This value is
implementation dependent.
Command
Command OCF
Parameters Return Parameters
Description:
This command reads the list of HCI commands supported for the local
Controller.
Command Parameters:
None.
Return Parameters:
Bit mask for each HCI Command. If a bit is 1, the Controller supports the
corresponding command and the features required for the command.
Unsupported or undefined commands shall be set to 0.
See section 6.27, “Supported Commands,” on page 489.
Command
Command OCF
Parameters Return Parameters
Description:
This command requests a list of the supported features for the local BR/EDR
Controller. This command will return a list of the LMP features. For details see
Part C, Link Manager Protocol Specification on page 224.
Command Parameters:
None.
Return Parameters:
0xXXXXXXXX Bit Mask List of LMP features. For details see Part C, Link Manager Proto-
XXXXXXXX col Specification on page 224.
Command
Command OCF Parameters Return Parameters
Description:
Command Parameters:
Return Parameters:
0x00-0xFF The highest features page number which contains non-zero bits for the
local device.
Command
Command OCF
Parameters Return Parameters
Description:
The Read_Buffer_Size command is used to read the maximum size of the data
portion of HCI ACL and synchronous Data Packets sent from the Host to the
Controller. The Host will segment the data to be transmitted from the Host to
the Controller according to these sizes, so that the HCI Data Packets will
contain data with up to these sizes. The Read_Buffer_Size command also
returns the total number of HCI ACL and synchronous Data Packets that can
be stored in the data buffers of the Controller. The Read_Buffer_Size
command must be issued by the Host before it sends any data to the
Controller.
Command Parameters:
None.
Return Parameters:
0xXXXX Maximum length (in octets) of the data portion of each HCI ACL Data
Packet that the Controller is able to accept.
0xXX Maximum length (in octets) of the data portion of each HCI Synchronous
Data Packet that the Controller is able to accept.
0xXXXX Total number of HCI ACL Data Packets that can be stored in the data
buffers of the Controller.
0xXXXX Total number of HCI Synchronous Data Packets that can be stored in the
data buffers of the Controller.
Command
Command OCF
Parameters Return Parameters
Description:
Command Parameters:
None.
Return Parameters:
Description:
The Host uses this information when fragmenting data for transmission, and
when performing block-based flow control, based on the Number Of
Completed Data Blocks event. The Read_Data_Block_Size command shall be
issued by the Host before it sends any data to the Controller.
Command Parameters:
None.
Return Parameters:
0xXXXX Maximum length (in octets) of the data portion of an HCI ACL Data Packet
that the Controller is able to accept for transmission. For AMP Controllers
this always equals to Max_PDU_Size.
0xXXXX Maximum length (in octets) of the data portion of each HCI ACL
Data Packet that the Controller is able to hold in each of its data
block buffers.
0xXXXX Total number of data block buffers available in the Controller for the
storage of data packets scheduled for transmission.
Command
Command OCF Parameters Return Parameters
Description:
This command reads a list of the Bluetooth SIG approved codecs supported by
the Controller, as well as vendor specific codecs, which are defined by an
individual manufacturer.
Command Parameters:
None
Return Parameters:
0xXX, 0xXX, … An array of codec identifiers. See Assigned Numbers for Codec ID
Vendor_Specific_Codecs[i]:
Size: 4 * Number_of_Supported_Vendor_Specific_Codecs
Value Parameter Description
0xXXXXXXXX Octets 0 and 1: Company ID, see Assigned Numbers for Company
Identifier
Octets 2 and 3: Vendor defined codec ID
Description:
This command reads the value for the Failed_Contact_Counter parameter for a
particular connection to another device. The Handle shall be a Handle for an
ACL connection. See Section 6.15 on page 483.
Command Parameters:
0xXXXX The Handle for the Connection for which the Failed Contact Counter
should be read.
The Handle is a Connection_Handle for a BR/EDR Controller and a Logi-
cal_Link_Handle for an AMP Controller.
Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use)
Return Parameters:
0xXXXX The Handle for the connection for which the Failed Contact Counter has
been read.
The Handle is a Connection_Handle for a BR/EDR Controller and a Logi-
cal_Link_Handle for an AMP Controller.
Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use)
Description:
This command resets the value for the Failed_Contact_Counter parameter for
a particular connection to another device. The Handle shall be a Handle for an
ACL connection. See Section 6.15 on page 483.
Command Parameters:
0xXXXX The Handle for the connection for which the Failed Contact Counter
should be reset.
The Handle is a Connection Handle for a BR/EDR Controller and a Logical
Link Handle for an AMP Controller.
Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use)
Return Parameters:
0xXXXX The Handle for the connection for which the Failed Contact Counter has
been reset.
The Handle is a Connection_Handle for a BR/EDR Controller and a Logi-
cal_Link_Handle for an AMP Controller.
Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use)
Description:
This command returns the value for the Link_Quality for the specified Handle.
The Handle shall be a Handle for an ACL connection. This command shall
return a Link_Quality value from 0-255, which represents the quality of the link
between two BR/EDR Controllers. The higher the value, the better the link
quality is. Each Bluetooth module vendor will determine how to measure the
link quality.
Command Parameters:
0xXXXX The Handle for the connection for which link quality parameters are to be
read.
The Handle is a Connection_Handle for a BR/EDR Controller and a Phys-
ical_Link_Handle for an AMP Controller.
Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use)
Return Parameters:
0xXXXX The Handle for the connection for which the link quality parameter has
been read.
The Handle is a Connection_Handle for a BR/EDR Controller and a Phys-
ical_Link_Handle for an AMP Controller.
Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use)
0xXX The current quality of the Link connection between the local device and
the remote device specified by the Handle.
Range: 0x00 – 0xFF
The higher the value, the better the link quality is.
Description:
This command reads the Received Signal Strength Indication (RSSI) value
from a Controller.
Note: How accurate the dB values will be depends on the Bluetooth hardware.
The only requirements for the hardware are that the BR/EDR Controller is able
to tell whether the RSSI is inside, above or below the Golden Device Power
Range.
The RSSI measurement compares the received signal power with two
threshold levels, which define the Golden Receive Power Range. The lower
threshold level corresponds to a received power between -56 dBm and 6 dB
above the actual sensitivity of the receiver. The upper threshold level is 20 dB
above the lower threshold level to an accuracy of +/- 6 dB.
Command Parameters:
0xXXXX The Handle for the connection for which the RSSI is to be read.
The Handle is a Connection_Handle for a BR/EDR Controller and a Phys-
ical_Link_Handle for an AMP Controller.
Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use)
Return Parameters:
0xXXXX The Handle for the connection for which the RSSI has been read.
The Handle is a Connection_Handle for a BR/EDR Controller and a Phys-
ical_Link_Handle for an AMP Controller.
Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use)
BR/EDR
Range: -128 ≤ N ≤ 127 (signed integer)
Units: dB
AMP:
Range: AMP type specific (signed integer)
Units: dBm
LE:
Range: -127 to 20, 127 (signed integer)
Units: dBm
Description:
This command returns the values for the AFH_Mode and AFH_Channel_Map
for the specified Connection_Handle. The Connection_Handle shall be a
Connection_Handle for an ACL connection.
The returned values indicate the state of the hop sequence specified by the
most recent LMP_Set_AFH message for the specified Connection_Handle,
regardless of whether the master has received the baseband ACK or whether
the AFH_Instant has passed.
This command shall be supported by a device that declares support for either
the AFH_capable_slave or AFH_capable_master feature.
Command Parameters:
0xXXXX The Connection_Handle for the connection for which the Channel Map is
to be read.
Range: 0x0000-0x0EFF (0x0F00-0x0FFF Reserved for future use)
Return Parameters:
0xXXXX The Connection_Handle for the connection for which the Channel Map is
to be read.
Range: 0x0000-0x0EFF (0x0F00-0x0FFF Reserved for future use)
0xXXXXXXXX If AFH_Mode is AFH enabled then this parameter contains 79 1-bit fields,
XXXXXXXXX otherwise the contents are reserved.
XXX
The nth such field (in the range 0 to 78) contains the value for channel n:
Channel n is unused = 0
Channel n is used = 1
Range: 0x00000000000000000000-0x7FFFFFFFFFFFFFFFFFFF
(0x80000000000000000000-0xFFFFFFFFFFFFFFFFFFFF Reserved for
future use)
Description:
This command reads the estimate of the value of the Bluetooth Clock from the
BR/EDR Controller.
The accuracy reflects the clock drift that might have occurred since the slave
last received a valid transmission from the master.
Note: See Part B, Section 1.1, Bluetooth Clock for more information about the
Bluetooth Clock.
Command Parameters:
Return Parameters:
0xXXXX The Connection_Handle for the connection for which the master clock has
been read. If the Which_Clock was 0, then the Connection_Handle shall
be set to 0 and ignored upon receipt.
Range: 0x0000-0x0EFF (0x0F00 – 0x0FFF Reserved for future use)
0xXXXX +/- maximum Bluetooth Clock error. Value of 0xFFFF means Unknown.
Accuracy = +/- N * 0.3125 msec (1 Bluetooth Clock)
Range for N: 0x0000 - 0xFFFE
Time Range for N: 0 - 20479.375 msec
Description:
This command reads the current encryption key size associated with the
Connection_Handle. The Connection_Handle shall be a Connection_Handle
for an active ACL connection.
Command Parameters:
Return Parameters:
0xXX Encryption key size. See Part C, Section 5.2, Parameter Defini-
tions.
Description:
Command Parameters:
None.
Return Parameters:
0x01 This value indicates that the AMP Controller is only used by Blue-
tooth technology and will not be shared with other non-Bluetooth
technologies.
This value shall only be used if the AMP Controller is powered up.
This value does not indicate how much bandwidth is currently free
on the AMP Controller.
0x02 The AMP Controller has no capacity available for Bluetooth opera-
tion
This value indicates that all of the AMP Controller’s bandwidth is
currently allocated to servicing a non Bluetooth technology.
A device is permitted to create a Physical Link to an AMP Controller
that has this status.
This value shall only be used if the AMP Controller is powered up.
0x03 The AMP Controller has low capacity available for Bluetooth opera-
tion.
This value indicates that the majority of the AMP Controller’s band-
width is currently allocated to servicing a non Bluetooth technology.
An AMP Controller with capacity in the approximate range of 0% to
30% should indicate this value.
This value does not indicate how much of the capacity available for
Bluetooth operation is currently available.
This value shall only be used if the AMP Controller is powered up.
0x04 The AMP Controller has medium capacity available for Bluetooth
operation.
An AMP Controller with capacity in the approximate range of 30%
to 70% should indicate this value.
This value does not indicate how much of the capacity available for
Bluetooth operation is currently available.
This value shall only be used if the AMP Controller is powered up.
0x05 The AMP Controller has high capacity available for Bluetooth oper-
ation.
This value indicates that the majority of the AMP Controller’s band-
width is currently allocated to servicing the Bluetooth technology.
An AMP Controller with capacity in the approximate range of 70%
to 100% should indicate this value.
This value does not indicate how much of the capacity available for
Bluetooth operation is currently available.
This value shall only be used if the AMP Controller is powered up.
0x06 The AMP Controller has full capacity available for Bluetooth opera-
tion.
This value indicates that while currently the AMP is only being used
by Bluetooth the device allows a different technology to share the
radio.
This value shall be used by devices that are not capable of deter-
mining the current available capacity of an AMP that is shared by a
different technology.
This value does not indicate how much of the capacity available for
Bluetooth operation is currently available.
This value shall only be used if the AMP Controller is powered up.
An upper bound on the total data rate that can be achieved by the
AMP over HCI. It accounts for the total bandwidth provided by the
HCI transport. No sustained combination of transmit and receive
operations shall exceed this value. This can be used to help in AMP
selection and admission control. Expressed in kb/s.
An upper bound on the maximum data the AMP can guarantee for
a single logical link over HCI. Any request made by an application
above this threshold would be rejected. It accounts for any band-
width limitations of the HCI transport. No sustained combination of
transmit and receive operations shall exceed this value. This can
be used to help in AMP selection and admission control. Expressed
in kb/s.
0xXXXX AMP_ASSOC maximum length for this local AMP Controller. For
use with Read and Write AMP_ASSOC commands [Section 7.5.8
and Section 7.5.9]. This value is sent to the remote AMP Manager
in the AMP Get Info Response (see "[Vol 3] Part E, Section 3.8,
AMP Get Info Response (Code 0x07)).
0xXXXXXXXX The typical time period, in microseconds, which the AMP device
may use to attempt to transmit a frame on a Best Effort Logical
Link. The value shall not exceed the value given in Max_Flush_-
Timeout.
If the Controller is configured to retry frames for an unbounded time
(i.e. there is no flushing at all), then it shall set this value to
0xFFFFFFFF.
Description:
The AMP_ASSOC length may be larger than can fit in a single HCI event. Each
time the Read_Local_AMP_ASSOC command is called, the remaining length
of the AMP_ASSOC (including the data returned in the Command Complete
event) is included in the AMP_ASSOC_Remaining_Length parameter and data
from the AMP_ASSOC is contained in the AMP_ASSOC_fragment parameter.
In order to obtain the entire AMP_ASSOC, a Host shall continue calling
Read_Local_AMP_ASSOC until the AMP_ASSOC_Remaining_Length
parameter returned is equal to the size of the AMP_ASSOC_fragment in that
event.
Command Parameters:
Set Length_So_Far to 0 for the first fragment. Increment parameter by the length of the pre-
vious fragment, for each subsequent call
0xXXXX The maximum length, in octets, allowed by the Host for the
AMP_ASSOC maximum length for the remote returned by the AMP
Controller. For use with Read command to prevent interoperability
issues.
Return Parameters:
A fragment of the local AMP_ASSOC structure created by a remote AMP of the same Con-
troller type. A fragment, other than the final one, may not be less than 248 bytes in length.
Description:
The AMP_ASSOC length may be larger than can fit in a single HCI command.
Each time the Write_Remote_AMP_ASSOC command is called, the remaining
length of the AMP_ASSOC (including the data provided in the command) is
included in the AMP_ASSOC_Remaining_Length parameter and data from the
AMP_ASSOC is contained in the AMP_ASSOC_fragment parameter. In order
to write the entire AMP_ASSOC to the Controller, a Host shall continue calling
Write_Remote_AMP_ASSOC until the AMP_ASSOC_Remaining_Length
parameter returned is equal to the size of the AMP_ASSOC_fragment in that
command.
Command Parameters:
Set Length_So_Far to 0 for the first fragment. Increment it by the length of the previous frag-
ment, for each subsequent call.
0x0000 Reserved
A fragment of the AMP_ASSOC structure created by a remote AMP of the same Controller
type.
The fragment length shall be 248 bytes for all but the last fragment.
Return Parameters:
Description:
Command Parameters:
None.
Return Parameters:
0xXXXXXXXX List of supported Baud rates in the Bluetooth Controller for sig-
nals in the MWS to Bluetooth Controller Device direction in
Baud. Each element of the list shall have the format
0xXXXXXXXX. The list shall start with the first baud rate for
the first transport, followed by the remaining baud rates for the
first transport, followed by the baud rates for the second trans-
port (if any), followed by baud rates for subsequent transports
(if any).
Description:
The LPO_Allowed parameter informs the BR/EDR Controller whether the low
power oscillator is allowed to be used, or not.
Note: See [Vol 2] Part B, Section 1.1, Bluetooth Clock for more information
about the Bluetooth Clock.
Command Parameters:
0x00 Controller shall not sleep (that is, clock accuracy shall be equal to or better
than ± 20 ppm)
0x01 Controller may sleep (that is, clock accuracy shall be equal to or better
than ± 250 ppm)
0x02-0xFF Reserved for future use
0x00 All triggered clock captures result in a Triggered Clock Capture event sent
to the Host
0x01-0xFF Number of triggered clock captures filtered between sending a Triggered
Clock Capture event to the Host.
Return Parameters:
Description:
This command reads the value for the setting of the Controller’s
Loopback_Mode. The setting of the Loopback_Mode parameter shall
determine the path of information. In Non-testing Mode operation, the
Loopback_Mode parameter is set to Non-testing Mode and the path of the
information is as specified by the Bluetooth specifications. In Local Loopback
Mode, every Data Packet (ACL, SCO and eSCO) and Command Packet that is
sent from the Host to the Controller is sent back with no modifications by the
Controller, as shown in Figure 7.1 on page 832. For details of loopback modes
see Section 7.6.2 on page 831.
Command Parameters:
None.
Return Parameters:
Description:
This command writes the value for the setting of the BR/EDR Controller’s
Loopback Mode. The setting of the Loopback_Mode parameter shall determine
the path of information. In Non-testing Mode operation, the Loopback_Mode
parameter is set to Non-testing Mode and the path of the information as
specified by the Bluetooth specifications. In Local Loopback Mode, every Data
Packet (ACL, SCO and eSCO) and Command Packet that is sent from the
Host to the BR/EDR Controller is sent back with no modifications by the BR/
EDR Controller, as shown in Figure 7.1 on page 832.
When the BR/EDR Controller enters Local Loopback Mode, it shall respond with
one to four Connection_Handles, one for an ACL connection and zero to three
for synchronous connections. The Host should use these Connection_Handles
when sending data in Local Loopback Mode. The number of
Connection_Handles returned for synchronous connections (between zero and
three) is implementation specific. When in Local Loopback Mode, the BR/EDR
Controller loops back commands and data to the Host. The Loopback Command
event is used to loop back commands that the Host sends to the Controller.
When an AMP enters Local Loopback Mode, all data transmission will be
looped back with the received Logical_Link_Handle value, without checking
the validity of the Logical Link Handle. This allows local loopback of data
without any link creation, and without any data transmission over the air.
There are some commands that are not looped back in Local Loopback Mode:
Reset, Set_Controller_To_Host_Flow_Control, Host_Buffer_Size, Host_
Number_Of_Completed_Packets, Read_Buffer_Size, Read_Loopback_Mode
and Write_Loopback_Mode. These commands should be executed in the way
they are normally executed. The commands Reset and Write_Loopback_Mode
can be used to exit local loopback mode.
If a BR/EDR Controller is set to Remote Loopback Mode, it will send back all
data (ACL, SCO and eSCO) that comes over the air. It will only allow a
maximum of one ACL connection and three synchronous connections, and
these shall all be to the same remote device. If there are existing connections
to a remote device and there is an attempt to set the local device to Remote
Loopback Mode, the attempt shall be refused.
See Figure 7.2 on page 833, where the rightmost device is set to Remote
Loopback Mode and the leftmost device is set to Non-testing Mode. This allows
the BR/EDR Air link to be tested without any other variables.
Bluetooth Host #1
HCI Driver
HCI Firmware
Link Manager
Firmware
Baseband Controller
BR/EDR Hardware
Software Hardware
Firmware Loopback
Data Path
Figure 7.1: Local Loopback Mode
Software Hardware
Firmware Loopback
Data Path
Command Parameters:
Return Parameters:
Command
Command OCF
Parameters Return Parameters
Description:
Command Parameters:
None.
Return Parameters:
Return
Command OCF Command Parameters Parameters
Description:
Note: Only one side (initiator or responder) needs to set simple pairing debug
mode in order for debug equipment to be able to determine the link key and,
therefore, be able to monitor the encrypted connection.
When in Simple Pairing debug mode, the Link Manager shall use the following
Diffie Hellman private / public key pairs:
For P-192:
Private key: 07915f86918ddc27005df1d6cf0c142b625ed2eff4a518ff
Public key (X): 15207009984421a6586f9fc3fe7e4329d2809ea51125f8ed
Public key (Y): b09d42b81bc5bd009f79e4b59dbbaa857fca856fb9f7ea25
For P-256:
Private key: 3f49f6d4 a3c55f38 74c9b3e3 d2103f50 4aff607b eb40b799 5899b8a6 cd3c1abd
Public key (X): 20b003d2 f297be2c 5e2c83a7 e9f9a5b9 eff49111 acf4fddb cc030148 0e359de6
Public key (Y): dc809c49 652aeb6d 63329abf 5a52155c 766345c2 8fed3024 741c8ed0 1589d28b
Command Parameters:
Return Parameters:
Command Return
Command OCF Parameters Parameters
Description:
This command enables and disables the reporting of frames received. This
command shall only be valid in AMP Test Mode. After multiples of the specified
Interval, a report of frames that have been received/not received by the DUT
shall be sent to the tester. Optionally, the sums of bits in error are also reported.
The values returned are the cumulative totals since the mode was last initiated
or reset. The totals are reset by sending the Enable_AMP_Receiver_Reports,
the HCI_AMP_Test command or the AMP_Test_End command. This event is
also generated after an AMP Test End event.
Command Parameters:
0x00 Disable
0x01 Enable
0x02-0xFF Reserved
0x00 Reserved
Return Parameters:
Command
Command OCF Parameters Return Parameters
Description:
This command is used to stop any test scenario in progress. This command
shall only be used in AMP Test Mode when a test is in progress. This command
shall not exit an AMP Controller from AMP Test mode.
Command Parameters:
None.
Return Parameters:
0x01-0xFF AMP_Test_End command failed. Part D, Error Codes on page 370 for a
list of error codes and descriptions.
When the AMP_Test_End command has completed an AMP Test End event
shall be generated and the AMP Receiver Report event shall be generated if
the AMP receiver reports are enabled.
Command
Command OCF Parameters Return Parameters
Description:
This command is used to configure and start a test. This command shall be
only valid in AMP Test Mode.
The details of the Test_Parameters for each Controller Type are detailed in the
AMP PAL specification.
Command Parameters:
Return Parameters:
When the AMP Controller receives the AMP_Test command, the AMP
Controller shall send the Command Status event to the AMP Test Manager
which shall be routed to the tester.
The AMP Start Test event shall be generated when the AMP_Test command
has completed and the first data is ready to be sent or received.
Command Complete event shall not be sent by the AMP to indicate that this
command has been completed. Instead, the AMP Start Test event shall
indicate that this command has been completed.
When in a transmitter test scenario and the frames/bursts count have been
transmitted the AMP Test End event shall be sent.
Command Return
Command OCF Parameters Parameters
Description:
This command configures the BR/EDR Controller to enable and disable the
two test modes used for verifying the Secure Connections feature during
qualification. The DM1_ACL-U_Mode parameter enables and disables the use
of DM1 packets for transmitting ACL-U data. When DM1 ACL-U Mode is
disabled, ACL-U traffic may use DM1 packets. When DM1 ACL-U Mode is
enabled, ACL-U traffic shall not use DM1 packets unless the Packet_Type
parameter only allows DM1 packets (e.g. set to 0x3306 or 0x330E).
The command is used during testing to help make transmit ACL packet
selection predictable.
See Figure 7.1, where the rightmost device has the eSCO_Loopback_Mode
parameter set to enabled and the leftmost device is in a normal mode of
operation. This allows the encryption and decryption of eSCO packets to be
tested without any other variables.
Software Hardware
Firmware Loopback
Data Path
RX TX RX TX RX TX
ACK ACK ACK
ARQN ARQN ARQN
RX TX RX TX RX TX RX TX RX TX
ACK NAK ACK ACK ACK NAK ACK
ARQN ARQN ARQN ARQN ARQN ARQN ARQN
payload payload
RX TX RX TX RX TX
ACK ACK ACK
ARQN ARQN ARQN
RX TX RX RX TX RX TX RX TX
NAK ACK ACK ACK ACK NAK ACK
ARQN ARQN ARQN ARQN ARQN ARQN ARQN
RX TX RX RX RX TX RX TX
NAK ACK NAK ACK NAK ACK ACK
ARQN ARQN ARQN ARQN ARQN ARQN ARQN
Command Parameters:
0xXXXX Connection_Handle for which the test modes have been enabled/disabled.
Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use)
Return Parameters:
0xXXXX Connection_Handle for which the test modes have been enabled/disabled.
Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use)
7.7 EVENTS
Description:
The Inquiry Complete event indicates that the Inquiry is finished. This event
contains a Status parameter, which is used to indicate if the Inquiry completed
successfully or if the Inquiry was not completed.
Event Parameters:
0x01-0xFF Inquiry command failed. See Part D, Error Codes on page 370 for a list of
error codes and descriptions.
Description:
The Inquiry Result event indicates that a BR/EDR Controller or multiple BR/
EDR Controllers have responded so far during the current Inquiry process.
This event will be sent from the BR/EDR Controller to the Host as soon as an
Inquiry Response from a remote device is received if the remote device
supports only mandatory paging scheme. The BR/EDR Controller may queue
these Inquiry Responses and send multiple BR/EDR Controllers information in
one Inquiry Result event. The event can be used to return one or more Inquiry
responses in one event.
Event Parameters:
0x00 R0
0x01 R1
0x02 R2
0xXX Reserved.
1. This was the Page_Scan_Period_Mode parameter in the v1.1 specification. This parameter
has no meaning in v1.2 or later and no default value.
2. This was the Page_Scan_Mode parameter in the v1.1 specification.
Description:
The Connection Complete event indicates to both of the Hosts forming the
connection that a new connection has been established. This event also
indicates to the Host, which issued the Create_Connection, or
Accept_Connection_Request or Reject_Connection_Request command and
then received a Command Status event, if the issued command failed or was
successful.
Event Parameters:
Description:
The Connection Request event is used to indicate that a new incoming connection
is trying to be established. The connection may either be accepted or rejected. If
this event is masked away and there is an incoming connection attempt and the
BR/EDR Controller is not set to auto-accept this connection attempt, the BR/EDR
Controller shall automatically refuse the connection attempt. When the Host
receives this event and the link type parameter is ACL, it should respond with
either an Accept_Connection_Request or Reject_Connection_Request command
before the timer Conn_Accept_Timeout expires. If the link type is SCO or eSCO,
the Host should reply with the Accept_Synchronous_Connection_Request or the
Reject_Synchronous_Connection_Request command. If the link type is SCO, the
Host may respond with Accept_Connection_Request command. If the event is
responded to with Accept_Connection_Request command, then the default
parameter settings of the Accept_Synchronous_Connection_Request command
(see Section 7.1.27 on page 552) should be used by the local Link Manager when
negotiating the SCO link parameters. In that case, the Connection Complete event
and not the Synchronous Connection Complete event, shall be returned on
completion of the connection.
Event Parameters:
BD_ADDR: Size: 6 Octets
Value Parameter Description
0xXXXXXX Class of Device for the device, which requests the connection.
0x000000 Unknown Class of Device
Description:
Note: When a physical link fails, one Disconnection Complete event will be
returned for each logical channel on the physical link with the corresponding
Connection_Handle as a parameter.
Event Parameters:
0xXX Reason for disconnection. See Part D, Error Codes on page 370 for error
codes and descriptions.
Description:
Event Parameters:
Description:
The Remote Name Request Complete event is used to indicate that a remote
name request has been completed. The Remote_Name event parameter is a
UTF-8 encoded string with up to 248 octets in length. The Remote_Name
event parameter will be null-terminated (0x00) if the UTF-8 encoded string is
less than 248 octets. The BD_ADDR event parameter is used to identify which
device the user-friendly name was obtained from.
Event Parameters:
Name[248] A UTF-8 encoded user-friendly descriptive name for the remote device.
If the name contained in the parameter is shorter than 248 octets, the end
of the name is indicated by a NULL octet (0x00), and the following octets
(to fill up 248 octets, which is the length of the parameter) do not have
valid values.
Description:
The Encryption Change event is used to indicate that the change of the
encryption mode has been completed. The Connection_Handle will be a
Connection_Handle for an ACL connection. The Encryption_Enabled event
parameter specifies the new Encryption_Enabled parameter for the
Connection_Handle specified by the Connection_Handle event parameter.
This event will occur on both devices to notify the Hosts when Encryption has
changed for the specified Connection_Handle between two devices. Note: This
event shall not be generated if encryption is paused or resumed; during a role
switch, for example.
Event Parameters:
0x01-0xFF Encryption Change failed. See Part D, Error Codes on page 370 for a list
of error codes and descriptions.
0xXXXX Connection_Handle for which the link layer encryption has been enabled/
disabled for all Connection_Handles with the same BR/EDR Controller
endpoint as the specified Connection_Handle.
Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use)
Description:
The 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 has been completed.
Event Parameters:
0xXXXX Connection_Handle which the Link Key has been change for all Connec-
tion_Handles with the same BR/EDR Controller end point as the specified
Connection_Handle.
Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use)
Description:
The Master Link Key Complete event is used to indicate that the Link Key
managed by the master of the piconet has been changed. The
Connection_Handle will be a Connection_Handle for an ACL connection. The
link key used for the
connection will be the temporary link key of the master device or the semi-
permanent link key indicated by the Key_Flag. The Key_Flag event parameter
is used to indicate which Link Key (temporary link key of the Master, or the
semi-permanent link keys) is now being used in the piconet.
Note: For a master, the change from a semi-permanent Link Key to temporary
Link Key will affect all Connection_Handles related to the piconet. For a slave,
this change affects only this particular Connection_Handle. A temporary link
key must be used when both broadcast and point-to-point traffic shall be
encrypted.
Event Parameters:
0xXXXX Connection_Handle for which the Link Key has been changed for all
devices in the same piconet.
Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use)
Description:
The 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. The Connection_Handle will be a Connection_Handle for an
ACL connection. The event parameters include a list of LMP features. For
details see Part C, Link Manager Protocol Specification on page 224.
Event Parameters:
0xXXXXXXXX Bit Mask List of LMP features. See Part C, Link Manager Protocol Specifi-
XXXXXXXX cation on page 224.
Description:
The Read Remote Version Information Complete event is used to indicate the
completion of the process obtaining the version information of the remote
Controller specified by the Connection_Handle event parameter. The
Connection_Handle shall be for an ACL connection.
The Version event parameter defines the specification version of the BR/EDR
or LE Controller. The Manufacturer_Name event parameter indicates the
manufacturer of the remote Controller. The Subversion event parameter is
controlled by the manufacturer and is implementation dependent. The
Subversion event parameter defines the various revisions that each version of
the Bluetooth hardware will go through as design processes change and errors
are fixed. This allows the software to determine what Bluetooth hardware is
being used and, if necessary, to work around various bugs in the hardware.
Event Parameters:
0xXX Version of the Current LMP in the remote Controller. See LMP VersNr and
Link LayerVersNr in the Bluetooth Assigned Numbers.
0xXXXX Manufacturer Name of the remote Controller. See CompId in the Blue-
tooth Assigned Numbers.
0xXXXX Subversion of the LMP in the remote Controller. See Part C, Table 5.2,
page 358 and [Vol 6] Part B, Section 2.4.2.13(SubVersNr).
Description:
The QoS Setup Complete event is used to indicate the completion of the
process of the Link Manager setting up QoS with the remote BR/EDR
Controller specified by the Connection_Handle event parameter. The
Connection_Handle will be a Connection_Handle for an ACL connection. For
more detail see
[Vol 3] Part A, Logical Link Control and Adaptation Protocol Specification.
Event Parameters:
0x01-0xFF QoS_Setup command failed. See Part D, Error Codes on page 370 for a
list of error codes and descriptions.
Description:
The Command Complete event is used by the Controller for most commands
to transmit return status of a command and the other event parameters that are
specified for the issued HCI command.
Event Parameters:
N = 0xXX The Number of HCI command packets which are allowed to be sent to the
Controller from the Host.
Range for N: 0 – 255
0xXX This is the return parameter(s) for the command specified in the
Command_Opcode event parameter. See each command’s definition for
the list of return parameters associated with that command.
Description:
The Command Status event is used to indicate that the command described by
the Command_Opcode parameter has been received, and that the Controller
is currently performing the task for this command. This event is needed to
provide mechanisms for asynchronous operation, which makes it possible to
prevent the Host from waiting for a command to finish. If the command cannot
begin to execute (a parameter error may have occurred, or the command may
currently not be allowed), the Status event parameter will contain the
corresponding error code, and no complete event will follow since the
command was not started. The Num_HCI_Command_Packets event
parameter allows the Controller to indicate the number of HCI command
packets the Host can send to the Controller. If the Controller requires the Host
to stop sending commands, the Num_HCI_Command_Packets event
parameter will be set to zero. To indicate to the Host that the Controller is ready
to receive HCI command packets, the Controller generates a Command Status
event with Status 0x00 and Command_Opcode 0x0000, and the
Num_HCI_Command_Packets event parameter is set to 1 or more.
Command_Opcode, 0x0000 is a NOP (No OPeration) and can be used to
change the number of outstanding HCI command packets that the Host can
send before waiting.
Event Parameters:
N = 0xXX The Number of HCI command packets which are allowed to be sent to the
Controller from the Host.
Range for N: 0 – 255
0xXXXX Opcode of the command which caused this event and is pending completion.
Description:
The Hardware Error event is used to indicate some type of hardware failure for
the BR/EDR Controller. This event is used to notify the Host that a hardware
failure has occurred in the Controller.
Event Parameters:
Description:
The Flush Occurred event is used to indicate that, for the specified Handle, the
current user data to be transmitted has been removed. The Handle shall be a
Connection_Handle for a BR/EDR LE ACL connection or a
Logical_Link_Handle for an AMP ACL connection. This could result from the
Flush command, or be due to the automatic flush. Multiple blocks of an L2CAP
packet could have been pending in the Controller. If one baseband packet part
of an L2CAP PDU is flushed, then the rest of the HCI data packets for the
L2CAP PDU must also be flushed.
Event Parameters:
0xXXXX Handle that was flushed. The Handle is a Connection_Handle for a Pri-
mary Controller or a Logical_Link_Handle for an AMP Controller.
Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use)
Description:
The Role Change event is used to indicate that the current role of the BR/EDR
Controller related to the particular connection has changed. This event only
occurs when both the remote and local BR/EDR Controllers have completed
their role change for the BR/EDR Controller associated with the BD_ADDR
event parameter. This event allows both affected Hosts to be notified when the
Role has been changed.
Event Parameters:
0x01-0xFF Role change failed. See Part D, Error Codes on page 370 for a list of error
codes and descriptions.
0xXXXXXXXXXXXX BD_ADDR of the Device for which a role change has completed.
Description:
Event Parameters:
0xXXXX Connection_Handle.
Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use)
N = 0xXXXX The number of HCI Data Packets that have been completed (transmitted
or flushed) for the associated Connection_Handle since the previous time
the event was returned.
Range for N: 0x0000-0xFFFF
Description:
The Mode Change event is used to indicate when the device associated with
the Connection_Handle changes between Active mode, Hold mode, and Sniff
mode, and Park state. The Connection_Handle will be a Connection_Handle
for an ACL connection. The Connection_Handle event parameter is used to
indicate which connection the Mode Change event is for. The Current_Mode
event parameter is used to indicate which state the connection is currently in.
The Interval parameter is used to specify a time amount specific to each state.
Each Controller that is associated with the Connection_Handle which has
changed Modes shall send the Mode Change event to its Host.
Event Parameters:
0xXXXX Connection_Handle.
Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use)
N = 0xXXXX Hold:
Number of Baseband slots to wait in Hold Mode.
Hold Interval = N * 0.625 msec (1 Baseband slot)
Range for N: 0x0002-0xFFFE
Time Range: 1.25 msec-40.9 sec
Sniff:
Number of Baseband slots between sniff anchor points. Time between sniff
anchor points = N * 0.625 msec (1 Baseband slot)Range for N: 0x0002-
0xFFFE
Time Range: 1.25 msec-40.9 sec
Park:
Number of Baseband slots between consecutive beacons.
Interval Length = N * 0.625 msec (1 Baseband slot)
Range for N: 0x0002-0xFFFE
Time Range: 1.25 msec-40.9 Seconds
Description:
The Return Link Keys event is used by the BR/EDR Controller to send the Host
the BD_ADDRs associated with one or more stored Link Keys. Zero or more
instances of this event will occur after the Read_Stored_Link_Key command.
When there are no link keys stored, no Return Link Keys events shall be
returned. When there are link keys stored, the number of link keys returned in
each Return Link Keys event is implementation specific. This event shall never
return the value of the link keys. The link keys value parameter shall always
contain the value of zero.
Event Parameters:
Description:
The PIN Code Request event is used to indicate that a PIN code is required to
create a new link key. The Host shall respond using either the
PIN_Code_Request_Reply or the PIN_Code_Request_Negative_Reply
command, depending on whether the Host can provide the Controller with a
PIN code or not.
Note: If the PIN Code Request event is masked away, then the BR/EDR
Controller will assume that the Host has no PIN Code.
When the BR/EDR Controller generates a PIN Code Request event in order for
the local Link Manager to respond to the request from the remote Link
Manager (as a result of a Create_Connection or Authentication_Requested
command from the remote Host), the local Host must respond with either a
PIN_Code_Request_Reply or PIN_Code_Request_Negative_Reply command
before the remote Link Manager detects LMP response timeout. (See Part C,
Link Manager Protocol Specification on page 224.)
Event Parameters:
0xXXXXXXXXXXXX BD_ADDR of the Device which a new link key is being created for.
Description:
The Link Key Request event is used to indicate that a Link Key is required for
the connection with the device specified in BD_ADDR. If the Host has the
requested stored Link Key, then the Host shall pass the requested Key to the
Controller using the Link_Key_Request_Reply command. If the Host does not
have the requested stored Link Key, or the stored Link Key does not meet the
security requirements for the requested service, then the Host shall use the
Link_Key_Request_Negative_Reply command to indicate to the Controller that
the Host does not have the requested key.
Note: If the Link Key Request event is masked away, then the BR/EDR
Controller will assume that the Host has no additional link keys.
When the Controller generates a Link Key Request event in order for the local
Link Manager to respond to the request from the remote Link Manager (as a
result of a Create_Connection or Authentication_Requested command from
the remote Host), the local Host must respond with either a
Link_Key_Request_Reply or Link_Key_Request_Negative_Reply command
before the remote Link Manager detects LMP response timeout. (See Part C,
Link Manager Protocol Specification on page 224.)
Event Parameters:
0xXXXXXXXXXXXX BD_ADDR of the Device which a stored link key is being requested.
Description:
The Link Key Notification event is used to indicate to the Host that a new Link
Key has been created for the connection with the device specified in
BD_ADDR. The Host can save this new Link Key in its own storage for future
use. Also, the Host can decided to store the Link Key in the BR/EDR
Controller’s Link Key Storage by using the Write_Stored_Link_Key command.
The Key_Type event parameter informs the Host about which key type
(combination key, local unit key, or remote unit key, debug combination key,
unauthenticated combination key, authenticated combination key or changed
combination key) that was used during pairing. If pairing with unit key is not
supported, the Host can for instance discard the key or disconnect the link.
The combination key Key_Type is used when standard pairing was used. The
debug combination key Key_Type is used when Simple Pairing was used and
the debug public key is sent or received. The unauthenticated combination key
Key_Type is used when the Just Works Simple Pairing association model was
used. The authenticated combination key Key_Type is used when Simple
Pairing was used and the Just Works association mode was not used. The
changed combination key Key_Type is used when the link key has been
changed using the Change Connection Link Key procedure and Simple Pairing
Mode is set to enabled. Note: It is the responsibility of the Host to remember
the Key_Type (combination, debug combination, unauthenticated combination,
or authenticated combination) prior to changing the link key.
Event Parameters:
0xXXXXXXXXXXXX BD_ADDR of the Device for which the new link key has been
generated.
0x09-0xFF Reserved
Description:
When in Local Loopback mode, the BR/EDR Controller loops back commands
and data to the Host. The Loopback Command event is used to loop back all
commands that the Host sends to the Controller with some exceptions. See
section 7.6.1, “Read Loopback Mode Command,” on page 829 for a
description of which commands that are not looped back. The
HCI_Command_Packet event parameter contains the entire HCI Command
Packet including the header.
Note: The event packet is limited to a maximum of 255 octets in the payload;
since an HCI Command Packet has 3 octets of header data, only the first 252
octets of the command parameters will be returned.
Event Parameters:
Description:
This event is used to indicate that the Controller’s data buffers have been
overflowed. This can occur if the Host has sent more packets than allowed.
The Link_Type parameter is used to indicate that the overflow was caused by
ACL or synchronous data.
Event Parameters:
Description:
This event is used to notify the Host about the LMP_Max_Slots parameter
when the value of this parameter changes. It shall be sent each time the
maximum allowed length, in number of slots, for baseband packets transmitted
by the local device, changes. The Connection_Handle will be a
Connection_Handle for an ACL connection.
Event Parameters:
0xXXXX Connection_Handle.
Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use)
0x01, 0x03, 0x05 Maximum number of slots allowed to use for baseband packets, see
Link Manager Protocol Specification, Section 4.1.10, on page 265 and
Section 5.2 on page 358.
Description:
The Read Clock Offset Complete event is used to indicate the completion of
the process of the Link Manager obtaining the Clock Offset information of the
BR/EDR Controller specified by the Connection_Handle event parameter. The
Connection_Handle will be a Connection_Handle for an ACL connection.
Event Parameters:
Description:
The Connection Packet Type Changed event is used to indicate that the
process has completed of the Link Manager changing which packet types can
be used for the connection. This allows current connections to be dynamically
modified to support different types of user data. The Packet_Type event
parameter specifies which packet types the Link Manager can use for the
connection identified by the Connection_Handle event parameter for sending
L2CAP data or voice. The Packet_Type event parameter does not decide
which packet types the LM is allowed to use for sending LMP PDUs.
Event Parameters:
0xXXXX Connection_Handle.
Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use)
For ACL_Link_Type
Value Parameter Description
For SCO_Link_Type
Value Parameter Description
0x0020 HV1
0x0040 HV2
0x0080 HV3
Description:
The QoS Violation event is used to indicate the Controller is unable to provide
the current QoS requirement for the Connection or Logical Link Handle. This
event indicates that the Controller is unable to provide one or more of the
agreed QoS parameters.
The Host chooses what action should be done. With a BR/EDR Controller the
Host can reissue the QoS_Setup command to renegotiate the QoS setting for
Connection_Handle. With an AMP Controller the Host can reissue the
Flow_Spec_Modify command.
Event Parameters:
0xXXXX Handle for the link that the Controller cannot provide the current QoS
requested. The Handle is a Connection_Handle for a BR/EDR Controller
and a Logical_Link_Handle for an AMP Controller.
Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use)
Event
Event Event Parameters
Code
Description:
The Page Scan Repetition Mode Change event indicates that the remote
BR/EDR Controller with the specified BD_ADDR has successfully changed the
Page_Scan_Repetition_Mode (SR).
Event Parameters:
0x00 R0
0x01 R1
0x02 R2
0x03 – 0xFF Reserved.
Description:
The 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. The
Connection_Handle will be a Connection_Handle for an ACL connection. The
flow parameters refer to the outgoing or incoming traffic of the ACL link, as
indicated by the Flow_direction field. The flow parameters are defined in the
L2CAP specification [Vol 3] Part A, Section 5.3, Quality of Service (QoS)
Option. When the Status parameter indicates a successful completion, the flow
parameters specify the agreed values by the Controller. When the Status
parameter indicates a failed completion with the Error Code QoS Unacceptable
Parameters (0x2C), the flow parameters specify the acceptable values of the
Controller. This enables the Host to continue the 'QoS negotiation' with a new
HCI Flow_Specification command with flow parameter values that are
acceptable for the Controller. When the Status parameter indicates a failed
completion with the Error Code QoS Rejected (0x2D), this indicates a request
of the Controller to discontinue the 'QoS negotiation'. When the Status
parameter indicates a failed completion, the flow parameter values of the most
recently successful completion must be assumed (or the default values when
there was no success completion).
Event Parameters:
0x01 – 0xFF Flow_Specification command failed. See Part D, Error Codes on page 370
for list of Error Codes
0xXXXX Connection_Handle used to identify for which ACL connection the Flow is
specified.
Range: 0x0000 - 0x0EFF (0x0F00 – 0x0FFF Reserved for future use)
0x00 Outgoing Flow i.e. traffic send over the ACL connection
0x01 Incoming Flow i.e. traffic received over the ACL connection
0x02 – 0xFF Reserved for future use.
0x00 No Traffic
0x01 Best Effort
0x02 Guaranteed
0x03 – 0xFF Reserved for future use
Description:
The 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. This event will be sent from the BR/EDR Controller to the Host as
soon as an Inquiry Response from a remote device is received if the remote
device supports only mandatory paging scheme. This BR/EDR Controller may
queue these Inquiry Responses and send multiple BR/EDR Controllers
information in one Inquiry Result event. The event can be used to return one or
more Inquiry responses in one event. The RSSI parameter is measured during
the FHS packet returned by each responding slave.
This event shall only be generated if the Inquiry Mode parameter of the last
Write_Inquiry_Mode command was set to 0x01 (Inquiry Result format with RSSI).
Event Parameters:
0x00 R0
0x01 R1
0x02 R2
0xXX Reserved.
Bit 15 Reserved
1. This was the Page_Scan_Period_Mode parameter in the v1.1 specification. This parameter
has no meaning in v1.2 or later and no default value.
Description:
The Read Remote Extended Features Complete event is used to indicate the
completion of the process of the Link Manager obtaining the remote extended
LMP features of the remote device specified by the Connection_Handle event
parameter. The Connection_Handle will be a Connection_Handle for an ACL
connection. The event parameters include a page of the remote devices
extended LMP features. For details see Part C, Link Manager Protocol
Specification on page 224.
Event Parameters:
0xXXXX The Connection_Handle identifying the device to which the remote fea-
tures apply. Range: 0x0000-0x0EFF (0x0F00-0x0FFF Reserved for future
use)
0x00-0xFF The highest features page number which contains non-zero bits for the
remote device
Description:
Event Parameters:
0x01 Reserved
0x02 eSCO Connection
0x03 – 0xFF Reserved
0xXX Time between two consecutive eSCO instants measured in slots. Must be
zero for SCO links.
0xXX The size of the retransmission window measured in slots. Must be zero for
SCO links.
0xXXXX Length in bytes of the eSCO payload in the receive direction. Must be zero
for SCO links.
0xXXXX Length in bytes of the eSCO payload in the transmit direction. Must be
zero for SCO links.
Description:
Command Parameters:
0xXX The size of the retransmission window measured in slots. Must be zero for
SCO links.
Description:
The Sniff Subrating event indicates that the device associated with the
Connection_Handle has either enabled sniff subrating or the sniff subrating
parameters have been renegotiated by the link manager. The
Connection_Handle will be a Connection_Handle for an ACL connection. The
Connection_Handle event parameter indicates which connection the Sniff
Subrating event is for.
Event Parameters:
0xXXXX Connection_Handle.
Range: 0x0000 – 0x0EFF (0x0F00 – 0x0FFF Reserved for future
use)
N = 0xXXXX Maximum latency for data being transmitted from the local device to
the remote device.
Latency = N * 0.625 msec (1 Baseband slot)
Range for N: 0x0000 – 0xFFFE
Time Range: 0 sec - 40.9 sec
N = 0xXXXX Maximum latency for data being received by the local device from
the remote device.
Latency = N * 0.625 msec (1 Baseband slot)
Range for N: 0x0000 – 0xFFFE
Time Range: 0 sec - 40.9 sec
N = 0xXXXX The base sniff subrate timeout in baseband slots that the local
device will use.
Timeout = N * 0.625 msec (1 Baseband slot)
Range for N: 0x0000 – 0xFFFE
Time Range: 0 sec – 40.9 sec
Description:
The Extended Inquiry Result event indicates that a BR/EDR Controller has
responded during the current inquiry process with extended inquiry response
data. This event will be sent from the BR/EDR Controller to the Host upon
reception of an Extended Inquiry Response from a remote device. One single
Extended Inquiry Response is returned per event. This event contains RSSI
and inquiry response data for the BR/EDR Controller that responded to the
latest inquiry. The RSSI parameter is measured during the FHS packet
returned by each responding slave. The Num_Responses parameter shall be
set to one.
Note: This ensures that a Host that does not support Extended Inquiry Results
will never receive the Extended Inquiry Result event.
If an inquiry response packet with the EIR field set to zero is received, the
Inquiry Result with RSSI event format shall be used. If the EIR bit is set to one
the Extended Inquiry Result event format shall be used. If the EIR bit is set to
one but the Controller failed to receive the extended inquiry response packet,
the Extended_Inquiry_Response parameter is set to zeros. If an extended
inquiry response packet from the same device is correctly received in a later
response, another event shall be generated.
Note: The only difference between the Extended Inquiry Result event and the
Inquiry Result with RSSI event is the additional Extended_Inquiry_Response
parameter.
Event Parameters:
0x01 Number of responses from the inquiry. The Extended Inquiry Result event
always contains a single response.
0x00 R0
0x01 R1
0x02 R2
0xXX Reserved.
Description:
The 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. The BR/EDR Controller shall
send this event when the encryption key has been refreshed due to encryption
being started or resumed.
Event parameters:
0xXXXX Connection Handle for the ACL connection to have the encryption key
refreshed on.
Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use).
Description:
Event Parameters:
Description:
Event Parameters:
0x00 DisplayOnly
0x01 DisplayYesNo
0x02 KeyboardOnly
0x03 NoInputNoOutput
0x04 – 0xFF Reserved for future use
Description:
The User Confirmation Request event is used to indicate that user confirmation
of a numeric value is required. The Host shall reply with either the
User_Confirmation_Request_Reply or the
User_Confirmation_Request_Negative_Reply command. If the Host has
output capability (DisplayYesNo or KeyboardOnly), it shall display the
Numeric_Value until the Simple Pairing Complete event is received. It shall
reply based on the yes/no response from the user. If the Host has no input and
no output it shall reply with the User Confirmation Request Reply command.
When the Controller generates a User Confirmation Request event, in order for
the local Link Manager to respond to the request from the remote Link
Manager, the local Host must respond with either a
User_Confirmation_Request_Reply or a
User_Confirmation_Request_Negative_Reply command before the remote
Link Manager detects LMP response timeout. (See Part C, Link Manager
Protocol Specification on page 224.)
Event Parameters:
Description:
The User Passkey Request event is used to indicate that a passkey is required
as part of a Simple Pairing process. The Host shall respond with either a
User_Passkey_Request_Reply or User_Passkey_Request_Negative_Reply
command. This event will only be generated if simple pairing has been enabled
with the Write_Simple_Pairing_Mode command. When the Controller
generates a User Passkey Request event, in order for the local Link Manager
to respond to the request from the remote Link Manager, the local Host must
respond with either a User_Passkey_Request_Reply or
User_Passkey_Request_Negative_Reply command before the remote Link
Manager detects LMP response timeout. (See Part C, Link Manager Protocol
Specification on page 224.)
Event Parameters:
Description:
The Remote OOB Data Request event is used to indicate that the Simple
Pairing Hash C and the Simple Pairing Randomizer R is required for the
Secure Simple Pairing process involving the device identified by BD_ADDR.
The C and R values were transferred to the Host from the remote device via an
OOB mechanism. This event is sent by the Controller because the Host
previously set the OOB Data Present parameter to "OOB authentication data
from remote device present" in an IO Capability Request Reply command. If
both the Host and Controller support Secure Connections the Host shall
respond with the Remote OOB Extended Data Request Reply command.
Otherwise, the Host shall respond with the Remote OOB Data Request Reply
command.
Event Parameters:
0xXXXXXXXXXXXX BD_ADDR of the device from which the C and R values were
received.
Description:
The Simple Pairing Complete event is used to indicate that the simple pairing
process has completed. A Host that is displaying a numeric value can use this
event to change its UI.
When the LMP simple pairing sequences fail for any reason, the Simple Pairing
Complete event shall be sent to the Host. When Simple Pairing Complete
event is sent in response to the IO capability exchange failing, the Status
parameter shall be set to the error code received from the remote device.
Otherwise, the Status shall be set to the error code “Authentication Failure.”
Event Parameters:
Description:
The Link Supervision Timeout Changed event is used to notify the slave's Host
when the Link_Supervision_Timeout parameter is changed in the slave
Controller. This event shall only be sent to the Host by the slave controller upon
receiving an LMP_supervision_timeout PDU from the master.
Note: The Connection_Handle used for this command shall be the ACL
connection of the appropriate device.
Event Parameters:
Description:
Event Parameters:
0xXXXX Handle of the link for which Controller cannot provide the requested QoS.
The Handle is a Connection_Handle for a BR/EDR Controller and a Logi-
cal_Link_Handle for an AMP Controller.
Range: 0x0000 - 0x0EFF (0x0F00 - 0x0FFF Reserved for future use)
Description:
The User Passkey Notification event is used to provide a passkey for the Host
to display to the user as required as part of a Simple Pairing process. The
Passkey parameter shall be a randomly generated number (see [Vol. 2], Part
H, Section 2 on page 1309) generated by the Controller modulo 1,000,000.
This event will be generated if the IO capabilities of the local device are
DisplayOnly or DisplayYesNo and the IO capabilities of the remote device are
KeyboardOnly.
This event shall only be generated if simple pairing has been enabled with the
Write_Simple_Pairing_Mode command.
Event Parameters:
Description:
The Keypress Notification event is sent to the Host after a passkey notification
has been received by the Link Manager on the given BD_ADDR. The
Notification_Type parameter may be used by the Host's user interface.
Event parameters:
Description:
The Remote Host Supported Features Notification event is used to return the
LMP extended features page containing the Host features. The BD_ADDR
shall be the address of the remote device.
This event shall only be generated after the LMP extended features are read
from the remote device during a connection initiated by a Remote Name
Request command.
Event parameters:
0xFFFFFFFFFFFFF Bit map of Host Supported Features page of LMP extended fea-
FFF tures.
For more information, see “Part C, Link Manager Protocol Specifi-
cation” .
Description:
The Physical Link Complete event indicates to the Host that a new AMP
physical link has been established. This event is used as a response for either
Create_Physical_Link or Accept_Physical_Link commands and is preceded by
a Command Status event.
Event Parameters:
Description:
The Channel Selected event indicates to the Host originating the physical link
that the link information data is available to be read using the Read Local AMP
Assoc command. This allows the originating device to determine link
implementation parameters such as an underlying physical channel choice.
This structure shall be sent in the AMP Create Physical Link Request (see [Vol
3] Part E, Section 3.11]) and be used at the remote end in the
Accept_Physical_Link command.
Event Parameters:
Description:
The Disconnection Physical Link Complete event occurs when a physical link
is terminated. The status parameter indicates if the disconnection was
successful or not.
When a physical link fails, one Disconnection Logical Link Complete event will
be returned for each logical channel on the physical link with the corresponding
Logical_Link_Handle as a parameter.
Event Parameters:
0xXX Reason for disconnection. See Part D, Error Codes on page 370 for error
codes and descriptions.
Description:
The Physical Link Loss Early Warning event occurs when a physical link has
early indication that the link may be disrupted. Data transmission and reception
may suffer impairment on this link. The Host may use this to indicate to the
user that traffic may be disrupted.
The exact low level meaning is dependent on the AMP type. Some AMP types
may never generate this event.
Event Parameters:
0 Unknown
1 Range related
2 Bandwidth related
3 Resolving conflict
4 Interference
5-255 Reserved
Description:
The Physical Link Recovery event indicates that whatever interruption caused
an earlier Physical Link Loss Early Warning event has now been cleared. The
normal data transmission and reception service can be expected. The exact
low level meaning is dependent on the AMP type. The Host may use this event
to cancel any indication to the user caused by the Physical Link Loss Early
Warning event.
Event Parameters:
Description:
The Logical Link Complete event indicates to both of the Hosts forming the
connection whether a new connection has been established successfully.
Event Parameters:
0xXX Physical_Link identifying the physical link over which the logical
link has been created.
0xXX Flow Spec ID identifying the logical link creation that completed.
This matches the ID field of the TX_Flow_Spec
Description:
The Disconnection Logical Link Complete event occurs when a logical link is
terminated on the local Controller. The status parameter indicates if the
disconnection was successful or not.
Note: When the local Controller disconnects a logical link, the remote
Controller will not be notified.
Note: When a physical link fails, one Disconnection Logical Link Complete
event will be returned for each logical channel on the physical link with the
corresponding Logical_Link_Handle as a parameter.
Event Parameters:
0xXX Reason for disconnection. See Part D, Error Codes on page 370 for
error codes and descriptions.
Description:
The Flow Spec Modify Complete event indicates to the Host that a Flow Spec
Modify command has been completed. This event also indicates to the Host
which issued the Flow_Spec_Modify command and then received a Command
Status event if the issued command failed or was successful.
Event Parameters:
Description:
The Host should determine the number of blocks occupied by each ACL data
packet by dividing the ACL data packet size by the Data_Block_Length
parameter of the Read_Data_Block_Size command.
If the Controller were permitted to reduce its buffer pool in an arbitrary way then
there is a potential race condition, in the case where the Host has just started
to transmit a new packet. In order to prevent this race condition, the
Total_Num_Data_Blocks parameter shall not indicate a reduction in the pool of
blocks greater than the sum of the Num_Of_Completed_Blocks values in this
event. If a greater reduction in the block pool is required then the value 0 shall
be indicated here. The value 0 has a special meaning and indicates that the
Host shall re-issue the Read Data Block Size command in order to find the new
buffer pool size. The Host shall wait for any outstanding TX to complete and
shall defer further TX until the Read_Data_Block_Size command has been
issued and completed. The Controller shall reduce its allocation only after the
Read_Data_Block_Size command has been issued and completed. This
ensures that the race condition described above is avoided.
Event Parameters:
0x0000 The size of the buffer pool may have changed. The Host is
requested to issue a Read Data Block Size command in order to
determine the new value of Total_Num_Data_Blocks.
0xXXXX Total number of data block buffers available in the Controller for the
storage of data packets scheduled for transmission. This indicates
the existing value is unchanged, or increased, or reduced by up to
the sum of the Num_Of_Completed_Blocks values in this com-
mand.
Range: 0-255
N = 0xXXXX The number of HCI ACL Data Packets that have been completed
(transmitted or flushed) for the associated Handle since the previ-
ous time that a Number Of Completed Data Blocks event provided
information about this Handle.
Range for N: 0x0000-0xFFFF
N = 0xXXXX The number of data blocks that have been freed for the associated
Handle since the previous time that a Number Of Completed Data
Blocks event provided information about this Handle.
Range for N: 0x0000-0xFFFF
Description:
The Short Range Mode Change Complete event occurs after the AMP
Controller has been notified to enable or disable Short Range Mode for a given
physical link. The status parameter indicates if the configuration change was
successful or not.
Event Parameters:
Event
Event Code Event Parameters
Description:
The AMP Status Change event can occur at any time, after initial
Read_Local_AMP_Info_Request command, and when the AMP Controller
detects a change has occurred regarding status and is based on availability
thresholds.
Event Parameters:
0x03 The AMP Controller has low capacity available for Bluetooth operation.
This value indicates that the majority of the AMP Controllers band-
width is currently allocated to servicing a non Bluetooth technology.
An AMP Controller that with capacity in the approximate range of 0
< capacity < 30% should indicate this value.
This value does not indicate how much of the capacity available for
Bluetooth operation is currently available.
This value shall only be used if the AMP Controller is powered up.
0x04 The AMP Controller has medium capacity available for Bluetooth
operation.
An AMP Controller that with capacity in the approximate range of
30% < capacity < 70% should indicate this value.
This value does not indicate how much of the capacity available for
Bluetooth operation is currently available.
This value shall only be used if the AMP Controller is powered up
0x05 The AMP Controller has high capacity available for Bluetooth oper-
ation.
This value indicates that the majority of the AMP Controllers band-
width is currently allocated to servicing the Bluetooth technology.
An AMP Controller that with capacity in the approximate range of
70% < capacity < 100% should indicate this value.
This value does not indicate how much of the capacity available for
Bluetooth operation is currently available.
This value shall only be used if the AMP Controller is powered up
0x06 The AMP Controller has full capacity available for Bluetooth operation.
This value indicates that while currently the AMP is only being used
by Bluetooth the device allows a different technology to share the
radio.
This value shall be used by devices that are not capable of deter-
mining the current available capacity of an AMP that is shared by a
different technology.
This value does not indicate how much of the capacity available for
Bluetooth operation is currently available.
This value shall only be used if the AMP Controller is powered up.
0x07 - 0xFF Reserved
Description:
The AMP Start Test event shall be generated when the AMP_Test command
has completed and the first data is ready to be sent or received .
Event Parameters:
0xXX See the Test Commands section of the Protocol Adaptation Layer Func-
tional Specification for the Controller type
Description:
The AMP Test End event shall be generated to indicate that the AMP has
transmitted or received the number of frames/bursts configured.
If the Receiver reports are enabled an AMP Receiver Report Event shall be
generated.
Event Parameters:
0xXX See the Test Commands section of the Protocol Adaptation Layer Func-
tional Specification for the Controller type
Description:
The AMP Receiver Report event shall be sent from the AMP to the tester via
the AMP Test Manager at the interval configured by the
Enable_AMP_Receiver_Reports command.
The AMP Receiver Report event is generated to indicate the number of frames
received and optionally the number of bits in error detected.
Event Parameters:
Description:
Description:
The LE Connection Complete event indicates to both of the Hosts forming the
connection that a new connection has been created. Upon the creation of the
connection a Connection_Handle shall be assigned by the Controller, and
passed to the Host in this event. If the connection establishment fails this event
shall be provided to the Host that had issued the LE_Create_Connection
command.
This event indicates to the Host which issued a LE_Create_Connection
command and received a Command Status event if the connection
establishment failed or was successful.
The Master_Clock_Accuracy parameter is only valid for a slave. On a master,
this parameter shall be set to 0x00.
Event Parameters:
0x05 50 ppm
0x06 30 ppm
0x07 20 ppm
Description:
Event Parameters:
0x00 - 0x1F Length of the Data[i] field for each device which responded.
0x20 - 0xFF Reserved for future use.
Description:
On a slave, if no connection parameters are updated, then this event shall not
be issued.
Note: The parameter values returned in this event may be different from the
parameter values provided by the Host through the LE Connection Update
command (Section 7.8.18) or the LE Remote Connection Parameter Request
Reply command (Section 7.8.31).
Event Parameters:
Description:
The LE Read Remote Used Features Complete event is used to indicate the
completion of the process of the Controller obtaining the used features of the
remote Bluetooth device specified by the Connection_Handle event parameter.
Event Parameters:
0x04 Subevent code for LE Read Remote Used Features Complete event
0xXXXXXXXXXX Bit Mask List of used LE features. See [Vol 6] Part B, Section 4.6.
XXXXXX
Description:
The LE Long Term Key Request event indicates that the master device is
attempting to encrypt or re-encrypt the link and is requesting the Long Term
Key from the Host. (See [Vol 6] Part B, Section 5.1.3).
Event Parameters:
Description:
This event indicates to the master’s Host or the slave’s Host that the remote
device is requesting a change in the connection parameters. The Host replies
either with the HCI LE Remote Connection Parameter Request Reply
command or the HCI LE Remote Connection Parameter Request Negative
Reply command.
Event Parameters:
0xXXXX Maximum allowed slave latency for the connection specified as the
number of connection events requested by the remote device.
Range: 0x0000 to 0x01F3 (499)
Description:
The LE Data Length Change event notifies the Host of a change to either the
maximum Payload length or the maximum transmission time of Data Channel
PDUs in either direction. The values reported are the maximum that will
actually be used on the connection following the change.
Event Parameters:
0xXXXX The maximum number of payload octets in a Link Layer Data Channel
PDU that the local Controller will send on this connection (connEffec-
tiveMaxTxOctets defined in [Vol 6] Part B, Section 4.5.10).
Range 0x001B-0x00FB (0x0000 - 0x001A and 0x00FC - 0xFFFF
Reserved for future use)
0xXXXX The maximum time that the local Controller will take to send a Link
Layer Data Channel PDU on this connection (connEffectiveMaxTx-
Time defined in [Vol 6] Part B, Section 4.5.10).
Range 0x0148-0x0848 (0x0000 - 0x0127 and 0x0849 - 0xFFFF
Reserved for future use)
0xXXXX The maximum number of payload octets in a Link Layer Data Channel
PDU that the local controller expects to receive on this connection
(connEfectiveMaxRxOctets defined in [Vol 6] Part B, Section 4.5.10).
Range 0x001B-0x00FB (0x0000 - 0x001A and 0x00FC - 0xFFFF
Reserved for future use)
0xXXXX The maximum time that the local Controller expects to take to receive a
Link Layer Data Channel PDU on this connection (connEffectiveMax-
RxTime defined in [Vol 6] Part B, Section 4.5.10).
Range 0x0148-0x0848 (0x0000 - 0x0127 and 0x0849 - 0xFFFF
Reserved for future use)
Description:
Event Parameters:
0x08 Subevent code for the LE Read Local P-256 Public Key Complete event.
Description:
This event indicates that LE Diffie Hellman key generation has been completed
by the Controller.
Event Parameters:
0x01-0xFF LE_Generate_DHKey command failed. See Part D, Error Codes for a list of
error codes and descriptions.
Description:
Event Parameters:
0xXXXXXXXXXX Resolvable Private Address being used by the local device for this con-
XX nection. This is only valid when the Own_Address_Type (from the
HCI_LE_Create_Connection or HCI_LE_Set_Advertising_Parameters
commands) is set to 0x02 or 0x03. For other Own_Address_Type val-
ues, the Controller shall return all zeros.
0xXXXXXXXXXX Resolvable Private Address being used by the peer device for this con-
XX nection. This is only valid for Peer_Address_Type 0x02 and 0x03. For
other Peer_Address_Type values, the Controller shall return all zeros.
0x04 75 ppm
0x05 50 ppm
0x06 30 ppm
0x07 20 ppm
0x08 – 0xFF Reserved for future use
Description:
Event Parameters:
Description:
The Triggered Clock Capture event is sent to indicate that a triggering event
has occurred at the specified clock and offset value. The Which_Clock
parameter indicates whether the clock is local or a piconet clock. The
Connection_Handle parameter is used when the clock is a piconet clock to
indicate which piconet’s clock was reported.
The Clock parameter indicates the value of the selected clock at the instant of
the triggering event, with bits 1 and 0 set to 0b.
The Slot_Offset parameter indicates the number of microseconds (from 0 to
1249) from the instant at which the selected clock took the value Clock until the
triggering event.
Event Parameters:
0xXXXXXXXX Bluetooth clock of the device requested with bits 1 and 0 set to 0b.
N = 0xXXXX Number of microseconds from the selected clock attaining the value
Clock until the triggering event.
Range: 0 to 1249.
Description:
Event Parameters:
Description:
Event Parameters:
0xXX Value from octet 27 of the Synchronization Train packet; see Table
8.8 ([Vol. 2], Part B, Section 8.11.2 on page 207)
Description:
The Connectionless Slave Broadcast Receive event shall be sent by the BR/
EDR Controller every Connectionless Slave Broadcast Instant on which the
BR/EDR Controller is scheduled to receive a Connectionless Slave Broadcast
packet. If the packet is not received successfully, the event returns a
Receive_Status of 0x01. Otherwise, the event returns the payload Data along
with the Piconet Clock and the offset from the local CLKN when the packet was
received.
Event Parameters:
Description:
Event Parameters:
Description:
The Truncated Page Complete event indicates to the Host that a Truncated
Page command completed. Truncated Paging is considered to be successful
when a slave page response ID packet has been received by the local BR/EDR
Controller. See [Vol 2] Part B, Section 8.3.3 for more information.
A Truncated Page Complete event shall always be sent for each Truncated
Page Command. If the Host issues a Truncated Page Cancel command before
the Controller returns the Truncated Page Complete event, then the Truncated
Page Complete event shall be sent after the Command Complete event for the
Truncated Page Cancel command. If the cancellation was successful, the
Truncated Page Complete event shall be generated with the error code
Unknown Connection Identifier (0x02).
Event Parameters:
Description:
The Slave Page Response Timeout event indicates to the Host that a slave
page response timeout has occurred in the BR/EDR Controller. Note: this
event will be generated if the slave BR/EDR Controller responds to a page but
does not receive the master FHS packet (see [Vol 2] Part B, Section 8.3.3)
within pagerespTO.
Event Parameters:
None
Description:
After an AFH channel map change takes effect for the PBD logical link, the
Connectionless Slave Broadcast Transmitter BR/EDR Controller shall send
this event to the Host. Upon reception of this event, the Host may restart the
synchronization train to allow receivers to obtain the updated AFH channel
map.
Event Parameters:
Description:
The Inquiry Response Notification event indicates to the Host that the BR/EDR
Controller responded to an Inquiry message. The LAP parameter in the event
indicates the LAP used to create the access code received. The parameter
may be used by the Host to determine which access code was used in cases
where the BR/EDR Controller is performing inquiry scan on multiple inquiry
access codes using parallel scanning or sequential scanning. See [Vol 3] Part
C, Section 4.1.2.1 for details on sequential and parallel scanning.
The LAP parameter returned by the BR/EDR Controller shall be one of the
LAPs currently enabled. LAPs are enabled via the Write_Current_IAC_LAP
command.
The RSSI parameter indicates the signal strength of the received ID packet.
Event Parameters:
Description:
Event Parameters:
0xXXXX Connection_Handle of the connection where the packet with a valid MIC was not
received within the timeout.
Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use)
Return
Command OCF Command Parameters Parameters
Description:
Command Parameters:
Return Parameters:
Command
Command OCF parameters Return Parameters
Description:
Command Parameters:
None.
Return Parameters:
0x01 – 0xFF Total number of HCI ACL Data Packets that can be stored in the data
buffers of the Controller.
Description:
This command requests the list of the supported LE features for the Controller.
Command Parameters:
None.
Return Parameters:
0xXXXXXXXXXXXXXXXX Bit Mask List of supported LE features. See [Vol 6] Part B, Sec-
tion 4.6.
Description:
The LE_Set_Random_Address command is used by the Host to set the LE
Random Device Address in the Controller (see [Vol 6] Part B, Section 1.3).
Command Parameters:
Return Parameters:
Return
Command OCF Command parameters Parameters
Description:
For high duty cycle directed advertising, i.e. when Advertising_Type is 0x01
(ADV_DIRECT_IND, high duty cycle), the Advertising_Interval_Min and
Advertising_Interval_Max parameters are not used and shall be ignored.
The Advertising_Type is used to determine the packet type that is used for
advertising when advertising is enabled.
The Host shall not issue this command when advertising is enabled in the
Controller; if it is the Command Disallowed error code shall be used.
Command Parameters:
N = 0xXXXX Minimum advertising interval for undirected and low duty cycle
directed advertising.
Range: 0x0020 to 0x4000
Default: N = 0x0800 (1.28 second)
Time = N * 0.625 msec
Time Range: 20 ms to 10.24 sec
N = 0xXXXX Maximum advertising interval for undirected and low duty cycle
directed advertising.
Range: 0x0020 to 0x4000
Default: N = 0x0800 (1.28 seconds)
Time = N * 0.625 msec
Time Range: 20 ms to 10.24 sec
0x00 Process scan and connection requests from all devices (i.e., the White List
is not in use) (default).
0x01 Process connection requests from all devices and only scan requests from
devices that are in the White List.
0x02 Process scan requests from all devices and only connection requests from
devices that are in the White List..
0x03 Process scan and connection requests only from devices in the White List.
0x04 – 0xFF Reserved for future use.
Return Parameters:
Description:
Command Parameters:
None.
Return Parameters:
Description:
Command Parameters:
Return Parameters:
Description:
This command is used to provide data used in Scanning Packets that have a
data field.
Command Parameters:
Return Parameters:
Description:
Command Parameters:
Return Parameters:
Description:
The Host shall not issue this command when scanning is enabled in the
Controller; if it is the Command Disallowed error code shall be used.
Command Parameters:
N = 0xXXXX This is defined as the time interval from when the Controller
started its last LE scan until it begins the subsequent LE scan.
Range: 0x0004 to 0x4000
Default: 0x0010 (10 ms)
Time = N * 0.625 msec
Time Range: 2.5 msec to 10.24 seconds
Return Parameters:
Description:
The Filter_Duplicates parameter controls whether the Link Layer should filter
out duplicate advertising reports (Filtering_Enabled) to the Host, or if the Link
Layer should generate advertising reports for each packet received
(Filtering_Disabled).
Command Parameters:
Return Parameters:
Description:
The Host shall not issue this command when another LE_Create_Connection
is pending in the Controller; if this does occur the Controller shall return the
Command Disallowed error code.
Command Parameters:
N = 0xXXXX This is defined as the time interval from when the Controller started
its last LE scan until it begins the subsequent LE scan.
Range: 0x0004 to 0x4000
Time = N * 0.625 msec
Time Range: 2.5 msec to 10240 msec
0x00 White list is not used to determine which advertiser to connect to.
Peer_Address_Type and Peer_Address shall be used.
0x01 White list is used to determine which advertiser to connect to.
Peer_Address_Type and Peer_Address shall be ignored.
N = 0xXXXX Minimum value for the connection event interval. This shall be less
than or equal to Conn_Interval_Max.
Range: 0x0006 to 0x0C80
Time = N * 1.25 msec
Time Range: 7.5 msec to 4 seconds.
0x0000 – 0x0005 and Reserved for future use
0x0C81 – 0xFFFF
N = 0xXXXX Maximum value for the connection event interval. This shall be
greater than or equal to Conn_Interval_Min.
Range: 0x0006 to 0x0C80
Time = N * 1.25 msec
Time Range: 7.5 msec to 4 seconds.
0x0000 – 0x0005 Reserved for future use
and 0x0C81 –
0xFFFF
N = 0xXXXX Supervision timeout for the LE Link. (See [Vol 6] Part B, Section
4.5.2)
Range: 0x000A to 0x0C80
Time = N * 10 msec
Time Range: 100 msec to 32 seconds
Return Parameters:
None.
Command
Command OCF parameters Return Parameters
Description:
Command Parameters:
None.
Return Parameters:
If the cancellation was successful then, after the Command Complete event for
the LE_Create_Connection_Cancel command:
• if the LE Enhanced Connection Complete event is unmasked, then that
event shall be sent.
• otherwise the LE Connection Complete event shall be sent.
In either case, the event shall be sent with the error code Unknown Connection
Identifier (0x02).
Description:
Command Parameters:
None.
Return Parameters:
0x01 – 0xFF Total number of white list entries that can be stored in the Control-
ler.
0x00 Reserved for future use
Description:
The LE_Clear_White_List command is used to clear the white list stored in the
Controller.
Command Parameters:
None.
Return Parameters:
Description:
Command Parameters:
Return Parameters:
Description:
Command Parameters:
Return Parameters:
Description:
The actual parameter values selected by the Link Layer may be different from
the parameter values provided by the Host through this command.
Command Parameters:
N = 0xXXXX Minimum value for the connection event interval. This shall be
less than or equal to Conn_Interval_Max.
Range: 0x0006 to 0x0C80
Time = N * 1.25 msec
Time Range: 7.5 msec to 4 seconds.
0x0000-0x0005 and Reserved for future use
0x0C81-0xFFFF
N = 0xXXXX Maximum value for the connection event interval. This shall
be greater than or equal to Conn_Interval_Min.
Range: 0x0006 to 0x0C80
Time = N * 1.25 msec
Time Range: 7.5 msec to 4 seconds.
0x0000-0x0005 and Reserved for future use
0x0C81-0xFFFF
Return Parameters:
None.
Note: a Command Complete event is not sent by the Controller to indicate that
this command has been completed. Instead, the LE Connection Update
Complete event indicates that this command has been completed.
Description:
If this command is used, the Host should send it within 10 seconds of knowing
that the channel classification has changed. The interval between two
successive commands sent shall be at least one second.
This command shall only be used when the local device supports the Master
role.
Command Parameters:
Return Parameters:
Description:
Command Parameters:
0xXXXX The Connection_Handle for the Connection for which the Chan-
nel_Map is to be read.
Range 0x0000-0x0EFF (0x0F00 – 0x0FFF Reserved for future
use)
Return Parameters:
Description:
This command requests a list of the used LE features from the remote device.
This command shall return a list of the used LE features. For details see [Vol 6]
Part B, Section 4.6.
Command Parameters:
Return Parameters:
None.
The LE Read Remote Used Features Complete event contains the status of
this command, and the parameter describing the used features of the remote
device.
Note: A Command Complete event is not sent by the Controller to indicate that
this command has been completed. Instead, the LE Read Remote Used
Features Complete event indicates that this command has been completed.
Description:
Command Parameters:
0xXXXXXXXXXXXXXX 128 bit key for the encryption of the data given in the command.
XXXXXXXXXXXXXXX The most significant octet of the key corresponds to key[0] using
XXX the notation specified in FIPS 197.
Return Parameters:
Description:
Command Parameters:
None.
Return Parameters:
0x01 – 0xFF LE_Rand command failed. See Part D, Error Codes on page 370 for a
list of error codes and descriptions.
Description:
Command Parameters:
Return Parameters:
None.
Note: A Command Complete event is not sent by the Controller to indicate that
this command has been completed. Instead, the Encryption Change or
Encryption Key Refresh Complete events indicate that this command has been
completed.
Description:
The LE_Long_Term_Key_Request Reply command is used to reply to an LE
Long Term Key Request event from the Controller, and specifies the
Long_Term_Key parameter that shall be used for this Connection_Handle. The
Long_Term_Key is used as defined in [Vol 6] Part B, Section 5.1.3.
Command Parameters:
0xXXXXXXXXXXXXXX 128 bit long term key for the given connection.
XXXXXXXXXXXXXXX
XXX
Return Parameters:
Description:
Command Parameters:
Return Parameters:
Description:
LE_States is an 8-octet bit field. If a bit is set to 1 then this state or state
combination is supported by the Controller. Multiple bits in LE_States may be
set to 1 to indicate support for multiple state and state combinations.
Command Parameters:
None.
Return Parameters:
Advertising State
Scannable
Advertising State
Connectable
Advertising State
Non-connectable
tising State
Directed Adver-
High Duty Cycle
tising State
Directed Adver-
Low Duty Cycle
Scanning State
Active
Scanning State
Passive
Initiating State
(Master Role)
Connection State
(Slave Role)
Connection State
future use
Reserved for
Value
0x000000000
X
0000000
0x000000000
X
0000001
0x000000000
X
0000002
0x000000000
X
0000004
0x000000000
X
0000008
0x000000000
X
0000010
0x000000000
X
0000020
0x000000000
X
0000040
0x000000000
X
0000080
0x000000000
X X
0000100
0x000000000
X X
0000200
0x000000000
X X
0000400
0x000000000
X X
0000800
0x000000000
X X
0001000
0x000000000
X X
0002000
0x000000000
X X
0004000
0x000000000
X X
0008000
0x000000000
X X
0010000
0x000000000
X X
0020000
0x000000000
X X
0040000
Advertising State
Scannable
Advertising State
Connectable
Advertising State
Non-connectable
tising State
Directed Adver-
High Duty Cycle
tising State
Directed Adver-
Low Duty Cycle
Scanning State
Active
Scanning State
Passive
Initiating State
(Master Role)
Connection State
(Slave Role)
Connection State
future use
Reserved for
Value
0x000000000
X X
0080000
0x000000000
X X
0100000
0x000000000
X X
0200000
0x000000000
X X
0400000
0x000000000
X X
0800000
0x000000000
X X
1000000
0x000000000
X X
2000000
0x000000000
X X
4000000
0x000000000
X X
8000000
0x000000001
X X
0000000
0x000000002
X
0000000
0x000000004
X X
0000000
0x000000008
X X
0000000
0x000000010
X X
0000000
0x000000020
X X
0000000
0x000000040
X X
0000000
0x000000080
X X
0000000
0x000000100
X X
0000000
0x000000200
X X
0000000
0x000000400
X X
0000000
0x000000800
X X
0000000
Advertising State
Scannable
Advertising State
Connectable
Advertising State
Non-connectable
tising State
Directed Adver-
High Duty Cycle
tising State
Directed Adver-
Low Duty Cycle
Scanning State
Active
Scanning State
Passive
Initiating State
(Master Role)
Connection State
(Slave Role)
Connection State
future use
Reserved for
Value
0x000001000
X X
0000000
0x000002000
X X
0000000
0xFFFFFC00
X
00000000
Return
Command OCF Command Parameters Parameters
Description:
This command is used to start a test where the DUT receives test reference
packets at a fixed interval. The tester generates the test reference packets.
Command Parameters:
N = 0xXX N = (F – 2402) / 2
Return Parameters:
Return
Command OCF Command Parameters Parameters
Description:
This command is used to start a test where the DUT generates test reference
packets at a fixed interval. The Controller shall transmit at maximum power.
Command Parameters:
N = 0xXX N = (F – 2402) / 2
Range: 0x00 – 0x27. Frequency Range : 2402 MHz to 2480 MHz
Return Parameters:
Command
Command OCF Parameters Return Parameters
Description:
Command Parameters:
None.
Return Parameters:
Description:
Both the master Host and the slave Host use this command to reply to the HCI
LE Remote Connection Parameter Request event. This indicates that the Host
has accepted the remote device’s request to change connection parameters.
The Latency parameter shall define the maximum allowed slave latency for the
connection in number of connection events.
The Timeout parameter shall define the link supervision timeout for the LE link.
The Timeout in milliseconds shall be larger than (1 + Latency) * Interval_Max * 2,
where Interval_Max is given in milliseconds.
The actual parameter values selected by the Link Layer may be different from
the parameter values provided by the Host through this command.
Command Parameters:
0xXXXX Maximum allowed slave latency for the connection specified as the
number of connection events.
Range: 0x0000 to 0x01F3 (499)
Return Parameters:
Description:
Both the master Host and the slave Host use this command to reply to the HCI
LE Remote Connection Parameter Request event. This indicates that the Host
has rejected the remote device’s request to change connection parameters.
The reason for the rejection is given in the Reason parameter.
Instead of issuing this command, the Host should try to provide alternative
connection parameters to the Link Layer via the HCI LE Remote Connection
Parameter Request Reply command (Section 7.8.31).
Command Parameters:
0xXX Reason that the connection parameter request was rejected. See
[Vol 2] Part D, Error Codes for a list of error codes and descriptions.
Return Parameters:
Description:
Command Parameters:
0xXXXX Preferred maximum number of payload octets that the local Control-
ler should include in a single Link Layer Data Channel PDU.
Range 0x001B-0x00FB (0x0000 - 0x001A and 0x00FC - 0xFFFF
Reserved for future use)
Return Parameters:
Command
Command OCF Parameters Return Parameters
Description:
Command Parameters:
None.
Return Parameters:
0xXXXX The Host's suggested value for the Controller's maximum transmitted
number of payload octets to be used for new connections - connIni-
tialMaxTxOctets.
Range 0x001B-0x00FB (0x0000 - 0x001A and 0x00FC - 0xFFFF
Reserved for future use)
Default: 0x001B
0xXXXX The Host's suggested value for the Controller's maximum packet
transmission time to be used for new connections - connInitialMaxTx-
Time.
Range 0x0148-0x0848 (0x0000 - 0x0147 and 0x0849 - 0xFFFF
Reserved for future use)
Default: 0x0148
Return
Command OCF Command Parameters Parameters
Description:
Command Parameters:
0xXXXX The Host's suggested value for the Controller's maximum transmitted
number of payload octets to be used for new connections - connIni-
tialMaxTxOctets.
Range 0x001B-0x00FB (0x0000 - 0x001A and 0x00FC - 0xFFFF
Reserved for future use)
0xXXXX The Host's suggested value for the Controller's maximum packet
transmission time to be used for new connections -
connInitialMaxTxTime.
Range 0x0148-0x0848 (0x0000 - 0x0127 and 0x0849 - 0xFFFF
Reserved for future use)
Return Parameters:
HCI_LE_Read_Local_P-256_ 0x0025
Public_Key
Description:
The keys returned via this command shall not be used when Secure
Connections is used over the BR/EDR transport.
Command Parameters:
None.
Return Parameters:
None.
Description:
The Diffie-Hellman key returned via this command shall not be generated using
any keys used for Secure Connections over the BR/EDR transport.
Command Parameters:
Return Parameters:
None.
Return
Command OCF Command Parameters parameters
Description:
This command can be used at any time when address translation is disabled in
the Controller.
When a Controller cannot add a device to the resolving list because the list is
full, it shall respond with error code 0x07 (Memory Capacity Exceeded).
Command Parameters:
Return Parameters:
Return
Command OCF Command Parameters parameters
Description:
This command can be used at any time when address translation is disabled in
the Controller.
When a Controller cannot remove a device from the resolving list because it is
not found, it shall respond with error code 0x02 (Unknown Connection
Identifier).
Command Parameters:
Return Parameters:
Command Return
Command OCF Parameters parameters
Description:
This command can be used at any time when address translation is disabled in
the Controller.
Command Parameters:
None
Return Parameters:
Command
Command OCF Parameters Return parameters
Description:
Command Parameters:
None
Return Parameters:
Description:
Command Parameters:
Return Parameters:
Command Return
Command OCF Parameters Parameters
Description:
Command Parameters:
Return Parameters:
Command Return
Command OCF Parameters parameters
Description:
Command Parameters:
Return Parameters:
Command Return
Command OCF Parameters parameters
Description:
Command Parameters:
Return Parameters:
Command
Command OCF Parameters Return parameters
Description:
Command Parameters:
None.
Return Parameters:
0xXXXX Maximum number of payload octets that the local Controller supports
for transmission of a single Link Layer Data Channel PDU.
Range 0x001B-0x00FB (0x0000 - 0x001A and 0x00FC - 0xFFFF
Reserved for future use)
0xXXXX Maximum time, in microseconds, that the local Controller supports for
transmission of a single Link Layer Data Channel PDU.
Range 0x0148-0x0848 (0x0000 - 0x0147 and 0x0849 - 0xFFFF
Reserved for future use)
0xXXXX Maximum number of payload octets that the local Controller supports
for reception of a single Link Layer Data Channel PDU.
Range 0x001B-0x00FB (0x0000 - 0x001A and 0x00FC - 0xFFFF
Reserved for future use)
0xXXXX Maximum time, in microseconds, that the local Controller supports for
reception of a single Link Layer Data Channel PDU.
Range 0x0148-0x0848 (0x0000 - 0x0147 and 0x0849 - 0xFFFF
Reserved for future use)
Description:
This command is used to read the default Page Scan Mode configuration
parameter of the local BR/EDR Controller. See “Page Scan Mode” on
page 1054.
Command Parameters:
None.
Return Parameters:
Return
Command OGF OCF Command Parameters Parameters
Description:
This command is used to write the default Page Scan Mode configuration
parameter of the local BR/EDR Controller. See Page Scan Mode on page 1054
Command Parameters:
Return Parameters:
Command
Command OCF Parameters Return Parameters
Description:
Command Parameters:
None.
Return Parameters:
0x00 P0
0x01 P1
0x02 P2
0x03-0xFF Reserved.
Description:
This command is used to write the mandatory Page_Scan_Period_Mode
configuration parameter of the local BR/EDR Controller. See Section 6.10 on
page 481.
Command Parameters:
0x00 P0
0x01 P1
Return Parameters:
Command Return
Command OGF OCF Parameters Parameters
Description:
This command will cause the Link Manager to create a SCO connection using
the ACL connection specified by the Connection_Handle command parameter.
This command causes the local BR/EDR Controller to create a SCO
connection. The Link Manager will determine how the new connection is
established. This connection is determined by the current state of the device,
its piconet, and the state of the device to be connected. The Packet_Type
command parameter specifies which packet types the Link Manager should
use for the connection. The Link Manager must only use the packet type(s)
specified by the Packet_Type command parameter for sending HCI SCO Data
Packets. Multiple packet types may be specified for the Packet_Type
command parameter by performing a bitwise OR operation of the different
packet types. The Link Manager may choose which packet type is to be used
from the list of acceptable packet types. A Connection Handle for this
connection is returned in the Connection Complete event (see below).
Note: At least one packet type must be specified. The Host should enable as
many packet types as possible for the Link Manager to perform efficiently.
However, the Host must not enable packet types that the local device does not
support.
Command Parameters:
0xXXXX Connection Handle for the ACL connection being used to create an SCO
connection.
Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use)
0x0040 HV2
0x0080 HV3
0x0100 Reserved for future use.
Return Parameters:
None.
Description:
The Page Scan Mode Change event indicates that the connected remote BR/
EDR Controller with the specified BD_ADDR has successfully changed the
Page_Scan_Mode.
Event Parameters:
Description:
This command will read the value for the Country_Code return parameter.
The Country_Code defines which range of frequency band of the ISM 2.4 GHz
band will be used by the device. Each country has local regulatory bodies
regulating which ISM 2.4 GHz frequency ranges can be used.
Command Parameters:
None.
Return Parameters:
0x01 France
0x04-FF Reserved for future use.
*. Except France
Description:
This command will read the value for the Encryption_Mode configuration
parameter. See Section A.10.1 on page 1054.
Command Parameters:
None.
Return Parameters:
Description:
This command will write the value for the Encryption_Mode configuration
parameter. See Section A.10.1 on page 1054.
Command Parameters:
Return Parameters:
A temporary link key is used when both broadcast and point-to-point traffic are
encrypted.
The Host must not specify the Encryption_Mode parameter with more
encryption capability than its local device currently supports, although the
parameter is used to request the encryption capability to the remote device.
Note that the Host must not request the command with the Encryption_Mode
parameter set to 0x01, when the local device does not support encryption.
Note: for encryption to be used, both devices must support and enable
encryption.
The Page_Scan_Mode parameter indicates the page scan mode that is used
for default page scan. Currently one mandatory page scan mode and three
optional page scan modes are defined. Following an inquiry response, if the
Baseband timer T_mandatory_pscan has not expired, the mandatory page
scan mode must be applied. For details see the [Vol 2] Part B, Baseband
Specification (Keyword: Page Scan Mode, FHS Packet, T_mandatory_pscan)
CONTENTS
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2, Part F] page 1060
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2, Part F] page 1061
1 INTRODUCTION
This section shows typical interactions between Host Controller Interface (HCI)
Commands and Events and Link Manager (LM) Protocol Data Units (PDU) on
the BR/EDR Controller. It focuses on the message sequence charts (MSCs) for
the procedures specified in [3] “Host Controller Interface Functional
Specification” with regard to LM Procedures from [2] “Link Manager Protocol”
and PALs found in Volume 5.
This section illustrates only the most useful scenarios, it does not cover all
possible alternatives. Furthermore, the message sequence charts do not
consider errors over the air interface or host interface. In all message
sequence charts it is assumed that all events are not masked, so the Host
Controller will not filter out any events.
1.1 NOTATION
The notation used in the message sequence charts (MSCs) consists of ovals,
elongated hexagons, boxes, lines, and arrows. The vertical lines terminated on
the top by a shadow box and at the bottom by solid oval indicate a protocol
entity that resides in a device. MSCs describe interactions between these
entities and states those entities may be in.
LM-A LM-B
Host A Host B
Master Slave
User
Input
HCI_Command
HCI_Event
LMP_message
Group of Transactions
LMP_message
LM-A Decision
LMP_optional
LMP_message
LMP_message
HCI_Event HCI_Event
Step 1: The host sends an HCI_Set_Event_Mask with the bit of Remote Host
Supported Features Notification Event (0x1000000000000000) set and an
HCI_Remote_Name_Request command expecting that its local device will
automatically try to connect to the remote device. (See Figure 2.1.)
LM-A LM-B
Host A Host B
Master Slave
HCI_Set_Event_Mask
Only necessary if local
(0x1000000000000000 is set) device supports SSP and
this command has not been
HCI_Command_Complete issued yet
HCI_Remote_Name_Request
HCI_Command_Status
Step 2a: If an ACL Connection does not exist device A pages device B. After
the Baseband paging procedure, the local device attempts to get the remote
device's extended features, send an
HCI_Remote_Device_Supported_Features_Notification event, get the remote
name, disconnect, and return the name of the remote device to the Host. (See
Figure 2.2 on page 1064.)
LM-A LM-B
Host A Host B
Master Slave
LMP_features_req
LMP_features_res
LMP_features_req_ext
LMP_features_res_ext
Only necessary if
device supports
HCI_Remote_Host_ extended features
Supported_Features_
Notification
LMP_name_req
LMP_name_res
HCI_Remote_Name_
Request_Complete
LMP_detach
Step 2b: If an ACL Connection exists when the request is made, then the
Remote Name Request procedure will be executed like an optional service. No
Paging and no ACL disconnect is done. (See Figure 2.3.)
LM-A LM-B
Host A Host B
Master Slave
LMP_name_req
LMP_name_res
HCI_Remote_Name_
Request_Complete
LM-A
Host A BB-B BB-C
Master
HCI_Inquiry
HCI_Command_Status
Step 2: The Controller will start the Baseband inquiry procedure with the
specified Inquiry Access Code and Inquiry Length. When Inquiry Responses
are received, the Controller extracts the required information and returns the
information related to the found devices using one or more Inquiry Result
events to the Host. (See Figure 2.5.)
LM-A
Host A BB-B BB-C
Master
BB
HCI_Inquiry_Result
BB
HCI_Inquiry_Result
LM-A
Host A BB-B BB-C
Master
HCI_Inquiry_Cancel
HCI_Command_Complete
Step 3b: If the Inquiry procedure is completed due to the number of results
obtained, or the Inquiry Length has expired, an Inquiry Complete event is
returned to the Host. (See Figure 2.7.)
LM-A
Host A BB-B BB-C
Master
LM-A
Host A BB-B BB-C
Master
HCI_Periodic_Inquiry
HCI_Command_Complete
Step 2: The Controller will start a periodic Inquiry. In the inquiry cycle, one or
several Inquiry Result events will be returned. (See Figure 2.9.)
LM-A
Host A BB-B BB-C
Master
BB
HCI_Inquiry_Result
BB
HCI_Inquiry_Result
Step 3: An Inquiry Complete event will be returned to the Host when the
current periodic inquiry has finished. (See Figure 2.10.)
LM-A
Host A BB-B BB-C
Master
Step 3: LM-A terminates Inquiry when Inquiry Length or Num Responses returned
HCI_Inquiry_Complete
LM-A
Host A BB-B BB-C
Master
HCI_Exit_Periodic_Inquiry
HCI_Command_Complete
Step 2:FeaturesExchange
Step 6:OptionalSecurity
Step 8:OptionalEncryption
OptionalDataFlow
Step 10:Disconnection
LM-A LM-B
Host A Host B
Master Slave
HCI_Create_Connection
HCI_Command_Status
LM-A LM-B
Host A Host B
Master Slave
LMP_features_req_ext
LMP_features_res_ext
LMP_features_req_ext
LMP_features_res_ext
LM-A LM-B
Host A Host B
Master Slave
LMP_host_connection_req
HCI_Connection_Request
Step 4a: The remote host rejects this connection, and the link is terminated.
(See Figure 3.5.)
LM-A LM-B
Host A Host B
Master Slave
HCI_Reject_Connection_Request
LMP_not_accepted
LMP_detach
HCI_Connection_Complete HCI_Connection_Complete
Step 4b: The remote host accepts this connection. (See Figure 3.6.)
LM-A LM-B
Host A Host B
Master Slave
HCI_Accept_Connection_Request
(Slave Preferred)
HCI_Command_Status
LMP_accepted
Step 4c: The remote host accepts this connection but with the preference of
being a master. This will cause a role switch to occur before the LMP_accepted
for the LMP_host_connection_req PDU is sent. (See Figure 3.7.)
LM-A LM-B
Host A Host B
Master Slave
HCI_Accept_Connection_Request
(Master Preferred)
HCI_Command_Status
LMP_slot_offset
LMP_switch_req
LMP_accepted
Role Switch
LMP_accepted
(LMP_host_connection_req)
Step 5: After the features have been exchanged and AFH support is
determined to be available, the master may at any time send an LMP_set_AFH
and LMP_channel_classification_req PDU. (See Figure 3.8.)
LM-A LM-B
Host A Host B
Master Slave
LMP_set_AFH
LMP_channel_classification_req
LMP_channel_classification
LMP_channel_classification
LM-A LM-B
Host A Host B
Master Slave
HCI_Link_Key_Request
Step 7a: If authentication is required by the higher layers and the devices to
be connected do not have a common link key, a pairing procedure will be used.
The LM will have requested a link key from the host for this connection. If there
is a negative reply, then a PIN code will be requested. This PIN code will be
requested on both sides of the connection, and authentication performed
based on this PIN code. The last step is for the new link key for this connection
to be passed to the host so that it may store it for future connections.
(See Figure 3.10.)
LM-A LM-B
Host A Host B
Master Slave
HCI_Link_Key_Request_Negative_Reply
HCI_Command_Complete
HCI_PIN_Code_Request
User
inputs PIN
Code
HCI_PIN_Code_Request_Reply
HCI_Command_Complete
LMP_in_rand
HCI_PIN_Code_Request
User
inputs PIN
Code
HCI_PIN_Code_Request_Reply
HCI_Command_Complete
LMP_accepted
LMP_comb_key
LMP_comb_key
LMP_au_rand
LMP_sres
LMP_au_rand
LMP_sres
HCI_Link_Key_Notification HCI_Link_Key_Notification
Step 7b: If a common link key exists between the devices, then pairing is not
needed. The LM will have asked for a link key from the host for this connection.
If this is a positive reply, then the link key is used for authentication. If the
configuration parameter Authentication_Enable is set, then the authentication
procedure must be executed. This MSC only shows the case when
Authentication_Enable is set on both sides. (See Figure 3.11.)
LM-A LM-B
Host A Host B
Master Slave
HCI_Link_Key_Request_Reply
HCI_Command_Complete
LMP_au_rand
LMP_Link_Key_Request
HCI_Link_Key_Request_Reply
LMP_sres
HCI_Command_Complete
LMP_au_rand
LMP_sres
LM-A LM-B
Host A Host B
Master Slave
If (encryption required)
LMP_encryption_mode_req
LMP_accepted
LMP_encryption_key_size_req
LMP_accepted
LMP_start_encryption_req
LMP_accepted
LM-A LM-B
Host A Host B
Master Slave
LMP_setup_complete
LMP_setup_complete
HCI_Connection_Complete HCI_Connection_Complete
Step 10: Once the connection is no longer needed, either device may
terminate the connection using the HCI_Disconnect command and
LMP_detach message PDU. The disconnection procedure is one-sided and
does not need an explicit acknowledgment from the remote LM. The use of
ARQ Acknowledgment from the Baseband is needed to ensure that the remote
LM has received the LMP_detach PDU. (See Figure 3.14.)
LM-A LM-B
Host A Host B
Master Slave
HCI_Disconnect
HCI_Command_Status
LMP_detach
BB ACK
HCI_Disconnection_Complete HCI_Disconnection_Complete
Note: If the Controller or LM and the Host do not have the Link Key a PIN Code
Request event will be sent to the Host to request a PIN Code for pairing. A
procedure identical to that used during Connection Setup (Section 3.1, Step
7a:) will be used. (See Figure 3.10 on page 1074.)
HCI_Authentication_Requested
HCI_Command_Status
HCI_Link_Key_Request
HCI_Link_Key_Request_Reply
HCI_Command_Complete
LMP_au_rand
HCI_Link_Key_Request
HCI_Link_Key_Request_Reply
HCI_Command_Complete
LMP_sres
HCI_Authentication_Complete
LM-A LM-B
Host A Host B
Master Slave
HCI_Authentication_Requested
HCI_Command_Status
HCI_Link_Key_Request
HCI_Link_Key_Request_Reply
HCI_Command_Complete
LMP_au_rand
HCI_Link_Key_Request
HCI_Link_Key_Request_Reply
HCI_Command_Complete
LMP_au_rand
LMP_sres
LMP_sres
HCI_Authentication_Complete
Step 3a: L2CAP Connection Request Step 3b: Optional OOB Information
for a Secure Service Transfer
If a device supports OOB information exchange, then the Host should request
the C and R values from the controller that need to be sent by OOB. It is then
assumed that the host transfers this information to the OOB system. Note: This
could occur a long time before, for example at the factory for a passive tag.
LM-A LM-B
Host A Host B
Master Slave
HCI_Read_Local_OOB_Data HCI_Read_Local_OOB_Data
HCI_Command_Complete HCI_Command_Complete
CR transferred to CR transferred to
OOB OOB
LM-A LM-B
Host A Host B
Master Slave
HCI_Read_Local_OOB_Extended_Data HCI_Read_Local_OOB_Extended_Data
HCI_Command_Complete HCI_Command_Complete
CR transferred to CR transferred to
OOB OOB
To enable simple pairing, a device must use the Write Simple Pairing Mode
command. This should be done before any other connections that may use
simple pairing are created.
LM-A LM-B
Host A Host B
Master Slave
HCI_Write_Simple_Pairing_Mode
(enabled)
HCI_Command_Complete
HCI_Write_Simple_Pairing_Mode
(enabled)
HCI_Command_Complete
LM-A LM-B
Host A Host B
Master Slave
HCI_Write_Secure_Connections_Host_Support
(enabled)
HCI_Command_Complete
HCI_Write_Authenticated_
Payload_Timeout
HCI_Command_Complete
L2CAP A L2CAP B
Even if a Bluetooth connection has not been established between two devices,
an OOB transfer can occur that transfers the Bluetooth Device Address of the
device, and other OOB information for authentication. If an OOB transfer
occurs, then the host can start simple pairing.
Host A Host B
OOB Transfer
OOB Transfer
Once the host has determined that simple pairing should start, it issues an
Authentication Requested command to the controller. This will cause the
controller to generate a request for a link key. If the host has a link key for this
connection, then pairing is not required, and the link key can be used
immediately once it has been authenticated. Simple Pairing will only be used if
a Link_Key_Request_Negative_Reply Command is sent from the Host to the
Controller on the initiating side.
HCI_Authentication Requested
HCI_Command Status
HCI_Command Complete
HCI_IO_Capability_Request
HCI_IO_Capability_Request_Reply
HCI_Command_Complete
LMP_IO_capability_req
HCI_IO_Capabilitiy_Response
HCI_IO_Capabilitiy_Request
HCI_IO_Capability_Request_Reply
HCI_Command_Complete
LMP_IO_capability_res
HCI_IO_Capability_Response
Next the public keys are exchanged between the two devices. Once a device
has received the public key of the peer device, it can start to calculate the Diffie
Hellman Key (DHKey). This may take a long time, and should be started early,
so that user interaction can hide the calculation time. The DHKey is not
required until step 8.
LMP_encapsulated_header
(P-192_public_key or P-256_public_key)
LMP_accepted
LMP_encapsulated_payload
LMP_accepted
Start Calculating
DHKey
LMP_encapsulated_header
(P-192_public_key or P-256_public_key)
LMP_accepted
LMP_accepted
Start Calculating
DHKey
4.2.9 Authentication
The numeric comparison step will be done when both devices have output
capabilities, or if one of the devices has no input or output capabilities. If both
devices have output capabilities, this step requires the displaying of a user
confirmation value. This value should be displayed until the end of step 8. If
one or both devices do not have output capabilities, the same protocol is used
but the Hosts will skip the step asking for the user confirmation.
Note: The sequence for Just Works is identical to that of Numeric Comparison
with the exception that the Host will not show the numbers to the user.
Pick N
Pick N
Calculate C
LMP_simple_pairing_confirm
LMP_simple_pairing_number
LMP_accepted
LMP_simple_pairing_number
Check C
LMP_accepted
HCI_User_Confirmation_Request HCI_User_Confirmation_Request
(Value) (Value)
HCI_User_Confirmation_Request_ HCI_User_Confirmation_Request_
Reply Reply
HCI_Command_Complete HCI_Command_Complete
If the numeric comparison fails on the initiating side due to the user indicating
that the confirmation values do not match, Simple Pairing is terminated.
Pick N
Pick N
Calculate C
LMP_simple_pairing_confirm
LMP_simple_pairing_number
LMP_accepted
LMP_simple_pairing_number
Check C
LMP_accepted
HCI_User_Confirmation_Request HCI_User_Confirmation_Request
(Value) (Value)
HCI_User_Confirmation_Request_ HCI_User_Confirmation_Request_
Negative_Reply Reply
HCI_Command_Complete HCI_Command_Complete
LMP_numeric_comparison_failed
HCI_Simple_Paring_Complete HCI_Simple_Pairing_Complete
(failure) (failure)
If the numeric comparison fails on the responding side due to the user
indicating that the confirmation values do not match, Simple Pairing is
terminated.
Pick N
Pick N
Calculate C
LMP_simple_pairing_confirm
LMP_simple_pairing_number
LMP_accepted
LMP_simple_pairing_number
Check C
LMP_accepted
HCI_User_Confirmation_Request HCI_User_Confirmation_Request
(Value) (Value)
HCI_User_Confirmation_Request_ HCI_User_Confirmation_Request_
Reply Negative_Reply
HCI_Command_Complete HCI_Command_Complete
LMP_Dhkey_check
LMP_not_accepted
HCI_Simple_Paring_Complete HCI_Simple_Pairing_Complete
(failure) (failure)
The Passkey entry step is used in two cases: when one device has numeric
input only and the other device has either a display or numeric input capability
or when both devices only have numeric input capability. In this step, one
device display a number to be entered by the other device or the user enters a
number on both devices. This number should be displayed until the end of step
8. Key press notification messages are shown during the user input phase.
HCI_User_Passkey_Notification HCI_User_Passkey_Request
Example Notifications
HCI_Send_Keypress_Notification
LMP_keypress _notification (Notification _Type=Entry
HCI_Keypress_Notification
started)
(Notification_Type=Entry
HCI_Command_Complete
Started )
User
Input
HCI_Send_Keypress_Notification
LMP_keypress _notification (Notification _Type=Entry
HCI_Keypress_Notification
Completed )
(Notification_Type=Entry
HCI_Command_Complete
Completed )
HCI_User_Passkey_
Request_Reply
HCI_Command_Complete
Repeat 20 times
LMP_simple_pairing_confirm
LMP_simple_pairing_confirm
LMP_simple_pairing_number
Check C
LMP_accepted
LMP_simple_pairing_number
Check C
LMP_accepted
If the passkey entry fails on the responding side, Simple Pairing is terminated.
HCI_User_Passkey_Notification HCI_User_Passkey_Request
User Input
HCI_User_Passkey_Request_
Negative_Reply
HCI_Command_Complete
LMP_simple_pairing_confirm
LMP_not_accepted
HCI_Simple_Pairing_Complete HCI_Simple_Pairing_Complete
(failure) (failure)
If the passkey entry fails on the initiating side, Simple Pairing is terminated.
Note that this is only possible if the initiating LM side sends an HCI User
Passkey Request event.
HCI_User_Passkey_Request_
Negative_Reply
HCI_Command_Complete
LMP_passkey _entry_failed
HCI_Simple_Pairing_Complete HCI_Simple_Pairing_Complete
(failure) (failure)
The OOB authentication will only be done when both devices have some OOB
information to use. This step requires no user interaction.
HCI_Remote_OOB_Data_Request HCI_Remote_OOB_Data_Request
HCI_Remote_OOB_Data_Request_Reply HCI_Remote_OOB_Data_Request_Reply
HCI_Command_Complete HCI_Command_Complete
Pick N Pick N
Calculate C Calculate C
LMP_simple_pairing_number
LMP_accepted
LMP_simple_pairing_number
LMP_accepted
HCI_Remote_OOB_Data_Request HCI_Remote_OOB_Data_Request
HCI_Remote_OOB_Extended_Data_Request_Reply HCI_Remote_OOB_Extended_Data_Request_Reply
HCI_Command_Complete HCI_Command_Complete
Pick N Pick N
Calculate C Calculate C
LMP_simple_pairing_number
LMP_accepted
LMP_simple_pairing_number
LMP_accepted
If the initiating side does not have OOB information, Simple Pairing is
terminated.
HCI_Remote_OOB_Data_Request HCI_Remote_OOB_Data_Request
HCI_Remote_OOB_Data_Request_ HCI_Remote_OOB_Data_Request_
Negative_Reply Reply
HCI_Command_Complete HCI_Command_Complete
Pick N Pick N
Calculate C Calculate C
LMP_oob_failed
HCI_Simple_Pairing_Complete HCI_Simple_Pairing_Complete
(failure) (failure)
Once the devices have been authenticated, and the DHKey calculation has
completed, the DHKey value generated is checked. If this succeeds, then both
devices would have finished displaying information to the user about the
process, and therefore a message is sent from the controller to the host to
notify it to stop displaying this information.
DHKey DHKey
Calculation Calculation
Finished Finished
LMP_dhkey_check
Check E
LMP_accepted
LMP_dhkey_check
Check E
LMP_accepted
HCI_Simple_Pairing_Complete HCI_Simple_Pairing_Complete
Once simple pairing is complete, the link key can be calculated from the
DHKey, and this should be used as input to a standard mutual authentication.
Once this is complete, a Link Key Notification event will be generated.
Calculate Calculate
Link Key Link Key
LMP_au_rand
LMP_sres
LMP_au_rand
LMP_sres
HCI_Link_Key_Notification HCI_Link_Key_Notification
Once the link key has been notified to the host, the Authentication Requested
command will complete with an Authentication Complete event. The host can
then turn on encryption using the standard methods.
HCI_Authentication_Complete
HCI_Set_Connection_Encryption
(on)
HCI_Command_Status
LMP_encryption_mode_req
LMP_accepted
LMP_accepted
LMP_start_encryption
LMP_accepted
L2CAP A L2CAP B
When the Authenticated Payload Timeout has nearly expired, the Link
Manager will force the remote device to send a packet containing a MIC by
sending the LMP_ping_req PDU.
TAuthenticated_Payload
nearly expired
LMP_ping_req
LMP_ping_res
When a packet with a MIC has not been received within the Authenticated
Payload Timeout, the Host is notified that the timer has expired.
TAuthenticated_Payload
nearly expired
LMP_ping_req
TAuthenticated_Payload
expired
HCI_Authenticated_Payload_Timeout_Expired
TAuthenticated_Payload
nearly expired
TAuthenticated_Payload
expired
HCI_Authenticated_Payload_Timeout_Expired
LMP response
timeout expired
TAuthenticated_Payload
nearly expired
LMP_ping_req
LM-A LM-B
Host A Host B
Master Slave
HCI_Write_Link_Supervision_
Timeout
LMP_supervision_timeout
HCI_Command_Complete
HCI_Link_Supervision_
Timeout_Changed
LM-A LM-B
Host A Host B
Master Slave
HCI_Set_Connection_Encryption
(on)
HCI_Command_Status
LMP_encryption_mode_req
LMP_accepted
LMP_encryption_key_size_req
LMP_accepted
LMP_start_encryption_req
LMP_accepted
LM-A LM-B
Host A Host B
Master Slave
HCI_Set_Connection_Encryption
(off)
HCI_Command_Status
LMP_encryption_mode_req
LMP_accepted
LMP_stop_encryption_req
LMP_accepted
LM-A LM-B
Host A Host B
Master Slave
HCI_Change_Connection_
Link_Key
HCI_Command_Status
LMP_comb_key
LMP_comb_key
LMP_au_rand
LMP_sres
LMP_au_rand
LMP_sres
HCI_Link_Key_Notification HCI_Link_Key_Notification
HCI_Change_Connection_
Link_Key_Complete
LM-A LM-B
Host A Host B
Master Slave
Step 1: Change Connection Link Key with Encryption Pause and Resume
HCI_Change_Connection_
Link_Key
HCI_Command_Status
LMP_comb_key
LMP_comb_key
LMP_au_rand
LMP_sres
LMP_au_rand
LMP_sres
HCI_Link_Key_Notification HCI_Link_Key_Notification
LMP_pause_encryption _req
LMP_pause_encryption _req
LMP_stop_encryption_req
LMP_accepted
LMP_start_encryption _req
LMP_accepted
HCI_Encryption_Key_ HCI_Encryption_Key_
Refresh_Complete Refresh_Complete
HCI_Change_Connection_
Link_Key_Complete
Figure 4.33: Change connection link key with encryption pause resume
LM-A LM-B
Host A Host B
Master Slave
Step 1: Host requests switch from Semi-permanent Link Key to Master Link Key
HCI_Master_Link_Key
(master_link_key)
HCI_Command_Status
LMP_temp_rand
LMP_temp_key
If (encryption is enabled)
then restart encryption
LMP_encryption_mode_req
(off)
LMP_accepted
LMP_stop_encryption_req
LMP_accepted
LMP_encryption_mode_req
(on)
LMP_accepted
LMP_encryption_key_size_req
LMP_accepted
LMP_start_encryption_req
LMP_accepted
HCI_Master_Link_Key_Complete HCI_Master_Link_Key_Complete
Step 2: The host changes to a Semi-permanent Link Key from a Master Link
Key using the HCI_Master_Link_Key command. (See Figure 4.35.)
LM-A LM-B
Host A Host B
Master Slave
Step 2: Host requests switch from Master Link Key to Semi-permanent Link Key
HCI_Master_Link_Key
(semi_permanent_link_key)
HCI_Command_Status
LMP_use_semi_permanent_key
LMP_accepted
If (encryption is enabled)
then restart encryption
LMP_encryption_mode_req
(off)
LMP_accepted
LMP_stop_encryption_req
LMP_accepted
LMP_encryption_mode_req
(on)
LMP_accepted
LMP_encryption_key_size_req
LMP_accepted
LMP_start_encryption_req
LMP_accepted
HCI_Master_Link_Key_Complete HCI_Master_Link_Key_Complete
If the remote supported features have been obtained previously then the
Controller may return them without sending any LMP PDUs.
HCI_Read_Remote_
Supported_Features
HCI_Command_Status
LMP_features_req
LMP_features_res
HCI_Read_Remote_Supported_
Features_Complete
If the remote extended features have been obtained previously then the
Controller may return them without sending any LMP PDUs.
HCI_Read_Remote_Extended_
Features
HCI_Command_Status
LMP_features_req_ext
LMP_features_res_ext
HCI_Read_Remote_Extended_
Features_Complete
HCI_Read_Clock_Offset
HCI_Command_Status
LMP_clkoffset_req
LMP_clkoffset_res
HCI_Read_Clock_Offset_
Complete
LM-A LM-B
Host A Host B
Master Slave
HCI_Switch_Role
HCI_Command_Status
LMP_pause_encryption_req
LMP_pause_encryption_req
LMP_stop_encryption_req
LMP_accepted
LMP_switch_req
LMP_slot_offset
LMP_accepted
LM-A LM-B
Slave Master
LMP_resume_encryption _req
LMP_start_encryption _req
LMP_accepted
HCI_Encryption_Key_ HCI_Encryption_Key_
Refresh_Complete Refresh_Complete
HCI_Role_Change HCI_Role_Change
Figure 4.39: Role switch on an encrypted link using encryption pause and resume
LM-A LM-B
Host A Host B
Master Slave
Refreshing the Encryption Key with Encryption Pause and Resume (E0)
HCI_Refresh_Encryption_Key
Optional HCI
HCI_Command_Status initiation
LMP_pause_encryption_req
LMP_pause_encryption_req
LMP_stop_encryption_req
LMP_accepted
LMP_start_encryption_req
LMP_accepted
HCI_Encryption_Key_Refresh_Complete HCI_Encryption_Key_Refresh_Complete
When both devices support Secure Connections, the encryption key refresh
sequence is performed as follows.
LM-A LM-B
Host A Host B
Master Slave
Refreshing the Encryption Key with Encryption Pause and Resume (AES-CCM)
HCI_Refresh_Encryption_Key
HCI_Command_Status
LMP_pause_encryption_aes_req
LMP_pause_encryption_req
LMP_stop_encryption_req
LMP_accepted
LMP_start_encryption_req
LMP_accepted
HCI_Encryption_Key_Refresh_Complete HCI_Encryption_Key_Refresh_Complete
If the remote version information has been obtained previously then the
Controller may return them without sending any LMP PDUs.
HCI_Read_Remote_
Version_Information
HCI_Command_Status
LMP_version_req
LMP_version_res
HCI_Read_Remote_Version_
Information_Complete
LM-A LM-B
Host A Host B
Master Slave
HCI_Flow_Specification (Tx)
HCI_Command_Status
HCI_Flow_Specification_Complete
(Tx)
HCI_Flow_Specification (Rx)
HCI_Command_Status
LMP_quality_of_service_req
LMP_accepted
HCI_Flow_Specification_Complete HCI_Flow_Specification_Complete
(Rx) (Rx)
Step 1a: The master host (A) requests a role switch with a slave. This will
send the switch request, and the slave will respond with the slot offset and
accepted. (See Figure 4.44.)
LM-A LM-B
Host A Host B
Master Slave
Step 1a: Master Host A requests Role Switch with Slave Device B
HCI_Switch_Role
HCI_Command_Status
LMP_switch_req
LMP_slot_offset
LMP_accepted
Step 1b: The slave host (B) requests a role switch with a master. This will
send the slot offset and the switch request, and the master will respond with a
LMP_accepted PDU. (See Figure 4.45.)
LM-A LM-B
Host A Host B
Master Slave
Step 1b: Slave Host B requests Role Switch with Master Device B
HCI_Switch_Role
HCI_Command_Status
LMP_slot_offset
LMP_switch_req
LMP_accepted
Step 2: The role switch is performed by doing the TDD switch and piconet
switch. Finally an HCI_Role_Change event is sent on both sides.
(See Figure 4.46.)
LM-A LM-B
Host A Host B
Master Slave
Piconet Switch
Step 4: Authentication
Step 5: Disconnection
Figure 4.47: Overview diagram for physical link creation and disconnection
Step 1: Host A uses the BR/EDR Controller to request AMP_Info data from
Host B in order to create an AMP connection. Host B gets this information from
PAL B using HCI Read Local AMP Info. Host B returns the information to Host
A over the BR/EDR radio.
AMP AMP
Host A Host B
PAL A PAL B
Host A uses the BR/EDR Controller to request AMP data from Host B
HCI_Read_Local_AMP_Info
HCI_Command_Complete
HCI_Read_Local_AMP_Assoc
HCI_Command_Complete
Host B uses the BR/EDR Controller to return the AMP data to Host A
Step 2: Host A sends an HCI Create Physical Link command to its AMP
Controller. AMP Controller A determines which channel will be used, and
provides channel information to its Host. AMP Controller A joins or creates that
channel. Note use of dotted rectangles for zero or multiple uses of read or write
AMP_Assoc.
AMP AMP
Host A Host B
PAL A PAL B
HCI_Create_Physical_Link
HCI_Command_Status
HCI_Write_Remote_AMP_Assoc
HCI_Command_Complete
HCI_Channel_Selected
HCI_Read_Local_AMP_Assoc
HCI_Command_Complete
Figure 4.49: Host A tells its controller to create the physical link
Step 3: Host A uses the BR/EDR radio to request a physical link to B. Host B
tells its AMP Controller to accept a physical link from Device A.
AMP AMP
Host A Host B
PAL A PAL B
Host A uses the BR/EDR radio to tell Device B to accept a physical link
HCI_Accept_Physical_Link
HCI_Command_Status
HCI_Write_Remote_AMP_Assoc
HCI_Command_Complete
AMP AMP
Host A Host B
PAL A PAL B
HCI_Physical_Link_Complete HCI_Physical_Link_Complete
AMP AMP
Host A Host B
PAL A PAL B
HCI_Physical_Link_Disconnect
HCI_Command_Status
HCI_Physical_Link_ HCI_Physical_Link_
Disconnect_Complete Disconnect_Complete
Step 6: During normal operation the AMP Controller may alert its Host to
issues on the link.
AMP AMP
Host A Host B
PAL A PAL B
HCI_Physical_Link_Loss_ HCI_Physical_Link_Loss_
Early_Warning Early_Warning
HCI_Physical_Link_Recovery HCI_Physical_Link_Recovery
Step 1: Host A sends a Logical Link Create command to its AMP Controller.
AMP Controllers A and B do whatever AMP specific action is required to meet
the bandwidth request. Each AMP Controller sends the Logical Link Creation
Complete event to its host. Both devices can now pass data traffic over the
AMP channel.
AMP AMP
Host A Host B
PAL A PAL B
HCI_Logical_Link_Create HCI_Logical_Link_Accept
HCI_Command_Status HCI_Command_Status
AMP AMP
Host A Host B
PAL A PAL B
HCI_Disconnect_Logical_Link
HCI_Command_Status
HCI_Disconnection_Logical_Link_ HCI_Disconnection_Logical_Link_
Complete Complete
Step 3: During normal operation the Host may modify logical link characteristics.
AMP AMP
Host A Host B
PAL A PAL B
Host A having negotiated with remote Host new Flow Spec, makes request to its Controller
HCI_Flow_Spec_Modify HCI_Flow_Spec_Modify
HCI_Command_Status HCI_Command_Status
4.17.1 Discover the AMP Present and Running Transmitter and Receiver
Tests
The process of discovering the number of AMPs and running transmitter and
receiver tests is detailed in the following three steps.
Step 1: The tester sends an AMP Discovery Request to the AMP Test Manager
of the DUT over the BR/EDR ACL connection. The AMP Test Manager will
reply with the AMP Discover Response to the tester with a list of available AMP
and type over the BR/EDR ACL connection. The tester then requests the PHY
capabilities for each of the AMP it may test.
AMP enumeration
Step 1: Discover remote AMPs and read the supported PHY capabilities
HCI_Read_Local_AMP_ASSOC
Repeat HCI_Command_Complete
reading parts of
AMP ASSOC HCI_Read_Local_AMP_ASSOC
until all is read
HCI_Command_Complete
HCI_Read_Local_AMP_ASSOC
Repeat HCI_Command_Complete
reading parts of
AMP ASSOC HCI_Read_Local_AMP_ASSOC
until all is read
HCI_Command_Complete
HCI_AMP_Test
(Transmitter test parameters)
HCI_AMP_Start_Test
HCI_AMP_Test_End
Step 3: In order to Enable AMP Receiver Reports, the Tester sends an AMP
test command to the AMP Test Manager of the DUT using the L2CAP AMP
Test message for the AMP Controller indicated by the Controller_ID. The
Command_Complete_Event is returned to the Tester via the AMP Test
Manager in an L2CAP AMP Test Message.
In order to configure a receiver test, the Tester sends an
HCI_AMP_Test_Command to the AMP Test Manager of the DUT using the
L2CAP AMP Test Message for the AMP controller indicated by the
Controller_ID. The AMP Test Manager sends on the
HCI_AMP_Test_Command on to the AMP indicated by the Controller_ID. The
HCI_AMP_Start_Event is returned to the Tester via the AMP Test Manager in
an L2CAP AMP Test Message.
AMP_Receiver_Reports and the HCI_Test_End_Event are sent back to the
Tester via the AMP Test Manager from the controller and then the Recever
reports is disabled by the Tester using the
HCI_Enable_AMP_Receiver_Reports command.
Enable_AMP_Receiver_Reports
(Enable,Interval)
Command_Complete_Event
AMP_Receiver_Report
AMP_Test_End
Command_Complete_Event
AMP_Receiver_Report
Enable_AMP_Receiver_Reports
(Disable, Interval)
Command_Complete_Event
Figure 4.60: Configure and run a receiver test with receiver reports on an AMP
LM-A LM-B
Host A Host B
Master Slave
HCI_Setup_Synchronous_Connection
(EV3 | EV4 | EV5)
HCI_Command_Status
LMP_eSCO_link_req
HCI_Connection_Request
(eSCO)
HCI_Accept_Synchronous_
Connection_Request
(EV3 | EV4 | EV5)
LMP_eSCO_link_req
LMP_eSCO_link_req
LMP_accepted_ext
HCI_Synchronous_Connection_ HCI_Synchronous_Connection_
Complete (eSCO) Complete (eSCO)
LM-A LM-B
Host A Host B
Master Slave
HCI_Setup_Synchronous_Connection
(EV3 | EV4 | EV5)
HCI_Command_Status
LMP_eSCO_link_req
HCI_Connection_Request
(eSCO)
HCI_Accept_Synchronous_
Connection_Request
(EV3 | EV4 | EV5)
HCI_Command_Status
LMP_eSCO_link_req
LMP_eSCO_link_req
LMP_eSCO_link_req
LMP_accepted_ext
HCI_Synchronous_Connection_ HCI_Synchronous_Connection_
Complete (eSCO) Complete (eSCO)
LM-A LM-B
Host A Host B
Master Slave
HCI_Setup_Synchronous_Connection
(HV1|HV2|HV3|EV3|EV4|EV5)
HCI_Command_Status
LMP_SCO_link_req
HCI_Connection_Request
(SCO)
HCI_Accept_Connection_Request
HCI_Command_Status
LMP_accepted
HCI_Synchronous_Connection_ HCI_Connection_Complete
Complete (SCO)
LM-A LM-B
Host A Host B
Master Slave
HCI_Setup_Synchronous_Connection
(HV1|HV2|HV3|EV3|EV4|EV5)
HCI_Command_Status
LMP_SCO_link_req
HCI_Connection_Request
(SCO)
HCI_Accept_Connection_Request
HCI_Command_Status
LMP_accepted
HCI_Synchronous_Connection_ HCI_Connection_Complete
Complete
LM-A LM-B
Host A Host B
Master Slave
Step 1e: Legacy Host B requests Synchronous Connection with Master Device A
HCI_Add_SCO_Connection
HCI_Command_Status
LMP_SCO_link_req
HCI_Connection_Request
(SCO)
HCI_Accept_Synchronous_Connection
_Request (HV1 | HV2 | HV3)
HCI_Command_Status
LMP_SCO_link_req
LMP_accepted
HCI_Synchronous_Connection_ HCI_Connection_Complete
Complete
Figure 5.5: Any device that supports only SCO connections requests a synchronous connection
with a device
LM-A LM-B
Host A Host B
Master Slave
HCI_Setup_Synchronous_Connection
(Retransmission_effort = 0x00)
HCI_Command_Status
LMP_eSCO_link_req
LMP_eSCO_link_req
LMP_eSCO_link_req
LMP_accepted_ext
HCI_Synchronous_Connection_ HCI_Synchronous_Connection_
Changed Changed
LM-A LM-B
Host A Host B
Master Slave
HCI_Setup_Synchronous_Connection
(EV3, Retransmission_effort = 0x00)
HCI_Command_Status
LMP_eSCO_link_req
LMP_eSCO_link_req
LMP_accepted_ext
HCI_Synchronous_Connection_ HCI_Synchronous_Connection_
Changed Changed
LM-A LM-B
Host A Host B
Master Slave
HCI_Disconnect
HCI_Command_Status
LMP_remove_eSCO_link_req
LMP_accepted_ext
HCI_Disconnection_Complete HCI_Disconnection_Complete
LM-A LM-B
Host A Host B
Master Slave
HCI_Disconnect
HCI_Command_Status
LMP_remove_SCO_link_req
LMP_accepted
HCI_Disconnection_Complete HCI_Disconnection_Complete
LM-A LM-B
Host A Host B
Master Slave
HCI_Enhanced_Setup_
Synchronous _Connection
(EV3|EV4|EV5|2EV3|2EV5|3EV3|3EV5)
HCI_Command_Status
LMP_eSCO_link_req
HCI_Connection_Request
(eSCO)
HCI_Accept_Synchronous_
Connection_Request
(EV3|EV4|EV5|2EV3|2EV5|3EV3|3EV5)
HCI_Command_Status
LMP_eSCO_link_req
LMP_eSCO_link_req
LMP_accepted_ext
HCI_Synchronous_Connection_ HCI_Synchronous_Connection_
Complete (eSCO) Complete (eSCO)
LM-A LM-B
Host A Host B
Master Slave
HCI_Enhanced_Setup_
Synchronous_Connection
(EV3|EV4|EV5|2EV3|2EV5|3EV3|3EV5)
HCI_Command_Status
LMP_eSCO_link_req
HCI_Connection_Request
(eSCO)
HCI_Enhanced_Accept_
Synchronous_Connection_Request
(EV3|EV4|EV5|2EV3|2EV5|3EV3|3EV5)
HCI_Command_Status
LMP_eSCO_link_req
LMP_eSCO_link_req
LMP_eSCO_link_req
LMP_accepted_ext
HCI_Synchronous_Connection_ HCI_Synchronous_Connection_
Complete (eSCO) Complete (eSCO)
Step 1c: Master device requests a SCO connection with a slave device.
LM-A LM-B
Host A Host B
Master Slave
HCI_Enhanced_Setup_
Synchronous_Conn
(HV1|HV2|HV3|EV3|EV4|EV5|2EV3|2EV5
|3EV3|3EV5)
HCI_Command_Status
LMP_SCO_link_req
HCI_Connection_Request
(SCO)
HCI_Accept_Connection_Request
HCI_Command_Status
LMP_accepted
HCI_Synchronous_Connection_ HCI_Connection_Complete
Complete (SCO) (SCO)
Step 1d: Slave device requests a SCO connection with a master device.
LM-A LM-B
Host A Host B
Master Slave
HCI_Add_SCO_Connection
(HV1|HV2|HV3)
HCI_Command_Status
LMP_SCO_link_req
HCI_Connection_Request
(SCO)
HCI_Enhanced_Accept_
Synchronous_Connection_Request
(HV1|HV2|HV3)
HCI_Command_Status
LMP_SCO_link_req
LMP_accepted
HCI_Synchronous_Connection_ HCI_Connection_Complete
Complete (SCO) (SCO)
LM-A LM-B
Host A Host B
Master Slave
HCI_Enhanced_Setup_
Synchronous_Connection
(EV3|EV4|EV5|2EV3|2EV5|3EV3|3EV5)
HCI_Command_Status
LMP_eSCO_link_req
LMP_eSCO_link_req
LMP_eSCO_link_req
LMP_accepted_ext
HCI_Synchronous_Connection_ HCI_Synchronous_Connection_
Changed Changed
LM-A LM-B
Host A Host B
Master Slave
HCI_Enhanced_Setup_
Synchronous_Connection
(EV3|EV4|EV5|2EV3|2EV5|3EV3|3EV5)
HCI_Command_Status
LMP_eSCO_link_req
LMP_eSCO_link_req
LMP_eSCO_link_req
LMP_eSCO_link_req
LMP_accepted_ext
HCI_Synchronous_Connection_ HCI_Synchronous_Connection_
Changed Changed
Entry into Sniff mode, Hold mode or Park state requires an established ACL
Connection.
Step 1: Host requests to enter sniff mode. Multiple LMP_sniff_req PDUs may
be sent as the parameters for sniff mode are negotiated. (See Figure 6.1.)
HCI_Sniff_Mode
HCI_Command_Status
LMP_sniff_req
LMP_accepted
HCI_Exit_Sniff_Mode
HCI_Command_Status
LMP_unsniff_req
LMP_accepted
LM-A LM-B
Host A Host B
Master Slave
HCI_Hold_Mode
HCI_Command_Status
LMP_set_AFH (AHS(79))
LMP_hold_req
LMP_accepted
Step 1b: A host may force hold mode. (See Figure 6.4.)
LM-A LM-B
Host A Host B
Master Slave
Step 1b: Master Host A forces Hold Mode with Slave Device B
HCI_Hold_Mode
HCI_Command_Status
LMP_set_AFH (AHS(79))
LMP_hold
Step 1c: A slave device requests hold mode. (See Figure 6.5.)
LM-A LM-B
Host A Host B
Master Slave
Step 1c: Slave Host B forces Hold Mode with Master Device A
HCI_Hold_Mode
HCI_Command_Status
LMP_hold
LMP_set_AFH (AHS(79))
LMP_hold
Step 2: When hold mode completes the hosts are notified using the
HCI_Mode_Change event. (See Figure 6.6.)
LM-A LM-B
Host A Host B
Master Slave
LMP_set_AFH (current_map)
Step 1a: The master requests to place the slave in the park state. Before
sending the LMP_park_req PDU, the master may disable AFH by setting the
connection into AHS(79). (See Figure 6.7.)
LM-A LM-B
Host A Host B
Master Slave
Step 1a: Master Host A requests Park State with Slave Device B
HCI_Park_State
HCI_Command_Status
LMP_set_AFH (AHS(79))
LMP_park_req
LMP_accepted
Step 1b: The slave requests to be placed in the park state. Before sending the
LMP_park_req PDU back to the slave, the master may disable AFH by setting
the connection into AHS(79). (See Figure 6.8 on page 1151.)
LM-A LM-B
Host A Host B
Master Slave
Step 1b: Slave Host B requests Park State with Master Device A
HCI_Park_State
HCI_Command_Status
LMP_park_req
LMP_set_AFH (AHS(79))
LMP_park_req
LMP_accepted
Step 2: When in the park state, a slave still needs to unparked for link
supervision purposes. The master sends an LMP_unpark_PM_ADDR_req
PDU or an LMP_unpark_BD_ADDR_req PDU to the slave during the beacon.
Only the PM_ADDR version is illustrated in the figure. (See Figure 6.9.)
LM-A LM-B
Host A Host B
Master Slave
LMP_unpark_PM_ADDR_req
Slave unparks
LMP_accepted
LMP_park_req
LMP_accepted
Slave parks
Step 3a: A master may unpark a slave to exit park state. The master should
re-enable AFH by setting the current AFH channel map to the unparked slave.
(See Figure 6.10.)
LM-A LM-B
Host A Host B
Master Slave
HCI_Exit_Park_State
HCI_Command_Status
LMP_unpark_PM_ADDR_req
Slave unparks
LMP_accepted
LMP_set_AFH (current_map)
LM-A LM-B
Host A Host B
Master Slave
Step 3b: Slave Host B Exits Park State with Master Device A
HCI_Exit_Park_State
HCI_Command_Status
LMP_unpark_PM_ADDR_req
Slave unparks
LMP_accepted
LMP_set_AFH (current_map)
Buffer management is very important for resource limited devices. This can be
achieved on the Host Controller Interface using the HCI_Read_Buffer_Size
command, and the HCI_Number_Of_Completed_Packets event, and the
HCI_Set_Host_Controller_To_Host_Flow_Control, HCI_Host_Buffer_Size and
HCI_Host_Number_Of_Completed_Packets commands.
Step 1: During initialization, the host reads the buffer sizes available in the
Controller. When an HCI Data Packet has been transferred to the remote
device, and a Baseband acknowledgement has been received for this data,
then an HCI_Number_Of_Completed_Packets event will be generated.
(See Figure 7.1.)
HCI_Read_Buffer_Size
HCI_Command_Complete
Data Packet
BB ACK
Step 2: During initialization, the host notifies the Controller that host flow
control shall be used, and then the host buffer sizes available. When a data
packet has been received from a remote device, an HCI Data Packet is sent to
the host from the Controller, and the host shall acknowledge its receipt by
sending HCI_Host_Number_Of_Completed_Packets. (See Figure 7.2.)
HCI_Set_Host_Controller_
To_Host_Flow_Control
HCI_Command_Complete
HCI_Host_Buffer_Size
HCI_Command_Complete
Data Packet
Data Packet
ACK
Data Packet
HCI_Host_Number_Of_
Completed_Packets
8 LOOPBACK MODE
Step 1: The host enters local loopback mode. Four connection complete
events are generated and then a command complete event.
(See Figure 8.1.)
HCI_Write_Loopback_Mode
(local)
HCI_Connection_Complete
(ACL)
HCI_Connection_Complete
(SCO or eSCO)
HCI_Connection_Complete
(SCO or eSCO)
HCI_Connection_Complete
(SCO or eSCO)
HCI_Connection_Complete
Step 2a: The host sending HCI Data Packet will receive the exact same data
back in HCI Data Packets from the Controller. (See Figure 8.2.)
Step 2a: Host enters sends data to Controller while in Local Loopback Mode
Step 2b: The host sending most HCI Command Packets to the Controller will
receive an HCI_Loopback_Command event with the contents of the HCI
Command Packet in the payload. (See Figure 8.3.)
Step 2b: Host enters sends HCI Commands to Controller while in Local Loopback Mode
HCI_Loopback_Command
HCI_Loopback_Command
Step 3: The host exits local loopback mode. Multiple disconnection complete
events are generated before the command complete event.
(See Figure 8.4.)
HCI_Write_Loopback_Mode
(no loopback)
HCI_Disconnection_Complete
(ACL)
HCI_Disconnection_Complete
(SCO or eSCO)
HCI_Disconnection_Complete
(SCO or eSCO)
HCI_Disconnection_Complete
(SCO or eSCO)
HCI_Command_Complete
Step 1: The remote host first sets up an connection to the local device. The
local device then enables remote loopback. (See Figure 8.5.)
HCI_Write_Loopback_Mode
(remote)
HCI_Command_Complete
Step 2: Any data received from the remote host will be looped back in the
Controller of the local device. (See Figure 8.6.)
Step 2: Host B sends data packets that will loopback through Device A
Data Packet
ACK
HCI_Number_Of_Completed_
Packets
Data Packet
Step 3: The local host exits remote loopback mode. Any connections can then
be disconnected by the remote device. (See Figure 8.7.)
HCI_Write_Loopback_Mode
(no loopback)
HCI_Command_Complete
HCI_Write_Scan_Enable
HCI_Command_Complete
HCI_Truncated_Page
HCI_Command_Status
Page
Page
Page Response
HCI_Truncated_Page_Complete
Pagersp_TO
HCI_Slave_Page_Response_Timeout
HCI_Set_Reserved_LT_ADDR
HCI_Command_Complete
HCI_Set_Connectionless_Slave_Broadcast_Data
HCI_Command_Complete
HCI_Set_Connectionless_Slave_Broadcast
HCI_Command_Complete
HCI_Write_Synchronization_Train_Parameters
HCI_Command_Complete
HCI_Start_Synchronization_Train
HCI_Command_Status
HCI_Receive_Synchronization_Train
HCI_Command_Status
HCI_Synchronization_Train_Received
synctrain_TO
HCI_Synchronization_Train_Complete
HCI_Set_Connectionless_Slave_Broadcast_Receive
HCI_Command_Complete
HCI_Connectionless_Slave_Broadcast_Receive
HCI_Connectionless_Slave_Broadcast_Receive
Sample Data
CONTENTS
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2, Part G] page 1167
Sample Data
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2, Part G] page 1168
Sample Data
MSB LSB
L = 1
g1: [8] 00000000 00000000 00000000 0000011d
g2: [119] 00e275a0 abd218d4 cf928b9b bf6cb08f
Kc: a2b230a4 93f281bb 61a85b82 a9d4a30e
Kc mod g1: [7] 00000000 00000000 00000000 0000009f
g2(Kc mod g1): [126] 7aa16f39 59836ba3 22049a7b 87f1d8a5
-----------------------------------------------------------
L = 2
g1: [16] 00000000 00000000 00000000 0001003f
g2: [112] 0001e3f6 3d7659b3 7f18c258 cff6efef
Kc: 64e7df78 bb7ccaa4 61433123 5b3222ad
Kc mod g1: [12] 00000000 00000000 00000000 00001ff0
g2(Kc mod g1): [124] 142057bb 0bceac4c 58bd142e 1e710a50
-----------------------------------------------------------
L = 3
g1: [24] 00000000 00000000 00000000 010000db
g2: [104] 000001be f66c6c3a b1030a5a 1919808b
Kc: 575e5156 ba685dc6 112124ac edb2c179
Kc mod g1: [23] 00000000 00000000 00000000 008ddbc8
g2(Kc mod g1): [127] d56d0adb 8216cb39 7fe3c591 1ff95618
-----------------------------------------------------------
L = 4
g1: [32] 00000000 00000000 00000001 000000af
g2: [96] 00000001 6ab89969 de17467f d3736ad9
Kc: 8917b4fc 403b6db2 1596b86d 1cb8adab
Sample Data
Sample Data
L = 7
g1: [56] 00000000 00000000 01000000 00000095
g2: [71] 00000000 000000b3 f7fffce2 79f3a073
Kc: 05454e03 8ddcfbe3 ed024b2d 92b7f54c
Kc mod g1: [55] 00000000 00000000 0095b8a4 8eb816da
g2(Kc mod g1): [126] 50f9c0d4 e3178da9 4a09fe0d 34f67b0e
-----------------------------------------------------------
L = 8
g1: [64] 00000000 00000001 00000000 0000001b
g2: [63] 00000000 00000000 a1ab815b c7ec8025
Kc: 7ce149fc f4b38ad7 2a5d8a41 eb15ba31
Kc mod g1: [63] 00000000 00000000 8660806c 1865deec
g2(Kc mod g1): [126] 532c36d4 5d0954e0 922989b6 826f78dc
-----------------------------------------------------------
L = 9
g1: [72] 00000000 00000100 00000000 00000609
g2: [49] 00000000 00000000 0002c980 11d8b04d
Kc: 5eeff7ca 84fc2782 9c051726 3df6f36e
Kc mod g1: [71] 00000000 00000083 58ccb7d0 b95d3c71
g2(Kc mod g1): [120] 016313f6 0d3771cf 7f8e4bb9 4aa6827d
-----------------------------------------------------------
L = 10
g1: [80] 00000000 00010000 00000000 00000215
g2: [42] 00000000 00000000 0000058e 24f9a4bb
Kc: 7b13846e 88beb4de 34e7160a fd44dc65
Kc mod g1: [79] 00000000 0000b4de 34171767 f36981c3
g2(Kc mod g1): [121] 023bc1ec 34a0029e f798dcfb 618ba58d
-----------------------------------------------------------
L = 11
g1: [88] 00000000 01000000 00000000 0000013b
g2: [35] 00000000 00000000 0000000c a76024d7
Kc: bda6de6c 6e7d757e 8dfe2d49 9a181193
Kc mod g1: [86] 00000000 007d757e 8dfe88aa 2fcee371
g2(Kc mod g1): [121] 022e08a9 3aa51d8d 2f93fa78 85cc1f87
-----------------------------------------------------------
L = 12
g1: [96] 00000001 00000000 00000000 000000dd
g2: [28] 00000000 00000000 00000000 1c9c26b9
Kc: e6483b1c 2cdb1040 9a658f97 c4efd90d
Kc mod g1: [93] 00000000 2cdb1040 9a658fd7 5b562e41
g2(Kc mod g1): [121] 030d752b 216fe29b b880275c d7e6f6f9
-----------------------------------------------------------
L = 13
g1: [104] 00000100 00000000 00000000 0000049d
g2: [21] 00000000 00000000 00000000 0026d9e3
Kc: d79d281d a2266847 6b223c46 dc0ab9ee
Kc mod g1: [100] 0000001d a2266847 6b223c45 e1fc5fa6
g2(Kc mod g1): [121] 03f11138 9cebf919 00b93808 4ac158aa
-----------------------------------------------------------
Sample Data
L = 14
g1: [112] 00010000 00000000 00000000 0000014f
g2: [14] 00000000 00000000 00000000 00004377
Kc: cad9a65b 9fca1c1d a2320fcf 7c4ae48e
Kc mod g1: [111] 0000a65b 9fca1c1d a2320fcf 7cb6a909
g2(Kc mod g1): [125] 284840fd f1305f3c 529f5703 76adf7cf
-----------------------------------------------------------
L = 15
g1: [120] 01000000 00000000 00000000 000000e7
g2: [7] 00000000 00000000 00000000 00000089
Kc: 21f0cc31 049b7163 d375e9e1 06029809
Kc mod g1: [119] 00f0cc31 049b7163 d375e9e1 0602840e
g2(Kc mod g1): [126] 7f10b53b 6df84b94 f22e566a 3754a37e
-----------------------------------------------------------
L = 16
g1: [128] 00000001 00000000 00000000 00000000 00000000
g2: [0] 00000000 00000000 00000000 00000001
Kc: 35ec8fc3 d50ccd32 5f2fd907 bde206de
Kc mod g1: [125] 35ec8fc3 d50ccd32 5f2fd907 bde206de
g2(Kc mod g1): [125] 35ec8fc3 d50ccd32 5f2fd907 bde206de
-----------------------------------------------------------
===============================================================================================
Fill LFSRs with initial data
===============================================================================================
Sample Data
Sample Data
Sample Data
Sample Data
Sample Data
Z[0] = 3D
Z[1] = C1
Z[2] = F0
Z[3] = BB
Z[4] = 58
Z[5] = 1E
Z[6] = 42
Z[7] = 42
Z[8] = 4B
Z[9] = 8E
Z[10] = C1
Z[11] = 2A
Z[12] = 40
Z[13] = 63
Z[14] = 7A
Z[15] = 1E
===============================================================================================
Reload this pattern into the LFSRs
Hold content of Summation Combiner regs and calculate new C[t+1] and Z values
===============================================================================================
LFSR1 <= 04B583D
LFSR2 <= 208E1EC1
LFSR3 <= 063C142F0
LFSR4 <= 0F7A2A42BB
C[t+1] <= 10
===============================================================================================
Generating 125 key symbols (encryption/decryption sequence)
===============================================================================================
240 1 04B583D 208E1EC1 063C142F0 0F7A2A42BB 0 1 0 0 0 10 11 01
241 2 096B07A 411C3D82 0C78285E1 1EF4548577 1 0 1 1 1 10 10 11
242 3 12D60F4 02387B04 18F050BC3 3DE8A90AEF 0 0 1 1 0 01 10 10
243 4 05AC1E9 0470F609 11E0A1786 7BD15215DF 0 0 0 1 0 01 01 10
244 5 0B583D2 08E1EC13 03C142F0C 77A2A42BBF 1 1 0 1 0 00 01 01
245 6 16B07A5 11C3D827 078285E18 6F4548577E 0 1 0 0 1 11 00 01
246 7 0D60F4B 2387B04F 0F050BC30 5E8A90AEFD 1 1 1 1 1 00 11 00
247 8 1AC1E97 470F609E 1E0A17860 3D15215DFA 1 0 1 0 0 11 00 11
248 9 1583D2E 0E1EC13D 1C142F0C0 7A2A42BBF4 0 0 1 0 0 01 11 00
249 10 0B07A5D 1C3D827B 18285E181 74548577E9 1 0 1 0 1 10 01 11
250 11 160F4BB 387B04F7 1050BC302 68A90AEFD2 0 0 0 1 1 00 10 01
251 12 0C1E976 70F609EE 00A178605 515215DFA5 1 1 0 0 0 00 00 10
252 13 183D2ED 61EC13DD 0142F0C0B 22A42BBF4B 1 1 0 1 1 01 00 00
253 14 107A5DA 43D827BA 0285E1817 4548577E97 0 1 0 0 0 00 01 00
254 15 00F4BB4 07B04F74 050BC302F 0A90AEFD2E 0 1 0 1 0 10 00 01
255 16 01E9769 0F609EE8 0A178605E 15215DFA5C 0 0 1 0 1 11 10 00
256 17 03D2ED3 1EC13DD0 142F0C0BD 2A42BBF4B9 0 1 0 0 0 00 11 10
257 18 07A5DA7 3D827BA0 085E1817B 548577E972 0 1 1 1 1 11 00 11
Sample Data
Sample Data
Sample Data
===============================================================================================
Fill LFSRs with initial data
===============================================================================================
Sample Data
Sample Data
Sample Data
Sample Data
Z[0] = 25
Z[1] = 45
Z[2] = 6B
Z[3] = 55
Z[4] = 5F
Z[5] = C2
Z[6] = 20
Z[7] = E5
Z[8] = C4
Z[9] = F8
Z[10] = 3A
Z[11] = F1
Z[12] = FF
Z[13] = 89
Z[14] = 02
Z[15] = 35
===============================================================================================
Reload this pattern into the LFSRs
Sample Data
Hold content of Summation Combiner regs and calculate new C[t+1] and Z values
===============================================================================================
LFSR1 <= 1C45F25
LFSR2 <= 7FF8C245
LFSR3 <= 1893A206B
LFSR4 <= 1A02F1E555
C[t+1] <= 10
===============================================================================================
Generating 125 key symbols (encryption/decryption sequence)
===============================================================================================
240 1 1C45F25 7FF8C245 1893A206B 1A02F1E555 1 1 1 0 1 10 10 11
241 2 188BE4A 7FF1848B 1127440D7 3405E3CAAB 1 1 0 0 0 01 10 10
242 3 1117C95 7FE30917 024E881AF 680BC79557 0 1 0 0 0 01 01 10
243 4 022F92B 7FC6122F 049D1035E 50178F2AAF 0 1 0 0 0 11 01 01
244 5 045F257 7F8C245E 093A206BD 202F1E555E 0 1 1 0 1 10 11 01
245 6 08BE4AE 7F1848BC 127440D7A 405E3CAABC 1 0 0 0 1 01 10 11
246 7 117C95C 7E309178 04E881AF4 00BC795579 0 0 0 1 0 01 01 10
247 8 02F92B8 7C6122F0 09D1035E8 0178F2AAF2 0 0 1 0 0 11 01 01
248 9 05F2570 78C245E1 13A206BD0 02F1E555E5 0 1 0 1 1 10 11 01
249 10 0BE4AE1 71848BC2 07440D7A0 05E3CAABCA 1 1 0 1 1 10 10 11
250 11 17C95C3 63091784 0E881AF40 0BC7955795 0 0 1 1 0 01 10 10
251 12 0F92B87 46122F09 1D1035E80 178F2AAF2B 1 0 1 1 0 10 01 10
252 13 1F2570F 0C245E12 1A206BD01 2F1E555E56 1 0 1 0 0 11 10 01
253 14 1E4AE1F 1848BC25 1440D7A03 5E3CAABCAC 1 0 0 0 0 00 11 10
254 15 1C95C3E 3091784A 0881AF407 3C79557958 1 1 1 0 1 11 00 11
255 16 192B87D 6122F094 11035E80F 78F2AAF2B1 1 0 0 1 1 01 11 00
256 17 12570FA 4245E128 0206BD01E 71E555E562 0 0 0 1 0 10 01 11
257 18 04AE1F4 048BC250 040D7A03D 63CAABCAC5 0 1 0 1 0 11 10 01
258 19 095C3E8 091784A0 081AF407A 479557958A 1 0 1 1 0 01 11 10
259 20 12B87D1 122F0941 1035E80F4 0F2AAF2B14 0 0 0 0 1 11 01 11
260 21 0570FA3 245E1283 006BD01E9 1E555E5628 0 0 0 0 1 01 11 01
261 22 0AE1F46 48BC2506 00D7A03D2 3CAABCAC50 1 1 0 1 0 01 01 11
262 23 15C3E8C 11784A0C 01AF407A5 79557958A0 0 0 0 0 1 10 01 01
263 24 0B87D18 22F09419 035E80F4A 72AAF2B140 1 1 0 1 1 11 10 01
264 25 170FA30 45E12832 06BD01E94 6555E56280 0 1 0 0 0 00 11 10
265 26 0E1F460 0BC25065 0D7A03D28 4AABCAC501 1 1 1 1 0 00 00 11
266 27 1C3E8C0 1784A0CB 1AF407A50 1557958A03 1 1 1 0 1 01 00 00
267 28 187D181 2F094196 15E80F4A0 2AAF2B1406 1 0 0 1 1 00 01 00
268 29 10FA302 5E12832C 0BD01E941 555E56280C 0 0 1 0 1 11 00 01
269 30 01F4604 3C250658 17A03D283 2ABCAC5019 0 0 0 1 0 01 11 00
270 31 03E8C09 784A0CB0 0F407A506 557958A033 0 0 1 0 0 10 01 11
271 32 07D1812 70941960 1E80F4A0C 2AF2B14066 0 1 1 1 1 11 10 01
272 33 0FA3024 612832C1 1D01E9419 55E56280CD 1 0 1 1 0 01 11 10
273 34 1F46049 42506583 1A03D2832 2BCAC5019A 1 0 1 1 0 01 01 11
274 35 1E8C093 04A0CB07 1407A5065 57958A0335 1 1 0 1 0 00 01 01
275 36 1D18127 0941960F 080F4A0CB 2F2B14066B 1 0 1 0 0 10 00 01
276 37 1A3024F 12832C1F 101E94196 5E56280CD7 1 1 0 0 0 00 10 00
277 38 146049F 2506583E 003D2832C 3CAC5019AE 0 0 0 1 1 01 00 10
278 39 08C093E 4A0CB07D 007A50658 7958A0335D 1 0 0 0 0 00 01 00
279 40 118127C 141960FA 00F4A0CB0 72B14066BA 0 0 0 1 1 11 00 01
280 41 03024F8 2832C1F4 01E941961 656280CD74 0 0 0 0 1 10 11 00
281 42 06049F1 506583E9 03D2832C2 4AC5019AE9 0 0 0 1 1 01 10 11
282 43 0C093E2 20CB07D2 07A506585 158A0335D3 1 1 0 1 0 10 01 10
283 44 18127C5 41960FA5 0F4A0CB0B 2B14066BA7 1 1 1 0 1 11 10 01
284 45 1024F8A 032C1F4B 1E9419616 56280CD74F 0 0 1 0 0 00 11 10
285 46 0049F15 06583E97 1D2832C2C 2C5019AE9F 0 0 1 0 1 10 00 11
Sample Data
Sample Data
Sample Data
===============================================================================================
Fill LFSRs with initial data
===============================================================================================
Sample Data
Sample Data
Sample Data
Sample Data
Z[0] = 59
Z[1] = 3B
Z[2] = EF
Z[3] = 07
Z[4] = 13
Z[5] = 70
Z[6] = 9B
Z[7] = B7
Z[8] = 52
Z[9] = 8F
Z[10] = 3E
Z[11] = B9
Z[12] = A5
Z[13] = AC
Z[14] = EA
Z[15] = 9E
Sample Data
===============================================================================================
Reload this pattern into the LFSRs
Hold content of Summation Combiner regs and calculate new C[t+1] and Z values
===============================================================================================
LFSR1 <= 1521359
LFSR2 <= 528F703B
LFSR3 <= 0AC3E9BEF
LFSR4 <= 4FEAB9B707
C[t+1] <= 00
===============================================================================================
Generating 125 key symbols (encryption/decryption sequence)
===============================================================================================
240 1 1521359 528F703B 0AC3E9BEF 4FEAB9B707 0 1 1 1 1 00 10 00
241 2 0A426B3 251EE076 1587D37DE 1FD5736E0F 1 0 0 1 0 00 00 10
242 3 1484D67 4A3DC0ED 0B0FA6FBD 3FAAE6DC1E 0 0 1 1 0 01 00 00
243 4 0909ACF 147B81DA 161F4DF7A 7F55CDB83D 1 0 0 0 0 00 01 00
244 5 121359E 28F703B5 0C3E9BEF5 7EAB9B707B 0 1 1 1 1 10 00 01
245 6 0426B3C 51EE076B 187D37DEB 7D5736E0F6 0 1 1 0 0 00 10 00
246 7 084D679 23DC0ED6 10FA6FBD7 7AAE6DC1EC 1 1 0 1 1 00 00 10
247 8 109ACF2 47B81DAC 01F4DF7AF 755CDB83D8 0 1 0 0 1 00 00 00
248 9 01359E4 0F703B59 03E9BEF5E 6AB9B707B1 0 0 0 1 1 00 00 00
249 10 026B3C8 1EE076B3 07D37DEBD 55736E0F63 0 1 0 0 1 00 00 00
250 11 04D6791 3DC0ED67 0FA6FBD7A 2AE6DC1EC7 0 1 1 1 1 01 00 00
251 12 09ACF22 7B81DACF 1F4DF7AF4 55CDB83D8F 1 1 1 1 1 11 01 00
252 13 1359E44 7703B59E 1E9BEF5E8 2B9B707B1F 0 0 1 1 1 10 11 01
253 14 06B3C88 6E076B3C 1D37DEBD0 5736E0F63F 0 0 1 0 1 01 10 11
254 15 0D67911 5C0ED678 1A6FBD7A1 2E6DC1EC7E 1 0 1 0 1 01 01 10
255 16 1ACF223 381DACF0 14DF7AF42 5CDB83D8FD 1 0 0 1 1 11 01 01
256 17 159E446 703B59E0 09BEF5E85 39B707B1FA 0 0 1 1 1 10 11 01
257 18 0B3C88C 6076B3C0 137DEBD0A 736E0F63F4 1 0 0 0 1 01 10 11
258 19 1679118 40ED6780 06FBD7A15 66DC1EC7E8 0 1 0 1 1 01 01 10
259 20 0CF2231 01DACF00 0DF7AF42A 4DB83D8FD1 1 1 1 1 1 00 01 01
260 21 19E4463 03B59E01 1BEF5E854 1B707B1FA3 1 1 1 0 1 10 00 01
261 22 13C88C6 076B3C03 17DEBD0A9 36E0F63F47 0 0 0 1 1 11 10 00
262 23 079118C 0ED67807 0FBD7A152 6DC1EC7E8E 0 1 1 1 0 01 11 10
263 24 0F22318 1DACF00E 1F7AF42A4 5B83D8FD1D 1 1 1 1 1 01 01 11
264 25 1E44630 3B59E01C 1EF5E8548 3707B1FA3B 1 0 1 0 1 11 01 01
265 26 1C88C61 76B3C039 1DEBD0A91 6E0F63F477 1 1 1 0 0 11 11 01
266 27 19118C3 6D678073 1BD7A1523 5C1EC7E8EF 1 0 1 0 1 11 11 11
267 28 1223187 5ACF00E6 17AF42A46 383D8FD1DE 0 1 0 0 0 11 11 11
268 29 044630E 359E01CC 0F5E8548D 707B1FA3BD 0 1 1 0 1 11 11 11
269 30 088C61C 6B3C0399 1EBD0A91A 60F63F477B 1 0 1 1 0 10 11 11
270 31 1118C39 56780733 1D7A15234 41EC7E8EF6 0 0 1 1 0 10 10 11
271 32 0231872 2CF00E67 1AF42A468 03D8FD1DEC 0 1 1 1 1 01 10 10
272 33 04630E5 59E01CCE 15E8548D1 07B1FA3BD8 0 1 0 1 1 01 01 10
273 34 08C61CB 33C0399D 0BD0A91A3 0F63F477B1 1 1 1 0 0 00 01 01
274 35 118C396 6780733A 17A152347 1EC7E8EF63 0 1 0 1 0 10 00 01
275 36 031872D 4F00E674 0F42A468E 3D8FD1DEC7 0 0 1 1 0 00 10 00
276 37 0630E5A 1E01CCE8 1E8548D1D 7B1FA3BD8E 0 0 1 0 1 01 00 10
277 38 0C61CB5 3C0399D0 1D0A91A3B 763F477B1C 1 0 1 0 1 00 01 00
278 39 18C396A 780733A0 1A1523477 6C7E8EF639 1 0 1 0 0 10 00 01
279 40 11872D5 700E6741 142A468EF 58FD1DEC72 0 0 0 1 1 11 10 00
280 41 030E5AB 601CCE83 08548D1DF 31FA3BD8E5 0 0 1 1 1 00 11 10
281 42 061CB57 40399D07 10A91A3BF 63F477B1CB 0 0 0 1 1 10 00 11
282 43 0C396AF 00733A0F 01523477E 47E8EF6396 1 0 0 1 0 00 10 00
283 44 1872D5F 00E6741F 02A468EFD 0FD1DEC72C 1 1 0 1 1 00 00 10
Sample Data
Sample Data
Sample Data
===============================================================================================
Fill LFSRs with initial data
===============================================================================================
Sample Data
Sample Data
Sample Data
Sample Data
Z[0] = 3F
Z[1] = B1
Z[2] = 67
Z[3] = D2
Z[4] = 2F
Z[5] = A6
Z[6] = 1F
Z[7] = B9
Z[8] = E6
Z[9] = 84
Z[10] = 43
Z[11] = 07
Z[12] = D8
Z[13] = 1E
Z[14] = E7
Z[15] = C3
Sample Data
===============================================================================================
Reload this pattern into the LFSRs
Hold content of Summation Combiner regs and calculate new C[t+1] and Z values
===============================================================================================
LFSR1 <= 0E62F3F
LFSR2 <= 6C84A6B1
LFSR3 <= 11E431F67
LFSR4 <= 61E707B9D2
C[t+1] <= 00
===============================================================================================
Generating 125 key symbols (encryption/decryption sequence)
===============================================================================================
240 1 0E62F3F 6C84A6B1 11E431F67 61E707B9D2 1 1 0 1 0 00 11 00
241 2 1CC5E7F 59094D63 03C863ECE 43CE0F73A5 1 0 0 1 0 11 00 11
242 3 198BCFF 32129AC6 0790C7D9D 079C1EE74A 1 0 0 1 1 01 11 00
243 4 13179FE 6425358C 0F218FB3A 0F383DCE94 0 0 1 0 0 10 01 11
244 5 062F3FD 484A6B19 1E431F675 1E707B9D28 0 0 1 0 1 00 10 01
245 6 0C5E7FB 1094D632 1C863ECEB 3CE0F73A50 1 1 1 1 0 11 00 10
246 7 18BCFF7 2129AC64 190C7D9D7 79C1EE74A1 1 0 1 1 0 00 11 00
247 8 1179FEE 425358C8 1218FB3AE 7383DCE942 0 0 0 1 1 10 00 11
248 9 02F3FDD 04A6B190 0431F675D 6707B9D285 0 1 0 0 1 11 10 00
249 10 05E7FBB 094D6320 0863ECEBB 4E0F73A50B 0 0 1 0 0 00 11 10
250 11 0BCFF77 129AC640 10C7D9D77 1C1EE74A16 1 1 0 0 0 11 00 11
251 12 179FEEE 25358C80 018FB3AEE 383DCE942C 0 0 0 0 1 10 11 00
252 13 0F3FDDC 4A6B1900 031F675DD 707B9D2859 1 0 0 0 1 01 10 11
253 14 1E7FBB8 14D63200 063ECEBBA 60F73A50B3 1 1 0 1 0 10 01 10
254 15 1CFF771 29AC6401 0C7D9D774 41EE74A167 1 1 1 1 0 10 10 01
255 16 19FEEE2 5358C803 18FB3AEE9 03DCE942CE 1 0 1 1 1 01 10 10
256 17 13FDDC4 26B19007 11F675DD2 07B9D2859C 0 1 0 1 1 01 01 10
257 18 07FBB88 4D63200E 03ECEBBA4 0F73A50B38 0 0 0 0 1 10 01 01
258 19 0FF7711 1AC6401D 07D9D7748 1EE74A1670 1 1 0 1 1 11 10 01
259 20 1FEEE23 358C803B 0FB3AEE91 3DCE942CE1 1 1 1 1 1 01 11 10
260 21 1FDDC47 6B190076 1F675DD23 7B9D2859C2 1 0 1 1 0 01 01 11
261 22 1FBB88F 563200ED 1ECEBBA47 773A50B385 1 0 1 0 1 11 01 01
262 23 1F7711E 2C6401DB 1D9D7748F 6E74A1670A 1 0 1 0 1 10 11 01
263 24 1EEE23D 58C803B6 1B3AEE91E 5CE942CE15 1 1 1 1 0 11 10 11
264 25 1DDC47A 3190076C 1675DD23D 39D2859C2B 1 1 0 1 0 01 11 10
265 26 1BB88F4 63200ED9 0CEBBA47A 73A50B3856 1 0 1 1 0 01 01 11
266 27 17711E8 46401DB2 19D7748F5 674A1670AD 0 0 1 0 0 11 01 01
267 28 0EE23D0 0C803B64 13AEE91EA 4E942CE15B 1 1 0 1 0 11 11 01
268 29 1DC47A0 190076C8 075DD23D4 1D2859C2B7 1 0 0 0 0 11 11 11
269 30 1B88F41 3200ED90 0EBBA47A9 3A50B3856E 1 0 1 0 1 11 11 11
270 31 1711E83 6401DB20 1D7748F53 74A1670ADC 0 0 1 1 1 11 11 11
271 32 0E23D07 4803B641 1AEE91EA7 6942CE15B8 1 0 1 0 1 11 11 11
272 33 1C47A0F 10076C82 15DD23D4F 52859C2B71 1 0 0 1 1 11 11 11
273 34 188F41E 200ED905 0BBA47A9E 250B3856E3 1 0 1 0 1 11 11 11
274 35 111E83C 401DB20A 17748F53D 4A1670ADC7 0 0 0 0 1 00 11 11
275 36 023D078 003B6414 0EE91EA7A 142CE15B8E 0 0 1 0 1 10 00 11
276 37 047A0F0 0076C828 1DD23D4F5 2859C2B71C 0 0 1 0 1 11 10 00
277 38 08F41E1 00ED9050 1BA47A9EA 50B3856E39 1 1 1 1 1 01 11 10
278 39 11E83C2 01DB20A0 1748F53D5 21670ADC72 0 1 0 0 0 10 01 11
279 40 03D0785 03B64141 0E91EA7AA 42CE15B8E4 0 1 1 1 1 11 10 01
280 41 07A0F0A 076C8283 1D23D4F54 059C2B71C8 0 0 1 1 1 00 11 10
281 42 0F41E14 0ED90507 1A47A9EA9 0B3856E390 1 1 1 0 1 11 00 11
282 43 1E83C29 1DB20A0F 148F53D52 1670ADC720 1 1 0 0 1 01 11 00
283 44 1D07853 3B64141E 091EA7AA5 2CE15B8E40 1 0 1 1 0 01 01 11
Sample Data
Sample Data
Sample Data
T: a9adf6e6
MIC: 10a2ddc5
Encrypted payload:
Sample Data
T: 08d78b32
MIC: b1d8a011
Encrypted payload: b0ae898a 6e6864d4
Sample Data
T: 7382a2ba
MIC: 59cfe237
Encrypted payload: f4e09ce4 df769ada
Sample Data
T: 7b112114
MIC: c62c327c
Encrypted payload: 39b85fc8 56374992 7ff047d6 402bcc7c
f9
T: d6f08416
MIC: 0e4cfd0b
Encrypted payload: 43fb6250 b5ad97d7 d6caa358 ff265c0e
b3
Sample Data
T: 1d45d8f7
MIC: 38004b33
Encrypted payload: 34fa8cd8 173d201c 78825414 43938481
349b2fd0
Sample Data
T: 8c227888
MIC: 982630f2
Encrypted payload: 19bb8e01 8a07b68d d86f7cdd 3efdfc88
a9562b1b
Sample Data
T: dcef7067
MIC: f9aae3a3
Encrypted payload: 2058fe3b 2ade5293 0614d4aa 629695dc
13aafd08 2b50d708 838299
Sample Data
T: b1ff4755
MIC: a5fb0f2f
Encrypted payload: 0d19fce2 b7e4c402 a6f9fc63 1ff8edd5
8e67f9c3 5546f1d7 c91bbf
Sample Data
Sample Data
T: da1c4547
Sample Data
MIC: ff59d683
Encrypted payload: 39d22717 9eae23cc 61dc9143 1cf7afc7
e58fa90a 8deac91c bf9e7432 672fdfb4
733508b1 fea7326d 4478eae5 f68812fe
0f192c3b 2094029e 99a2bf48 2fc3b1cd
2b16b26d 286a813f fb7d5700 541da599
08c7362a fde9560c 5459b51f 0a98503b
f811ecdc 75000997 0f4734cf dd59a91b
9427eb26 26fffda2 f4d28574 0727a3a4
f2da68d6 7d50fa05 06f08743 c8d67f58
b1ea80ea 704830bc cca78cb8 a8d5e3d8
f52cd027 8ef92853 3cdb5b9b c2496060
8f6a0f2c f8bcbcbc fa914612 ee81dae3
30d1c956 66a41f9f 57686736 a59c9f69
eaeeef17 eda58167 2bd1bb85 63198033
d9cca15f 8c1bba6c b74f4e0d e333798a
799b2bda 1a26a781 213367d6 4139fdec
5c910a65 26f452d7 005c1ff0 1b0f8117
85f0c459 bffcd1a5 37de9324 1cc96754
915247f5 03184d21 8e7f17f8 5183d683
dee04d9b a695dfa0 20a6e35f 4687d936
81e0ccde 1a8bee66 59a7b108 27a66077
ca77b3b9 86db2753 ceb9d4ec c68de6dc
7b29453c 476b4fc6 19410b24 30ebd9
Sample Data
Sample Data
T: 2ca06cb0
Sample Data
MIC: 38a424ca
Encrypted payload: 149325ce 0394b55d c131b98a 6199d7ce
7842adc1 f3fcefc3 f5075285 c62afdb5
e107765e 041ce95b b7e994d4 b0f6eb0b
f9ca5398 e49f18b9 37384555 4cebb964
bf5e34b3 f7dac95e 0bad701c 6d0912ed
5678d992 d50a5f26 9aff6796 feeceedd
348f30f2 ab70d9f5 de8882fe 51d3fb8d
264ec139 b9f6fae1 90c84a81 d5271788
863164bb 4ab2d0a4 f05e9ca0 45ad67f2
2a88076a b9aec253 a5a3a516 ccad2fbe
a42cadba e30bf6c2 aa703cd3 695518e1
c4f6f888 cf629e57 62dc8c51 dcb9747f
c92d036e 094de7d2 ea3fe4a3 0c22155f
bfe70c6e 1e745bb6 abb91e04 a7656a20
773b75d5 5f7d19f1 14abc27a a5e1ce69
67f89608 3e6c1007 f2ebf605 4fc5c232
5d01cd89 a2c6db1b b6948a6c 2e8a299c
0c796b4e 616befeb b61b6650 a4f3e408
fac50aa6 57b9ca64 a3d41f31 5ced2a2f
98e34939 5ad7fb9e 7b953c74 e85c5055
54576af8 a3bce393 c27354b0 5e1ace6d
876fb1e0 760337ec b476e85a 6589075e
508283d3 8b83e0a4 4bf4b1b7 50daa6
Sample Data
Sample Data
Sample Data
Sample Data
T: 6de9dbe8
Sample Data
Sample Data
Sample Data
MIC: 48ac482c
Encrypted payload: c20b4f29 9a505266 c8521d86 126ba7ed
b8537787 dab2a192 997c147c 3bfdf4af
69e97103 4d5f7642 c6851906 820a50d8
bd691b1d 81de65c0 04639a4b abf6cae1
ad69dbf0 ccd00840 28fe9151 57593455
5c74678d 8e3a49d7 73f28b20 fe45fbad
fae734e0 3dc306f4 f0c0924a 34ec88b1
159958e9 9c1d69db 85d435c8 acad624d
a349a9d0 7fd7c8f6 7c75b5fa a9955e6b
30f2a29d 419e62c5 788f2c70 bf0800ef
21043402 f021f6ee c4a884f5 b359ae75
a619cfaa d3d0444f 1628bf88 344838d4
46eb00c4 087e0ccd 5933e648 2a34119a
a89500ff 0dc359f0 4469211c 4a877a3b
a3966357 7b78e173 d9c88c96 dfeaaeb1
18fceed3 7125de75 69d11645 31179c45
64922594 4f4650d0 80aa3243 bdd0b4f5
14b5c920 bf0c12ed 03a101fb edc40fd3
30f60195 1a8df160 566fd286 9817890c
e0845832 b2800118 a457bb59 d2995def
709bc98a 63edc729 69ba8f6b 6a4635fd
d66b3dd8 494857b7 5e81f1ef 59268e16
d2ee9f6d 259492ca 1505fb10 118bb83a
dd55208f b5078295 6850a093 3b742469
4af51c79 de907ec1 8c090819 b343c3f7
2a0a9e09 b124172a 0f96a801 c4f8ee57
6fffc752 f1059b5f 9519923a 72b0b986
d9807541 ae7143d7 0901b0a5 9e581edc
3eb68066 c0e3e98e baf09066 d0d43ba2
760bd038 5b968c8b 3d588091 835c8eb8
f605672f ef0969a5 89fc178d 3ad79de9
6811c972 aa5a021d c8977d98 c1b89607
d929b7e1 f6eb848f 6ba869ea 7f7ce937
e137e940 02d95a2e f6586a27 435aa724
f071d32c 078c3a24 85866579 6bff686d
03489b0c fe72a4f3 787a5b48 ad081061
5b4895f1 3ff39c4d b1050d3c a98d12ee
90a0069f f22db76e 4327b93a 4074eb43
63eed1f9 37ebf094 5f2f486b 04f56560
43b90f16 4d8bb1fd 5481494a 2c952c29
3cd6b135 81d0870e 766f735e cd6b7653
0804298c bb094b58 28bee43f 0b055b2f
95dc1bb7 bce29543 ef92005f 61cdb0ef
0044528f d2a536ec 6eb05bd0 4ca31b49
4bf26f07 b3f40079 159f287c 697bc083
10ee0d7b 5b44be4c 478f4fec 29e9cfe6
daf93540 a68e3a49 6c5fe8d1 326e4ae2
5b263178 ade6fe54 21654537 092d2ec6
9b54f32b c387e4f4 e10a1a4f 1163550e
72a76d62 68184f02 1dc9bf9b 48bb8af8
bb9f265a 46394c9d 76cf8c25 3e29e37b
5dd49bfe 46f99221 67cd02de f853c82b
Sample Data
Sample Data
Sample Data
Sample Data
T: 682ec5d4
Sample Data
Sample Data
Sample Data
MIC: 7c2a8dae
Encrypted payload: ef4a4df0 076ac4f7 68bf354f 6f05dfe4
259e734c a4a4874d d3e532cb 9af8d6ae
fbdb0fec b7e4ad74 35146737 c474a92d
4bba64be 45d57fe7 aaf96056 c8dec248
39215d2e 13604021 d82eb64d 6e4d8321
02cb8835 a6d940fd bd5459a9 0a31454b
3679e8ce e3b3d696 210f247b b866da27
a7f072f6 03146e98 e1cefa3d 7eadd661
d7a2a5bd 4835e257 8adbae19 24ee46c1
ab90251d 8878902a 118b05de db70cc89
7004499f 9dd3287f 5203e3bd 1845d6f4
ed85380e e40e66a4 8e6575cb 06709648
bf17cafc 6797f480 e46465dd 838a9bac
fd9ce386 fe128321 c401849d 8efb9028
0d61b7dd a81e42ee 7a2c00e1 99381952
069f5301 556f69f3 ba098796 3feba39b
6502e278 cb74d91c 3662a7df 88551c7e
9d3c6637 619b2ca3 8264f48f 55fe8c8f
5b614cc6 4e2c7625 7bc4da4f 957975a0
a6875c90 4ec22526 ff646472 7c42d48c
a52c6fac dadacadc f26e6ad3 13fa9be7
9b733f81 b9904708 244ecd59 fa226f94
f9455982 e97c3da8 47b04183 71bac7e8
850e4941 50ad8f2f 2a98e03c a6e598b5
0e8a20d8 c4229f65 76c5b101 862a2d8a
0f83e916 ae3ed178 6f8beca9 0c47c84b
33bd65c6 78648511 765c731a 6e489052
0d037b2f 0ef27532 ed2c5c33 8c5211a9
253f767c 1845d0e0 8fe06340 e8e63121
fdf907cd 9f6d462f cecdb5b1 5147424e
99630121 2bca07a7 382a85c6 e5e541ab
2ab5e64b c55a3e2d 04473cdb 308073ae
059b18c5 5730d4be 6fc73ddc dccdcdc5
b045a408 eb841ea1 2721d399 4f82a4d7
4c955ce8 0410de5c 45d36571 4de684f4
9d838b5a 4ab80d69 1071a190 1738d038
3ebd6b25 99b6a120 f8e42250 d0902d33
e38310c8 3dbca3c5 cfe0bf26 b5383560
3e5d4a6b 3b5c60a5 10f9ce91 7dd46b68
Sample Data
Sample Data
The section contains three sets of sample data showing the basic and adapted
hopping schemes for different combinations of addresses and initial clock
values.
Sample Data
Sample Data
Hop sequence {k} for CONNECTION STATE (Basic channel hopping sequence; ie, non-AFH):
CLK start: 0x0000010
UAP/LAP: 0x00000000
#ticks: 00 02 | 04 06 | 08 0a | 0c 0e | 10 12 | 14 16 | 18 1a | 1c 1e |
----------------------------------------------------------------
0x0000010: 08 66 | 10 70 | 12 19 | 14 23 | 16 01 | 18 05 | 20 33 | 22 37 |
0x0000030: 24 03 | 26 07 | 28 35 | 30 39 | 32 72 | 34 76 | 36 25 | 38 29 |
0x0000050: 40 74 | 42 78 | 44 27 | 46 31 | 48 09 | 50 13 | 52 41 | 54 45 |
0x0000070: 56 11 | 58 15 | 60 43 | 62 47 | 32 17 | 36 19 | 34 49 | 38 51 |
0x0000090: 40 21 | 44 23 | 42 53 | 46 55 | 48 33 | 52 35 | 50 65 | 54 67 |
0x00000b0: 56 37 | 60 39 | 58 69 | 62 71 | 64 25 | 68 27 | 66 57 | 70 59 |
0x00000d0: 72 29 | 76 31 | 74 61 | 78 63 | 01 41 | 05 43 | 03 73 | 07 75 |
0x00000f0: 09 45 | 13 47 | 11 77 | 15 00 | 64 49 | 66 53 | 68 02 | 70 06 |
0x0000110: 01 51 | 03 55 | 05 04 | 07 08 | 72 57 | 74 61 | 76 10 | 78 14 |
0x0000130: 09 59 | 11 63 | 13 12 | 15 16 | 17 65 | 19 69 | 21 18 | 23 22 |
0x0000150: 33 67 | 35 71 | 37 20 | 39 24 | 25 73 | 27 77 | 29 26 | 31 30 |
0x0000170: 41 75 | 43 00 | 45 28 | 47 32 | 17 02 | 21 04 | 19 34 | 23 36 |
0x0000190: 33 06 | 37 08 | 35 38 | 39 40 | 25 10 | 29 12 | 27 42 | 31 44 |
0x00001b0: 41 14 | 45 16 | 43 46 | 47 48 | 49 18 | 53 20 | 51 50 | 55 52 |
0x00001d0: 65 22 | 69 24 | 67 54 | 71 56 | 57 26 | 61 28 | 59 58 | 63 60 |
0x00001f0: 73 30 | 77 32 | 75 62 | 00 64 | 49 34 | 51 42 | 57 66 | 59 74 |
0x0000210: 53 36 | 55 44 | 61 68 | 63 76 | 65 50 | 67 58 | 73 03 | 75 11 |
0x0000230: 69 52 | 71 60 | 77 05 | 00 13 | 02 38 | 04 46 | 10 70 | 12 78 |
0x0000250: 06 40 | 08 48 | 14 72 | 16 01 | 18 54 | 20 62 | 26 07 | 28 15 |
0x0000270: 22 56 | 24 64 | 30 09 | 32 17 | 02 66 | 06 74 | 10 19 | 14 27 |
0x0000290: 04 70 | 08 78 | 12 23 | 16 31 | 18 03 | 22 11 | 26 35 | 30 43 |
0x00002b0: 20 07 | 24 15 | 28 39 | 32 47 | 34 68 | 38 76 | 42 21 | 46 29 |
0x00002d0: 36 72 | 40 01 | 44 25 | 48 33 | 50 05 | 54 13 | 58 37 | 62 45 |
0x00002f0: 52 09 | 56 17 | 60 41 | 64 49 | 34 19 | 36 35 | 50 51 | 52 67 |
0x0000310: 38 21 | 40 37 | 54 53 | 56 69 | 42 27 | 44 43 | 58 59 | 60 75 |
0x0000330: 46 29 | 48 45 | 62 61 | 64 77 | 66 23 | 68 39 | 03 55 | 05 71 |
0x0000350: 70 25 | 72 41 | 07 57 | 09 73 | 74 31 | 76 47 | 11 63 | 13 00 |
0x0000370: 78 33 | 01 49 | 15 65 | 17 02 | 66 51 | 70 67 | 03 04 | 07 20 |
0x0000390: 68 55 | 72 71 | 05 08 | 09 24 | 74 59 | 78 75 | 11 12 | 15 28 |
0x00003b0: 76 63 | 01 00 | 13 16 | 17 32 | 19 53 | 23 69 | 35 06 | 39 22 |
0x00003d0: 21 57 | 25 73 | 37 10 | 41 26 | 27 61 | 31 77 | 43 14 | 47 30 |
0x00003f0: 29 65 | 33 02 | 45 18 | 49 34 | 19 04 | 21 08 | 23 20 | 25 24 |
Sample Data
Hop Sequence {k} for CONNECTION STATE (Adapted channel hopping sequence with
all channel used; ie, AFH(79)):
CLK start: 0x0000010
ULAP: 0x00000000
Used Channels:0x7fffffffffffffffffff
#ticks: 00 02 | 04 06 | 08 0a | 0c 0e | 10 12 | 14 16 | 18 1a | 1c 1e |
---------------------------------------------------------------
0x0000010 08 08 | 10 10 | 12 12 | 14 14 | 16 16 | 18 18 | 20 20 | 22 22 |
0x0000030 24 24 | 26 26 | 28 28 | 30 30 | 32 32 | 34 34 | 36 36 | 38 38 |
0x0000050 40 40 | 42 42 | 44 44 | 46 46 | 48 48 | 50 50 | 52 52 | 54 54 |
0x0000070 56 56 | 58 58 | 60 60 | 62 62 | 32 32 | 36 36 | 34 34 | 38 38 |
0x0000090 40 40 | 44 44 | 42 42 | 46 46 | 48 48 | 52 52 | 50 50 | 54 54 |
0x00000b0 56 56 | 60 60 | 58 58 | 62 62 | 64 64 | 68 68 | 66 66 | 70 70 |
0x00000d0 72 72 | 76 76 | 74 74 | 78 78 | 01 01 | 05 05 | 03 03 | 07 07 |
0x00000f0 09 09 | 13 13 | 11 11 | 15 15 | 64 64 | 66 66 | 68 68 | 70 70 |
0x0000110 01 01 | 03 03 | 05 05 | 07 07 | 72 72 | 74 74 | 76 76 | 78 78 |
0x0000130 09 09 | 11 11 | 13 13 | 15 15 | 17 17 | 19 19 | 21 21 | 23 23 |
0x0000150 33 33 | 35 35 | 37 37 | 39 39 | 25 25 | 27 27 | 29 29 | 31 31 |
0x0000170 41 41 | 43 43 | 45 45 | 47 47 | 17 17 | 21 21 | 19 19 | 23 23 |
0x0000190 33 33 | 37 37 | 35 35 | 39 39 | 25 25 | 29 29 | 27 27 | 31 31 |
0x00001b0 41 41 | 45 45 | 43 43 | 47 47 | 49 49 | 53 53 | 51 51 | 55 55 |
0x00001d0 65 65 | 69 69 | 67 67 | 71 71 | 57 57 | 61 61 | 59 59 | 63 63 |
0x00001f0 73 73 | 77 77 | 75 75 | 00 00 | 49 49 | 51 51 | 57 57 | 59 59 |
0x0000210 53 53 | 55 55 | 61 61 | 63 63 | 65 65 | 67 67 | 73 73 | 75 75 |
0x0000230 69 69 | 71 71 | 77 77 | 00 00 | 02 02 | 04 04 | 10 10 | 12 12 |
0x0000250 06 06 | 08 08 | 14 14 | 16 16 | 18 18 | 20 20 | 26 26 | 28 28 |
0x0000270 22 22 | 24 24 | 30 30 | 32 32 | 02 02 | 06 06 | 10 10 | 14 14 |
0x0000290 04 04 | 08 08 | 12 12 | 16 16 | 18 18 | 22 22 | 26 26 | 30 30 |
0x00002b0 20 20 | 24 24 | 28 28 | 32 32 | 34 34 | 38 38 | 42 42 | 46 46 |
0x00002d0 36 36 | 40 40 | 44 44 | 48 48 | 50 50 | 54 54 | 58 58 | 62 62 |
0x00002f0 52 52 | 56 56 | 60 60 | 64 64 | 34 34 | 36 36 | 50 50 | 52 52 |
0x0000310 38 38 | 40 40 | 54 54 | 56 56 | 42 42 | 44 44 | 58 58 | 60 60 |
0x0000330 46 46 | 48 48 | 62 62 | 64 64 | 66 66 | 68 68 | 03 03 | 05 05 |
0x0000350 70 70 | 72 72 | 07 07 | 09 09 | 74 74 | 76 76 | 11 11 | 13 13 |
0x0000370 78 78 | 01 01 | 15 15 | 17 17 | 66 66 | 70 70 | 03 03 | 07 07 |
0x0000390 68 68 | 72 72 | 05 05 | 09 09 | 74 74 | 78 78 | 11 11 | 15 15 |
0x00003b0 76 76 | 01 01 | 13 13 | 17 17 | 19 19 | 23 23 | 35 35 | 39 39 |
0x00003d0 21 21 | 25 25 | 37 37 | 41 41 | 27 27 | 31 31 | 43 43 | 47 47 |
0x00003f0 29 29 | 33 33 | 45 45 | 49 49 | 19 19 | 21 21 | 23 23 | 25 25 |
Sample Data
Hop Sequence {k} for CONNECTION STATE (Adapted channel hopping sequence with
channels 0 to 21 unused):
CLK start: 0x0000010
ULAP: 0x00000000
Used Channels:0x7fffffffffffffc00000
#ticks: 00 02 | 04 06 | 08 0a | 0c 0e | 10 12 | 14 16 | 18 1a | 1c 1e |
---------------------------------------------------------------
0x0000010 30 30 | 32 32 | 34 34 | 36 36 | 38 38 | 40 40 | 42 42 | 22 22 |
0x0000030 24 24 | 26 26 | 28 28 | 30 30 | 32 32 | 34 34 | 36 36 | 38 38 |
0x0000050 40 40 | 42 42 | 44 44 | 46 46 | 48 48 | 50 50 | 52 52 | 54 54 |
0x0000070 56 56 | 58 58 | 60 60 | 62 62 | 32 32 | 36 36 | 34 34 | 38 38 |
0x0000090 40 40 | 44 44 | 42 42 | 46 46 | 48 48 | 52 52 | 50 50 | 54 54 |
0x00000b0 56 56 | 60 60 | 58 58 | 62 62 | 64 64 | 68 68 | 66 66 | 70 70 |
0x00000d0 72 72 | 76 76 | 74 74 | 78 78 | 45 45 | 49 49 | 47 47 | 51 51 |
0x00000f0 53 53 | 57 57 | 55 55 | 59 59 | 64 64 | 66 66 | 68 68 | 70 70 |
0x0000110 45 45 | 47 47 | 49 49 | 51 51 | 72 72 | 74 74 | 76 76 | 78 78 |
0x0000130 53 53 | 55 55 | 57 57 | 59 59 | 61 61 | 63 63 | 65 65 | 23 23 |
0x0000150 33 33 | 35 35 | 37 37 | 39 39 | 25 25 | 27 27 | 29 29 | 31 31 |
0x0000170 41 41 | 43 43 | 45 45 | 47 47 | 61 61 | 65 65 | 63 63 | 23 23 |
0x0000190 33 33 | 37 37 | 35 35 | 39 39 | 25 25 | 29 29 | 27 27 | 31 31 |
0x00001b0 41 41 | 45 45 | 43 43 | 47 47 | 49 49 | 53 53 | 51 51 | 55 55 |
0x00001d0 65 65 | 69 69 | 67 67 | 71 71 | 57 57 | 61 61 | 59 59 | 63 63 |
0x00001f0 73 73 | 77 77 | 75 75 | 66 66 | 49 49 | 51 51 | 57 57 | 59 59 |
0x0000210 53 53 | 55 55 | 61 61 | 63 63 | 65 65 | 67 67 | 73 73 | 75 75 |
0x0000230 69 69 | 71 71 | 77 77 | 66 66 | 68 68 | 70 70 | 76 76 | 78 78 |
0x0000250 72 72 | 74 74 | 23 23 | 25 25 | 27 27 | 29 29 | 26 26 | 28 28 |
0x0000270 22 22 | 24 24 | 30 30 | 32 32 | 68 68 | 72 72 | 76 76 | 23 23 |
0x0000290 70 70 | 74 74 | 78 78 | 25 25 | 27 27 | 22 22 | 26 26 | 30 30 |
0x00002b0 29 29 | 24 24 | 28 28 | 32 32 | 34 34 | 38 38 | 42 42 | 46 46 |
0x00002d0 36 36 | 40 40 | 44 44 | 48 48 | 50 50 | 54 54 | 58 58 | 62 62 |
0x00002f0 52 52 | 56 56 | 60 60 | 64 64 | 34 34 | 36 36 | 50 50 | 52 52 |
0x0000310 38 38 | 40 40 | 54 54 | 56 56 | 42 42 | 44 44 | 58 58 | 60 60 |
0x0000330 46 46 | 48 48 | 62 62 | 64 64 | 66 66 | 68 68 | 34 34 | 36 36 |
0x0000350 70 70 | 72 72 | 38 38 | 40 40 | 74 74 | 76 76 | 42 42 | 44 44 |
0x0000370 78 78 | 32 32 | 46 46 | 48 48 | 66 66 | 70 70 | 34 34 | 38 38 |
0x0000390 68 68 | 72 72 | 36 36 | 40 40 | 74 74 | 78 78 | 42 42 | 46 46 |
0x00003b0 76 76 | 32 32 | 44 44 | 48 48 | 50 50 | 23 23 | 35 35 | 39 39 |
0x00003d0 52 52 | 25 25 | 37 37 | 41 41 | 27 27 | 31 31 | 43 43 | 47 47 |
0x00003f0 29 29 | 33 33 | 45 45 | 49 49 | 50 50 | 52 52 | 23 23 | 25 25 |
Sample Data
Hop Sequence {k} for CONNECTION STATE (Adapted channel hopping sequence with
even channels used):
CLK start: 0x0000010
ULAP: 0x00000000
Used Channels:0x55555555555555555555
#ticks: 00 02 | 04 06 | 08 0a | 0c 0e | 10 12 | 14 16 | 18 1a | 1c 1e |
---------------------------------------------------------------
0x0000010 08 08 | 10 10 | 12 12 | 14 14 | 16 16 | 18 18 | 20 20 | 22 22 |
0x0000030 24 24 | 26 26 | 28 28 | 30 30 | 32 32 | 34 34 | 36 36 | 38 38 |
0x0000050 40 40 | 42 42 | 44 44 | 46 46 | 48 48 | 50 50 | 52 52 | 54 54 |
0x0000070 56 56 | 58 58 | 60 60 | 62 62 | 32 32 | 36 36 | 34 34 | 38 38 |
0x0000090 40 40 | 44 44 | 42 42 | 46 46 | 48 48 | 52 52 | 50 50 | 54 54 |
0x00000b0 56 56 | 60 60 | 58 58 | 62 62 | 64 64 | 68 68 | 66 66 | 70 70 |
0x00000d0 72 72 | 76 76 | 74 74 | 78 78 | 00 00 | 04 04 | 02 02 | 06 06 |
0x00000f0 08 08 | 12 12 | 10 10 | 14 14 | 64 64 | 66 66 | 68 68 | 70 70 |
0x0000110 00 00 | 02 02 | 04 04 | 06 06 | 72 72 | 74 74 | 76 76 | 78 78 |
0x0000130 08 08 | 10 10 | 12 12 | 14 14 | 16 16 | 18 18 | 20 20 | 22 22 |
0x0000150 32 32 | 34 34 | 36 36 | 38 38 | 24 24 | 26 26 | 28 28 | 30 30 |
0x0000170 40 40 | 42 42 | 44 44 | 46 46 | 16 16 | 20 20 | 18 18 | 22 22 |
0x0000190 32 32 | 36 36 | 34 34 | 38 38 | 24 24 | 28 28 | 26 26 | 30 30 |
0x00001b0 40 40 | 44 44 | 42 42 | 46 46 | 48 48 | 52 52 | 50 50 | 54 54 |
0x00001d0 64 64 | 68 68 | 66 66 | 70 70 | 56 56 | 60 60 | 58 58 | 62 62 |
0x00001f0 72 72 | 76 76 | 74 74 | 00 00 | 48 48 | 50 50 | 56 56 | 58 58 |
0x0000210 52 52 | 54 54 | 60 60 | 62 62 | 64 64 | 66 66 | 72 72 | 74 74 |
0x0000230 68 68 | 70 70 | 76 76 | 00 00 | 02 02 | 04 04 | 10 10 | 12 12 |
0x0000250 06 06 | 08 08 | 14 14 | 16 16 | 18 18 | 20 20 | 26 26 | 28 28 |
0x0000270 22 22 | 24 24 | 30 30 | 32 32 | 02 02 | 06 06 | 10 10 | 14 14 |
0x0000290 04 04 | 08 08 | 12 12 | 16 16 | 18 18 | 22 22 | 26 26 | 30 30 |
0x00002b0 20 20 | 24 24 | 28 28 | 32 32 | 34 34 | 38 38 | 42 42 | 46 46 |
0x00002d0 36 36 | 40 40 | 44 44 | 48 48 | 50 50 | 54 54 | 58 58 | 62 62 |
0x00002f0 52 52 | 56 56 | 60 60 | 64 64 | 34 34 | 36 36 | 50 50 | 52 52 |
0x0000310 38 38 | 40 40 | 54 54 | 56 56 | 42 42 | 44 44 | 58 58 | 60 60 |
0x0000330 46 46 | 48 48 | 62 62 | 64 64 | 66 66 | 68 68 | 00 00 | 02 02 |
0x0000350 70 70 | 72 72 | 04 04 | 06 06 | 74 74 | 76 76 | 08 08 | 10 10 |
0x0000370 78 78 | 78 78 | 12 12 | 14 14 | 66 66 | 70 70 | 00 00 | 04 04 |
0x0000390 68 68 | 72 72 | 02 02 | 06 06 | 74 74 | 78 78 | 08 08 | 12 12 |
0x00003b0 76 76 | 78 78 | 10 10 | 14 14 | 16 16 | 20 20 | 32 32 | 36 36 |
0x00003d0 18 18 | 22 22 | 34 34 | 38 38 | 24 24 | 28 28 | 40 40 | 44 44 |
0x00003f0 26 26 | 30 30 | 42 42 | 46 46 | 16 16 | 18 18 | 20 20 | 22 22 |
Sample Data
Hop Sequence {k} for CONNECTION STATE (Adapted channel hopping sequence with
odd channels used):
CLK start: 0x0000010
ULAP: 0x00000000
Used Channels:0x2aaaaaaaaaaaaaaaaaaa
#ticks: 00 02 | 04 06 | 08 0a | 0c 0e | 10 12 | 14 16 | 18 1a | 1c 1e |
---------------------------------------------------------------
0x0000010 09 09 | 11 11 | 13 13 | 15 15 | 17 17 | 19 19 | 21 21 | 23 23 |
0x0000030 25 25 | 27 27 | 29 29 | 31 31 | 33 33 | 35 35 | 37 37 | 39 39 |
0x0000050 41 41 | 43 43 | 45 45 | 47 47 | 49 49 | 51 51 | 53 53 | 55 55 |
0x0000070 57 57 | 59 59 | 61 61 | 63 63 | 33 33 | 37 37 | 35 35 | 39 39 |
0x0000090 41 41 | 45 45 | 43 43 | 47 47 | 49 49 | 53 53 | 51 51 | 55 55 |
0x00000b0 57 57 | 61 61 | 59 59 | 63 63 | 65 65 | 69 69 | 67 67 | 71 71 |
0x00000d0 73 73 | 77 77 | 75 75 | 01 01 | 01 01 | 05 05 | 03 03 | 07 07 |
0x00000f0 09 09 | 13 13 | 11 11 | 15 15 | 65 65 | 67 67 | 69 69 | 71 71 |
0x0000110 01 01 | 03 03 | 05 05 | 07 07 | 73 73 | 75 75 | 77 77 | 01 01 |
0x0000130 09 09 | 11 11 | 13 13 | 15 15 | 17 17 | 19 19 | 21 21 | 23 23 |
0x0000150 33 33 | 35 35 | 37 37 | 39 39 | 25 25 | 27 27 | 29 29 | 31 31 |
0x0000170 41 41 | 43 43 | 45 45 | 47 47 | 17 17 | 21 21 | 19 19 | 23 23 |
0x0000190 33 33 | 37 37 | 35 35 | 39 39 | 25 25 | 29 29 | 27 27 | 31 31 |
0x00001b0 41 41 | 45 45 | 43 43 | 47 47 | 49 49 | 53 53 | 51 51 | 55 55 |
0x00001d0 65 65 | 69 69 | 67 67 | 71 71 | 57 57 | 61 61 | 59 59 | 63 63 |
0x00001f0 73 73 | 77 77 | 75 75 | 03 03 | 49 49 | 51 51 | 57 57 | 59 59 |
0x0000210 53 53 | 55 55 | 61 61 | 63 63 | 65 65 | 67 67 | 73 73 | 75 75 |
0x0000230 69 69 | 71 71 | 77 77 | 03 03 | 05 05 | 07 07 | 13 13 | 15 15 |
0x0000250 09 09 | 11 11 | 17 17 | 19 19 | 21 21 | 23 23 | 29 29 | 31 31 |
0x0000270 25 25 | 27 27 | 33 33 | 35 35 | 05 05 | 09 09 | 13 13 | 17 17 |
0x0000290 07 07 | 11 11 | 15 15 | 19 19 | 21 21 | 25 25 | 29 29 | 33 33 |
0x00002b0 23 23 | 27 27 | 31 31 | 35 35 | 37 37 | 41 41 | 45 45 | 49 49 |
0x00002d0 39 39 | 43 43 | 47 47 | 51 51 | 53 53 | 57 57 | 61 61 | 65 65 |
0x00002f0 55 55 | 59 59 | 63 63 | 67 67 | 37 37 | 39 39 | 53 53 | 55 55 |
0x0000310 41 41 | 43 43 | 57 57 | 59 59 | 45 45 | 47 47 | 61 61 | 63 63 |
0x0000330 49 49 | 51 51 | 65 65 | 67 67 | 69 69 | 71 71 | 03 03 | 05 05 |
0x0000350 73 73 | 75 75 | 07 07 | 09 09 | 77 77 | 01 01 | 11 11 | 13 13 |
0x0000370 03 03 | 01 01 | 15 15 | 17 17 | 69 69 | 73 73 | 03 03 | 07 07 |
0x0000390 71 71 | 75 75 | 05 05 | 09 09 | 77 77 | 03 03 | 11 11 | 15 15 |
0x00003b0 01 01 | 01 01 | 13 13 | 17 17 | 19 19 | 23 23 | 35 35 | 39 39 |
0x00003d0 21 21 | 25 25 | 37 37 | 41 41 | 27 27 | 31 31 | 43 43 | 47 47 |
0x00003f0 29 29 | 33 33 | 45 45 | 49 49 | 19 19 | 21 21 | 23 23 | 25 25 |
Sample Data
Sample Data
Hop sequence {k} for CONNECTION STATE (Basic channel hopping sequence; ie, non-AFH):
CLK start: 0x0000010
ULAP: 0x2a96ef25
#ticks: 00 02 | 04 06 | 08 0a | 0c 0e | 10 12 | 14 16 | 18 1a | 1c 1e |
---------------------------------------------------------------
0x0000010: 55 26 | 19 20 | 23 22 | 53 40 | 57 42 | 21 36 | 25 38 | 27 63 |
0x0000030: 31 65 | 74 59 | 78 61 | 29 00 | 33 02 | 76 75 | 01 77 | 35 71 |
0x0000050: 39 73 | 03 67 | 07 69 | 37 08 | 41 10 | 05 04 | 09 06 | 43 16 |
0x0000070: 47 18 | 11 12 | 15 14 | 45 32 | 02 66 | 47 60 | 49 64 | 04 54 |
0x0000090: 06 58 | 51 52 | 53 56 | 08 70 | 10 74 | 55 68 | 57 72 | 59 14 |
0x00000b0: 61 18 | 27 12 | 29 16 | 63 30 | 65 34 | 31 28 | 33 32 | 67 22 |
0x00000d0: 69 26 | 35 20 | 37 24 | 71 38 | 73 42 | 39 36 | 41 40 | 75 46 |
0x00000f0: 77 50 | 43 44 | 45 48 | 00 62 | 26 11 | 69 05 | 73 07 | 36 17 |
0x0000110: 40 19 | 04 13 | 08 15 | 38 25 | 42 27 | 06 21 | 10 23 | 12 48 |
0x0000130: 16 50 | 59 44 | 63 46 | 14 56 | 18 58 | 61 52 | 65 54 | 28 64 |
0x0000150: 32 66 | 75 60 | 00 62 | 30 72 | 34 74 | 77 68 | 02 70 | 20 01 |
0x0000170: 24 03 | 67 76 | 71 78 | 22 09 | 58 43 | 24 37 | 26 41 | 68 47 |
0x0000190: 70 51 | 36 45 | 38 49 | 72 55 | 74 59 | 40 53 | 42 57 | 44 78 |
0x00001b0: 46 03 | 12 76 | 14 01 | 48 07 | 50 11 | 16 05 | 18 09 | 60 15 |
0x00001d0: 62 19 | 28 13 | 30 17 | 64 23 | 66 27 | 32 21 | 34 25 | 52 31 |
0x00001f0: 54 35 | 20 29 | 22 33 | 56 39 | 19 04 | 62 63 | 66 00 | 07 73 |
0x0000210: 11 10 | 54 69 | 58 06 | 23 75 | 27 12 | 70 71 | 74 08 | 76 33 |
0x0000230: 01 49 | 44 29 | 48 45 | 13 35 | 17 51 | 60 31 | 64 47 | 05 41 |
0x0000250: 09 57 | 52 37 | 56 53 | 21 43 | 25 59 | 68 39 | 72 55 | 78 65 |
0x0000270: 03 02 | 46 61 | 50 77 | 15 67 | 51 36 | 17 18 | 19 34 | 41 24 |
0x0000290: 43 40 | 09 22 | 11 38 | 57 28 | 59 44 | 25 26 | 27 42 | 29 63 |
0x00002b0: 31 00 | 76 61 | 78 77 | 45 67 | 47 04 | 13 65 | 15 02 | 37 71 |
0x00002d0: 39 08 | 05 69 | 07 06 | 53 75 | 55 12 | 21 73 | 23 10 | 33 16 |
0x00002f0: 35 32 | 01 14 | 03 30 | 49 20 | 75 60 | 39 48 | 43 56 | 00 66 |
0x0000310: 04 74 | 47 62 | 51 70 | 08 68 | 12 76 | 55 64 | 59 72 | 61 18 |
0x0000330: 65 26 | 29 14 | 33 22 | 69 20 | 73 28 | 37 16 | 41 24 | 77 34 |
0x0000350: 02 42 | 45 30 | 49 38 | 06 36 | 10 44 | 53 32 | 57 40 | 63 50 |
0x0000370: 67 58 | 31 46 | 35 54 | 71 52 | 28 13 | 73 03 | 75 11 | 34 17 |
0x0000390: 36 25 | 02 15 | 04 23 | 42 21 | 44 29 | 10 19 | 12 27 | 14 48 |
0x00003b0: 16 56 | 61 46 | 63 54 | 22 52 | 24 60 | 69 50 | 71 58 | 30 64 |
0x00003d0: 32 72 | 77 62 | 00 70 | 38 68 | 40 76 | 06 66 | 08 74 | 18 01 |
0x00003f0: 20 09 | 65 78 | 67 07 | 26 05 | 44 29 | 32 23 | 36 25 | 70 43 |
Sample Data
Hop Sequence {k} for CONNECTION STATE (Adapted channel hopping sequence with
all channel used; ie, AFH(79)):
CLK start: 0x0000010
ULAP: 0x2a96ef25
Used Channels:0x7fffffffffffffffffff
#ticks: 00 02 | 04 06 | 08 0a | 0c 0e | 10 12 | 14 16 | 18 1a | 1c 1e |
---------------------------------------------------------------
0x0000010 55 55 | 19 19 | 23 23 | 53 53 | 57 57 | 21 21 | 25 25 | 27 27 |
0x0000030 31 31 | 74 74 | 78 78 | 29 29 | 33 33 | 76 76 | 01 01 | 35 35 |
0x0000050 39 39 | 03 03 | 07 07 | 37 37 | 41 41 | 05 05 | 09 09 | 43 43 |
0x0000070 47 47 | 11 11 | 15 15 | 45 45 | 02 02 | 47 47 | 49 49 | 04 04 |
0x0000090 06 06 | 51 51 | 53 53 | 08 08 | 10 10 | 55 55 | 57 57 | 59 59 |
0x00000b0 61 61 | 27 27 | 29 29 | 63 63 | 65 65 | 31 31 | 33 33 | 67 67 |
0x00000d0 69 69 | 35 35 | 37 37 | 71 71 | 73 73 | 39 39 | 41 41 | 75 75 |
0x00000f0 77 77 | 43 43 | 45 45 | 00 00 | 26 26 | 69 69 | 73 73 | 36 36 |
0x0000110 40 40 | 04 04 | 08 08 | 38 38 | 42 42 | 06 06 | 10 10 | 12 12 |
0x0000130 16 16 | 59 59 | 63 63 | 14 14 | 18 18 | 61 61 | 65 65 | 28 28 |
0x0000150 32 32 | 75 75 | 00 00 | 30 30 | 34 34 | 77 77 | 02 02 | 20 20 |
0x0000170 24 24 | 67 67 | 71 71 | 22 22 | 58 58 | 24 24 | 26 26 | 68 68 |
0x0000190 70 70 | 36 36 | 38 38 | 72 72 | 74 74 | 40 40 | 42 42 | 44 44 |
0x00001b0 46 46 | 12 12 | 14 14 | 48 48 | 50 50 | 16 16 | 18 18 | 60 60 |
0x00001d0 62 62 | 28 28 | 30 30 | 64 64 | 66 66 | 32 32 | 34 34 | 52 52 |
0x00001f0 54 54 | 20 20 | 22 22 | 56 56 | 19 19 | 62 62 | 66 66 | 07 07 |
0x0000210 11 11 | 54 54 | 58 58 | 23 23 | 27 27 | 70 70 | 74 74 | 76 76 |
0x0000230 01 01 | 44 44 | 48 48 | 13 13 | 17 17 | 60 60 | 64 64 | 05 05 |
0x0000250 09 09 | 52 52 | 56 56 | 21 21 | 25 25 | 68 68 | 72 72 | 78 78 |
0x0000270 03 03 | 46 46 | 50 50 | 15 15 | 51 51 | 17 17 | 19 19 | 41 41 |
0x0000290 43 43 | 09 09 | 11 11 | 57 57 | 59 59 | 25 25 | 27 27 | 29 29 |
0x00002b0 31 31 | 76 76 | 78 78 | 45 45 | 47 47 | 13 13 | 15 15 | 37 37 |
0x00002d0 39 39 | 05 05 | 07 07 | 53 53 | 55 55 | 21 21 | 23 23 | 33 33 |
0x00002f0 35 35 | 01 01 | 03 03 | 49 49 | 75 75 | 39 39 | 43 43 | 00 00 |
0x0000310 04 04 | 47 47 | 51 51 | 08 08 | 12 12 | 55 55 | 59 59 | 61 61 |
0x0000330 65 65 | 29 29 | 33 33 | 69 69 | 73 73 | 37 37 | 41 41 | 77 77 |
0x0000350 02 02 | 45 45 | 49 49 | 06 06 | 10 10 | 53 53 | 57 57 | 63 63 |
0x0000370 67 67 | 31 31 | 35 35 | 71 71 | 28 28 | 73 73 | 75 75 | 34 34 |
0x0000390 36 36 | 02 02 | 04 04 | 42 42 | 44 44 | 10 10 | 12 12 | 14 14 |
0x00003b0 16 16 | 61 61 | 63 63 | 22 22 | 24 24 | 69 69 | 71 71 | 30 30 |
0x00003d0 32 32 | 77 77 | 00 00 | 38 38 | 40 40 | 06 06 | 08 08 | 18 18 |
0x00003f0 20 20 | 65 65 | 67 67 | 26 26 | 44 44 | 32 32 | 36 36 | 70 70 |
Sample Data
Hop Sequence {k} for CONNECTION STATE (Adapted channel hopping sequence with
channels 0 to 21 unused):
CLK start: 0x0000010
ULAP: 0x2a96ef25
Used Channels:0x7fffffffffffffc00000
#ticks: 00 02 | 04 06 | 08 0a | 0c 0e | 10 12 | 14 16 | 18 1a | 1c 1e |
---------------------------------------------------------------
0x0000010 55 55 | 50 50 | 23 23 | 53 53 | 57 57 | 52 52 | 25 25 | 27 27 |
0x0000030 31 31 | 74 74 | 78 78 | 29 29 | 33 33 | 76 76 | 32 32 | 35 35 |
0x0000050 39 39 | 34 34 | 38 38 | 37 37 | 41 41 | 36 36 | 40 40 | 43 43 |
0x0000070 47 47 | 42 42 | 46 46 | 45 45 | 55 55 | 47 47 | 49 49 | 57 57 |
0x0000090 59 59 | 51 51 | 53 53 | 61 61 | 63 63 | 55 55 | 57 57 | 59 59 |
0x00000b0 61 61 | 27 27 | 29 29 | 63 63 | 65 65 | 31 31 | 33 33 | 67 67 |
0x00000d0 69 69 | 35 35 | 37 37 | 71 71 | 73 73 | 39 39 | 41 41 | 75 75 |
0x00000f0 77 77 | 43 43 | 45 45 | 53 53 | 26 26 | 69 69 | 73 73 | 36 36 |
0x0000110 40 40 | 57 57 | 61 61 | 38 38 | 42 42 | 59 59 | 63 63 | 65 65 |
0x0000130 69 69 | 59 59 | 63 63 | 67 67 | 71 71 | 61 61 | 65 65 | 28 28 |
0x0000150 32 32 | 75 75 | 53 53 | 30 30 | 34 34 | 77 77 | 55 55 | 73 73 |
0x0000170 24 24 | 67 67 | 71 71 | 22 22 | 58 58 | 24 24 | 26 26 | 68 68 |
0x0000190 70 70 | 36 36 | 38 38 | 72 72 | 74 74 | 40 40 | 42 42 | 44 44 |
0x00001b0 46 46 | 65 65 | 67 67 | 48 48 | 50 50 | 69 69 | 71 71 | 60 60 |
0x00001d0 62 62 | 28 28 | 30 30 | 64 64 | 66 66 | 32 32 | 34 34 | 52 52 |
0x00001f0 54 54 | 73 73 | 22 22 | 56 56 | 37 37 | 62 62 | 66 66 | 25 25 |
0x0000210 29 29 | 54 54 | 58 58 | 23 23 | 27 27 | 70 70 | 74 74 | 76 76 |
0x0000230 76 76 | 44 44 | 48 48 | 31 31 | 35 35 | 60 60 | 64 64 | 23 23 |
0x0000250 27 27 | 52 52 | 56 56 | 39 39 | 25 25 | 68 68 | 72 72 | 78 78 |
0x0000270 78 78 | 46 46 | 50 50 | 33 33 | 51 51 | 35 35 | 37 37 | 41 41 |
0x0000290 43 43 | 27 27 | 29 29 | 57 57 | 59 59 | 25 25 | 27 27 | 29 29 |
0x00002b0 31 31 | 76 76 | 78 78 | 45 45 | 47 47 | 31 31 | 33 33 | 37 37 |
0x00002d0 39 39 | 23 23 | 25 25 | 53 53 | 55 55 | 39 39 | 23 23 | 33 33 |
0x00002f0 35 35 | 76 76 | 78 78 | 49 49 | 75 75 | 39 39 | 43 43 | 40 40 |
0x0000310 44 44 | 47 47 | 51 51 | 48 48 | 52 52 | 55 55 | 59 59 | 61 61 |
0x0000330 65 65 | 29 29 | 33 33 | 69 69 | 73 73 | 37 37 | 41 41 | 77 77 |
0x0000350 42 42 | 45 45 | 49 49 | 46 46 | 50 50 | 53 53 | 57 57 | 63 63 |
0x0000370 67 67 | 31 31 | 35 35 | 71 71 | 28 28 | 73 73 | 75 75 | 34 34 |
0x0000390 36 36 | 42 42 | 44 44 | 42 42 | 44 44 | 50 50 | 52 52 | 54 54 |
0x00003b0 56 56 | 61 61 | 63 63 | 22 22 | 24 24 | 69 69 | 71 71 | 30 30 |
0x00003d0 32 32 | 77 77 | 40 40 | 38 38 | 40 40 | 46 46 | 48 48 | 58 58 |
0x00003f0 60 60 | 65 65 | 67 67 | 26 26 | 44 44 | 32 32 | 36 36 | 70 70 |
Sample Data
Hop Sequence {k} for CONNECTION STATE (Adapted channel hopping sequence with
even channels used):
CLK start: 0x0000010
ULAP: 0x2a96ef25
Used Channels:0x55555555555555555555
#ticks: 00 02 | 04 06 | 08 0a | 0c 0e | 10 12 | 14 16 | 18 1a | 1c 1e |
---------------------------------------------------------------
0x0000010 52 52 | 16 16 | 20 20 | 50 50 | 54 54 | 18 18 | 22 22 | 24 24 |
0x0000030 28 28 | 74 74 | 78 78 | 26 26 | 30 30 | 76 76 | 78 78 | 32 32 |
0x0000050 36 36 | 00 00 | 04 04 | 34 34 | 38 38 | 02 02 | 06 06 | 40 40 |
0x0000070 44 44 | 08 08 | 12 12 | 42 42 | 02 02 | 44 44 | 46 46 | 04 04 |
0x0000090 06 06 | 48 48 | 50 50 | 08 08 | 10 10 | 52 52 | 54 54 | 56 56 |
0x00000b0 58 58 | 24 24 | 26 26 | 60 60 | 62 62 | 28 28 | 30 30 | 64 64 |
0x00000d0 66 66 | 32 32 | 34 34 | 68 68 | 70 70 | 36 36 | 38 38 | 72 72 |
0x00000f0 74 74 | 40 40 | 42 42 | 00 00 | 26 26 | 66 66 | 70 70 | 36 36 |
0x0000110 40 40 | 04 04 | 08 08 | 38 38 | 42 42 | 06 06 | 10 10 | 12 12 |
0x0000130 16 16 | 56 56 | 60 60 | 14 14 | 18 18 | 58 58 | 62 62 | 28 28 |
0x0000150 32 32 | 72 72 | 00 00 | 30 30 | 34 34 | 74 74 | 02 02 | 20 20 |
0x0000170 24 24 | 64 64 | 68 68 | 22 22 | 58 58 | 24 24 | 26 26 | 68 68 |
0x0000190 70 70 | 36 36 | 38 38 | 72 72 | 74 74 | 40 40 | 42 42 | 44 44 |
0x00001b0 46 46 | 12 12 | 14 14 | 48 48 | 50 50 | 16 16 | 18 18 | 60 60 |
0x00001d0 62 62 | 28 28 | 30 30 | 64 64 | 66 66 | 32 32 | 34 34 | 52 52 |
0x00001f0 54 54 | 20 20 | 22 22 | 56 56 | 14 14 | 62 62 | 66 66 | 02 02 |
0x0000210 06 06 | 54 54 | 58 58 | 18 18 | 22 22 | 70 70 | 74 74 | 76 76 |
0x0000230 76 76 | 44 44 | 48 48 | 08 08 | 12 12 | 60 60 | 64 64 | 00 00 |
0x0000250 04 04 | 52 52 | 56 56 | 16 16 | 20 20 | 68 68 | 72 72 | 78 78 |
0x0000270 78 78 | 46 46 | 50 50 | 10 10 | 46 46 | 12 12 | 14 14 | 36 36 |
0x0000290 38 38 | 04 04 | 06 06 | 52 52 | 54 54 | 20 20 | 22 22 | 24 24 |
0x00002b0 26 26 | 76 76 | 78 78 | 40 40 | 42 42 | 08 08 | 10 10 | 32 32 |
0x00002d0 34 34 | 00 00 | 02 02 | 48 48 | 50 50 | 16 16 | 18 18 | 28 28 |
0x00002f0 30 30 | 76 76 | 78 78 | 44 44 | 70 70 | 34 34 | 38 38 | 00 00 |
0x0000310 04 04 | 42 42 | 46 46 | 08 08 | 12 12 | 50 50 | 54 54 | 56 56 |
0x0000330 60 60 | 24 24 | 28 28 | 64 64 | 68 68 | 32 32 | 36 36 | 72 72 |
0x0000350 02 02 | 40 40 | 44 44 | 06 06 | 10 10 | 48 48 | 52 52 | 58 58 |
0x0000370 62 62 | 26 26 | 30 30 | 66 66 | 28 28 | 68 68 | 70 70 | 34 34 |
0x0000390 36 36 | 02 02 | 04 04 | 42 42 | 44 44 | 10 10 | 12 12 | 14 14 |
0x00003b0 16 16 | 56 56 | 58 58 | 22 22 | 24 24 | 64 64 | 66 66 | 30 30 |
0x00003d0 32 32 | 72 72 | 00 00 | 38 38 | 40 40 | 06 06 | 08 08 | 18 18 |
0x00003f0 20 20 | 60 60 | 62 62 | 26 26 | 44 44 | 32 32 | 36 36 | 70 70 |
Sample Data
Hop Sequence {k} for CONNECTION STATE (Adapted channel hopping sequence with
odd channels used):
CLK start: 0x0000010
ULAP: 0x2a96ef25
Used Channels:0x2aaaaaaaaaaaaaaaaaaa
#ticks: 00 02 | 04 06 | 08 0a | 0c 0e | 10 12 | 14 16 | 18 1a | 1c 1e |
---------------------------------------------------------------
0x0000010 55 55 | 19 19 | 23 23 | 53 53 | 57 57 | 21 21 | 25 25 | 27 27 |
0x0000030 31 31 | 77 77 | 03 03 | 29 29 | 33 33 | 01 01 | 01 01 | 35 35 |
0x0000050 39 39 | 03 03 | 07 07 | 37 37 | 41 41 | 05 05 | 09 09 | 43 43 |
0x0000070 47 47 | 11 11 | 15 15 | 45 45 | 07 07 | 47 47 | 49 49 | 09 09 |
0x0000090 11 11 | 51 51 | 53 53 | 13 13 | 15 15 | 55 55 | 57 57 | 59 59 |
0x00000b0 61 61 | 27 27 | 29 29 | 63 63 | 65 65 | 31 31 | 33 33 | 67 67 |
0x00000d0 69 69 | 35 35 | 37 37 | 71 71 | 73 73 | 39 39 | 41 41 | 75 75 |
0x00000f0 77 77 | 43 43 | 45 45 | 05 05 | 31 31 | 69 69 | 73 73 | 41 41 |
0x0000110 45 45 | 09 09 | 13 13 | 43 43 | 47 47 | 11 11 | 15 15 | 17 17 |
0x0000130 21 21 | 59 59 | 63 63 | 19 19 | 23 23 | 61 61 | 65 65 | 33 33 |
0x0000150 37 37 | 75 75 | 05 05 | 35 35 | 39 39 | 77 77 | 07 07 | 25 25 |
0x0000170 29 29 | 67 67 | 71 71 | 27 27 | 63 63 | 29 29 | 31 31 | 73 73 |
0x0000190 75 75 | 41 41 | 43 43 | 77 77 | 01 01 | 45 45 | 47 47 | 49 49 |
0x00001b0 51 51 | 17 17 | 19 19 | 53 53 | 55 55 | 21 21 | 23 23 | 65 65 |
0x00001d0 67 67 | 33 33 | 35 35 | 69 69 | 71 71 | 37 37 | 39 39 | 57 57 |
0x00001f0 59 59 | 25 25 | 27 27 | 61 61 | 19 19 | 67 67 | 71 71 | 07 07 |
0x0000210 11 11 | 59 59 | 63 63 | 23 23 | 27 27 | 75 75 | 01 01 | 03 03 |
0x0000230 01 01 | 49 49 | 53 53 | 13 13 | 17 17 | 65 65 | 69 69 | 05 05 |
0x0000250 09 09 | 57 57 | 61 61 | 21 21 | 25 25 | 73 73 | 77 77 | 05 05 |
0x0000270 03 03 | 51 51 | 55 55 | 15 15 | 51 51 | 17 17 | 19 19 | 41 41 |
0x0000290 43 43 | 09 09 | 11 11 | 57 57 | 59 59 | 25 25 | 27 27 | 29 29 |
0x00002b0 31 31 | 03 03 | 05 05 | 45 45 | 47 47 | 13 13 | 15 15 | 37 37 |
0x00002d0 39 39 | 05 05 | 07 07 | 53 53 | 55 55 | 21 21 | 23 23 | 33 33 |
0x00002f0 35 35 | 01 01 | 03 03 | 49 49 | 75 75 | 39 39 | 43 43 | 07 07 |
0x0000310 11 11 | 47 47 | 51 51 | 15 15 | 19 19 | 55 55 | 59 59 | 61 61 |
0x0000330 65 65 | 29 29 | 33 33 | 69 69 | 73 73 | 37 37 | 41 41 | 77 77 |
0x0000350 09 09 | 45 45 | 49 49 | 13 13 | 17 17 | 53 53 | 57 57 | 63 63 |
0x0000370 67 67 | 31 31 | 35 35 | 71 71 | 35 35 | 73 73 | 75 75 | 41 41 |
0x0000390 43 43 | 09 09 | 11 11 | 49 49 | 51 51 | 17 17 | 19 19 | 21 21 |
0x00003b0 23 23 | 61 61 | 63 63 | 29 29 | 31 31 | 69 69 | 71 71 | 37 37 |
0x00003d0 39 39 | 77 77 | 07 07 | 45 45 | 47 47 | 13 13 | 15 15 | 25 25 |
0x00003f0 27 27 | 65 65 | 67 67 | 33 33 | 51 51 | 39 39 | 43 43 | 77 77 |
Sample Data
Sample Data
Hop sequence {k} for CONNECTION STATE (Basic channel hopping sequence; ie, non-AFH):
CLK start: 0x0000010
ULAP: 0x6587cba9
#ticks: 00 02 | 04 06 | 08 0a | 0c 0e | 10 12 | 14 16 | 18 1a | 1c 1e |
----------------------------------------------------------------
0x0000010: 20 60 | 53 62 | 55 66 | 06 64 | 08 68 | 57 70 | 59 74 | 10 72 |
0x0000030: 12 76 | 69 78 | 71 03 | 22 01 | 24 05 | 73 07 | 75 11 | 26 09 |
0x0000050: 28 13 | 45 30 | 47 34 | 77 32 | 00 36 | 49 38 | 51 42 | 02 40 |
0x0000070: 04 44 | 61 46 | 63 50 | 14 48 | 50 05 | 16 07 | 20 09 | 48 11 |
0x0000090: 52 13 | 06 15 | 10 17 | 38 19 | 42 21 | 08 23 | 12 25 | 40 27 |
0x00000b0: 44 29 | 22 31 | 26 33 | 54 35 | 58 37 | 24 39 | 28 41 | 56 43 |
0x00000d0: 60 45 | 77 62 | 02 64 | 30 66 | 34 68 | 00 70 | 04 72 | 32 74 |
0x00000f0: 36 76 | 14 78 | 18 01 | 46 03 | 72 29 | 42 39 | 44 43 | 74 41 |
0x0000110: 76 45 | 46 47 | 48 51 | 78 49 | 01 53 | 50 63 | 52 67 | 03 65 |
0x0000130: 05 69 | 54 55 | 56 59 | 07 57 | 09 61 | 58 71 | 60 75 | 11 73 |
0x0000150: 13 77 | 30 15 | 32 19 | 62 17 | 64 21 | 34 31 | 36 35 | 66 33 |
0x0000170: 68 37 | 38 23 | 40 27 | 70 25 | 27 61 | 72 71 | 76 73 | 25 75 |
0x0000190: 29 77 | 78 00 | 03 02 | 31 04 | 35 06 | 01 16 | 05 18 | 33 20 |
0x00001b0: 37 22 | 07 08 | 11 10 | 39 12 | 43 14 | 09 24 | 13 26 | 41 28 |
0x00001d0: 45 30 | 62 47 | 66 49 | 15 51 | 19 53 | 64 63 | 68 65 | 17 67 |
0x00001f0: 21 69 | 70 55 | 74 57 | 23 59 | 53 22 | 35 12 | 37 28 | 67 14 |
0x0000210: 69 30 | 23 32 | 25 48 | 55 34 | 57 50 | 39 40 | 41 56 | 71 42 |
0x0000230: 73 58 | 27 36 | 29 52 | 59 38 | 61 54 | 43 44 | 45 60 | 75 46 |
0x0000250: 77 62 | 15 00 | 17 16 | 47 02 | 49 18 | 31 08 | 33 24 | 63 10 |
0x0000270: 65 26 | 19 04 | 21 20 | 51 06 | 06 54 | 65 42 | 69 58 | 18 46 |
0x0000290: 22 62 | 55 64 | 59 01 | 08 68 | 12 05 | 71 72 | 75 09 | 24 76 |
0x00002b0: 28 13 | 57 66 | 61 03 | 10 70 | 14 07 | 73 74 | 77 11 | 26 78 |
0x00002d0: 30 15 | 47 32 | 51 48 | 00 36 | 04 52 | 63 40 | 67 56 | 16 44 |
0x00002f0: 20 60 | 49 34 | 53 50 | 02 38 | 38 78 | 12 05 | 14 13 | 44 07 |
0x0000310: 46 15 | 16 17 | 18 25 | 48 19 | 50 27 | 24 33 | 26 41 | 56 35 |
0x0000330: 58 43 | 20 21 | 22 29 | 52 23 | 54 31 | 28 37 | 30 45 | 60 39 |
0x0000350: 62 47 | 00 64 | 02 72 | 32 66 | 34 74 | 08 01 | 10 09 | 40 03 |
0x0000370: 42 11 | 04 68 | 06 76 | 36 70 | 70 31 | 42 35 | 46 43 | 74 39 |
0x0000390: 78 47 | 48 49 | 52 57 | 01 53 | 05 61 | 56 65 | 60 73 | 09 69 |
0x00003b0: 13 77 | 50 51 | 54 59 | 03 55 | 07 63 | 58 67 | 62 75 | 11 71 |
0x00003d0: 15 00 | 32 17 | 36 25 | 64 21 | 68 29 | 40 33 | 44 41 | 72 37 |
0x00003f0: 76 45 | 34 19 | 38 27 | 66 23 | 11 71 | 05 18 | 07 22 | 13 20 |
Sample Data
Hop Sequence {k} for CONNECTION STATE (Adapted channel hopping sequence with
all channel used; ie, AFH(79)):
CLK start: 0x0000010
ULAP: 0x6587cba9
Used Channels:0x7fffffffffffffffffff
#ticks: 00 02 | 04 06 | 08 0a | 0c 0e | 10 12 | 14 16 | 18 1a | 1c 1e |
---------------------------------------------------------------
0x0000010 20 20 | 53 53 | 55 55 | 06 06 | 08 08 | 57 57 | 59 59 | 10 10 |
0x0000030 12 12 | 69 69 | 71 71 | 22 22 | 24 24 | 73 73 | 75 75 | 26 26 |
0x0000050 28 28 | 45 45 | 47 47 | 77 77 | 00 00 | 49 49 | 51 51 | 02 02 |
0x0000070 04 04 | 61 61 | 63 63 | 14 14 | 50 50 | 16 16 | 20 20 | 48 48 |
0x0000090 52 52 | 06 06 | 10 10 | 38 38 | 42 42 | 08 08 | 12 12 | 40 40 |
0x00000b0 44 44 | 22 22 | 26 26 | 54 54 | 58 58 | 24 24 | 28 28 | 56 56 |
0x00000d0 60 60 | 77 77 | 02 02 | 30 30 | 34 34 | 00 00 | 04 04 | 32 32 |
0x00000f0 36 36 | 14 14 | 18 18 | 46 46 | 72 72 | 42 42 | 44 44 | 74 74 |
0x0000110 76 76 | 46 46 | 48 48 | 78 78 | 01 01 | 50 50 | 52 52 | 03 03 |
0x0000130 05 05 | 54 54 | 56 56 | 07 07 | 09 09 | 58 58 | 60 60 | 11 11 |
0x0000150 13 13 | 30 30 | 32 32 | 62 62 | 64 64 | 34 34 | 36 36 | 66 66 |
0x0000170 68 68 | 38 38 | 40 40 | 70 70 | 27 27 | 72 72 | 76 76 | 25 25 |
0x0000190 29 29 | 78 78 | 03 03 | 31 31 | 35 35 | 01 01 | 05 05 | 33 33 |
0x00001b0 37 37 | 07 07 | 11 11 | 39 39 | 43 43 | 09 09 | 13 13 | 41 41 |
0x00001d0 45 45 | 62 62 | 66 66 | 15 15 | 19 19 | 64 64 | 68 68 | 17 17 |
0x00001f0 21 21 | 70 70 | 74 74 | 23 23 | 53 53 | 35 35 | 37 37 | 67 67 |
0x0000210 69 69 | 23 23 | 25 25 | 55 55 | 57 57 | 39 39 | 41 41 | 71 71 |
0x0000230 73 73 | 27 27 | 29 29 | 59 59 | 61 61 | 43 43 | 45 45 | 75 75 |
0x0000250 77 77 | 15 15 | 17 17 | 47 47 | 49 49 | 31 31 | 33 33 | 63 63 |
0x0000270 65 65 | 19 19 | 21 21 | 51 51 | 06 06 | 65 65 | 69 69 | 18 18 |
0x0000290 22 22 | 55 55 | 59 59 | 08 08 | 12 12 | 71 71 | 75 75 | 24 24 |
0x00002b0 28 28 | 57 57 | 61 61 | 10 10 | 14 14 | 73 73 | 77 77 | 26 26 |
0x00002d0 30 30 | 47 47 | 51 51 | 00 00 | 04 04 | 63 63 | 67 67 | 16 16 |
0x00002f0 20 20 | 49 49 | 53 53 | 02 02 | 38 38 | 12 12 | 14 14 | 44 44 |
0x0000310 46 46 | 16 16 | 18 18 | 48 48 | 50 50 | 24 24 | 26 26 | 56 56 |
0x0000330 58 58 | 20 20 | 22 22 | 52 52 | 54 54 | 28 28 | 30 30 | 60 60 |
0x0000350 62 62 | 00 00 | 02 02 | 32 32 | 34 34 | 08 08 | 10 10 | 40 40 |
0x0000370 42 42 | 04 04 | 06 06 | 36 36 | 70 70 | 42 42 | 46 46 | 74 74 |
0x0000390 78 78 | 48 48 | 52 52 | 01 01 | 05 05 | 56 56 | 60 60 | 09 09 |
0x00003b0 13 13 | 50 50 | 54 54 | 03 03 | 07 07 | 58 58 | 62 62 | 11 11 |
0x00003d0 15 15 | 32 32 | 36 36 | 64 64 | 68 68 | 40 40 | 44 44 | 72 72 |
0x00003f0 76 76 | 34 34 | 38 38 | 66 66 | 11 11 | 05 05 | 07 07 | 13 13 |
Sample Data
Hop Sequence {k} for CONNECTION STATE (Adapted channel hopping sequence with
channels 0 to 21 unused):
CLK start: 0x0000010
ULAP: 0x6587cba9
Used Channels:0x7fffffffffffffc00000
#ticks: 00 02 | 04 06 | 08 0a | 0c 0e | 10 12 | 14 16 | 18 1a | 1c 1e |
---------------------------------------------------------------
0x0000010 29 29 | 53 53 | 55 55 | 72 72 | 74 74 | 57 57 | 59 59 | 76 76 |
0x0000030 78 78 | 69 69 | 71 71 | 22 22 | 24 24 | 73 73 | 75 75 | 26 26 |
0x0000050 28 28 | 45 45 | 47 47 | 77 77 | 66 66 | 49 49 | 51 51 | 68 68 |
0x0000070 70 70 | 61 61 | 63 63 | 23 23 | 50 50 | 25 25 | 29 29 | 48 48 |
0x0000090 52 52 | 72 72 | 76 76 | 38 38 | 42 42 | 74 74 | 78 78 | 40 40 |
0x00000b0 44 44 | 22 22 | 26 26 | 54 54 | 58 58 | 24 24 | 28 28 | 56 56 |
0x00000d0 60 60 | 77 77 | 68 68 | 30 30 | 34 34 | 66 66 | 70 70 | 32 32 |
0x00000f0 36 36 | 23 23 | 27 27 | 46 46 | 72 72 | 42 42 | 44 44 | 74 74 |
0x0000110 76 76 | 46 46 | 48 48 | 78 78 | 32 32 | 50 50 | 52 52 | 34 34 |
0x0000130 36 36 | 54 54 | 56 56 | 38 38 | 40 40 | 58 58 | 60 60 | 42 42 |
0x0000150 44 44 | 30 30 | 32 32 | 62 62 | 64 64 | 34 34 | 36 36 | 66 66 |
0x0000170 68 68 | 38 38 | 40 40 | 70 70 | 27 27 | 72 72 | 76 76 | 25 25 |
0x0000190 29 29 | 78 78 | 34 34 | 31 31 | 35 35 | 32 32 | 36 36 | 33 33 |
0x00001b0 37 37 | 38 38 | 42 42 | 39 39 | 43 43 | 40 40 | 44 44 | 41 41 |
0x00001d0 45 45 | 62 62 | 66 66 | 46 46 | 50 50 | 64 64 | 68 68 | 48 48 |
0x00001f0 52 52 | 70 70 | 74 74 | 23 23 | 53 53 | 35 35 | 37 37 | 67 67 |
0x0000210 69 69 | 23 23 | 25 25 | 55 55 | 57 57 | 39 39 | 41 41 | 71 71 |
0x0000230 73 73 | 27 27 | 29 29 | 59 59 | 61 61 | 43 43 | 45 45 | 75 75 |
0x0000250 77 77 | 46 46 | 48 48 | 47 47 | 49 49 | 31 31 | 33 33 | 63 63 |
0x0000270 65 65 | 50 50 | 52 52 | 51 51 | 59 59 | 65 65 | 69 69 | 71 71 |
0x0000290 22 22 | 55 55 | 59 59 | 61 61 | 65 65 | 71 71 | 75 75 | 24 24 |
0x00002b0 28 28 | 57 57 | 61 61 | 63 63 | 67 67 | 73 73 | 77 77 | 26 26 |
0x00002d0 30 30 | 47 47 | 51 51 | 53 53 | 57 57 | 63 63 | 67 67 | 69 69 |
0x00002f0 73 73 | 49 49 | 53 53 | 55 55 | 38 38 | 65 65 | 67 67 | 44 44 |
0x0000310 46 46 | 69 69 | 71 71 | 48 48 | 50 50 | 24 24 | 26 26 | 56 56 |
0x0000330 58 58 | 73 73 | 22 22 | 52 52 | 54 54 | 28 28 | 30 30 | 60 60 |
0x0000350 62 62 | 53 53 | 55 55 | 32 32 | 34 34 | 61 61 | 63 63 | 40 40 |
0x0000370 42 42 | 57 57 | 59 59 | 36 36 | 70 70 | 42 42 | 46 46 | 74 74 |
0x0000390 78 78 | 48 48 | 52 52 | 76 76 | 23 23 | 56 56 | 60 60 | 27 27 |
0x00003b0 31 31 | 50 50 | 54 54 | 78 78 | 25 25 | 58 58 | 62 62 | 29 29 |
0x00003d0 33 33 | 32 32 | 36 36 | 64 64 | 68 68 | 40 40 | 44 44 | 72 72 |
0x00003f0 76 76 | 34 34 | 38 38 | 66 66 | 29 29 | 23 23 | 25 25 | 31 31 |
Sample Data
Hop Sequence {k} for CONNECTION STATE (Adapted channel hopping sequence with
even channels used):
CLK start: 0x0000010
ULAP: 0x6587cba9
Used Channels:0x55555555555555555555
#ticks: 00 02 | 04 06 | 08 0a | 0c 0e | 10 12 | 14 16 | 18 1a | 1c 1e |
---------------------------------------------------------------
0x0000010 20 20 | 52 52 | 54 54 | 06 06 | 08 08 | 56 56 | 58 58 | 10 10 |
0x0000030 12 12 | 68 68 | 70 70 | 22 22 | 24 24 | 72 72 | 74 74 | 26 26 |
0x0000050 28 28 | 44 44 | 46 46 | 76 76 | 00 00 | 48 48 | 50 50 | 02 02 |
0x0000070 04 04 | 60 60 | 62 62 | 14 14 | 50 50 | 16 16 | 20 20 | 48 48 |
0x0000090 52 52 | 06 06 | 10 10 | 38 38 | 42 42 | 08 08 | 12 12 | 40 40 |
0x00000b0 44 44 | 22 22 | 26 26 | 54 54 | 58 58 | 24 24 | 28 28 | 56 56 |
0x00000d0 60 60 | 76 76 | 02 02 | 30 30 | 34 34 | 00 00 | 04 04 | 32 32 |
0x00000f0 36 36 | 14 14 | 18 18 | 46 46 | 72 72 | 42 42 | 44 44 | 74 74 |
0x0000110 76 76 | 46 46 | 48 48 | 78 78 | 78 78 | 50 50 | 52 52 | 00 00 |
0x0000130 02 02 | 54 54 | 56 56 | 04 04 | 06 06 | 58 58 | 60 60 | 08 08 |
0x0000150 10 10 | 30 30 | 32 32 | 62 62 | 64 64 | 34 34 | 36 36 | 66 66 |
0x0000170 68 68 | 38 38 | 40 40 | 70 70 | 24 24 | 72 72 | 76 76 | 22 22 |
0x0000190 26 26 | 78 78 | 00 00 | 28 28 | 32 32 | 78 78 | 02 02 | 30 30 |
0x00001b0 34 34 | 04 04 | 08 08 | 36 36 | 40 40 | 06 06 | 10 10 | 38 38 |
0x00001d0 42 42 | 62 62 | 66 66 | 12 12 | 16 16 | 64 64 | 68 68 | 14 14 |
0x00001f0 18 18 | 70 70 | 74 74 | 20 20 | 50 50 | 32 32 | 34 34 | 64 64 |
0x0000210 66 66 | 20 20 | 22 22 | 52 52 | 54 54 | 36 36 | 38 38 | 68 68 |
0x0000230 70 70 | 24 24 | 26 26 | 56 56 | 58 58 | 40 40 | 42 42 | 72 72 |
0x0000250 74 74 | 12 12 | 14 14 | 44 44 | 46 46 | 28 28 | 30 30 | 60 60 |
0x0000270 62 62 | 16 16 | 18 18 | 48 48 | 06 06 | 62 62 | 66 66 | 18 18 |
0x0000290 22 22 | 52 52 | 56 56 | 08 08 | 12 12 | 68 68 | 72 72 | 24 24 |
0x00002b0 28 28 | 54 54 | 58 58 | 10 10 | 14 14 | 70 70 | 74 74 | 26 26 |
0x00002d0 30 30 | 44 44 | 48 48 | 00 00 | 04 04 | 60 60 | 64 64 | 16 16 |
0x00002f0 20 20 | 46 46 | 50 50 | 02 02 | 38 38 | 12 12 | 14 14 | 44 44 |
0x0000310 46 46 | 16 16 | 18 18 | 48 48 | 50 50 | 24 24 | 26 26 | 56 56 |
0x0000330 58 58 | 20 20 | 22 22 | 52 52 | 54 54 | 28 28 | 30 30 | 60 60 |
0x0000350 62 62 | 00 00 | 02 02 | 32 32 | 34 34 | 08 08 | 10 10 | 40 40 |
0x0000370 42 42 | 04 04 | 06 06 | 36 36 | 70 70 | 42 42 | 46 46 | 74 74 |
0x0000390 78 78 | 48 48 | 52 52 | 76 76 | 00 00 | 56 56 | 60 60 | 04 04 |
0x00003b0 08 08 | 50 50 | 54 54 | 78 78 | 02 02 | 58 58 | 62 62 | 06 06 |
0x00003d0 10 10 | 32 32 | 36 36 | 64 64 | 68 68 | 40 40 | 44 44 | 72 72 |
0x00003f0 76 76 | 34 34 | 38 38 | 66 66 | 06 06 | 00 00 | 02 02 | 08 08 |
Sample Data
Hop Sequence {k} for CONNECTION STATE (Adapted channel hopping sequence with
odd channels used):
CLK start: 0x0000010
ULAP: 0x6587cba9
Used Channels:0x2aaaaaaaaaaaaaaaaaaa
#ticks: 00 02 | 04 06 | 08 0a | 0c 0e | 10 12 | 14 16 | 18 1a | 1c 1e |
---------------------------------------------------------------
0x0000010 23 23 | 53 53 | 55 55 | 09 09 | 11 11 | 57 57 | 59 59 | 13 13 |
0x0000030 15 15 | 69 69 | 71 71 | 25 25 | 27 27 | 73 73 | 75 75 | 29 29 |
0x0000050 31 31 | 45 45 | 47 47 | 77 77 | 03 03 | 49 49 | 51 51 | 05 05 |
0x0000070 07 07 | 61 61 | 63 63 | 17 17 | 53 53 | 19 19 | 23 23 | 51 51 |
0x0000090 55 55 | 09 09 | 13 13 | 41 41 | 45 45 | 11 11 | 15 15 | 43 43 |
0x00000b0 47 47 | 25 25 | 29 29 | 57 57 | 61 61 | 27 27 | 31 31 | 59 59 |
0x00000d0 63 63 | 77 77 | 05 05 | 33 33 | 37 37 | 03 03 | 07 07 | 35 35 |
0x00000f0 39 39 | 17 17 | 21 21 | 49 49 | 75 75 | 45 45 | 47 47 | 77 77 |
0x0000110 01 01 | 49 49 | 51 51 | 03 03 | 01 01 | 53 53 | 55 55 | 03 03 |
0x0000130 05 05 | 57 57 | 59 59 | 07 07 | 09 09 | 61 61 | 63 63 | 11 11 |
0x0000150 13 13 | 33 33 | 35 35 | 65 65 | 67 67 | 37 37 | 39 39 | 69 69 |
0x0000170 71 71 | 41 41 | 43 43 | 73 73 | 27 27 | 75 75 | 01 01 | 25 25 |
0x0000190 29 29 | 03 03 | 03 03 | 31 31 | 35 35 | 01 01 | 05 05 | 33 33 |
0x00001b0 37 37 | 07 07 | 11 11 | 39 39 | 43 43 | 09 09 | 13 13 | 41 41 |
0x00001d0 45 45 | 65 65 | 69 69 | 15 15 | 19 19 | 67 67 | 71 71 | 17 17 |
0x00001f0 21 21 | 73 73 | 77 77 | 23 23 | 53 53 | 35 35 | 37 37 | 67 67 |
0x0000210 69 69 | 23 23 | 25 25 | 55 55 | 57 57 | 39 39 | 41 41 | 71 71 |
0x0000230 73 73 | 27 27 | 29 29 | 59 59 | 61 61 | 43 43 | 45 45 | 75 75 |
0x0000250 77 77 | 15 15 | 17 17 | 47 47 | 49 49 | 31 31 | 33 33 | 63 63 |
0x0000270 65 65 | 19 19 | 21 21 | 51 51 | 11 11 | 65 65 | 69 69 | 23 23 |
0x0000290 27 27 | 55 55 | 59 59 | 13 13 | 17 17 | 71 71 | 75 75 | 29 29 |
0x00002b0 33 33 | 57 57 | 61 61 | 15 15 | 19 19 | 73 73 | 77 77 | 31 31 |
0x00002d0 35 35 | 47 47 | 51 51 | 05 05 | 09 09 | 63 63 | 67 67 | 21 21 |
0x00002f0 25 25 | 49 49 | 53 53 | 07 07 | 43 43 | 17 17 | 19 19 | 49 49 |
0x0000310 51 51 | 21 21 | 23 23 | 53 53 | 55 55 | 29 29 | 31 31 | 61 61 |
0x0000330 63 63 | 25 25 | 27 27 | 57 57 | 59 59 | 33 33 | 35 35 | 65 65 |
0x0000350 67 67 | 05 05 | 07 07 | 37 37 | 39 39 | 13 13 | 15 15 | 45 45 |
0x0000370 47 47 | 09 09 | 11 11 | 41 41 | 75 75 | 47 47 | 51 51 | 01 01 |
0x0000390 05 05 | 53 53 | 57 57 | 01 01 | 05 05 | 61 61 | 65 65 | 09 09 |
0x00003b0 13 13 | 55 55 | 59 59 | 03 03 | 07 07 | 63 63 | 67 67 | 11 11 |
0x00003d0 15 15 | 37 37 | 41 41 | 69 69 | 73 73 | 45 45 | 49 49 | 77 77 |
0x00003f0 03 03 | 39 39 | 43 43 | 71 71 | 11 11 | 05 05 | 07 07 | 13 13 |
Sample Data
Sample Data
Sample Data
Sample Data
This section contains examples of HECs computed for sample UAP and packet
header contents (Data). The resulting 54 bit packet headers are shown in the
rightmost column. Note that the UAP, Data and HEC values are in hexadecimal
notation, while the header is in octal notation. The header is transmitted from
left to right over the air.
Sample Data
Data:
-----
data[0] = 0x4e
data[1] = 0x01
data[2] = 0x02
data[3] = 0x03
data[4] = 0x04
data[5] = 0x05
data[6] = 0x06
data[7] = 0x07
data[8] = 0x08
data[9] = 0x09
UAP = 0x47
==> CRC = 6d d2
4e 01 02 03 04 05 06 07 08 09 6d d2
Sample Data
Payload: (MSB...LSB)
--------------------
payload length: 5 bytes
logical channel = 10 (UA/I, Start L2CAP message)
flow = 1
data byte 1 = 00000001
data byte 2 = 00000010
data byte 3 = 00000011
data byte 4 = 00000100
data byte 5 = 00000101
NO WHITENING USED
Sample Data
Payload: (MSB...LSB)
--------------------
payload length: 5 bytes
logical channel = 10 (UA/I, Start L2CAP message)
flow = 1
data byte 1 = 00000001
data byte 2 = 00000010
data byte 3 = 00000011
data byte 4 = 00000100
data byte 5 = 00000101
NO WHITENING USED
Sample Data
This section provides sample data for the Simple Pairing cryptographic
functions (f1, f2, f3, g and the ECDH calculations).
Private A: 07915f86918ddc27005df1d6cf0c142b625ed2eff4a518ff
Private B: 1e636ca790b50f68f15d8dbe86244e309211d635de00e16d
Public A(x): 15207009984421a6586f9fc3fe7e4329d2809ea51125f8ed
Public A(y): b09d42b81bc5bd009f79e4b59dbbaa857fca856fb9f7ea25
DHKey: fb3ba2012c7e62466e486e229290175b4afebc13fdccee46
Private A: 52ec1ca6e0ec973c29065c3ca10be80057243002f09bb43e
Private B: 57231203533e9efe18cc622fd0e34c6a29c6e0fa3ab3bc53
Public A(x): 45571f027e0d690795d61560804da5de789a48f94ab4b07e
Public A(y): 0220016e8a6bce74b45ffec1e664aaa0273b7cbd907a8e2b
DHKey: a20a34b5497332aa7a76ab135cc0c168333be309d463c0c0
Private A: 00a0df08eaf51e6e7be519d67c6749ea3f4517cdd2e9e821
Private B: 2bf5e0d1699d50ca5025e8e2d9b13244b4d322a328be1821
Public A(x): 2ed35b430fa45f9d329186d754eeeb0495f0f653127f613d
Public A(y): 27e08db74e424395052ddae7e3d5a8fecb52a8039b735b73
DHKey: 3b3986ba70790762f282a12a6d3bcae7a2ca01e25b87724e
Private A: 030a4af66e1a4d590a83e0284fca5cdf83292b84f4c71168
Private B: 12448b5c69ecd10c0471060f2bf86345c5e83c03d16bae2c
Public A(x): f24a6899218fa912e7e4a8ba9357cb8182958f9fa42c968c
Public A(y): 7c0b8a9ebe6ea92e968c3a65f9f1a9716fe826ad88c97032
DHKey: 4a78f83fba757c35f94abea43e92effdd2bc700723c61939
Private A: 604df406c649cb460be16244589a40895c0db7367dc11a2f
Sample Data
Private B: 526c2327303cd505b9cf0c012471902bb9e842ce32b0addc
Public A(x): cbe3c629aceb41b73d475a79fbfe8c08cdc80ceec00ee7c9
Public A(y): f9f70f7ae42abda4f33af56f7f6aa383354e453fa1a2bd18
DHKey: 64d4fe35567e6ea0ca31f947e1533a635436d4870ce88c45
Private A: 1a2c582a09852979eb2cee18fb0befb9a55a6d06f6a8fad3
Private B: 243778916920d68df535955bc1a3cccd5811133a8205ae41
Public A(x): eca2d8d30bbef3ba8b7d591fdb98064a6c7b870cdcebe67c
Public A(y): 2e4163a44f3ae26e70dae86f1bf786e1a5db5562a8ed9fee
DHKey: 6433b36a7e9341940e78a63e31b3cf023282f7f1e3bf83bd
Private A: 0f494dd08b493edb07228058a9f30797ff147a5a2adef9b3
Private B: 2da4cd46d9e06e81b1542503f2da89372e927877becec1be
Public A(x): 9f56a8aa27346d66652a546abacc7d69c17fd66e0853989f
Public A(y): d7234c1464882250df7bbe67e0fa22aae475dc58af0c4210
DHKey: c67beda9baf3c96a30616bf87a7d0ae704bc969e5cad354b
Private A: 7381d2bc6ddecb65126564cb1af6ca1985d19fb57f0fff16
Private B: 18e276beff75adc3d520badb3806822e1c820f1064447848
Public A(x): 61c7f3c6f9e09f41423dce889de1973d346f2505a5a3b19b
Public A(y): 919972ff4cd6aed8a4821e3adc358b41f7be07ede20137df
DHKey: 6931496eef2fcfb03e0b1eef515dd4e1b0115b8b241b0b84
Private A: 41c7b484ddc37ef6b7952c379f87593789dac6e4f3d8d8e6
Private B: 33e4eaa77f78216e0e99a9b200f81d2ca20dc74ad62d9b78
Public A(x): 9f09c773adb8e7b66b5d986cd15b143341a66d824113c15f
Public A(y): d2000a91738217ab8070a76c5f96c03de317dfab774f4837
DHKey: a518f3826bb5fa3d5bc37da4217296d5b6af51e5445c6625
Private A: 703cf5ee9c075f7726d0bb36d131c664f5534a6e6305d631
Private B: 757291c620a0e7e9dd13ce09ceb729c0ce1980e64d569b5f
Public A(x): fa2b96d382cf894aeeb0bd985f3891e655a6315cd5060d03
Public A(y): f7e8206d05c7255300cc56c88448158c497f2df596add7a2
DHKey: 12a3343bb453bb5408da42d20c2d0fcc18ff078f56d9c68c
Sample Data
Sample Data
7.2.1 f1()
Set 1a
U: 15207009984421a6586f9fc3fe7e4329d2809ea51125f8ed
V: 356b31938421fbbf2fb331c89fd588a69367e9a833f56812
X: d5cb8454d177733effffb2ec712baeab
Z: 00
output: 1bdc955a9d542ffc9f9e670cdf665010
Set 1b
U: 15207009984421a6586f9fc3fe7e4329d2809ea51125f8ed
V: 356b31938421fbbf2fb331c89fd588a69367e9a833f56812
X: d5cb8454d177733effffb2ec712baeab
Z: 80
output: 611325ebcb6e5269b868113306095fa6
Set 1c
U: 15207009984421a6586f9fc3fe7e4329d2809ea51125f8ed
V: 356b31938421fbbf2fb331c89fd588a69367e9a833f56812
X: d5cb8454d177733effffb2ec712baeab
Z: 81
output: b68df39fd8a406b06a6c517d3666cf91
Sample Data
Set 1a
U: 20b003d2f297be2c5e2c83a7e9f9a5b9eff49111acf4fddbcc0301480e359de6
V: 55188b3d32f6bb9a900afcfbeed4e72a59cb9ac2f19d7cfb6b4fdd49f47fc5fd
X: d5cb8454d177733effffb2ec712baeab
Z: 00
output: D301CE92CC7B9E3F51D2924B8B33FACA
Set 1b
U: 20b003d2f297be2c5e2c83a7e9f9a5b9eff49111acf4fddbcc0301480e359de6
V: 55188b3d32f6bb9a900afcfbeed4e72a59cb9ac2f19d7cfb6b4fdd49f47fc5fd
X: d5cb8454d177733effffb2ec712baeab
Z: 80
output: 7E431112C10DE8A3984C8AC8149FF6EC
Sample Data
7.2.2 g()
Set 1
U: 15207009984421a6586f9fc3fe7e4329d2809ea51125f8ed
V: 356b31938421fbbf2fb331c89fd588a69367e9a833f56812
X: d5cb8454d177733effffb2ec712baeab
Y: a6e8e7cc25a75f6e216583f7ff3dc4cf
output: 52146a1e
output (decimal): 1377069598
6 digits (decimal): 069598
Set 1
U: 20b003d2f297be2c5e2c83a7e9f9a5b9eff49111acf4fddbcc0301480e359de6
V: 55188b3d32f6bb9a900afcfbeed4e72a59cb9ac2f19d7cfb6b4fdd49f47fc5fd
X: d5cb8454d177733effffb2ec712baeab
Y: a6e8e7cc25a75f6e216583f7ff3dc4cf
output: 000240E0
output (decimal): 147680
6 digits (decimal): 147680
7.2.3 f2()
Set 1
W: fb3ba2012c7e62466e486e229290175b4afebc13fdccee46
N1: d5cb8454d177733effffb2ec712baeab
N2: a6e8e7cc25a75f6e216583f7ff3dc4cf
keyID: 62746c6b
A1: 56123737bfce
A2: a713702dcfc1
output: c234c1198f3b520186ab92a2f874934e
Set 1
W: ec0234a357c8ad05341010a60a397d9b99796b13b4f866f1868d34f373bfa698
N1: d5cb8454d177733effffb2ec712baeab
N2: a6e8e7cc25a75f6e216583f7ff3dc4cf
keyID: 62746c6b
A1: 56123737bfce
A2: a713702dcfc1
output: 47300bb95c7404129450674b1741104d
Sample Data
7.2.4 f3()
Set 1
W: fb3ba2012c7e62466e486e229290175b4afebc13fdccee46
N1: d5cb8454d177733effffb2ec712baeab
N2: a6e8e7cc25a75f6e216583f7ff3dc4cf
R: 12a3343bb453bb5408da42d20c2d0fc8
IOcap: 000000
A1: 56123737bfce
A2: a713702dcfc1
output: 5e6a346b8add7ee80e7ec0c2461b1509
Set 2
W: fb3ba2012c7e62466e486e229290175b4afebc13fdccee46
N1: d5cb8454d177733effffb2ec712baeab
N2: a6e8e7cc25a75f6e216583f7ff3dc4cf
R: 12a3343bb453bb5408da42d20c2d0fc8
IOcap: 000001
A1: 56123737bfce
A2: a713702dcfc1
output: 7840e5445a13e3ce6e48a2decbe51482
Set 3
W: fb3ba2012c7e62466e486e229290175b4afebc13fdccee46
N1: d5cb8454d177733effffb2ec712baeab
N2: a6e8e7cc25a75f6e216583f7ff3dc4cf
R: 12a3343bb453bb5408da42d20c2d0fc8
IOcap: 000002
A1: 56123737bfce
A2: a713702dcfc1
output: da9afb5c6c9dbe0af4722b532520c4b3
Set 4
W: fb3ba2012c7e62466e486e229290175b4afebc13fdccee46
N1: d5cb8454d177733effffb2ec712baeab
N2: a6e8e7cc25a75f6e216583f7ff3dc4cf
R: 12a3343bb453bb5408da42d20c2d0fc8
IOcap: 000003
A1: 56123737bfce
A2: a713702dcfc1
output: 2c0f220c50075285852e01bcee4b5f90
Sample Data
Set 5
W: fb3ba2012c7e62466e486e229290175b4afebc13fdccee46
N1: d5cb8454d177733effffb2ec712baeab
N2: a6e8e7cc25a75f6e216583f7ff3dc4cf
R: 12a3343bb453bb5408da42d20c2d0fc8
IOcap: 000100
A1: 56123737bfce
A2: a713702dcfc1
output: 0a096af0fa61dce0933987febe95fc7d
Set 6
W: fb3ba2012c7e62466e486e229290175b4afebc13fdccee46
N1: d5cb8454d177733effffb2ec712baeab
N2: a6e8e7cc25a75f6e216583f7ff3dc4cf
R: 12a3343bb453bb5408da42d20c2d0fc8
IOcap: 000101
A1: 56123737bfce
A2: a713702dcfc1
output: 49b8d74007888e770e1a49d6810069b9
Set 7
W: fb3ba2012c7e62466e486e229290175b4afebc13fdccee46
N1: d5cb8454d177733effffb2ec712baeab
N2: a6e8e7cc25a75f6e216583f7ff3dc4cf
R: 12a3343bb453bb5408da42d20c2d0fc8
IOcap: 000102
A1: 56123737bfce
A2: a713702dcfc1
output: 309cd0327dec2514894a0c88b101a436
Set 8
W: fb3ba2012c7e62466e486e229290175b4afebc13fdccee46
N1: d5cb8454d177733effffb2ec712baeab
N2: a6e8e7cc25a75f6e216583f7ff3dc4cf
R: 12a3343bb453bb5408da42d20c2d0fc8
IOcap: 000103
A1: 56123737bfce
A2: a713702dcfc1
output: 4512274ba875b156c2187e2061b90434
Sample Data
Sample Data
Set 17
W: fb3ba2012c7e62466e486e229290175b4afebc13fdccee46
N1: d5cb8454d177733effffb2ec712baeab
N2: a6e8e7cc25a75f6e216583f7ff3dc4cf
R: 12a3343bb453bb5408da42d20c2d0fc8
IOcap: 010000
A1: 56123737bfce
A2: a713702dcfc1
output: 4bf22677415ed90aceb21873c71c1884
Set 18
W: fb3ba2012c7e62466e486e229290175b4afebc13fdccee46
N1: d5cb8454d177733effffb2ec712baeab
N2: a6e8e7cc25a75f6e216583f7ff3dc4cf
R: 12a3343bb453bb5408da42d20c2d0fc8
IOcap: 010001
A1: 56123737bfce
A2: a713702dcfc1
output: 0d4b97992eb570efb369cfe45e1681b5
Sample Data
Set 19
W: fb3ba2012c7e62466e486e229290175b4afebc13fdccee46
N1: d5cb8454d177733effffb2ec712baeab
N2: a6e8e7cc25a75f6e216583f7ff3dc4cf
R: 12a3343bb453bb5408da42d20c2d0fc8
IOcap: 010002
A1: 56123737bfce
A2: a713702dcfc1
output: 0f0906bbfa75e95c471e97c4211b2741
Set 20
W: fb3ba2012c7e62466e486e229290175b4afebc13fdccee46
N1: d5cb8454d177733effffb2ec712baeab
N2: a6e8e7cc25a75f6e216583f7ff3dc4cf
R: 12a3343bb453bb5408da42d20c2d0fc8
IOcap: 010003
A1: 56123737bfce
A2: a713702dcfc1
output: 88f1f60ce1ff4bf8aa08a170dd061d4e
Set 21
W: fb3ba2012c7e62466e486e229290175b4afebc13fdccee46
N1: d5cb8454d177733effffb2ec712baeab
N2: a6e8e7cc25a75f6e216583f7ff3dc4cf
R: 12a3343bb453bb5408da42d20c2d0fc8
IOcap: 010100
A1: 56123737bfce
A2: a713702dcfc1
output: 940f88f25317c358d9bd2f146778e36b
Set 22
W: fb3ba2012c7e62466e486e229290175b4afebc13fdccee46
N1: d5cb8454d177733effffb2ec712baeab
N2: a6e8e7cc25a75f6e216583f7ff3dc4cf
R: 12a3343bb453bb5408da42d20c2d0fc8
IOcap: 010101
A1: 56123737bfce
A2: a713702dcfc1
output: 591396355ac4dc72be05a15e718ec945
Sample Data
Set 23
W: fb3ba2012c7e62466e486e229290175b4afebc13fdccee46
N1: d5cb8454d177733effffb2ec712baeab
N2: a6e8e7cc25a75f6e216583f7ff3dc4cf
R: 12a3343bb453bb5408da42d20c2d0fc8
IOcap: 010102
A1: 56123737bfce
A2: a713702dcfc1
output: a3dc055f656abb1d6e11d3f37340189a
Set 24
W: fb3ba2012c7e62466e486e229290175b4afebc13fdccee46
N1: d5cb8454d177733effffb2ec712baeab
N2: a6e8e7cc25a75f6e216583f7ff3dc4cf
R: 12a3343bb453bb5408da42d20c2d0fc8
IOcap: 010103
A1: 56123737bfce
A2: a713702dcfc1
output: fd5412a22ba5dd893852608f8ab0c934
Sample Data
Sample Data
Set 1
W: ec0234a357c8ad05341010a60a397d9b99796b13b4f866f1868d34f373bfa698
N1: d5cb8454d177733effffb2ec712baeab
N2: a6e8e7cc25a75f6e216583f7ff3dc4cf
R: 12a3343bb453bb5408da42d20c2d0fc8
IOcap: 000000
A1: 56123737bfce
A2: a713702dcfc1
output: 5634c83c9996a86b53473fe25979ec90
7.2.5 h2()
Each element in this section except for 'L' is a multi-octet integer arranged with
the least significant octet on the right and the most significant octet on the left.
Set 2 (802.11)
W: 7E010832407F59D51CB473FB0D3355899C077DD052D0F5F03F0FA4B964097A04
keyID: 38303262 ('802b')
L: 32
output: D660DC08E542F1DCC32CDC2000B548F06BC1D7EB0F227DD809B50D9F1945C68E
Set 4 (ECMA-368)
W: AA8247E5DBAFC80F908C1C2ECA2F73E86D41DF754355994B220D5817040991B2
keyID: 65636d61 ('ecma')
L: 16
output: 89286411644B33DC378A93A1B1506AFF
Sample Data
7.2.6 h4()
Set 1a
keyID: 6274646b
A1: 56123737bfce
A2: a713702dcfc1
input: 6274646b56123737bfcea713702dcfc1
W: c234c1198f3b520186ab92a2f874934e
output: b089c4e39d7c192c3aba3c2109d24c0dc039e700adf3a263008e65a8b00fb1fa
Device Authentication Key: b089c4e39d7c192c3aba3c2109d24c0d
7.2.7 h5()
Set 1a
R1: d5cb8454d177733effffb2ec712baeab
R2: a6e8e7cc25a75f6e216583f7ff3dc4cf
input: d5cb8454d177733effffb2ec712baeaba6e8e7cc25a75f6e216583f7ff3dc4cf
W: b089c4e39d7c192c3aba3c2109d24c0d
output: 746af87e1eeb1137c683b97d9d421f911f3ddf100403871b362958c458976d65
SRESmaster: 746af87e
SRESslave: 1eeb1137
ACO: c683b97d9d421f91
7.2.8 h3()
Set 1a
keyID: 6274616b
A1: 56123737bfce
A2: a713702dcfc1
ACO: c683b97d9d421f91
input: 6274616b56123737bfcea713702dcfc1c683b97d9d421f91
W: c234c1198f3b520186ab92a2f874934e
output: 677b377f74a5d501121c46492d4cb489e27fe151026ab47f271a47399c8969ff
AES Encryption key: 677b377f74a5d501121c46492d4cb489
Sample Data
Whitening Whitening
Sequence LFSR
(=D7) D7.....D0
-----------------------
1 1111111
1 1101111
1 1001111
0 0001111
0 0011110
0 0111100
1 1111000
1 1100001
1 1010011
0 0110111
1 1101110
1 1001101
0 0001011
0 0010110
0 0101100
1 1011000
0 0100001
1 1000010
0 0010101
0 0101010
1 1010100
0 0111001
1 1110010
1 1110101
1 1111011
1 1100111
1 1011111
0 0101111
1 1011110
0 0101101
1 1011010
0 0100101
1 1001010
0 0000101
0 0001010
0 0010100
0 0101000
1 1010000
0 0110001
1 1100010
1 1010101
0 0111011
1 1110110
Sample Data
1 1111101
1 1101011
1 1000111
0 0011111
0 0111110
1 1111100
1 1101001
1 1000011
0 0010111
0 0101110
1 1011100
0 0101001
1 1010010
0 0110101
1 1101010
1 1000101
0 0011011
0 0110110
1 1101100
1 1001001
0 0000011
0 0000110
0 0001100
0 0011000
0 0110000
1 1100000
1 1010001
0 0110011
1 1100110
1 1011101
0 0101011
1 1010110
0 0111101
1 1111010
1 1100101
1 1011011
0 0100111
1 1001110
0 0001101
0 0011010
0 0110100
1 1101000
1 1000001
0 0010011
0 0100110
1 1001100
0 0001001
0 0010010
0 0100100
1 1001000
0 0000001
0 0000010
Sample Data
0 0000100
0 0001000
0 0010000
0 0100000
1 1000000
0 0010001
0 0100010
1 1000100
0 0011001
0 0110010
1 1100100
1 1011001
0 0100011
1 1000110
0 0011101
0 0111010
1 1110100
1 1111001
1 1100011
1 1010111
0 0111111
1 1111110
1 1101101
1 1001011
0 0000111
0 0001110
0 0011100
0 0111000
1 1110000
1 1110001
1 1110011
1 1110111
1 1111111
Sample Data
Data is in hexadecimal notation, the codewords are in binary notation. The codeword bits
are sent from left to right over the air interface. The space in the codeword indicates
the start of parity bits.
Data: Codeword:
Sample Data
Explanation:
For the Section 10.1 through Section 10.5, the hexadecimal sample data is
written with the least significant byte at the leftmost position and the most
significant byte at the rightmost position. Within each byte, the least significant
bit (LSB) is at the rightmost position and the most significant bit (MSB) is at the
leftmost position Thus, a line reading:
aco: 48afcdd4bd40fef76693b113
Sample Data
round 1:158ffe43352085e8a5ec7a88e1ff2ba8
Key [ 1]:e9e5dfc1b3a79583e9e5dfc1b3a79583
Key [ 2]:7595bf57e0632c59f435c16697d4c864
round 2:0b5cc75febcdf7827ca29ec0901b6b5b
Key [ 3]:e31b96afcc75d286ef0ae257cbbc05b7
Key [ 4]:0d2a27b471bc0108c6263aff9d9b3b6b
round 3:e4278526c8429211f7f2f0016220aef4
added ->:f1b68365fd6217f952de6a89831fd95c
Key [ 5]:98d1eb5773cf59d75d3b17b3bc37c191
Key [ 6]:fd2b79282408ddd4ea0aa7511133336f
round 4:d0304ad18337f86040145d27aa5c8153
Key [ 7]:331227756638a41d57b0f7e071ee2a98
Key [ 8]:aa0dd8cc68b406533d0f1d64aabacf20
round 5:84db909d213bb0172b8b6aaf71bf1472
Key [ 9]:669291b0752e63f806fce76f10e119c8
Key [10]:ef8bdd46be8ee0277e9b78adef1ec154
round 6:f835f52921e903dfa762f1df5abd7f95
Key [11]:f3902eb06dc409cfd78384624964bf51
Key [12]:7d72702b21f97984a721c99b0498239d
round 7:ae6c0b4bb09f25c6a5d9788a31b605d1
Key [13]:532e60bceaf902c52a06c2c283ecfa32
Key [14]:181715e5192efb2a64129668cf5d9dd4
round 8:744a6235b86cc0b853cc9f74f6b65311
Key [15]:83017c1434342d4290e961578790f451
Key [16]:2603532f365604646ff65803795ccce5
Key [17]:882f7c907b565ea58dae1c928a0dcf41
sres :056c0fe6
aco :48afcdd4bd40fef76693b113
-----------------------------------------
rand :bc3f30689647c8d7c5a03ca80a91eceb
address :7ca89b233c2d
key :159dd9f43fc3d328efba0cd8a861fa57
round 1:bc3f30689647c8d7c5a03ca80a91eceb
Key [ 1]:159dd9f43fc3d328efba0cd8a861fa57
Key [ 2]:326558b3c15551899a97790e65ff669e
round 2:3e950edf197615638cc19c09f8fedc9b
Key [ 3]:62e879b65b9f53bbfbd020c624b1d682
Key [ 4]:73415f30bac8ab61f410adc9442992db
round 3:6a7640791cb536678936c5ecd4ae5a73
Key [ 5]:5093cfa1d31c1c48acd76df030ea3c31
Key [ 6]:0b4acc2b8f1f694fc7bd91f4a70f3009
round 4:fca2c022a577e2ffb2aa007589693ec7
Key [ 7]:2ca43fc817947804ecff148d50d6f6c6
Key [ 8]:3fcd73524b533e00b7f7825bea2040a4
round 5:e97f8ea4ed1a6f4a36ffc179dc6bb563
Key [ 9]:6c67bec76ae8c8cc4d289f69436d3506
Key [10]:95ed95ee8cb97e61d75848464bffb379
round 6:38b07261d7340d028749de1773a415c7
Key [11]:ff566c1fc6b9da9ac502514550f3e9d2
Key [12]:ab5ce3f5c887d0f49b87e0d380e12f47
round 7:58241f1aed7c1c3e047d724331a0b774
Key [13]:a2cab6f95eac7d655dbe84a6cd4c47f5
Sample Data
Key [14]:f5caff88af0af8c42a20b5bbd2c8b460
round 8:3d1aaeff53c0910de63b9788b13c490f
Key [15]:185099c1131cf97001e2f36fda415025
Key [16]:a0ebb82676bc75e8378b189eff3f6b1d
Key [17]:cf5b348aaee27ae332b4f1bfa10289a6
round 1:2e4b417b9a2a9cfd7d8417d9a6a556eb
Key [ 1]:fe78b835f26468ab069fd3991b086fda
Key [ 2]:095c5a51c6fa6d3ac1d57fa19aa382bd
round 2:b8bca81d6bb45af9d92beadd9300f5ed
Key [ 3]:1af866df817fd9f4ec00bc704192cffc
Key [ 4]:f4a8a059c1f575f076f5fbb24bf16590
round 3:351aa16dec2c3a4787080249ed323eae
added ->:1b65e2167656d6bafa8c19904bd79445
Key [ 5]:8c9d18d9356a9954d341b4286e88ea1f
Key [ 6]:5c958d370102c9881bf753e69c7da029
round 4:2ce8fef47dda6a5bee74372e33e478a2
Key [ 7]:7eb2985c3697429fbe0da334bb51f795
Key [ 8]:af900f4b63a1138e2874bfb7c628b7b8
round 5:572787f563e1643c1c862b7555637fb4
Key [ 9]:834c8588dd8f3d4f31117a488420d69b
Key [10]:bc2b9b81c15d9a80262f3f48e9045895
round 6:16b4968c5d02853c3a43aa4cdb5f26ac
Key [11]:f08608c9e39ad3147cba61327919c958
Key [12]:2d4131decf4fa3a959084714a9e85c11
round 7:10e4120c7cccef9dd4ba4e6da8571b01
Key [13]:c934fd319c4a2b5361fa8eef05ae9572
Key [14]:4904c17aa47868e40471007cde3a97c0
round 8:f9081772498fed41b6ffd72b71fcf6c6
Key [15]:ea5e28687e97fa3f833401c86e6053ef
Key [16]:1168f58252c4ecfccafbdb3af857b9f2
Key [17]:b3440f69ef951b78b5cbd6866275301b
sres :8d5205c5
aco :3ed75df4abd9af638d144e94
-----------------------------------------
rand :0891caee063f5da1809577ff94ccdcfb
address :c62f19f6ce98
key :45298d06e46bac21421ddfbed94c032b
round 1:0891caee063f5da1809577ff94ccdcfb
Key [ 1]:45298d06e46bac21421ddfbed94c032b
Key [ 2]:8f03e1e1fe1c191cad35a897bc400597
round 2:1c6ca013480a685c1b28e0317f7167e1
Key [ 3]:4f2ce3a092dde854ef496c8126a69e8e
Key [ 4]:968caee2ac6d7008c07283daec67f2f2
round 3:06b4915f5fcc1fc551a52048f0af8a26
Key [ 5]:ab0d5c31f94259a6bf85ee2d22edf56c
Key [ 6]:dfb74855c0085ce73dc17b84bfd50a92
round 4:077a92b040acc86e6e0a877db197a167
Key [ 7]:8f888952662b3db00d4e904e7ea53b5d
Key [ 8]:5e18bfcc07799b0132db88cd6042f599
round 5:7204881fb300914825fdc863e8ceadf3
Key [ 9]:bfca91ad9bd3d1a06c582b1d5512dddf
Key [10]:a88bc477e3fa1d5a59b5e6cf793c7a41
Sample Data
round 6:27031131d86cea2d747deb4f756143aa
Key [11]:f3cfb8dac8aea2a6a8ef95af3a2a2767
Key [12]:77beb90670c5300b03aa2b2232d3d40c
round 7:fc8c13d49149b1ce8d86f96e44a00065
Key [13]:b578373650af36a06e19fe335d726d32
Key [14]:6bcee918c7d0d24dfdf42237fcf99d53
round 8:04ef5f5a7ddf846cda0a07782fc23866
Key [15]:399f158241eb3e079f45d7b96490e7ea
Key [16]:1bcfbe98ecde2add52aa63ea79fb917a
Key [17]:ee8bc03ec08722bc2b075492873374af
round 1:d989d7a40cde7032d17b52f8117b69d5
Key [ 1]:2ecc6cc797cc41a2ab02007f6af396ae
Key [ 2]:acfaef7609c12567d537ae1cf9dc2198
round 2:8e76eb9a29b2ad5eea790db97aee37c1
Key [ 3]:079c8ff9b73d428df879906a0b87a6c8
Key [ 4]:19f2710baf403a494193d201f3a8c439
round 3:346bb7c35b2539676375aafe3af69089
added ->:edf48e675703a955b2f0fc062b71f95c
Key [ 5]:d623a6498f915cb2c8002765247b2f5a
Key [ 6]:900109093319bc30108b3d9434a77a72
round 4:fafb6c1f3ebbd2477be2da49dd923f69
Key [ 7]:e28e2ee6e72e7f4e5b5c11f10d204228
Key [ 8]:8e455cd11f8b9073a2dfa5413c7a4bc5
round 5:7c72230df588060a3cf920f9b0a08f06
Key [ 9]:28afb26e2c7a64238c41cefc16c53e74
Key [10]:d08dcafc2096395ba0d2dddd0e471f4d
round 6:55991df991db26ff00073a12baa3031d
Key [11]:fcffdcc3ad8faae091a7055b934f87c1
Key [12]:f8df082d77060252c02d91e55bd6a7d6
round 7:70ec682ff864375f63701fa4f6be5377
Key [13]:bef3706e523d708e8a44147d7508bc35
Key [14]:3e98ab283ca2422d56a56cf8b06caeb3
round 8:172f12ec933da85504b4ea5c90f8f0ea
Key [15]:87ad9625d06645d22598dd5ef811ea2c
Key [16]:8bd3db0cc8168009e5da90877e13a36f
Key [17]:0e74631d813a8351ac7039b348c41b42
sres :00507e5f
aco :2a5f19fbf60907e69f39ca9f
-----------------------------------------
rand :0ecd61782b4128480c05dc45542b1b8c
address :f428f0e624b3
key :35949a914225fabad91995d226de1d92
round 1:0ecd61782b4128480c05dc45542b1b8c
Key [ 1]:35949a914225fabad91995d226de1d92
Key [ 2]:ea6b3dcccc8ee5d88de349fa5010404f
round 2:8935e2e263fbc4b9302cabdfc06bce3e
Key [ 3]:920f3a0f2543ce535d4e7f25ad80648a
Key [ 4]:ad47227edf9c6874e80ba80ebb95d2c9
round 3:b4c8b878675f184a0c72f3dab51f8f05
Key [ 5]:81a941ca7202b5e884ae8fa493ecac3d
Key [ 6]:bcde1520bee3660e86ce2f0fb78b9157
round 4:77ced9f2fc42bdd5c6312b87fc2377c5
Sample Data
Key [ 7]:c8eee7423d7c6efa75ecec0d2cd969d3
Key [ 8]:910b3f838a02ed441fbe863a02b4a1d0
round 5:fe28e8056f3004d60bb207e628b39cf2
Key [ 9]:56c647c1e865eb078348962ae070972d
Key [10]:883965da77ca5812d8104e2b640aec0d
round 6:1f2ba92259d9e88101518f145a33840f
Key [11]:61d4cb7e4f8868a283327806a9bd8d4d
Key [12]:9f57de3a3ff310e21dc1e696ce060304
round 7:cc9b5d0218d29037e88475152ebebb2f
Key [13]:7aa1d8adc1aeed7127ef9a18f6eb2d8e
Key [14]:b4db9da3bf865912acd14904c7f7785d
round 8:b04d352bedc02682e4a7f59d7cda1dba
Key [15]:a13d7141ef1f6c7d867e3d175467381b
Key [16]:08b2bc058e50d6141cdd566a307e1acc
Key [17]:057b2b4b4be5dc0ac49e50489b8006c9
round 1:5cfacc773bae995cd7f1b81e7c9ec7df
Key [ 1]:1e717950f5828f3930fe4a9395858815
Key [ 2]:d1623369b733d98bbc894f75866c544c
round 2:d571ffa21d9daa797b1a0a3c962fc64c
Key [ 3]:4abf27664ae364cc8a7e5bcf88214cc4
Key [ 4]:2aaedda8dc4933dd6aeaf6e5c0d5a482
round 3:e17c8e498a00f125bf654c938c23f36d
added ->:bd765a3eb1ae8a796856048df0c1bab2
Key [ 5]:bc7f8ab2d86000f47b1946cc8d7a7a2b
Key [ 6]:6b28544cb13ec6c5d98470df2cf900b7
round 4:a9727c26f2f06bd9920e83c8605dcd76
Key [ 7]:1be840d9107f2c9523f66bb19f5464a1
Key [ 8]:61d6fb1aa2f0c2b26fb2a3d6de8c177c
round 5:aeff751f146eab7e4626b2e2c9e2fb39
Key [ 9]:adabfc82570c568a233173099f23f4c2
Key [10]:b7df6b55ad266c0f1ff7452101f59101
round 6:cf412b95f454d5185e67ca671892e5bd
Key [11]:8e04a7282a2950dcbaea28f300e22de3
Key [12]:21362c114433e29bda3e4d51f803b0cf
round 7:16165722fe4e07ef88f8056b17d89567
Key [13]:710c8fd5bb3cbb5f132a7061de518bd9
Key [14]:0791de7334f4c87285809343f3ead3bd
round 8:28854cd6ad4a3c572b15490d4b81bc3f
Key [15]:4f47f0e5629a674bfcd13770eb3a3bd9
Key [16]:58a6d9a16a284cc0aead2126c79608a1
Key [17]:a564082a0a98399f43f535fd5cefad34
sres :80e5629c
aco :a6fe4dcde3924611d3cc6ba1
=========================================
Sample Data
Sample Data
Key [12]:a9ce513b38ea006c333ecaaefcf1d0f8
round 7:75a8aba07e69c9065bcd831c40115116
Key [13]:3635e074792d4122130e5b824e52cd60
Key [14]:511bdb61bb28de72a5d794bffbf407df
round 8:57a6e279dcb764cf7dd6a749dd60c735
Key [15]:a32f5f21044b6744b6d913b13cdb4c0a
Key [16]:9722bbaeef281496ef8c23a9d41e92f4
Key [17]:807370560ad7e8a13a054a65a03b4049
Ka :e62f8bac609139b3999aedbc9d228042
-----------------------------------------
rand :dab3cffe9d5739d1b7bf4a667ae5ee24
address :02f8fd4cd661
round 1:02f8fd4cd66102f8fd4cd66102f8fd4c
Key [ 1]:dab3cffe9d5739d1b7bf4a667ae5ee22
Key [ 2]:e315a8a65d809ec7c289e69c899fbdcc
round 2:ef85ff081b8709405e19f3e275cec7dc
Key [ 3]:df6a119bb50945fc8a3394e7216448f3
Key [ 4]:87fe86fb0d58b5dd0fb3b6b1dab51d07
round 3:aa25c21bf577d92dd97381e3e9edcc54
added ->:a81dbf5723d8dbd524bf5782ebe5c918
Key [ 5]:36cc253c506c0021c91fac9d8c469e90
Key [ 6]:d5fda00f113e303809b7f7d78a1a2b0e
round 4:9e69ce9b53caec3990894d2baed41e0d
Key [ 7]:c14b5edc10cabf16bc2a2ba4a8ae1e40
Key [ 8]:74c6131afc8dce7e11b03b1ea8610c16
round 5:a5460fa8cedca48a14fd02209e01f02e
Key [ 9]:346cfc553c6cbc9713edb55f4dcbc96c
Key [10]:bddf027cb059d58f0509f8963e9bdec6
round 6:92b33f11eadcacc5a43dd05f13d334dd
Key [11]:8eb9e040c36c4c0b4a7fd3dd354d53c4
Key [12]:c6ffecdd5e135b20879b9dfa4b34bf51
round 7:fb0541aa5e5df1a61c51aef606eb5a41
Key [13]:bf12f5a6ba08dfc4fda4bdfc68c997d9
Key [14]:37c4656b9215f3c959ea688fb64ad327
round 8:f0bbd2b94ae374346730581fc77a9c98
Key [15]:e87bb0d86bf421ea4f779a8eee3a866c
Key [16]:faa471e934fd415ae4c0113ec7f0a5ad
Key [17]:95204a80b8400e49db7cf6fd2fd40d9a
Ka :b0376d0a9b338c2e133c32b69cb816b3
-----------------------------------------
rand :13ecad08ad63c37f8a54dc56e82f4dc1
address :9846c5ead4d9
round 1:9846c5ead4d99846c5ead4d99846c5ea
Key [ 1]:13ecad08ad63c37f8a54dc56e82f4dc7
Key [ 2]:ad04f127bed50b5e671d6510d392eaed
round 2:97374e18cdd0a6f7a5aa49d1ac875c84
Key [ 3]:57ad159e5774fa222f2f3039b9cd5101
Key [ 4]:9a1e9e1068fede02ef90496e25fd8e79
round 3:9dd3260373edd9d5f4e774826b88fd2d
added ->:0519ebe9a7c6719331d1485bf3cec2c7
Key [ 5]:378dce167db62920b0b392f7cfca316e
Key [ 6]:db4277795c87286faee6c9e9a6b71a93
Sample Data
round 4:40ec6563450299ac4e120d88672504d6
Key [ 7]:ec01aa2f5a8a793b36c1bb858d254380
Key [ 8]:2921a66cfa5bf74ac535424564830e98
round 5:57287bbb041bd6a56c2bd931ed410cd4
Key [ 9]:07018e45aab61b3c3726ee3d57dbd5f6
Key [10]:627381f0fa4c02b0c7d3e7dfbffc3333
round 6:66affa66a8dcd36e36bf6c3f1c6a276e
Key [11]:33b57c925bd5551999f716e138efbe79
Key [12]:a6dc7f9aa95bcc9243aebd12608f657a
round 7:450e65184fd8c72c578d5cdecb286743
Key [13]:a6a6db00fd8c72a28ea57ea542f6e102
Key [14]:dcf3377daeb2e24e61f0ad6620951c1f
round 8:e5eb180b519a4e673f21b7c4f4573f3d
Key [15]:621240b9506b462a7fa250da41844626
Key [16]:ae297810f01f43dc35756cd119ee73d6
Key [17]:b959835ec2501ad3894f8b8f1f4257f9
Ka :5b61e83ad04d23e9d1c698851fa30447
=========================================
rand :001de169248850245a5f7cc7f0d6d633
PIN :d5a51083a04a1971f18649ea8b79311a
round 1:001de169248850245a5f7cc7f0d6d623
Key [ 1]:d5a51083a04a1971f18649ea8b79311a
Key [ 2]:7317cdbff57f9b99f9810a2525b17cc7
round 2:5f05c143347b59acae3cb002db23830f
Key [ 3]:f08bd258adf1d4ae4a54d8ccb26220b2
Key [ 4]:91046cbb4ccc43db18d6dd36ca7313eb
round 3:c8f3e3300541a25b6ac5a80c3105f3c4
added ->:c810c45921c9f27f302424cbc1dbc9e7
Key [ 5]:67fb2336f4d9f069da58d11c82f6bd95
Key [ 6]:4fed702c75bd72c0d3d8f38707134c50
round 4:bd5e0c3a97fa55b91a3bbbf306ebb978
Key [ 7]:41c947f80cdc0464c50aa89070af314c
Key [ 8]:680eecfa8daf41c7109c9a5cb1f26d75
round 5:21c1a762c3cc33e75ce8976a73983087
Key [ 9]:6e33fbd94d00ff8f72e8a7a0d2cebc4c
Key [10]:f4d726054c6b948add99fabb5733ddc3
round 6:56d0df484345582f6b574a449ba155eb
Key [11]:4eda2425546a24cac790f49ef2453b53
Key [12]:cf2213624ed1510408a5a3e00b7333df
round 7:120cf9963fe9ff22993f7fdf9600d9b8
Key [13]:d04b1a25b0b8fec946d5ecfa626d04c9
Key [14]:01e5611b0f0e140bdb64585fd3ae5269
round 8:a6337400ad8cb47fefb91332f5cb2713
Key [15]:f15b2dc433f534f61bf718770a3698b1
Key [16]:f990d0273d8ea2b9e0b45917a781c720
Key [17]:f41b3cc13d4301297bb6bdfcb3e5a1dd
Ka :539e4f2732e5ae2de1e0401f0813bd0d
Sample Data
-----------------------------------------
rand :67ed56bfcf99825f0c6b349369da30ab
PIN :7885b515e84b1f082cc499976f1725ce
round 1:67ed56bfcf99825f0c6b349369da30bb
Key [ 1]:7885b515e84b1f082cc499976f1725ce
Key [ 2]:72445901fdaf506beb036f4412512248
round 2:6b160b66a1f6c26c1f3432f463ef5aa1
Key [ 3]:59f0e4982e97633e5e7fd133af8f2c5b
Key [ 4]:b4946ec77a41bf7c729d191e33d458ab
round 3:3f22046c964c3e5ca2a26ec9a76a9f67
added ->:580f5ad359e5c003ae0da25ace44cfdc
Key [ 5]:eb0b839f97bdf534183210678520bbef
Key [ 6]:cff0bc4a94e5c8b2a2d24d9f59031e19
round 4:87aa61fc0ff88e744c195249b9a33632
Key [ 7]:592430f14d8f93db95dd691af045776d
Key [ 8]:3b55b404222bf445a6a2ef5865247695
round 5:83dcf592a854226c4dcd94e1ecf1bc75
Key [ 9]:a9714b86319ef343a28b87456416bd52
Key [10]:e6598b24390b3a0bf2982747993b0d78
round 6:dee0d13a52e96bcf7c72045a21609fc6
Key [11]:62051d8c51973073bff959b032c6e1e2
Key [12]:29e94f4ab73296c453c833e217a1a85b
round 7:08488005761e6c7c4dbb203ae453fe3a
Key [13]:0e255970b3e2fc235f59fc5acb10e8ce
Key [14]:d0dfbb3361fee6d4ffe45babf1cd7abf
round 8:0d81e89bddde7a7065316c47574feb8f
Key [15]:c12eee4eb38b7a171f0f736003774b40
Key [16]:8f962523f1c0abd9a087a0dfb11643d3
Key [17]:24be1c66cf8b022f12f1fb4c60c93fd1
Ka :04435771e03a9daceb8bb1a493ee9bd8
-----------------------------------------
rand :40a94509238664f244ff8e3d13b119d3
PIN :1ce44839badde30396d03c4c36f23006
round 1:40a94509238664f244ff8e3d13b119c3
Key [ 1]:1ce44839badde30396d03c4c36f23006
Key [ 2]:6dd97a8f91d628be4b18157af1a9dcba
round 2:0eac5288057d9947a24eabc1744c4582
Key [ 3]:fef9583d5f55fd4107ad832a725db744
Key [ 4]:fc3893507016d7c1db2bd034a230a069
round 3:60b424f1082b0cc3bd61be7b4c0155f0
added ->:205d69f82bb17031f9604c465fb26e33
Key [ 5]:0834d04f3e7e1f7f85f0c1db685ab118
Key [ 6]:1852397f9a3723169058e9b62bb3682b
round 4:2c6b65a49d66af6566675afdd6fa7d7d
Key [ 7]:6c10da21d762ae4ac1ba22a96d9007b4
Key [ 8]:9aa23658b90470a78d686344b8a9b0e7
round 5:a2c537899665113a42f1ac24773bdc31
Key [ 9]:137dee3bf879fe7bd02fe6d888e84f16
Key [10]:466e315a1863f47d0f93bc6827cf3450
round 6:e26982980d79b21ed3e20f8c3e71ba96
Key [11]:0b33cf831465bb5c979e6224d7f79f7c
Key [12]:92770660268ede827810d707a0977d73
Sample Data
round 7:e7b063c4e2e3110b89b7e1631c762dd5
Key [13]:7be30ae4961cf24ca17625a77bb7a9f8
Key [14]:be65574a33ae30e6e82dbd2826d3cc1a
round 8:7a963e37b2c2e76b489cfe40a2cf00e5
Key [15]:ed0ba7dd30d60a5e69225f0a33011e5b
Key [16]:765c990f4445e52b39e6ed6105ad1c4f
Key [17]:52627bf9f35d94f30d5b07ef15901adc
Ka :9cde4b60f9b5861ed9df80858bac6f7f
=========================================
rand :24b101fd56117d42c0545a4247357048
PIN length =16 octets
PIN :fd397c7f5c1f937cdf82d8816cc377e2
round 1:24b101fd56117d42c0545a4247357058
Key [ 1]:fd397c7f5c1f937cdf82d8816cc377e2
Key [ 2]:0f7aac9c9b53f308d9fdbf2c78e3c30e
round 2:838edfe1226266953ccba8379d873107
Key [ 3]:0b8ac18d4bb44fad2efa115e43945abc
Key [ 4]:887b16b062a83bfa469772c25b456312
round 3:8cd0c9283120aba89a7f9d635dd4fe3f
added ->:a881cad5673128ea5ad3f7211a096e67
Key [ 5]:2248cbe6d299e9d3e8fd35a91178f65b
Key [ 6]:b92af6237385bd31f8fb57fb1bdd824e
round 4:2648d9c618a622b10ef80c4dbaf68b99
Key [ 7]:2bf5ffe84a37878ede2d4c30be60203b
Key [ 8]:c9cb6cec60cb8a8f29b99fcf3e71e40f
round 5:b5a7d9e96f68b14ccebf361de3914d0f
Key [ 9]:5c2f8a702e4a45575b103b0cce8a91c6
Key [10]:d453db0c9f9ddbd11e355d9a34d9b11b
round 6:632a091e7eefe1336857ddafd1ff3265
Key [11]:32805db7e59c5ed4acabf38d27e3fece
Key [12]:fde3a8eedfa3a12be09c1a8a00890fd7
round 7:048531e9fd3efa95910540150f8b137b
Key [13]:def07eb23f3a378f059039a2124bc4c2
Key [14]:2608c58f23d84a09b9ce95e5caac1ab4
round 8:461814ec7439d412d0732f0a6f799a6a
Key [15]:0a7ed16481a623e56ee1442ffa74f334
Key [16]:12add59aca0d19532f1516979954e369
Key [17]:dd43d02d39ffd6a386a4b98b4ac6eb23
Ka :a5f2adf328e4e6a2b42f19c8b74ba884
-----------------------------------------
rand :321964061ac49a436f9fb9824ac63f8b
PIN length =15 octets
PIN :ad955d58b6b8857820ac1262d617a6
address :0314c0642543
round 1:321964061ac49a436f9fb9824ac63f9b
Sample Data
Key [ 1]:ad955d58b6b8857820ac1262d617a603
Key [ 2]:f281736f68e3d30b2ac7c67f125dc416
round 2:7c4a4ece1398681f4bafd309328b7770
Key [ 3]:43c157f4c8b360387c32ab330f9c9aa8
Key [ 4]:3a3049945a298f6d076c19219c47c3cb
round 3:9672b00738bdfaf9bd92a855bc6f3afb
added ->:a48b1401228194bad23161d7f6357960
Key [ 5]:c8e2eaa6d73b7de18f3228ab2173bc69
Key [ 6]:8623f44488222e66a293677cf30bf2bb
round 4:9b30247aad3bf133712d034b46d21c68
Key [ 7]:f3e500902fba31db9bae50ef30e484a4
Key [ 8]:49d4b1137c18f4752dd9955a5a8d2f43
round 5:4492c25fda08083a768b4b5588966b23
Key [ 9]:9d59c451989e74785cc097eda7e42ab8
Key [10]:251de25f3917dcd99c18646107a641fb
round 6:21ae346635714d2623041f269978c0ee
Key [11]:80b8f78cb1a49ec0c3e32a238e60fddf
Key [12]:beb84f4d20a501e4a24ecfbde481902b
round 7:9b56a3d0f8932f20c6a77a229514fb00
Key [13]:852571b44f35fd9d9336d3c1d2506656
Key [14]:d0a0d510fb06ba76e69b8ee3ebc1b725
round 8:6cd8492b2fd31a86978bcdf644eb08a8
Key [15]:c7ffd523f32a874ed4a93430a25976de
Key [16]:16cdcb25e62964876d951fdcc07030d3
Key [17]:def32c0e12596f9582e5e3c52b303f52
Ka :c0ec1a5694e2b48d54297911e6c98b8f
-----------------------------------------
rand :d4ae20c80094547d7051931b5cc2a8d6
PIN length =14 octets
PIN :e1232e2c5f3b833b3309088a87b6
address :fabecc58e609
round 1:d4ae20c80094547d7051931b5cc2a8c6
Key [ 1]:e1232e2c5f3b833b3309088a87b6fabe
Key [ 2]:5f0812b47cd3e9a30d7707050fffa1f2
round 2:1f45f16be89794bef33e4547c9c0916a
Key [ 3]:77b681944763244ffa3cd71b248b79b5
Key [ 4]:e2814e90e04f485958ce58c9133e2be6
round 3:b10d2f4ac941035263cee3552d774d2f
added ->:65bb4f82c9d5572f131f764e7139f5e9
Key [ 5]:520acad20801dc639a2c6d66d9b79576
Key [ 6]:c72255cdb61d42be72bd45390dd25ba5
round 4:ead4dc34207b6ea721c62166e155aaad
Key [ 7]:ebf04c02075bf459ec9c3ec06627d347
Key [ 8]:a1363dd2812ee800a4491c0c74074493
round 5:f507944f3018e20586d81d7f326aae9d
Key [ 9]:b0b6ba79493dc833d7f425be7b8dadb6
Key [10]:08cd23e536b9b9b53e85eb004cba3111
round 6:fff450f4302a2b3571e8405e148346da
Key [11]:fec22374c6937dcd26171f4d2edfada3
Key [12]:0f1a8ef5979c69ff44f620c2e007b6e4
round 7:de558779589897f3402a90ee78c3f921
Key [13]:901fb66f0779d6aad0c0fba1fe812cb5
Sample Data
Key [14]:a0cab3cd15cd23603adc8d4474efb239
round 8:b2df0aa0c9f07fbbaa02f510a29cf540
Key [15]:18edc3f4296dd6f1dea13f7c143117a1
Key [16]:8d3d52d700a379d72ded81687f7546c7
Key [17]:5927badfe602f29345f840bb53e1dea6
Ka :d7b39be13e3692c65b4a9e17a9c55e17
-----------------------------------------
rand :272b73a2e40db52a6a61c6520549794a
PIN length =13 octets
PIN :549f2694f353f5145772d8ae1e
address :20487681eb9f
round 1:272b73a2e40db52a6a61c6520549795a
Key [ 1]:549f2694f353f5145772d8ae1e204876
Key [ 2]:42c855593d66b0c458fd28b95b6a5fbf
round 2:d7276dc8073f7677c31f855bde9501e2
Key [ 3]:75d0a69ae49a2da92e457d767879df52
Key [ 4]:b3aa7e7492971afaa0fb2b64827110df
round 3:71aae503831133d19bc452da4d0e409b
added ->:56d558a1671ee8fbf12518884857b9c1
Key [ 5]:9c8cf1604a98e9a503c342e272de5cf6
Key [ 6]:d35bc2df6b85540a27642106471057d9
round 4:f41a709c89ea80481aa3d2b9b2a9f8ca
Key [ 7]:b454dda74aeb4eff227ba48a58077599
Key [ 8]:bcba6aec050116aa9b7c6a9b7314d796
round 5:20fdda20f4a26b1bd38eb7f355a7be87
Key [ 9]:d41f8a9de0a716eb7167a1b6e321c528
Key [10]:5353449982247782d168ab43f17bc4d8
round 6:a70e316997eeed49a5a9ef9ba5e913b5
Key [11]:32cbc9cf1a81e36a45153972347ce4ac
Key [12]:5747619006cf4ef834c749f2c4b9feb6
round 7:e66f2317a825f589f76b47b6aa6e73fb
Key [13]:f9b68beba0a09d2a570a7dc88cc3c3c2
Key [14]:55718f9a4f0b1f9484e8c6b186a41a4b
round 8:5f68f940440a9798e074776019804ada
Key [15]:4ecc29be1b4d78433f6aa30db974a7fb
Key [16]:8470a066ffb00cda7b08059599f919f5
Key [17]:f39a36d74e960a051e1ca98b777848f4
Ka :9ac64309a37c25c3b4a584fc002a1618
-----------------------------------------
rand :7edb65f01a2f45a2bc9b24fb3390667e
PIN length =12 octets
PIN :2e5a42797958557b23447ca8
address :04f0d2737f02
round 1:7edb65f01a2f45a2bc9b24fb3390666e
Key [ 1]:2e5a42797958557b23447ca804f0d273
Key [ 2]:18a97c856561eb23e71af8e9e1be4799
round 2:3436e12db8ffdc1265cb5a86da2fed0b
Key [ 3]:7c0908dcbc73201e17c4f7aa1ab8aec8
Key [ 4]:7cb58833602fbe4194c7cc797ce8c454
round 3:caed6af4226f67e4ad1914620803ef2a
added ->:b4c8cf04389eac4611b438993b935544
Key [ 5]:f4dce7d607b5234562d0ebb2267b08b8
Sample Data
Key [ 6]:560b75c5545751fd8fa99fa4346e654b
round 4:ee67c87d6f74bb75db98f68bff0192c1
Key [ 7]:32f10cefd8d3e6424c6f91f1437808af
Key [ 8]:a934a46045be30fb3be3a5f3f7b18837
round 5:792398dcbeb8d10bdb07ae3c819e943c
Key [ 9]:a0f12e97c677a0e8ac415cd2c8a7ca88
Key [10]:e27014c908785f5ca03e8c6a1da3bf13
round 6:e778b6e0c3e8e7edf90861c7916d97a8
Key [11]:1b4a4303bcc0b2e0f41c72d47654bd9f
Key [12]:4b1302a50046026d6c9054fc8387965a
round 7:1fafddc7efa5f04c1dec1869d3f2d9bb
Key [13]:58c334bb543d49eca562cdbe0280e0fc
Key [14]:bdb60d383c692d06476b76646c8dec48
round 8:3d7c326d074bd6aa222ea050f04a3c7f
Key [15]:78c0162506be0b5953e8403c01028f93
Key [16]:24d7dbbe834dbd7b67f57fcf0d39d60f
Key [17]:2e74f1f3331c0f6585e87b2f715e187e
Ka :d3af4c81e3f482f062999dee7882a73b
-----------------------------------------
rand :26a92358294dce97b1d79ec32a67e81a
PIN length =11 octets
PIN :05fbad03f52fa9324f7732
address :b9ac071f9d70
round 1:26a92358294dce97b1d79ec32a67e80a
Key [ 1]:05fbad03f52fa9324f7732b9ac071f9d
Key [ 2]:2504c9691c04a18480c8802e922098c0
round 2:0be20e3d76888e57b6bf77f97a8714fb
Key [ 3]:576b2791d1212bea8408212f2d43e77e
Key [ 4]:90ae36dcce8724adb618f912d1b27297
round 3:1969667060764453257d906b7e58bd5b
added ->:3f12892849c312c494542ea854bfa551
Key [ 5]:bc492c42c9e87f56ec31af5474e9226e
Key [ 6]:c135d1dbed32d9519acfb4169f3e1a10
round 4:ac404205118fe771e54aa6f392da1153
Key [ 7]:83ccbdbbaf17889b7d18254dc9252fa1
Key [ 8]:80b90a1767d3f2848080802764e21711
round 5:41795e89ae9a0cf776ffece76f47fd7a
Key [ 9]:cc24e4a86e8eed129118fd3d5223a1dc
Key [10]:7b1e9c0eb9dab083574be7b7015a62c9
round 6:29ca9e2f87ca00370ef1633505bfba4b
Key [11]:888e6d88cf4beb965cf7d4f32b696baa
Key [12]:6d642f3e5510b0b043a44daa2cf5eec0
round 7:81fc891c3c6fd99acc00028a387e2366
Key [13]:e224f85da2ab63a23e2a3a036e421358
Key [14]:c8dc22aaa739e2cb85d6a0c08226c7d0
round 8:e30b537e7a000e3d2424a9c0f04c4042
Key [15]:a969aa818c6b324bae391bedcdd9d335
Key [16]:6974b6f2f07e4c55f2cc0435c45bebd1
Key [17]:134b925ebd98e6b93c14aee582062fcb
Ka :be87b44d079d45a08a71d15208c5cb50
-----------------------------------------
rand :0edef05327eab5262430f21fc91ce682
Sample Data
Sample Data
Key [11]:82ba4ddef833f6a4d18b07aa011f2798
Key [12]:ce63d98794682054e73d0359dad35ec4
round 7:5eded2668f5916dfd036c09e87902886
Key [13]:da794357652e80c70ad8b0715dbe33d6
Key [14]:732ef2c0c3220b31f3820c375e27bb29
round 8:88a5291b4acbba009a85b7dd6a834b3b
Key [15]:3ce75a61d4b465b70c95d7ccd5799633
Key [16]:5df9bd2c3a17a840cdaafb76c171db7c
Key [17]:3f8364b089733d902bccb0cd3386846f
Ka :cdb0cc68f6f6fbd70b46652de3ef3ffb
-----------------------------------------
rand :3ab52a65bb3b24a08eb6cd284b4b9d4b
PIN length = 8 octets
PIN :d0fb9b6838d464d8
address :25a868db91ab
round 1:3ab52a65bb3b24a08eb6cd284b4b9d45
Key [ 1]:d0fb9b6838d464d825a868db91abd0fb
Key [ 2]:2573f47b49dad6330a7a9155b7ae8ba1
round 2:ad2ffdff408fcfab44941016a9199251
Key [ 3]:d2c5b8fb80cba13712905a589adaee71
Key [ 4]:5a3381511b338719fae242758dea0997
round 3:2ddc17e570d7931a2b1d13f6ace928a5
added ->:17914180cb12b7baa5d3e0dee734c5e0
Key [ 5]:e0a4d8ac27fbe2783b7bcb3a36a6224d
Key [ 6]:949324c6864deac3eca8e324853e11c3
round 4:62c1db5cf31590d331ec40ad692e8df5
Key [ 7]:6e67148088a01c2d4491957cc9ddc4aa
Key [ 8]:557431deab7087bb4c03fa27228f60c6
round 5:9c8933bc361f4bde4d1bda2b5f8bb235
Key [ 9]:a2551aca53329e70ade3fd2bb7664697
Key [10]:05d0ad35de68a364b54b56e2138738fe
round 6:9156db34136aa06655bf28a05be0596a
Key [11]:1616a6b13ce2f2895c722e8495181520
Key [12]:b12e78a1114847b01f6ed2f5a1429a23
round 7:84dcc292ed836c1c2d523f2a899a2ad5
Key [13]:316e144364686381944e95afd8a026bb
Key [14]:1ab551b88d39d97ea7a9fe136dbfe2e1
round 8:87bdcac878d777877f4eccf042cfee5e
Key [15]:70e21ab08c23c7544524b64492b25cc9
Key [16]:35f730f2ae2b950a49a1bf5c8b9f8866
Key [17]:2f16924c22db8b74e2eadf1ba4ebd37c
Ka :983218718ca9aa97892e312d86dd9516
-----------------------------------------
rand :a6dc447ff08d4b366ff96e6cf207e179
PIN length = 7 octets
PIN :9c57e10b4766cc
address :54ebd9328cb6
round 1:a6dc447ff08d4b366ff96e6cf207e174
Key [ 1]:9c57e10b4766cc54ebd9328cb69c57e1
Key [ 2]:00a609f4d61db26993c8177e3ee2bba8
round 2:1ed26b96a306d7014f4e5c9ee523b73d
Key [ 3]:646d7b5f9aaa528384bda3953b542764
Sample Data
Key [ 4]:a051a42212c0e9ad5c2c248259aca14e
round 3:a53f526db18e3d7d53edbfc9711041ed
added ->:031b9612411b884b3ce62da583172299
Key [ 5]:d1bd5e64930e7f838d8a33994462d8b2
Key [ 6]:5dc7e2291e32435665ebd6956bec3414
round 4:9438be308ec83f35c560e2796f4e0559
Key [ 7]:10552f45af63b0f15e2919ab37f64fe7
Key [ 8]:c44d5717c114a58b09207392ebe341f8
round 5:b79a7b14386066d339f799c40479cb3d
Key [ 9]:6886e47b782325568eaf59715a75d8ff
Key [10]:8e1e335e659cd36b132689f78c147bda
round 6:ef232462228aa166438d10c34e17424b
Key [11]:8843efeedd5c2b7c3304d647f932f4d1
Key [12]:13785aaedd0adf67abb4f01872392785
round 7:02d133fe40d15f1073673b36bba35abd
Key [13]:837d7ca2722419e6be3fae35900c3958
Key [14]:93f8442973e7fccf2e7232d1d057c73a
round 8:275506a3d08c84e94cc58ed60054505e
Key [15]:8a7a9edffa3c52918bc6a45f57d91f5d
Key [16]:f214a95d777f763c56109882c4b52c84
Key [17]:10e2ee92c5ea1ddc5eb010e55510c403
Ka :9cd6650ead86323e87cafb1ff516d1e0
-----------------------------------------
rand :3348470a7ea6cc6eb81b40472133262c
PIN length = 6 octets
PIN :fcad169d7295
address :430d572f8842
round 1:3348470a7ea6cc6eb81b404721332620
Key [ 1]:fcad169d7295430d572f8842fcad169d
Key [ 2]:b3479d4d4fd178c43e7bc5b0c7d8983c
round 2:af976da9225066d563e10ab955e6fc32
Key [ 3]:7112462b37d82dd81a2a35d9eb43cb7c
Key [ 4]:c5a7030f8497945ac7b84600d1d161fb
round 3:d08f826ebd55a0bd7591c19a89ed9bde
added ->:e3d7c964c3fb6cd3cdac01dda820c1fe
Key [ 5]:84b0c6ef4a63e4dff19b1f546d683df5
Key [ 6]:f4023edfc95d1e79ed4bb4de9b174f5d
round 4:6cd952785630dfc7cf81eea625e42c5c
Key [ 7]:ea38dd9a093ac9355918632c90c79993
Key [ 8]:dbba01e278ddc76380727f5d7135a7de
round 5:93573b2971515495978264b88f330f7f
Key [ 9]:d4dc3a31be34e412210fafa6eca00776
Key [10]:39d1e190ee92b0ff16d92a8be58d2fa0
round 6:b3f01d5e7fe1ce6da7b46d8c389baf47
Key [11]:1eb081328d4bcf94c9117b12c5cf22ac
Key [12]:7e047c2c552f9f1414d946775fabfe30
round 7:0b833bff6106d5bae033b4ce5af5a924
Key [13]:e78e685d9b2a7e29e7f2a19d1bc38ebd
Key [14]:1b582272a3121718c4096d2d8602f215
round 8:23de0bbdc70850a7803f4f10c63b2c0f
Key [15]:8569e860530d9c3d48a0870dac33f676
Key [16]:6966b528fdd1dc222527052c8f6cf5a6
Sample Data
Key [17]:a34244c757154c53171c663b0b56d5c2
Ka :98f1543ab4d87bd5ef5296fb5e3d3a21
-----------------------------------------
rand :0f5bb150b4371ae4e5785293d22b7b0c
PIN length = 5 octets
PIN :b10d068bca
address :b44775199f29
round 1:0f5bb150b4371ae4e5785293d22b7b07
Key [ 1]:b10d068bcab44775199f29b10d068bca
Key [ 2]:aec70d1048f1bbd2c18040318a8402ad
round 2:342d2b79d7fb7cd110379742b9842c79
Key [ 3]:6d8d5cf338f29ef4420639ef488e4fa9
Key [ 4]:a1584117541b759ba6d9f7eb2bedcbba
round 3:9407e8e3e810603921bf81cfda62770a
added ->:9b6299b35c477addc437d35c088df20d
Key [ 5]:09a20676666aeed6f22176274eb433f4
Key [ 6]:840472c001add5811a054be5f5c74754
round 4:9a3ba953225a7862c0a842ed3d0b2679
Key [ 7]:fad9e45c8bf70a972fcd9bff0e8751f5
Key [ 8]:e8f30ff666dfd212263416496ff3b2c2
round 5:2c573b6480852e875df34b28a5c44509
Key [ 9]:964cdba0cf8d593f2fc40f96daf8267a
Key [10]:bcd65c11b13e1a70bcd4aafba8864fe3
round 6:21b0cc49e880c5811d24dee0194e6e9e
Key [11]:468c8548ea9653c1a10df6288dd03c1d
Key [12]:5d252d17af4b09d3f4b5f7b5677b8211
round 7:e6d6bdcd63e1d37d9883543ba86392fd
Key [13]:e814bf307c767428c67793dda2df95c7
Key [14]:4812b979fdc20f0ff0996f61673a42cc
round 8:e3dde7ce6bd7d8a34599aa04d6a760ab
Key [15]:5b1e2033d1cd549fc4b028146eb5b3b7
Key [16]:0f284c14fb8fe706a5343e3aa35af7b1
Key [17]:b1f7a4b7456d6b577fded6dc7a672e37
Ka :c55070b72bc982adb972ed05d1a74ddb
-----------------------------------------
rand :148662a4baa73cfadb55489159e476e1
PIN length = 4 octets
PIN :fb20f177
address :a683bd0b1896
round 1:148662a4baa73cfadb55489159e476eb
Key [ 1]:fb20f177a683bd0b1896fb20f177a683
Key [ 2]:47266cefbfa468ca7916b458155dc825
round 2:3a942eb6271c3f4e433838a5d3fcbd27
Key [ 3]:688853a6d6575eb2f6a2724b0fbc133b
Key [ 4]:7810df048019634083a2d9219d0b5fe0
round 3:9c835b98a063701c0887943596780769
added ->:8809bd3c1a0aace6d3dcdca4cf5c7d82
Key [ 5]:c78f6dcf56da1bbd413828b33f5865b3
Key [ 6]:eb3f3d407d160df3d293a76d1a513c4a
round 4:7e68c4bafa020a4a59b5a1968105bab5
Key [ 7]:d330e038d6b19d5c9bb0d7285a360064
Key [ 8]:9bd3ee50347c00753d165faced702d9c
Sample Data
round 5:227bad0cf0838bdb15b3b3872c24f592
Key [ 9]:9543ad0fb3fe74f83e0e2281c6d4f5f0
Key [10]:746cd0383c17e0e80e6d095a87fd0290
round 6:e026e98c71121a0cb739ef6f59e14d26
Key [11]:fa28bea4b1c417536608f11f406ea1dd
Key [12]:3aee0f4d21699df9cb8caf5354a780ff
round 7:cd6a6d8137d55140046f8991da1fa40a
Key [13]:372b71bc6d1aa6e785358044fbcf05f4
Key [14]:00a01501224c0405de00aa2ce7b6ab04
round 8:52cd7257fe8d0c782c259bcb6c9f5942
Key [15]:c7015c5c1d7c030e00897f104a006d4a
Key [16]:260a9577790c62e074e71e19fd2894df
Key [17]:c041b7a231493acd15ddcdaee94b9f52
Ka :7ec864df2f1637c7e81f2319ae8f4671
-----------------------------------------
rand :193a1b84376c88882c8d3b4ee93ba8d5
PIN length = 3 octets
PIN :a123b9
address :4459a44610f6
round 1:193a1b84376c88882c8d3b4ee93ba8dc
Key [ 1]:a123b94459a44610f6a123b94459a446
Key [ 2]:5f64d384c8e990c1d25080eb244dde9b
round 2:3badbd58f100831d781ddd3ccedefd3f
Key [ 3]:5abc00eff8991575c00807c48f6dbea5
Key [ 4]:127521158ad6798fb6479d1d2268abe6
round 3:0b53075a49c6bf2df2421c655fdedf68
added ->:128d22de7e3247a5decf572bb61987b4
Key [ 5]:f2a1f620448b8e56665608df2ab3952f
Key [ 6]:7c84c0af02aad91dc39209c4edd220b1
round 4:793f4484fb592e7a78756fd4662f990d
Key [ 7]:f6445b647317e7e493bb92bf6655342f
Key [ 8]:3cae503567c63d3595eb140ce60a84c0
round 5:9e46a8df925916a342f299a8306220a0
Key [ 9]:734ed5a806e072bbecb4254993871679
Key [10]:cda69ccb4b07f65e3c8547c11c0647b8
round 6:6bf9cd82c9e1be13fc58eae0b936c75a
Key [11]:c48e531d3175c2bd26fa25cc8990e394
Key [12]:6d93d349a6c6e9ff5b26149565b13d15
round 7:e96a9871471240f198811d4b8311e9a6
Key [13]:5c4951e85875d663526092cd4cbdb667
Key [14]:f19f7758f5cde86c3791efaf563b3fd0
round 8:e94ca67d3721d5fb08ec069191801a46
Key [15]:bf0c17f3299b37d984ac938b769dd394
Key [16]:7edf4ad772a6b9048588f97be25bde1c
Key [17]:6ee7ba6afefc5b561abbd8d6829e8150
Ka :ac0daabf17732f632e34ef193658bf5d
-----------------------------------------
rand :1453db4d057654e8eb62d7d62ec3608c
PIN length = 2 octets
PIN :3eaf
address :411fbbb51d1e
round 1:1453db4d057654e8eb62d7d62ec36084
Sample Data
Key [ 1]:3eaf411fbbb51d1e3eaf411fbbb51d1e
Key [ 2]:c3a1a997509f00fb4241aba607109c64
round 2:0b78276c1ebc65707d38c9c5fa1372bd
Key [ 3]:3c729833ae1ce7f84861e4dbad6305cc
Key [ 4]:c83a43c3a66595cb8136560ed29be4ff
round 3:23f3f0f6441563d4c202cee0e5cb2335
added ->:3746cbbb418bb73c2964a536cb8e83b1
Key [ 5]:18b26300b86b70acdd1c8f5cbc7c5da8
Key [ 6]:04efc75309b98cd8f1cef5513c18e41e
round 4:c61afa90d3c14bdf588320e857afdc00
Key [ 7]:517c789cecadc455751af73198749fb8
Key [ 8]:fd9711f913b5c844900fa79dd765d0e2
round 5:a8a0e02ceb556af8bfa321789801183a
Key [ 9]:bb5cf30e7d3ceb930651b1d16ee92750
Key [10]:3d97c7862ecab42720e984972f8efd28
round 6:0b58e922438d224db34b68fca9a5ea12
Key [11]:4ce730344f6b09e449dcdb64cd466666
Key [12]:38828c3a56f922186adcd9b713cdcc31
round 7:b90664c4ac29a8b4bb26debec9ffc5f2
Key [13]:d30fd865ea3e9edcff86a33a2c319649
Key [14]:1fdb63e54413acd968195ab6fa424e83
round 8:6934de3067817cefd811abc5736c163b
Key [15]:a16b7c655bbaa262c807cba8ae166971
Key [16]:7903dd68630105266049e23ca607cda7
Key [17]:888446f2d95e6c2d2803e6f4e815ddc9
Ka :1674f9dc2063cc2b83d3ef8ba692ebef
-----------------------------------------
rand :1313f7115a9db842fcedc4b10088b48d
PIN length = 1 octets
PIN :6d
address :008aa9be62d5
round 1:1313f7115a9db842fcedc4b10088b48a
Key [ 1]:6d008aa9be62d56d008aa9be62d56d00
Key [ 2]:46ebfeafb6657b0a1984a8dc0893accf
round 2:839b23b83b5701ab095bafd162ec0ac7
Key [ 3]:8e15595edcf058af62498ee3c1dc6098
Key [ 4]:dd409c3444e94b9cc08396ae967542a0
round 3:c0a2010cc44f2139427f093f4f97ae68
added ->:d3b5f81d9eecd97bbe6ccd8e4f1f62e2
Key [ 5]:487deff5d519f6a6481e947b926f633c
Key [ 6]:5b4b6e3477ed5c2c01f6e607d3418963
round 4:1a5517a0efad3575931d8ea3bee8bd07
Key [ 7]:34b980088d2b5fd6b6a2aceeda99c9c4
Key [ 8]:e7d06d06078acc4ecdbc8da800b73078
round 5:d3ce1fdfe716d72c1075ff37a8a2093f
Key [ 9]:7d375bad245c3b757380021af8ecd408
Key [10]:14dac4bc2f4dc4929a6cceec47f4c3a3
round 6:47e90cb55be6e8dd0f583623c2f2257b
Key [11]:66cfda3c63e464b05e2e7e25f8743ad7
Key [12]:77cfccda1ad380b9fdf1df10846b50e7
round 7:f866ae6624f7abd4a4f5bd24b04b6d43
Key [13]:3e11dd84c031a470a8b66ec6214e44cf
Sample Data
Key [14]:2f03549bdb3c511eea70b65ddbb08253
round 8:02e8e17cf8be4837c9c40706b613dfa8
Key [15]:e2f331229ddfcc6e7bea08b01ab7e70c
Key [16]:b6b0c3738c5365bc77331b98b3fba2ab
Key [17]:f5b3973b636119e577c5c15c87bcfd19
Ka :38ec0258134ec3f08461ae5c328968a1
=========================================
Sample Data
Key [ 8]:aa0dd8cc68b406533d0f1d64aabacf20
round 5:18768c7964818805fe4c6ecae8a38599
Key [ 9]:669291b0752e63f806fce76f10e119c8
Key [10]:ef8bdd46be8ee0277e9b78adef1ec154
round 6:82f9aa127a72632af43d1a17e7bd3a09
Key [11]:f3902eb06dc409cfd78384624964bf51
Key [12]:7d72702b21f97984a721c99b0498239d
round 7:1543d7870bf2d6d6efab3cbf62dca97d
Key [13]:532e60bceaf902c52a06c2c283ecfa32
Key [14]:181715e5192efb2a64129668cf5d9dd4
round 8:eee3e8744a5f8896de95831ed837ffd5
Key [15]:83017c1434342d4290e961578790f451
Key [16]:2603532f365604646ff65803795ccce5
Key [17]:882f7c907b565ea58dae1c928a0dcf41
kc :cc802aecc7312285912e90af6a1e1154
-----------------------------------------
rand :950e604e655ea3800fe3eb4a28918087
aco :68f4f472b5586ac5850f5f74
key :34e86915d20c485090a6977931f96df5
round 1:950e604e655ea3800fe3eb4a28918087
Key [ 1]:34e86915d20c485090a6977931f96df5
Key [ 2]:8de2595003f9928efaf37e5229935bdb
round 2:d46f5a04c967f55840f83d1cdb5f9afc
Key [ 3]:46f05ec979a97cb6ddf842ecc159c04a
Key [ 4]:b468f0190a0a83783521deae8178d071
round 3:e16edede9cb6297f32e1203e442ac73a
Key [ 5]:8a171624dedbd552356094daaadcf12a
Key [ 6]:3085e07c85e4b99313f6e0c837b5f819
round 4:805144e55e1ece96683d23366fc7d24b
Key [ 7]:fe45c27845169a66b679b2097d147715
Key [ 8]:44e2f0c35f64514e8bec66c5dc24b3ad
round 5:edbaf77af070bd22e9304398471042f1
Key [ 9]:0d534968f3803b6af447eaf964007e7b
Key [10]:f5499a32504d739ed0b3c547e84157ba
round 6:0dab1a4c846aef0b65b1498812a73b50
Key [11]:e17e8e456361c46298e6592a6311f3fb
Key [12]:ec6d14da05d60e8abac807646931711f
round 7:1e7793cac7f55a8ab48bd33bc9c649e0
Key [13]:2b53dde3d89e325e5ff808ed505706ae
Key [14]:41034e5c3fb0c0d4f445f0cf23be79b0
round 8:3723768baa78b6a23ade095d995404da
Key [15]:e2ca373d405a7abf22b494f28a6fd247
Key [16]:74e09c9068c0e8f1c6902d1b70537c30
Key [17]:767a7f1acf75c3585a55dd4a428b2119
round 1:39809afb773efd1b7510cd4cb7c49f34
Key [ 1]:1d0d48d485abddd3798b483a82a0f878
Key [ 2]:aed957e600a5aed5217984dd5fef6fd8
round 2:6436ddbabe92655c87a7d0c12ae5e5f6
Key [ 3]:fee00bb0de89b6ef0a289696a4faa884
Key [ 4]:33ce2f4411db4dd9b7c42cc586b8a2ba
round 3:cec690f7e0aa5f063062301e049a5cc5
added ->:f7462a0c97e85c1d4572fd52b35efbf1
Sample Data
Key [ 5]:b5116f5c6c29e05e4acb4d02a46a3318
Key [ 6]:ff4fa1f0f73d1a3c67bc2298abc768f9
round 4:dcdfe942e9f0163fc24a4718844b417d
Key [ 7]:5453650c0819e001e48331ad0e9076e0
Key [ 8]:b4ff8dda778e26c0dce08349b81c09a1
round 5:265a16b2f766afae396e7a98c189fda9
Key [ 9]:f638fa294427c6ed94300fd823b31d10
Key [10]:1ccfa0bd86a9879b17d4bc457e3e03d6
round 6:628576b5291d53d1eb8611c8624e863e
Key [11]:0eaee2ef4602ac9ca19e49d74a76d335
Key [12]:6e1062f10a16e0d378476da3943842e9
round 7:d7b9c2e9b2d5ea5c27019324cae882b3
Key [13]:40be960bd22c744c5b23024688e554b9
Key [14]:95c9902cb3c230b44d14ba909730d211
round 8:97fb6065498385e47eb3df6e2ca439dd
Key [15]:10d4b6e1d1d6798aa00aa2951e32d58d
Key [16]:c5d4b91444b83ee578004ab8876ba605
Key [17]:1663a4f98e2862eddd3ec2fb03dcc8a4
kc :c1beafea6e747e304cf0bd7734b0a9e2
-----------------------------------------
rand :6a8ebcf5e6e471505be68d5eb8a3200c
aco :658d791a9554b77c0b2f7b9f
key :35cf77b333c294671d426fa79993a133
round 1:6a8ebcf5e6e471505be68d5eb8a3200c
Key [ 1]:35cf77b333c294671d426fa79993a133
Key [ 2]:c4524e53b95b4bf2d7b2f095f63545fd
round 2:ade94ec585db0d27e17474b58192c87a
Key [ 3]:c99776768c6e9f9dd3835c52cea8d18a
Key [ 4]:f1295db23823ba2792f21217fc01d23f
round 3:da8dc1a10241ef9e6e069267cd2c6825
Key [ 5]:9083db95a6955235bbfad8aeefec5f0b
Key [ 6]:8bab6bc253d0d0c7e0107feab728ff68
round 4:e6665ca0772ceecbc21222ff7be074f8
Key [ 7]:2fa1f4e7a4cf3ccd876ec30d194cf196
Key [ 8]:267364be247184d5337586a19df8bf84
round 5:a857a9326c9ae908f53fee511c5f4242
Key [ 9]:9aef21965b1a6fa83948d107026134c7
Key [10]:d2080c751def5dc0d8ea353cebf7b973
round 6:6678748a1b5f21ac05cf1b117a7c342f
Key [11]:d709a8ab70b0d5a2516900421024b81e
Key [12]:493e4843805f1058d605c8d1025f8a56
round 7:766c66fe9c460bb2ae39ec01e435f725
Key [13]:b1ed21b71daea03f49fe74b2c11fc02b
Key [14]:0e1ded7ebf23c72324a0165a698c65c7
round 8:396e0ff7b2b9b7a3b35c9810882c7596
Key [15]:b3bf4841dc92f440fde5f024f9ce8be9
Key [16]:1c69bc6c2994f4c84f72be8f6b188963
Key [17]:bb7b66286dd679a471e2792270f3bb4d
round 1:45654f2f26549675287200f07cb10ec9
Key [ 1]:1e2a5672e66529e4f427b0682a3a34b6
Key [ 2]:974944f1ce0037b1febcf61a2bc961a2
round 2:990cd869c534e76ed4f4af7b3bfbc6c8
Sample Data
Key [ 3]:8147631fb1ce95d624b480fc7389f6c4
Key [ 4]:6e90a2db33d284aa13135f3c032aa4f4
round 3:ceb662f875aa6b94e8192b5989abf975
added ->:8b1bb1d753fe01e1c08b2ba9f55c07bc
Key [ 5]:cbad246d24e36741c46401e6387a05f9
Key [ 6]:dcf52aaec5713110345a41342c566fc8
round 4:d4e000be5de78c0f56ff218f3c1df61b
Key [ 7]:8197537aa9d27e67d17c16b182c8ec65
Key [ 8]:d66e00e73d835927a307a3ed79d035d8
round 5:9a4603bdef954cfaade2052604bed4e4
Key [ 9]:71d46257ecc1022bcd312ce6c114d75c
Key [10]:f91212fa528379651fbd2c32890c5e5f
round 6:09a0fd197ab81eb933eece2fe0132dbb
Key [11]:283acc551591fadce821b02fb9491814
Key [12]:ca5f95688788e20d94822f162b5a3920
round 7:494f455a2e7a5db861ece816d4e363e4
Key [13]:ba574aef663c462d35399efb999d0e40
Key [14]:6267afc834513783fef1601955fe0628
round 8:37a819f91c8380fb7880e640e99ca947
Key [15]:fdcd9be5450eef0f8737e6838cd38e2b
Key [16]:8cfbd9b8056c6a1ce222b92b94319b38
Key [17]:4f64c1072c891c39eeb95e63318462e0
kc :a3032b4df1cceba8adc1a04427224299
-----------------------------------------
rand :5ecd6d75db322c75b6afbd799cb18668
aco :63f701c7013238bbf88714ee
key :b9f90c53206792b1826838b435b87d4d
round 1:5ecd6d75db322c75b6afbd799cb18668
Key [ 1]:b9f90c53206792b1826838b435b87d4d
Key [ 2]:15f74bbbde4b9d1e08f858721f131669
round 2:72abb85fc80c15ec2b00d72873ef9ad4
Key [ 3]:ef7fb29f0b01f82706c7439cc52f2dab
Key [ 4]:3003a6aecdee06b9ac295cce30dcdb93
round 3:2f10bab93a0f73742183c68f712dfa24
Key [ 5]:5fcdbb3afdf7df06754c954fc6340254
Key [ 6]:ddaa90756635579573fe8ca1f93d4a38
round 4:183b145312fd99d5ad08e7ca4a52f04e
Key [ 7]:27ca8a7fc703aa61f6d7791fc19f704a
Key [ 8]:702029d8c6e42950762317e730ec5d18
round 5:cbad52d3a026b2e38b9ae6fefffecc32
Key [ 9]:ff15eaa3f73f4bc2a6ccfb9ca24ed9c5
Key [10]:034e745246cd2e2cfc3bda39531ca9c5
round 6:ce5f159d0a1acaacd9fb4643272033a7
Key [11]:0a4d8ff5673731c3dc8fe87e39a34b77
Key [12]:637592fab43a19ac0044a21afef455a2
round 7:8a49424a10c0bea5aba52dbbffcbcce8
Key [13]:6b3fde58f4f6438843cdbe92667622b8
Key [14]:a10bfa35013812f39bf2157f1c9fca4e
round 8:f5e12da0e93e26a5850251697ec0b917
Key [15]:2228fe5384e573f48fdd19ba91f1bf57
Key [16]:5f174db2bc88925c0fbc6b5485bafc08
Key [17]:28ff90bd0dc31ea2bb479feb7d8fe029
Sample Data
round 1:0c75eed2b54c1cfb9ff522daef94ed4d
Key [ 1]:a21ceb92d3c027326b4de775865fe8d0
Key [ 2]:26f64558a9f0a1652f765efd546f3208
round 2:48d537ac209a6aa07b70000016c602e8
Key [ 3]:e64f9ef630213260f1f79745a0102ae5
Key [ 4]:af6a59d7cebfd0182dcca9a537c4add8
round 3:8b6d517ac893743a401b3fb7911b64e1
added ->:87e23fa87ddf90c1df10616d7eaf51ac
Key [ 5]:9a6304428b45da128ab64c8805c32452
Key [ 6]:8af4d1e9d80cb73ec6b44e9b6e4f39d8
round 4:9f0512260a2f7a5067efc35bf1706831
Key [ 7]:79cc2d138606f0fca4e549c34a1e6d19
Key [ 8]:803dc5cdde0efdbee7a1342b2cd4d344
round 5:0cfd7856edfafac51f29e86365de6f57
Key [ 9]:e8fa996448e6b6459ab51e7be101325a
Key [10]:2acc7add7b294acb444cd933f0e74ec9
round 6:2f1fa34bf352dc77c0983a01e8b7d622
Key [11]:f57de39e42182efd6586b86a90c86bb1
Key [12]:e418dfd1bb22ebf1bfc309cd27f5266c
round 7:ee4f7a53849bf73a747065d35f3752b1
Key [13]:80a9959133856586370854db6e0470b3
Key [14]:f4c1bc2f764a0193749f5fc09011a1ae
round 8:8fec6f7249760ebf69e370e9a4b80a92
Key [15]:d036cef70d6470c3f52f1b5d25b0c29d
Key [16]:d0956af6b8700888a1cc88f07ad226dc
Key [17]:1ce8b39c4c7677373c30849a3ee08794
kc :ea520cfc546b00eb7c3a6cea3ecb39ed
=========================================
Sample Data
This section contains an example of the DM3 packet used for the
synchronization train (see [Vol. 2, Part B] Section 8.11.2 on page 207).
Payload:
--------
logical channel = 10 (binary) (L2CAP start or no fragmentation)
payload length = 28 bytes
flow = 0
current CLK = 0x2345678
next connectionless slave broadcast instant = 0x23457a0
AFH channel map = all channels used except 16 and 42 to 47
master BD_ADDR = NAP 0xACDE, UAP 0x48, LAP 0x610316
connectionless slave broadcast interval = 564 slots
connectionless slave broadcast LT_ADDR = 1
service data = 0x69
AIR DATA
Payload
-------
The data forming the payload consists of the following 32 octets
(given in hexadecimal) in the order transmitted:
e2 00
78 56 34 02
d0 2b 1a 01
ff ff fe ff ff 03 ff ff ff 7f
16 03 61 48 de ac
34 02
01
69
f2 85
Sample Data
0100011100 01001
0000000001 10101
1110011010 11011
and end:
0100111110 10001
1000010000 00011
Security Specification
CONTENTS
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2, Part H] page 1305
Security Specification
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 2, Part H] page 1306
Security Specification
1 SECURITY OVERVIEW
This means that in each device, the authentication and encryption routines are
implemented in the same way.
The security mechanisms used in BR/EDR have evolved over the course of
multiple Core Specifications in three phases: legacy, Secure Simple Pairing,
and Secure Connections. The encryption, authentication and key generation
algorithms associated with each is shown in Table 1.1.
Encryption E0 E0 AES-CCM
Authentication SAFER+ SAFER+ HMAC-SHA256
Key Generation SAFER+ P-192 ECDH P-256 ECDH
HMAC-SHA-256 HMAC-SHA-256
Table 1.1: Security algorithms
Four different entities are used for maintaining security at the link layer: a
Bluetooth device address, two secret keys, and a pseudo-random number that
shall be regenerated for each new transaction. The four entities and their sizes
are summarized in Table 1.2.
Entity Size
BD_ADDR 48 bits
Security Specification
The secret keys are derived during initialization and are never disclosed. The
encryption key is derived from the authentication key during the authentication
process. For the authentication algorithm, the size of the key used is always
128 bits. For the encryption algorithm, the key size may vary between 1 and 16
octets (8 - 128 bits). The size of the encryption key is configurable for two
reasons. The first has to do with the many different requirements imposed on
cryptographic algorithms in different countries − both with respect to export
regulations and official attitudes towards privacy in general. The second reason
is to facilitate a future upgrade path for the security without the need of a costly
redesign of the algorithms and encryption hardware; increasing the effective
key size is the simplest way to combat increased computing power at the
opponent side.
The encryption key is entirely different from the authentication key. Each time
encryption is activated, a new encryption key shall be generated. Thus, the
lifetime of the encryption key does not necessarily correspond to the lifetime of
the authentication key.
It is anticipated that the authentication key will be more static in its nature than
the encryption key − once established, the particular application running on the
device decides when, or if, to change it. To underline the fundamental
importance of the authentication key to a specific link, it is often referred to as
the link key.
In the remainder of this chapter, the terms user and application are used
interchangeably to designate the entity that is at either side.
Security Specification
Security Specification
The device shall use a seed with at least the minimum entropy required by the
pseudo random number generator.
The random number generator shall be tested against the [FIPS SP800-22]
(http://csrc.nist.gov/publications/nistpubs/800-22-rev1a/SP800-22rev1a.pdf).
This encompasses the verification of the following statistical tests performed on
the output of the PRNG as specified by the [FIPS SP800-22]:
These tests are part of standard statistical mathematical packages. Some test
suites, like the Diehard test suite can be used to verify the compliance.
Alternatively, other tools, such as the DieHarder (http://www.phy.duke.edu/
~rgb/General/rand_rate.php) or the available NIST tools (http://csrc.nist.gov/
groups/ST/toolkit/random_number.html) and the corresponding
recommendations
(http://csrc.nist.gov/publications/nistpubs/800-22-rev1/SP800-22rev1.pdf) may
also be used.
Security Specification
3 KEY MANAGEMENT
It is important that the encryption key size within a specific device cannot be set
by the user − this should be a factory preset entity. In order to prevent the user
from over-riding the permitted key size, the Bluetooth baseband processing
shall not accept an encryption key given from higher software layers.
Whenever a new encryption key is required, it shall be created as defined in
Section 6.4 on page 1339.
Changing a link key shall also be done through the defined baseband
procedures. Depending on what kind of link key it is, different approaches are
required. The details are found in Section 3.2.7 on page 1316.
In the following, a session is defined as the time interval for which the device is
a member of a particular piconet. Thus, the session terminates when the
device disconnects from the piconet.
The lifetime of a temporary link key is limited by the lifetime of the current
session − it shall not be reused in a later session. Typically, in a point-to-
multipoint configuration where the same information is to be distributed
securely to several recipients, a common encryption key is useful. To achieve
this, a special link key (denoted master key) may temporarily replace the
current link keys. The details of this procedure are found in Section 3.2.6 on
page 1316.
In the following, the current link key is the link key in use at the current moment.
It can be semi-permanent or temporary. Thus, the current link key is used for all
authentications and all generation of encryption keys in the on-going
connection (session).
Security Specification
In addition to these keys there is an encryption key, denoted Kc. This key is
derived from the current link key. Whenever encryption is activated by an LM
command, the encryption key shall be changed automatically. The purpose of
separating the authentication key and encryption key is to facilitate the use of a
shorter encryption key without weakening the strength of the authentication
procedure. There are no governmental restrictions on the strength of
authentication algorithms. However, in some countries, such restrictions exist
on the strength of encryption algorithms.
The combination key KAB and the unit key KA are functionally indistinguishable;
the difference is in the way they are generated. The unit key KA is generated in,
and therefore dependent on, a single device A. The unit key shall be generated
once at installation of the device; thereafter, it is very rarely changed. The
combination key is derived from information in both devices A and B, and is
therefore always dependent on two devices. The combination key is derived for
each new combination of two devices.
The master key, Kmaster, shall only be used during the current session. It shall
only replace the original link key temporarily. For example, this may be utilized
when a master wants to reach more than two devices simultaneously using the
same encryption key, see Section 3.2.6 on page 1316.
The initialization key, Kinit, shall be used as the link key during the initialization
process when no combination or unit keys have been defined and exchanged
yet or when a link key has been lost. The initialization key protects the transfer of
initialization parameters. The key is derived from a random number, an L-octet
PIN code, and a BD_ADDR. This key shall only be used during initialization.
The PIN may be a fixed number provided with the device (for example when
there is no user interface as in a PSTN plug). Alternatively, the PIN can be
Security Specification
selected by the user, and then entered in both devices that are to be matched.
The latter procedure should be used when both devices have a user interface,
for example a phone and a laptop. Entering a PIN in both devices is more
secure than using a fixed PIN in one of the devices, and should be used
whenever possible. Even if a fixed PIN is used, it shall be possible to change
the PIN; this is in order to prevent re-initialization by users who once obtained
the PIN. If no PIN is available, a default value of zero may be used. The length
of this default PIN is one byte, PIN (default) = 0x00. This default PIN may be
provided by the host.
For many applications the PIN code will be a relatively short string of numbers.
Typically, it may consist of only four decimal digits. Even though this gives
sufficient security in many cases, there exist countless other, more sensitive,
situations where this is not reliable enough. Therefore, the PIN code may be
chosen to be any length from 1 to 16 octets. For the longer lengths, the devices
exchanging PIN codes may not use mechanical (i.e. human) interaction, but
rather may use software at the application layer. For example, this can be a
Diffie-Hellman key agreement, where the exchanged key is passed on to the
K init generation process in both devices, just as in the case of a shorter PIN
code.
Security Specification
A link key is used temporarily during initialization, the initialization key K init .
This key shall be derived by the E 22 algorithm from a BD_ADDR, a PIN code,
the length of the PIN (in octets), and a random number IN_RAND. The principle is
depicted in Figure 6.4 on page 1339. The 128-bit output from E 22 shall be used
for key exchange during the generation of a link key. When the devices have
performed the link key exchange, the initialization key shall be discarded.
When the initialization key is generated, the PIN is augmented with the
BD_ADDR. If one device has a fixed PIN the BD_ADDR of the other device
shall be used. If both devices have a variable PIN the BD_ADDR of the device
that received IN_RAND shall be used. If both devices have a fixed PIN they
cannot be paired. Since the maximum length of the PIN used in the algorithm
cannot exceed 16 octets, it is possible that not all octets of BD_ADDR will be
used. This procedure ensures that K init depends on the identity of the device
with a variable PIN. A fraudulent device may try to test a large number of PINs
by claiming another BD_ADDR each time. It is the application’s responsibility
to take countermeasures against this threat. If the device address is kept fixed,
the waiting interval before the next try may be increased exponentially (see
Section 5.1 on page 1332).
The details of the E 22 algorithm can be found in Section 6.3 on page 1337.
3.2.2 Authentication
A unit key K A shall be generated when the device is in operation for the first time;
i.e. not during each initialization. The unit key shall be generated by the E 21
Security Specification
algorithm as described in Section 6.3 on page 1337. Once created, the unit key
should be stored in non-volatile memory and very rarely changed. If after
initialization the unit key is changed, any previously initialized devices will
possess a wrong link key. At initialization, the application must determine which
of the two parties will provide the unit key as the link key. Typically, this will be the
device with restricted memory capabilities, since this device only has to
remember its own unit key. The unit key shall be transferred to the other party
and then stored as the link key for that particular party. So, for example in Figure
3.1 on page 1314, the unit key of device A, K A , is being used as the link key for
the connection A-B; device A sends the unit key K A to device B; device B will
store K A as the link key K BA . For another initialization, for example with device
C, device A will reuse its unit key K A , whereas device C stores it as K CA .
UNIT A UNIT B
Kinit K
init
KA KBA = KA
Figure 3.1: Generation of unit key. When the unit key has been exchanged, the initialization key is
discarded in both devices.
and
When the random numbers LK_RANDA and LK_RAND B have been mutually
exchanged, each device shall recalculate the other device’s contribution to the
combination key. This is possible since each device knows the Bluetooth
Security Specification
device address of the other device. Thus, device A shall calculate (EQ 2) on
page 1314 and device B shall calculate (EQ 1) on page 1314. After this, both
devices shall combine the two numbers to generate the 128-bit link key. The
combining operation is a simple bitwise modulo-2 addition (i.e. XOR). The
result shall be stored in device A as the link key K AB and in device B as the link
key K BA . When both devices have derived the new combination key, a mutual
authentication procedure shall be initiated to confirm the success of the
transaction. The old link key shall be discarded after a successful exchange of
a new combination key. The message flow between master and slave and the
principle for creating the combination key is depicted in Figure 3.2 on page
1315.
Unit A Unit B
CB
LK_RAND B = C B ⊕ K LK_RAND A = C A ⊕ K
LK_K B = E 21(LK_RAND B, BD_ADDR B) LK_K A = E 21(LK_RAND A, BD_ADDR A)
K AB = LK_K A ⊕ LK_K B K BA = LK_K A ⊕ LK_K B = K AB
Authentication
Figure 3.2: Generating a combination key. The old link key (K) is discarded after the exchange of a
new combination key has succeeded
The encryption key, K C , is derived by algorithm E 3 from the current link key, a
96-bit Ciphering OFfset number (COF), and a 128-bit random number. The
COF is determined in one of two ways. If the current link key is a master key,
then COF shall be derived from the master BD_ADDR. Otherwise the value of
COF shall be set to the value of ACO as computed during the authentication
procedure. Therefore:1
COF = BD_ADDR ∪ BD_ADDR, if link key is a master key (EQ 3)
ACO, otherwise.
Security Specification
It is possible for the master to use separate encryption keys for each slave in a
point-to-multipoint configuration with ciphering activated. Then, if the
application requires more than one slave to listen to the same payload, each
slave must be addressed individually. This can cause unwanted capacity loss
for the piconet. Moreover, a slave might not be capable of switching between
two or more encryption keys in real time (e.g., after looking at the LT_ADDR in
the header). Thus, the master cannot use different encryption keys for
broadcast messages and individually addressed traffic. Therefore, the master
may tell several slave devices to use a common link key (and, hence, indirectly
also to use a common encryption key) and may then broadcast the information
encrypted. For many applications, this key is only of temporary interest. In the
following discussion, this key is denoted by K master .
Note that the master must negotiate the encryption key length to use
individually with each slave that will use the master key. If the master has
already negotiated with some of these slaves, it has knowledge of the sizes
that can be accepted. There may be situations where the permitted key lengths
of some devices are incompatible. In that case, the master must exclude the
limiting device from the group.
When all slaves have received the necessary data, the master can
communicate information on the piconet securely using the encryption key
derived from the new temporary link key. Each slave in possession of the
master key can eavesdrop on all encrypted traffic, not only the traffic intended
for itself. The master may tell all participants to fall back to their old link keys
simultaneously.
A link key based on a unit key can be changed. The unit key is created once
during first use. Typically, the link key should be changed rather than the unit
key, as several devices may share the same unit key as link key (e.g. a printer
whose unit key is distributed to all users using the printer’s unit key as link key).
Changing the unit key will require re-initialization of all devices connecting.
Changing the unit key can be justified in some circumstances, e.g. to deny
access to all previously allowed devices.
Security Specification
This key is a 128-bit random number. The reason for using the output of E 22
and not directly choosing a random number as the key, is to avoid possible
problems with degraded randomness due to a poor implementation of the
random number generator within the device.
Then, a third random number, RAND, shall be transmitted to the slave. Using
E 22 with the current link key and RAND as inputs, both the master and the
slave shall compute a 128-bit overlay. The master shall send the bitwise XOR
of the overlay and the new link key to the slave. The slave, who knows the
overlay, shall recalculate K master . To confirm the success of this transaction, the
devices shall perform a mutual authentication procedure using the new link
key. This procedure shall then be repeated for each slave that receives the
new link key. The ACO values from the authentications shall not replace the
current ACO, as this ACO is needed to (re)compute a ciphering key when the
master falls back to the previous (non-temporary) link key.
where the value of COF shall be derived from the master’s BD_ADDR as
specified by equation (EQ 3) on page 1315. The details of the encryption key
generating function are described in Section 6.4 on page 1339. The message
Security Specification
flow between the master and the slave when generating the master key is
depicted in Figure 3.3. Note that in this case the ACO produced during the
authentication is not used when computing the ciphering key.
Master Slave
K master = E 22(RAND1, RAND2, 16)
RAND
OVL = E 22(K, RAND, 16) OVL = E 22(K, RAND, 16)
C = OVL ⊕ K master
C
K master = OVL ⊕ C
Authentication
Figure 3.3: Master link key distribution and computation of the corresponding encryption key.
Security Specification
4 ENCRYPTION (E0)
Kc payload key
plain text/cipher text
address
payload key Key stream z
clock generator
generator
RAND
cipher text/ plain text
Security Specification
The master shall send a suggested value, L sug ( M ) , to the slave. Initially, the
Security Specification
No encryption No encryption
No encryption Encryption, K master
Table 4.1: Possible encryption modes for a slave in possession of a master key.
For the encryption routine, a stream cipher algorithm is used in which ciphering
bits are bit-wise modulo-2 added to the data stream to be sent over the air
interface. The payload is ciphered after the CRC bits are appended, but, prior
to the FEC encoding.
The encryption key KC is derived from the current link key, COF, and a random
number, EN_RANDA (see Section 6.4 on page 1339). The random number
shall be issued by the master before entering encryption mode. Note that
EN_RANDA is publicly known since it is transmitted as plain text over the air.
Within the E 0 algorithm, the encryption key K C is modified into another key
denoted K′ C . The maximum effective size of this key shall be factory preset
and may be set to any multiple of eight between one and sixteen (8-128 bits).
The procedure for deriving the key is described in Section 4.5 on page 1325.
The real-time clock is incremented for each slot. The E 0 algorithm shall be re-
initialized at the start of each new packet (i.e. for Master-to-Slave as well as for
Slave-to-Master transmission). By using CLK26-1 at least one bit is changed
between two transmissions. Thus, a new keystream is generated after each re-
initialization. For packets covering more than a single slot, the Bluetooth clock
as found in the first slot shall be used for the entire packet.
Security Specification
BD_ADDRA BD_ADDRA
E0 E0
clockA clockA
Kc Kc
Kcipher Kcipher
dataA-B
data
dataB-A
Security Specification
LFSR2 x2t
LFSR3 x3t
XOR Encryption Stream Zt
LFSR4 x4t
c0t
blend
1
z-1
2
ct T1
x1t
z-1 T2
2 ct+1
x2t XOR
x3t + st+1
2
2
2
x4t
3
+ 3
/2 2
yt
1 25 t 25 + t 20 + t 12 + t 8 + 1 5
2 31 t 31 + t 24 + t 16 + t 12 + 1 5
3 33 t 33 + t 28 + t 24 + t 4 + 1 5
4 39 t 39 + t 36 + t 28 + t 4 + 1 5
Let x ti denote the t th symbol of LFSRi. The value y t is derived from the four-
tuple x t1, …, x t4 using the following equation:
4
yt = xti , (EQ 6)
i=1
where the sum is over the integers. Thus y t can take the values 0,1,2,3, or 4.
The output of the summation generator is obtained by the following equations:
z t = x t1 ⊕ x t2 ⊕ x t3 ⊕ x t4 ⊕ c t0 ∈ { 0, 1 }, (EQ 7)
yt + ct
s t + 1 = ( s t1+ 1 , s t0+ 1 ) = - ∈ { 0, 1, 2, 3 },
------------- (EQ 8)
2
Security Specification
where T 1 [ . ] and T 2 [ . ] are two different linear bijections over GF(4). Suppose
GF(4) is generated by the irreducible polynomial x 2 + x + 1 , and let α be a zero
of this polynomial in GF(4). The mappings T 1 and T 2 are now defined as:
T 1 : GF(4) → GF(4)
x→
| x
T 2 : GF(4) → GF(4)
x→
| ( α + 1 )x.
x T1 [ x ] T2 [ x ]
00 00 00
01 01 11
10 10 01
11 11 10
Since the mappings are linear, they can be implemented using XOR gates; i.e.
T1 : ( x 1, x 0 ) →
| ( x 1, x 0 ),
T2 : ( x 1, x 0 ) →
| ( x 0, x 1 ⊕ x 0 ).
Figure 4.4 on page 1325 gives an overview of the operation in time. The
encryption algorithm shall run through the initialization phase before the start of
transmission or reception of a new packet. Thus, for multislot packets the
cipher is initialized using the clock value of the first slot in the multislot
sequence.
Security Specification
Figure 4.4: Overview of the operation of the encryption engine. Between each start of a packet (TX
or RX), the LFSRs are re-initialized.
The effective length of the encryption key may vary between 8 and 128 bits.
Note that the actual key length as obtained from E 3 is 128 bits. Then, within E 0 ,
the key length may be reduced by a modulo operation between K C and a
polynomial of desired degree. After reduction, the result is encoded with a
block code in order to distribute the starting states more uniformly. The
operation shall be as defined in (EQ 10) on page 1326.
When the encryption key has been created the LFSRs are loaded with their
initial values. Then, 200 stream cipher bits are created by operating the
generator. Of these bits, the last 128 are fed back into the key stream
generator as an initial value of the four LFSRs. The values of c t and c t – 1 are
kept. From this point on, when clocked the generator produces the encryption
(decryption) sequence which is bitwise XORed to the transmitted (received)
payload data.
1. Create the encryption key to use from the 128-bit secret key K C and
the 128-bit publicly known EN_RAND. Let L, 1 ≤ L ≤ 16 , be the
Security Specification
After the parallel load in item 4, the blend register contents shall be updated for
each subsequent clock.
(L) (L)
L deg g1 deg g2
1 [8] 00000000 00000000 00000000 0000011d [119] 00e275a0 abd218d4 cf928b9b bf6cb08f
2 [16] 00000000 00000000 00000000 0001003f [112] 0001e3f6 3d7659b3 7f18c258 cff6efef
3 [24] 00000000 00000000 00000000 010000db [104] 000001be f66c6c3a b1030a5a 1919808b
4 [32] 00000000 00000000 00000001 000000af [96] 00000001 6ab89969 de17467f d3736ad9
Security Specification
(L) (L)
L deg g1 deg g2
5 [40] 00000000 00000000 00000100 00000039 [88] 00000000 01630632 91da50ec 55715247
6 [48] 00000000 00000000 00010000 00000291 [77] 00000000 00002c93 52aa6cc0 54468311
7 [56] 00000000 00000000 01000000 00000095 [71] 00000000 000000b3 f7fffce2 79f3a073
8 [64] 00000000 00000001 00000000 0000001b [63] 00000000 00000000 a1ab815b c7ec8025
9 [72] 00000000 00000100 00000000 00000609 [49] 00000000 00000000 0002c980 11d8b04d
10 [80] 00000000 00010000 00000000 00000215 [42] 00000000 00000000 0000058e 24f9a4bb
11 [88] 00000000 01000000 00000000 0000013b [35] 00000000 00000000 0000000c a76024d7
12 [96] 00000001 00000000 00000000 000000dd [28] 00000000 00000000 00000000 1c9c26b9
13 [104] 00000100 00000000 00000000 0000049d [21] 00000000 00000000 00000000 0026d9e3
14 [112] 00010000 00000000 00000000 0000014f [14] 00000000 00000000 00000000 00004377
15 [120] 01000000 00000000 00000000 000000e7 [7] 00000000 00000000 00000000 00000089
16 [128] 1 00000000 00000000 00000000 00000000 [0] 00000000 00000000 00000000 00000001
In Figure 4.5, all bits are shifted into the LFSRs, starting with the least
significant bit (LSB). For instance, from the third octet of the address,
BD_ADDR[2], first BD_ADDR16 is entered, followed by BD_ADDR17, etc.
Furthermore, CL0 corresponds to CLK1,..., CL25 corresponds to CLK26.
i
Note that the output symbols x t, i = 1, …, 4 are taken from the positions 24, 24,
32, and 32 for LFSR1, LFSR2,LFSR3, and LFSR4, respectively (counting the
leftmost position as number 1).
8 12 20
CL[0]U = CL 7 ... CL 4
Security Specification
In Figure 4.6, the 128 binary output symbols Z0,..., Z127 are arranged in octets
denoted Z[0],..., Z[15]. The LSB of Z[0] corresponds to the first of these
symbols, the MSB of Z[15] is the last output from the generator. These bits
shall be loaded into the LFSRs according to the figure. It is a parallel load and
no update of the blend registers is done. The first output symbol is generated at
the same time. The octets shall be written into the registers with the LSB in the
leftmost position (i.e. the opposite of before). For example, Z24 is loaded into
position 1 of LFSR4.
Z[12]0
8 12 20
Figure 4.6: Distribution of the 128 last generated output symbols within the LFSRs.
Security Specification
5 AUTHENTICATION
AU_RANDA AU_RANDA
AU_RANDA
BD_ADDRB BD_ADDRB
E1 E1
Link key Link key
SRES
ACO ACO
SRES’ SRES
?
=
SRES
1. The reflection attack actually forms no threat because all service requests are dealt with on
a FIFO basis. When preemption is introduced, this attack is potentially dangerous.
Security Specification
Verifier Claimant
(User A) (User B, with identity IDB)
RAND
Security Specification
Device Device
Authentication AU_RANDm Authentication
Link Key Key Key
Link Key
"btdk"
"btdk"
AU_RANDs
h4 h5 h5 h4
BD_ADDRm AU_RANDm AU_RANDm
BD_ADDRm
Master Slave
AU_RANDm
AU_RANDs
SRESm || SRESs = SRESm || SRESs =
h5(h4(link_key, "btdk", BD_ADDRm, h5(h4(link_key, "btdk", BD_ADDRm,
BD_ADDRs), AU_RANDm, AU_RANDs) SRESm BD_ADDRs), AU_RANDm, AU_RANDs)
In secure authentication, both the master and slave are the verifier and
claimant. The application indicates which device has to be authenticated, but
secure authentication is always a mutual authentication.
Security Specification
Security Specification
This section describes the algorithms used for authentication and key
generation.
The details of A r are given in the next section. The function E 1 is constructed
using A r as follows
128 128 48 32 96
E 1 : { 0, 1 } × { 0, 1 } × { 0, 1 } → { 0, 1 } × { 0, 1 }
(EQ 12)
( K, RAND, address ) →
| ( SRES, ACO ),
and where
8×L 8 × 16
E: { 0, 1 } × { 6, 12 } → { 0, 1 }
(EQ 14)
( X [ 0, …, L – 1 ], L ) →
| ( X [ i(mod L) ] for i = 0...15 ),
1. The operator +16 denotes bytewise addition mod 256 of the 16 octets, and the operator ⊕16
denotes bytewise XORing of the 16 octets.
2. The constants are the largest primes below 257 for which 10 is a primitive root.
Security Specification
RAND address
48
K Ar
128
K̃ add +16 E
L = 6
A' r
32 96
Security Specification
In Figure 6.2 on page 1336 two boxes are shown, marked “e” and “l”. These
boxes implement the same substitutions as are used in SAFER+; i.e. they
implement
e, l : { 0, …, 255 } → { 0, …, 255 },
e : i→
| ( 45 i (mod 257) ) (mod 256),
l : i→
| j s.t. i = e(j).
Security Specification
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
128
A input[0..15]
128
K [0..15]
2r-1
e l l e e l l e e l l e e l l e
128
K2r [0..15]
K 2r[0] K [15]
2r
PERMUTE: 8 11 12 15 2 1 6 5 10 9 14 13 0 7 4 3
PERMUTE: 8 11 12 15 2 1 6 5 10 9 14 13 0 7 4 3
PERMUTE: 8 11 12 15 2 1 6 5 10 9 14 13 0 7 4 3
bitwise XOR
PHT(x,y)= (2x+y mod 256, x+y mod 256)
In Section 6.2, the permutation boxes show how input byte indices are mapped
onto output byte indices. Thus, position 8 is mapped on position 0 (leftmost),
position 11 is mapped on position 1, etc.
In each round, 2 batches of 16 octet-wide keys are needed. These round keys
are derived as specified by the key scheduling in SAFER+. Figure 6.3 on page
1337 gives an overview of how the round keys K p [ j ] are determined. The bias
vectors B2, B3, ..., B17 shall be computed according to following equation:
17p + i + 1
( 45 mod 257 )
B p [ i ] = ( ( 45 mod 257 ) mod 256 ), for i = 0, …, 15. (EQ 17)
Security Specification
sum octets
bit-by-bit
modulo two
Select octets
0 1 14 15 16 K
1
0,1,2,...,14,15
Rotate each octet left by 3 bit positions
B 17
The key used for authentication shall be derived through the procedure that is
shown in Figure 6.4 on page 1339. The figure shows two modes of operation
for the algorithm. In the first mode, E 21 produces a 128-bit kink key, K , using a
128-bit RAND value and a 48-bit address. This mode shall be utilized when
creating unit keys and combination keys. In the second mode, E 22 produces a
128-bit link key, K , using a 128-bit RAND value and an L octet user PIN. The
second mode shall be used to create the initialization key, and also when a
master key is to be generated.
When the initialization key is generated, the PIN is augmented with the
BD_ADDR, see Section 3.2.1 on page 1313 for which address to use. The
augmentation shall always start with the least significant octet of the address
immediately following the most significant octet of the PIN. Since the maximum
length of the PIN used in the algorithm cannot exceed 16 octets, it is possible
that not all octets of BD_ADDR will be used.
Security Specification
This key generating algorithm again exploits the cryptographic function E 2 . for
mode 1 (denoted E 21 ) is computed according to following equations:
128 48 128
E 21 : { 0, 1 } × { 0, 1 } → { 0, 1 }
(EQ 18)
( RAND, address ) →
| A' r(X, Y)
i=0
Let L be the number of octets in the user PIN. The augmenting is defined by
where
15
X =
∪ PIN' [ i (mod L') ] ,
(EQ 22)
i=0
Y = RAND [ 0…14 ] ∪ ( RAND [ 15 ] ⊕ L' ),
Security Specification
Mode 1 L’ Mode 2
RAND PIN’
128 8L’
E 21 E 22
BD_ADDR RAND
48 128
128 128
Key Key
Figure 6.4: Key generating algorithmE2 and its two modes. Mode 1 is used for unit and
combination keys, while mode 2 is used for Kinit and K master.
where Hash is the hash function as defined by (EQ 13) on page 1333. The key
length produced is 128 bits. However, before use within E 0 , the encryption key
K C is shortened to the correct encryption key length, as described in Section
4.5 on page 1325. A block scheme of E 3 is depicted in Figure 6.5.
EN_RAND
128
COF E3
96
Link key
128
128
KC
Security Specification
The Secure Simple Pairing security functions and procedures are described in
this section. In addition, a cryptographic analysis of each procedure is
provided.
Phases 1, 3, 4 and 5 are the same for all protocols whereas phase 2
(Authentication Stage 1) is different depending on the protocol used.
Distributed through these five phases are 13 steps.
Initiating Non-initiating
Device A Device B
Authentication Stage 1
Steps 2-8: Protocol dependent
Authentication Stage 2
Steps 9-11: Same for all protocols
Encryption
Step 13: Same for all protocols
Term Definition
Security Specification
Term Definition
f2( ) Used to compute the link key and possible other keys from the
DHKey and random nonces
f3( ) Used to compute check values Ea and Eb in Authentication
Stage 2
g( ) Used to compute numeric check values
LK Link Key
Nx Nonce (unique random value) from device X
Nxi ith nonce (unique random value) from device X. Only used in
the passkey entry protocol
PKx Public Key of device X
Security Specification
Pairing is initiated by the initiating device sending its public key to the receiving
device (step 1a). The responding device replies with its own public key (step
1b) These public keys are not regarded as secret although they may identify
the devices. Note that steps 1a and 1b are the same in all three protocols.
When both device’s Controllers and Hosts support Secure Connections, the P-
256 elliptic curve is used. When at least one device’s Controller or Host doesn’t
support Secure Connections, the P-192 elliptic curve is used.
Initiating Non-initiating
Device A Device B
Initiating Non-initiating
Device A Device B
Authentication Stage 1
Steps 2-8: Protocol dependent
Security Specification
Initiating Non-initiating
Device A Device B
Authentication Stage 1:
NumericComparison
2a. Select random Na 2b. Select random Nb
After the public keys have been exchanged, each device selects a pseudo-
random 128-bit nonce (step 2). This value is used to prevent replay attacks and
must be freshly generated with each instantiation of the pairing protocol. This
value should be generated directly from a physical source of randomness or
with a good pseudo-random generator seeded with a random value from a
physical source.
Following this the responding device then computes a commitment to the two
public keys that have been exchanged and its own nonce value (step 3c). This
commitment is computed as a one-way function of these values and is
Security Specification
The initiating and responding devices then exchange their respective nonce
values (steps 5 and 6) and the initiating device confirms the commitment (step
6a). A failure at this point indicates the presence of an attacker or other
transmission error and causes the protocol to abort. The protocol may be
repeated with or without the generation of new public-private key pairs, but new
nonces must be generated if the protocol is repeated.
Assuming that the commitment check succeeds, the two devices each
compute 6-digit confirmation values that are displayed to the user on their
respective devices (steps 7a, 7b, and 8). The user is expected to check that
these 6-digit values match and to confirm if there is a match. If there is no
match, the protocol aborts and, as before, new nonces must be generated if
the protocol is to be repeated.
An active MITM must inject its own key material into this process to have any
effect other than denial-of-service. A simple MITM attack will result in the two 6-
digit display values being different with probability 0.999999. A more
sophisticated attack may attempt to engineer the display values to match, but
this is thwarted by the commitment sequence. If the attacker first exchanges
nonces with the responding device, it must commit to the nonce that it will use
with the initiating device before it sees the nonce from the initiating device. If
the attacker first exchanges nonces with the initiating device, it must send a
nonce to the responding device before seeing the nonce from the responding
device. In each case, the attacker must commit to at least the second of its
nonces before knowing the second nonce from the legitimate devices. It
therefore cannot choose its own nonces in such a way as to cause the display
values to match.
Security Specification
Initiating Non-initiating
Device A Device B
Authentication Stage 1:
Out -Of-Band
7. Na
8. Nb
Principle of operation: If both devices can transmit and/or receive data over
an out-of-band channel, then mutual authentication will be based on the
commitments of the public keys (Ca and Cb) exchanged OOB in Authentication
stage 1. If OOB communication is possible only in one direction, then
authentication of the device receiving the OOB communication will be based
on that device knowing a random number r sent via OOB. In this case, r must
be secret: r can be created afresh every time, or access to the device sending r
must be restricted. If r is not sent by a device, it is assumed to be 0 by the
device receiving the OOB information in step 4a or 4b.
Order of steps: The public key exchange must happen before the verification
step 5. In the diagram the in-band public key exchange between the devices
(step 1) is done before the OOB communication (step 4). But when the pairing
Security Specification
is initiated by an OOB interface, public key exchange will happen after the
OOB communication (step 1 will be between steps 4 and 5).
Values of ra and rb: Since the direction of the peer's OOB interface cannot be
verified before the OOB communication takes place, a device should always
generate and if possible transmit through its OOB interface a random number r
to the peer. Each device applies the following rules locally to set the values of
its own r and the value of the peer's r:
These rules ensure that when entering Authentication Stage 2, both A and B
have the same values for ra and rb if OOB communication took place.
The sequence diagram for Authentication Stage 1 for Passkey Entry from the
cryptographic point of view is shown in Figure 7.6.
Security Specification
Initiating Non-initiating
Device A Device B
Authentication Stage 1:
Passkey Entry
Host
2a. Inject secret ra; Set rb = ra 2b. Inject secret rb; Set ra = rb
Execute 20 times
ra = ra1 | ra2 | … ra20
rb = rb1 | rb2 | … rb20
New random number is selected in
each round
3a. Select random Nai 3b. Select random Nbi
7. Nai
7a.check if Cai=f1(PKax,PKbx,Nai,rbi)
If check fails, abort
8. Nbi
The user inputs an identical Passkey into both devices. Alternately, the
Passkey may be generated and displayed on one device, and the user then
inputs it into the other (step 2). This short shared key will be the basis of the
mutual authentication of the devices. Steps 3 through 8 are repeated k times
for a k-bit Passkey --e.g., k=20 for a 6-digit Passkey (999999=0xF423F).
In Steps 3-8, each side commits to each bit of the Passkey, using a long nonce
(128 bits), and sending the hash of the nonce, the bit of the Passkey, and both
public keys to the other party. The parties then take turns revealing their
commitments until the entire Passkey has been mutually disclosed. The first
party to reveal a commitment for a given bit of the Passkey effectively reveals
that bit of the Passkey in the process, but the other party then has to reveal the
corresponding commitment to show the same bit value for that bit of the
Passkey, or else the first party will then abort the protocol, after which no more
bits of the Passkey are revealed.
Security Specification
first one side, then the other will only gain an advantage of at most two bits
over a simple brute-force guesser which succeeds with probability 0.000001.
The long nonce is included in the commitment hash to make it difficult to brute-
force even after the protocol has failed. The public Diffie-Hellman values are
included to tie the Passkey protocol to the original ECDH key exchange, to
prevent a MITM from substituting the attacker's public key on both sides of the
ECDH exchange in standard MITM fashion.
At the end of this stage, Na is set to Na20 and Nb is set to Nb20 for use in
Authentication Stage 2.
Each device computes a new confirmation value that includes the previously
exchanged values and the newly derived shared key (step 9). The initiating
device then transmits its confirmation value which is checked by the
responding device (step 10). If this check fails, it indicates that the initiating
device has not confirmed the pairing, and the protocol must be aborted. The
responding device then transmits its confirmation value which is checked by
the initiating device (step 11). A failure indicates that the responding device has
not confirmed the pairing and the protocol should abort.
Initiating Non-initiating
Device A Device B
10. Ea
10b. check
Ea=f3(DHKey,Na,Nb,rb,IOcapA,A,B)
If check fails, abort
11. Eb
11a. check
Eb=f3(DHKey,Nb,Na,ra,IOcapB,B,A)
If check fails , abort
Security Specification
When computing the link key both parties shall input the parameters in the
same order to ensure that both devices compute the same key: device A's
parameters are those of the piconet master and device B's parameters are
those of the piconet slave.
Initiating Non-initiating
Device A Device B
Simple Pairing uses the FIPS P-192 and P-256 curves defined in FIPS 186-31.
Elliptic curves are specified by p, a, b and are of the form:
E: y2 = x3 + ax + b (mod p)
For each value of b a unique curve can be developed. In NIST P-192 and P-256:
a = mod (-3, p)
b is defined and its method of generation can be verified by using
SHA-1 (with a given seed s and using b2c = -27 (mod p))
1. http://dx.doi.org/10.6028/NIST.FIPS.186-4
Security Specification
For P-192:
p = 6277101735386680763835789423207666416083908700390324961279
r = 6277101735386680763835789423176059013767194773182842284081
b = 64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1
Gx = 188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012
Gy = 07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811
The function P192 is defined as follows. Given an integer u, 0 < u < r, and a
point V on the curve E, the value P192(u,V) is computed as the x-coordinate of
the uth multiple uV of the point V.
The private keys shall be between 1 and r/2, where r is the Order of the Abelian
Group on the elliptic curve (e.g. between 1 and 2192/2).
For P-256:
p = 11579208921035624876269744694940757353008614341529031419553363130
8867097853951
r = 11579208921035624876269744694940757352999695522413576034242225906
1068512044369
b = 5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e
27d2604b
Gx = 6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945
d898c296
Gy = 4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068
37bf51f5
The function P-256 is defined as follows. Given an integer u, 0 < u < r, and a
point V on the curve E, the value P-256(u,V) is computed as the x-coordinate of
the uth multiple uV of the point V.
The private keys shall be between 1 and r/2, where r is the Order of the Abelian
Group on the elliptic curve (e.g. between 1 and 2256/2).
Security Specification
The basic building block for these functions is based on as it already exists in
the key derivation function E3 (which is the same as E1 but with a larger input).
Inside the f1, g, f2, and f3 cryptographic functions, when a multi-octet integer
input parameter is used as input to the SHA-256 and HMAC-SHA-256
functions, the most significant octet of the integer parameter shall be the first
octet of the stream and the least significant octet of the integer parameter shall
be the last octet of the stream. The output of the f1, g, f2 and f3 cryptographic
functions is a multi-octet integer where the first octet out of SHA-256 and
HMAC-SHA-256 shall be the MSB and the last octet shall be the LSB of that
parameter.
The commitments are computed with function f1. The definition of the Simple
Pairing commitment function makes use of the MAC function HMAC based on
SHA-256x, which is denoted as HMAC-SHA-256X with 128-bit key X.
U 192 256
V 192 256
X 128 128
Z 8 8
Security Specification
Z is zero (i.e. 8 bits of zeros) for Numeric Comparison and OOB protocol. In the
Passkey protocol the most significant bit of Z is set equal to one and the least
significant bit is made up from one bit of the passkey e.g. if passkey is '1' then
Z = 0x81 and if the passkey is '0' then Z = 0x80.
Ca = f1(PKax, PKbx, Na, 0) Ca = f1(PKax, PKax, Ra, Cai = f1(PKax, PKbx, Nai, rai)
0)
Cb = f1(PKbx, PKax, Nb, 0) Cb = f1(PKbx, PKbx, Rb, Cbi = f1(PKbx, PKax, Nbi, rbi)
0)
where PKax denotes the x-coordinate of the public key PKa of A. Similarly,
PKbx denotes the x-coordinate of the public key PKb of B. Nai is the nonce
value of ith round. For each round Nai value is a new 128 bit number. Similarly,
rai is one bit value of the passkey expanded to 8 bits (either 0x80 or 0x81).
U 192 256
V 192 256
X 128 128
Y 128 128
The numeric verification value is taken as six least significant digits of the 32-bit
integer g(PKax, PKbx, Na, Nb) where PKax denotes the x-coordinate of the
public key PKa of A and PKbx denotes the x-coordinate of the public key PKb
of B.
Security Specification
The definition of the Simple Pairing key derivation function makes use of the
MAC function HMAC based on SHA-256, which is denoted as HMAC-SHA-
256W with 192-bit or 256-bit key W.
W 192 256
N1 128 128
N2 128 128
keyID 32 32
A1 48 48
A2 48 48
The string "btlk" is mapped into keyID using extended ASCII1 as follows:
keyID[0] = 0110 1011 (lsb)
keyID[1] = 0110 1100
keyID[2] = 0111 0100
keyID[3] = 0110 0010
KeyID = 0x62746c6b
The output of f2 is taken as the 128 most significant (leftmost) bits of the output
of HMAC-SHA-256.
The link key is then calculated as:
LK = f2(DHKey, N_master, N_slave, "btlk", BD_ADDR_master, BD_ADDR_slave)
Security Specification
The definition of the Simple Pairing f3 check function makes use of the MAC
function HMAC based on SHA-256, which is denoted as HMAC-SHA-256W
with 192-bit or 256-bit key W.
W 192 256
N1 128 128
N2 128 128
IOcap 24 24
A1 48 48
A2 48 48
IOcap is three octets with the most significant octet as the Authentication
Requirements parameter, the middle octet as the LMP Out-of-Band Authentication
Data parameter, and the least significant octet as the LMP IO capability parameter.
The output of f3 is taken as the 128 most significant (leftmost) bits of the output
of HMAC-SHA-256. The check values are computed with function f3. The
inputs to f3 are different depending on the different protocols:
Ea = f3(DHKey, Na, Nb, Ea = f3(DHKey, Na, Nb, Ea = f3(DHKey, Na20, Nb20, rb,
0, IOcapA, A, B) rb, IOcapA, A, B) IOcapA, A, B)
Eb = f3(DHKey, Nb, Na, Eb = f3(DHKey, Nb, Na, Eb = f3(DHKey, Nb20, Na20, ra,
0, IOcapB, B, A) ra, IOcapB, B, A) IOcapB, B, A)
The input A is the BD_ADDR of device A and the input B is the BD_ADDR of
device B.
Security Specification
The definition of the Simple Pairing dedicated AMP key derivation function
makes use of the MAC function HMAC based on SHA-256, which is denoted
as HMAC-SHA-256W with 256-bit key W.
For each Dedicated AMP, a fixed value of the key identifier KeyID is specified.
A master key MKAMP of length LAMP, 0 ≤ LAMP ≤ 32, is computed as
MKAMP = h2 (GAMP_LK, keyIDAMP, LAMP).
The Generic AMP Link Key (GAMP_LK) shall be created every time the link
key (LK) is changed or created using the f2 function (see Section 7.7.3).
Whenever the GAMP_LK is created, all dedicated AMP link keys associated
with the remote BD_ADDR shall be discarded.
A fixed value of the key identifier KeyID is specified ('gamp'). The string 'gamp'
is mapped into keyID using extended ASCII1 as follows:
keyID[0] = 0111 0000 (lsb)
keyID[1] = 0110 1101
keyID[2] = 0110 0001
keyID[3] = 0110 0111
keyID = 0x67616d70
The initial GAMP_LK shall be created in the Host using the h2 function.
GAMP_LK = h2 (W, 'gamp', 32)
Where W = LK || LK
Each AMP uses a defined keyID and keyLength. Both values are defined in the
Assigned numbers page.
1. ISO_8859-1
Security Specification
Each time the GAMP_LK is used to generate a valid dedicated AMP link key it
shall be regenerated by computing
New_ GAMP_LK = h2 (GAMP_LK, 'gamp', 32)
When the BR/EDR link key is a debug link key, the dedicated AMP link keys
are set equal to the keyLength least significant octets of the Generic AMP link
key. When debug link keys are used, the Generic AMP link key shall not be
regenerated.
Security Specification
AES encryption keys are created using the AES encryption key generation
function h3. The definition of the AES encryption key generation function
makes use of the MAC function HMAC based on SHA-256, which is denoted
as HMAC-SHA-256T with 128-bit key T.
T 128
keyID 32
A1 48
A2 48
ACO 64
A1 is the BD_ADDR of the master. A2 is the BD_ADDR of the slave. ACO is the
64 bit ACO output from h5. T is the 128 bit Bluetooth Link Key derived from f2.
The string “btak” (Bluetooth AES Key) is mapped into keyID using extended
ASCII as follows:
keyID[0] = 0110 1011 (lsb)
keyID[1] = 0110 0001
keyID[2] = 0111 0100
keyID[3] = 0110 0010
KeyID = 0x6274616b
The output of h3 is taken as the 128 most significant (leftmost) bits of the
output of HMAC-SHA-256.
Security Specification
T 128
keyID 32
A1 48
A2 48
The string “btdk” (Bluetooth Device Key) is mapped into keyID using extended
ASCII as follows:
keyID[0] = 0110 1011 (lsb)
keyID[1] = 0110 0100
keyID[2] = 0111 0100
keyID[3] = 0110 0010
KeyID = 0x6274646b
The output of h4 is taken as the 128 most significant (leftmost) bits of the
output of HMAC-SHA-256.
Security Specification
S 128
R1 128
R2 128
R1 is the 128 bit random number (AU_RAND_M) from the master during the
Link Manager device authentication sequence. R2 is the 128 bit random
number from the slave (AU_RAND_S) during the Link Manager device
authentication sequence. S is the 128-bit Bluetooth Device Authentication Key
derived from h4.
The output of function h5 is:
h5(W, R1, R2) = HMAC-SHA-256S(R1 || R2) / 2128
The output of h5 is taken as the 128 most significant (leftmost) bits of the
output of HMAC-SHA-256. The first 32 bits (leftmost) become the
SRESmaster. The next 32 bits become the SRESslave. The final 64 bits
become the Authentication Ciphering Offset (ACO), which is used in h3 and as
the IV for Encryption Start for the encryption nonce.
Security Specification
8 AMP SECURITY
Whenever the Generic AMP Link Key is created, all Dedicated AMP Link Keys
associated with the remote device shall be discarded and any active AMP
Physical Links to the remote device shall be disconnected. Note that when a
Host initiates a Change Connection Link Key procedure, all active AMP
physical links between the two devices will be disconnected.
Since AMP security does not affect the BR/EDR Link Key, backwards
compatibility is maintained for devices that support the Generic AMP feature
with devices that do not. The Generic AMP Link Key is generated as part of
Secure Simple Pairing regardless of whether the devices both support the
Generic AMP feature or any AMP in common.
The Dedicated AMP Link Key is sent down to the PAL in the HCI Create
Physical Link and HCI Accept Physical Link commands (see [Vol. 2], Part E,
Section 7.1.37 and [Vol. 2], Part E, Section 7.1.38). Each PAL is responsible for
establishing security from the Dedicated AMP Link Key. Note that a Dedicated
AMP Link Key may be used for multiple sessions over the same AMP.
Each time a dedicated AMP key is created and the AMP Create Physical Link
sequence completes successfully (see [Vol. 3], Part E, Section 2.3.3), the
Generic AMP Link Key is updated. This is performed using the h2 function with
KeyID 'gamp.' If the AMP Create Physical Link sequence does not complete
successfully, the dedicated AMP link key shall be discarded and the Generic
AMP Link Key shall not be updated.
Figure 8.1 shows an overview of the AMP key generation in the Host.
Security Specification
No
Debug Link
Yes
Key Type?
No
Creation of the dedicated AMP keys and updates to the Generic AMP Link Key
are the responsibility of the AMP Manager (see [Vol. 3], Part E, Section 2.3.3).
Security Specification
Security Specification
The Baseband provides security using Counter with Cipher Block Chaining-
Message Authentication Code (CCM) as defined in IETF RFC 3610 (http://
www.ietf.org/rfc/rfc3610.txt). The description of the algorithm can also be found
in the NIST Special Publication 800-38C (http://csrc.nist.gov/publications/
PubsSPs.html).
Using the notation in [4], CCM has two size parameters, M and L.
The Baseband defines these to be:
Size of L requires a trade-off between the maximum message size and the size
of the Nonce.
The reason for two formats has to do with two factors: potential security attacks
and synchronization. Since ACL packets on the primary LT_ADDR carry
protocol, they are susceptible to attacks that eSCO packets (only data) are not.
The descriptions of the two nonce formats are provided in Table 9.1.
Bit 7 – Bit 3:
dayCounter[4:0]
Table 9.1: Nonce Formats.
Security Specification
Bits 7-6:
nonceType = 00b (ACL)
5 Nonce5 1 Octet0 (LSO) of IV
6 Nonce6 1 Octet1 of IV
7 Nonce7 1 Octet2 of IV
8 Nonce8 1 Octet3 of IV
9 Nonce9 1 Octet4 of IV
10 Nonce10 1 Octet5 of IV
11 Nonce11 1 Octet6 of IV
In the payload counter format, the PayloadCounter starts at zero for the first
encrypted packet in each direction after encryption is started or resumed and
increments every time an encrypted payload including zero-length payloads is
accepted by the remote device. Bit 4 of Octet 4 shall be set to 1 for a zero
length ACL-U continuation packet (see [Vol. 2], Part B, Section 7.6.2.2),
otherwise it shall be set to 0.
In the clock format, the master clock (CLK) used for the nonce shall be the
value in the first slot of the packet. After a new ACL connection has been
established or a role switch has been successfully performed and when eSCO
is successfully established for the first time then the dayCounter value shall be
initialized to:
1 if CLK27 in the first clock format nonce is 0, and initialization procedure 2
(see [Vol. 2], Part B, Section 8.6.3) is used
0 otherwise.
After the dayCounter has been initialized, it shall increment every time the
master clock (CLK) rolls over to 0x0000000 (approximately every 23.3 hours).
Security Specification
Note: When Security Mode 4 is in use, eSCO will not be established before
encryption is started.
The IV is an 8 octet field. For encryption start, all octets of the IV are from the
ACO output of the last execution of h5 prior to the start of encryption.
Note: multiple device authentications may occur prior to starting encryption but
only the ACO of the last device authentication is used. After an encryption
resume, all 8 octets of the IV are from the EN_RAND sent by the device
initiating the encryption pause (see [Vol. 2], Part C, Section 4.2.5.5). An
encryption pause and resume will be required prior to the PayloadCounter or
dayCounter rolling over in order to keep the nonce fresh for an encryption key.
0 ACO[0] EN_RAND[0]
1 ACO[1] EN_RAND[1]
2 ACO[2] EN_RAND[2]
3 ACO[3] EN_RAND[3]
4 ACO[4] EN_RAND[4]
5 ACO[5] EN_RAND[5]
6 ACO[6] EN_RAND[6]
7 ACO[7] EN_RAND[7]
Table 9.2: IV Construction.
Offset Size
(octets) Field (octets) Value Description
Security Specification
Offset Size
(octets) Field (octets) Value Description
Size
Offset Field (octets) Value Description
Security Specification
Offset Size
(octets) Field (octets) Value Description
Part A:
RADIO SPECIFICATION
Figure 3.1: GFSK parameters definition. ..................................................... 39
Figure 3.2: Transmitter spectrum mask ....................................................... 45
Figure 3.3: Carrier frequency mask ............................................................. 46
Figure C.1: TX model .................................................................................. 55
Figure C.2: Error sequence generation ....................................................... 56
Part B:
BASEBAND SPECIFICATION
Figure 1.1: Piconets with a single slave operation (a), a multi-slave operation
(b) and a scatternet operation (c) .............................................. 66
Figure 1.2: Standard Basic Rate packet format ........................................... 67
Figure 1.3: Standard Enhanced Data Rate packet format ........................... 67
Figure 1.4: Bluetooth clock .......................................................................... 68
Figure 1.5: Format of BD_ADDR ................................................................. 69
Figure 2.1: Multi-slot packets ....................................................................... 73
Figure 2.2: Derivation of CLK in master (a) and in slave (b)........................ 74
Figure 2.3: RX/TX cycle of master transceiver in normal mode for single-slot
packets ...................................................................................... 76
Figure 2.4: RX/TX cycle of slave transceiver in normal mode for single-slot
packets ...................................................................................... 77
Figure 2.5: RX timing of slave returning from hold mode............................. 78
Figure 2.6: Derivation of CLKE .................................................................... 79
Figure 2.7: RX/TX cycle of transceiver in PAGE mode................................ 80
Figure 2.8: Timing of page response packets on successful page in first half
slot ............................................................................................. 81
Figure 2.9: Timing of page response packets on successful page in second
half slot ...................................................................................... 82
Figure 2.10: Timing of inquiry response packets on successful inquiry in first
half slot ...................................................................................... 84
Figure 2.11: Timing of inquiry response packets on successful inquiry in
second half slot.......................................................................... 84
Figure 2.12: General block diagram of hop selection scheme....................... 87
Figure 2.13: Hop selection scheme in CONNECTION state.......................... 87
Figure 2.14: Single- and multi-slot packets.................................................... 88
Figure 2.15: Example of the same channel mechanism ................................ 88
Figure 2.16: Block diagram of the basic hop selection kernel for the hop
system ....................................................................................... 89
Figure 2.17: XOR operation for the hop system ............................................ 90
Figure 2.18: Permutation operation for the hop system................................. 91
Figure 8.3: Messaging at initial connection when slave responds to first page
message .................................................................................. 166
Figure 8.4: Messaging at initial connection when slave responds to second
page message ......................................................................... 166
Figure 8.5: First half slot truncated page ................................................... 167
Figure 8.6: Second half slot truncated page .............................................. 167
Figure 8.7: Connection state...................................................................... 175
Figure 8.8: RX/TX timing in multi-slave configuration ................................ 176
Figure 8.9: eSCO Window Details for Single-Slot Packets........................ 180
Figure 8.10: eSCO Window Details for Asymmetric Traffic ......................... 180
Figure 8.11: Successful hop sequence switching ........................................ 185
Figure 8.12: Recovery hop sequences ........................................................ 186
Figure 8.13: AFH_Instant changes during multi-slot packets transmitted by
the master................................................................................ 187
Figure 8.14: Positive Coarse Clock Adjustment........................................... 191
Figure 8.15: Negative Coarse Clock Adjustment ......................................... 191
Figure 8.16: Sniff anchor points ................................................................... 193
Figure 8.17: Sniff subrating.......................................................................... 195
Figure 8.18: General beacon train format .................................................... 199
Figure 8.19: Definition of access window .................................................... 200
Figure 8.20: Access procedure applying the polling technique ................... 200
Figure 8.21: Disturbance of access window by SCO traffic ......................... 201
Figure 8.22: Extended sleep interval of parked slaves ................................ 202
Figure 8.23: Connectionless Slave Broadcast Timing ................................. 205
Figure 8.24: Examples of Synchronization Train Pointing to Connectionless
Slave Broadcast Instant........................................................... 209
Figure 9.1: Block diagram of CVSD encoder with syllabic companding .... 211
Figure 9.2: Block diagram of CVSD decoder with syllabic companding .... 211
Figure 9.3: Accumulator procedure ........................................................... 211
Figure A.1: SLR measurement set-up....................................................... 215
Figure A.2: RLR measurement set-up ...................................................... 215
Figure A.3: Plot of recommended frequency mask for Bluetooth. The GSM
send frequency mask is given for comparison (dotted line) ... 217
Figure C.1: Timing constraint on AFH_Instant with slaves in park, hold and
sniff ......................................................................................... 222
Figure C.2: AFH Map Change – Connectionless Slave Broadcast master 223
Part C:
LINK MANAGER PROTOCOL SPECIFICATION
Figure 1.1: Link Manager Protocol signaling layer..................................... 229
Figure 2.1: Transmission of a message from master to slave ................... 231
Figure 2.2: Payload body when LMP PDUs are sent ................................ 232
Figure 2.3: Symbols used in sequence diagrams ...................................... 235
Sequence 67: Authentication OOB: Only one device is OOB-r capable ... 305
Sequence 68: Authentication stage 1 OOB: Commitment check failure on the
Responder side .................................................................. 305
Sequence 69: Authentication stage 1 OOB: Commitment check failure on the
Initiator side ........................................................................ 306
Sequence 70: Authentication stage 1 OOB: OOB information not available on
the Initiator side .................................................................. 306
Sequence 71: DHKey check...................................................................... 307
Sequence 72: DHKey check: Check failure on the Responder side ......... 307
Sequence 73: DHKey check: check failure on the Initiator side ................ 308
Sequence 74: The requested device supports timing accuracy
information .......................................................................... 309
Sequence 75: The requested device does not support timing accuracy infor-
mation ................................................................................. 309
Sequence 76: Clock offset requested........................................................ 310
Sequence 77: Request for LMP version.................................................... 311
Sequence 78: Request for supported features.......................................... 313
Sequence 79: Request for extended features ........................................... 313
Sequence 80: Device’s name requested and it responses ....................... 314
Figure 4.2: Slot offset for role switch.......................................................... 315
Sequence 81: Slot offset information is sent ............................................. 315
Sequence 82: Role switch (slave initiated)................................................ 317
Sequence 83: Role switch (master initiated) ............................................. 317
Sequence 84: Master forces slave into hold mode.................................... 320
Sequence 85: Slave forces master into hold mode ................................... 320
Sequence 86: Negotiation for hold mode .................................................. 321
Sequence 87: Slave accepts to enter park state ....................................... 325
Sequence 88: Slave rejects to enter into park state .................................. 325
Sequence 89: Slave requests to enter park state and accepts master's beacon
parameters ......................................................................... 326
Sequence 90: Master rejects slave's request to enter park state .............. 326
Sequence 91: Slave requests to enter park state, but rejects master's beacon
parameters ......................................................................... 326
Sequence 92: Master notifies all slaves of increase in broadcast capacity 327
Sequence 93: Master modifies beacon parameters .................................. 327
Sequence 94: Master unparks slaves addressed with their BD_ADDR .... 328
Sequence 95: Master unparks slaves addressed with their PM_ADDR.... 328
Sequence 96: Negotiation for sniff mode .................................................. 330
Sequence 97: Slave moved from sniff mode to active mode .................... 331
Sequence 98: LM accepts sniff subrating request..................................... 332
Sequence 99: Master requests an SCO link ............................................. 334
Sequence 100: Master rejects slave’s request for an SCO link .................. 334
Sequence 101: Master accepts slave’s request for an SCO link................. 335
Part D:
ERROR CODES
Part E:
HOST CONTROLLER INTERFACE FUNCTIONAL SPECIFICATION
Figure 1.1: Overview of the Lower Software Layers .................................. 400
Figure 1.2: End to End Overview of Lower Software Layers to
Transfer Data ........................................................................... 401
Figure 5.1: HCI Command Packet ............................................................. 471
Figure 5.1: HCI ACL Data Packet .............................................................. 472
Figure 5.1: HCI Synchronous Data Packet ................................................ 475
Figure 5.1: HCI Event Packet .................................................................... 477
Figure 7.1: Local Loopback Mode ............................................................. 832
Figure 7.2: Remote Loopback Mode ......................................................... 833
Figure 7.1: Secure Connections eSCO Loopback ..................................... 840
Figure 7.2: Secure Connections eSCO loopback immediate..................... 841
Figure 7.3: Secure Connections eSCO loopback delayed ........................ 841
Figure 7.4: Secure Connections eSCO loopback delayed with
retransmissions ....................................................................... 841
Part F:
MESSAGE SEQUENCE CHARTS
Figure 1.1: Example MSC........................................................................ 1062
Figure 2.1: Remote name request ........................................................... 1063
Figure 2.2: Remote name request if no current baseband connection .... 1064
Figure 2.3: Remote name request with baseband connection ................ 1064
Figure 2.4: Host A starts inquiry procedure ............................................. 1065
Figure 2.5: LM-A performs inquiry and reports result .............................. 1065
Figure 2.6: Host A cancels inquiry ........................................................... 1066
Figure 2.7: LM-A terminates current inquiry............................................. 1066
Figure 2.8: Host A starts periodic inquiry ................................................. 1067
Figure 2.9: LM-A periodically performs an inquiry and reports result ...... 1067
Figure 2.10: LM-A terminates current inquiry............................................. 1068
Figure 2.11: Host A decides to exit periodic inquiry................................... 1068
Figure 3.1: Overview diagram for connection setup ................................ 1069
Figure 3.2: Host A requests connection with device B............................. 1070
Figure 3.3: LM-A and LM-B exchange features ....................................... 1070
Figure 3.4: LM-A requests host connection ............................................. 1071
Figure 3.5: Device B rejects connection request ..................................... 1071
Figure 3.6: Device B accepts connection request.................................... 1072
Figure 3.7: Device B accepts connection requests as master ................. 1072
Figure 3.8: LM-A starts adaptive frequency hopping ............................... 1073
Figure 3.9: Authentication initiated .......................................................... 1073
Figure 3.10: Pairing during connection setup ............................................ 1074
Figure 3.11: Authentication during connection setup................................. 1075
Figure 3.12: Starting encryption during connection setup.......................... 1076
Figure 3.13: LM-A and LM-B finishes connection setup ............................ 1076
Figure 3.14: Host A decides to disconnect ................................................ 1077
Figure 4.1: Authentication requested (Legacy Authentication) ................ 1078
Figure 4.2: Authentication requested (Secure Authentication) ................ 1079
Figure 4.3: Simple pairing, flow diagram.................................................. 1080
Figure 4.4: Optional OOB information collection (P-192 only) ................. 1081
Figure 4.5: Optional OOB information collection (P-192 and P-256) ....... 1081
Figure 4.6: Enable simple pairing ............................................................ 1082
Figure 4.7: Enable Secure Connections host support ............................. 1082
Figure 4.8: Set Authenticated_Payload_Timeout .................................... 1083
Figure 4.9: L2CAP connection request for a secure service.................... 1084
Figure 4.10: Optional OOB information transfer ........................................ 1084
Figure 4.11: Start simple pairing ................................................................ 1085
Figure 4.12: IO capability exchange .......................................................... 1086
Figure 4.13: Public key exchange.............................................................. 1087
Figure 4.14: Numeric comparison authentication ...................................... 1088
Figure 4.15: Numeric comparison authentication (failure on initiating
side) ....................................................................................... 1089
Figure 4.16: Numeric comparison failure on responding side.................... 1090
Figure 4.17: Passkey entry authentication................................................. 1091
Figure 4.18: Passkey entry failure on responding side .............................. 1092
Figure 4.19: Passkey entry failure on initiating side .................................. 1093
Figure 4.20: OOB authentication (P-192) .................................................. 1094
Figure 4.21: OOB authentication (P-256) .................................................. 1095
Figure 4.22: OOB authentication failure on initiating side.......................... 1096
Figure 4.23: DHKey checks ....................................................................... 1097
Figure 4.24: Calculate link key................................................................... 1098
Figure 4.25: Start encryption...................................................................... 1099
Figure 5.5: Any device that supports only SCO connections requests a
synchronous connection with a device .................................. 1136
Figure 5.6: Master renegotiates eSCO connection.................................. 1137
Figure 5.7: Slave renegotiates eSCO connection.................................... 1138
Figure 5.8: Synchronous disconnection of eSCO connection ................. 1139
Figure 5.9: Synchronous disconnection of SCO connection ................... 1139
Figure 5.10: Master requests synchronous connection
(EV3, EV4, EV5, 2-EV3, 2-EV5, 3-EV3, or 3-EV5)................ 1140
Figure 5.11: Slave requests synchronous connection
(EV3, EV4, EV5, 2-EV3, 2-EV5, 3-EV3, or 3-EV5)................ 1141
Figure 5.12: Master requests synchronous connection
(HV1, HV2, HV3, EV3, EV4, EV5, 2EV3, 2EV5, 3EV3
or 3EV5) ................................................................................ 1142
Figure 5.13: Slave requests synchronous connection (HV1, HV2,
or HV3) .................................................................................. 1143
Figure 5.14: Master renegotiates synchronous connection parameter
change ................................................................................... 1144
Figure 5.15: Slave renegotiates synchronous connection parameter
change ................................................................................... 1145
Figure 6.1: Sniff mode request................................................................. 1146
Figure 6.2: Exit sniff mode request .......................................................... 1147
Figure 6.3: Hold request .......................................................................... 1147
Figure 6.4: Master forces hold mode ....................................................... 1148
Figure 6.5: Slave forces hold mode ......................................................... 1149
Figure 6.6: Hold mode completes ............................................................ 1149
Figure 6.7: Park state request from master ............................................. 1150
Figure 6.8: Park state request from slave ................................................ 1151
Figure 6.9: Master unparks slave for supervision .................................... 1151
Figure 6.10: Master exits park state with slave.......................................... 1152
Figure 6.11: Slave exits park state with master ......................................... 1153
Figure 7.1: Host to Controller flow control ............................................... 1154
Figure 7.2: Controller to Host flow control ............................................... 1155
Figure 8.1: Entering local loopback mode ............................................... 1156
Figure 8.2: Looping back data in local loopback mode............................ 1157
Figure 8.3: Looping back commands in local loopback mode ................. 1157
Figure 8.4: Exiting local loopback mode .................................................. 1158
Figure 8.5: Entering remote loopback mode............................................ 1159
Figure 8.6: Looping back data in remote loopback mode ........................ 1159
Figure 8.7: Exiting remote loopback mode .............................................. 1160
Figure 9.1: Truncated paging ................................................................... 1161
Figure 9.2: Connectionless slave broadcast transmitter start .................. 1162
Figure 9.3: Synchronization train ............................................................. 1163
Figure 9.4: Connectionless slave broadcast receiver start ...................... 1164
Part G:
SAMPLE DATA
Part H:
SECURITY SPECIFICATION
Figure 3.1: Generation of unit key. When the unit key has been exchanged,
the initialization key is discarded in both devices. ................. 1314
Figure 3.2: Generating a combination key. The old link key (K) is discarded
after the exchange of a new combination key has
succeeded ............................................................................. 1315
Figure 3.3: Master link key distribution and computation of the corresponding
encryption key........................................................................ 1318
Figure 4.1: Stream ciphering for Bluetooth with E0. ................................ 1319
Figure 4.2: Functional description of the encryption procedure ............... 1322
Figure 4.3: Concept of the encryption engine. ......................................... 1323
Figure 4.4: Overview of the operation of the encryption engine. Between
each start of a packet (TX or RX), the LFSRs are
re-initialized. .......................................................................... 1325
Figure 4.5: Arranging the input to the LFSRs. ......................................... 1327
Figure 4.6: Distribution of the 128 last generated output symbols within the
LFSRs.................................................................................... 1328
Figure 5.1: Challenge-response for the Bluetooth. .................................. 1329
Figure 5.2: Challenge-response for symmetric key systems. .................. 1330
Figure 5.3: Challenge and response for secure authententication. ......... 1331
Figure 5.4: Challenge-response for secure authentication. ..................... 1331
Figure 6.1: Flow of data for the computation of E1. ................................. 1334
Figure 6.2: One round in Ar and A’r. ........................................................ 1336
Figure 6.3: Key scheduling in Ar. ............................................................. 1337
Figure 6.4: Key generating algorithmE2 and its two modes. Mode 1 is used
for unit and combination keys, while mode 2 is used for Kinit and
K master. ............................................................................... 1339
Figure 6.5: Generation of the encryption key........................................... 1339
Figure 7.1: Simple Pairing Security Phases ............................................ 1340
Figure 7.2: Public Key Exchange Details................................................. 1342
Figure 7.3: Authentication Stage 1 (High Level) ...................................... 1342
Figure 7.4: Authentication Stage 1: Numeric Comparison Protocol
Details.................................................................................... 1343
Figure 7.5: Authentication Stage 1: Out of Band Details.......................... 1345
Figure 7.6: Authentication Stage 1: Passkey Entry Details...................... 1347
Figure 7.7: Authentication Stage 2........................................................... 1348
Figure 7.8: Link Key Calculation .............................................................. 1349
Figure 8.1: AMP key generation in Host .................................................. 1361
Part A:
RADIO SPECIFICATION
Table 2.1: Operating frequency bands ....................................................... 36
Table 3.1: Power classes ........................................................................... 37
Table 3.2: Transmit Spectrum mask. .......................................................... 40
Table 3.3: Maximum allowable frequency drifts in a packet. ...................... 40
Table 3.4: π/4-DQPSK mapping ................................................................. 42
Table 3.5: 8DPSK mapping ........................................................................ 42
Table 4.1: Interference performance .......................................................... 47
Table 4.2: Out-of-band suppression (or rejection) requirements. ............... 48
Table 4.3: Interference Performance .......................................................... 50
Part B:
BASEBAND SPECIFICATION
Table 2.1: Control of the butterflies for the hop system .............................. 90
Table 2.2: Control for hop system .............................................................. 94
Table 6.1: Summary of access code types............................................... 117
Table 6.2: Packets defined for synchronous, asynchronous, and CSB
logical transport types ............................................................. 125
Table 6.3: Description of the FHS payload ............................................... 127
Table 6.4: Contents of SR field................................................................. 128
Table 6.5: Contents of page scan mode field ........................................... 128
Table 6.6: Logical link LLID field contents ................................................ 138
Table 6.7: Use of payload header flow bit on the logical links .................. 139
Table 6.8: Link control packets ................................................................. 141
Table 6.9: ACL packets ............................................................................ 141
Table 6.10: Synchronous packets .............................................................. 142
Table 8.1: Relationship between scan interval, and paging modes R0, R1,
and R2 ..................................................................................... 162
Table 8.2: Relationship between train repetition, and paging modes R0, R1
and R2 when synchronous links are present........................... 164
Table 8.3: Initial messaging during start-up.............................................. 165
Table 8.4: Increase of train repetition when synchronous links are
present..................................................................................... 172
Table 8.5: Messaging during inquiry routines ........................................... 174
Table 8.6: Channel classification descriptions.......................................... 188
Table 8.7: Sniff subrate anchor points ...................................................... 196
Table 8.8: Synchronization Train Packet Payload Body........................... 208
Table 9.1: Voice coding schemes supported on the air interface ............ 210
Table 9.2: CVSD parameter values. The values are based on a 16 bit
signed number output from the accumulator ........................... 212
Table A.1: Recommended Frequency Mask for Bluetooth ....................... 217
Part C:
LINK MANAGER PROTOCOL SPECIFICATION
Table 2.1: General response messages................................................... 236
Table 3.1: Feature Definitions .................................................................. 237
Table 3.2: Feature mask definitions (page 0) ........................................... 245
Table 3.3: Extended feature mask definition (page 1) .............................. 247
Table 3.4: Extended feature mask definition (page 2) .............................. 247
Table 4.1: Connection establishment PDU............................................... 250
Table 4.2: Detach PDU............................................................................. 250
Table 4.3: Legacy Power control PDU ..................................................... 251
Table 4.4: Enhanced Power control PDU ................................................. 251
Table 4.5: AFH PDU ................................................................................. 255
Table 4.6: Channel classification PDU ..................................................... 258
Table 4.7: Set supervision timeout PDU................................................... 260
Table 4.8: Quality-driven change of the data rate PDU ............................ 261
Table 4.9: Quality of Service PDU ............................................................ 262
Table 4.10: Paging scheme request PDU .................................................. 263
Table 4.11: Multi-slot packet control PDU .................................................. 265
Table 4.12: Enhanced Data Rate PDUs ..................................................... 266
Table 4.13: Encapsulated LMP PDUs ........................................................ 267
Table 4.14: Ping PDUs ............................................................................... 269
Table 4.15: Piconet clock adjustment PDUs .............................................. 270
Table 4.16: Authentication PDUs ............................................................... 274
Table 4.17: Pairing PDUs ........................................................................... 277
Table 4.18: Change link key PDU .............................................................. 280
Table 4.19: Change current link key PDU .................................................. 282
Table 4.20: Encryption handling PDU ........................................................ 284
Table 4.21: Encryption key size request PDU ............................................ 293
Table 4.22: Secure simple pairing PDUs.................................................... 294
Table 4.23: Setting the OOB_Authentication_Data parameter................... 295
Table 4.24: Request limited timing PDU..................................................... 309
Table 4.25: PDUs used for clock offset request. ........................................ 310
Table 4.26: PDUs used for LMP version request ....................................... 311
Table 4.27: PDUs used for features request .............................................. 312
Table 4.28: Name request PDUs................................................................ 314
Table 4.29: Role switch PDU...................................................................... 315
Table 4.30: Role switch PDU...................................................................... 316
Table 4.31: Hold mode PDUs ..................................................................... 319
Table 4.32: PDUs used for park state......................................................... 323
Part D:
ERROR CODES
Table 1.1: List of Possible Error Codes .................................................... 374
Part E:
HOST CONTROLLER INTERFACE FUNCTIONAL SPECIFICATION
Table 3.1: Overview of commands and events......................................... 403
Table 3.2: Generic events......................................................................... 404
Table 3.3: Device setup ............................................................................ 404
Table 3.4: Controller flow control .............................................................. 405
Table 3.5: Controller information .............................................................. 406
Table 3.6: Controller configuration ........................................................... 408
Table 3.7: Device discovery ..................................................................... 411
Table 3.8: Connection setup..................................................................... 414
Table 3.9: Remote information ................................................................. 419
Table 3.10: Synchronous connections ....................................................... 420
Table 3.11: Connection state...................................................................... 422
Table 3.12: Piconet structure...................................................................... 425
Table 3.13: Quality of service ..................................................................... 426
Table 3.14: Physical links ........................................................................... 428
Table 3.15: Host flow control ...................................................................... 430
Table 3.16: Link information ....................................................................... 433
Table 3.17: Authentication and encryption ................................................. 435
Table 3.18: Testing ..................................................................................... 443
Table 3.19: Alphabetical list of commands and events............................... 445
Table 3.20: Bluetooth Controller supporting LE requirements.................... 455
Table 3.21: Connectionless Slave Broadcast ............................................. 459
Part F:
MESSAGE SEQUENCE CHARTS
Part G:
SAMPLE DATA
Part H:
SECURITY SPECIFICATION
Table 1.1: Security algorithms ................................................................ 1306
Table 1.2: Entities used in authentication and encryption procedures. .. 1306
Table 4.1: Possible encryption modes for a slave in possession of a master
key. ........................................................................................ 1321
Table 4.2: The four primitive feedback polynomials. .............................. 1323
Table 4.3: The mappings T1 and T2. ..................................................... 1324
Table 4.4: Polynomials used when creating K’c. . ................................. 1326
Table 7.1: Terminology ........................................................................... 1340
Table 7.2: Inputs to f1 for the different protocols .................................... 1352
Table 7.3: Inputs to f3 for the different protocols .................................... 1354
Table 9.1: Nonce Formats. ..................................................................... 1363
Table 9.2: IV Construction. ..................................................................... 1365
Table 9.3: B0 Counter Mode Block Format. ........................................... 1365
Table 9.4: B1 Counter Mode Block Format. ........................................... 1366
Table 9.5: Encryption Mode Block Format. ............................................ 1367
Core System
Package
[Host volume]
Revision History
The Revision History is shown in the [Vol 0] Part C, Appendix.
Contributors
The persons who contributed to this specification are listed in the [Vol 0] Part C,
Appendix.
Web Site
This specification can also be found on the official Bluetooth web site:
https://www.bluetooth.org/en-us/specification/adopted-specifications
Use of Bluetooth Specifications and any related intellectual property is governed by the
Promoters Membership Agreement among the Promoter Members and Bluetooth SIG (the
“Promoters Agreement”), certain membership agreements between Bluetooth SIG and its
Adopter and Associate Members, including, but not limited to, the Membership Application, the
Bluetooth Patent/Copyright License Agreement and the Bluetooth Trademark License
Agreement (collectively, the “Membership Agreements”) and the Bluetooth Specification Early
Adopters Agreements (1.2 Early Adopters Agreements) among Early Adopter members of the
unincorporated Bluetooth SIG and the Promoter Members (the “Early Adopters Agreement”).
Certain rights and obligations of the Promoter Members under the Early Adopters Agreements
have been assigned to Bluetooth SIG by the Promoter Members.
Use of the Specification by anyone who is not a member of Bluetooth SIG or a party to an Early
Adopters Agreement (each such person or party, a “Member”) is prohibited. The use of any
portion of a Bluetooth Specification may involve the use of intellectual property rights ("IPR"),
including pending or issued patents, or copyrights or other rights. Bluetooth SIG has made no
search or investigation for such rights and disclaims any undertaking or duty to do so. The legal
rights and obligations of each Member are governed by the applicable Membership
Agreements, Early Adopters Agreement or Promoters Agreement. No license, express or
implied, by estoppel or otherwise, to any intellectual property rights are granted herein.
Any use of the Specification not in compliance with the terms of the applicable Membership
Agreements, Early Adopters Agreement or Promoters Agreement is prohibited and any such
prohibited use may result in (i) termination of the applicable Membership Agreements or Early
Adopters Agreement and (ii) liability claims by Bluetooth SIG or any of its Members for patent,
copyright and/or trademark infringement claims permitted by the applicable agreement or by
applicable law.
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3] page 3
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3] page 4
TABLE OF CONTENTS
Part A
LOGICAL LINK CONTROL AND ADAPTATION PROTOCOL
SPECIFICATION
1 Introduction ........................................................................................ 29
1.1 L2CAP Features ........................................................................ 29
1.2 Assumptions .............................................................................. 32
1.3 Scope ........................................................................................ 33
1.4 Terminology ............................................................................... 33
2 General Operation ............................................................................. 37
2.1 Channel Identifiers..................................................................... 37
2.2 Operation Between Devices ...................................................... 40
2.3 Operation Between Layers ........................................................ 41
2.4 Modes of Operation ................................................................... 42
2.5 Mapping Channels to Logical Links ........................................... 44
3 Data Packet Format ........................................................................... 45
3.1 Connection-oriented Channels in Basic L2CAP Mode .............. 45
3.2 Connectionless Data Channel in Basic L2CAP Mode ............... 46
3.3 Connection-oriented Channel in Retransmission/Flow Control/
Streaming Modes....................................................................... 47
3.3.1 L2CAP header fields ..................................................... 48
3.3.2 Control field (2 or 4 octets)............................................ 49
3.3.3 L2CAP SDU Length Field (2 octets) ............................. 51
3.3.4 Information Payload Field ............................................. 52
3.3.5 Frame Check Sequence (2 octets) ............................... 52
3.3.6 Invalid Frame Detection ................................................ 53
3.3.7 Invalid Frame Detection Algorithm................................ 53
3.4 Connection-Oriented Channels in LE Credit Based Flow Control
Mode.......................................................................................... 55
3.4.1 L2CAP Header Fields ................................................... 55
3.4.2 L2CAP SDU Length Field (2 octets) ............................. 55
3.4.3 Information Payload Field ............................................. 55
4 Signaling Packet Formats ................................................................. 57
4.1 Command Reject (code 0x01) ................................................... 60
4.2 Connection Request (code 0x02) .............................................. 61
4.3 Connection Response (code 0x03) ........................................... 63
4.4 Configuration Request (code 0x04) ........................................... 65
4.5 Configuration Response (code 0x05) ........................................ 67
4.6 Disconnection Request (code 0x06).......................................... 69
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3] page 5
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3] page 6
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3] page 7
Part B
SERVICE DISCOVERY PROTOCOL (SDP) SPECIFICATION
1 Introduction ...................................................................................... 219
1.1 General Description ................................................................. 219
1.2 Motivation ................................................................................ 219
1.3 Requirements .......................................................................... 219
1.4 Non-requirements and Deferred Requirements....................... 220
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3] page 8
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3] page 9
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3] page 10
Part C
GENERIC ACCESS PROFILE
1 Introduction ...................................................................................... 286
1.1 Scope ...................................................................................... 286
1.2 Symbols and Conventions ....................................................... 287
1.2.1 Requirement Status Symbols...................................... 287
1.2.2 Signaling diagram conventions ................................... 288
1.2.3 Notation for Timers and Counters ............................... 288
2 Profile Overview............................................................................... 289
2.1 Profile Stack............................................................................. 289
2.2 Profile Roles ............................................................................ 289
2.2.1 Roles when Operating over BR/EDR Physical
Transport..................................................................... 289
2.2.2 Roles when Operating over an LE Physical Transport290
2.3 User Requirements and Scenarios.......................................... 293
2.4 Profile Fundamentals............................................................... 293
2.5 Conformance ........................................................................... 293
3 User Interface Aspects .................................................................... 294
3.1 The User Interface Level ......................................................... 294
3.2 Representation of Bluetooth Parameters................................. 294
3.2.1 Bluetooth Device Address (BD_ADDR) ...................... 294
3.2.2 Bluetooth Device Name (the user-friendly name) ....... 295
3.2.3 Bluetooth Passkey (Bluetooth PIN)............................. 296
3.2.4 Class of Device ........................................................... 297
3.2.5 Appearance Characteristic.......................................... 298
3.3 Pairing ..................................................................................... 299
4 Modes – BR/EDR Physical Transport............................................. 300
4.1 Discoverability Modes.............................................................. 300
4.1.1 Non-discoverable Mode .............................................. 301
4.1.2 Limited Discoverable Mode......................................... 301
4.1.3 General Discoverable Mode ....................................... 303
4.2 Connectability Modes .............................................................. 304
4.2.1 Non-connectable Mode............................................... 304
4.2.2 Connectable Mode...................................................... 304
4.3 Bondable Modes...................................................................... 306
4.3.1 Non-bondable Mode ................................................... 306
4.3.2 Bondable Mode........................................................... 306
4.4 Synchronizability Modes .......................................................... 307
4.4.1 Non-synchronizable Mode .......................................... 307
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3] page 11
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3] page 12
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3] page 13
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3] page 14
Part D
TEST SUPPORT
1 Test Methodology ............................................................................ 414
1.1 BR/EDR Test Scenarios .......................................................... 414
1.1.1 Test Setup ................................................................... 414
1.1.2 Transmitter Test .......................................................... 415
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3] page 15
Part E
AMP MANAGER PROTOCOL SPECIFICATION
1 Introduction ...................................................................................... 443
1.1 General Description ................................................................. 443
2 General Operation ........................................................................... 444
2.1 Basic Capabilities .................................................................... 444
2.2 AMP Manager Channel Over L2CAP ...................................... 445
2.3 Using the AMP Manager Protocol ........................................... 446
2.3.1 Discovering a Remote AMP Manager......................... 446
2.3.2 Discovering Available Controllers on a Remote
Device ......................................................................... 446
2.3.3 Creation of AMP Physical Links.................................. 447
2.4 Controller IDs........................................................................... 448
2.5 Controller Types ...................................................................... 448
3 Protocol Description ....................................................................... 449
3.1 Packet Formats........................................................................ 449
3.2 AMP Command Reject (Code 0x01) ....................................... 451
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3] page 16
Part F
ATTRIBUTE PROTOCOL (ATT)
1 Introduction ...................................................................................... 471
1.1 Scope ...................................................................................... 471
1.2 Conformance ........................................................................... 471
2 Protocol Overview ........................................................................... 472
3 Protocol Requirements ................................................................... 473
3.1 Introduction .............................................................................. 473
3.2 Basic Concepts........................................................................ 473
3.2.1 Attribute Type.............................................................. 473
3.2.2 Attribute Handle .......................................................... 473
3.2.3 Attribute Handle Grouping .......................................... 474
3.2.4 Attribute Value............................................................. 474
3.2.5 Attribute Permissions .................................................. 474
3.2.6 Control-Point Attributes............................................... 476
3.2.7 Protocol Methods ........................................................ 476
3.2.8 Exchanging MTU Size ................................................ 476
3.2.9 Long Attribute Values.................................................. 476
3.2.10 Atomic Operations ...................................................... 477
3.3 Attribute PDU........................................................................... 477
3.3.1 Attribute PDU Format.................................................. 478
3.3.2 Sequential Protocol..................................................... 479
3.3.3 Transaction ................................................................. 480
3.4 Attribute Protocol PDUs........................................................... 481
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3] page 17
Part G
GENERIC ATTRIBUTE PROFILE (GATT)
1 Introduction ...................................................................................... 519
1.1 Scope ...................................................................................... 519
1.2 Profile Dependency ................................................................. 519
1.3 Conformance ........................................................................... 519
1.4 Bluetooth Specification Release Compatibility......................... 520
1.5 Conventions............................................................................. 520
2 Profile Overview............................................................................... 521
2.1 Protocol Stack.......................................................................... 521
2.2 Configurations and Roles ........................................................ 521
2.3 User Requirements and Scenarios.......................................... 522
2.4 Profile Fundamentals............................................................... 522
2.5 Attribute Protocol ..................................................................... 523
2.5.1 Overview ..................................................................... 523
2.5.2 Attribute Caching ........................................................ 524
2.5.3 Attribute Grouping....................................................... 525
2.5.4 UUIDs ......................................................................... 526
2.6 GATT Profile Hierarchy............................................................ 527
2.6.1 Overview ..................................................................... 527
2.6.2 Service ........................................................................ 528
2.6.3 Included Services........................................................ 528
2.6.4 Characteristic .............................................................. 529
2.7 Configured Broadcast .............................................................. 529
3 Service Interoperability Requirements .......................................... 530
3.1 Service Definition..................................................................... 530
3.2 Include Definition ..................................................................... 531
3.3 Characteristic Definition........................................................... 531
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3] page 18
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3] page 19
Part H
SECURITY MANAGER SPECIFICATION
1 Introduction ...................................................................................... 591
1.1 Scope ...................................................................................... 591
1.2 Conventions............................................................................. 591
1.2.1 Bit and Byte Ordering Conventions............................. 591
2 Security Manager ............................................................................. 592
2.1 Introduction .............................................................................. 592
2.2 Cryptographic Toolbox ............................................................. 594
2.2.1 Security function e ...................................................... 595
2.2.2 Random Address Hash function ah ............................ 595
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3] page 20
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3] page 21
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3] page 22
02 December 2014
Bluetooth SIG Proprietary
Core System Package [Host volume]
Part A
CONTENTS
1 Introduction ........................................................................................ 29
1.1 L2CAP Features ........................................................................ 29
1.2 Assumptions .............................................................................. 32
1.3 Scope ........................................................................................ 33
1.4 Terminology ............................................................................... 33
2 General Operation ............................................................................. 37
2.1 Channel Identifiers..................................................................... 37
2.2 Operation Between Devices ...................................................... 40
2.3 Operation Between Layers ........................................................ 41
2.4 Modes of Operation ................................................................... 42
2.5 Mapping Channels to Logical Links ........................................... 44
3 Data Packet Format ........................................................................... 45
3.1 Connection-oriented Channels in Basic L2CAP Mode .............. 45
3.2 Connectionless Data Channel in Basic L2CAP Mode ............... 46
3.3 Connection-oriented Channel in Retransmission/Flow Control/
Streaming Modes....................................................................... 47
3.3.1 L2CAP header fields ..................................................... 48
3.3.2 Control field (2 or 4 octets)............................................ 49
3.3.3 L2CAP SDU Length Field (2 octets) ............................. 51
3.3.4 Information Payload Field ............................................. 52
3.3.5 Frame Check Sequence (2 octets) ............................... 52
3.3.6 Invalid Frame Detection ................................................ 53
3.3.7 Invalid Frame Detection Algorithm................................ 53
3.4 Connection-Oriented Channels in LE Credit Based Flow Control
Mode.......................................................................................... 55
3.4.1 L2CAP Header Fields ................................................... 55
3.4.2 L2CAP SDU Length Field (2 octets) ............................. 55
3.4.3 Information Payload Field ............................................. 55
4 Signaling Packet Formats ................................................................. 57
4.1 Command Reject (code 0x01) ................................................... 60
4.2 Connection Request (code 0x02) .............................................. 61
4.3 Connection Response (code 0x03) ........................................... 63
4.4 Configuration Request (code 0x04) ........................................... 65
4.5 Configuration Response (code 0x05) ........................................ 67
4.6 Disconnection Request (code 0x06).......................................... 69
4.7 Disconnection Response (code 0x07) ....................................... 70
4.8 Echo Request (code 0x08) ........................................................ 70
4.9 Echo Response (code 0x09) ..................................................... 71
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3, Part A] page 25
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3, Part A] page 26
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3, Part A] page 27
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3, Part A] page 28
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3, Part A] page 29
1 INTRODUCTION
This section of the Bluetooth Specification defines the Logical Link Control and
Adaptation Layer Protocol, referred to as L2CAP. L2CAP provides connection-
oriented and connectionless data services to upper layer protocols with
protocol multiplexing capability and segmentation and reassembly operation.
L2CAP permits higher level protocols and applications to transmit and receive
upper layer data packets (L2CAP Service Data Units, SDU) up to 64 kilobytes
in length. L2CAP also permits per-channel flow control and retransmission.
The L2CAP layer provides logical channels, named L2CAP channels, which
are multiplexed over one or more logical links.
Figure 1.1 on page 30 breaks down L2CAP into its architectural components.
The Channel Manager provides the control plane functionality and is
responsible for all internal signaling, L2CAP peer-to-peer signaling and
signaling with higher and lower layers. It performs the state machine
functionality described in Section 6 on page 110 and uses message formats
described in Section 4 on page 57, and Section 5 on page 89. The
Retransmission and Flow Control block provides per-channel flow control and
error recovery using packet retransmission. The Resource Manager is
responsible for providing a frame relay service to the Channel Manager, the
Retransmission and Flow Control block and those application data streams
that do not require Retransmission and Flow Control services. It is responsible
for coordinating the transmission and reception of packets related to multiple
L2CAP channels over the facilities offered at the lower layer interface.
data
data
Upper data control
layer
(SDUs)
Segmentation (Reassembly )
Resource
Manager
Channel
Retransmission & Flow Control
L2CAP Manager
(commands)
layer Encapsulation & Scheduling
(PDUs)
Fragmentation (Recombination)
(f ragments)
• Protocol/channel multiplexing
L2CAP supports multiplexing over individual Controllers and across multiple
controllers. An L2CAP channel shall operate over one Controller at a time.
During channel setup, protocol multiplexing capability is used to route the
connection to the correct upper layer protocol.
For data transfer, logical channel multiplexing is needed to distinguish
between multiple upper layer entities. There may be more than one upper
layer entity using the same protocol.
• Segmentation and reassembly
With the frame relay service offered by the Resource Manager, the length of
transport frames is controlled by the individual applications running over
L2CAP. Many multiplexed applications are better served if L2CAP has
control over the PDU length. This provides the following benefits:
a) Segmentation will allow the interleaving of application data units in
order to satisfy latency requirements.
b) Memory and buffer management is easier when L2CAP controls
the packet size.
c) Error correction by retransmission can be made more efficient.
d) The amount of data that is destroyed when an L2CAP PDU is
corrupted or lost can be made smaller than the application's data unit.
e) The application is decoupled from the segmentation required to
map the application packets into the lower layer packets.
• Quality of Service
The L2CAP connection establishment process allows the exchange of
information regarding the quality of service (QoS) expected between two
Bluetooth devices. Each L2CAP implementation monitors the resources
used by the protocol and ensures that QoS contracts are honored.
For a BR/EDR or BR/EDR/LE Controller, L2CAP may support both
isochronous (Guaranteed) and asynchronous (Best Effort) data flows over
the same ACL logical link by marking packets as automatically-flushable or
non-automatically-flushable by setting the appropriate value for the
Packet_Boundary_Flag in the HCI ACL Data Packet (see [vol.2, part E]
Section 5.4.2 on page 472). Automatically-flushable L2CAP packets are
flushed according to the automatic flush timeout set for the ACL logical link
on which the L2CAP channels are mapped (see [vol.2, part E] Section 6.19
on page 486). Non-automatically-flushable L2CAP packets are not affected
by the automatic flush timeout and will not be flushed. All L2CAP packets
can be flushed by using the HCI Flush command (see [vol.2, part E] Section
7.3.4 on page 652).
For AMP Controllers, L2CAP places all asynchronous data flows going to
the same remote device over a single logical link (aggregation). L2CAP
places each isochronous data flow over its own logical link.
1.2 ASSUMPTIONS
The protocol is designed based on the following assumptions:
1. Controllers provide orderly delivery of data packets, although there might be
individual packet corruption and duplicates. For devices with a BR/EDR or
BR/EDR/LE Controller, no more than one ACL-U logical link exists between
any two devices. For devices with a given AMP Controller, more than one
AMP-U logical link may exist between any two devices. For devices with a
BR/EDR/LE or LE Controller, no more than one LE-U logical link exists
between any two devices.
2. Controllers always provide the impression of full-duplex communication
channels. This does not imply that all L2CAP communications are bi-
directional. Unidirectional traffic does not require duplex channels.
3. The L2CAP layer provides a channel with a degree of reliability based on the
mechanisms available in Controllers and with additional packet
segmentation, error detection, and retransmission that can be enabled in the
enhanced L2CAP layer. Some Controllers perform data integrity checks and
resend data until it has been successfully acknowledged or a timeout
occurs. Other Controllers will resend data up to a certain number of times
whereupon the data is flushed. Because acknowledgments may be lost,
timeouts may occur even after the data has been successfully sent. Note
that the use of baseband broadcast packets in a BR/EDR or BR/EDR/LE
Controller is unreliable and that all broadcasts start the first segment of an
L2CAP packet with the same sequence bit.
4. Controllers provide error and flow control for data going over the air and HCI
flow control exists for data going over an HCI transport but some
applications will want better error control than some controllers provide.
Also, moving channels between Controllers requires L2CAP flow and error
control. The Flow and Error Control block provides four modes. Enhanced
Retransmission mode and Retransmission Mode offer segmentation, flow
control and L2CAP PDU retransmissions. Flow control mode offers just the
segmentation and flow control functions. Streaming mode offers
segmentation and receiver side packet flushing.
1.3 SCOPE
The following features are outside the scope of L2CAP’s responsibilities:
• L2CAP does not transport synchronous data designated for SCO or eSCO
logical transports.
• L2CAP does not support a reliable broadcast channel. See Section 3.2 on
page 46.
1.4 TERMINOLOGY
The following formal definitions apply:
Term Description
The system layer above the L2CAP layer, which exchanges data with
L2CAP in the form of SDUs. The upper layer may be represented by
Upper layer an application or higher protocol entity known as the Service Level
Protocol. The interface of the L2CAP layer with the upper layer is not
specified.
The system layer below the L2CAP layer, which exchanges data with
the L2CAP layer in the form of PDUs, or fragments of PDUs. The
lower layer is mainly represented within the Controller, however a
Lower layer Host Controller Interface (HCI) may be involved, such that an HCI
host driver could also be seen as the lower layer. Except for the HCI
functional specification (in case HCI is involved) the interface between
L2CAP and the lower layer is not specified.
Term Description
A B-frame is a PDU used in the Basic L2CAP mode for L2CAP data
Basic information
packets. It contains a complete SDU as its payload, encapsulated by
frame (B-frame)
a Basic L2CAP header.
An I-frame is a PDU used in Enhanced Retransmission Mode,
Information frame Streaming mode, Retransmission mode, and Flow Control Mode. It
(I-frame) contains an SDU segment and additional protocol information, encap-
sulated by a Basic L2CAP header
An S-frame is a PDU used in Enhanced Retransmission Mode,
Supervisory frame Retransmission Mode, and Flow Control Mode. It contains protocol
(S-frame) information only, encapsulated by a Basic L2CAP header, and no
SDU data.
Term Description
Term Description
2 GENERAL OPERATION
L2CAP is based around the concept of ’channels’. Each one of the endpoints of
an L2CAP channel is referred to by a channel identifier (CID).
The characteristics of each fixed channel are defined on a per channel basis.
Fixed channel characteristics include configuration parameters (e.g., reliability,
MTU size, QoS), security, and the ability to change parameters using the
L2CAP configuration mechanism. Table 2.1 lists the defined fixed channels,
provides a reference to where the associated channel characteristics are
defined and specifies the logical link over which the channel may operate.
Fixed channels are available as soon as the ACL-U or LE-U logical link is set
up. All initialization that is normally performed when a channel is created shall
be performed for each of the supported fixed channels when the ACL-U or LE-
U logical link is set up. Fixed channels shall only run over ACL-U or LE-U
logical links and shall not be moved.
Local
CID CID CID
MOVE device
N N N
AMP-U
ACL-U
LE-U
Remote Remote Remote Remote
address A address B address C device
Address may be
equal
The CID name space for the LE-U logical link is as follows:
There are also a number of CIDs reserved for special purposes. The L2CAP
signalling channels are examples of reserved channels.Fixed channel 0x0001
is used to create and establish connection-oriented data channels and to
negotiate changes in the characteristics of connection-oriented channels and
to discover characteristics of the connectionless channel operating over the
ACL-U logical link.
The L2CAP signaling channel and all supported fixed channels are available
immediately when the ACL-U logical link is established between two devices.
Another CID (0x0002) is reserved for all incoming and outgoing connectionless
data traffic, whether broadcast or unicast. Connectionless data traffic may flow
immediately once the ACL-U logical link is established between two devices
and once the transmitting device has determined that the remote device
supports connectionless traffic.
CID
CID
CID
CID
CID
Device #1 CID CID
Device #2
CID CID
L2CAP L2CAP
Entity Entity
Device #3 Device #4
Table 2.3 describes the various channel types and their source and destination
identifiers. A dynamically allocated CID is allocated to identify, along with the
logical link, the local endpoint and shall be in the range 0x0040 to 0xFFFF.
Section 6 on page 110 describes the state machine associated with each
connection-oriented channel with a dynamically allocated CID. Section 3.1 on
page 45 and Section 3.3 on page 47 describe the packet format associated
with connection-oriented channels. Section 3.2 on page 46 describes the
packet format associated with the connectionless channel.
L2CAP Signaling 0x0001 and 0x0005 (fixed) 0x0001 and 0x0005 (fixed)
Table 2.3: Types of Channel Identifiers
Upper Layer
L2CAP Layer
Lower Layer
The modes are enabled using the configuration procedure described in Section
7.1. The Basic L2CAP Mode shall be the default mode, which is used when no
other mode is agreed. Enhanced Retransmission mode shall be used for all
reliable channels created over AMP-U logical links and for ACL-U logical links
operating as described in Section 7.10. Enhanced Retransmission mode
should be enabled for reliable channels created over ACL-U logical links not
operating as described in Section 7.10. Streaming mode shall be used for
streaming applications created over AMP-U logical links and ACL-U logical
links operating as described in Section 7.10. Streaming mode should be
enabled for streaming applications created over ACL-U logical links not
operating as described in Section 7.10. Either Enhanced Retransmission mode
or Streaming mode should be enabled when supported by both L2CAP entities.
Flow Control Mode and Retransmission mode shall only be enabled when
communicating with L2CAP entities that do not support either Enhanced
Retransmission mode or Streaming mode.
In Flow Control Mode no retransmissions take place, but missing PDUs are
detected and can be reported as lost.
In Retransmission Mode a timer is used to ensure that all PDUs are delivered
to the peer, by retransmitting PDUs as needed. A go-back-n repeat mechanism
is used to simplify the protocol and limit the buffering requirements.
1. Specification of the Bluetooth System v1.1 (Feb 22nd 2001): volume 1, part D.
the SREJ S-frame to improve the efficiency of error recovery and adds an RNR
S-frame to replace the R-bit for reporting a local busy condition.
Streaming mode is for real-time isochronous traffic. PDUs are numbered but
are not acknowledged. A finite flush timeout is set on the sending side to flush
packets that are not sent in a timely manner. On the receiving side if the
receive buffers are full when a new PDU is received then a previously received
PDU is overwritten by the newly received PDU. Missing PDUs can be detected
and reported as lost. TxWindow size is not used in Streaming mode.
Note: Although L2CAP Basic mode may be used for L2CAP channels
operating over ACL-U logical links, only L2CAP channels which have been
configured to use Enhanced Retransmission mode or Streaming mode may be
moved to operate over an AMP-U logical link. (see Section 4.16).
LE Credit Based Flow Control Mode is used for LE L2CAP connection oriented
channels for flow control using a credit based scheme for L2CAP data (i.e. not
signaling packets). This is the only mode that shall be used for LE L2CAP
connection oriented channels.
L2CAP channels used for multiplexing layers such as RFCOMM can serve a
variety of higher layer protocols. In cases where the local device and remote
device have mutual support for an AMP and complementary support for profiles
on a multiplexing layer which requires reliability (e.g. RFCOMM), the multiplexing
layer should be configured to use Enhanced Retransmission mode to ensure
that profiles utilizing the multiplexer are not prevented from being moved to the
AMP-U logical link. Similarly, in cases where the local device and remote device
have mutual support for an AMP and complementary support for profiles on a
multiplexing layer which does not require reliability, the multiplexing layer should
be configured to use Streaming mode to ensure that profiles utilizing the
multiplexer are not prevented from being moved to the AMP-U logical link.
All Best Effort and Guaranteed channels going over a BR/EDR physical link
between two devices shall be mapped to a single ACL-U logical link. All Best
Effort channels going over an AMP physical link between two Controllers shall
be mapped to a single AMP-U logical link while each Guaranteed channel
going between two Controllers shall be mapped to its own AMP-U logical link
with one AMP-U logical link per Guaranteed channel. All channels going over
an LE physical link between two devices shall be treated as best effort and
mapped to a single LE-U logical link.
Basic L2CAP
header
Channel
Length Information payload
ID
LSB 16 16 MSB
Figure 3.1: L2CAP PDU format in Basic L2CAP mode on connection-oriented channels (field
sizes in bits)
configuration (see Section 5.1 on page 89). The minimum supported MTU
values for the signaling PDUs are shown in Table 4.1 on page 57).
Basic L2CAP
header
Basic L2CAP
header
Channel
Length Control3 FCS1
ID
LSB 16 16 16 or 32 0 or 16
MSB
Supervisory frame (S-frame)
Basic L2CAP
header
L2CAP
Channel
Length Control3 SDU, Information Payload FCS1
ID
Length2
LSB 16 16 16 or 32 0 or 16 0 or 16
MSB
Information frame (I-frame)
1
FCS is optional
2
Only present in the “Start of L2CAP SDU” frame, SAR=01b
3
Standard and Enhanced Control is 16 bits, Extended Control is 32 bits
Figure 3.3: L2CAP PDU formats in Flow Control and Retransmission Modes
The Control Field identifies the type of frame. There are three different Control
Field formats: the Standard Control Field, the Enhanced Control Field, and the
Extended Control Field. The Standard Control Field shall be used for
Retransmission mode and Flow Control mode. The Enhanced Control Field
shall be used for Enhanced Retransmission mode and Streaming mode. The
Extended Control Field may be used for Enhanced Retransmission mode and
Streaming mode. The Control Field will contain sequence numbers where
applicable. Its coding is shown in Table 3.1 on page 49, Table 3.2 on page 50,
and Table 3.3 on page 50. There are two different frame types, Information
frame types and Supervisory frame types. Information and Supervisory frames
types are distinguished by the least significant bit in the Control Field, as
shown in Table 3.1, Table 3.2 on page 50, and Table 3.3 on page 50.
• Information frame format (I-frame)
The I-frames are used to transfer information between L2CAP entities. Each
I-frame has a TxSeq(Send sequence number), ReqSeq(Receive sequence
number) which may or may not acknowledge additional I-frames received by
the data link layer entity. Each I-frame with a Standard Control field has a
retransmission bit (R bit) that affects whether I-frames are retransmitted.
Each I-frame with an Enhanced Control Field or an Extended Control Field
has an F-bit that is used in Poll/Final bit functions.
The SAR field in the I-frame is used for segmentation and reassembly
control. The L2CAP SDU Length field specifies the length of an SDU,
including the aggregate length across all segments if segmented.
• Supervisory frame format (S-frame)
S-frames are used to acknowledge I-frames and request retransmission of I-
frames. Each S-frame has an ReqSeq sequence number which may
acknowledge additional I-frames received by the data link layer entity. Each
S-frame with a Standard Control Field has a retransmission bit (R bit) that
affects whether I-frames are retransmitted. Each S-frame with an Enhanced
Control field or an Extended Control Field has a Poll bit (P-bit) and a Final bit
(F-bit) and does not have an R-bit.
Defined types of S-frames are RR (Receiver Ready), REJ (Reject), RNR
(Receiver Not Ready) and SREJ (Selective Reject).
Frame
type 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
Frame
type 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
Frame
type 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
I ReqSeq F 0
TxSeq SAR
S ReqSeq F 1
X X X X X P S
X denotes reserved bits, which shall be set to 0.
• Poll - P (1 bit)
The P-bit is set to 1 to solicit a response from the receiver. The receiver shall
respond immediately with a frame with the F-bit set to 1.
• Final - F (1 bit)
The F-bit is set to 1 in response to an S-frame with the P bit set to 1.
When an SDU spans more than one I-frame, the first I-frame in the sequence
shall be identified by SAR=01b=”Start of L2CAP SDU”. The L2CAP SDU
Length field shall specify the total number of octets in the SDU. The L2CAP
SDU Length field shall be present in I-frames with SAR=01b (Start of L2CAP
SDU) and shall not be used in any other I-frames. When the SDU is
unsegmented (SAR=00b), the L2CAP SDU Length field is not needed and
shall not be present.
The Frame Check Sequence (FCS) is 2 octets. The FCS is constructed using
the generator polynomial g(D) = D16 + D15 + D2 + 1 (see Figure 3.4). The 16 bit
LFSR is initially loaded with the value 0x0000, as depicted in Figure 3.5. The
switch S is set in position 1 while data is shifted in, LSB first for each octet.
After the last bit has entered the LFSR, the switch is set in position 2, and the
register contents are transmitted from right to left (i.e. starting with position 15,
then position 14, etc.). The FCS covers the Basic L2CAP header, Control,
L2CAP-SDU length and Information payload fields, if present, as shown in
Figure 3.3 on page 47.
D0 D2 D15 S 2 D16
1
FCS out
Position 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Position 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
LFSR 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1. I Frame
Length = 14
Control = 0x0002 (SAR=00b, ReqSeq=000000b, R=0b, TxSeq=000001b)
Information Payload = 00 01 02 03 04 05 06 07 08 09 (10 octets, hexadeci-
mal notation)
==> FCS = 0x6138
==> Data to Send = 0E 00 40 00 02 00 00 01 02 03 04 05 06 07 08 09 38 61
(hexadecimal notation)
2. RR Frame
Length = 4
Control = 0x0101 (ReqSeq=000001b, R=0b, S=00b)
==> FCS = 0x14D4
==> Data to Send = 04 00 40 00 01 01 D4 14 (hexadecimal notation)
For Retransmission mode and Flow Control mode, a received PDU shall be
regarded as invalid, if one of the following conditions occurs:
1. Contains an unknown CID.
2. Contains an FCS error.
3. Contains a length greater than the maximum PDU payload size (MPS).
4. I-frame that has fewer than 8 octets.
5. I-frame with SAR=01b (Start of L2CAP SDU) that has fewer than 10 octets.
6. I-frame with SAR bits that do not correspond to a normal sequence of either
unsegmented or start, continuation, end for the given CID.
7. S-frame where the length field is not equal to 4.
1. Check the CID. If the PDU contains an unknown CID then it shall be
ignored.
2. Check the FCS. If the PDU contains an FCS error then it shall be
ignored. If the channel is configured to use "No FCS" then the PDU
is considered to have a good FCS (no FCS error).
If the algorithm is used for Retransmission mode or Flow control mode then it
shall be used instead of Invalid Frame detection described in Section 3.3.6.
Basic L2CAP
header
L2CAP SDU
Length Channel ID Information Payload
Length1
LSB 16 16 16 MSB
Figure 3.6: L2CAP PDU format in LE Credit Based Flow Control Mode
The first LE-frame of the SDU shall contain the L2CAP SDU Length field that
shall specify the total number of octets in the SDU. All subsequent LE-frames
that are part of the same SDU shall not contain the L2CAP SDU Length field.
The number of octets contained in the first LE-frame information payload of the
SDU is equal to the L2CAP header length field minus 2 octets. All subsequent
LE-frames of the same SDU contain the number of octets in the information
payload equal to the L2CAP header length field.
If the SDU length field value exceeds the receiver's MTU, the receiver shall
disconnect the channel. If the payload length of any LE-frame exceeds the
receiver's MPS, the receiver shall disconnect the channel. If the sum of the
payload lengths for the LE-frames exceeds the specified SDU length, the
receiver shall disconnect the channel.
This section describes the signaling commands passed between two L2CAP
entities on peer devices. All signaling commands are sent over a signaling
channel. The signaling channel for managing channels over ACL-U logical
links shall use CID 0x0001 and the signaling channel for managing channels
over LE-U logical links shall use CID 0x0005. Signaling channels are available
as soon as the lower layer logical transport is set up and L2CAP traffic is
enabled. Figure 4.1 on page 57 illustrates the general format of L2CAP PDUs
containing signaling commands (C-frames). Multiple commands may be sent in
a single C-frame over Fixed Channel CID 0x0001 while only one command per
C-frame shall be sent over Fixed Channel CID 0x0005. Commands take the
form of Requests and Responses. All L2CAP implementations shall support
the reception of C-frames with a payload length that does not exceed the
signaling MTU. The minimum supported payload length for the C-frame
(MTUsig) is defined in Table 4.1 on page 57. L2CAP implementations should
not use C-frames that exceed the MTUsig of the peer device. If a device
receives a C-frame that exceeds its MTUsig then it shall send a Command
Reject containing the supported MTUsig. Implementations shall be able to
handle the reception of multiple commands in an L2CAP packet sent over
Fixed Channel CID 0x0001.
Basic L2CAP
header
• Identifier (1 octet)
The Identifier field is one octet long and matches responses with requests.
The requesting device sets this field and the responding device uses the
same value in its response. Within each signalling channel a different
Identifier shall be used for each successive command. Following the original
transmission of an Identifier in a command, the Identifier may be recycled if
all other Identifiers have subsequently been used.
RTX and ERTX timers are used to determine when the remote end point is
not responding to signaling requests. On the expiration of a RTX or ERTX
timer, the same identifier shall be used if a duplicate Request is re-sent as
stated in Section 6.1.7 on page 122.
A device receiving a duplicate request on a particular signalling channel
should reply with a duplicate response on the same signalling channel. A
command response with an invalid identifier is silently discarded. Signaling
identifier 0x00 is an illegal identifier and shall never be used in any
command.
• Length (2 octets)
The Length field is two octets long and indicates the size in octets of the data
field of the command only, i.e., it does not cover the Code, Identifier, and
Length fields.
• Data (0 or more octets)
The Data field is variable in length. The Code field determines the format of
the Data field. The length field determines the length of the data field.
When multiple commands are included in an L2CAP packet and the packet
exceeds the signaling MTU (MTUsig) of the receiver, a single Command Reject
packet shall be sent in response. The identifier shall match the first Request
command in the L2CAP packet. If only Responses are recognized, the packet
shall be silently discarded.
Figure 4.3 shows the format of the Command Reject packet. The data fields are:
• Reason (2 octets)
The Reason field describes why the Request packet was rejected, and is set
to one of the Reason codes in Table 4.3.
Other Reserved
Table 4.3: Reason Code Descriptions
field shall be 4 octets containing the local (first) and remote (second) channel
endpoints (relative to the sender of the Command Reject) of the disputed
channel. The remote endpoint is the source CID from the rejected command.
The local endpoint is the destination CID from the rejected command. If the
rejected command contains only one of the channel endpoints, the other one
shall be replaced by the null CID 0x0000.
0x0001-0x0EFF Fixed, SIG PSM is fixed for all PS may be obtained via SDP or
(Note 1) assigned implementations. may be assumed for a fixed ser-
vice. Protocol used is indicated
by the PSM as defined in the
Assigned Numbers page.
>0x1000 Dynamic PSM may be fixed PSM shall be obtained via SDP
for a given imple- upon every reconnection. PSM
mentation or may for one direction will typically be
be assigned at the different from the other direction.
time the service is
registered in SDP.
Table 4.5: PSM ranges and usage
1. PSMs shall be odd and the least significant bit of the most significant byte shall be
zero, hence the following ranges do not contain valid PSMs: 0x0100-0x01FF,
0x0300-0x03FF, 0x0500-0x05FF, 0x0700-0x07FF, 0x0900-0x09FF, 0x0B00-
0x0BFF, 0x0D00-0x0DFF, 0x0F00-0x0FFF. All even values are also not valid as
PSMs.
Result Status
Value Description
Value Description
0x0005 Reserved
0x0006 Connection refused – Invalid Source CID
0x0007 Connection refused – Source CID already allocated
Other Reserved.
Table 4.6: Result values (Continued)
• Status (2 octets)
Only defined for Result = Pending. Indicates the status of the connection.
The status is set to one of the values shown in Table 4.7 on page 64.
Value Description
See Section 7.1 on page 131 for details of the configuration procedure.
Configuration Options
MSB LSB
Reserved C
The options sent in the Response depend on the value in the Result field.
Figure 4.8 on page 67 defines the format of the Configuration Response
packet. See also Section 7.1 on page 131 for details of the configuration
process.
Result Config
MSB LSB
Reserved C
When both L2CAP entities support the Extended Flow Specification option,
the Continuation flag shall not be used and shall be set to zero in all
Configuration Request and Response packets.
More configuration responses will follow when C is set to one. This flag
indicates that the parameters included in the response are a partial subset of
parameters being sent by the device sending the Response packet.
The other flag bits are reserved and shall be set to zero. L2CAP
implementations shall ignore these bits.
• Result (2 octets)
The Result field indicates whether or not the Request was acceptable. See
Table 4.8 on page 68 for possible result codes.
Result Description
0x0000 Success
0x0004 Pending
0x0005 Failure - flow spec rejected
Other Reserved
• Configuration Options
This field contains the list of parameters being configured. These are
defined in Section 5 on page 89. On a successful result (Result=0x0000)
and pending result (Result=0x0004), these parameters contain the return
values for any wild card parameter values (see Section 5.3 on page 92) and
“adjustments” to non-negotiated configuration parameter values contained in
the request. A response with the result code of 0x0000 (Success) is also
referred to as a positive response.
On an unacceptable parameters failure (Result=0x0001) the rejected
parameters shall be sent in the response with the values that would have
been accepted if sent in the original request. Any missing configuration
parameters in the Configuration Request are assumed to have their default
value or previously agreed value and they too shall be included in the
Configuration Response if they need to be changed. A response with the
result code of 0x0001 is also referred to as a negative response.
On an unknown option failure (Result=0x0003), the option(s) that contain an
option type field that is not understood by the recipient of the Request shall
be included in the Response unless they are hints. Hints are those options in
the Request that are skipped if not understood (see Section 5 on page 89).
Hints shall not be included in the Response and shall not be the sole cause
for rejecting the Request.
The SCID and DCID are relative to the sender of this request and shall match
those of the channel to be disconnected. If the DCID is not recognized by the
receiver of this message, a CommandReject message with ’invalid CID’ result
code shall be sent in response. If the receiver finds a DCID match but the SCID
fails to find the same match, the request should be silently discarded.
Data (optional)
Data (optional)
InfoType
Value Description
Value Description
L2CAP entities shall not send an Information Request packet with InfoType
0x0003 over Fixed Channel CID 0x0001 until first verifying that the Fixed
Channels bit is set in the Extended feature mask of the remote device. Support
for fixed channels is mandatory for devices with BR/EDR/LE or LE Controllers.
Information Request and Information Response shall not be used over Fixed
Channel CID 0x0005.
Data (optional)
Value Description
0x0000 Success
0x0001 Not supported
Table 4.10: Information Response Result values
Value Description
Other Reserved
Table 4.10: Information Response Result values (Continued)
Data Length
InfoType Data (octets)
Note: the L2CAP feature mask was introduced in Bluetooth v1.2 and contains
features introduced after Bluetooth v1.1.
5 FCS Option 0 5
6 Extended Flow Specification for BR/EDR 0 6
7 Fixed Channels 0 7
An L2CAP entity shall not transmit on any fixed channel (with the exception of
the L2CAP signaling channel) until it has received a Fixed Channels Supported
InfoType from the peer L2CAP entity indicating support for the channel, or has
received a valid signaling packet from the remote device on the Fixed channel.
All packets received on a non-supported fixed channel shall be ignored.
Controller ID
Result Status
Result Description
Result Description
• Status (2 octets)
Only defined for Result = Pending. Indicates the status of the connection.
The status is set to one of the values shown in Table 4.15.
Value Description
Other Reserved
Table 4.15: Status values
Result Description
Other Reserved
Table 4.16: Result values
Result Description
Initiator CID
The LE slave Host will receive an indication from the LE slave Controller when
the connection parameters have been updated. In devices supporting HCI, this
Result
Result Description
MTU MPS
Initial Credits
0x0001- Fixed, SIG LE_PSM is fixed for all LE_PSM may be assumed for fixed
0x007F assigned implementations service. Protocol used is indicated
by the LE_PSM as defined in the
Assigned Numbers page.
0x0080- Dynamic LE_PSM may be fixed LE_PSM shall be obtained from the
0x00FF for a given implementa- service in GATT upon every recon-
tion or may be assigned nection. LE_PSM for one direction
at the time the service is will typically be different from the
registered in GATT other direction.
the Source CID represents the channel endpoint on the device sending the
request and receiving the response.
• Maximum Transmission Unit – MTU (2 octets)
The MTU field specifies the maximum SDU size (in octets) that the L2CAP
layer entity sending the LE Credit Based Connection Request can receive
on this channel. L2CAP implementations shall support a minimum MTU size
of 23 octets.
• Maximum PDU Size – MPS (2 octets)
The MPS field specifies the maximum payload size (in octets) that the
L2CAP layer entity sending the LE Credit Based Connection Request is
capable of receiving on this channel. L2CAP implementations shall support
a minimum MPS of 23 octets and may support an MPS up to 65533 octets.
• Initial Credits – (2 octets)
The initial credit value indicates the number of LE-frames that the peer
device can send to the L2CAP layer entity sending the LE Credit Based
Connection Request. The initial credit value shall be in the range of 0 to
65535.
Result
Value Description
0x0003 Reserved
0x0004 Connection refused – no resources available
0x0005 Connection refused – insufficient authentication
and profiles explicitly require support for a larger MTU. The minimum MTU for a
channel is the larger of the L2CAP minimum 48 octet MTU and any MTU explicitly
required by the protocols and profiles using that channel. (Note: the MTU is only
affected by the profile directly using the channel. For example, if a service
discovery transaction is initiated by a non service discovery profile, that profile
does not affect the MTU of the L2CAP channel used for service discovery).
The MTU to be used on this channel for the traffic flowing in the opposite
direction will be established when the remote device sends its own
Configuration Request as explained in Section 4.4 on page 65.
If the remote device returns a negative response to this option and the local
device cannot honor the proposed value, then it shall either continue the
configuration process by sending a new request with the original value, or
disconnect the channel. The flush timeout applies to all channels on the same
ACL logical transport but may be overridden on a packet by packet basis by
marking individual L2CAP packets as non-automatically-flushable via the
Packet_Boundary_Flag in the HCI ACL Data Packet (see Section 1.1 on page
29).
1. The default MTU was selected based on the payload carried by two baseband DH5 packets
(2*341=682 octets) minus the baseband ACL headers (2*2=4 octets) and a 6-octet L2CAP
header. Note that the L2CAP header length is 4 octets (see Section 3.3.1) but for historical
reasons an L2CAP header length of 6 bytes is used.
In a configuration request, this option describes the outgoing traffic flow from
the device sending the request. In a positive Configuration Response, this
option describes the incoming traffic flow agreement to the device sending the
response. In a negative Configuration Response, this option describes the
preferred incoming traffic flow to the device sending the response.
If a configuration request contains any QoS option parameters set to “do not
care” then the configuration response shall set the same parameters to “do not
care”. This rule applies for both Best Effort and Guaranteed Service.
1. Internet Engineering Task Force, “A Proposed Flow Specification”, RFC 1363, September 1992.
0 31
0x03 length=22 Flags service type
Token Rate
Latency (microseconds)
Figure 5.4: Quality of Service (QoS) option format containing Flow Specification
Value Description
0x00 No traffic
The Token Rate signalled between two L2CAP peers is the data transmitted
by the application and shall exclude the L2CAP protocol overhead. The
Token Rate signalled over the interface between L2CAP and the Link
Manager shall include the L2CAP protocol overhead. Furthermore the Token
Rate value signalled over this interface may also include the aggregation of
multiple L2CAP channels onto the same ACL logical transport.
The Token Rate is the rate with which traffic credits are provided. Credits
can be accumulated up to the Token Bucket Size. Traffic credits are
consumed when data is transmitted by the application. When traffic is
transmitted, and there are insufficient credits available, the traffic is non-
conformant. The Quality of Service guarantees are only provided for
conformant traffic. For non-conformant traffic there may not be sufficient
resources such as bandwidth and buffer space. Furthermore non-
conformant traffic may violate the QoS guarantees of other traffic flows.
The Token Rate is specified in octets per second. The value 0x00000000
indicates no token rate is specified. This is the default value and means “do
not care”. When the Guaranteed service is selected, the default value shall
not be used. The value 0xFFFFFFFF is a wild card matching the maximum
token rate available. The meaning of this value depends on the service type.
For best effort, the value is a hint that the application wants as much
bandwidth as possible. For Guaranteed service the value represents the
maximum bandwidth available at the time of the request.
• Token Bucket Size (4 octets)
The Token Bucket Size specifies a limit on the 'burstiness' with which the
application may transmit data. The application may offer a burst of data
equal to the Token Bucket Size instantaneously, limited by the Peak
Bandwidth (see below). The Token Bucket Size is specified in octets.
The Token Bucket Size signalled between two L2CAP peers is the data
transmitted by the application and shall exclude the L2CAP protocol
overhead. The Token Bucket Size signalled over the interface between
L2CAP and Link Manager shall include the L2CAP protocol overhead.
Furthermore the Token Bucket Size value over this interface may include the
aggregation of multiple L2CAP channels onto the same ACL logical
transport.
The value of 0x00000000 means that no token bucket is needed; this is the
default value. When the Guaranteed service is selected, the default value
shall not be used. The value 0xFFFFFFFF is a wild card matching the
maximum token bucket available. The meaning of this value depends on the
service type. For best effort, the value indicates the application wants a
bucket as big as possible. For Guaranteed service the value represents the
maximum L2CAP SDU size.
The Token Bucket Size is a property of the traffic carried over the L2CAP
channel. The Maximum Transmission Unit (MTU) is a property of an L2CAP
implementation. For the Guaranteed service the Token Bucket Size shall be
smaller or equal to the MTU.
0 31
Value Description
The Basic L2CAP mode is the default. If Basic L2CAP mode is requested
then all other parameters shall be ignored.
Enhanced Retransmission mode should be enabled if a reliable channel has
been requested. Enhanced Retransmission mode shall only be sent to an
L2CAP entity that has previously advertised support for the mode in its
Extended Feature Mask (see section 4.12).
Streaming mode should be enabled if a finite L2CAP Flush Time-Out is set
on an L2CAP connection. Streaming mode shall only be sent to a device
that has previously advertised support for the mode in the Extended Feature
Mask (see section 4.12).
Flow Control mode and Retransmission mode shall only be used for
backwards compatibility with L2CAP entities that do not support Enhanced
Retransmission mode or Streaming mode.
• TxWindow size (1 octet)
This field specifies the size of the transmission window for Flow Control
mode, Retransmission mode, and Enhanced Retransmission mode. The
range is 1 to 32 for Flow Control mode and Retransmission mode. The
range is 1 to 63 for Enhanced Retransmission mode.
In Retransmission mode and Flow Control mode this parameter should be
negotiated to reflect the buffer sizes allocated for the connection on both
sides. In general, the Tx Window size should be made as large as possible
to maximize channel utilization. Tx Window size also controls the delay on
flow control action. The transmitting device can send as many PDUs fit
within the window.
In Enhanced Retransmission mode this value indicates the maximum
number of I-frames that the sender of the option can receive without
acknowledging some of the received frames. It is not negotiated. It is an
informational parameter that each L2CAP entity can specify separately. In
general, the TxWindow size should be made as large as possible to
maximize channel utilization. The transmitting L2CAP entity can send as
many PDUs as will fit within the receiving L2CAP entity's TxWindow.
TxWindow size values in a Configuration Response indicate the maximum
number of packets the sender can send before it requires an
acknowledgement. In other words it represents the number of
unacknowledged packets the send can hold. The value sent in a
Configuration Response shall be less than or equal to the TxWindow size
sent in the Configuration Request. The receiver of this option in the
Configuration Response may use this value as part of its acknowledgement
algorithm.
In Streaming mode this value is not used and shall be set to 0 and ignored
by the receiving device.
• MaxTransmit (1 octet)
This field controls the number of transmissions of a single I-frame that
L2CAP is allowed to try in Retransmission mode and Enhanced
Retransmission mode. The minimum value is 1 (one transmission is
permitted).
MaxTransmit controls the number of retransmissions that L2CAP is allowed to
try in Retransmission mode and Enhanced Retransmission mode before
accepting that a packet and the channel is lost. When a packet is lost after being
transmitted MaxTransmit times the channel shall be disconnected by sending a
Disconnect request (see Section 4.6). In Enhanced Retransmission mode
MaxTransmit controls the number of retransmissions for I-frames and S-frames
with P-bit set to 1. The sender of the option in a Configuration Request specifies
the value that shall be used by the receiver of the option. MaxTransmit values in
a Configuration Response shall be ignored. Lower values might be appropriate
for services requiring low latency. Higher values will be suitable for a link
monitor traffic sent in both directions. The value for this time-out should also
be set to 100’s of milliseconds or higher.
In Enhanced Retransmission mode the Monitor time-out is used to detect
lost S-frames with P-bit set to 1. If the time-out occurs before a response
with the F-bit set to 1 is received the S-frame is resent. The value used for
the Monitor time-out is specified in Section 8.6.3. The value sent in a
Configuration Request is also specified in Section 8.6.2. A value for the
Monitor time-out shall be sent in a positive Configuration Response and
indicates the value that will be used by the sender of the Configuration
Response.
In Streaming mode this value is not used and shall be set to 0 and ignored
by the receiving device.
• Maximum PDU payload Size - MPS (2 octets)
The maximum size of payload data in octets that the L2CAP layer entity
sending the option in a Configuration Request is capable of accepting, i.e.
the MPS corresponds to the maximum PDU payload size. Values used for
MPS should take into account all possible Controllers to which the channel
might be moved given that the MPS value cannot be renegotiated once the
channel is created. Each device specifies the value separately. An MPS
value sent in a positive Configuration Response is the actual MPS the
receiver of the Configuration Request will use on this channel for traffic
flowing into the local device. An MPS value sent in a positive Configuration
Response shall be equal to or smaller than the value sent in the
Configuration Request.
When using Retransmission mode and Flow Control mode the settings are
configured separately for the two directions of an L2CAP connection. For
example, in operating with an L2CAP entity implementing an earlier version of
the core specification, an L2CAP connection can be configured as Flow
Control mode in one direction and Retransmission mode in the other direction.
If Basic L2CAP mode is configured in one direction and Retransmission mode
or Flow control mode is configured in the other direction on the same L2CAP
channel then the channel shall not be used.
In state 1, Basic L2CAP mode has the highest precedence and shall take
precedence over Enhanced Retransmission mode and Streaming mode.
Enhanced Retransmission mode has the second highest precedence and shall
take precedence over all other modes except Basic L2CAP mode. Streaming
mode shall have the next level of precedence after Enhanced Retransmission
mode.
A device does not know in which state the remote device is operating so the
state 1 precedence algorithm assumes that the remote device may be a state 2
device. If the mode proposed by the remote device has a higher precedence
(according to the state 1 precedence) then the algorithm will operate such that
creation of a channel using the remote device's mode has higher priority than
disconnecting the channel.
The algorithm for state 1 devices is divided into two parts. Part one covers the
case where the remote device proposes a mode with a higher precedence than
the state 1 local device. Part two covers the case where the remote device
proposes a mode with a lower precedence than the state 1 local device. Part
one of the algorithm is as follows:
• When the remote device receives the Configuration Request from the local
device it will either reject the local device's Configuration Request by
sending a negative Configuration Response or disconnect the channel. The
negative Configuration Response will contain the remote device's desired
mode.
• Upon receipt of the negative Configuration Response the local device shall
either send a second Configuration Request proposing the mode contained
in the remote device's negative Configuration Response or disconnect the
channel.
• When the local device receives the Configuration Request from the remote
device it shall send a positive Configuration Response or disconnect the
channel.
• If the mode in the remote Device's negative Configuration Response does
not match the mode in the remote device's Configuration Request then the
local device shall disconnect the channel.
• If the local device receives a second Configuration Request from the remote
device that does not contain the desired mode then the local device shall
disconnect the channel.
• If the local device receives a negative Configuration Response then it shall
disconnect the channel.
Value Description
0x00 No FCS
0x01 16-bit FCS defined in section 3.3.5 (default)
0x02 - 0xFF Reserved
Value of 0x00 is set when the sender wishes to omit the FCS from S/I-frames.
The parameters in the Extended Flow Specification option specify the traffic
stream in the outgoing direction (transmitted traffic). Extended Flow
Specification option is type 0x06.
0 31
Identifier 0x01
The parameters of the Extended Flow Specification are shown in Table 5.5:
Parameter
Size in
QoS parameter Octets Unit
Identifier 1 na
Service Type 1 na
Parameter
Size in
QoS parameter Octets Unit
• Identifer (1 octet)
This field provides a unique identifier for the flow specification. This identifier
is used by some Controllers in the process of setting up the QoS request.
Each active flow specification sent by a device to configure an L2CAP
channel shall have a unique Identifier. An Identifier can be reused when the
L2CAP channel associated with the flow spec is disconnected. The Identifier
shall be unique within the scope of a physical link. Extended Flow
Specifications for channels on different physical links may have the same
Identifier. The Identifier for an Extended Flow Specification with Service
Type Best Effort shall be 0x01.
Note: Since the Identifier for an Extended Flow Specification with Service
Type Best Effort is fixed to 0x01 it is possible to generate a Best Effort
Extended Flow Specification for the remote device without performing the
Lockstep Configuration process. (The Lockstep Configuration process is
described in Section 7.1.3). This allows a Best Effort channel created over
the ACL-U logical link without using the Lockstep configuration procedure to
be moved to an AMP-U logical link. It is not possible to move a Guaranteed
channel created over the ACL-U logical link to an AMP-U logical link unless
the Lockstep configuration procedure is used during channel creation. This
is because the Identifier for the remote device's Extended Flow Specification
with Service Type Guaranteed is not known.
• Service Type (1 octet)
This field indicates the level of service required. Table 5.6 defines the
different Service Types values. The default value is 'Best effort'. If 'Best
effort' is selected then Access Latency and Flush Timeout shall both be set
to 0xFFFFFFFF. Maximum SDU size and SDU Inter-arrival Time are used to
indicate the maximum data rate that the application can deliver to L2CAP for
transmission. This is useful for high speed Controllers so they do not
reserve more bandwidth than the application can deliver. The remote device
should respond with lower settings indicating the maximum rate at which it
can receive data (for example, maximum rate data it can write to a mass
storage device, etc.). Values of 0xFFFF for Maximum SDU size and
0xFFFFFFFF for SDU Inter-arrival time are used when the actual values are
not known. If Maximum SDU size is set to 0xFFFF then SDU Inter-arrival
time shall be set to 0xFFFFFFFF, if SDU Inter-arrival time is set to
0xFFFFFFFF then Maximum SDU size shall be set to 0xFFFF. This tells the
Controller to allocate as much bandwidth as possible.
If 'No Traffic' is selected the remainder of the fields shall be ignored because
there is no data being sent across the channel in the outgoing direction.
Value Description
0x00 No Traffic
0x01 Best effort (Default)
0x02 Guaranteed
Other Reserved
Table 5.6: Service Type definitions
Once configured the service type of a channel shall not be changed during
reconfiguration.
• Maximum SDU Size (2 octets)
The Maximum SDU Size parameter specifies the maximum size of the
SDUs transmitted by the application. If the Service Type is “Guaranteed”
then traffic submitted to L2CAP with a larger size is considered non-
conformant. QoS guarantees are only provided for conformant traffic.
• SDU Inter-arrival time (4 octets)
The SDU Inter-arrival time parameter specifies the time between
consecutive SDUs generated by the application. For streaming traffic, SDU
Inter-arrival time should be set to the average time between SDUs. For
variable rate traffic and best effort traffic, SDU Inter-arrival time should be
set to the minimum time between SDUs. If the Service Type is “Guaranteed”
The allowable values for the Maximum Extended Window Size are:
Value Description
This option shall only be sent if the peer L2CAP entity has indicated support for
the Extended Window size feature in the Extended Features Mask (see
Section 4.12).
This option shall be ignored if the channel is configured to use Basic L2CAP
Mode (see Section 5.4).
For Enhanced Retransmission mode, this option has the same directional
semantics as the Retransmission and Flow Control option (see Section 5.4).
The sender of a Configuration Request command containing this option is
suggesting the maximum window size (possibly based on its own internal
L2CAP receive buffer resources) that the peer L2CAP entity should use when
sending data.
For Streaming mode, this option is used to enable use of the Extended Control
Field and if sent, shall have a value of 0.
If the option is only configured in one direction then the maximum window size
for the opposite direction shall be taken from the maximum window size value
in the existing Retransmission and Flow Control option. In this configuration
both L2CAP entities shall use the extended control fields in all S/I-frames.
6 STATE MACHINE
This section is informative. The state machine may not represent all possible
scenarios.
The following states have been defined to clarify the protocol; the actual
number of states and naming in a given implementation is outside the scope of
this specification:
• CLOSED – channel not connected.
• WAIT_CONNECT – a connection request has been received, but only a
connection response with indication “pending” can be sent.
• WAIT_CONNECT_RSP – a connection request has been sent, pending a
positive connect response.
• CONFIG – the different options are being negotiated for both sides; this
state comprises a number of substates, see Section 6.1.3 on page 114
• OPEN – user data transfer state.
• WAIT_DISCONNECT – a disconnect request has been sent, pending a
disconnect response.
• WAIT_CREATE – a channel creation request has been received, but only a
response with indication “pending” can be sent. This state is similar to
WAIT_CONNECT.
• WAIT_CREATE_RSP – a channel creation request has been sent, pending
a channel creation response. This state is similar to WAIT_CONNECT_RSP.
• WAIT_MOVE – a request to move the current channel to another Controller
has been received, but only a response with indication “pending” can be
sent.
• WAIT_MOVE_RSP – a request to move a channel to another Controller has
been sent, pending a move response
• WAIT_MOVE_CONFIRM – a response to the move channel request has
been sent, waiting for a confirmation of the move operation by the initiator
side
• WAIT_CONFIRM_RSP – a move channel confirm has been sent, waiting for
a move channel confirm response.
Some state transitions and actions are triggered only by internal events
effecting one of the L2CAP entity implementations, not by preceding L2CAP
signaling messages. It is implementation-specific and out of the scope of this
specification, how these internal events are realized; just for the clarity of
specifying the state machine, the following abstract internal events are used in
the state event tables, as far as needed:
• OpenChannel_Req – a local L2CAP entity is requested to set up a new
connection-oriented channel.
• OpenChannel_Rsp – a local L2CAP entity is requested to finally accept or
refuse a pending connection request.
• ConfigureChannel_Req – a local L2CAP entity is requested to initiate an
outgoing configuration request.
• CloseChannel_Req – a local L2CAP entity is requesed to close a channel.
• SendData_Req – a local L2CAP entity is requested to transmit an SDU.
• ReconfigureChannel_Req – a local L2CAP entity is requested to reconfigure
the parameters of a connection-oriented channel.
• OpenChannelCntrl_Req – a local L2CAP entity is requested to set up a new
connection over a Controller identified by a Controller ID.
• OpenChannelCntrl_Rsp – a local L2CAP entity is requested to internally
accept or refuse a pending connection over a Controller identified by a
Controller ID.
• MoveChannel_Req – a local L2CAP entity is requested to move the current
channel to another Controller.
• ControllerLogicalLinkInd – a Controller indicates the acceptance or rejection
of a logical link request with an Extended Flow Specification.
To simplify the state event tables, the RTX and ERTX timers, as well as the
handling of request retransmissions are described in Section 6.1.7 on page
122 and not included in the state tables.
L2CAP messages not bound to a specific data channel and thus not impacting
a channel state (e.g. L2CAP_InformationReq, L2CAP_EchoReq) are not
covered in this section.
The following states and transitions are illustrated in Figure 6.1 on page 128.
Notes. The L2CAP_ConnectReq message is not mentioned in any of the other states
apart from the CLOSED state, as it triggers the establishment of a new channel, thus
the branch into a new instance of the state machine.
Notes. An L2CAP_DisconnectReq message is not included here, since the Source and
Destination CIDs are not available yet to relate it correctly to the state machine of a
specific channel.
According to Section 6.1.1 on page 112 and Section 6.1.2 on page 113, the
CONFIG state is entered via WAIT_CONFIG substate from either the CLOSED
state, the WAIT_CONNECT state, or the WAIT_CONNECT_RSP state. The
CONFIG state is left for the OPEN state if both the initiator and acceptor paths
complete successfully.
For better overview, separate tables are given: Table 6.4 shows the success
transitions; therein, transitions on one of the minimum paths (no previous non-
success transitions) are shaded. Table 6.5 on page 118 shows the non-
success transitions within the configuration process, and Table 6.6 on page 118
shows further transition cause by events not belonging to the configuration
process itself. The following configuration states and transitions are illustrated
in Figure 6.2 on page 129.
Options
acceptable Send L2CAP_
WAIT_CONFIG_
L2CAP_ConfigReq ConfigRsp OPEN
REQ Standard (success)
process
WAIT_
WAIT_IND_ Remote side
L2CAP_ConfigRsp CONTROL_
FINAL_RSP success
IND
WAIT_FINAL_ Remote side WAIT_CONFIG
L2CAP_ConfigRsp
RSP fail
Send
Options not
WAIT_CONFIG L2CAP_ConfigReq L2CAP_Confi- WAIT_CONFIG
acceptable
gRsp (fail)
WAIT_CONFIG L2CAP_ConfigRsp - Ignore WAIT_CONFIG
WAIT_SEND WAIT_SEND
L2CAP_ConfigRsp - Ignore
_CONFIG _CONFIG
Send
WAIT_CON- Options not WAIT_CON-
L2CAP_ConfigReq L2CAP_Confi-
FIG_REQ_RSP acceptable FIG_REQ_RSP
gRsp (fail)
Send
Remote side
WAIT_CON- L2CAP_Confi- WAIT_CON-
L2CAP_ConfigRsp rejects
FIG_REQ_RSP gReq (new FIG_REQ_RSP
options
options)
Send
WAIT_CON- Options not WAIT_CON-
L2CAP_ConfigReq L2CAP_Confi-
FIG_REQ acceptable FIG_REQ
gRsp (fail)
WAIT_CON- WAIT_CON-
L2CAP_ConfigRsp - Ignore
FIG_REQ FIG_REQ
Send
Remote side
WAIT_CON- L2CAP_Confi- WAIT_CON-
L2CAP_ConfigRsp rejects
FIG_RSP gReq (new FIG_RSP
options
options)
Table 6.5: CONFIG state/substates event table: non-success transitions within configuration
process
Send L2CAP_
CONFIG L2CAP_Disconnec-
- Disconnect CLOSED
(any substate) tReq
Rsp
CONFIG
CONFIG L2CAP_Disconnec-
- Ignore (remain in sub-
(any substate) tRsp
state)
CONFIG
CONFIG Process the
L2CAP_Data - (remain in sub-
(any substate) PDU
state)
Table 6.6: CONFIG state/substates event table: events not related to configuration process
CONFIG
CONFIG L2CAP_
Ignore (remain in sub-
(any substate) CreateChanReq
state)
CONFIG
CONFIG L2CAP_
Ignore (remain in sub-
(any substate) CreateChanRsp
state)
CONFIG
CONFIG L2CAP_
Ignore (remain in sub-
(any substate) MoveChanReq
state)
CONFIG
CONFIG L2CAP_
Ignore (remain in sub-
(any substate) MoveChanRsp
state)
CONFIG
CONFIG L2CAP_
Ignore (remain in sub-
(any substate) MoveChanConfirm
state)
L2CAP_ CONFIG
CONFIG
MoveChanCon- Ignore (remain in sub-
(any substate)
firmRsp state)
Table 6.6: CONFIG state/substates event table: events not related to configuration process
Notes:
- Receiving data PDUs (L2CAP_Data) in CONFIG state should be relevant only in case
of a transition to a reconfiguration procedure (from OPEN state). Discarding the
received data is allowed only in Retransmission Mode and Enhanced Retransmission
Mode. Discarding an S-frame is allowed but not recommended. If a S-frame is dis-
carded, the monitor timer will cause a new S-frame to be sent after a time out.
- Indicating a failure in a configuration response does not necessarily imply a failure of
the overall configuration procedure; instead, based on the information received in the
negative response, a modified configuration request may be triggered.
Note: The outgoing SDU shall be completed from the view of the remote entity.
Therefore all PDUs forming the SDU shall have been reliably transmitted by
the local entity and acknowledged by the remote entity, before entering the
configuration state.
6.2.1 RTX
The Response Timeout eXpired (RTX) timer is used to terminate the channel
when the remote endpoint is unresponsive to signaling requests. This timer is
started when a signaling request (see Section 7 on page 131) is sent to the
remote device. This timer is disabled when the response is received. If the
initial timer expires, a duplicate Request message may be sent or the channel
identified in the request may be disconnected. If a duplicate Request message
is sent, the RTX timeout value shall be reset to a new value at least double the
previous value. When retransmitting the Request message, the context of the
same state shall be assumed as with the original transmission. If a Request
message is received that is identified as a duplicate (retransmission), it shall be
processed in the context of the same state which applied when the original
Request message was received.
6.2.2 ERTX
The Extended Response Timeout eXpired (ERTX) timer is used in place of the
RTX timer when it is suspected the remote endpoint is performing additional
processing of a request signal. This timer is started when the remote endpoint
responds that a request is pending, e.g., when an L2CAP_ConnectRsp event
with a “connect pending” result (0x0001) is received. This timer is disabled
when the formal response is received or the physical link is lost. If the initial
timer expires, a duplicate Request may be sent or the channel may be
disconnected.
Event: L2CAP_ConnectionRsp
Event: L2CAP_ConnectionRsp (ref used)
Action: -
(ref used) CLOSED
Action: -
Event: L2CAP_ConnectReq
Event: OpenChannelReq
Action: L2CAP_ConnectRsp
Action: L2CAP_ConnectReq
(pending)
Event: OpenChannelRes
(success)
Action: L2CAP_ConnectRsp
(success)
Event: L2CAP_ConnectRsp
(success)
Event: L2CAP_Conf igReq Action: -
Action: L2CAP_CommandReject
(inv alid CID)
Event: L2CAP_ConnectRspOR
L2CAP_Conf igReq OR
L2CAP_Data Event: L2CAP_Data
Action: Ignore Action: process the PDU
Event: CloseChannelReq
Action: L2CAP_DisconnectReq
WAIT_DIS-
CONFIG
CONNECT
CLOSED OPEN
Event: L2CAP_DisconnectReq
Action: L2CAP_DisconnectRsp
Event: SendDataReq
Action: Send L2CAP_Data packet
Ev ent: L2CAP_Data
Action: Process the PDU
Ev ent: L2CAP_DisconnectRsp
OR L2CAP_ConnectRsp
Action: Ignore
Event: ControllerIndication
WAIT_ (reject)
CONNECT_ Action:L2CAP_ConnectRsp
WAIT_
RSP (fail)
CONTROL
_IND
OPEN
Event: OpenChannel_Rsp Event: ControllerIndication (reject)
WAIT_
(success) Action:L2CAP_ConnectRsp (fail)
CONNECT Action:L2CAP_ConnectRsp WAIT_ or
(success) CONFIG Event: L2CAP_ConfigRsp (fail)
Event: ControllerIndication
(accept)
Event: L2CAP_ConfigReq Action:L2CAP_ConnectRsp
options not acceptable Event: L2CAP_ConfigReq Event: L2CAP_ConfigRsp
(success)
Action:L2CAP_ConfigRsp(fail) options not acceptable (success)
Action:L2CAP_ConfigRsp(fail)
Event:ConfigureChannelReq
Action:L2CAP_ConfigReq
WAIT_
CONFIG_
REQ
Event:L2CAP_ConfigRsp
options acceptable
Event:L2CAP_ConfigReq Event:L2CAP_ConfigReq
options acceptable options acceptable
Action:L2CAP_ConfigRsp Action:L2CAP_ConfigRsp
Event:L2CAP_ConfigReq
(success) or (pending) (pending)
options acceptable
Event: L2CAP_ConfigRsp Action:L2CAP_ConfigRsp WAIT_IND
(fail) (success) _FINAL_
Action:L2CAP_ConfigReq WAIT_
RSP
(new options) CONIFG_
REQ_RSP
WAIT_
SEND_ Event:L2CAP_ConfigReq OPEN
CONFIG Event: L2CAP_ConfigReq options acceptable
options not acceptable Action:L2CAP_ConfigRsp
Action:L2CAP_ConfigRsp(fail) (success)
Event: L2CAP_ConfigRsp
Event: L2CAP_ConfigRsp
Options accetable
Options accetable
Event:ConfigureChannelReq
Action:L2CAP_ConfigReq
WAIT_
CONFIG_
RSP
Event: L2CAP_ConfigRsp
(fail)
Action:L2CAP_ConfigReq
(new options)
Event:L2CAP_CreateChanRsp
[refused]
CLOSED Event:OpenChanCntrl_Req
Action:L2CAP_CreateChanReq
Event:OpenChanCntrl_Rsp
Action:L2CAP_CreateChanRsp
[refused]
Event:L2CAP_CreateChanReq
Action:L2CAP_CreateChanRsp
[pending]
WAIT_ WAIT_
WAIT_ WAIT_
CONNECT CREATE
CONNECT CREATE
_RSP _RSP
Event:L2CAP_CreateChanReq
Action:L2CAP_CreateChanRsp
[success]
Event:OpenChanCntrl_Rsp
Action:L2CAP_CreateChanRsp
[success]
Event:L2CAP_CreateChanRsp
[success]
Event:L2CAP_MoveChanReq
WAIT_ [priority = become responder]
MOVE_ Action:L2CAP_MoveChanRsp
WAIT_DIS CONFIRM [success]
CONFIG
CONNECT Event: ControllerLogicalLinkInd
[success/failure]
Action: L2CAP_MoveChanRsp
WAIT_
[success/failure]
MOVE
Event: L2CAP_MoveChanConfirm
[success/failure]
Action: L2CAP_MoveChanConfirmRsp
Event:L2CAP_MoveChanReq
Action: L2CAP_MoveChanRsp
[pending]
Event:L2CAP_MoveChanReq
Action: L2CAP_MoveChanRsp Event:L2CAP_MoveChanReq
[success/failure] [priority = become responder]
Action:L2CAP_MoveChanRsp
[pending]
Event:MoveChan_Req
CLOSED OPEN Action:L2CAP_MoveChanReq WAIT_
MOVE_
Event: RSP
L2CAP_MoveChanConfirmRsp Event:L2CAP_MoveChanReq
[priority = remain initiator]
Action:L2CAP_MoveChanRsp
WAIT_ Event:L2CAP_MoveChanRsp
[collison]
[success/refused]
CONFRIM_ Event:L2CAP_MoveChanRsp
and ControllerLogicalLinkInd
RSP [success/failure] [pending]
Action:L2CAP_MoveChanConfirm
[success/failure]
Figure 6.3 is based on Figure 6.1 on page 128. Only the new transitions show
event/action labels. Transitions without labels are the same as in Figure 6.1.
7 GENERAL PROCEDURES
Procedures for the flow control and retransmission modes are described in
Section 8 on page 149.
Both the Lockstep and Standard processes can be abstracted into the initial
Request configuration path and a Response configuration path, followed by the
reverse direction phase. Reconfiguration follows a similar two-phase process
by requiring configuration in both directions.
Table 7.1 on page 132 defines the configuration options that may be placed in
a Configuration Request.
Parameter Description
Parameter Description
The Extended Flow Specification shall be sent for all channels created on
AMP-U logical links and shall only be sent for channels created on the ACL-U
logical link if both the local and remote L2CAP entities have indicated support
for the Extended Flow Specification for BR/EDR in their Extended Features
masks. The Extended Features mask shall be obtained via the L2CAP
Information Request/Response signaling mechanism (InfoType = 0x0002) prior
to the issuance of the L2CAP Configuration Request. If a Configuration
Request is sent containing the Extended Flow Specification option then the
Quality of Service option and Flush Timeout option shall not be included.
The ERTX timer is used when a Configuration Response is received with result
“Pending” (see Section 6.2.2).
If the service type is “Best Effort” then values for certain parameters may be
sent in a Configuration Response with result “Pending” to indicate the
maximum bandwidth the sender of the Configuration Response is capable to
receive. The values sent in a Configuration Response with result “Pending”
and service type Best Effort shall be in accordance with Table 7.3.
If the Controller cannot support the Extended Flow Specifications with service
type “Guaranteed,” then the recipient of the Configuration Request shall send a
Configuration Response indicating a result code of “Failure - flow spec
rejected” (0x0005). If the Controller indicates that it can support the Extended
Flow Specifications, then the recipient of the Configuration Request shall send
a Configuration Response with result code of “Success” (0x0000) with no
parameters.
If the Result of the Configuration Response is Failure (0x0005) for service type
“Guaranteed” then an Extended Flow Specification option may be sent in the
Configuration Response. The Extended Flow Specification parameters sent in
the Configuration Response may be changed to reflect a QoS level that would
be acceptable, but shall only be changed in accordance with Table 7.4.
For the Standard process the following general procedure shall be used for
each direction:
1. Local device informs the remote device of the parameters that the local
device will accept using a Configuration Request.
2. Remote device responds, agreeing or disagreeing with these values,
including the default ones, using a Configuration Response.
3. The local and remote devices repeat steps (1) and (2) until agreement on all
parameters is reached.
The decision on the amount of time (or messages) spent configuring the
channel parameters before terminating the configuration is left to the
implementation, but it shall not last more than 120 seconds.
The following rules shall be used for parameter negotiation in the Request
Path:
1. An L2CAP entity shall send at least one Configuration Request packet as
part of initial configuration or reconfiguration. If all default or previously
agreed values are acceptable, a Configuration Request packet with no
options shall be sent.
2. When an L2CAP entity receives a positive Configuration Response from the
remote device it shall consider all configuration parameters explicitly
contained in the Configuration Request along with the default and previously
agreed values not explicitly contained in the Configuration Request as
accepted by the remote device.
3. When an L2CAP entity receives a negative Configuration Response and
sends a new Configuration Request it shall include all the options it sent in
the previous Configuration Request with the same values except the
negotiable options that were explicitly rejected in the negative Configuration
Response which will have new values. Note: the resending of all the options
provides backwards compatibility with remote implementations that don’t
assume rule 4 when responding.
4. Negotiable options not included in a negative Configuration Response are
considered accepted by the remote device. Note: for backwards
compatibility if non-negotiable options are included in a negative
Configuration Response, they should be processed as if the response was
positive.
The following rules shall be used for parameter negotiation in the Response
Path:
1. A positive Configuration Response accepts the values of all configuration
parameters explicitly contained in the received Configuration Request and
the default and previously agreed values not explicitly provided.
2. An L2CAP Entity shall send a negative Configuration Response to reject
negotiable parameter values that are unacceptable, be it values explicitly
provided in the received Configuration Request or previously agreed or
default values. The rejected parameters sent in a negative Configuration
Response shall have values that are acceptable to the L2CAP entity
sending the negative Configuration Response.
3. All negotiable options being rejected shall be rejected in the same negative
Configuration Response.
4. The only options allowed in a negative Configuration Response are the
negotiable options being rejected. No wildcards or adjustments to non-
negotiable options shall be in a negative Configuration Response.
5. Negotiable options not included in the negative Configuration Response are
considered accepted.
An L2CAP implementation may fragment any L2CAP PDU for delivery to the
lower layers. If L2CAP runs directly over the Controller without HCI, then an
implementation may fragment the PDU into multiple Controller packets for
transmission over the air. If L2CAP runs above the HCI, then an
implementation may send HCI transport sized fragments to the Controller. All
L2CAP fragments associated with an L2CAP PDU shall be processed for
transmission by the Controller before any other L2CAP PDU for the same
logical transport shall be processed.
For example, in the BR/EDR controller the two LLID bits defined in the first
octet of baseband payload (also called the frame header) are used to signal
the start and continuation of L2CAP PDUs. LLID shall be 10b for the first
segment in an L2CAP PDU and 01b for a continuation segment. An illustration
of fragmentation for a BR/EDR controller is shown in Figure 7.1 on page 138.
An example of how fragmentation might be used in a device with HCI is shown
in Figure 7.2 on page 139.
An L2CAP implementation shall use the length field in the header of L2CAP
PDUs, see Section 3 on page 45, as a consistency check and shall discard any
L2CAP PDUs that fail to match the length field. If channel reliability is not
needed, packets with invalid lengths may be silently discarded. For reliable
channels using Basic mode, an L2CAP implementation shall indicate to the
upper layer that the channel has become unreliable. Reliable channels are
defined by having an infinite flush timeout value as specified in Section 5.2 on
page 91. For higher data integrity L2CAP should be operated in the Enhanced
Retransmission Mode.
Embedded
Software Re-assemble &
HCI-USB buffer packets HCI 1 HCI 2 HCI n
Start Continue Continue
Link M anager Assemble 1,3 & 5 Air 1 Air 2 Air 3 Air 4 Air q
slot packet types as Start Continue Continue Continue Continue
Link Controller appropriate
Figure 7.2: Example of fragmentation processes in a device with a BR/EDR Controller and USB
HCI transport
The maximum size of an SDU segment shall be given by the Maximum PDU
Payload Size (MPS). The MPS parameter may be exported using an
implementation specific interface to the upper layer.
Note that this specification does not have a normative service interface with the
upper layer, nor does it assume any specific buffer management scheme of a
host implementation. Consequently, a reassembly buffer may be part of the
upper layer entity. It is assumed that SDU boundaries shall be preserved
between peer upper layer entities.
L2CAP SDU
I-frame I-frame
HCI
Fragment/ Fragment/ Fragment/ Fragment/
BB payload BB payload BB payload BB payload
The receiving side uses the SAR field of incoming 'I-frames' for the reassembly
process. The L2CAP SDU length field, present in the “start of SDU” I-frame, is
an extra integrity check, and together with the sequence numbers may be used
to indicate lost L2CAP SDUs to the application. Figure 7.3 on page 140
illustrates segmentation and fragmentation.
Figure 7.4 on page 141 illustrates the use of segmentation and fragmentation
operations to transmit a single SDU. Note that while SDUs and L2CAP PDUs
are transported in peer-to-peer fashion, the fragment size used by the
Fragmentation and Recombination routines is implementation specific and may
not be the same in the sender and the receiver. The over-the-air sequence of
packet fragments as created by the sender is common to both devices.
Re-assemble &
HCI-USB buffer packets HCI 1 HCI 2 HCI n
Start Continue Continue
Link M anager Assemble 1,3 & 5 Air 1 Air 2 Air 3 Air 4 Air q
slot packet types as
Link Controller Start Continue Continue Continue Continue
appropriate
Figure 7.4: Example of segmentation and fragment processes in a device with a BR/EDR
Controller and USB HCI Transport1
1. For simplicity, the stripping of any additional HCI and USB specific information fields prior to the cre-
ation of the baseband packets (Air_1, Air_2, etc.) is not shown in the figure.
When there is more than one L2CAP channel mapped to the same ACL logical
transport, the automatic flush time-out does not discriminate between L2CAP
channels. The automatic flush time-out also applies to unicast data sent via the
L2CAP connectionless channel. The exception is packets marked as non-
automatically-flushable via the Packet_Boundary_Flag in the HCI ACL Data
Packet (see Section 1.1 on page 29). The automatic flush time-out flushes a
specific automatically-flushable L2CAP PDU. The HCI Flush command flushes
all outstanding L2CAP PDUs for the ACL logical transport including L2CAP
PDUs marked as non-automatically-flushable. Therefore, care has to be taken
when using the Automatic Flush Time-out and the HCI Flush command. The
HCI Enhanced Flush command should be used instead.
There is only one automatic flush time-out setting per ACL logical transport.
Therefore, all time bounded L2CAP channels on an ACL logical transport with
an automatic flush time-out setting should configure the same flush time-out
value at the L2CAP level. The flush time-out setting for the ACL logical
transport also applies to unicast data sent via the L2CAP connectionless
channel which are marked flushable.
If Automatic Flush Time-out is used, then it should be taken into account that it
only flushes one L2CAP PDU. If one PDU has timed out and needs flushing,
then other automatically-flushable packets on the same logical transport are
also likely to need flushing. Therefore, flushing can be handled by the HCI
Enhanced Flush command so that all outstanding automatically-flushable
L2CAP PDUs are flushed.
When both reliable and isochronous data is to be sent over the same ACL
logical transport, an infinite Automatic Flush Time-out can be used. In this case
the isochronous data is flushed using the HCI Enhanced Flush command with
Packet_Type set to “Automatically-Flushable Only,” thus preserving the reliable
data.
While L2CAP itself does not provide retransmission for data sent via the
connectionless channel, the baseband does provide an ARQ scheme for
unicast data (see [vol.2, part B] Section 7.6 on page 150). If a higher degree of
reliability is desired for unicast data sent via the connectionless L2CAP
channel than is provided by the baseband ARQ scheme then an ARQ scheme
should be implemented at a higher layer.
The receiving L2CAP entity may silently discard data received via the
connectionless L2CAP channel if the data packet is addressed to a PSM and
no application is registered to receive data on that PSM.
Note that L2CAP does not provide flow control for either connection-oriented
L2CAP channels operating in Basic mode or for traffic on the connectionless
L2CAP channel. Hence if data received by L2CAP is not accepted by the target
Unicast data shall only be sent via the connectionless L2CAP channel to a
remote device if the remote device indicates support for Unicast
Connectionless Data Reception in the L2CAP Extended Features Mask.1
The L2CAP Extended Features Mask should be retrieved using the L2CAP
Information Request signal to determine if Unicast Connectionless Data
Reception is supported. Optionally, support for Unicast Connectionless Data
Reception can be inferred from information obtained via a SDP or EIR. For
example, if a service is found via SDP or EIR that is known to mandate the
support of UCD, then it may be assumed that the device indicating support for
the service supports Unicast Connectionless Data Reception.
Unicast data sent via the L2CAP connectionless channel are subject to
automatic flushing and hence the packet boundary flags should be set
appropriately if the controller supports the Packet Boundary Flag feature. See
Section 7.5 for further details. Since the receiving L2CAP entity has no
mechanism to enable it to know whether received packets were originally
marked as flushable or non-flushable on the transmitting device, the receiving
L2CAP entity should treat all unicast packets received via the connectionless
L2CAP packet as non-flushable.
If encryption is required for a given profile, then the profile or application shall
ensure that authentication is performed and encryption is enabled prior to
sending any unicast data on the connectionless L2CAP channel by utilizing
Security Mode 4 as defined in GAP ([Vol. 3] Part C, Section 5.2.2). There is no
mechanism provided in this specification to prevent reception of unencrypted
data on the connectionless L2CAP channel. An application which requires
received data to be encrypted should ignore any unencrypted data it may
receive over the connectionless channel.
1. Note that the Unicast Connectionless Data Reception bit in the L2CAP Extended Features Mask does
not in any way indicate support or lack of support for reception of broadcast data on the connectionless
L2CAP channel even though both broadcast data and unicast data are sent and received using the
same CID (0x0002). For historical reasons, there is no bit to indicate support for sending or receiving of
broadcast data on the connectionless L2CAP channel.
The two Extended Flow Specification parameters that are affected by Best
Effort are Maximum SDU size and SDU Inter-arrival Time. A data rate is
determined by dividing the Maximum SDU size by the SDU Inter-arrival time
giving a value in bytes per second. The important value is the data rate and not
the Maximum SDU size or SDU Inter-arrival time.
Best Effort aggregation shall occur when performing any of the three
operations:
1. The value 0xFFFF is used for Maximum SDU Size and the value
0xFFFFFFFF is used for SDU Inter-arrival time to indicate that the
actual values are unknown and maximum bandwidth is assumed.
Therefore, if these values exist in an Extended Flow Specification
then the aggregate becomes 0xFFFF and 0xFFFFFFFF for
Maximum SDU Size and SDU Inter-arrival time respectively.
2. In general it is assumed that data rates provided by the local
applications can be added together. For example if one application
indicates a data rate of 100 bytes/sec and a second application
indicates a data rate of 100 bytes/sec then the aggregate data rate
from the two applications is 200 bytes/sec. This is assumed for both
directions.
3. The adjustments (sent in a Configuration Response) made by the
remote device to an outgoing flow specification are assumed to be
made on behalf of the application. These adjustments reduce the
data rate of the outgoing flow specification. The reduced data rates
can be added to data rates from other applications.
4. The final data rates shall be converted back into Maximum SDU Size
and SDU Inter-arrival time to be passed to the Controller. Controllers
may have a maximum PDU size or a “preferred” PDU size. When
possible the “preferred” size should be used for the Maximum SDU
size and the SDU Inter-arrival time should be set to a value that
achieves the desired data rate. If the data rate cannot be achieved by
using the “preferred” PDU size then an integer multiple of the
preferred PDU size should be used.
The L2CAP entity shall perform admission control for Guaranteed channels
during the Lockstep configuration procedure (see Section 7.1.3). Admission
control is performed to determine if the requested Guaranteed QoS can be
achieved by the BR/EDR or BR/EDR/LE Controller over an ACL-U logical link
without compromising existing Guaranteed channels running on the Controller.
If HCI is used then the L2CAP entity shall also verify that the QoS can be
achieved over the HCI transport.
1. The total guaranteed data rate in both directions shall not exceed two
times the highest Symmetric Max of an ACL-U logical link over the
BR/EDR or BR/EDR/LE Controller (see [vol.2, part B] Section 6.7 on
page 141). For example for a Basic Rate Controller the highest
Symmetric Max Rate is 433.9kb/s (DH5) from Table 6.9, “ACL
packets,” on page 141 in vol. 2 Part B. Two times that value is
867.8kb/s.
2. The total guaranteed data rate in any one direction shall not exceed
the highest Asymmetric Max Rate of an ACL-U logical link (see [Vol.
2] Part B, Section 6.7). For example the highest Asymmetric Max
Rate for Basic Rate is 723.2kb/s (DH5 packet) from Table 6.9, “ACL
packets,” on page 141 in vol. 2 Part B.
data rates in both directions for all existing Guaranteed channels plus the data
rate in both directions of the requested Guaranteed channel (i.e. data rates
from the both outgoing and incoming Extended Flow Specifications). Total
guaranteed data rate for one direction is calculated by taking the sum of the
data rates in one direction for all existing Guaranteed channels plus the data
rate in the same direction of the requested Guaranteed channel.
An L2CAP entity should use additional information for admission control that
may result in a Guaranteed QoS request being rejected even if none of the
rules are violated. This allows the L2CAP entity to account for things such as
CQDDR, SCO/eSCO channels, LMP traffic, page scanning, etc.
In order to meet the access latency and/or data rate required by a Guaranteed
channel, the L2CAP entity should:
a) Prioritize traffic over the HCI transport in devices that support HCI.
b) Give conformant packets for Guaranteed channels higher priority
than packets for Best Effort channels. Packets for Best Effort
channels should have higher priority than non-conformant packets
for Guaranteed channels. (See Section 5.6 for a discussion of
non-conformant and conformant traffic).
c) Utilize the SAR feature to restrict the PDU sizes of Best Effort
SDUs so that they do not prevent the Controller from sending the
SDUs of the Guaranteed channel within the time periods required
by its Extended Flow Specification.
The receiving peer uses the following variables and Sequence numbers:
• ReqSeq – The Sequence number sent in an acknowledgement frame to
request transmission of I-frame with TxSeq = ReqSeq and acknowledge
receipt of I-frames up to and including (ReqSeq-1).
• ExpectedTxSeq – the value of TxSeq expected in the next I-frame.
• BufferSeq – When segmented I-frames are buffered this is used to delay
acknowledgement of received I-frame so that new I-frame transmissions do
not cause buffer overflow.
All variables have the range 0 to 63. Arithmetic operations on state variables
(NextTXSeq, ExpectedTxSeq, ExpectedAckSeq, BufferSeq) and sequence
numbers (TxSeq, ReqSeq) contained in this document shall be taken modulo
64.
I-frames contain TxSeq, the send sequence number of the I-frame. When an I-
frame is first transmitted, TxSeq is set to the value of the send state variable
NextTXSeq. TxSeq is not changed if the I-frame is retransmitted.
The CID sent in the information frame is the destination CID and identifies the
remote endpoint of the channel. A send state variable NextTxSeq shall be
maintained for each remote endpoint. NextTxSeq is the sequence number of
the next in-sequence I-frame to be transmitted to that remote endpoint. When
the link is created NextTXSeq shall be initialized to 0.
The CID sent in the information frame is the destination CID and identifies the
remote endpoint of the channel. An acknowledge state variable
ExpectedAckSeq shall be maintained for each remote endpoint.
ExpectedAckSeq is the sequence number of the next in-sequence I-frame that
the remote receiving peer is expected to acknowledge. (ExpectedAckSeq – 1
equals the TxSeq of the last acknowledged I-frame). When the link is created
ExpectedAckSeq shall be initialized to 0.
Note that if the next acknowledgement acknowledges a single I-frame then its
ReqSeq will be expectedAckSeq + 1.
ExpectedAckSeq NextTxSeq
TxWindow
F1 F2 F3 F4 F5 F6 F7 F8 F9
Figure 8.1 on page 152 shows TxWindow=5, and three frames awaiting
transmission. The frame with number F7 may be transmitted when the frame
with F2 is acknowledged. When the frame with F7 is transmitted, TxSeq is set
to the value of NextTXSeq. After TxSeq has been set, NextTxSeq is
incremented.
The sending peer expects to receive legal ReqSeq values, these are in the
range ExpectedAckSeq up to and including NextTxSeq. Upon receipt of a
ReqSeq value equal to the current NextTxSeq all outstanding I-frames have
been acknowledged by the receiver.
All I-frames and S-frames contain ReqSeq, the send Sequence number
(TxSeq) that the receiving peer requests in the next I-frame.
The value of the receive state variable shall be the last in-sequence, valid I-
frame received.
I-frames shall have sequence numbers in the range ExpectedTxSeq ≤ TxSeq <
(BufferSeq + TxWindow).
BufferSeq
ExpectedTxSeq Illegal TxSeq
values
TxWindow
F1 F2 F3 F4 F5 F6 F7 F8 F9
In Figure 8.2 there are several I-frames in a buffer awaiting the SDU
reassembly function to pull them and the TxWindow is full. The receiver would
usually disable retransmission in Retransmission mode or Flow Control mode
by setting the Retransmission Disable Bit to 1 and send an RR back to the
sending side. This tells the transmitting peer that there is no point in performing
retransmissions. Both sides will send S-frames to make sure the peer entity
knows the current value of the Retransmission Disable Bit.
A new I-frame shall only be transmitted when the TxWindow is not full. No I-
frames shall be transmitted if the last RetransmissionDisableBit (R) received is
set to one.
The state of the RetransmissionDisableBit (R) is stored and used along with
the state of the RetransmissionTimer to decide the actions when transmitting I-
frames. The RetransmissionTimer is running whenever I-frames have been
sent but not acknowledged.
If the last R received was set to zero, then I-frames may be transmitted. If there
are any I-frames which have been sent and not acknowledged then they shall
be retransmitted when the RetransmissionTimer elapses. If the retransmission
timer has not elapsed then a retransmission shall not be sent and only new I-
frames may be sent.
a) If unacknowledged I-frames have been sent and the
RetransmissionTimer has elapsed then an unacknowledged I-
Unacknowledged
Retrans-
I-frames sent = New I-frames Transmit Timer
mission Timer
Retransmission are waiting Action Action
has elapsed
Timer is running
Restart
Transmit new
False False True Retransmis-
I-frame
sion Timer
If MonitorTimer
No Transmit is not running
False False False
action then restart
MonitorTimer
Table 8.1: Summary of actions when the RetransmissionTimer is in use and R=0
If any I-frames become available for transmission then the MonitorTimer shall
be stopped, the RetransmissionTimer shall be started and the rules for when
the RetransmissionTimer is in use shall be applied.
If the last R received was set to one, then I-frames shall not be transmitted.
The only frames which may be sent are S-frames. An S-frame shall be sent
according to the rules below:
a) If the MonitorTimer is running and has not elapsed then no
transmit action shall be taken and no timer action shall be taken.
b) If the MonitorTimer has elapsed then an S-frame shall be sent and
the MonitorTimer shall be restarted.
Upon receipt of a valid I-frame with TxSeq equal to ExpectedTxSeq, the frame
shall be accepted for the SDU reassembly function. ExpectedTxSeq is used by
the reassembly function.
The first valid I-frame received after an REJ was sent, with a TxSeq of the
received I-frame equal to ReqSeq of the REJ, shall clear the REJ Exception
condition.
When the L2CAP layer has removed one or more I-frames from the buffer,
BufferSeq may be incremented in accordance with the amount of buffer space
released. If BufferSeq is incremented, an acknowledgement shall be sent to
the peer entity.
Upon receipt of a valid REJ frame, where ReqSeq identifies an I-frame not yet
acknowledged, the ReqSeq acknowledges I-frames with TxSeq up to and
including ReqSeq - 1. Therefore the REJ acknowledges all I-frames before the
I-frame it is rejecting.
Exception conditions may occur as the result of physical layer errors or L2CAP
procedural errors. The error recovery procedures which are available following
the detection of an exception condition at the L2CAP layer in Retransmission
Mode are defined in this section.
Any frame received which is invalid (as defined in Section 3.3.6 on page 53)
shall be discarded, and no action shall be taken as a result of that frame.
Assuming that the TxWindow size is equal to the buffer space available in the
receiver (counted in number of I-frames), in flow control mode the number of
unacknowledged frames in the transmitter window is always less than or equal
to the number of frames for which space is available in the receiver. Note that a
missing frame still occupies a place in the window.
Missing ExpectedTxSeq
(lost or BufferSeq
corrupted) Illegal TxSeq
I-frame values
TxWindow
1 2 3 4 5 6 7 8 9
Figure 8.3: Overview of the receiver side when operating in flow control mode
A new I-frame shall only be transmitted when the TxWindow is not full.
Upon receipt of a valid I-frame with TxSeq equal to ExpectedTxSeq, the frame
shall be made available to the reassembly function. ExpectedTxSeq shall be
incremented by one. An acknowledgement shall not be sent until the SDU
reassembly function has pulled the I-frame.
When the L2CAP layer has removed one or more I-frames from the buffer,
BufferSeq may be incremented in accordance with the amount of buffer space
released. If BufferSeq is incremented, an acknowledgement shall be sent to
the peer entity. If the MonitorTimer is active then it shall be restarted to indicate
that a signal has been sent to the peer L2CAP entity.
Exception conditions may occur as the result of physical layer errors or L2CAP
procedural errors. The error recovery procedures which are available following
the detection of an exception condition at the L2CAP layer in flow control only
mode are defined in this section.
Any frame received that is invalid (as defined in Section 3.3.6 on page 53) shall
be discarded, and no action shall be taken as a result of that frame, unless the
receiving L2CAP entity is configured to deliver erroneous frames to the layer
above L2CAP. In that case, the data contained in invalid frames may also be
added to the receive buffer and made available for pulling from the SDU
reassembly function.
An RR with P-bit set to 1 (P=1) is used to indicate the clearance of any busy
condition that was initiated by an earlier transmission of an RNR frame by the
same L2CAP entity.
At most only one REJ exception from a given L2CAP entity to another L2CAP
entity shall be established at any given time. A REJ frame shall not be
transmitted until an earlier REJ exception condition or all earlier SREJ
exception conditions have been cleared. The REJ exception condition shall be
cleared upon the receipt of an I-frame with TxSeq equal to the ReqSeq of the
REJ frame.
Two L2CAP entities may be in REJ exception conditions with each other at the
same time.
The RNR frame shall be used by an L2CAP entity to indicate a busy condition
(i.e. temporary inability to receive I-frames). I-frames numbered up to
ReqSeq - 1 inclusive shall be considered acknowledged. The I-frame
numbered ReqSeq and any subsequent I-frames sent shall not be considered
acknowledged. The acceptance status of these I-frames shall be indicated in
subsequent transfers.
Each SREJ exception condition shall be cleared upon receipt of an I-frame with
TxSeq equal to the ReqSeq sent in the SREJ frame.
An L2CAP entity may transmit one or more SREJ frames with the P=0 before
one or more earlier SREJ exception conditions initiated with SREJ(P=0) have
been cleared. An L2CAP entity shall not transmit more than one SREJ with
P=1 before all earlier SREJ exception conditions have been cleared. A SREJ
frame shall not be transmitted if an earlier REJ exception condition has not
been cleared. Likewise a REJ frame shall not be transmitted if one or more
SREJ exception conditions have not been cleared. Only one I-frame shall be
retransmitted in response to receiving a SREJ frame with P=0. Additional I-
frames awaiting initial transmission may be transmitted following the
retransmission of the specific I-frame requested by SREJ with P=1.
P-bit set to 1 shall be used to solicit a response frame with the F-bit set to 1
from the remote L2CAP entity at the earliest respond opportunity. At most only
one frame with a P=1 shall be outstanding in a given direction at a given time.
Before an L2CAP entity issues another frame with P=1, it shall have received a
response frame from the remote L2CAP entity with F=1. If no valid frame is
received with F=1 within Monitor time-out period, the frame with P=1 may be
retransmitted.
The Final bit shall be used to indicate the frame as a response to a soliciting
poll (S-frame with P=1). The frame with F=1 shall not be retransmitted. The
Monitor-timeout is not used to monitor lost frames with F=1. Additional frames
with F=0 may be transmitted following the frame with F=1.
S-frames shall not be transmitted with both the F-bit and the P-bit set to 1 at the
same time.
If a flush timeout does not exist on the ACL-U logical link for the channel using
Enhanced Retransmission mode then the value for the Retransmission time-
out shall be at least two seconds and the value for the Monitor time-out shall be
at least twelve seconds.
If a flush timeout exists on the link for Enhanced Retransmission mode then the
value for the Retransmission time-out shall be three times the value of flush
timeout, subject to a minimum of 1 second and maximum of 2 seconds.
If a flush timeout exists on the link for Enhanced Retransmission mode and
both sides of the link are configured to the same flush timeout value then the
monitor time-out shall be set to a value at least as large as the Retransmission
time-out otherwise the value of the Monitor time-out shall be six times the value
of flush timeout, subject to a minimum of the retransmission timeout value and
a maximum of 12 seconds.
If an L2CAP entity knows that a specific packet has been flushed instead of
transmitted then it may execute proper error recovery procedures immediately.
When configuring a channel over an ACL-U logical link the values sent in a
Configuration Request packet for Retransmission timeout and Monitor timeout
shall be 0.
Note: If the link has a flush timeout and the Non-Flushable Packet Boundary
Flag feature is used to mark the Enhanced Retransmission mode packets as
non-flushable then the link does not have a flush timeout with regards to
Enhanced Retransmission mode.
Class 1 AMP controllers are reliable. They will not lose packets though packets
can be lost during a move operation. Class 2 AMP controllers are not reliable
and can lose packets. The Best Effort Flush Timeout field in the AMP Info (see
[Vol. 2] Part E, Section 7.5.8) can be used to determine the behavior of the
controller (i.e. class 1 or class 2). If the Best Effort Flush Timeout field in the
AMP info is 0xFFFFFFFF then the class is 1 otherwise the class is 2. The Best
Effort Flush Timeout field indicates the flush timeout that may be set on the
Best Effort logical link.
For class 1 AMP controllers the Retransmission and Monitor timers are not
really needed. Packets should not be lost. Packets lost during the move
operation will be detected by L2CAP and retransmitted as part of the move
operation. Therefore, the Retransmission timeout and Monitor timeout shall be
at least the value of the Link supervision timeout set on the link or can be
turned off altogether. The values sent in a Configuration Request packet for
Retransmission timeout and Monitor timeout shall be 0.
When configuring a channel the AMP-U logical link of a over a class 2 AMP
Controller non-0 values for Retransmission timeout and Monitor timeout shall
be sent in a Configuration Request packet. The non-0 values specify the
“processing” time of received packets. Processing time includes the time it
takes for a received packet to be passed from the device's Controller to the
L2CAP layer plus the time to be processed by the L2CAP layer and a response
submitted back to the Controller. The local device's processing time is used by
the remote device in calculating the Retransmission timeout and Monitor
timeout it will use. The timeout values that will actually be used by a device
shall be sent in a Configuration Response packet.
As with BR/EDR and BR/EDR/LE Controllers, the method used for setting
timer values for class 2 AMP Controllers depends on when timers are started.
Timers are either started when the packet leaves the Controller or when the
packet is delivered to the Controller.
The timeout values used for Class 2 AMP Controllers where timers are started
when the packet leaves the controller shall be at least the values received in
the Configuration Request packet from the remote device (remote device's
“processing” time).
For Class 2 AMP Controller where timers are started when the packet is
delivered to the Controller the following rules shall be used:
1. The local L2CAP Entity shall set a flush timeout on the Best Effort
logical link equal to the value provided by the local Controller in the
Best Effort Flush Timeout field of AMP info structure.
2. The value of the Retransmission timeout and Monitor Timeout shall
be the value of the flush timeout multiplied by three plus the
corresponding processing time received in the Configuration
Request packet from the remote device.
If an L2CAP entity knows that a specific packet has been flushed instead of
transmitted then it may execute proper error recovery procedures immediately.
When a channel is moved from one Controller to another Controller the timeout
values used after the move operation are based on the capabilities of the new
Controller. The timeout values shall be set according to the following table:
1. The state machine pair is informative but described using normative text in
order to clearly specify the behavior of the protocol. Designers and imple-
menters may choose any design / implementation technique they wish, but it
shall behave in a manner identical to the external behavior of the specified
state machines.
2. There is a single state machine pair for each active L2CAP channel
configured to use Enhanced Retransmission mode.
3. Variables are used to limit the number of states by maintaining the state of
particular conditions. The variables are defined in section 8.6.5.2.
4. For some combinations of Event and Condition, the state tables provide
alternative groups of actions. These alternatives are separated by horizontal
lines in the Actions and Next State columns. The alternatives are mutually
exclusive; selection of an alternate is done based upon (i) local status, (ii) a
layer management action, or (iii) an implementation decision. There is no
relationship between the order of the alternatives between events, nor is it
implied that the same alternative must be selected every time the event
occurs.
5. The state tables use timers. Any Start Timer action restarts the specified
timer from its initial value, even if the timer is already running. When the
timer reaches 0 the appropriate timer expired event is set and the timer
stops. The Stop Timer action stops a timer if it is running.
6. Events not recognized in a particular state are assumed to remain pending
until any masking flag is modified or a transition is made to a state where
they can be recognized.
7. Some state transitions and actions are triggered by internal events (e.g.
requests from the upper layer). It is implementation specific how these
internal events are realized. They are used for clarity in specifying the state
machine. All events including Internal events are described in Section
8.6.5.3 on page 172.
8. The state machines specify the exact frames to be sent by transmitters but
are relaxed on what receivers are allowed to accept as valid. For example
there are cases where the transmitter is required to send a frame with P=1.
The correct response is a frame with F=1 but in some cases the receiver is
allowed to accept a frame with F=0 in addition to F=1.
The state diagram shows the states and the main transitions. Not all events are
shown on the state diagram.
SREJ_
SENT
Recv I-frame with
Unexpected TxSeq Monitor Timer expires
Action: send SREJ Recv I-frames, S-frames Action: send RR(P=1) or RNR(P=1)
(see note 1) Action: send RR, RNR, I-
frames
Recv I-frame(s) with
requested TxSeq
Recv I-frame with
Unexpected TxSeq
Action:send REJ
RECV WAIT_F
Retrans timer expires
Recv I-frame with Or Local Busy clears
expected TxSeq Action: send RR(P=1)
or RNR(P=1)
REJ_
Recv I-frame with
SENT Unexpected TxSeq Recv Frame(F=1)
Action: send REJ
(see note 1)
XMIT
Note 1: Implementations may chose
between sending an REJ or SREJ
when receiving an I-frame with
Transmitter State Machine
Unexpected TxSeq
The Receiver state machine “calls” the Transmitter state machine using the
PassToTx action. This shows up in the Transmitter state machine as an event.
When the Transmitter state machine is called it runs to completion before
returning to the Receiver state machine. Running to completion means that all
actions are executed and the Transmitter state is changed to the new state.
The Receiver and Transmitter state machine share variables and timers.
8.6.5.2 States
The following states have been defined to specify the protocol; the actual
number of states and naming in a given implementation is outside the scope of
this specification:
REJ_SENT—The L2CAP entity has sent a REJ frame to cause the remote
L2CAP entity to resend I-frame(s). The L2CAP entity is waiting for the I-frame
with a TxSeq that matches the ReqSeq sent in the REJ. Whether to send a
REJ versus a SREJ is implementation dependent.
SREJ_SENT—The L2CAP entity has sent one or more SREJ frames to cause
the remote L2CAP entity to resend missing I-frame(s). The local L2CAP entity
is waiting for all requested I-frames to be received. If additional missing I-
frames are detected while in SREJ_SENT then additional SREJ frames or a
REJ frame can be sent to request those I-frames. Whether to send a SREJ
versus a REJ is implementation dependent.
Variables are used to limit the number of states and help clarify the state chart
tables. Variables can be set to values, evaluated in conditions and compared in
conditional statements. They are also used in the action descriptions. Below is
a list of the operators, connectives and statements that can be used with
variables.
Operator,
connective or statement Description
Operator,
connective or statement Description
Table 8.3: Operators, connectives and statements used with variables (Continued)
In addition to the variables above the following variables and timers are used:
SrejList—is a list of TxSeq values for I-frames that are missing and need to be
retransmitted using SREJ. A SREJ has already been sent for each TxSeq on
the list. When SrejList is empty it equals 0 (i.e. SrejList = 0). If SrejList is not
empty it is greater than 0 (i.e. SrejList > 0).
RetryIframes[]—holds a retry counter for each I-frame that is sent within the
receiving device's TxWindow. Each time an I-frame is retransmitted the
corresponding counter within RetryIframes is incremented. When an attempt to
retransmit the I-frame is made and the counter is equal to MaxTransmit then
the channel shall be closed.
RNRsent—when set to TRUE it means that the local L2CAP entity has sent an
RNR frame. It is used to determine if the L2CAP entity needs to send an RR to
the remote L2CAP entity to clear the busy condition. When the channel is
created RNRsent shall be set to FALSE.
SendRej—when set to TRUE it indicates that the local L2CAP entity has
determined that a REJ should be sent in the SREJ_SENT state while
processing received I-frames. The sending of new SREJ frames is stopped.
When the channel is created SendRej shall be set to FALSE.
FramesSent—is used to keep track of the number I-frames sent by the Send-
Data and Retransmit-I-frames actions.
8.6.5.4 Events
Data-Request—The upper layer has requested that an SDU be sent. The SDU
may need to be broken into multiple I-frames by L2CAP based on the MPS of
the remote device and/or the maximum PDU allowed by the HCI or QoS
requirements of the system.
Recv RR, REJ, RNR, SREJ (P=x) or (F=x)—Receive a specific S-frame (RR,
REJ, etc.) with a specific value for the P and/or F bit. The F-bit and the P-bit
shall not both be set to 1 in a transmitted S-frame so received S-frames with
both P and F set to 1 should be ignored. If the P and/or F bit value is not
specified in the event then either value is accepted.
Recv RRorRNR—Receive an RR or RNR with any value for the P-bit and F-
bit.
Recv REJorSREJ—Receive an REJ or SREJ with any value for the P-bit and
F-bit.
Recv frame—This is catch-all for all frames that are not explicitly declared as
events in the state table.
8.6.5.5 Conditions
SendRej = TRUE or FALSE—TRUE indicates that a REJ will be sent after all
frames requested using SREJ have been received.
8.6.5.6 Actions
Send RR, RNR (P=x) or (F=x)—Send the specified S-frame with the specified
value for the P-bit or F-bit. If a value for the P-bit or F-bit is not specified the
value shall be 0. For example Send RR(P=1) means send an RR with the P-bit
set to 1 and the F-bit set to 0. The ReqSeq field shall be set to BufferSeq. If an
RNR is sent, RNRsent shall be set to TRUE.
Send REJ (P =x) or (F=x)—Send a REJ with the specified value for the P-bit
or F-bit. The ReqSeq field shall be set to ExpectedTxSeq. If a value for the P-
bit or F-bit is not specified the value shall be 0. Note that this will acknowledge
previously received I-frames up to ExpectedTxSeq—1 and may allow the
remote L2CAP entity to transmit new I-frames. If the local L2CAP entity is not
in a position to acknowledge the previously received I-frames it may use
SREJ(P=0) or RNR. It may also wait to send the REJ until it is able to
acknowledge the I-frames.
Send SREJ—Send one or more SREJ frames with P=0. For each missing I-
frame starting with ExpectedTxSeq up to but not including the TxSeq of the
received I-frame, an SREJ frame is sent with ReqSeq set to the TxSeq of the
missing frame. The TxSeq is inserted into the tail of SrejList. For example if
ExpectedTxSeq is 3 and the received I-frame has a TxSeq of 5 there are two
missing I-frames. An SREJ with ReqSeq 3 is sent followed by an SREJ with
ReqSeq 4. TxSeq 3 is inserted first into SrejList followed by TxSeq 4. After all
SREJ frames have been sent ExpectedTxSeq shall be set to the TxSeq of the
received I-frame + 1 mod MaxTxWin.
Start-MonitorTimer—Start the Monitor Timer from its initial value (see Monitor
time-out in Section 5.4 on page 96). If the timer is already running it is restarted
from its initial value.
Send-Ack (F=x)—an acknowledgement with the specified value for the F-bit
may be sent. Note that this action may occur in an action block with other
actions that also send frames. If a frame has already been sent then it is not
necessary to send additional frames. If the value for the F-bit is not specified it
shall be set to 0. If the value specified is P then the F-bit shall be set equal to
the value of the P-bit of the received frame being acknowledged. If more than
one frame is sent in the acknowledgment only the first frame shall have an F-bit
set to 1. An acknowledgement is an RR, RNR, or pending I-frame(s) (I-frames
that have not been transmitted yet). If pending I-frames are available and are
allowed to be sent then as many as allowed should be sent as an
acknowledgment. Sending an RR or RNR as an acknowledgment for each
received I-frame is not required. An implementation may wait to send an RR or
RNR until a specific number of I-frames have been received, after a certain
period of time has elapsed or some other algorithm. To keep data flowing it is
recommended that an acknowledgment be sent before the TxWindow is full. It
should also be noted that the maximum size of a remote L2CAP entity's
unacknowledged I-frame list may be smaller than the local L2CAP entity's
TxWindow. Therefore the local L2CAP entity should not expect the remote
L2CAP entity to send enough frames to fill its TxWindow and should
acknowledge I-frames accordingly. The following algorithm shall be used when
sending an acknowledgment.
if LocalBusy == TRUE then {
Send_RNR(F=x)
}
else if (RemoteBusy == FALSE) and Pending I-frames
Exist and RemWindow-Not-Full then {
Send-Pending-I-frames (F=x)
}
else {
Send_RR (F=x)
}
the I-frame in its proper sequence order by leaving room for the missing I-
frames.
StoreOrIgnore—If the local L2CAP entity has room to store the received I-
frame then it may store it otherwise it shall discard it. If the received I-frame is
stored, ExpectedTxSeq is advanced as follows:
ExpectedTxSeq := (ExpectedTxSeq + 1) mod MaxTxWin
reassembly function. For the purpose of the state machine this operation is
completed immediately. For example if the TxSeq of saved I-frames before
receiving an I-frame is 2, 3, 5, 6, 9 and the received I-frame has a TxSeq of 4
then it fills the gap between 3 and 5 so the sequence 2, 3, 4, 5, 6 can be
passed to the SDU reassembly function. When the I-frames are actually
removed from the L2CAP entity receive buffers either by being processed
immediately or when pulled by the SDU reassembly function, BufferSeqSrej is
advanced as follows:
When transmitting a new I-frame the control field parameter ReqSeq shall be
set to 0, TxSeq shall be set to NextTXSeq and NextTXSeq shall be
incremented by one.
Upon receipt of a valid I-frame with TxSeq equal to ExpectedTxSeq, the frame
shall be made available to the reassembly function. ExpectedTxSeq shall be
incremented by one.
If there is no buffer space for the received I-frame an existing I-frame (i.e. the
oldest) shall be discarded (flushed) freeing up buffer space for the new I-frame.
The discarded I-frame shall be marked as missing.
Exception conditions may occur as the result of physical layer errors or L2CAP
procedural errors. The error recovery procedures which are available following
the detection of an exception condition at the L2CAP layer in Streaming mode
are defined in this section.
When an AMP is used, the procedures defined in this chapter shall be used.
Enhanced Retransmission mode is used on all reliable channels to ensure a
reliable move channel operation and to ensure that user traffic with an infinite
flush timeout is reliable even for AMPs that do not support infinite flush timeout.
Streaming mode is used on all channels configured with a finite flush timeout.
All Best Effort channels created over the same AMP Physical link are
aggregated over a single AMP Logical link, so if a Best Effort channel is
requested over an AMP Physical link where a Best Effort logical link already
exists then the Best Effort Extended Flow Specifications are aggregated into
one pair of flow specifications and the flow specification of the AMP Logical link
is modified using the HCI Flow Spec Modify command (in devices that support
HCI). Section 7.8 describes how Best Effort Flow specifications are
aggregated. A logical link is created for each Guaranteed channel and one for
the first Best Effort channel of the AMP.
All channels created over the same BR/EDR physical link are aggregated over
a single logical link. Aggregation of Best Effort Extended Flow Specifications is
not necessary for channels created over ACL-U logical links so the term
“modify the logical link” in the algorithm descriptions results in “no action” when
the logical link is ACL-U. The L2CAP layer should perform admission control
for Guaranteed channels created on ACL-U logical links (see Section 7.10 for a
description of L2CAP admission control). The term “create a logical link” in the
algorithm description refers to L2CAP performing admission control when the
logical link is ACL-U.
Basic Algorithm:
1. If one or more Best Effort channels already exist for the Controller
then Goto step 3
2. Tell the Controller to create a logical link passing the Extended Flow
Specifications. Goto step 5
3. Aggregate the Extended Flow Specifications with all the other Best
Effort Extended Flow specifications running on the same physical link
as described in Section 7.8.
4. Tell the controller to modify the logical link passing the aggregated
Extended Flow Specifications.
5. If the Controller accepts the create/modify request and returns
success then complete the L2CAP Configuration with result =
success otherwise complete the L2CAP configuration with result =
“Failure - flow spec rejected”
Guaranteed Algorithm
1. Tell the Controller to create a logical link passing the Extended Flow
Specifications.
2. If the Controller accepts the create request and returns success,
complete the L2CAP Configuration with result = success; otherwise,
complete the L2CAP configuration with result = “Failure - flow spec
rejected.”
$03 $03
+RVW$ +RVW%
3$/$ 3$/%
L2CA_CreateChannel
Request
Create Channel Request
L2CA_CreateChannel
Indication
L2CA_CreateChannel
Create Channel Response Response
L2CA_CreateChannel
Confirm
Config Request
w/Extended Flow Spec option
/RJLFDO/LQN&UHDWLRQ
Config Response
W/Extended Flow Spec option
Result = success
Config Response
w/Extended Flow Spec option
Result = success
Figure 9.1: Creation of First Best Effort L2CAP channel or a Guaranteed L2CAP channel
$03 $03
+RVW$ +RVW%
3$/$ 3$/%
L2CA_CreateChannel
Request
Create Channel Request
L2CA_CreateChannel
Indication
L2CA_CreateChannel
Create Channel Response Response
L2CA_CreateChannel
Confirm
Config Request
w/Extended Flow Spec option
Config Response
W/Extended Flow Spec option
Result = success
Config Response
w/Extended Flow Spec option
Result = success
The two procedures for moving channels are based on the mode configured for
the channel. One procedure is used for channels configured with Enhanced
Note that the terms such as “logical link create” and “logical link modify” are
used in the Move procedures. For AMP Controllers these terms refer to logical
link operations (e.g. QoS admission control) performed by the Controller. For
BR/EDR and BR/EDR/LE Controllers these terms refer to QoS admission
control performed by L2CAP on behalf of the Controller.
1. Stop sending I-frames and S-frames and cancel all timers. Set the
transmitter to the XMIT state and clear all retry counters.
2. Clear or reset any SREJ_SENT and REJ_SENT state specific
variables including flushing any received out-of-sequence I-frames
saved as part of being in the SREJ_SENT state. Set the receiver to
the RECV state.
3. Process received I-frames in the RECV state including processing
the ReqSeq and passing completed SDUs to the upper layer. Only
process the ReqSeq of received S-frames. Do not change state.
4. Ignore all out-of-sequence I-frames keeping note of the TxSeq of the
last in-sequence I-frame received.
5. If the initiating device is in a local busy condition then it should wait
to send the Move Channel Confirmation packet until the local busy
condition has cleared. If the responding device is in a local busy
condition then it should send a Move Channel Response packet with
result “pending” upon receiving the Move Channel Request packet
and wait until the local busy condition is cleared before sending a
Move Channel Response packet with a “non-pending” result.
6. The ReqSeq of the RR(P=1) sent by the initiating device shall be set
to the TxSeq of the next I-frame after the last in-sequence I-frame
received (noted in step 4). The ReqSeq of the RR(F=1) or I-
frame(F=1) sent by the responding device shall be set to the TxSeq
of the next frame after the last in-sequence I-frame received (noted
in step 4).
7. The new Controller or HCI transport may require smaller PDU size
than the old Controller. If this is the case then the L2CAP layer shall
segment all retransmitted I-frames to fit the new PDU size.
8. After sending the RR(P=1) the initiating device should start the
Monitor Timer and go to the WAIT_F state.
9. Timers shall be stopped during channel reconfiguration and restarted
when reconfiguration is complete.
1. When the L2CAP layer on the initiating device (data source) receives
the L2CA_Move_Channel.request it shall stop sending L2CAP
PDUs. The L2CAP layer on the initiating device shall send a Move
Channel Request packet over the L2CAP signaling channel to the
remote (responding) device.
2. When the L2CAP layer on the responding device receives the Move
Channel Request packet it shall still listen on the old Controller for
receive frames (timing could be such that packets from the initiating
device are still in transit). It shall pass completely received SDUs up
to the upper layer. It shall send a Move Channel Response packet to
the other side. If a logical link must be created (or admission control
is required) the Move Channel Response packet shall contain a
result code of “pending.” If a logical link does not need to be created
and the move operation is allowed then the Move Channel Response
packet shall contain a result code of “success.” Otherwise it shall
contain the appropriate “refused” result code. If the response code
sent in the Move Channel Response packet is “pending” then the
L2CAP layer on the responding device shall attempt to create a
logical link on the new Controller for the channel. When the logical
link create operation is complete, the L2CAP layer on the responding
device shall send a Move Channel Response packet to the other side
with the result code indicating the success/failure of the logical link
create operation. It shall continue to listen on the old Controller.
3. When the L2CAP layer on the initiating device receives the Move
Channel Response packet it shall check the result code. If the result
code in the Move Channel Response packet is “refused” it shall send
a Move Channel Confirmation packet with result code “failure” to the
other side. If the result code in the Move Channel Response packet
is “pending” or “success” the L2CAP layer shall attempt to create a
logical link on the new Controller for the channel. If the result code in
the Move Channel Response packet is “pending” then it shall use the
ERTX timer while waiting for a Move Channel Response packet with
a “non-pending” result code from the responding device. When the
logical link create operation is complete and it has received a Move
Channel Response packet from the responding device with a “non-
pending” result code it shall send a Move Channel Confirmation
packet and wait for a Move Channel Confirmation response packet.
The result code in the Move Channel Confirmation indicates the
success/failure of its own logical link create operation and the result
code in the Move Channel Response packet from the responding
device. If both are success then the result code sent in the Move
Channel Confirmation shall be success otherwise it shall be failure.
4. When the L2CAP layer on the responding device receives the Move
Channel Confirmation packet it shall send a Move Channel
Confirmation response packet and send an
L2CA_Move_Channel_Confirm.indication to the upper layer with the
result code passed in the Move Channel Confirmation packet. If the
result code of the Move Channel Confirmation is success it shall
listen on the new Controller. If the result code is failure it shall listen
on the old Controller.
5. When the L2CAP layer on the initiating device receives the Move
Channel Confirmation response packet it shall send an
L2CAP_Move_Channel.confirm to the upper layer with the result
code passed in the Move Channel Confirmation packet. If the result
sent in the Move Channel Confirmation is success then the initiating
device shall send I-frames for the channel on the new Controller
otherwise it shall send I-frames for the channel on the old Controller.
1. When the L2CAP layer on initiating device (data sink) receives the
L2CAP_Move_Channel.request it shall send a Move Channel
Request packet over the L2CAP signaling channel to the remote
(responding) device. It shall continue listening on the old Controller.
2. When the L2CAP layer on the responding device receives the Move
Channel Request packet it shall stop sending L2CAP PDUs and
send a Move Channel Response packet to the other side. If a logical
link must be created (or admission control is required) the Move
Channel Response packet shall contain a result code of “pending.” If
a logical link does not need to be created and the move operation is
allowed then the Move Channel Response packet shall contain a
result code of “success.” Otherwise it shall contain the appropriate
“refused” result code. If the result code sent in the Move Channel
Response packet is “pending” then the L2CAP layer on the
responding device shall attempt to create a logical link on the new
Controller for the channel. When the logical link create operation is
complete, the L2CAP layer on the responding device shall send a
Move Channel Response packet to the other side with the result code
indicating the success/failure of the logical link create.
3. When the L2CAP layer on the initiating device receives the Move
Channel Response packet it shall check the result code. If the result
code in the Move Channel Response packet is “refused” it shall send
a Move Channel Confirmation packet with result code “failure” to the
other side. If the result code in the Move Channel Response packet
is “pending” or “success” the L2CAP layer shall attempt to create a
logical link on the new Controller for the channel. If the result code in
the Move Channel Response packet is “pending” then it shall use the
ERTX timer while waiting for a Move Channel Response packet with
Figure 9.3 and Figure 9.4 show examples of the move operation with
Enhanced Retransmission mode active.
$03 $03
+RVW$ +RVW%
3$/$ 3$/%
L2CA_Move_Channel. Stop
transmission
Request
Move Channel Request
Stop
transmission
/RJLFDO/LQN&UHDWLRQ
RR(P=1)
Figure 9.3: Move of a Best Effort L2CAP channel Enhanced Retransmission mode enabled to an
AMP with no existing best effort logical link or move of any Guaranteed L2CAP channel
$03 $03
+RVW$ +RVW%
3$/$ 3$/%
L2CA_Move_Channel. Stop
transmission
Request
Move Channel Request
Stop
transmission
)ORZ6SHF0RGLI\
RR(P=1)
Figure 9.4: Move of a Best Effort L2CAP channel with Enhanced Retransmission mode enabled to
an AMP where a best effort logical link exists
Note: When encryption is not enabled, the result value “Connection refused –
insufficient authentication” does not indicate that MITM protection is required.
Figure A.1 illustrates the basic configuration process. In this example, the
devices exchange MTU information. All other values are assumed to be
default.
Device A Device B
L2CA L2CA
LP LP
L2CA_ConfigReq
Option=0x01
[MTU=0x00000100] L2CAP_ConfigReq
L2CA_ConfigInd
L2CA_ConfigRsp
Result=Success
L2CA_ConfigCfm L2CAP_ConfigRsp
L2CA_ConfigReq
Option=0x01
[MTU=0x00000200]
L2CA_ConfigInd L2CAP_ConfigReq
L2CA_ConfigRsp
Result=Success
L2CAP_ConfigRsp
L2CA_ConfigCfm
TIME
Figure A.2 illustrates how two devices interoperate even though one device
supports more options than the other does. Device A is an upgraded version. It
uses a hypothetically defined option type 0x20 for link-level security. Device B
rejects the command using the Configuration Response packet with result
‘unknown parameter’ informing Device A that option 0x20 is not understood.
Device A then resends the request omitting option 0x20. Device B notices that
it does not need to such a large MTU and accepts the request but includes in
the response the MTU option informing Device A that Device B will not send an
L2CAP packet with a payload larger than 0x80 octets over this channel. On
receipt of the response, Device A could reduce the buffer allocated to hold
incoming traffic.
Device A Device B
L2CA L2CA
LP LP
L2CA_ConfigReq
Option=0x01
[MTU=0x00000100]
Option=0x20
L2CAP_ConfigReq L2CA_ConfigInd
[Data=0xFA12D823]
L2CA_ConfigRsp
Result=Unknown option
Option=0x20
L2CA_ConfigCfm L2CAP_ConfigRsp
L2CA_ConfigReq
Option=0x01
[MTU=0x00000100]
L2CAP_ConfigReq L2CA_ConfigInd
L2CA_ConfigRsp
Result=Success
[MTU=0x00000080]
L2CA_ConfigCfm L2CAP_ConfigRsp
L2CA_ConfigReq
Option=0x01
[MTU=0x00000200]
L2CA_ConfigInd L2CAP_ConfigReq
L2CA_ConfigRsp
Result=Success
L2CAP_ConfigRsp L2CA_ConfigCfm
TIME
Device A Device B
L2CA L2CA
LP LP
L2CA_ConfigReq
L2CAP_ConfigReq
ID=0x1234
DCID=0x01234567
Option=0x01
[MTU=0x00000100]
Option=0x20
[Data=BIG]
L2CAP_CmdReject
ID=0x1234
Reason=0x0001
(MTU exceeded)
Data=0x80
L2CAP_ConfigReq
ID=0x1235
DCID=0x01234567
Option=0x01
[MTU=0x00000100]
C flag set to 1
TIME
CONTENTS
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3, Part B] page 217
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3, Part B] page 218
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3, Part B] page 219
1 INTRODUCTION
1.2 MOTIVATION
Service Discovery in the Bluetooth environment, where the set of services that
are available changes dynamically based on the RF proximity of devices in
motion, is qualitatively different from service discovery in traditional network-
based environments. The service discovery protocol defined in this
specification is intended to address the unique characteristics of the Bluetooth
environment. See section A, “Background Information,” on page 262, for
further information on this topic.
1.3 REQUIREMENTS
The following capabilities have been identified as requirements for version 1.0
of the Service Discovery Protocol.
1. SDP shall provide the ability for clients to search for needed services based
on specific attributes of those services.
2. SDP shall permit services to be discovered based on the class of service.
3. SDP shall enable browsing of services without a priori knowledge of the
specific characteristics of those services.
4. SDP shall provide the means for the discovery of new services that become
available when devices enter RF proximity with a client device as well as
when a new service is made available on a device that is in RF proximity
with the client device.
5. SDP shall provide a mechanism for determining when a service becomes
unavailable when devices leave RF proximity with a client device as well as
when a service is made unavailable on a device that is in RF proximity with
the client device.
6. SDP shall provide for services, classes of services, and attributes of
services to be uniquely identified.
7. SDP shall allow a client on one device to discover a service on another
device without consulting a third device.
8. SDP should be suitable for use on devices of limited complexity.
9. SDP shall provide a mechanism to incrementally discover information about
the services provided by a device. This is intended to minimize the quantity
1.5 CONVENTIONS
When multiple bit fields are contained in a single byte and represented in a
drawing in this specification, the more significant (high-order) bits are shown
toward the left and less significant (low-order) bits toward the right.
Multiple-byte fields are drawn with the more significant bytes toward the left
and the less significant bytes toward the right. Multiple-byte fields are
transferred in network byte order. See Section 4.1 on page 234.
2 OVERVIEW
Client Server
Application Application
SDP requests
SDP SDP
Client Server
SDP responses
The service discovery mechanism provides the means for client applications to
discover the existence of services provided by server applications as well as
the attributes of those services. The attributes of a service include the type or
class of service offered and the mechanism or protocol information needed to
utilize the service.
SDP requests
SDP SDP
Client Server
SDP responses
SDP involves communication between an SDP server and an SDP client. The
server maintains a list of service records that describe the characteristics of
services associated with the server. Each service record contains information
about a single service. A client can retrieve information from a service record
maintained by the SDP server by issuing an SDP request.
The set of SDP servers that are available to an SDP client will change
dynamically based on the RF proximity of the servers to the client. When a
server becomes available, a potential client must be notified by a means other
than SDP so that the client can use SDP to query the server about its services.
Similarly, when a server leaves proximity or becomes unavailable for any
reason, there is no explicit notification via the service discovery protocol.
However, the client can use SDP to poll the server and may infer that the
server is not available if it no longer responds to requests.
Service Record
Service Attribute 1
Service Attribute 2
Service Attribute 3
...
Service Attribute N
A service record handle is a 32-bit number that shall uniquely identify each
service record within an SDP server. It is important to note that, in general,
each handle is unique only within each SDP server. If SDP server S1 and SDP
server S2 both contain identical service records (representing the same
service), the service record handles used to reference these identical service
records are completely independent. The handle used to reference the service
on S1 will be meaningless if presented to S2.
The service discovery protocol does not provide a mechanism for notifying
clients when service records are added to or removed from an SDP server.
While an L2CAP (Logical Link Control and Adaptation Protocol) connection is
established to a server, a service record handle acquired from the server shall
remain valid unless the service record it represents is removed. If a service is
removed from the server, further requests to the server (during the L2CAP
connection in which the service record handle was acquired) using the
service’s (now stale) record handle shall result in an error response indicating
an invalid service record handle. An SDP server shall ensure that no service
record handle values are re-used while an L2CAP connection remains
established. Service record handles shall remain valid across successive
L2CAP connections while the ServiceDatabaseState attribute value remains
unchanged. Further, service record handles should remain valid until such time
that the corresponding service is permanently removed or changes in an
incompatible way. See the ServiceRecordState and ServiceDatabaseState
attributes in Section 5 on page 248.
See Section 5.1 on page 248, for attribute definitions that are common to all
service records. Service providers can also define their own service attributes.
Service Attribute
Attribute ID
Attribute Value
2.3.1 Attribute ID
An attribute ID is a 16-bit unsigned integer that distinguishes each service
attribute from other service attributes within a service record. The attribute ID
also identifies the semantics of the associated attribute value.
A service class definition specifies each of the attribute IDs for a service class
and assigns a meaning to the attribute value associated with each attribute ID.
Each attribute ID is defined to be unique only within each service class.
All services belonging to a given service class assign the same meaning to
each particular attribute ID. See Section 2.4 on page 226.
In the Service Discovery Protocol, an attribute ID is represented as a data
element. See Section 3 on page 231.
Each service class is also assigned a unique identifier. This service class
identifier is contained in the attribute value for the ServiceClassIDList attribute,
and is represented as a UUID (see Section 2.5.1 on page 227). Since the
format and meanings of many attributes in a service record are dependent on
the service class of the service record, the ServiceClassIDList attribute is very
important. Its value shall be examined or verified before any class-specific
attributes are used. Since all of the attributes in a service record must conform
to all of the service’s classes, the service class identifiers contained in the
ServiceClassIDList attribute are related. Typically, each service class is a
subclass of another class whose identifier is contained in the list. A service
subclass definition differs from its superclass in that the subclass contains
additional attribute definitions that are specific to the subclass.
If a Service Class UUID is exposed in the SDP database of a product, then the
product containing the SDP record shall comply with the specification which
defines the service corresponding to the UUID.
Note that this example is only illustrative. This may not be a practical printer
class hierarchy.
The capability search for service records based on the values of arbitrary
attributes is not provided. Rather, the capability is provided to search only for
attributes whose values are Universally Unique Identifiers1 (UUIDs). Important
attributes of services that can be used to search for a service are represented
as UUIDs.
2.5.1 UUID
To reduce the burden of storing and transferring 128-bit UUID values, a range
of UUID values has been pre-allocated for assignment to often-used,
registered purposes. The first UUID in this pre-allocated range is known as the
Bluetooth Base UUID and has the value 00000000-0000-1000-8000-
00805F9B34FB, from the Bluetooth Assigned Numbers document. UUID
values in the pre-allocated range have aliases that are represented as 16-bit or
32-bit values. These aliases are often called 16-bit and 32-bit UUIDs, but it is
important to note that each actually represents a 128-bit UUID value.
The full 128-bit value of a 16-bit or 32-bit UUID may be computed by a simple
arithmetic operation.
1. The format of UUIDs is specified in ITU-T Rec. X.667, alternatively known as ISO/IEC
9834-8:2005.
Note that two 16-bit UUIDs may be compared directly, as may two 32-bit
UUIDs or two 128-bit UUIDs. If two UUIDs of differing sizes are to be
compared, the shorter UUID must be converted to the longer UUID format
before comparison.
Normally, if an SDP server has relatively few services, all of its services will be
placed in the root browse group. However, the services offered by an SDP
server may be organized in a browse group hierarchy, by defining additional
browse groups below the root browse group. Each of these additional browse
groups is described by a service record with a service class of
BrowseGroupDescriptor.
This table shows the services records and service attributes necessary to
implement the browse hierarchy.
GroupID ReferenceID
Games BrowseGroupDescriptor BrowseGroupList EntertainmentID
GroupID GamesID
3 DATA REPRESENTATION
Size Additional
Index bits Data Size
0 0 1 byte. Exception: if the data element type is nil, the data size is 0
bytes.
1 0 2 bytes
2 0 4 bytes
3 0 8 bytes
4 0 16 bytes
5 8 The data size is contained in the additional 8 bits, which are inter-
preted as an unsigned integer.
0 0
5 3
4 PROTOCOL DESCRIPTION
PDU Format:
N The PDU ID field identifies the type of PDU. I.e. its meaning and the
specific parameters.
0x00 Reserved
0x01 SDP_ErrorResponse
0x02 SDP_ServiceSearchRequest
0x03 SDP_ServiceSearchResponse
0x04 SDP_ServiceAttributeRequest
0x05 SDP_ServiceAttributeResponse
0x06 SDP_ServiceSearchAttributeRequest
0x07 SDP_ServiceSearchAttributeResponse
0x08-0xFF Reserved
N The ParameterLength field specifies the length (in bytes) of all parame-
ters contained in the PDU.
Range: 0x0000 – 0xFFFF
Any Request
Client Server
SDP_ErrorResponse
Description:
PDU Parameters:
Note: Invalid PDU size should be used, for example, if an incoming request
PDU's length is inconsistent with the specification of that request PDU or the
length parameter of an incoming request PDU is inconsistent with that request
PDU's actual contents.
SDP_ServiceSearchRequest
Server
Client
SDP_ServiceSearchResponse
Description:
PDU Parameters:
Data Element The ServiceSearchPattern is a data element sequence where each ele-
Sequence ment in the sequence is a UUID. The sequence shall contain at least
one UUID. The maximum number of UUIDs in the sequence is 121. The
list of UUIDs constitutes a service search pattern.
1. The value of 12 has been selected as a compromise between the scope of a service
search and the size of a search request PDU. It is not expected that more than 12
UUIDs will be useful in a service search pattern.
Description:
PDU Parameters:
SDP_ServiceAttributeRequest
Server
Client
SDP_ServiceAttributeResponse
Description:
Command Parameters:
32-bit handle The ServiceRecordHandle parameter specifies the service record from
which attribute values are to be retrieved. The handle is obtained via a
previous SDP_ServiceSearch transaction.
Data Element The AttributeIDList is a data element sequence where each element in
Sequence the list is either an attribute ID or a range of attribute IDs. Each attribute
ID is encoded as a 16-bit unsigned integer data element. Each attribute
ID range is encoded as a 32-bit unsigned integer data element, where
the high order 16 bits are interpreted as the beginning attribute ID of the
range and the low order 16 bits are interpreted as the ending attribute ID
of the range. The attribute IDs contained in the AttributeIDList shall be
listed in ascending order without duplication of any attribute ID values.
Note that all attributes can be requested by specifying a range of
0x0000-0xFFFF.
Description:
PDU Parameters:
Data Element The AttributeList is a data element sequence containing attribute IDs
Sequence and attribute values. The first element in the sequence contains the attri-
bute ID of the first attribute to be returned. The second element in the
sequence contains the corresponding attribute value. Successive pairs
of elements in the list contain additional attribute ID and value pairs.
Only attributes that have non-null values within the service record and
whose attribute IDs were specified in the SDP_ServiceAttributeRequest
are contained in the AttributeList. Neither an attribute ID nor an attribute
value is placed in the AttributeList for attributes in the service record that
have no value. The attributes are listed in ascending order of attribute ID
value.
SDP_ServiceSearchAttributeRequest
Client Server
SDP_ServiceSearchAttributeResponse
Description:
The SDP_ServiceSearchAttributeRequest transaction combines the
capabilities of the SDP_ServiceSearchRequest and the
SDP_ServiceAttributeRequest into a single request. As parameters, it contains
both a service search pattern and a list of attributes to be retrieved from service
records that match the service search pattern. The
SDP_ServiceSearchAttributeRequest and its response are more complex and
can require more bytes than separate SDP_ServiceSearch and
SDP_ServiceAttribute transactions. However, using
SDP_ServiceSearchAttributeRequest can reduce the total number of SDP
transactions, particularly when retrieving multiple service records.
Note that the service record handle for each service record is contained in the
ServiceRecordHandle attribute of that service and may be requested along
with other attributes.
PDU Parameters:
Data Element The ServiceSearchPattern is a data element sequence where each ele-
Sequence ment in the sequence is a UUID. The sequence must contain at least
one UUID. The maximum number of UUIDs in the sequence is 121. The
list of UUIDs constitutes a service search pattern.
1. The value of 12 has been selected as a compromise between the scope of a service
search and the size of a search request PDU. It is not expected that more than 12
UUIDs will be useful in a service search pattern.
Data Element The AttributeIDList is a data element sequence where each element in
Sequence the list is either an attribute ID or a range of attribute IDs. Each attribute
ID is encoded as a 16-bit unsigned integer data element. Each attribute
ID range is encoded as a 32-bit unsigned integer data element, where
the high order 16 bits are interpreted as the beginning attribute ID of the
range and the low order 16 bits are interpreted as the ending attribute ID
of the range. The attribute IDs contained in the AttributeIDList shall be
listed in ascending order without duplication of any attribute ID values.
Note that all attributes may be requested by specifying a range of
0x0000-0xFFFF.
Description:
PDU Parameters:
Data Element The AttributeLists is a data element sequence where each element in
Sequence turn is a data element sequence representing an attribute list. Each attri-
bute list contains attribute IDs and attribute values from one service
record. The first element in each attribute list contains the attribute ID of
the first attribute to be returned for that service record. The second ele-
ment in each attribute list contains the corresponding attribute value.
Successive pairs of elements in each attribute list contain additional
attribute ID and value pairs. Only attributes that have non-null values
within the service record and whose attribute IDs were specified in the
SDP_ServiceSearchAttributeRequest are contained in the AttributeLists.
Neither an attribute ID nor attribute value is placed in AttributeLists for
attributes in the service record that have no value. Within each attribute
list, the attributes are listed in ascending order of attribute ID value.
The service classes and attributes contained in this document are necessarily
a partial list of the service classes and attributes supported by SDP. Only
service classes that directly support the SDP server are included in this
document. Additional service classes will be defined in other documents and
possibly in future revisions of this document. Also, it is expected that additional
attributes will be discovered that are applicable to a broad set of services;
these may be added to the list of Universal attributes in future revisions of this
document.
Only two attributes are required to exist in every service record instance. They
are the ServiceRecordHandle (attribute ID 0x0000) and the ServiceClassIDList
(attribute ID 0x0001). All other service attributes are optional within a service
record.
Description:
A service record handle is a 32-bit number that uniquely identifies each service
record within an SDP server. It is important to note that, in general, each
handle is unique only within each SDP server. If SDP server S1 and SDP
server S2 both contain identical service records (representing the same
service), the service record handles used to reference these identical service
records are completely independent. The handle used to reference the service
on S1 will, in general, be meaningless if presented to S2. Service record
handle values 0x00000001-0x0000FFFF are reserved.
Description:
Description:
Description:
The ServiceID is a UUID that universally and uniquely identifies the service
instance described by the service record. This service attribute is particularly
useful if the same service is described by service records in more than one
SDP server.
Description:
If it is possible for more than one kind of protocol stack to be used to gain
access to the service, the ProtocolDescriptorList takes the form of a data
element alternative where each member is a data element sequence as
described in the previous paragraph.
Protocol Descriptors
ProtocolDescriptorList Examples
These examples are intended to be illustrative. The parameter formats for each
protocol are not defined within this specification.
In the first two examples, it is assumed that a single RFCOMM instance exists
on top of the L2CAP layer. In this case, the L2CAP protocol specific information
(PSM) points to the single instance of RFCOMM. In the last example, two
different and independent RFCOMM instances are available on top of the
L2CAP layer. In this case, the L2CAP protocol specific information (PSM)
points to a distinct identifier that distinguishes each of the RFCOMM instances.
See the L2CAP specification ([Vol. 3] Part A, Section 4.2) for the range of
allowed PSM values.
IrDA-like printer
IP Network Printing
Description:
AdditionalProtocolDescriptorList Examples
The following is just an illustrative example and is not meant to refer a real
specified service or protocols.
Attribute Attribute Value type Attribute Value
ProtocolDescriptorList
ProtocolDescriptor #0DataElementSequence
ProtocolDescriptor #1DataElementSequence
AdditionalProtocolDescriptorLists
ProtocolDescriptorList #0 DataElementSequence
ProtocolDescriptor #0 DataElementSequence
ProtocolDescriptor #1DataElementSequence
Description:
Description:
The first element of each triplet contains an identifier representing the natural
language. The language is encoded according to ISO 639:1988 (E/F): “Code
for the representation of names of languages”.
The third element of each triplet contains an attribute ID that serves as the
base attribute ID for the natural language in the service record. Different
service records within a server may use different base attribute ID values for
the same language.
Description:
1. See http://www.isi.edu/in-notes/iana/assignments/character-sets
Description:
The ServiceAvailability attribute is an 8-bit unsigned integer that represents the
relative ability of the service to accept additional clients. A value of 0xFF
indicates that the service is not currently in use and is thus fully available, while
a value of 0x00 means that the service is not accepting new clients. For
services that support multiple simultaneous clients, intermediate values
indicate the relative availability of the service on a linear scale.
For example, a service that can accept up to 3 clients should provide
ServiceAvailability values of 0xFF, 0xAA, 0x55, and 0x00 when 0, 1, 2, and 3
clients, respectively, are utilizing the service. The value 0xAA is approximately (2/3)
* 0xFF and represents 2/3 availability, while the value 0x55 is approximately (1/
3)*0xFF and represents 1/3 availability. Note that the availability value is be
approximated as
( 1 - ( current_number_of_clients / maximum_number_of_clients ) ) * 0xFF
When the maximum number of clients is large, this formula must be modified to
ensure that ServiceAvailability values of 0x00 and 0xFF are reserved for their
defined meanings of unavailability and full availability, respectively.
Note that the maximum number of clients a service can support may vary
according to the resources utilized by the service's current clients.
A non-zero value for ServiceAvailability does not guarantee that the service will
be available for use. It should be treated as a hint or an approximation of
availability status.
Description:
The BluetoothProfileDescriptorList attribute consists of a data element
sequence in which each element is a profile descriptor that contains
information about a Bluetooth profile to which the service represented by this
service record conforms. Each profile descriptor is a data element sequence
whose first element is the UUID assigned to the profile and whose second
element is a 16-bit profile version number.
Description:
Description:
This attribute contains a URL that refers to the location of an application that
can be used to utilize the service described by the service record. Since
different operating environments require different executable formats, a
mechanism has been defined to allow this single attribute to be used to locate
an executable that is appropriate for the client device’s operating environment.
In the attribute value URL, the first byte with the value 0x2A (ASCII character
‘*’) is to be replaced by the client application with a string representing the
desired operating environment before the URL is to be used.
Description:
This attribute contains a URL that refers to the location of an icon that can be
used to represent the service described by the service record. Since different
hardware devices require different icon formats, a mechanism has been
defined to allow this single attribute to be used to locate an icon that is
appropriate for the client device. In the attribute value URL, the first byte with
the value 0x2A (ASCII character ‘*’) is to be replaced by the client application
with a string representing the desired icon format before the URL is to be used.
For example, assume that the value of the IconURL attribute is http://my.fake/
public/icons/*. On a device that prefers 24 x 24 icons with 256 colors, this URL
would be changed to http://my.fake/public/icons/24x24x8.png. On a device that
prefers 10 x 10 monochrome icons, this URL would be changed to http://
my.fake/public/icons/10x10x1.png.
Description:
Description:
Description:
Attribute IDs in the range of 0x000E – 0x01FF are reserved for use by SDP, if
allocated the assigned numbers document will be updated.
Value
Value
Description:
Description:
Note that the ServiceDatabaseState attribute does not change when existing
service records are modified, including the addition, removal, or modification of
service attributes. A service record's ServiceRecordState attribute indicates
when that service record is modified.
Value
Description:
This attribute contains a UUID that can be used to locate services that are
members of the browse group that this service record describes.
6 SECURITY
In Security Mode 4, SDP should use no security but may use security (an
authenticated or unauthenticated link key with encryption). See [Part C]
Section 5.2.2 on page 312).
The following are simple examples of typical SDP transactions. These are
meant to be illustrative of SDP flows. The examples do not consider:
• Caching (in a caching system, the SDP client would make use of the
ServiceRecordState and ServiceDatabaseState attributes);
• Service availability (if this is of interest, the SDP client should use the
ServiceAvailability and/or ServiceTimeToLive attributes);
• SDP versions (the VersionNumberList attribute could be used to determine
compatible SDP versions);
• SDP Error Responses (an SDP error response is possible for any SDP
request that is in error); and
• Communication connection (the examples assume that an L2CAP
connection is established).
The examples are meant to be illustrative of the protocol. The format used is
ObjectName[ObjectSizeInBytes] {SubObjectDefinitions}, but
this is not meant to illustrate an interface. The ObjectSizeInBytes is the
size of the object in decimal. The SubObjectDefinitions (inside of {}
characters) are components of the immediately enclosing object. Hexadecimal
values shown as lower-case letters, such as for transaction IDs and service
handles, are variables (the particular value is not important for the illustration,
but each such symbol always represents the same value). Comments are
included in this manner: /* comment text */
0x00
}
}
Note that values in the service record’s primary language are requested for
the text attributes (ServiceName, ServiceDescription and ProviderName) so
that absolute attribute IDs may be used, rather than adding offsets to a base
obtained from the LanguageBaseAttributeIDList attribute.
2. SDP server to SDP client: SDP_ServiceSearchAttributeResponse, returning
the specified attributes for each of the three synchronization services. In the
example, each ServiceClassIDList is assumed to contain a single element,
the generic SynchronisationServiceClassID (a 32-bit UUID represented as
sss...sss). Each of the other attributes contain illustrative data in the
example (the strings have illustrative text; the icon URLs are illustrative, for
each of the respective three synchronization services; and the
SupportedDataStore attribute is represented as an unsigned 8-bit integer
where 0x01 = vCard2.1, 0x02 = vCard3.0, 0x03 = vCal1.0 and 0x04 = iCal).
Note that one of the service records (the third for which data is returned) has
no ServiceDescription attribute. The attributes are returned as a data
element sequence, where each element is in turn a data element sequence
representing a list of attributes. Within each attribute list, the
ServiceClassIDList is a data element sequence while the remaining
attributes are single data elements. The Transaction ID is the same value as
supplied by the SDP client in the corresponding request (0xvvvv). Since the
entire result cannot be returned in a single response, a non-null continuation
state is returned in this first response.
3. Note that the total length of the initial data element sequence (487 in the
example) is indicated in the first response, even though only a portion of this
data element sequence (368 bytes in the example, as indicated in the
AttributeLists byte count) is returned in the first response. The remainder of
this data element sequence is returned in the second response (without an
additional data element header).
4. SDP client to SDP server: SDP_ServiceSearchAttributeRequest, with the
same parameters as in step 1, except that the continuation state received
from the server in step 2 is included as a request parameter. The
TransactionID is changed to 0xwww to distinguish it from previous request.
5. SDP server to SDP client: SDP_ServiceSearchAttributeResponse, with the
remainder of the result computed in step 2 above. Since all of the remaining
result fits in this second response, a null continuation state is included.
}
ServiceSearchPattern[7] {
DataElementSequence[7] {
0b00110 0b101 0x05
UUID[5] {
/* SynchronisationServiceClassID */
0b00011 0b010 0xssssssss
}
}
}
MaximumAttributeByteCount[2] {
0x0190
}
AttributeIDList[18] {
DataElementSequence[18] {
0b00110 0b101 0x10
AttributeIDRange[5] {
0b00001 0b010 0x00000001
}
AttributeID[3] {
0b00001 0b001 0x000C
}
AttributeIDRange[5] {
0b00001 0b010 0x01000102
}
AttributeID[3] {
0b00001 0b001 0x0301
} }
}
ContinuationState[1] {
/* no continuation state */
0x00
}
}
}
AttributeValue[5] {
/* service record handle */
0b00001 0b010 0xhhhhhhhh
}
}
Attribute[10] {
AttributeID[3] {
0b00001 0b001 0x0001
}
AttributeValue[7] {
DataElementSequence[7] {
0b00110 0b101 0x05
UUID[5] {
/* SynchronisationServiceClassID */
0b00011 0b010 0xssssssss
}
}
}
}
Attribute[35] {
AttributeID[3] {
0b00001 0b001 0x000C
}
AttributeValue[32] {
/* IconURL; '*' replaced by client application */
0b01000 0b101 0x1E
"http://Synchronisation/icons/*"
}
}
Attribute[22] {
AttributeID[3] {
0b00001 0b001 0x0100
}
AttributeValue[19] {
/* service name */
0b00100 0b101 0x11
"Address Book Sync"
}
}
Attribute[59] {
AttributeID[3] {
0b00001 0b001 0x0101
}
AttributeValue[56] {
/* service description */
0b00100 0b101 0x36
"Synchronisation Service for"
" vCard Address Book Entries"
}
}
Attribute[37] {
AttributeID[3] {
0b00001 0b001 0x0102
}
AttributeValue[34] {
/* service provider */
}
}
Attribute[57] {
AttributeID[3] {
0b00001 0b001 0x0101
}
AttributeValue[54] {
/* service description */
0b00100 0b101 0x34
"Synchronisation Service for"
" vCal Appointment Entries"
}
}
Attribute[37] {
AttributeID[3] {
0b00001 0b001 0x0102
}
AttributeValue[34] {
/* service provider */
0b00100 0b101 0x20
"Synchronisation Specialists Inc."
}
}
Attribute[5] {
AttributeID[3] {
0b00001 0b001 0x0301
}
AttributeValue[2] {
/* Supported Data Store ’calendar’ */
0b00001 0b000 0x03
}
}
}
/* } Data element sequence of attribute lists */
/* is not completed in this PDU. */
}
ContinuationState[9] {
/* 8 bytes of continuation state */
0x08 0xzzzzzzzzzzzzzzzz
}
}
/* SynchronisationServiceClassID */
0b00011 0b010 0xssssssss
}
}
}
MaximumAttributeByteCount[2] {
0x0180
}
AttributeIDList[18] {
DataElementSequence[18] {
0b00110 0b101 0x10
AttributeIDRange[5] {
0b00001 0b010 0x00000001
}
AttributeID[3] {
0b00001 0b001 0x000C
}
AttributeIDRange[5] {
0b00001 0b010 0x01000102
}
AttributeID[3] {
0b00001 0b001 0x0301
}
}
}
ContinuationState[9] {
/* same 8 bytes of continuation state */
/* received in part 2 */
0x08 0xzzzzzzzzzzzzzzzz
}
}
SdpSDP_ServiceSearchAttributeResponse[115] {
PDUID[1] {
0x07
}
TransactionID[2] {
0xwwww
}
ParameterLength[2] {
0x006E
}
AttributeListByteCount[2] {
0x006B
}
AttributeLists[107] {
/* Continuing the data element sequence of */
/* attribute lists begun in Part 2. */
DataElementSequence[107] {
0b00110 0b101 0x69
Attribute[8] {
AttributeID[3] {
0b00001 0b001 0x0000
}
AttributeValue[5] {
}
/* This completes the data element sequence */
/* of attribute lists begun in Part 2. */
}
ContinuationState[1] {
/* no continuation state */
0x00
}
}
CONTENTS
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3, Part C] page 278
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3, Part C] page 279
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3, Part C] page 280
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3, Part C] page 281
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3, Part C] page 282
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3, Part C] page 283
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3, Part C] page 284
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3, Part C] page 285
FOREWORD
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3, Part C] page 286
1 INTRODUCTION
1.1 SCOPE
The purpose of the Generic Access Profile is:
This profile defines three device types based on the supported Core
Configurations as defined in [Vol. 0], Part B Section 3.1. The device types are
shown in Table 1.1:
BR/EDR Devices that support the “Basic Rate” Core Configuration (see
[Vol. 0], Part B Section 4.1)
LE only Devices that support the “Low Energy” Core Configuration (see
[Vol. 0], Part B Section 4.4)
BR/EDR/LE Devices that support the “Basic Rate and Low Energy Combined”
Core Configuration (see [Vol. 0], Part B Section 4.5)
Table 1.1: Device Types
The terms physical transport, physical link and physical channel as defined in
[Vol 1] Part A Section 3 are used in this specification.
‘M’ for mandatory to support (used for capabilities that shall be used in the
profile);
’O’ for optional to support (used for capabilities that can be used in the profile);
‘C’ for conditional support (used for capabilities that shall be used in case a
certain other capability is supported);
‘E’ for excluded within profile role (used for capabilities that may be supported
by the unit but shall never be used in the profile role);
’N/A’ for not applicable (in the given context it is impossible to use this
capability).
In this specification, the word shall is used for mandatory requirements, the
word should is used to express recommendations and the word may is used for
options.
A B
PROC 1
PROC 2
PROC 3
PROC 4
PROC 5
MSG 1
MSG 2
MSG 3
MSG 4
Timers are introduced specific to this profile. To distinguish them from timers
used in the Bluetooth protocol specifications and other profiles, these timers
are named in the following format: ’TGAP(nnn)’.
2 PROFILE OVERVIEW
Figure 2.1: Relationship of GAP with lower layers of the Bluetooth architecture
In GAP, for describing the Bluetooth communication that occurs between two
devices in the BR/EDR GAP role, the generic notation of the A-party (the
paging device in case of link establishment, or initiator in case of another
procedure on an established link) and the B-party (paged device or acceptor) is
used. The A-party is the one that, for a given procedure, initiates device
discovery, initiates the establishment of a physical link or initiates a transaction
on an existing link.
This profile handles the procedures between two devices related to discovery
and connecting (link and connection establishment) for the case where none of
the two devices has any link established as well as the case where (at least)
one device has a link established (possibly to a third device) before starting the
described procedure.
A B
A or C
B A
Figure 2.2: This profile covers procedures initiated by one device (A) towards another device (B)
that may or may not have an existing Bluetooth link active
The initiator and the acceptor generally operate the generic procedures
according to this profile or another profile referring to this profile. If the acceptor
operates according to several profiles simultaneously, this profile describes
generic mechanisms for how to handle this.
There are four GAP roles defined for devices operating over an LE physical
transport:
• Broadcaster
• Observer
• Peripheral
• Central
Any device that accepts the establishment of an LE physical link using any of
the connection establishment procedures as defined in Section 9 is referred to
as being in the Peripheral role. A device operating in the Peripheral role will be
in the Slave role in the Link Layer Connection State as described in [Vol. 6],
Part B Section 4.5. A device operating in the Peripheral role is referred to as a
Peripheral. A Peripheral shall have both a transmitter and a receiver.
A device that supports the Central role initiates the establishment of a physical
connection. A device operating in the Central role will be in the Master role in
the Link Layer Connection State as described in [Vol. 6], Part B Section 4.5. A
device operating in the Central role is referred to as a Central. A Central shall
have both a transmitter and a receiver.
Only supported and allowed Link Layer States and State combinations may be
used as described in [Vol. 6], Part B Section 1.1.1. The Physical Layer and Link
Layer functionalities of each GAP role are shown in Table 2.1.
• Transmitter Characteristics M O M M
• Receiver Characteristics O M M M
States:
• Standby State M M M M
• Advertising State M E M E
• Scanning State E M E M
• Initiating State E E E M
Slave Role E E M E
• Connection State
Master Role E E E M
Scanning type:
• Passive scanning E M E O
• Active scanning E O E C1
• Encryption procedure E E O O
• Termination procedure E E M M
C1: If passive scanning is supported then active scanning is optional, otherwise active scan-
ning is mandatory.
C2: Mandatory if Connection Parameters Request procedure is supported, otherwise
optional
Table 2.1: Physical Layer and Link Layer functionality for GAP roles when operating over an
LE physical transport
This profile defines modes of operation that are not service- or profile-specific,
but that are generic and can be used by profiles referring to this profile, and by
devices implementing multiple profiles.
This profile defines the general procedures that can be used for discovering
identities, names and basic capabilities of other Bluetooth devices that are in a
mode where they can be discovered. Only procedures where no channel or
connection establishment is used are specified.
This profile defines the general procedure for how to create bonds (i.e.,
dedicated exchange of link keys) between Bluetooth devices.
This profile describes the general procedures that can be used for establishing
connections to other Bluetooth devices that are in a mode that allows them to
accept connections and service requests.
2.5 CONFORMANCE
Bluetooth devices shall conform to this profile to ensure basic interoperability.
All capabilities indicated as mandatory for this profile shall be supported in the
specified manner (process-mandatory). This also applies for all optional and
conditional capabilities for which support is indicated. All mandatory
capabilities, and optional and conditional capabilities for which support is
indicated, are subject to verification as part of the Bluetooth certification
program.
This profile specifies the generic terms that should be used on the user
interface level.
3.2.1.1 Definition
3.2.1.3 Representation
On the baseband level the BD_ADDR is represented as 48 bits (see [Vol. 2],
Part B Section 1.2). On the Link Layer the public and random device address
are represented as 48-bit addresses.
3.2.2.1 Definition
The Bluetooth device name is the user-friendly name that a Bluetooth device
exposes to remote devices. For a device supporting the BR/EDR device type,
the name is a character string returned in the LMP_name_res in response to
an LMP_name_req. For a device supporting the LE-only device type, the name
is a character string held in the Device Name characteristic as defined in
Section 12.1.
A BR/EDR/LE device type shall have a single Bluetooth device name which
shall be identical irrespective of the physical channel used to perform the name
discovery procedure.
For the BR/EDR physical channel the name is received in the LMP_name_res.
For the LE physical channel the name can be read from the Device Name
characteristic as defined in Section 12.1.
Note: The Device Name Characteristic of the local device can be read by a remote
device using ATT over BR/EDR if the local device supports ATT over BR/EDR.
When the Bluetooth device name is referred to on UI level, the term ‘Bluetooth
Device Name’ should be used.
3.2.2.3 Representation
The Bluetooth device name can be up to 248 bytes (see [Vol. 2], Part C Section
4.3.5). It shall be encoded according to UTF-8 (therefore the name entered on
the UI level may be restricted to as few as 62 characters if codepoints outside the
range U+0000 to U+007F are used).
A device cannot expect that a general remote device is able to handle more
than the first 40 characters of the Bluetooth device name. If a remote device
has limited display capabilities, it may use only the first 20 characters.
3.2.3.1 Definition
The Bluetooth passkey may be used to authenticate two Bluetooth devices with
each other during the creation of a mutual link key via the pairing procedure. The
passkey may be used in the pairing procedures to generate the initial link key.
The PIN may be entered on the UI level but may also be stored in the device; e.g.,
in the case of a device without sufficient MMI for entering and displaying digits.
When the Bluetooth PIN is referred to on UI level, the term ‘Bluetooth Passkey’
should be used.
3.2.3.3 Representation
For Secure Simple Pairing and Security Manager, the Bluetooth passkey is a 6-
digit numerical value. It is represented as integer value in the range
0x00000000 – 0x000F423F (000000 to 999999). The numeric value may be
used as the input to the Authentication Stage 1 for Secure Simple Pairing
Passkey Entry (see [Vol. 2], Part H Section 7.2.3), or as the TK value in the
Security Manager for the process defined in [Vol. 3], Part H Section 2.3.5.
For legacy pairing (see Section B.2 on page 409), the Bluetooth PIN has
different representations on different levels. PINBB is used on baseband level,
and PINUI is used on user interface level. PINBB is the PIN used by [1] for
calculating the initialization key during the Pairing Procedure.
PINUI is the character representation of the PIN that is entered on the UI level.
The transformation from PINUI to PINBB shall be according to UTF-8. PINBB
may be 128 bits (16 bytes).
For compatibility with devices with numeric keypads, fixed PINs shall be
composed of only decimal digits, and variable PINs should be composed of
only decimal digits.
Examples:
Corresponding PINBB[0..length-1]
User-entered code (value as a sequence of octets in hexadecimal notation)
’0196554200906493’ length = 16, value = 0x30 0x31 0x39 0x36 0x35 0x35 0x34 0x32
0x30 0x30 0x39 0x30 0x36 0x34 0x39 0x33
’Børnelitteratur’ length = 16, value = 0x42 0xC3 0xB8 0x72 0x6e 0x65 0x6c 0x69
0x74 0x74 0x65 0x72 0x61 0x74 0x75 0x72
Note 1: This is to prevent interoperability problems since there are decimal digits
at other code points (e.g., the Fullwidth digits at code points U+FF10 to U+FF19).
Note 2: Unicode characters outside the Basic Latin range (U+0000 to U+007F)
encode to multiple bytes; therefore, when characters outside the Basic Latin
range are used the maximum number of characters in the PINUI will be less
than 16. The second example illustrates a case where a 15 character string
encodes to 16 bytes because the character ø is outside the Basic Latin range
and encodes to two bytes (0xC3 0xB8).
3.2.4.1 Definition
When using a mix of information found in the Bluetooth Device Class and the
Bluetooth Service Type, the term ‘Bluetooth Device Type’ should be used.
3.2.4.3 Representation
The Class of device is a bit field and is defined in [7]. The UI-level
representation of the information in the Class of Device is implementation
specific.
3.2.4.4 Usage
Some devices provide more than one service and a given service may be
provided by different device types. Therefore, the device type does not have a
one-to-one relationship with services supported. The major and minor device
class field should not be used to determine whether a device supports any
specific service(s). It may be used as an indication of devices that are most
likely to support desired services before service discovery requests are made,
and it may be used to guide the user when selecting among several devices
that support the same service.
3.2.5.1 Definition
3.2.5.3 Representation
3.3 PAIRING
Pairing over a BR/EDR physical link is defined on LMP level (LMP pairing, see
B.2). Pairing over an LE physical link is defined by the Security Manager
specification ([Vol. 3], Part H Section 2.3). Either the user initiates the bonding
procedure and enters the passkey with the explicit purpose of creating a bond
(and maybe also a secure relationship) between two Bluetooth devices, or the
user is requested to enter the passkey during the establishment procedure
since the devices did not share a common link key beforehand. In the first
case, the user is said to perform “bonding (with entering of passkey)” and in the
second case the user is said to “authenticate using the passkey.”
Non-connectable mode O
Connectable mode M
Bondable modes: 4.3
Non-bondable mode O
Bondable mode C2
Synchronizability modes: 4.4
Non-synchronizable mode M
Synchronizable mode O
C1: If limited discoverable mode is supported, non-discoverable mode is mandatory,
otherwise optional.
C2: If the bonding procedure is supported, support for bondable mode is mandatory,
otherwise optional.
C3: If Discoverable mode is supported, support for Limited Discoverable mode is manda-
tory, otherwise optional.
C4: If Discoverable mode is supported, support for General Discoverable mode is manda-
tory, otherwise optional
After being made discoverable, the Bluetooth device shall be discoverable for
at least TGAP(103).
4.1.1.1 Definition
4.1.2.1 Definition
A Bluetooth device should not be in limited discoverable mode for more than
TGAP(104). The scanning for the limited inquiry access code can be done
either in parallel or in sequence with the scanning of the general inquiry access
code. When in limited discoverable mode, one of the following options shall be
used.
• Parallel scanning
When a Bluetooth device is in limited discoverable mode and when
discovery speed is more important than power consumption or bandwidth, it
is recommended that the Bluetooth device enter the INQUIRY_SCAN state
at least every TGAP(105) and that Interlaced Inquiry scan is used.
4.1.2.2 Conditions
When a device is in limited discoverable mode it shall set bit no 13 in the Major
Service Class part of the Class of Device/Service field [7].
4.1.3.1 Definition
4.1.3.2 Conditions
In all cases the Bluetooth device shall enter the INQUIRY_SCAN state at least
once in TGAP(102) and scan for the GIAC for at least TGAP(101).
4.2.1.1 Definition
4.2.2.1 Definition
When connection times are critical but the other device either does not have an
estimate of the Bluetooth clock or when the estimate is possibly out of date, it is
better to use R1 page scanning with a very short page scan interval,
TGAP(106), and Interlaced scan. This configuration is also useful to achieve
nearly the same connection speeds as R0 page scanning but using less power
and leaving bandwidth available for other connections. Under these
circumstances it is possible for paging to complete within TGAP(106). In this
case the Bluetooth device shall page scan for at least TGAP(101).
When connection times are important but not critical enough to sacrifice
significant bandwidth and/or power consumption it is recommended to use
either TGAP(107) or TGAP(108) for the scanning interval. Using Interlaced scan
will reduce the connection time by half but may use twice the power
consumption. Under these circumstances it is possible for paging to complete
within one or two times the page scanning interval depending on whether
Interlaced Scan is used. In this case the Bluetooth device shall page scan for at
least TGAP(101).
In all cases the Bluetooth device shall enter the PAGE_SCAN state at least
once in TGAP(102) and scan for at least TGAP(101).
The page scan interval, page scan window size, and scan type for the six
scenarios are described in Table 4.2:
4.3.1.1 Definition
When both devices support Secure Simple Pairing and are in non-bondable
mode, the local host shall respond to an IO capability request with the
Authentication_Requirements parameter requesting dedicated bonding or
general bonding with a negative response. An HCI-compliant host stack shall
respond to an HCI_IO_Capabilities_Request event with an
HCI_IO_Capabilities_Request_Negative_Reply command.
4.3.2.1 Definition
When a Bluetooth device is in bondable mode, and Secure Simple Pairing is not
supported by either the local or remote device, the local device shall respond to a
received LMP_in_rand with LMP_accepted (or with LMP_in_rand if it has a fixed
PIN). An HCI-compliant host stack shall respond to an HCI_PIN_Code_Request
event with the HCI_PIN_Code_Request_Reply command.
When both devices support Secure Simple Pairing, the local host shall respond
to a user confirmation request with a positive response. An HCI-compliant host
stack shall respond to an HCI_User_Confirmation_Request event with an
HCI_User_Confirmation_Request_Reply command or an HCI_User_Passkey_
Request event with an HCI_User_Passkey_Request_Reply command.
The host is able to configure the Synchronization Train interval based on trade-
offs between bandwidth, potential interference to other devices, power
consumption, and the desired time for a slave to receive a synchronization train
packet.
4.4.1.1 Definition
4.4.2.1 Definition
1 Authentication 5.1 M
2 Security modes 5.2
Security mode 1 E
O.1: Security Mode 2 may only be used for backwards compatibility when the remote device
does not support Secure Simple Pairing.
Table 5.1: Conformance requirements related to the generic authentication procedure and the
security modes defined in this section
5.1 AUTHENTICATION
5.1.1 Purpose
‘Bluetooth authentication’.
5.1.3 Procedure
Authentication
start
link yes
authenticated
already?
no
no
fail
LMP_authentication
ok
no Initiate
pairing?
yes
fail
LMP_pairing
ok
authentication
authentication ok
failed
5.1.4 Conditions
The local device shall initiate authentication after link establishment. The
remote device may initiate security during or after link establishment.
Paging
Link Setup
LMP_host_conne
ction_req
Security initiated
Yes
by remote device?
No
Figure 5.3
(pre-2.1 only)
LMP_accepted
Link Setup
complete
Responding
2.0 or earlier
Device version? 2.1 or later
A device may support two security modes simultaneously: security mode 2 for
backwards compatibility with remote devices that do not support Secure
Simple Pairing and security mode 4 for devices that support Secure Simple
Pairing.
Legacy security modes apply to those devices with a Controller or a Host that
does not support SSP.
When a remote Bluetooth device is in security mode 1 it will never initiate any
security procedure (i.e., it will never send LMP_au_rand, LMP_in_rand or
LMP_encryption_mode_req).
When a remote Bluetooth device is in security mode 2 it will not initiate any
security procedure before a channel establishment request
(L2CAP_ConnectReq) has been received or a channel establishment
procedure has been initiated by itself. (The behavior of a device in security
mode 2 is further described in [6].) Whether a security procedure is initiated or
not depends on the security requirements of the requested channel or service.
Note: Security mode 1 can be considered (at least from a remote device point
of view) as a special case of security mode 2 where no service has registered
any security requirements.
A Bluetooth device in security mode 3 may reject the host connection request
(respond with LMP_not_accepted to the LMP_host_connection_req) based on
settings in the host (e.g., only communication with pre-paired devices allowed).
LMP_not_accepted LMP_accepted
Authentication /
Pairing
Encrypt
An authenticated link key is a link key where either the numeric comparison,
out-of-band, or passkey entry simple pairing association models were used. An
authenticated link key has protection against man-in-the-middle (MITM)
attacks. To ensure that an authenticated link key is created during the Simple
Pairing procedure, the Authentication_Requirements parameter should be set
to one of the MITM Protection Required options. An unauthenticated link key is
a link key where the just works Secure Simple Pairing association model was
used. An unauthenticated link key does not have protection against MITM
attacks.
When both devices support Secure Simple Pairing, GAP shall require at least
an unauthenticated link key and enabling encryption for all connections except
those allowed to have security level 0 (see Section 5.2.2.8). A profile or
protocol may define services that require more security (e.g., an authenticated
link key) or no security (although unencrypted connections are only allowed
when connecting to a service allowed to have security level 0). To allow an
unauthenticated link key to be created during the Simple Pairing procedure, the
Authentication_Requirements parameter may be set to one of the MITM
Protection Not Required options.
When the device is in Bondable Mode, it shall enable Secure Simple Pairing
mode prior to entering Connectable Mode or establishing a link.
For services transmitting unicast data over the connectionless L2CAP channel,
the transmitting device shall enforce its security requirements prior to sending
data. There is no mechanism for a device receiving data via the L2CAP
connectionless channel to prevent unencrypted data from being received.
Hence, Section 5.2.2.1 addresses unicast connectionless data transmission
together with devices initiating connection-oriented channels while Section
5.2.2.2 covers only devices responding to requests for connection-oriented
channel establishment but does not cover unicast connectionless data
reception.
When the responding device does not support Secure Simple Pairing, it may
disconnect the link while the initiating device is requesting the PIN to be
entered by the user. This may occur due to the lack of an L2CAP channel being
present for longer than an implementation-specific amount of time (e.g., a few
seconds). When this occurs, the initiating device shall allow the user to
complete entering the PIN and shall then re-page the remote device and restart
the pairing procedure (see [Vol. 2, Part C] Section 4.2.2 on page 277) using the
PIN entered.
See Section 5.2.2.8 on page 325 for details on determining whether or not a
link key is sufficient.
If pairing does not succeed, the local device shall not send a channel
establishment request. The local device may re-try pairing up to three (3)
times. If pairing fails three consecutive times, the local device shall disconnect
the ACL link with error code 0x05 - Authentication Failure.
If the link key generated is not at least as good as the expected or required
type, the local device shall fail the establishment and may disconnect the ACL
link with error code 0x05 - Authentication Failure.
application and a sufficient link-key is available then the local device shall
authenticate the remote device and enable encryption before transmitting
unicast data on the L2CAP connectionless channel.
See Section 5.2.2.8 on page 325 for details on determining whether or not a
link key is sufficient.
Channel
Establishment or
Connection
Establishment or
preparation for
connectionless
data TX
Query security
DB
Yes
Link Key Exists
Yes Yes
Remote device
supports SSP?
Yes
Encryption
No Enabled?
No
Security No (level 1)
Required for Pre-
v2.1?
Authentication
Secure Simple
Pairing
No
Success?
Yes
Encryption
No Encryption
key size long
enough?
Yes Cross-transport No
Key generation
and distribution
possible?
Yes
Abort
LE key generation
and distribution
([vol 3] Part H,
Section 2.3.5.7)
L2CAP_Connect
Req or
channel_est_req
or connectionless
data TX
Figure 5.4: Channel establishment using security mode 4 for initiating side
When L2CAP is the channel establishment protocol being used for the
requested service, an L2CAP_ConnectRsp signaling packet shall be sent by
the responding device containing the result code 0x0001 (connection pending)
following receipt of an L2CAP_ConnectReq and prior to initiating security
procedures which can result in prompting the local user for input (e.g., pairing
using a PIN or Secure Simple Pairing using either the Passkey entry or
Numerical Comparison association models). This will stop the L2CAP RTX
timer on the remote device (which may be as short as 1 second) and will
invoke the ERTX timer on the remote device, which is a minimum duration of
60 seconds.
See [Vol. 3, Part A] Section 6.1.7 on page 122, for additional information on
L2CAP RTX and ERTX timers. See also [Vol. 3, Part A] Section 4.3 on page 63
for additional information on the L2CAP_ConnectRsp signalling packet, and
the defined result codes.
If the remote device has indicated support for Secure Simple Pairing, a channel
establishment request is received for a service other than SDP, and encryption
has not yet been enabled, then the local device shall disconnect the ACL link
with error code 0x05 - Authentication Failure.
See Section 5.2.2.6 for details on determining whether or not a link key is
sufficient.
If pairing does not succeed, then the local device shall not send a channel
establishment confirmation. The local device may retry pairing up to three (3)
times. If pairing fails three consecutive times, then the local device shall
disconnect the ACL link with error code 0x05 - Authentication Failure.
See Section 5.2.2.6 for details on determining whether or not a link key is
sufficient.
If authentication does not succeed, then the local device shall not send a
channel establishment confirmation. The host may at this point notify the user
and offer to perform pairing.
L2CAP_
ConnectReq or
connect_est_req
Query security
DB
Yes
Link Key Good
Enough?
No Encryption Yes
Enabled?
No
Secure Simple
Authentication
Pairing
No
Success?
No Yes
Success and
correct link key
type?
Yes
Encryption
No Encryption
key size long
enough?
Cross-transport
Yes No
Key generation
and distribution
possible?
Yes
LE key generation
and distribution
([vol 3] Part H,
Section 2.3.5.7)
L2CAP_Connect L2CAP_Connect
Resp(-) or Resp(+) or
connect_est_fail connect_est_acc
Figure 5.5: Channel establishment using security mode 4 for the responding side
When both devices support Secure Simple Pairing all non-SDP connections
are encrypted regardless of whether security was required or whether the
devices are bonded or not. The initial connection between the two devices will
result in a link key through Secure Simple Pairing. Depending on whether or
not bonding was performed and the security policy of the initiating device, the
link key may or may not be stored. When the link key is stored, subsequent
connections to the same device will use authentication but this may fail if the
remote device has deleted the link key. Table 5.1 defines what shall be done
depending on the type of the link key and whether bonding was performed or
not.
Devices
Link Key Type Bonded? Action to take when Authentication Fails
5.2.2.4 IO Capabilities
Capability Description
No input Device does not have the ability to indicate 'yes' or 'no'
Yes / No Device has at least two buttons that are mapped easily to 'yes' and 'no' or
the device has a mechanism whereby the user can indicate either 'yes' or
'no' (see note below).
Keyboard Device has a numeric keyboard that can input the numbers '0' through '9'
and a confirmation. Device also has two buttons that can be easily mapped
to 'yes' and 'no' or the device has a mechanism whereby the user can indi-
cate either 'yes' or 'no' (see Note below).
Table 5.3: User Input Capabilities
Note: 'yes' could be indicated by pressing a button within a certain time limit
otherwise 'no' would be assumed.
Capability Description
Numeric output Device has the ability to display or communicate a 6 digit dec-
imal number
Table 5.4: User Output Capabilities
The individual input and output capabilities are mapped to a single IO capability
which is later used to determine which authentication algorithm will be used.
When a device has OOB authentication information from the remote device, it
will indicate it in the LMP_IO_Capability_Res PDU. When either device has
OOB information, the OOB association model will be used.
The Host may allow the Link Manager to ignore the IO capabilities and use the
Numeric Comparison protocol with automatic accept by setting the
Authentication_Requirements parameter to one of the MITM Protection Not
Required options.
Device A
Has not received Use the IO capability map- Use OOB association with
remote OOB ping table ra = 0
authentication data
Device B
rb from OOB
Has received Use OOB association with Use OOB association with
remote OOB ra from OOB ra from OOB
authentication data
rb = 0 rb from OOB
Table 5.6: IO and OOB capability mapping
Second, if neither device has received OOB authentication data and if both
devices have set the Authentication_Requirements parameter to one of the
MITM Protection Not Required options, authentication stage 1 shall function as
if both devices set their IO capabilities to DisplayOnly (e.g., Numeric
comparison with automatic confirmation on both devices).
Finally, if neither device has received OOB authentication data and if one or
both devices have set the Authentication_Requirements parameter to one of
the MITM Protection Required options, the IO and OOB capabilities are
mapped to the authentication stage 1 method as defined in the following table.
A Host that has set the Authentication_Requirements parameter to one of the
MITM Protection Required options shall verify that the resulting Link Key is an
Authenticated Combination Key (see [Vol. 2], Part E Section 7.7.24). The table
also lists whether the combination key results in an authenticated or
unauthenticated link key.
Device A (Initiator)
No
device A only.
Mandatory contents:
• Length (2 bytes)
• BD_ADDR (6 bytes)
Optional contents:
• Class of Device (3 bytes)
• Simple Pairing Hash C (16 bytes)
• Simple Pairing Randomizer R (16 bytes)
• Local name (variable length)
• Other information
The length field includes all bytes in the OOB data block including the length
field itself. The BD_ADDR will be a fixed field in the beginning of the OOB data
block. Following the BD_ADDR will be zero or more EIR tag fields containing
optional contents. The EIR tag format will be used for the optional contents.
Length Data
If Simple Pairing fails when one or both devices have OOB Authentication Data
present, both devices shall discard the OOB Authentication Data and the
device that originally initiated authentication shall re-initiate authentication.
Note that although the user may get involved in authentication as defined by
the IO capabilities of the two devices, falling back to the in-band association
model will prevent deadlock conditions when one or both devices has stale
OOB Authentication Data.
There is a MIME type defined for use with the OOB data format. The MIME
type can be found from the following link: http://www.iana.org/assignments/
media-types/application/vnd.bluetooth.ep.oob
An authenticated link key is a link key where either the numeric comparison,
out-of-band, or passkey entry simple pairing association models were used. An
authenticated link key has protection against MITM attacks. To ensure that an
authenticated link key is created during the Simple Pairing procedure, the
Authentication_Requirements parameter should be set to one of the MITM
Protection Required options.
An unauthenticated link key is a link key where the “Just Works” simple pairing
association model was used (see [Vol. 1, Part A] Section 5.2.4 on page 89). An
unauthenticated link key does not have protection against MITM attacks. To
allow an unauthenticated link key to be created during the Simple Pairing
procedure, the Authentication_Requirements parameter may be set to one of
the MITM Protection Not Required options.
When both devices support Secure Simple Pairing and at least one device
does not support Secure Connections, the strength of the link key is 96
effective bits. When both devices support Secure Connections, the strength of
the link key is 128 effective bits. Secure Connections does not change the
protection against MITM attacks.
A combination link key is a link key where the v2.0 pairing mechanism was
used to generate the link-key (see [Vol. 2, Part C] Section 4.2.2.4 on page
279).
When both devices support Secure Simple Pairing, GAP shall require at least
an unauthenticated link key and enable encryption for service traffic sent or
received via connection-oriented L2CAP channels. A profile or protocol may
define services that require more security (for example, an authenticated link
key) or no security in the case of SDP or service traffic sent via the L2CAP
connectionless channel for services that do not require security.
When the device is in Bondable Mode, it shall enable Secure Simple Pairing
mode prior to entering Connectable Mode or establishing a link.
The remote Controller's and remote Host's support for Secure Simple Pairing
shall be determined by the Link Manager Secure Simple Pairing (Host Support)
feature bit.
A previously generated link key is considered “sufficient” if the link key type is
of the type required for the service, or of a higher strength. Authenticated link
keys are considered higher strength than Unauthenticated or Combination
keys. Unauthenticated link keys are considered higher strength than
Combination keys.
The inquiry and discovery procedures described here are applicable only to the
device that initiates them (A). The requirements on the behavior of B is
according to the modes specified in 4 and to [2].
C1: If initiation of bonding is supported, support for at least one inquiry procedure is manda-
tory, otherwise optional.
(Note: support for LMP-pairing is mandatory [2].)
6.1.1 Purpose
The purpose of the general inquiry procedure is to provide the initiator with the
Bluetooth device address, clock, Class of Device, page scan mode, and
extended inquiry response information of general discoverable devices (i.e.,
devices that are in range with regard to the initiator and are set to scan for
inquiry messages with the General Inquiry Access Code). Also devices in
limited discoverable mode will be discovered using general inquiry.
The general inquiry should be used by devices that need to discover devices
that are made discoverable continuously or for no specific condition.
6.1.3 Description
B"
B'
A B
Inquiry (GIAC)
inquiry_res
inquiry_res
list of
Bluetooth
Device
Addresses
Figure 6.1: General inquiry, where B is a device in non-discoverable mode, B´ is a device in limited
discoverable mode and B” is a device in general discoverable mode. (Note that all discoverable
devices are discovered using general inquiry, independent of which discoverable mode they are in.)
6.1.4 Conditions
In order for Device A to receive inquiry responses, the remote devices in range
have to be made discoverable (limited or general).
6.2.1 Purpose
The purpose of the limited inquiry procedure is to provide the initiator with the
Bluetooth device address, clock, Class of Device, page scan mode, and
extended inquiry response information of limited discoverable devices. The
latter devices are devices that are in range with regard to the initiator, and may
be set to scan for inquiry messages with the Limited Inquiry Access Code, in
addition to scanning for inquiry messages with the General Inquiry Access
Code.
The limited inquiry should be used by devices that need to discover devices
that are made discoverable only for a limited period of time, during temporary
conditions or for a specific event. Since it is not guaranteed that the
discoverable device scans for the LIAC, the initiating device may choose any
inquiry procedure (general or limited). Even if the remote device that is to be
discovered is expected to be made limited discoverable (e.g., when a
dedicated bonding is to be performed), the limited inquiry should be done in
sequence with a general inquiry in such a way that both inquiries are
completed within the time the remote device is limited discoverable; i.e., at
least TGAP(103).
6.2.3 Description
B"
B'
A B
Inquiry (LIAC)
inquiry_res
list of
Bluetooth
Device
Addresses
Figure 6.2: Limited inquiry where B is a device in non-discoverable mode, B’ is a device in limited
discoverable mode and B” is a device in general discoverable mode. (Note that only limited
discoverable devices can be discovered using limited inquiry.)
6.2.4 Conditions
When limited inquiry is initiated by a Bluetooth device, the INQUIRY state shall
last TGAP(100) or longer, unless the inquirer collects enough responses and
determines to abort the INQUIRY state earlier. The Bluetooth device shall
perform inquiry using the LIAC.
In order for Device A to receive inquiry responses, the remote devices in range
has to be made limited discoverable.
6.3.1 Purpose
The purpose of name discovery is to provide the initiator with the Bluetooth
Device Name of connectable devices (i.e., devices in range that will respond to
paging).
6.3.3 Description
Name request is the procedure for retrieving the Bluetooth Device Name from
a connectable Bluetooth device. It is not necessary to perform the full link
establishment procedure (see 7.1) in order to just to get the name of another
device.
A B
Paging
LMP_name_req
LMP_name_res
LMP_detach
Name discovery is the procedure for retrieving the Bluetooth Device Name
from connectable Bluetooth devices by performing name request towards
known devices (i.e., Bluetooth devices for which the Bluetooth Device
Addresses are available).
B"
B'
A B
list of
Bluetooth
Device
Addresses
Name request
Name request
Name request
list of
Bluetooth
Device Names
6.3.4 Conditions
In the name request procedure, the initiator will use the Device Access Code of
the remote device as retrieved immediately beforehand – normally through an
inquiry procedure.
6.4.1 Purpose
The purpose of device discovery is to provide the initiator with the Bluetooth
Device Address, clock, Class of Device, used page scan mode, Bluetooth
Device Name, and extended inquiry response information of discoverable
devices.
6.4.3 Description
B"
B'
A B
Inquiry
list of discovered Bluetooth devices
(Bluetooth Device Addresses and
Extended Inquiry Response
information)
Name discovery
list of discovered Bluetooth devices
(Bluetooth Device Names)
6.4.4 Conditions
Conditions for both inquiry (general or limited) and name discovery must be
fulfilled (i.e., devices discovered during device discovery must be both
discoverable and connectable).
6.5 BONDING
6.5.1 Purpose
’Bluetooth Bonding’.
6.5.3 Description
Two forms of bonding are described in the following sections: General Bonding
and Dedicated Bonding.
When the devices that are performing General Bonding both support Secure
Simple Pairing, the Authentication_Requirements parameter should be set to
MITM Protection Not Required – General Bonding unless the security policy of
an available local service requires MITM Protection in which case the
Authentication_Requirements parameter shall be set to MITM Protection
Required – General Bonding. 'No bonding' is used when the device is
performing a Secure Simple Pairing procedure, but does not intend to retain
the link key after the physical link is disconnected.
A B
Initiate bonding
Make bondable
(BD_ADDR)
LMP_host_connection_req
LMP_accepted
LMP_setup_complete
LMP_setup_complete
Pairing
Figure 6.6: General description of general bonding as being the link establishment procedure
executed under specific conditions on both devices, followed by authentication and an optional
higher layer initalization process.
When the devices that are performing Dedicated Bonding both support Secure
Simple Pairing, the Authentication_Requirements parameter should be set to
MITM Protection Not Required – Dedicated Bonding unless the security policy
of an available local service requires MITM Protection in which case the
Authentication Required parameter shall be set to MITM Protection Required –
Dedicated Bonding. 'No bonding' is used when the device is performing a
Secure Simple Pairing procedure, but does not intend to retain the link key
after the physical link is disconnected.
A B
Initiate bonding
Make bondable
(BD_ADDR)
LMP_host_connection_req
LMP_accepted
Pairing
(Dedicated Bonding for 2.0 or earlier devices)
LMP_setup_complete
LMP_setup_complete
LMP_detach
Update list of paired devices Update list of paired devices
Figure 6.7: Dedicated Bonding as performed when the purpose of the procedure is only to create
and exchange a link key between two Bluetooth devices
6.5.4 Conditions
Before bonding can be initiated, the initiating device (A) must know the Device
Access Code of the device to pair with. This is normally done by first
performing device discovery. A Bluetooth Device that can initiate bonding (A)
should use limited inquiry, and a Bluetooth Device that accepts bonding (B)
should support the limited discoverable mode.
The establishment procedures defined here do not include any discovery part.
Before establishment procedures are initiated, the information provided during
device discovery (in the FHS packet or the extended inquiry response packet
of the inquiry response or in the response to a name request or in the
synchronization train packet) must be available in the initiating device.
This information is:
• The Bluetooth Device Address (BD_ADDR) from which the Device Access
Code is generated
• The system clock of the remote device
• The page scan mode used by the remote device for Link establishment.
Additional information provided during device discovery that may be useful for
making the decision to initiate an establishment procedure is:
• The Class of device
• The Device name
• The supported Service Classes.
7.1.1 Purpose
7.1.3 Description
In this sub-section, the paging device (A) is in security mode 3. During link
establishment, the paging device cannot distinguish if the paged device (B) is
in security mode 1, 2 or 4.
A B
Paging
Switch negotiation
Link setup
LMP_host_connection_req
LMP_accepted
Authentication
Encryption negotiation
Figure 7.1: Link establishment procedure when the paging device (A) is in security mode 3 and the
paged device (B) is in security mode 1, 2, or 4
A B
Paging
Link setup
LMP_host_connection_req
Switch negotiation
LMP_accepted
Authentication
Authentication
Encryption negotiation
Figure 7.2: Link establishment procedure when both the paging device (A) and the paged device
(B) are in security mode 3
7.1.4 Conditions
The paging procedure shall be according to [Vol. 2], Part B Section 8.3 and the
paging device should use the Device Access Code and page mode received
through a previous inquiry. When paging is completed, a physical link between
the two Bluetooth devices is established.
If role switching is needed (normally it is the paged device that has an interest
in changing the master/slave roles) it should be done as early as possible after
the physical link is established. If the paging device does not accept the switch,
the paged device has to consider whether to keep the physical link or not.
Both devices may perform link setup (using LMP procedures that require no
interaction with the host on the remote side). Optional LMP features can be
used after having confirmed (using LMP_features_req) that the other device
supports the feature.
When the paging device needs to go beyond the link setup phase, it issues a
request to be connected to the host of the remote device. If the paged device is
in security mode 3, this is the trigger for initiating authentication.
After an authentication has been performed, any of the devices can initiate
encryption.
7.2.1 Purpose
7.2.3 Description
A B
established link
L2CAP_ConnectReq
Authentication
Encryption negotiation
L2CAP_ConnectRsp(+)
Figure 7.3: Channel establishment procedure when the initiator (A) is in security mode 3 and the
acceptor (B) is in security mode 2 or 4
A B
established link
L2CAP_ConnectReq
L2CAP_ConnectRsp(+)
Figure 7.4: Channel establishment procedure when the initiator (A) is in security mode 3 and the
acceptor (B) is in security mode 1 or 3
7.2.4 Conditions
Depending on security mode, security procedures may take place after the
channel establishment has been initiated.
7.3.1 Purpose
7.3.3 Description
A B
established channel
connect_est_req
Authentication
Encryption negotiation
connect_est_acc
Figure 7.5: Connection establishment procedure when the initiator (A) is in security mode 3 and the
acceptor (B) is in security mode 2 or 4
A B
established channel
connect_est_req
connect_est_acc
Figure 7.6: Connection establishment procedure when the initiator (A) is in security mode 3 and the
acceptor (B) is in security mode 1 or 3
7.3.4 Conditions
7.5.1 Purpose
7.5.3 Description
A B
Broadcast
Start Synchronization Train
Broadcast
Broadcast
Sync train
Sync train
Synchronization Train Received
7.5.4 Conditions
After receiving a synchronization train packet, the receiving device can listen to
and receive profile data sent via Connectionless Slave Broadcast by device A.
Note that devices A and B may go through a separate Link Establishment
procedure any time they desire to establish an ACL logical transport between
each other. They may also use Connectionless Slave Broadcast procedures
with an ACL logical transport already established.
The receiving device shall enter the synchronization scan substate using a
scan interval of TGAP(Sync_Scan_Interval) and a scan window of
TGAP(Sync_Scan_Window).
The extended inquiry response data format is shown in Figure 8.1. The data is
240 octets and consists of a significant part and a non-significant part. The
significant part contains a sequence of data structures. Each data structure
shall have a length field of one octet, which contains the Length value, and a
data field of Length octets. The first n octets of the data field contain the
extended inquiry response (EIR) data type. The content of the remaining
Length - n octets in the data field depends on the value of the EIR data type
and is called the EIR data. The non-significant part extends the extended
inquiry response to 240 octets and shall contain all-zero octets.
Length Data
The extended inquiry response data formats and meanings are defined in
[Core Specification Supplement], Part A.The extended inquiry response data
type values are defined in the Assigned Numbers document.
If the length field is set to zero, then the data field has zero octets. This shall
only occur to allow an early termination of the tagged data.
To reduce interference, the host should try to minimize the amount of EIR data
such that the baseband can use a 1-slot or 3-slot EIR packet. This is
advantageous because it reduces interference and maximizes the probability
that the EIR packet will be received. If applications on a host provide more than
240 bytes of extended inquiry response data, it is up to the host to limit it to 240
octets.
The EIR data shall be sent during the inquiry response state. EIR data can
contain device name, Tx power level, service class UUIDs, as well as
manufacturer’s data, as defined in [Core Specification Supplement], Part A. In
selecting the packet type to be used, FEC (DM1 or DM3) should be considered
to maximize the range.
The Host shall include the device name in the EIR data according to the
following rules:
1. If the device does not have a device name (i.e., 0 octet) and
a) If there is no other data to be sent in the EIR packet, the Host shall
send a name tag with zero length and the type field set to indicate
that this is the complete name (i.e., total of 2 octets with length =
1).
b) If there is other important data to be sent in the EIR packet and a
zero octet name tag will not fit, the Host may avoid sending the
name tag.
2. If the device has a device name (greater than 0 octet) and
a) If it is too long be included in the EIR packet (given the choice of
packet type and any other data that is being sent), the Host may
send a shortened version of the name (even 0 octet) and shall
mark the name as 'shortened' to inform the receiver that a remote
name request is required obtain the full name if the name is
needed.
b) If there are no other data to be sent in the EIR packet (given the
choice of packet type selected), the Host shall maximize the length
of the device name to be sent, this may be complete or shortened
name (e.g., if DM1 packet is chosen and device name characters
equates to greater than 15 octets, then host sends first few
characters that equates to 15 octets or less with shortened flag).
Note: It is not necessary to understand each and every EIR data type. If the
Host does not understand a given EIR data type value it should just skip over
Length octets and look for the next EIR data structure.
Each of the above modes and procedures are independent from each other but
are closely related since a combination of the modes and procedures are
necessary for most devices to communicate with each other. Both the modes
and procedures may be entered or executed respectively as a result of direct
user action or autonomously by a device.
The Host shall configure the Controller with its local Link Layer feature
information as defined in [Vol. 6], Part B Section 4.6 before performing any of
the above modes and procedures.
9.1.1.1 Definition
9.1.1.2 Conditions
The advertising data shall be formatted using the Advertising Data (AD) type
format as defined in [[Core Specification Supplement], Part A, Section 1.3. A
device in the broadcast mode shall not set the ‘LE General Discoverable Mode’
flag or the ‘LE Limited Discoverable Mode’ flag in the Flags AD Type as defined
in [Core Specification Supplement], Part A, Section 1.3.
Note: All data sent by a device in the broadcast mode is considered unreliable
since there is no acknowledgement from any device that may have received
the data.
9.1.2.1 Definition
9.1.2.2 Conditions
Note: In use cases where a device in the broadcast mode sends dynamic data,
the receiving device should disable duplicate filtering capability in the Controller
so that the Host receives all advertising packets received by the Controller.
9.2.1 Requirements
9.2.2.1 Description
9.2.2.2 Conditions
A device in the non-discoverable mode that sends advertising events shall not
set the ‘LE General Discoverable Mode’ flag or ‘LE Limited Discoverable Mode’
flag in the Flags AD type (see [Core Specification Supplement], Part A, Section
1.3). A Peripheral device in the non-connectable mode may send non-
connectable undirected advertising events or scannable undirected advertising
events or may not send advertising packets.
9.2.3.1 Description
9.2.3.2 Conditions
While a device is in the Peripheral role the device may support the limited
discoverable mode. While a device is in the Broadcaster, Observer or Central
role the device shall not support the limited discoverable mode.
While in the limited discoverable mode the device shall send advertising event
types with the advertising data including the Flags AD type as defined in [Core
Specification Supplement], Part A, Section 1.3 with all the following flags set as
described:
• The LE Limited Discoverable Mode flag set to one.
• The LE General Discoverable Mode flag set to zero.
• For a device of the LE-only device type with all the following flags set as
described:
a) The ‘BR/EDR Not Supported’ flag to set one.
b) The ‘Simultaneous LE and BR/EDR to Same Device Capable
(Controller)’ flag set to zero.
c) The ‘Simultaneous LE and BR/EDR to Same Device Capable
(Host)’ flag set to zero.
The advertising data should also include the following AD types to enable a
faster connectivity experience:
• TX Power Level AD type defined in [Core Specification Supplement], Part A,
Section 1.5.
• Local Name AD type defined in [Core Specification Supplement], Part A,
Section 1.2.
• Service UUIDs AD type defined in [Core Specification Supplement], Part A,
Section 1.1.
• Slave Connection Interval Range AD type as defined in [Core Specification
Supplement], Part A, Section 1.9.
A device in the limited discoverable mode shall not set both the LE Limited
Discoverable Flag and the LE General Discoverable Flag to one.
Note: Data that change frequently should be placed in the advertising data and
static data should be placed in the scan response data.
9.2.4.1 Description
9.2.4.2 Conditions
While a device is in the Peripheral role the device may support the general
discoverable mode. While a device is in the Broadcaster, Observer or Central
role the device shall not support the general discoverable mode.
While in general discoverable mode the device shall send advertising events
with the advertising data including the Flags AD data type as defined in [Core
Specification Supplement], Part A, Section 1.3 with all the following flags set as
described:
The advertising data should also include the following AD types to enable a
faster connectivity experience:
• TX Power Level AD type as defined in [Core Specification Supplement], Part
A, Section 1.5.
• Local Name AD type as defined in [Core Specification Supplement], Part A,
Section 1.2.
• Service UUIDs AD type as defined in [Core Specification Supplement], Part
A, Section 1.1.
• Slave Connection Interval Range AD type as defined in [Core Specification
Supplement], Part A, Section 1.9.
A device in the general discoverable mode shall not set both the LE Limited
Discoverable Flag and the LE General Discoverable Flag to one.
Note: Data that change frequently should be placed in the advertising data and
static data should be placed in the scan response data.
9.2.5.1 Description
Peripheral
Central Peripheral’
stop scanning
list of limited
discoverable
mode
devices only
Figure 9.1: A Central performing limited discovery procedure discovering Peripherals in the limited
discoverable mode
9.2.5.2 Conditions
While a device is in the Central role the device may support the limited
discovery procedure. While a device is in the Broadcaster, Observer or
Peripheral role the device shall not support the limited discovery procedure.
When a Host performs the limited discovery procedure, the Host configures the
Controller as follows:
1. The Host shall set the scanner filter policy to ‘process all advertising pack-
ets’.
2. The Host should set the scan interval and scan window as defined in
Section 9.3.11.
3. The Host should configure the Controller to use active scanning.
The Host shall begin scanning for advertising packets and should continue for
a minimum of TGAP(lim_disc_scan_min), unless the host ends the limited
discovery procedure.
The Host shall check for the Flags AD type in the advertising data. If the Flags
AD type is present and the LE Limited Discoverable Flag is set to one then the
Host shall consider the device as a discovered device, otherwise the
advertising data shall be ignored. The Flag AD type is defined in [Core
Specification Supplement], Part A, Section 1.3. The advertising data of the
discovered device may contain data with other AD types, e.g. Service UUIDs
AD type, TX Power Level AD type, Local Name AD type, Slave Connection
Interval Range AD type. The Host may use the data in performing any of the
connection establishment procedures.
The host shall ignore the 'Simultaneous LE and BR/EDR to Same Device
Capable (Controller)' and 'Simultaneous LE and BR/EDR to Same Device
Capable (Host)' bits in the Flags AD type.
9.2.6.1 Description
Peripheral
Central Peripheral’
stop scanning
list of all
limited and
general
discoverable
mode
devices
Figure 9.2: A Central performing general discovery procedure discovering Peripherals in the limited
discoverable mode and general discoverable mode
9.2.6.2 Conditions
While a device is in the Central role the device shall support the general
discovery procedure. While a device is in the Broadcaster, Observer or
Peripheral role the device shall not support the general discovery procedure.
When a Host performs the general discovery procedure, the Host configures
the Controller as follows:
1. The Host shall set the scanner filter policy to ‘process all advertising packets’.
2. The Host should set the scan interval and scan window as defined in
Section 9.3.11.
3. The Host should configure the Controller to use active scanning.
The Host shall begin scanning for advertising packets and should continue for
a minimum of TGAP(gen_disc_scan_min). The procedure may be terminated
early by the Host.
The Host shall check for the Flags AD type in the advertising data. If the Flags
AD type (see [Core Specification Supplement], Part A, Section 1.3) is present
and either the LE General Discoverable Mode flag is set to one or the LE Limited
Discoverable Mode flag is set to one then the Host shall consider the device as a
discovered device, otherwise the advertising data shall be ignored. The
advertising data of the discovered device may contain data with other AD types,
e.g. Service UUIDs AD type, TX Power Level AD type, Local Name AD type,
Slave Connection Interval Range AD type. The Host may use the data in
performing any of the connection establishment procedures as defined in
Section 9.3.
The host shall ignore the 'Simultaneous LE and BR/EDR to Same Device
Capable (Controller)' and 'Simultaneous LE and BR/EDR to Same Device
Capable (Host)' bits in the Flags AD type.
9.2.7.1 Description
The name discovery procedure is used to obtain the Bluetooth Device Name of
a remote connectable device.
9.2.7.2 Conditions
If the complete device name is not acquired while performing either the limited
discovery procedure or the general discovery procedure, then the name
discovery procedure may be performed.
1. The Host shall establish a connection using one of the connection establish-
ment procedures as defined in Section 9.3.
2. The Host shall read the device name characteristic using the GATT
procedure Read Using Characteristic UUID [Vol. 3], Part G Section 4.8.2
3. The connection may be terminated after the GATT procedure has completed.
9.3.1 Requirements
9.3.2.1 Description
9.3.2.2 Conditions
While a device is in the Peripheral role the device shall support the non-
connectable mode. A device in the Broadcaster or Observer role cannot
establish a connection, therefore the device is considered to support the non-
connectable mode.
9.3.3.1 Description
9.3.3.2 Conditions
While a device is in the Peripheral role the device may support the directed
connectable mode. This mode shall only be used if the device has a known
peer device address. While a device is in the Broadcaster, Observer, or the
Central role the device shall not support the direct connectable mode.
9.3.4.1 Description
9.3.4.2 Conditions
While a device is in the Peripheral role the device shall support the undirected
connectable mode. While a device is in the Broadcaster, Observer, or the
Central role the device shall not support the undirected connectable mode.
The Host should configure the Controller as defined in Section 9.3.11. The
Host shall configure the Controller to send undirected connectable advertising
events.
9.3.5.1 Description
The auto connection establishment procedure allows the Host to configure the
Controller to autonomously establish a connection with one or more devices in
the directed connectable mode or the undirected connectable mode. White
Lists in the Controller are used to store device addresses. This procedure uses
the initiator White List in the Controller. The Controller autonomously
establishes a connection with a device with the device address that matches
the address stored in the White List.
9.3.5.2 Conditions
While a device is in the Central role the device may support the auto
connection establishment procedure. While a device is in the Broadcaster,
Observer, or Peripheral role the device shall not support the auto connection
establishment procedure.
Auto connection
establishment
procedure
End of procedure
Figure 9.3: Flow chart for a device performing the auto connection establishment procedure
When a Host performs the auto connection establishment procedure, the Host
configures the Controller as follows:
1. The Host shall write the list of device addresses that are to be auto con-
nected to into the White List.
2. The Host shall set the initiator filter policy to ‘process connectable
advertising packets from all devices in the White List’.
3. The Host should set the scan interval and scan window as defined in
Section 9.3.11.
4. The Host should set connection parameters as defined in Section 9.3.12.
9.3.6.1 Description
9.3.6.2 Conditions
While a device is in the Central role the device may support the general
connection establishment procedure. While a device is in the Broadcaster,
Observer, or Peripheral role the device shall not support the general
connection establishment procedure.
General connection
establishment procedure
Connect to
peripheral
device?
Yes
Stop scanning
Connection successful
End of procedure
Figure 9.4: Flow chart for a device performing the general connection establishment procedure
1. The Host shall set the scanner filter policy to one of the ‘accept all’ options as
defined in [Vol 2] Part E, Section 7.8.10.
2. The Host should set the scan interval as defined in Section 9.3.11.
3. The Host should set the scan window tas defined in Section 9.3.11.
4. The Host shall start scanning.
5. The Host should set connection parameters as defined in Section 9.3.12.
When the Host discovers a device to which the Host may attempt to connect,
the Host shall stop the scanning, and initiate a connection using the direct
connection establishment procedure.
9.3.7.1 Description
9.3.7.2 Conditions
While a device is in the Central role the device may support the selective
connection establishment procedure. While a device is in the Broadcaster,
Observer, or the Peripheral role the device shall not support the selective
connection establishment procedure. Figure 9.5 shows the flow chart for a
device performing the selective connection establishment procedure.
When the Host discovers one of the peer devices it is connecting to, the Host shall
stop scanning, and initiate a connection using the direct connection establishment
procedure with the connection configuration parameters for that peer device.
Selective connection
establishment procedure
Start scanning
Connect to
peripheral no
device?
yes
Stop scanning
End of procedure
Figure 9.5: Flow chart for a device performing the selective connection establishment procedure
9.3.8.1 Description
9.3.8.2 Conditions
While a device is in the Central role the device shall support the direct
connection establishment procedure. While a device is in the Broadcaster,
Observer, or the Peripheral role the device shall not support the direct
connection establishment procedure.
Directed connection
establishment procedure
End of procedure
Figure 9.6: Flow chart for a device performing the directed connection establishment procedure
When a Host performs the direct connection establishment procedure, the Host
configures the Controller as follows:
1. The Host shall set the initiator filter policy to ‘ignore the White List and pro-
cess connectable advertising packets from a specific single device specified
by the Host’.
2. The Host shall set the peer address to the device address of the specific
single device.
3. The Host should set connection parameters as defined in Section 9.3.12.
9.3.9.1 Description
9.3.9.2 Conditions
While a device is in the Central role the device shall support the connection
parameter update procedure. While a device is in the Peripheral role the device
may support the connection parameter update procedure. While a device is in
the Broadcaster or the Observer role the device shall not support the
connection parameter update procedure.
A Central initiating the connection parameter update procedure shall use the
Link Layer Connection Update procedure defined in [Vol. 6], Part B Section
5.1.1 with the required connection parameters if either the Central or the
Peripheral does not support the Connection Parameters Request Link Layer
Control procedure.
If both the Central and Peripheral support the Connection Parameters Request
Link Layer control procedure, then the Central or Peripheral initiating the
connection parameter update procedure shall use the Connection Parameters
Request Link Layer Control procedure defined in [Vol. 6], Part B Section 5.1.7
with the required connection parameters.
If either the Central or the Peripheral does not support the Connection
Parameters Request Link Layer Control procedure, then the Peripheral
initiating the connection parameter update procedure shall use the L2CAP
Connection Parameter Update Request command defined in [Vol. 1], Part A
Section 4.2 with the required connection parameters. The Peripheral shall not
send an L2CAP Connection Parameter Update Request command within
TGAP(conn_param_timeout) of an L2CAP Connection Parameter Update
Response being received. When the Central accepts the Peripheral initiated
Connection Parameter Update, the Central should initiate the Link Layer
Connection Update procedure defined in [Vol. 6], Part B Section 5.1.1 with the
required connection parameters within TGAP(conn_param_timeout).
9.3.10.1 Description
9.3.10.2 Conditions
The Host initiating the terminate connection procedure shall use the Link Layer
Termination Procedure defined in [Vol. 6], Part B Section 5.1.6.
9.3.11.1 Description
9.3.11.2 Conditions
A Peripheral device entering any of the following GAP Modes should use the
recommended advertising interval TGAP(adv_fast_interval1) for
TGAP(adv_fast_period):
• Undirected Connectable Mode
• Limited Discoverable Mode and sending connectable undirected advertising
events
• General Discoverable Mode and sending connectable undirected
advertising events
• Directed Connectable Mode and sending low duty cycle directed advertising
events
A Peripheral device when entering any of the following GAP Modes and
sending either non-connectable advertising events or scannable undirected
advertising events should use the recommended advertising interval
TGAP(adv_fast_interval2) for TGAP(adv_fast_period):
• Non-Discoverable Mode
• Non-Connectable Mode
• Limited Discoverable Mode
• General Discoverable Mode
A Peripheral device that is background advertising in any GAP Mode other than
GAP Directed Connectable Mode with high duty cycle directed advertising events
should use the recommended advertising interval TGAP(adv_slow_interval).
9.3.12.1 Description
The connection interval timing parameters are used within a connection. Initial
connection interval is used to ensure procedures such as bonding, encryption
setup and service discovery are completed quickly. The connection interval
should be changed to the Peripheral Preferred Connection Parameters after
initiating procedures are complete.
9.3.12.2 Conditions
The Central device should either read the Peripheral Preferred Connection
Parameters characteristic (see Section 12.3) or retrieve the parameters from
advertising data (see Section 12.3).
After the Central device has no further pending actions to perform and the
Peripheral device has not initiated any other actions within
TGAP(conn_pause_central), then the Central device should invoke the
Connection Parameter Update procedure (see Section 9.3.9) and change the
connection intervals as defined in the Peripheral Preferred Connection
Parameters.
If the Central device does not have the Peripheral Preferred Connection
Parameters, then the Central device may choose the connection parameters to
be used.
After the Peripheral device has no further pending actions to perform and the
Central device has not initiated any other actions within
TGAP(conn_pause_central), then the Peripheral device may perform a
Connection Parameter Update procedure (see Section 9.3.9). The Peripheral
device should not perform a Connection Parameter Update procedure within
TGAP(conn_pause_peripheral) after establishing a connection.
At any time a key refresh or encryption setup procedure is required and the
current connection interval is greater than TGAP(initial_conn_interval), the key
refresh or encryption setup procedure should be preceded with a Connection
Parameter Update procedure (see Section 9.3.9). The connection interval
should be set to TGAP(initial_conn_interval) and slave latency should be set to
zero. This fast connection interval should be maintained until the key refresh or
encryption setup procedure is complete. It should then switch to the Peripheral
Preferred Connection Parameters.
There are two modes for bonding, non-bondable mode and bondable mode.
Bonding may only occur between two devices in bondable mode. The
requirements for a device to support the bonding modes and procedure are
defined in Table 9.4.
9.4.1 Requirements
9.4.2.1 Description
A device in the non-bondable mode does not allow a bond to be created with a
peer device.
9.4.2.2 Conditions
While a device is in the Peripheral or the Central role the device shall support
the non-bondable mode. If a device does not support pairing as defined in the
Security Manager section then it is considered to be in non-bondable mode.
If Security Manager pairing is supported, the Host shall set the Bonding_Flags
to ‘No Bonding’ as defined in [Vol. 3], Part H Section 3.5.1 and bonding
information shall not be exchanged or stored.
9.4.3.1 Description
A device in the bondable mode allows a bond to be created with a peer device
in the bondable mode.
9.4.3.2 Conditions
The Host shall set the Bonding_Flags to ‘Bonding’ during the pairing
procedure.
9.4.4.1 Description
Central Peripheral
established link
9.4.4.2 Conditions
While a device is in the Peripheral or the Central role the device may support
the Bonding procedure. While a device is in the Broadcaster or the Observer
role the device shall not support the bonding procedure.
The Host of the Central initiates the pairing process as defined in [Vol. 3], Part
C Section 2.1 with the Bonding_Flags set to Bonding as defined in [Vol. 3], Part
H Section 3.5.1. If the peer device is in the bondable mode, the devices shall
exchange and store the bonding information in the security database.
This section defines the modes and procedures that relate to the security of a
connection. The following modes and procedures are defined:
• LE security mode 1
• LE security mode 2
• Authentication procedure
• Authorization procedure
• Connection data signing procedure
• Authenticate signed data procedure
10.1 REQUIREMENTS
There are two LE security modes, LE security mode 1 and LE security mode 2.
LE security mode 2 shall only be used for connection based data signing.
Data signing as defined in Section 10.4 shall not be used when a connection is
operating in LE security mode 1 level 2, LE security mode 1 level 3, or LE
security mode 1 level 4.
If there are requirements for both LE security mode 1 and LE security mode 2
level 2 for a given physical link then LE security mode 1 level 3 shall be used.
If there are requirements for both LE security mode 1 level 3 and LE security
mode 2 for a given physical link then LE security mode 1 level 3 shall be used.
If there are requirements for both LE security mode 1 level 2 and LE security
mode 2 level 1 for a given physical link then LE security mode 1 level 2 shall be
used.
If there are requirements for both LE security mode 1 level 4 and any other
security mode or level for a given physical link then LE security mode 1 level 4
shall be used.
The device shall only accept new outgoing and incoming service level
connections for services that require Security Mode 1, Level 4 when the remote
device supports LE Secure Connections and authenticated pairing is used.
In this section the local device is the device responding to a service request
made by a remote device. In the L2CAP protocol the local device responds
with a connection response to a remote device making a connection request. In
GATT, the local device is the GATT server and the remote device is the GATT
client.
When a local device receives a service request from a remote device, it shall
respond with an error code if the service request is denied. The error code is
dependent on whether the current connection is encrypted or not and on the
type of pairing that was performed to create the LTK to be used.
When a local device receives a service request from a remote device it shall
behave according to the following rules:
• The local device’s security database specifies the security settings required
to accept a service request. If no encryption and no data signing are
required, the service request shall be accepted. If encryption is required the
local device must send an error code as defined in Table 10.2. If no
encryption is required, but data signing is required, then the local device
behavior is as defined in Section 10.4.
• If an LTK is not available, the service request shall be rejected with the error
code “Insufficient Authentication”.
Note: When the link is not encrypted, the error code “Insufficient
Authentication” does not indicate that MITM protection is required.
• If an LTK is available and encryption is required (LE security mode 1) but
encryption is not enabled, the service request shall be rejected with the error
code “Insufficient Encryption”. If the encryption is enabled with insufficient
key size then the service request shall be rejected with the error code
“Insufficient Encryption Key Size.”
• If an authenticated pairing is required but only an unauthenticated pairing
has occurred and the link is currently encrypted, the service request shall be
rejected with the error code “Insufficient Authentication.”
Note: When unauthenticated pairing has occurred and the link is currently
encrypted, the error code “Insufficient Authentication” indicates that MITM
protection is required.
• If LE Secure Connections authenticated pairing is required but LE legacy
pairing has occurred and the link is currently encrypted, the service request
shall be rejected with the error code “Insufficient Authentication”.
The local device will respond with the minimum security level required for
access to its services. If the local device has no security requirement it should
default to the minimum security level that the local device is capable of as
defined in pairing phase 1, (see [Vol. 3], Part H Section 2.1).
The local device responds to a service request from a remote device are
summarized in Table 10.2.
1. Note that if an OOB mechanism is used, the level of MITM protection is dependent upon the
properties of the OOB communications channel. See [Vol. 3], Part H Section 2.3.5.1 for
more information
(Not possible
Encryption, to be Error Resp.: Request Request
MITM encrypted Insufficient succeeds succeeds
Protection without LTK) Authentication
Encryption, Error Resp.: Error Resp.: Request
MITM Protec- Insufficient Insufficient succeeds
tion, Secure Authentication Authentication
Connections
Receive a Service
Request
Query security DB
Yes
No
Current security
No
Good Enough?
Pairing
Yes
Yes
Remote
No supports
encryption?
Yes
Encryption
Cross-transport
Key derivation No
possible?
Yes
Perform Service
Abort BR/EDR Request on
Link Key generation Local Device
Figure 10.1: Flow chart for a local device handling a service request from a remote device
After encryption is enabled, the correct security level has been achieved, and
both devices support cross-transport key generation, the both devices may
perform BR/EDR link key derivation.
In this section the local device is the device initiating a service request to a
remote device. In the L2CAP protocol the local device sends the connection
request and the remote device sends the connection response. In GATT, the
local device is the GATT client and the remote device is the GATT server.
after user interaction to confirm the remote device, re-bond, perform service
discovery and re-configure the remote device. If the local device had
previously determined that the remote device did not have the «Service
Changed» characteristic then service discovery may be skipped.
• If an authenticated pairing is required but only an unauthenticated pairing
has occurred and the link is currently encrypted, the pairing procedure
should be executed with the required authentication settings. If the pairing
procedure fails, or an authenticated pairing cannot be performed with the IO
capabilities of the local device and remote device, then the service request
shall be aborted.
When a bond has been created between two devices, any
reconnection should result in the local device enabling or requesting
encryption with the remote device before initiating any service
request.
If a local device does not enable encryption before initiating a service
request and relies on the error codes to determine the security
requirements, the local device shall not request pairing with MITM
protection in response to receiving an “Insufficient Authentication”
error code from the remote device while the link is unencrypted. The
local device shall only set the MITM protection required flag if the
local device itself requires MITM protection.
• If encryption is not enabled at the time of the service request, the error code
“Insufficient Authentication” is received, and the local device currently has
an LTK, then the encryption procedure should be started (see Section 10.6).
If this fails (likely indicating that the remote device has lost the bond and no
longer has the LTK) or the local device does not have the correct LTK, then
the pairing procedure should be started. IO capabilities are exchanged in
pairing phase 1, (see [Vol. 3], Part H Section 2.1) and the security level shall
be determined by the device’s IO capabilities and MITM requirements.
• If encryption is not enabled at the time of the service request, the error code
“Insufficient Encryption” is received, and the local device currently has an
LTK, then the encryption procedure shall be started (see Section 10.6). If
starting encryption fails (likely indicating that the remote device has lost the
bond and no longer has the LTK) or the local device does not have the
correct LTK, then the pairing procedure should be started.
• If LE Secure Connections authenticated pairing is required but the remote
device does not support LE Secure Connections, then the service request
shall be aborted.
Initiate a service
request to a
remote device
Local device
queries security
DB
Access
No to service
allowed?
Yes
Yes
Bond Exists
Yes
Locally?
No
No Current security
Good Enough?
Pairing
Yes
Success and
No correct Security Encryption
level?
Yes
Cross-transport
Key derivation No
possible?
Yes
Figure 10.2: Flow chart for a local device issuing a service request to a remote device
After encryption is enabled, the correct security level has been achieved, and
both devices support cross-transport key generation, the both devices may
perform BR/EDR link key derivation.
A device shall generate a new Connection Signature Resolving Key CSRK for
each peer device to which it sends signed data in a connection. CSRK is
defined in [Vol. 3], Part H Section 2.4.2.2.
The data shall be formatted using the Signing Algorithm as defined in [Vol. 3],
Part H Section 2.4.5 where m is the Data PDU to be signed, k is the CSRK and
the SignCounter is the counter value. A Signature is composed of the counter
value and the Message Authentication Code (MAC) generated by the Signing
Algorithm. The counter value shall be incremented by one for each new Data
PDU sent.
LSB MSB
Variable 12 octets
SignCounter MAC
LSB MSB
4 octets 8 octets
If encryption is not required and CSRK is available (LE security mode 2) then
the data signing procedure shall be used when making a service request
involving a write operation.
Note that since the server does not respond to a Signed Write Command, the
higher layer application may not be notified of the ignored request. Hence, it is
recommended that the server disconnect the link in case the client is a
malicious device attempting to mount a security attack.
If the server has no stored CSRK upon receiving a signed write command, it
shall ignore the received Data PDU. Note that since the server does not
respond to a Signed Write Command, the higher layer application may not be
notified of the ignored request. Although the disconnection may be an
adequate indication to the user that the devices need to be paired, it is
recommended that implementers consider providing a more informative
indication to the user that the devices need to be paired to establish a CSRK.
If the server receives a request from a client for a write operation that requires
a response (i.e. other than a Signed Write Command or Write Command), and
encryption is not enabled, then the server shall respond with the error code
“Insufficient Authentication”.
If the link is encrypted and the server receives a request from a client for which
the server requires data signing but does not require encryption, then the
server shall complete the request if it is otherwise valid as the encrypted state
of the link is considered to satisfy the signing requirement.
As required by Section 10.2.2, for a given link, signed data is not used at the
same time as encryption. Therefore, if the client wishes to test that the server is
still bonded, and thus enables encryption, further data transfer must occur
without signing, assuming the server does not disconnect the link as
recommended above.
If a higher layer determines the bond no longer exists on the server, the client
must, after user interaction to confirm the remote device, re-bond, perform
service discovery and re-configure the server. If the client had previously
determined that the server did not have the «Service Changed» characteristic
then service discovery may be skipped.
The receiving device shall protect against a replay attack by comparing the
received SignCounter with previously received SignCounter from the same
peer device. If the SignCounter was previously used then the receiving device
shall ignore the Data PDU.
If the encryption procedure fails and either the Central or Peripheral used a
Resolvable Private Address for the connection establishment, then the current
Resolvable Private Address(es) shall be immediately discarded and new
Resolvable Private Address(es) shall be generated.
If a device, i.e. host and controller, claims support for the privacy feature, the
requirements in this section shall be met.
The Host may maintain a resolving list by adding and removing device
identities. A device identity consists of the peer’s identity address, and a local
and peer’s IRK pair. The local or peer’s IRK shall be an all-zero key, if not
applicable for the particular device identity.
If a peer device provides an all-zero identity address during pairing, the Host
shall choose a unique identifier to substitute the peer’s device identity address.
The Host shall ensure that all identities provided to the controller are unique.
The device should not send the device name or unique data in the advertising
data that can be used to recognize the device.
The Host shall generate a resolvable private address using the ‘resolvable
private address generation procedure’ as defined in Section 10.8.2.2 or non-
resolvable private address procedure as defined in Section 10.8.2.1. The Host
shall set a timer equal to TGAP(private_addr_int). The Host shall generate a
new resolvable private address or non-resolvable private address when the
timer TGAP(private_addr_int) expires
The Central shall use a resolvable private address as the initiator's device
address.
The Host shall generate a resolvable private address using the ‘resolvable
private address generation procedure’ as defined in Section 10.8.2.2 or non-
resolvable private address procedure as defined in Section 10.8.2.1. The Host
shall set a timer equal to TGAP(private_addr_int). The Host shall generate a
new resolvable private address or non-resolvable private address when the
timer TGAP(private_addr_int) expires.
The device should not send the device name or unique data in the advertising
data which can be used to recognize the device.
The term random device address refers to both static and private address
types.
The Host can generate a static address using the procedure described in
[Vol 6] Part B, Section 1.3.2.1.
The Host can generate a non resolvable private address using the procedure
described in [Vol 6] Part B, Section 1.3.2.2.
The Host can generate a resolvable private address where the Host has its IRK
using the procedure described in [Vol 6] Part B, Section 1.3.2.2.
The Host can resolve a resolvable private address where the Host has the peer
device’s IRK or the local device's IRK, using the procedure described in [Vol 6]
Part B, Section 1.3.2.3.
The format of Advertising data and Scan Response data is shown in Figure
11.1. The data consists of a significant part and a non-significant part. The
significant part contains a sequence of AD structures. Each AD structure shall
have a Length field of one octet, which contains the Length value, and a Data
field of Length octets. The first octet of the Data field contains the AD type field.
The content of the remaining Length - 1 octet in the Data field depends on the
value of the AD type field and is called the AD data. The non-significant part
extends the Advertising and Scan Response data to 31 octets and shall
contain all-zero octets.
Length Data
AD Type AD Data
If the Length field is set to zero, then the Data field has zero octets. This shall
only occur to allow an early termination of the Advertising or Scan Response
data.
Only the significant part of the Advertising or Scan Response data needs to be
sent over the air.
The Advertising and Scan Response data is sent in advertising events. The
Advertising Data is placed in the AdvData field of ADV_IND,
ADV_NONCONN_IND, and ADV_SCAN_IND packets. The Scan Response
data is sent in the ScanRspData field of SCAN_RSP packets.
The AD type data formats and meanings are defined in [Core Specification
Supplement], Part A. The AD type identifier values are defined in the Assigned
Numbers document.
The GATT server shall contain the GAP service for devices supporting the
Central and Peripheral GAP roles and BR/EDR GAP role for BR/EDR/LE type
devices. The GATT Server may contain the GAP service for BR/EDR type
devices supporting the BR/EDR GAP role. A device shall have only one
instance of the GAP service in the GATT server. The GAP service is a GATT
based service with the service UUID as «GAP Service» defined in the
Bluetooth Assigned Numbers document.
BR/EDR LE LE LE LE
GAP Role Broadcaster Observer Peripheral Central
GAP Service C1 E E M M
The characteristics requirements for the GAP service in each of the GAP roles
are shown in Table 12.2.
BR/EDR LE LE LE LE
Characteristics Ref. GAP Role Broadcaster Observer Peripheral Central
Appearance 12.2 C1 E E M M
Peripheral
Preferred Connec- 12.3 O E E O E
tion Parameters
Central Address
12.4 O E E C2 C2
Resolution
A device that supports multiple GAP roles contains all the characteristics to
meet the requirements for the supported roles. The device must continue to
expose the characteristics when the device is operating in the role in which the
characteristics are not valid.
Attribute Attribute
Handle Attribute Type Value Attribute Permissions
Attribute Attribute
Handle Attribute Type Value Attribute Permissions
Size
Name (Octet) Description
Size
Name (Octet) Description
Slave latency 2 Defines the slave latency for the connection in number of
connection events.
Slave latency range: 0x0000 to 0x01F3
Values outside the range are reserved.
Connection 2 Defines the connection supervisor timeout multiplier as a
Supervision multiple of 10ms.
timeout multiplier Range: 0xFFFF indicates no specific value requested.
Range: 0x000A to 0x0C80
Time = N * 10 msec
Time Range: 100 msec to 32 seconds
Values outside the range are reserved. (excluding 0xFFFF)
Table 12.6: Format of the preferred connection parameters structured data
A device shall have only one instance of the Central Address Resolution
characteristic. If the Central Address Resolution characteristic is not present,
then it shall be assumed that Central Address Resolution is not supported.
13 BR/EDR/LE OPERATION
This section describes the requirements for devices that support the BR/EDR/
LE device type. The device may support any LE GAP roles allowed by the
Controller over the LE physical channel.
A BR/EDR/LE device type that supports the Broadcaster role shall meet the
requirements for the Broadcaster role as defined in Section 9.
A BR/EDR/LE device type that supports the Observer role shall meet the
requirements for the Observer role as defined in Section 9.
A BR/EDR/LE device type that supports the Peripheral role shall meet the
requirements for the Peripheral role as defined in Section 9.
A BR/EDR/LE device type that supports the Central role shall meet the
requirements for the Central role as defined in Section 9.
A device shall expose the capabilities of both physical transports for both
Limited and General Discoverable Mode using the advertisement Flag AD
Type as follows:
a) The ‘BR/EDR Not Supported’ bit in the Flags AD type shall be set
to 0 as defined in [Core Specification Supplement], Part A, Section
1.3.
b) The 'Simultaneous LE and BR/EDR to Same Device Capable
(Controller)' and ‘Simultaneous LE and BR/EDR to Same Device
Capable (Host)’ bits in the Flags AD type shall be set to 0.
The ‘LE Supported (Controller)’ and ‘LE Supported (Host)’ bits in the LMP
features shall be set as defined in [Vol. 2], Part C Section 3.2.
If the remote device supports the BR/EDR physical transport, the bonding
procedures for the BR/EDR physical transport as defined in Section 6.5 shall
be used.
The requirements for a device supporting BR/EDR/LE device type are shown
in Table 14.1.
Security aspects 14 M M
Table 14.1: Requirements for the security aspects of a BR/EDR/LE device type
If the remote device supports the BR/EDR physical transport the security
procedures for the BR/EDR physical transport as defined in Section 5 shall be
used.
If the remote device supports the LE physical transport the security procedures
for the LE physical transport as defined in Section 10 shall be used.
If both the local and remote devices support Secure Connections over the LE
transport but not over the BR/EDR transport, then the devices may optionally
generate the BR/EDR keys of identical strength and the same MITM protection
as the LE keys as part of the LE pairing procedure.
A Bluetooth public address used as the BD_ADDR for the BR/EDR physical
channel is defined in [Vol. 2], Part B Section 1.2. A Bluetooth public address
used as the BD_ADDR for the LE physical channel is defined in [Vol. 6], Part B
Section 1.3.
BR/EDR LE LE LE LE
GAP Role Broadcaster Observer Peripheral Central
GATT Client O E E O O
GATT Server C1 E E M M
C1: Mandatory if the GATT profile is supported on the BR/EDR physical transport; otherwise excluded
SDP Client C1 E
SDP Server C1 or C2 E
C1: Mandatory to support at least one; Optional to support both
C2: Mandatory to support if GATT server is supported
ProtocolDescriptorList M
Protocol #0 UUID «L2CAP» M
Parameter #0 PSM Unit16 PSM = ATT M
for Protocol #0
BrowseGroupList PublicBrowseRoot M
Table 15.3: SDP Record for the Generic Access Profile
16 DEFINITIONS
PAGE . A baseband state where a device transmits page trains, and processes
any eventual responses to the page trains.
1. The term ’connection’ used here is not identical to the definition below. It is used in the
absence of a more concise term.
Page scan . The listening by a device for page trains containing its own Device
Access Code.
Paired device . A Bluetooth device with which a link key has been exchanged
(either before connection establishment was requested or during connecting
phase).
Pre-paired device . A Bluetooth device with which a link key was exchanged,
and the link key is stored, before link establishment.
Un-paired device . A Bluetooth device for which there was no exchanged link
key available before connection establishment was requested.
Known device . A Bluetooth device for which at least the BD_ADDR is stored.
17 REFERENCES
APPENDIX A (NORMATIVE):
TIMERS AND CONSTANTS
Requirement or
Timer name Value Description Recommendation
Requirement or
Timer name Value Description Recommendation
Requirement or
Timer name Value Description Recommendation
Requirement or
Timer name Value Description Recommendation
Verifier
Claimant
(initiator)
init_authentication
Generate
random number
lmp_au_rand
Calculate Calculate
Challenge response
(random number)
lmp_sres
Compare
result
(ok or fail)
Verifier
Claimant
(initiator)
init_pairing
Generate
random number
LMP_in_rand
LMP_accepted
PIN PIN
lmp-authentication
Link Key Link Key
The create link key procedure is described in [Vol. 2, Part C] Section 4.2.2.4 on
page 279 and [Vol. 2, Part H] Section 3.2 on page 1312. In case the link key is
based on a combination key, a mutual authentication takes place and shall be
performed irrespective of current security mode.
A B
Link establishment
Channel establishment
Channel release
LMP_detach
Test Support
CONTENTS
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3, Part D] page 413
Test Support
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3, Part D] page 414
Test Support
1 TEST METHODOLOGY
This section describes the test modes for hardware and low-level functionality
tests of Bluetooth devices.
The BR/EDR test mode supports testing of the Bluetooth transmitter and
receiver including transmitter tests (packets with constant bit patterns) and
loopback tests. It is intended mainly for certification/compliance testing of the
radio and baseband layer, and may also be used for regulatory approval or in-
production and after-sales testing.
For AMP, this section describes the AMP test mode for hardware and low-level
functionality tests of Bluetooth AMP devices. The AMP test mode provides the
ability to control an AMP device using HCI Commands for both MAC
conformance testing and PHY transmitter and receiver tests utilising the BR/
EDR connection. The AMP test mode is intended mainly for certification/
compliance testing of the MAC and PHY and may also be used for regulatory
approval or in production and after sales testing.
The setup consists of a device under test (DUT) and a tester. Optionally,
additional measurement equipment may be used.
Control commands
Test data Device under
Tester
Test
Additional
Measurement
Equipment Local activation/enabling
(optional)
Tester and DUT form a piconet where the tester acts as master and has full
control over the test procedure. The DUT acts as slave.
Test Support
The control is done via the air interface using LMP commands (see [Vol. 2, Part
C] Section 4.7.3 on page 344). Hardware interfaces to the DUT may exist, but
are not subject to standardization.
The test mode is a special state of the Bluetooth model. For security and type
approval reasons, a Bluetooth device in test mode shall not support normal
operation. When the DUT leaves the test mode it enters the standby state.
After power-off the Bluetooth device shall return to the standby state.
The transmitter test is started when the master sends the first POLL packet. In
non-hopping mode the agreed frequency is used for this POLL packet.
The burst length may exceed the length of a one slot packet. In this case the
tester may take the next free master TX slot for polling. The timing is illustrated
in Figure 1.2.
Test Support
The test packet is a normal Bluetooth packet, see Figure 1.3. For the payload
itself see below.
Packet
Access Code Payload
Header
Payload
AUX1 Packet Test Pattern
Header
Guard &Sync
eSCO Packet Test Pattern CRC
(EDR only)
For the payload length, the restrictions from the baseband specification shall
apply (see “Baseband Specification” on page 58[vol. 2]). In case of ACL, SCO
and eSCO packets the payload structure defined in the baseband specification
is preserved as well, see Figure 1.3 on page 416.
For the transmitter test mode, only packets without FEC should be used; i.e.
HV3, EV3, EV5, DH1, DH3, DH5, 2-EV3, 2-EV5, 3-EV3, 3-EV5, 2-DH1, 2-DH3,
2-DH5, 3-DH1, 3-DH3, 3-DH5 and AUX1 packets.
In transmitter test mode, the packets exchanged between the tester and the
DUT shall not be scrambled with the whitening sequence. Whitening shall be
turned off when the DUT has accepted to enter the transmitter test mode, and
shall be turned on when the DUT has accepted to exit the transmitter test
mode, see Figure 1.4 on page 417. Implementations shall ensure that
retransmissions of the LMP_accepted messages use the same whitening
status as used in the original LMP_accepted.
Test Support
TESTER DUT
LMP_test_control
(Enter Transmitter Test mode)
Whitening on
LMP_accepted
LMP_test_control
(Exit Transmitter Test mode) Whitening off
LMP_accepted
Whitening on
The same pseudorandom sequence of bits shall be used for each transmission
(i.e. the packet is repeated). A PRBS-9 Sequence is used, see [2] and [3].
The properties of this sequence are as follows (see [3]). The sequence may be
generated in a nine-stage shift register whose 5th and 9th stage outputs are
added in a modulo-two addition stage (see Figure 1.5), and the result is fed
back to the input of the first stage. The sequence begins with the first ONE of 9
consecutive ONEs; i.e. the shift register is initialized with nine ones.
• Number of shift register stages: 9
• Length of pseudo-random sequence: 29-1 = 511 bits
• Longest sequence of zeros: 8 (non-inverted signal)
Figure 1.5: Linear Feedback Shift Register for Generation of the PRBS sequence
Test Support
When the legacy power control mechanism is tested the DUT shall start
transmitting at the maximum power and shall reduce/increase its power by one
step on every LMP_incr_power_req or LMP_decr_power_req PDU received.
When the enhanced power control mechanism is tested a DUT shall start
transmitting at the maximum power and shall reduce/increase its power by one
step or go to the maximum power level when a LMP_power_control_req PDU
is received.
When the tester receives the LMP_accepted it shall then transmit POLL
packets containing the ACK for at least 8 slots (4 transmissions). When these
transmissions have been completed the tester shall change to the new
frequency hop and whitening settings.
1. It is recommended that the sequence starts with a one; but, as this is irrelevant for measure-
ments, it is also allowed to start with a zero.
Test Support
After sending LMP_accepted the DUT shall wait for the LC level ACK for the
LMP_accepted. When this is received it shall change to the new frequency hop
and whitening settings.
Adaptive Frequency Hopping (AFH) shall only be used when the Hopping
Mode is set to 79 channels (e.g. Hopping Mode = 1) in the LMP_test_control
PDU. If AFH is used, the normal LMP commands and procedures shall be
used. When AFH is enabled prior to entering test mode it shall continue to be
used with the same parameters if Hopping Mode = 1 until the AFH parameters
are changed by the LMP_set_AFH PDU.
The tester can select, whether whitening is on or off. This setting holds for both
uplink and downlink. For switching the whitening status, the same rules as in
Section 1.1.2 on page 415 (Figure 1.4) shall apply.
The following rules apply (for illustration see Figure 1.6 on page 421):
• If the synch word was not detected, the DUT shall not reply.
• If the header error check (HEC) fails, the DUT shall either reply with a NULL
packet with the ARQN bit set to NAK or send nothing.
Test Support
• If the packet contains an LMP message relating to the control of the test
mode this command shall be executed and the packet shall not be returned,
though ACK or NAK shall be returned as per the usual procedure. Other
LMP commands are ignored and no packet is returned.
• The payload FEC is decoded and the payload shall be encoded again for
transmission. This allows testing of the FEC handling. If the pure bit error
rate shall be determined the tester chooses a packet type without FEC.
• The CRC shall be evaluated. In the case of a failure, ARQN=NAK shall be
returned. The payload shall be returned as received.
A new CRC for the return packet shall be calculated for the returned payload
regardless of whether the CRC was valid or not.
• If the CRC fails for a packet with a CRC and a payload header, the number
of bytes as indicated in the (possibly erroneous) payload header shall be
looped back.
Test Support
Deccode Header
faili
HEC
o.k.
Packet type Build NULL
without FEC + ARQN = NAK
Payload:
decode FEC
Send
Packet type
without CRC fail
CRC
o.k.
Transmit Path:
Packet type
without FEC Code FEC
Packet type
Add CRC
without CRC
Build Packet
(incl. ARQN)
Send
Test Support
The timing for normal and delayed loopback is illustrated in Figure 1.7 to Figure
1.9:
The following parameters can be set to configure the loop back test:
1. Packet Class1
ACL Packets
SCO Packets
eSCO Packets
1. This is included because, in the future, the packet type numbering may not remain
unambiguous.
Test Support
The switch of the frequency setting is done exactly as for the transmitter test
(see Section 1.1.2.5 on page 418).
Pause test is used by testers to put the device under test into Pause Test mode
from either the loopback or transmitter test modes.
When an LMP_test_control PDU that specifies Pause Test is received the DUT
shall stop the current test and enter Pause Test mode. In the case of a
transmitter test this means that no more packets shall be transmitted. While in
Pause Test mode the DUT shall respond normally to POLL packets (i.e.
responds with a NULL packet). The DUT shall also respond normally to all the
LMP packets that are allowed in test mode.
When the test scenario is set to Pause Test all the other fields in the
LMP_test_control PDU shall be ignored. There shall be no change in hopping
scheme or whitening as a result of a request to pause test.
Test Support
Optional Control
DUT
AMP Test Manager
Tester
HCI
L2CAP
L2CAP
ACL
BR/EDR
connection
AMP BR/EDR BR/EDR
AMP
AMP
AMP
Additional
Measurement
Equipment
Local activation/enabling ( ti l)
To perform PHY tests on an AMP, the DUT shall first have AMP Test Mode
enabled locally as required for a BR/EDR Controller using the HCI
Enable_Device_Under_Test_Mode command. When this command is received
by the AMP controller it shall enable the AMP to accept HCI Test Commands
and when received by the BR/EDR controller it shall enable the AMP Test
Manager to pass HCI commands and events between the tester and the AMP
device utilizing the BR/EDR connection. A DUT AMP shall reject all AMP
related HCI Test Commands, except HCI_Enable_Device_Under_Test_Mode,
until the HCI_Enable_Device_Under_Test_Mode command has been issued
by the local Host. Although AMP Test Mode is enabled the AMP shall not enter
AMP Test Mode until the HCI_AMP_Test_Command is received.
The local control of an AMP in AMP Test Mode shall be by the AMP Test
Manager as shown in Figure 1.10. The AMP Test Manager will receive AMP
Test Manager commands and HCI test commands via ACL data packets as
Test Support
The AMP Test Manager commands allow the tester to discover the number and
type of AMPs supported and to read their PHY capability support via the AMP
Test Manager.
The tester can use HCI commands and HCI Test Commands to control all of
the AMPs to perform qualification, IOP testing as well as entering AMP Test
Mode to perform AMP PHY tests. The HCI events and responses shall be
routed back to the tester via the fixed test channel (0x003F).
An AMP shall be taken out of AMP Test Mode by the HCI_Reset command.
This will reset only the AMP receiving the HCI_Reset.
The AMP Test Manager shall not be enabled to support HCI commands over
the fixed test channel (0x003F) unless AMP Test Mode has been enabled
locally with the HCI_Enable_Device_Under_Test_Mode command.
The AMP Test Manager is enabled to receive AMP test commands and HCI
commands over the fixed test channel once it has been locally enabled. Using
the fixed test channel, the tester shall use the AMP test commands and events
to identify the number and type of AMPs available.
When the AMP Test Manager has been enabled and the AMPs identified the
Tester shall use the AMP Test Manager to
• Transfer HCI commands and Events to and from the AMPs for qualification
and IOP testing.
• Put the AMPs into test mode using HCI AMP test commands and events for
AMP PHY testing.
Test Support
Control and configuration of AMP tests shall be performed using two groups of
commands/events over the ACL BR/EDR connection on the fixed test channel.
The two groups are the AMP Test Manager commands/events which are to the
AMP Test Manager and the HCI AMP test commands/events which are routed
via the AMP Test Manager between the AMP indicated as part of the message
structure and the tester.
AMP Command Rejected Event
The AMP Test Manager provides the interface to the AMPs available so that
qualification, IOP and PHY testing can be performed using the BR/EDR
connection. The AMP Test Manager provides the following services:
Test Support
This is the Basic L2CAP header with the Channel ID always set to test channel
(0x003F). (See section [Vol. 3], Part A Section 3.1)
• Length (2 octets)
Length of the Information payload which includes the Protocol ID and the
Command/Event
• Channel ID (2 octets)
Fixed value of (0x003F)
Protocol ID (1 octet)
This identifies the protocol in the command/event data. The IDs used are an
extension of the UART transport packet types.
0x03 Reserved
0x04 HCI Event
0x05 AMP Test Command
Test Support
Controller ID (1 octet)
Note: "Controller" is a generic term which covers both the primary BR/EDR
controller and any AMPs
RES (1 octet)
Reserved = 0
The format of these packets follow the standard HCI format described in [Vol.
2], Part E, after the Controller ID.
Examples
Protocol ID Command/Event
Test Support
The AMP Test Manager commands are sent to the AMP Test Manager from the
tester and the events are from the AMP Test Manager to the tester.
0x00 Reserved
This event shall be sent by the DUT to the tester when a command cannot be
accepted. The parameter returned indicates the reason.
Test Support
• Reason (2 octets)
See Table 1.3.
The tester shall send this command to the AMP Test Manager to obtain the
available Controllers and their types.
Events generated
Test Support
Controller list
Con troller ID=0 Con troller Type=0 Additio nal Co ntro ller ID and Type pairs
Note: The AMP Discovery Response shall include the primary BR/EDR
Controller as the first Controller ID and Controller Type pair.
To perform AMP PHY tests the tester needs to know the supported PHY
capabilities of the DUT. This information shall be provided in the PHY
Capability Bit Map. This command shall be sent from the tester to the DUT to
request the PHY Capability Bit Map from an AMP with the passed Controller
ID.
Test Support
0x00 Success
0x01 Invalid Controller ID
0x02 to 0xFF Reserved
Note: If the status is not Success the remaining parameters shall be zero.
• Controller ID (1 octet)
This is the Controller ID from which the PHY Capability Bit Map has been
sent.
• PHY Capabilities Bit Map
See [Volume 5] for the PHY Capabilities Bit Map.
Opcode = 0x05 Reserved = 0 ATC length Status Controller ID PHY Capabilities Bit Map
1.3 REFERENCES
[1] Bluetooth Link Manager Protocol.
[2] CCITT Recommendation O.153 (1992), Basic parameters for the
measurement of error performance at bit rates below the primary rate.
[3] ITU-T Recommendation O.150 (1996), General requirements for
instrumentation for performance measurements on digital transmission
equipment.
[4] Bluetooth Baseband Specification.
Test Support
This section describes the Bluetooth Test Control Interface (TCI). The TCI
provides a uniform method of accessing the upper interface of the
implementation being tested. This facilitates the use of a standardized interface
on test equipment used for formal Qualification of implementations.
2.1 INTRODUCTION
For all products and components equipped with Bluetooth wireless technology,
conformance testing is used to verify the implemented functionality in the lower
layers. Conformance testing of the lowest layers requires an upper tester to
test the implementation sufficiently well.
In order to avoid that the tester will have to adapt to each and every product
and component equipped with Bluetooth wireless technology, the use of the
standardized TCI is mandated. This concept puts some burden upon the
manufacturer of the IUT in terms of supplying an adapter providing the
necessary conversion from/to the IUT’s specific interface to the TCI. The
adapter can consist of hardware, firmware and software. After qualification
testing has been performed the TCI may be removed from the product or
component equipped with Bluetooth wireless technology. It is the
Test Support
Similar to TCI, the specific test mode functionality may be removed from the
product or component after qualification, at the discretion of the manufacturer.
For RF qualification only the air interface is required, see Figure 2.1.
Depending on the physical design of the IUT it might be necessary to
temporarily attach an RF connector for executing the RF tests. As stated in
Section 1 on page 414, the Test Mode shall be locally enabled on the IUT for
security reasons. The implementation of this local enabling is not subject to
standardization.
Test Support
Local activation/enabling
Used for test mode
signalling
LM LMP LM
BB BB
RF RF
For other protocols in the Bluetooth stack the TCI is not used. An
implementation specific user interface is used to interact with the IUT’s upper
interface.
For BB, LM and HCI qualification both the air interface of the IUT and the TCI
are required. For other protocols both the air interface and the user interface
are used as described in the test specification.
Test Support
For this type of qualification both the air interface and the user interface of the
IUT are used as described in the test specification.
Test Operator:
Executes commands on Test system
the IUT and feeds results
to the test system Test Operator
Interface
with MMI Application
IUT
Air
MMI
Interface
Bluetooth
Profile
Application
Emulator
Bluetooth
Bluetooth
Protocol
Protocol Stack
Stack
Test Support
The method used to convey commands and events between the tester and the
IUT’s upper interface can be either physical bearer or “software bearer”.
It is recommended to use one of the transport layers specified for the HCI in
[Volume 4] Host Controller Interface [Transport Layer]. However, other physical
bearers are not excluded and may be provided on test equipment. The use of a
physical bearer is required for test cases active in category A. Please see the
PRD for the definitions of test case categories. Please see the current active
Test Case Reference List for the categorization of specific test cases.
There is no physical connection between the tester and the IUT’s upper
interface. In this case, the manufacturer of the IUT shall supply test software
and hardware that can be operated by a test operator. The operator will receive
instructions from the tester and will execute them on the IUT. The “software
bearer” shall support the same functionality as if using the TCI with a physical
bearer. Use of the “software bearer” shall be agreed upon between the
manufacturer of the IUT and the test facility that performs the qualification
tests. The test facilities can themselves specify requirements placed on such a
“software bearer”. Furthermore, the use of a “software bearer” is restricted to
test cases active in one of the three lower categories B, C and D.
Test Support
For the qualification of the link control part of the Baseband layer and for the
Link Manager layer, the TCI is used as the interface between the test system
and the upper interface of the IUT. The test system accesses the upper
interface of the IUT by sending HCI commands and receiving HCI events from
the IUT as described in the HCI specification. The required functionality on the
TCI depends on the IUT’s implemented functionality of the BB and LM layers,
and therefore which test cases are executed.
A schematic example in Figure 2.3 shows the test configuration for BB and LM
qualification of Bluetooth products which do not support HCI, and use a
physical bearer for the TCI. In this example the Test Control (TC) Software
represents what the manufacturer has to supply with the IUT when using an
external test facility for qualification. The function of the TC Software is to adapt
the implementation dependent interface to the TCI.
TCI
Test Suite
Executor
IUT Air
Implementation Interface
dependent interface
LM LMP LM
BB LCP BB
RF RF
Figure 2.4 shows a schematic example of the test configuration for the same
Bluetooth product using a “software bearer” for the TCI. Here the function of
the Test Control Software is to represent the application that can be controlled
by the test operator.
Test Support
TCI
Execute Command
Test
Test Operator
Application Interface
Adapter Report Event with MMI
Test Suite
Executor
IUT Air
Implementation Interface
dependent interface
LM LMP LM
BB LCP BB
RF RF
Test Support
The TCI may also be used for HCI signaling verification and qualification. The
HCI signaling is only verified if support of the HCI functionality is claimed by the
manufacturer.
A schematic example in Figure 2.5 shows the test configuration for HCI
qualification of Bluetooth products. As can be seen in the figure the
implemented HCI is used as the interface to the tester.
TCI
IUT Test system
LM LMP LM
BB LCP BB
RF RF
CONTENTS
02 December 2014
Bluetooth SIG Proprietary
BLUETOOTH SPECIFICATION Version 4.2 [Vol 3, Part E] page 443
1 INTRODUCTION
2 GENERAL OPERATION
The AMP Manager communicates with the local AMP PAL and communicates
with remote AMP Managers using the AMP Manager Protocol over a fixed
L2CAP channel. The AMP Manager entity exists within the Bluetooth stack as
depicted in Figure 2.1.
AMP Manager
L2CAP
1 2
Figure 2.1 shows the two basic communication paths for the AMP Manager.
The AMP Manager uses path 1 via L2CAP and the Primary BR/EDR Controller
to first discover remote AMP Managers. The AMP Manager can query for the
possibility of available remote AMPs and their capabilities as well as other
information. The AMP Managers communicate over the AMP Manager
Protocol Channel (A2MP Channel). See Section 2.2 for more information on
the A2MP Channel.
After discovering the AMPs supported by the remote device, the AMP Manager
uses communication path 2 to manage the physical links between its local
AMP(s) and AMPs on remote devices. Note that there can be more than one
local AMP and there also may be more than one AMP located on the remote
device.
The AMP Manager Protocol is a request / response protocol between two AMP
Managers. Requests and responses go in both directions. Either peer can
request the same category of information from its corresponding peer.
Parameter Value
MTU ≥ 670
The parameters for the Enhanced Retransmission Mode used on the fixed
channel shall be as shown below. The Retransmission Time-out, Monitor Time-
out and MPS shall be any valid value that is greater than or equal to the values
stated in the following tables.
Parameter Value
TxWindow size 1
Parameter Value
The minimum value for both MTU and MPS is 670 bytes. A larger MTU and
MPS size can be communicated using the AMP Discover request (see section
3.3) and AMP Discover response (see Section 3.4) packets. The MTU
parameter and the Enhanced Retransmission mode MPS parameter are
numerically equal to allow an AMP manager to send any A2MP packet using a
single L2CAP PDU. A device may segment any A2MP packet into multiple
L2CAP PDUs.
The next step is to discover the existence and capabilities of the AMP
Controllers of the peer. An AMP Discover Request packet can be issued over
the AMP Manager Protocol channel for this purpose.
In an AMP Discover Response packet, the peer AMP Manager will return
information about its local AMP capabilities in the form of a Controller List. A
Controller List is a sequence of Controller ID/Controller Type/Controller Status
triples identifying the Controllers that are available for communication.
The Controller List contains a basic top level description of the available peer
Controllers and their status. The AMP Manager parses this list for physical
radio compatibility. If more information is required about a remote AMP
Controller, the local AMP Manager can subsequently issue an AMP Get Info
Request packet using the Controller ID retrieved via the AMP Discover
exchange. An AMP Get Info Response packet is returned from the peer with
AMP Controller Info for the specified AMP Controller. The AMP Controller Info
contains information about the AMP Controller that can be used by the host to
determine whether or not to create a physical link to the AMP Controller.
Note that the AMP Manager only holds the contents of the AMP_Assoc
structure for use in AMP Manager operations. The AMP Manager does not
directly attempt to interpret the contents of the AMP_Assoc structure.
The AMP manager is responsible for generating the Physical Link Handle used
in the HCI_Create_Physical_Link and HCI_Accept_Physical_Link commands.
See section [Vol 2 Part E] Section 5.3.2 on page 469 for details. When the AMP
PAL is ready it will generate an HCI_Channel_Selected event which is a signal
to read the local AMP_Assoc structure using the
HCI_Read_Local_AMP_ASSOC command.
The AMP Manager shall not create or accept a physical link over an AMP if
mutual authentication was not performed or encryption was not enabled over
BR/EDR.
When the AMP Manager does not have a dedicated AMP key for the selected
Controller type between the two devices and the BR/EDR link key type is not
"Debug", the AMP Manager shall call the Secure Simple Pairing h2 function
(see [Vol 2 Part H] Section 7.7.5.2 on page 1355) to generate a dedicated AMP
key. This dedicated AMP key shall be used during subsequent connections.
If the Bluetooth device supports more than one AMP type, the AMP Manager
shall call the h2 function a second time to regenerate Key_GAMP as defined in
[Vol 2 Part H] Section 7.7.5.3 on page 1356 before generating a Dedicated
AMP link key for a different AMP type.
When the BR/EDR link key type is set to "Debug", the AMP Manager shall use
Key_GAMP directly as the key for the AMP regardless of the AMP Type. The
key length, key type and the link key itself are passed to the AMP Controller in
the HCI_Create_Physical_Link command.
peer responds with an AMP Create Physical Link Response packet to either
accept or reject the request to create a physical link.
3 PROTOCOL DESCRIPTION
The AMP Manager Protocol defines the procedures and format of the packets
used to exchange information between two peer AMP Managers.
Figure 3.1 displays the general format of all AMP Manager Protocol packets.
Data
Code Description
0x00 Reserved
0x01 AMP Command Reject
0x02 AMP Discover request
Code Description
• Identifier (1 octet)
The Identifier field matches responses with requests. The requesting device
sets this field and the responding devices uses the same value in the
response. For each A2MP channel an AMP manger shall use different
identifiers for each request sent (this includes the AMP Change Notify
command). Following the original transmission of an identifier in a request,
the identifier may be recycled if all other identifiers have subsequently been
used.
A response packet with an invalid identifier is discarded. Identifier 0x00 is an
illegal identifier and shall never be used in any packet. Table 3.2 shows the
valid values for the Identifier field,
Value Description
0x00 Invalid
0x01 - 0xFF Valid
• Length (2 octets)
The Length field indicates the size in octets of the data field of the packet
only, i.e. it does not cover the Code, Identifier and Length fields.
• Data (0 or more octets)
The Data field is variable in length. The Code field determines the format of
the Data field. The Length field determines the length of the Data field.
Other Reserved
Table 3.3: AMP Command Reject reasons
Reserved 0 0-7
Reserved 1 0-6
Extension Bit 1 7
Bit 7 of Octet 1 of this field is used to extend the A2MP Extended Feature
Mask. If the Extension Bit is set then the Extended Feature Mask field is
extended by two octets. Each two octet extension includes an Extension Bit
that allows a further two octets to be added to the field. Figure 3.4 shows
how the Extension Bit (E) can be used to extend the A2MP Extended
Feature Mask.
Controller List
Controller list
Controller list entry 4
...
entry 3 (cont.)
• Controller ID (1 octet)
The Controller ID uniquely identifies a Controller (see Section 2.4 for more
information about Controller IDs).
• Controller Type (1 octet)
The Controller Type specifies the type of the Controller. The Controller type
values are defined in Assigned Numbers.
• Controller Status (1 octet)
The Controller Status field indicates the current status of the AMP. The
status information can be used by the receiving device to help decide if it
should use the AMP. If multiple AMPs are available the status can also be
used by an implementation to determine which would be the optimal AMP to
use. None of the AMP status values indicate that a Physical Link shall not be
created to the AMP. If an implementation wishes to ensure it does not
receive Create Physical Link Requests for a given AMP then it should
remove the associated entry from the Controller list it sends.
Table 3.5 contains the different values of the Controller Status field.
0x00 The Controller radio is available but is currently physically powered down.
This value should be used if the AMP Controller is present and can be pow-
ered up by the AMP Manager. A Controller List entry shall not exist for an AMP
that is not present or cannot be powered up by the AMP manager.
This value indicates that there may be a cost of time and power to use this
AMP Controller (i.e., the time taken and power required to power up the AMP
Controller). These costs are AMP type and AMP implementation dependent.
0x01 This value indicates that the AMP Controller is only used by the Bluetooth
technology and will not be shared with other non-Bluetooth technologies.
This value shall only be used if the AMP Controller is powered up.
This value does not indicate how much bandwidth is currently free on the AMP
Controller.
0x02 The AMP Controller has no capacity available for Bluetooth operation.
This value indicates that all of the AMP Controller's bandwidth is currently allo-
cated to servicing a non Bluetooth technology.
A device may create a Physical Link to an AMP Controller that has this status.
This value shall only be used if the AMP Controller is powered up.
0x03 The AMP Controller has low capacity available for Bluetooth operation.
This value indicates that the majority of the AMP Controller's bandwidth is cur-
rently allocated to servicing a non Bluetooth technology.
An AMP Controller with capacity in the approximate range of 0 < capacity <
30% should indicate this value.
This value does not indicate how much of the capacity available for Bluetooth
operation is currently being used.
This value shall only be used if the AMP Controller is powered up.
0x04 The AMP Controller has medium capacity available for Bluetooth operation.
An AMP Controller with capacity in the approximate range of 30% < capacity <
70% should indicate this value.
This value does not indicate how much of the capacity available for Bluetooth
operation is currently being used.
This value shall only be used if the AMP Controller is powered up.
Table 3.5: Controller Status
0x05 The AMP Controller has high capacity available for Bluetooth operation.
This value indicates that the majority of the AMP Controller's bandwidth is cur-
rently allocated to servicing the Bluetooth technology.
An AMP Controller with capacity in the approximate range of 70% < capacity <
100% should indicate this value.
This value does not indicate how much of the capacity available for Bluetooth
operation is currently being used.
This value shall only be used if the AMP Controller is powered up.
0x06 The AMP Controller has full capacity available for Bluetooth operation.
This value indicates that while currently the AMP is only being used by Blue-
tooth the device allows a different technology to share the radio.
This value shall be used as the default Controller Status value for devices that
are not capable of determining the available capacity for Bluetooth operation
for an AMP Controller.
This value does not indicate how much of the capacity available for Bluetooth
operation is currently being used.
This value shall only be used if the AMP Controller is powered up.
Other Reserved
Table 3.5: Controller Status
The available capacity ranges given for values 0x03, 0x04, and 0x05 are only
approximate and permit an implementation to not send an AMP Change Notify
packet if the current availability is moving frequently from one range to another
(e.g., if the current availability is moving between 68% (corresponding to
Controller status 0x04) and 72% (corresponding to Controller status 0x05)
frequently an implementation is not mandated to send an AMP Change Notify
packet every time the value crosses the approximate 70% threshold between
the two Controller Status values).
Controller List
Controller ID
Total Bandwidth
Controller ID Status
(Least significant octets)
AMP_Assoc Size
• Controller ID (1 octet)
Controller ID is the identifier requested in the AMP Get Info Request.
• Status (1 octet)
The Status field indicates the status of the request
0x00 Success
0x01 Invalid Controller ID
Other Reserved
An AMP Get Info Response with status of Invalid Controller ID shall be sent
by an AMP manager that has received an AMP Get Info Request containing
either:
a) A Controller ID that has not been allocated by the AMP manager
b) A Controller ID of 0
If the Status field is set to Invalid Controller ID all subsequent fields in the
AMP Get Info Response shall be ignored by the receiver.
• Total Bandwidth (4 octets)
The Total Bandwidth field indicates the total data rate in kilobits per second
(1000 b/s) that can be achieved by the Controller for applications. This value
shall account for any bandwidth limitations of the Host and the HCI transport
if present. The Host is responsible for determining these bandwidth
limitations.
• Max Guaranteed Bandwidth (4 octets)
The Maximum Guaranteed Bandwidth field indicates the maximum data rate
in kilobits per second that the AMP can guarantee for a logical channel. Any
request made by an application above this level will be rejected. This value
shall account for any bandwidth limitations of the Host and the HCI transport if
present. The Host is responsible for determining these bandwidth limitations.
• Min Latency (4 octets)
The Min Latency field indicates the minimum latency in microseconds that
the AMP can guarantee for a logical channel. This value shall account for
any latency limitations of the Host and the HCI transport if present. The Host
is responsible for determining these latency limitations.
• PAL_Capabilities (2 octets)
The PAL_Capabilities field contains the PAL capabilities returned via HCI
Read Local AMP Info Command (see [Vol 2 Part E] Section 7.5.8 on page
814 for more information).
• AMP_Assoc Structure Size (2 octets)
The maximum size in octets of the requested AMP's AMP_Assoc structure.
The value of the AMP_Assoc Structure Size for a given AMP is determined
by the controller. If an HCI is being used this value can be retrieved by the
Host sending the HCI_Read_Local_AMP_Info command to the Controller.
Controller ID
0x00 Success
0x01 Invalid Controller ID
Other Reserved
An AMP Get AMP Assoc Response packet with status of Invalid Controller
ID shall be sent by an AMP manager that has received an AMP Get AMP
Assoc Request packet containing either
a) A Controller ID that has not been allocated by the AMP manager
b) A Controller ID of 0
If the Status field is set to Invalid Controller ID (0x01) then the AMP_Assoc
structure shall not be included in the Get AMPAssoc Response packet.
• AMP_Assoc structure (from 0 to (A2MP MTU - 6) octets)
AMP_Assoc structure is variable in length. The Controller Type of the
Controller ID referenced in the AMP Get AMP Assoc Request packet
determin