bluez/mesh
Isak Westin 77da94eb7a mesh: provisionee: Handle failed provisioning
When a provisioning fails, all additionally received PDU should be
unexpected until link is closed by provisioner. See MshPRFv1.0.1 section
5.4.4.
2022-10-06 13:56:21 -07:00
..
agent.c mesh: Fix errors found by static analysis 2020-11-10 10:24:11 -08:00
agent.h mesh: Add SPDX License Identifier 2020-09-21 16:19:35 -07:00
appkey.c mesh: Reply error if appkey added for wrong netkey 2022-09-23 10:06:37 -07:00
appkey.h mesh: Make key_aid and net_key_id naming consistent 2022-02-04 12:12:27 -08:00
bluetooth-mesh.conf mesh: Allow sending on org.bluez.mesh.Provisioner1 2019-07-18 09:47:14 -07:00
bluetooth-mesh.service.in build: Add support for systemd bluetooth-mesh service 2019-06-06 11:58:22 -07:00
bluetooth-meshd.rst.in mesh: Add manpage for bluetooth-meshd daemon 2021-05-19 10:52:53 -07:00
cfgmod-server.c mesh: Allow Key Refresh Phase 0 to 3 transition 2022-10-03 14:19:19 -07:00
cfgmod.h mesh: Add SPDX License Identifier 2020-09-21 16:19:35 -07:00
crypto.c mesh: use explicit uint32_t when bit shifting left 2022-03-31 11:21:56 -07:00
crypto.h mesh: Fix network_id parameter declaration 2021-04-27 19:09:08 +02:00
dbus.c mesh: Add SPDX License Identifier 2020-09-21 16:19:35 -07:00
dbus.h mesh: Add SPDX License Identifier 2020-09-21 16:19:35 -07:00
error.h mesh: Add SPDX License Identifier 2020-09-21 16:19:35 -07:00
friend.c mesh: Correct size of friend cache 2022-10-06 13:34:20 -07:00
friend.h mesh: Add SPDX License Identifier 2020-09-21 16:19:35 -07:00
keyring.c mesh: Fix keyring snprintf usage range checking 2022-06-14 13:42:09 -07:00
keyring.h mesh: Implement ExportKeys() method 2021-09-27 13:22:39 -07:00
main.c mesh: Fix mesh to work with MESH_IO_TYPE_UNIT_TEST 2022-10-05 13:48:35 -07:00
manager.c mesh: Implement ExportKeys() method 2021-09-27 13:22:39 -07:00
manager.h mesh: Add SPDX License Identifier 2020-09-21 16:19:35 -07:00
mesh-config-json.c mesh: Fix potential memory leak 2022-09-22 14:02:38 -07:00
mesh-config.h mesh: Add SPDX License Identifier 2020-09-21 16:19:35 -07:00
mesh-defs.h mesh: Update AppKeys on transition to Phase 0 2021-01-04 08:58:37 -08:00
mesh-io-api.h mesh: Add new kernel MGMT based IO transport 2022-09-26 13:14:47 -07:00
mesh-io-generic.c mesh: Add new kernel MGMT based IO transport 2022-09-26 13:14:47 -07:00
mesh-io-generic.h mesh: Add SPDX License Identifier 2020-09-21 16:19:35 -07:00
mesh-io-mgmt.c mesh: Add new kernel MGMT based IO transport 2022-09-26 13:14:47 -07:00
mesh-io-mgmt.h mesh: Add new kernel MGMT based IO transport 2022-09-26 13:14:47 -07:00
mesh-io-unit.c mesh: Add new kernel MGMT based IO transport 2022-09-26 13:14:47 -07:00
mesh-io-unit.h mesh: Add unit test IO 2021-04-10 10:28:14 -07:00
mesh-io.c mesh: Fix mesh to work with MESH_IO_TYPE_UNIT_TEST 2022-10-05 13:48:35 -07:00
mesh-io.h mesh: Add new kernel MGMT based IO transport 2022-09-26 13:14:47 -07:00
mesh-main.conf mesh: Add mesh-main.conf file with general mesh configuration 2019-12-16 14:52:36 -08:00
mesh-mgmt.c mesh: Add new kernel MGMT based IO transport 2022-09-26 13:14:47 -07:00
mesh-mgmt.h mesh: Add new kernel MGMT based IO transport 2022-09-26 13:14:47 -07:00
mesh.c mesh: Add new kernel MGMT based IO transport 2022-09-26 13:14:47 -07:00
mesh.h mesh: Add new kernel MGMT based IO transport 2022-09-26 13:14:47 -07:00
model.c mesh: Do not accept publication for unbound appkey 2022-09-22 14:02:38 -07:00
model.h mesh: Add SPDX License Identifier 2020-09-21 16:19:35 -07:00
net-keys.c mesh: Inclusive language changes 2021-09-21 10:51:54 +02:00
net-keys.h mesh: Inclusive language changes 2021-09-21 10:51:54 +02:00
net.c mesh: Always relay messages from Low Power nodes 2022-10-06 13:34:20 -07:00
net.h mesh: use explicit uint32_t when bit shifting left 2022-03-31 11:21:56 -07:00
node.c mesh: Update Key Refresh flag after provision 2022-10-06 13:56:21 -07:00
node.h mesh: Re-arrange Join/Create/Import/Attach page saving 2020-10-07 14:49:40 -07:00
org.bluez.mesh.service build: Add support for systemd bluetooth-mesh service 2019-06-06 11:58:22 -07:00
pb-adv.c mesh: Improve PB-ADV timing for reliability 2022-09-26 13:14:47 -07:00
pb-adv.h mesh: Add SPDX License Identifier 2020-09-21 16:19:35 -07:00
prov-acceptor.c mesh: provisionee: Handle failed provisioning 2022-10-06 13:56:21 -07:00
prov-initiator.c mesh: Normalize endian of public/private ECC keys 2021-05-19 12:54:40 -07:00
prov.h mesh: Add SPDX License Identifier 2020-09-21 16:19:35 -07:00
provision.h mesh: Add single threading to prov-acp ob messaging 2021-05-19 12:54:40 -07:00
README mesh: ELL encrypt dependancy README section added 2019-05-31 16:46:34 -07:00
rpl.c mesh: Skip unneeded logs 2022-02-04 12:12:27 -08:00
rpl.h mesh: Add SPDX License Identifier 2020-09-21 16:19:35 -07:00
util.c mesh: Don't log error for false positive mkdir failure 2021-12-06 10:19:07 -08:00
util.h mesh: Add SPDX License Identifier 2020-09-21 16:19:35 -07:00

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