Imported Upstream version 1.0.0
[platform/upstream/iotivity.git] / resource / csdk / connectivity / src / bt_le_adapter / linux / README
1                  OIC GATT Transport Service for Linux
2                  ====================================
3
4 This is an IoTivity BLE adapter implementation of the OIC GATT
5 Transport specification for Linux.  It relies on the GATT and LE
6 advertisement functionality found in BlueZ 5.31 or better.  As of
7 BlueZ 5.31, the LE advertisement APIs are still considered
8 experimental, meaning specific steps must be taken to enable them for
9 that version of BlueZ, as described below.
10
11 LE advertisement support requires Linux kernel 4.1 better.  If a LE
12 peripheral won't be started, Linux kernel 3.19 is sufficient for LE
13 central-only use cases.
14
15 Enable LE Advertisement Support in BlueZ 5.31
16 ---------------------------------------------
17 1. Backport the advertising patch that was created after BlueZ 5.31
18 was released.  If you've cloned the BlueZ git repository this can be
19 achieved by cherry picking the patch as follows:
20
21         git clone git://git.kernel.org/pub/scm/bluetooth/bluez.git
22         cd bluez
23         git checkout 5.31
24         git cherry-pick c73c1002331b2c0de0eaf555b5f1d05149f9a3b0
25
26 Otherwise apply to BlueZ 5.31 the patch file found in the IoTivity
27 `extlibs/bluez' directory:
28
29         0001-core-advertising-Fix-using-wrong-instance-id.patch
30
31 2. Enable experimental APIs when building BlueZ 5.31, e.g.:
32
33         ./configure --enable-experimental ...
34
35 3. Enable experimental APIs at run-time by starting bluetoothd with
36    the "--experimental" command line flag.  If you've installed BlueZ
37    on a platform with Systemd support, this can be done by appending
38    "--experimental" to the [Service] ExecStart option in the
39    bluetooth.service unit file (e.g.
40    /lib/systemd/system/bluetooth.service).  If you're going to build
41    and install BlueZ from source often, you may want to patch the
42    `bluetooth.service.in' in your bluez source directory instead so
43    that you won't have to modify the unit file after installation:
44
45 diff --git a/src/bluetooth.service.in b/src/bluetooth.service.in
46 index 35e9457..368df4c 100644
47 --- a/src/bluetooth.service.in
48 +++ b/src/bluetooth.service.in
49 @@ -5,7 +5,7 @@ Documentation=man:bluetoothd(8)
50  [Service]
51  Type=dbus
52  BusName=org.bluez
53 -ExecStart=@libexecdir@/bluetoothd
54 +ExecStart=@libexecdir@/bluetoothd --experimental
55  NotifyAccess=main
56  #WatchdogSec=10
57  #Restart=on-failure