Upgrade bluez5_37 :Merge the code from private
[platform/upstream/bluez.git] / doc / mgmt-api.txt
index b4ddf77..b27990d 100644 (file)
@@ -23,7 +23,9 @@ Linux kernel v3.15    Version 1.5
 Linux kernel v3.16     Version 1.6
 Linux kernel v3.17     Version 1.7
 Linux kernel v3.19     Version 1.8
-Linux kernel v4.1      Version 1.9 (not yet released)
+Linux kernel v4.1      Version 1.9
+Linux kernel v4.2      Version 1.10
+Linux kernel v4.5      Version 1.11 (not yet released)
 
 Version 1.1 introduces Set Device ID command.
 
@@ -55,10 +57,19 @@ an extra setting for enabling SSP debug mode.
 Version 1.8 introduces Start Service Discovery command. It also adds new
 Long Term Key types for LE Secure Connection feature.
 
-Version 1.9 introduces a new static address setting and allows the usage
-of Set Fast Connectable when controller is powered off. The existing Set
-Advertising command gained an extra setting for enabling undirected
-connectable advertising.
+Version 1.9 introduces Read Local Out Of Band Extended, Data, Read Extended
+Controller Index List, Read Advertising Features, Add Advertising and Remove
+Advertising commands. It also introduces Extended Index Added, Extended Index
+Removed, Local Out Of Band Extended Data Updated, Advertising Added and
+Advertising Removed events. The existing Set Advertising command gained an
+extra setting for enabling undirected connectable advertising. It provides
+support for a new static address setting and allows the usage of Set Fast
+Connectable when controller is powered off.
+
+Version 1.10 does not introduce any new command or event. It extends the
+advertising feature to support 5 parallel advertising instances.
+
+Version 1.11 introduces Get Advertising Size Information command.
 
 
 Example
@@ -239,7 +250,7 @@ Read Controller Information Command
                                Name (249 Octets)
                                Short_Name (11 Octets)
 
-       This command is used to retreive the current state and basic
+       This command is used to retrieve the current state and basic
        information of a controller. It is typically used right after
        getting the response to the Read Controller Index List command
        or an Index Added event.
@@ -305,6 +316,15 @@ Set Powered Command
        switching the controller off will expire this timeout and
        disable discoverable.
 
+       Settings programmed via Set Advertising and Add/Remove
+       Advertising while the controller was powered off will be activated
+       when powering the controller on.
+
+       Switching the controller off will permanently cancel and remove
+       all advertising instances with a timeout set, i.e. time limited
+       advertising instances are not being remembered across power cycles.
+       Advertising Removed events will be issued accordingly.
+
        This command generates a Command Complete event on success or
        a Command Status event on failure.
 
@@ -377,7 +397,7 @@ Set Connectable Command
        and for LE controllers it changes the advertising type. For
        dual mode controllers it affects both settings.
 
-       For LE capable controllers the connectable setting takes affect
+       For LE capable controllers the connectable setting takes effect
        when advertising is enabled (peripheral) or when directed
        advertising events are received (central).
 
@@ -585,6 +605,10 @@ Set Low Energy Command
        In case the kernel subsystem does not support Low Energy or the
        controller does not either, the command will fail regardless.
 
+       Disabling LE support will permanently disable and remove all
+       advertising instances configured with the Add Advertising
+       command. Advertising Removed events will be issued accordingly.
+
        This command generates a Command Complete event on success or
        a Command Status event on failure.
 
@@ -738,8 +762,8 @@ Load Link Keys Command
 
        This command is used to feed the kernel with currently known
        link keys. The command does not need to be called again upon the
-       receiption of New Link Key events since the kernel updates its
-       list automatically.
+       receipt of New Link Key events since the kernel updates its list
+       automatically.
 
        The Debug_Keys parameter is used to tell the kernel whether to
        accept the usage of debug keys or not. The allowed values for
@@ -802,7 +826,7 @@ Load Long Term Keys Command
 
        This command is used to feed the kernel with currently known
        (SMP) Long Term Keys. The command does not need to be called
-       again upon the receiption of New Long Term Key events since the
+       again upon the receipt of New Long Term Key events since the
        kernel updates its list automatically.
 
        Possible values for the Address_Type parameter:
@@ -874,7 +898,7 @@ Get Connections Command
                                Address2 { }
                                ...
 
-       This command is used to retreive a list of currently connected
+       This command is used to retrieve a list of currently connected
        devices.
 
        Possible values for the Address_Type parameter:
@@ -999,7 +1023,7 @@ Pair Device Command
 
        This command is used to trigger pairing with a remote device.
        The IO_Capability command parameter is used to temporarily (for
-       this pairing event only) override the global IO Capaility (set
+       this pairing event only) override the global IO Capability (set
        using the Set IO Capability command).
 
        Possible values for the Address_Type parameter:
@@ -1026,7 +1050,7 @@ Pair Device Command
 
        To allow tracking of which resolvable random address changed
        into which identity address, the New Identity Resolving Key
-       event will be send before receiving Command Complete event
+       event will be sent before receiving Command Complete event
        for this command.
 
        This command can only be used when the controller is powered.
@@ -1467,7 +1491,7 @@ Block Device Command
                                Address_Type (1 Octet)
 
        This command is used to add a device to the list of devices
-       which should be blocked from being connect to the local
+       which should be blocked from being connected to the local
        controller.
 
        Possible values for the Address_Type parameter:
@@ -1475,7 +1499,7 @@ Block Device Command
                1       LE Public
                2       LE Random
 
-       For Low Energy devices, the blocking of a device take presedence
+       For Low Energy devices, the blocking of a device takes precedence
        over auto-connection actions provided by Add Device. Blocked
        devices will not be auto-connected or even reported when found
        during background scanning. If the controller is connectable
@@ -1543,11 +1567,11 @@ Set Device ID Command
 
                0x0000  Disable Device ID
                0x0001  Bluetooth SIG
-               0x0002  USB Implementers Forum
+               0x0002  USB Implementer's Forum
 
-       The information are put into the EIR data. If the controller does
+       The information is put into the EIR data. If the controller does
        not support EIR or if SSP is disabled, this command will still
-       succeed. The information are stored for later use and will survive
+       succeed. The information is stored for later use and will survive
        toggling SSP on and off.
 
        This command generates a Command Complete event on success or
@@ -1576,7 +1600,7 @@ Set Advertising Command
 
        Using value 0x01 means that when connectable setting is disabled,
        the advertising happens with undirected non-connectable advertising
-       packets and a non-resovable random address is used. If connectable
+       packets and a non-resolvable random address is used. If connectable
        setting is enabled, then undirected connectable advertising packets
        and the identity address or resolvable private address are used.
 
@@ -1592,8 +1616,12 @@ Set Advertising Command
        The value 0x02 should be the preferred mode of operation when
        implementing peripheral mode.
 
-       Using this command will temporarily deactive any configuration
+       Using this command will temporarily deactivate any configuration
        made by the Add Advertising command. This command takes precedence.
+       Once a Set Advertising command with value 0x00 is issued any
+       previously made configurations via Add/Remove Advertising, including
+       such changes made while Set Advertising was active, will be re-
+       enabled.
 
        A pre-requisite is that LE is already enabled, otherwise this
        command will return a "rejected" response.
@@ -1794,12 +1822,13 @@ Set Privacy Command
        discoverable and also when pairing is initiated.
 
        With value 0x02 the kernel will use privacy mode with resolvable
-       private address. In case the conroller is bondable and discoverable
-       the identity address is used. Also when pairing is initiated, the
-       connection will be established with the identity address.
+       private address. In case the controller is bondable and
+       discoverable the identity address is used. Also when pairing is
+       initiated, the connection will be established with the identity
+       address.
 
        Exposing the identity address when bondable and discoverable or
-       during initated pairing can be a privacy issue. For dual-mode
+       during initiated pairing can be a privacy issue. For dual-mode
        controllers this can be neglected since its public address will
        be exposed over BR/EDR anyway. The benefit of exposing the
        identity address for pairing purposes is that it makes matching
@@ -1813,7 +1842,7 @@ Set Privacy Command
        When the controller has a public address (mandatory for dual-mode
        controllers) it is used as identity address. In case the controller
        is single mode LE only without a public address, it is required
-       to configure a static random andress first. The privacy mode can
+       to configure a static random address first. The privacy mode can
        only be enabled when an identity address is available.
 
        The Identity_Resolving_Key is the local key assigned for the local
@@ -1842,7 +1871,7 @@ Load Identity Resolving Keys Command
 
        This command is used to feed the kernel with currently known
        identity resolving keys. The command does not need to be called
-       again upon the receiption of New Identity Resolving Key events
+       again upon the receipt of New Identity Resolving Key events
        since the kernel updates its list automatically.
 
        Possible values for the Address_Type parameter:
@@ -2024,17 +2053,17 @@ Add Device Command
                2       Auto-connect remote device
 
        With the Action 0, when the device is found, a new Device Found
-       event will be send indicating this device is available. This
+       event will be sent indicating this device is available. This
        action is only valid for LE Public and LE Random address types.
 
        With the Action 1, the device is allowed to connect. For BR/EDR
        address type this means an incoming connection. For LE Public
        and LE Random address types, a connection will be established
        to devices using directed advertising. If successful a Device
-       Connected event will be send.
+       Connected event will be sent.
 
        With the Action 2, when the device is found, it will be connected
-       and if successful a Device Connected event will be send. This
+       and if successful a Device Connected event will be sent. This
        action is only valid for LE Public and LE Random address types.
 
        When a device is blocked using Block Device command, then it is
@@ -2097,7 +2126,7 @@ Load Connection Parameters Command
                                        Address (6 Octets)
                                        Address_Type (1 Octet)
                                        Min_Connection_Interval (2 Octets)
-                                       Max_Connection_Interval (2 Octes)
+                                       Max_Connection_Interval (2 Octets)
                                        Connection_Latency (2 Octets)
                                        Supervision_Timeout (2 Octets)
                                }
@@ -2167,7 +2196,7 @@ Read Controller Configuration Information Command
                                Supported_Options (4 Octets)
                                Missing_Options (4 Octets)
 
-       This command is used to retreive the supported configuration
+       This command is used to retrieve the supported configuration
        options of a controller and the missing configuration options.
 
        The missing options are required to be configured before the
@@ -2228,7 +2257,7 @@ Set External Configuration Command
        can be expected that it will be announced via Index Added event.
 
        Wrongly configured controllers might still cause an error when
-       trying to power them via Set Powered commmand.
+       trying to power them via Set Powered command.
 
        This command generates a Command Complete event on success or a
        Command Status event on failure.
@@ -2265,8 +2294,8 @@ Set Public Address Command
 
        For a fully configured controller, the current controller index
        will become invalid and an Unconfigured Index Removed event will
-       be send. Once the address has been successfully changed an Index
-       Added event will be send. There is no guarantee that the controller
+       be sent. Once the address has been successfully changed an Index
+       Added event will be sent. There is no guarantee that the controller
        index stays the same.
 
        All previous configured parameters and settings are lost when
@@ -2465,7 +2494,7 @@ Read Extended Controller Index List Command
                0x01    Unconfigured Controller (BR/EDR and/or LE)
                0x02    Alternate MAC/PHY Controller (AMP)
 
-       The 0x00 and 0x01 types indiciate a primary BR/EDR and/or LE
+       The 0x00 and 0x01 types indicate a primary BR/EDR and/or LE
        controller. The difference is just if they need extra configuration
        or if they are fully configured.
 
@@ -2556,7 +2585,7 @@ Read Advertising Features Command
        not be set.
 
        The Flags bit 5 indicates support for automatically adding the
-       Apperance value to the scan response data. Users of this flag
+       Appearance value to the scan response data. Users of this flag
        will decrease the Max_Scan_Rsp_len by 4 octets. The Appearance
        field will be added in front of the scan response data provided
        by the user. If the appearance value is not supported, then this
@@ -2581,7 +2610,7 @@ Read Advertising Features Command
        however might decrease the actual available length in these
        data fields.
 
-       With Num_Instances and Instance array the current occupied
+       With Num_Instances and Instance array the currently occupied
        Instance identifiers can be retrieved.
 
        This command generates a Command Complete event on success or
@@ -2610,9 +2639,11 @@ Add Advertising Command
        can be used to switch a Bluetooth Low Energy controller into
        advertising mode.
 
-       Added advertising information with this command will be ignored
-       when using the Set Advertising command to enable advertising. The
-       usage of Set Advertising command take precedence over this command.
+       Added advertising information with this command will not be visible
+       immediately if advertising is enabled via the Set Advertising
+       command. The usage of the Set Advertising command takes precedence
+       over this command. Instance information is stored and will be
+       advertised once advertising via Set Advertising has been disabled.
 
        The Instance identifier is a value between 1 and the number of
        supported instances. The value 0 is reserved.
@@ -2655,26 +2686,45 @@ Add Advertising Command
        broadcaster role.
 
        The Duration parameter configures the length of an Instance. The
-       value is in seconds and a value of 0 indicates an automatic choice
-       for the Duration. If only one advertising Instance has been added,
-       then the Duration value will be ignored. It only applies for the
-       case where multiple Instances are configured. In that case every
-       Instance will be available for the Duration time and after that
-       it switches to the next one. This is a simple round-robin based
-       approach.
+       value is in seconds.
+
+       A value of 0 indicates a default value is chosen for the
+       Duration. The default is 2 seconds.
+
+       If only one advertising Instance has been added, then the Duration
+       value will be ignored. It only applies for the case where multiple
+       Instances are configured. In that case every Instance will be
+       available for the Duration time and after that it switches to
+       the next one. This is a simple round-robin based approach.
 
        The Timeout parameter configures the life-time of an Instance. In
        case the value 0 is used it indicates no expiration time. If a
-       timeout value is provided, then the advertising Instace will be
+       timeout value is provided, then the advertising Instance will be
        automatically removed when the timeout passes. The value for the
        timeout is in seconds. Powering down a controller will invalidate
        all advertising Instances and it is not possible to add a new
        Instance with a timeout when the controller is powered down.
 
-       When a Timeout is provided, then the Duration substracts from
+       When a Timeout is provided, then the Duration subtracts from
        the actual Timeout value of that Instance. For example an Instance
-       with Timeout of 6 and Duration of 2 will be scheduled exactly 3
-       times. Other Instances have no influence on the Timeout.
+       with Timeout of 5 and Duration of 2 will be scheduled exactly 3
+       times, twice with 2 seconds and once with one second. Other
+       Instances have no influence on the Timeout.
+
+       Re-adding an already existing instance (i.e. issuing the Add
+       Advertising command with an Instance identifier of an existing
+       instance) will update that instance's configuration.
+
+       An instance being added or changed while another instance is
+       being advertised will not be visible immediately but only when
+       the new/changed instance is being scheduled by the round robin
+       advertising algorithm.
+
+       Changes to an instance that is currently being advertised will
+       cancel that instance and switch to the next instance. The changes
+       will be visible the next time the instance is scheduled for
+       advertising. In case a single instance is active, this means
+       that changes will be visible right away.
 
        A pre-requisite is that LE is already enabled, otherwise this
        command will return a "rejected" response.
@@ -2707,6 +2757,17 @@ Remove Advertising Command
        When the Instance parameter is zero, then all previously added
        advertising Instances will be removed.
 
+       Removing advertising information with this command will not be
+       visible as long as advertising is enabled via the Set Advertising
+       command. The usage of the Set Advertising command takes precedence
+       over this command. Changes to Instance information are stored and
+       will be advertised once advertising via Set Advertising has been
+       disabled.
+
+       Removing an instance while it is being advertised will immediately
+       cancel the instance, even when it has been advertised less then its
+       configured Timeout or Duration.
+
        This command can be used when the controller is not powered and
        all settings will be programmed once powered.
 
@@ -2717,6 +2778,91 @@ Remove Advertising Command
                                Invalid Index
 
 
+Get Advertising Size Information Command
+========================================
+
+       Command Code:           0x0040
+       Controller Index:       <controller id>
+       Command Parameters:     Instance (1 Octet)
+                               Flags (4 Octets)
+       Return Parameters:      Instance (1 Octet)
+                               Flags (4 Octets)
+                               Max_Adv_Data_Len (1 Octet)
+                               Max_Scan_Rsp_Len (1 Octet)
+
+       The Read Advertising Features command returns the overall maximum
+       size of advertising data and scan response data fields. That size is
+       valid when no Flags are used. However when certain Flags are used,
+       then the size might decrease. This command can be used to request
+       detailed information about the maximum available size.
+
+       The following Flags values are defined:
+
+               0       Switch into Connectable mode
+               1       Advertise as Discoverable
+               2       Advertise as Limited Discoverable
+               3       Add Flags field to Adv_Data
+               4       Add TX Power field to Adv_Data
+               5       Add Appearance field to Scan_Rsp
+               6       Add Local Name in Scan_Rsp
+
+       To get accurate information about the available size, the same Flags
+       values should be used with the Add Advertising command.
+
+       The Max_Adv_Data_Len and Max_Scan_Rsp_Len fields provide information
+       about the maximum length of the data fields for the given Flags
+       values. When the Flags field is zero, then these fields would contain
+       the same values as Read Advertising Features.
+
+       Possible errors:        Invalid Parameters
+                               Invalid Index
+
+
+Start Limited Discovery Command
+===============================
+
+       Command Code:           0x0041
+       Controller Index:       <controller id>
+       Command Parameters:     Address_Type (1 Octet)
+       Return Parameters:      Address_Type (1 Octet)
+
+       This command is used to start the process of discovering remote
+       devices using the limited discovery procedure. A Device Found event
+       will be sent for each discovered device.
+
+       Possible values for the Address_Type parameter are a bit-wise or
+       of the following bits:
+
+               0       BR/EDR
+               1       LE Public
+               2       LE Random
+
+       By combining these e.g. the following values are possible:
+
+               1       BR/EDR
+               6       LE (public & random)
+               7       BR/EDR/LE (interleaved discovery)
+
+       The limited discovery uses active scanning for Low Energy scanning
+       and will search for devices with the limited discoverability flag
+       configured. On BR/EDR it uses LIAC and filters on the limited
+       discoverability flag of the class of device.
+
+       When the discovery procedure starts the Discovery event will
+       notify this similar to Start Discovery.
+
+       This command can only be used when the controller is powered.
+
+       This command generates a Command Complete event on success
+       or failure.
+
+       Possible errors:        Busy
+                               Not Supported
+                               Invalid Parameters
+                               Not Powered
+                               Invalid Index
+
+
 Command Complete Event
 ======================
 
@@ -2839,7 +2985,7 @@ New Link Key Event
                                        PIN_Length (1 Octet)
                                }
 
-       This event indicates that a new link key has bee generated for a
+       This event indicates that a new link key has been generated for a
        remote device.
 
        The Store_Hint parameter indicates whether the host is expected
@@ -2865,7 +3011,7 @@ New Link Key Event
                0x07    Unauthenticated Combination key from P-256
                0x08    Authenticated Combination key from P-256
 
-       Receiving this event indicates that a pairing procecure has
+       Receiving this event indicates that a pairing procedure has
        been completed.
 
 
@@ -2913,7 +3059,7 @@ New Long Term Key Event
                0x03    Authenticated key from P-256
                0x04    Debug key from P-256
 
-       Receiving this event indicates that a pairing procecure has
+       Receiving this event indicates that a pairing procedure has
        been completed.
 
 
@@ -3218,7 +3364,7 @@ Device Unpaired Event
                2       LE Random
 
        For devices using resolvable random addresses with a known
-       identity resolving key, the event paramters will contain
+       identity resolving key, the event parameters will contain
        the identity. After receiving this event, the device will
        become essentially private again.
 
@@ -3396,7 +3542,7 @@ New Connection Parameter Event
                                        Address (6 Octets)
                                        Address_Type (1 Octet)
                                        Min_Connection_Interval (2 Octets)
-                                       Max_Connection_Interval (2 Octes)
+                                       Max_Connection_Interval (2 Octets)
                                        Connection_Latency (2 Octets)
                                        Supervision_Timeout (2 Octets)
                                }