| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- BLE User Guide
- ----------------
- Apache Mynewt offers the world's first fully open-source Bluetooth Low
- Energy (BLE) or Bluetooth Smart stack fully compliant with Bluetooth 5
- specifications with support for Bluetooth Mesh. It is called NimBLE.
- BLE technology operates in the unlicensed industrial, scientific and
- medical (ISM) band at 2.4 to 2.485 GHz which is available in most
- countries. It uses a spread spectrum, frequency hopping, full-duplex
- signal. BLE FHSS employs 40 2-MHz-wide channels to ensure greater
- reliability over longer distances. It also features 0-dBm (1 mW) power
- output and a typical maximum range of 50 meters. With Bluetooth 5
- specification range can be increased 4 times and speed 2 time.
- .. toctree::
- :hidden:
- :titlesonly:
- ble_sec
- ble_setup/ble_setup_intro
- ble_hs/ble_hs
- btshell Usage API <btshell/btshell_api>
- mesh/index
- .. contents::
- :local:
- :depth: 2
- Note that BLE is not compatible with standard Bluetooth.
- Features
- ~~~~~~~~
- NimBLE complies with Bluetooth Core Specification 5.0 which makes it an
- ideal wireless technology for the Internet of Things (IoT).
- - LE Advertising Extensions
- - 2Msym/s PHY for higher throughput
- - Coded PHY for LE Long Range
- - High Duty Cycle Non-Connectable Advertising
- - Channel Selection Algorithm #2 to utilize channels in more efficient
- way.
- - LE Privacy 1.2 for frequent changes to the device address to make it
- difficult to track for outsiders
- - LE Secure Connections featuring FIPS-compliant algorithms.
- - LE Data Length Extension for higher throughput
- - **Coming Soon**: Assigning an Internet Protocol (IP) address
- (complaint with the IPv6 or 6LoWPAN standard) to a Bluetooth device
- through Internet Protocol Support Profile (IPSP)
- The Bluetooth 5 is backward compatible with previous Bluetooth version
- 4.2 which is also supported by Apache Mynewt.
- Bluetooth Mesh features
- ~~~~~~~~~~~~~~~~~~~~~~~
- Bluetooth Mesh is a great addition to and opens a wide range of new
- possibilities for the IoT connectivity space. NimBLE fully supports the
- following Bluetooth Mesh features:
- - Advertising and GATT bearers
- - PB-GATT and PB-ADV provisioning
- - Foundation Models (server role)
- - Relay support
- - GATT Proxy
- Components
- ~~~~~~~~~~
- A Bluetooth low energy stack (NimBLE included) consists of two
- components with several subcomponents:
- - **Controller**
- - **Physical Layer**: adaptive frequency-hopping Gaussian Frequency
- Shift Keying (GFSK) radio using 40 RF channels (0-39), with 2 MHz
- spacing.
- - **Link Layer**: with one of five states (Standby, Advertising,
- Scanning, Initiating, Connection states) active at any time
- - **Host**
- - **Logical Link Control and Adaptation Protocol (L2CAP)**: provides
- logical channels, named L2CAP channels, which are multiplexed over
- one or more logical links to provide packet segmentation and
- reassembly, flow control, error control, streaming, QoS etc.
- - **Security Manager (SM)**: uses Security Manager Protocol (SMP)
- for pairing and transport specific key distribution for securing
- radio communication
- - **Attribute protocol (ATT)**: allows a device (*Server*) to expose
- certain pieces of data, known as *Attributes*, to another device
- (*Client*)
- - **Generic Attribute Profile (GATT)**: a framework for using the
- ATT protocol to exchange attributes encapsulated as
- *Characteristics* or *Services*
- - **Generic Access Profile (GAP)**: a base profile which all
- Bluetooth devices implement, which in the case of LE, defines the
- Physical Layer, Link Layer, L2CAP, Security Manager, Attribute
- Protocol and Generic Attribute Profile.
- - **Host Controller Interface (HCI)**: the interface between the
- host and controller either through software API or by a hardware
- interface such as SPI, UART or USB.
- Subsequent chapters in this manual will go into the details of the
- implementation of each component, APIs available, and things to consider
- while designing a NimBLE app.
- Example NimBLE projects
- ~~~~~~~~~~~~~~~~~~~~~~~
- Mynewt comes with two built-in projects that allow users to play with
- NimBLE, try the tutorials out with, and see how to use available
- services.
- 1. **btshell** : A simple shell application which provides a basic
- interface to the host-side of the BLE stack.
- 2. **bleprph**: A basic peripheral device with no user interface. It
- advertises automatically on startup, and resumes advertising whenever
- a connection is terminated. It supports a maximum of one connection.
- 3. **blemesh**: A sample application for Bluetooth Mesh Node using
- on/off model.
|