bluez/mesh/README
Brian Gix 632e67f8d6 mesh: ELL encrypt dependancy README section added
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.
2019-05-31 16:46:34 -07:00

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