mirror of
https://git.kernel.org/pub/scm/bluetooth/bluez.git
synced 2024-11-27 06:04:32 +08:00
632e67f8d6
Due to known AEAD encryption deficiencies in old versions of the kernel, we have added a section on identifying and back-porting mesh to otherwise non-supporting platforms.
96 lines
3.2 KiB
Plaintext
96 lines
3.2 KiB
Plaintext
Bluetooth Mesh Daemon
|
|
*********************
|
|
|
|
Copyright (C) 2019 Intel Corporation. All rights reserved.
|
|
|
|
Compilation and installation
|
|
============================
|
|
|
|
In addition to main BlueZ requirements, MeshCtl needs the following:
|
|
- json-c library
|
|
|
|
Configuration and options
|
|
=========================
|
|
|
|
--enable-mesh
|
|
|
|
Build mesh daemon and other Bluetooth Mesh based tools
|
|
|
|
Current implementation of the mesh daemon requires exclusive access to
|
|
a Bluetooth controller.
|
|
The AutoEnable option in the installed main.conf should be set to "false".
|
|
|
|
Storage
|
|
=======
|
|
|
|
Default storage directory is /var/lib/bluetooth/mesh.
|
|
|
|
The directory contains the provisioned nodes configurations.
|
|
Each node has its own subdirectory, named after node's Device UUID (32-digit
|
|
hexadecimal string) that is generated by the application that created a node.
|
|
|
|
Each subdirectory contains the following files:
|
|
- node.json:
|
|
node configuration and is populated by the
|
|
daemon based on the configuration commands from a
|
|
provisioner/configuration client
|
|
- node.json.bak:
|
|
a backup that the last known good node configuration.
|
|
- seq_num:
|
|
File containing next sequence number to use
|
|
- seq_num.bak:
|
|
Backup of the sequence number. This may be larger than the
|
|
actual sequence number being used at runtime, to prevent re-use
|
|
of sequence numbers in the event of an unexpected restart.
|
|
- ./rpl/:
|
|
Directory to store the sequence numbers of remote nodes, as
|
|
required by Replay Protection List (RPL) parameters.
|
|
- xxxx:
|
|
Files named for remote Unicast addresses, and contain
|
|
last received iv_index + seq_num from each SRC address.
|
|
- ./dev_keys/:
|
|
Directory to store remote Device keys. This is only created/used
|
|
by Configuration Client (Network administration) nodes.
|
|
- xxxx:
|
|
Files named for remote Unicast addresses, and contains
|
|
16 octet key.
|
|
- ./net_keys/:
|
|
Directory to store network subnet keys. This is only
|
|
created/used by Configuration Client (Network administration)
|
|
nodes.
|
|
- xxx:
|
|
Files named for subnet index, and contains key refresh
|
|
phase, and old/new versions of the key.
|
|
- ./app_keys/:
|
|
Directory to store application keys. This is only created/used
|
|
by Configuration Client (Network administration) nodes.
|
|
- xxx:
|
|
Files named for application index, and contains bound
|
|
subnet index, and old/new versions of the key.
|
|
|
|
The node.json and node.json.bak are in JSON format. All other files are stored
|
|
in little endian binary format.
|
|
|
|
Known Issues
|
|
============
|
|
|
|
Bluetooth Mesh makes heavy usage of AEAD-AES_CCM encryption, which is
|
|
implemented in the Linux kernel on most platforms. Some platforms, including
|
|
those with kernel versions including and prior to v4.8, did *not* correctly
|
|
implement the AEAD encryption routines. If Mesh is to be ported to such a
|
|
system, it will be the responsibility of the vendor to provide support for
|
|
AEAD-AES_CCM encryption by some other method.
|
|
|
|
Support for the required AEAD routines can be determined by running the unit
|
|
tests provided with the ELL libraries used by Mesh. Specifically, the tests
|
|
found in .../ell/unit/test-cipher.c
|
|
|
|
Information
|
|
===========
|
|
|
|
Mailing lists:
|
|
linux-bluetooth@vger.kernel.org
|
|
|
|
For additional information about the project visit BlueZ web site:
|
|
http://www.bluez.org
|