BlueZ settings storage
**********************

Purpose
=======

The purpose of this document is to describe the directory structure of
BlueZ settings storage. In effect, this document will serve as the primary,
up to date source of BlueZ storage information.

It is intended as reference for developers. Direct access to the storage
outside from bluetoothd is highly discouraged.

Adapter and remote device info are read form the storage during object
initialization. Write to storage is performed immediately on every value
change.

Default storage directory is /var/lib/bluetooth. This can be adjusted
by the --localstatedir configure switch. Default is --localstatedir=/var.

All files are in ini-file format.


Storage directory structure
===========================

There is one directory per adapter, named by its Bluetooth address, which
contains:
 - a settings file for the local adapter
 - an attributes file containing attributes of supported LE services
 - a cache directory containing:
    - one file per device, named by remote device address, which contains
    device name
 - one directory per remote device, named by remote device address, which
   contains:
    - an info file
    - an attributes file containing attributes of remote LE services
    - a ccc file containing persistent Client Characteristic Configuration
      (CCC) descriptor information for GATT characteristics

So the directory structure is:
    /var/lib/bluetooth/<adapter address>/
        ./settings
        ./attributes
        ./cache/
            ./<remote device address>
            ./<remote device address>
            ...
        ./<remote device address>/
            ./info
            ./attributes
            ./ccc
        ./<remote device address>/
            ./info
            ./attributes
        ...


Settings file format
====================

Settings file contains one [General] group with adapter info like:

  Name			String		Friendly name advertised for
					this adapter

  Discoverable		Boolean		Discoverability of the adapter

  Pairable		Boolean		Can the adapter accept pairing
					request ?

  PairableTimeout	Integer		How long to stay in pairable mode
					before going back to non-pairable.
					The value is in seconds.
					0 = disable timer, i.e. stay
					pairable forever

  DiscoverableTimeout	Integer		How long to stay in discoverable mode
					before going back to non-discoverable.
					The value is in seconds.
					0 = disable timer, i.e. stay
					discoverable forever

Sample:
  [General]
  Name=My PC
  Discoverable=false
  Pairable=true
  DiscoverableTimeout=0


Attributes file format
======================

The attributes file lists all attributes supported by the local adapter or
remote device.

Attributes are stored using their handle as group name (decimal format).

Each group contains:

  UUID			String		128-bit UUID of the attribute

  Value			String		Value of the attribute as hexadecimal encoded
					string

  EndGroupHandle	Integer		End group handle in decimal format

Sample:
  [1]
  UUID=00002800-0000-1000-8000-00805f9b34fb
  Value=0018

  [4]
  UUID=00002803-0000-1000-8000-00805f9b34fb
  Value=020600002A

  [6]
  UUID=00002a00-0000-1000-8000-00805f9b34fb
  Value=4578616D706C6520446576696365


CCC file format
======================

The ccc file stores the current CCC descriptor values for GATT characteristics
which have notification/indication enabled by the remote device.

Information is stored using CCC attribute handle as group name (in decimal
format).

Each group contains:

  Value			String		CCC descriptor value encoded in
					hexadecimal


Cache directory file format
============================

Each file, named by remote device address, may includes multiple groups
(General and ServiceRecords).

In ServiceRecords, SDP records are stored using their handle as key
(hexadecimal format).

[General] group contains:

  Name		String		Remote device friendly name

  ShortName	String		Remote device shortened name

[ServiceRecords] group contains

  <0x...>	String		SDP record as hexadecimal encoded
				string


Info file format
================

Info file may includes multiple groups (General, Device ID, Link key and
Long term key) related to a remote device.

[General] group contains:

  Name			String		Remote device friendly name

  Alias			String		Alias name

  Class			String		Device class in hexadecimal,
					i.e. 0x000000

  Appearance		String		Device appearance in hexadecimal,
					i.e. 0x0000

  SupportedTechnologies	List of		List of technologies supported by
			strings		device, separated by ";"
					Technologies can be BR/EDR or LE

  AddressType		String		An address can be "static" or "public"

  Trusted		Boolean		True if the remote device is trusted

  Blocked		Boolean		True if the remote device is blocked

  Services		List of		List of service UUIDs advertised by
			strings		remote in 128-bits UUID format,
					separated by ";"


[DeviceID] group contains:

  Source		Integer		Assigner of Device ID

  Vendor		Integer		Device vendor

  Product		Integer		Device product

  Version		Integer		Device version


[LinkKey] group contains:

  Key			String		Key in hexadecimal format

  Type			Integer		Type of link key

  PINLength		Integer		Length of PIN


[LongTermKey] group contains:

  Key			String		Long term key in hexadecimal format

  Authenticated		Boolean		True if remote device has been
					authenticated

  Master		Boolean		True for master key

  EncSize		Integer		Encrypted size

  EDiv			Integer		Encrypted diversifier

  Rand			Integer		Randomizer
