org.bluez.GattDescriptor

title: org.bluez.GattDescriptor(5)

text:
# org.bluez.GattDescriptor(5)

## NAME
org.bluez.GattDescriptor - BlueZ D-Bus GattDescriptor API documentation

## DESCRIPTION
GATT local/server and remote/client descriptor attribute representation share the same high-level D-Bus API.

Local/Server refers to GATT based descriptors exported by a plugin or an external application.

Remote/Client refers to GATT descriptors exported by the peer.

## INTERFACE

### Client
Service

org.bluez

Interface

org.bluez.GattDescriptor1

Object path

[variable prefix]/{hci0,hci1,...}/dev_XX_XX_XX_XX_XX_XX/serviceXX/charYYYY/descriptorZZZ

### Server
Service

unique name

Interface

org.bluez.GattDescriptor1

Object path

freely definable

### array{byte} ReadValue(dict flags)
Issues a request to read the value of the descriptor and returns the value if the operation was successful. Possible options:

uint16 offset

Read start offset in bytes.

object device (server only)

Device object.

string link

Link type (Server only). Possible values:

BR/EDR

LE

Possible Errors:

org.bluez.Error.Failed

org.bluez.Error.InProgress

org.bluez.Error.NotPermitted

org.bluez.Error.NotAuthorized

org.bluez.Error.NotSupported

### void WriteValue(array{byte} value, dict flags)
Issues a request to write the value of the descriptor. Possible flags:

uint16 offset

Write start offset in bytes.

uint16 mtu

Exchanged MTU (Server only).

object device

Device path (Server only).

string link

Link type (Server only). Possible values:

BR/EDR

LE

boolean prepare-authorize

True if prepare authorization request.

Possible Errors:

org.bluez.Error.Failed

org.bluez.Error.InProgress

org.bluez.Error.NotPermitted

org.bluez.Error.InvalidValueLength

org.bluez.Error.NotAuthorized

org.bluez.Error.NotSupported

org.bluez.Error.ImproperlyConfigured

### string UUID [read-only]
128-bit descriptor UUID.

### object Characteristic [read-only]
Object path of the GATT characteristic the descriptor belongs to.

### array{byte} Value [read-only, optional]
The cached value of the descriptor. This property gets updated only after a successful read request, upon which a PropertiesChanged signal will be emitted.

### array{string} Flags [read-only]
Defines how the descriptor value can be used. Possible values:

read

write

encrypt-read

encrypt-write

encrypt-authenticated-read

encrypt-authenticated-write

secure-read (Server Only)

secure-write (Server Only)

authorize

### uint16 Handle [read-only] (Client Only)
Descriptor handle.

### uint16 Handle [read-write, optional] (Server Only)
Descriptor handle. When available in the server it would attempt to use to allocate into the database which may fail, to auto allocate the value 0x0000 shall be used which will cause the allocated handle to be set once registered.


org.bluez.GattManager

package: libbluez-devel

title: org.bluez.GattManager(5)

text:
# org.bluez.GattManager(5)

## NAME
org.bluez.GattManager - BlueZ D-Bus GattManager API documentation

## DESCRIPTION
GATT Manager allows external applications to register GATT services and profiles.

Registering a profile allows applications to subscribe to remote/client services.

Registering a service allows applications to publish a local/server GATT service, which then becomes available to remote devices. A GATT service is represented by a D-Bus object hierarchy where the root node corresponds to a service and the child nodes represent characteristics and descriptors that belong to that service. Each node must implement one of org.bluez.GattService(5), org.bluez.GattCharacteristic(5) or org.bluez.GattDescriptor(5) interfaces, based on the attribute it represents. Each node must also implement the standard D-Bus Properties interface to expose their properties. These objects collectively represent a GATT service definition.

To make service registration simple, bluetoothd(8) requires that all objects that belong to a GATT service be grouped under a D-Bus Object Manager that solely manages the objects of that service. Hence, the standard DBus.ObjectManager interface must be available on the root service path. An example application hierarchy containing two separate GATT services may look like this:

```
-> /com/example

  |   - org.freedesktop.DBus.ObjectManager

  |

  -> /com/example/service0

  | |   - org.freedesktop.DBus.Properties

  | |   - org.bluez.GattService1

  | |

  | -> /com/example/service0/char0

  | |     - org.freedesktop.DBus.Properties

  | |     - org.bluez.GattCharacteristic1

  | |

  | -> /com/example/service0/char1

  |   |   - org.freedesktop.DBus.Properties

  |   |   - org.bluez.GattCharacteristic1

  |   |

  |   -> /com/example/service0/char1/desc0

  |       - org.freedesktop.DBus.Properties

  |       - org.bluez.GattDescriptor1

  |

  -> /com/example/service1

    |   - org.freedesktop.DBus.Properties

    |   - org.bluez.GattService1

    |

   -> /com/example/service1/char0

        - org.freedesktop.DBus.Properties

        - org.bluez.GattCharacteristic1
```

When a service is registered, bluetoothd(8) will automatically obtain information about all objects using the service's Object Manager. Once a service has been registered, the objects of a service should not be removed. If bluetoothd(8) receives an InterfacesRemoved signal from a service's Object Manager, it will immediately unregister the service. Similarly, if the application disconnects from the bus, all of its registered services will be automatically unregistered. InterfacesAdded signals will be ignored.

## INTERFACE
Service

org.bluez

Interface

org.bluez.GattManager1

Object path

[variable prefix]/{hci0,hci1,...}

### void RegisterApplication(object application, dict options)
Registers a local GATT services hierarchy as described above (GATT Server) and/or GATT profiles (GATT Client). The application object path together with the D-Bus system bus connection ID define the identification of the application registering a GATT based service (org.bluez.GattService(5)) and/or profile (org.bluez.GattProfile(5)).

Possible errors:

org.bluez.Error.InvalidArguments

org.bluez.Error.AlreadyExists

### void UnregisterApplication(object application)
This unregisters the services and/or profiles that has been previously registered using RegisterApplication(). The object path parameter must match the same value that has been used on registration. Possible errors:

org.bluez.Error.InvalidArguments

org.bluez.Error.DoesNotExist


org.bluez.GattProfile

title: org.bluez.GattProfile(5)

text:
# org.bluez.GattProfile(5)

## NAME
org.bluez.GattProfile - BlueZ D-Bus GattProfile API documentation

## DESCRIPTION
Local profile (GATT client) instance. By registering this type of object an application effectively indicates support for a specific GATT profile and requests automatic connections to be established to devices supporting it.

## INTERFACE
Service

<application dependent>

Interface

org.bluez.GattProfile1

Object path

<application dependent>

### void Release()
This method gets called when the service daemon unregisters the profile. The profile can use it to do cleanup tasks. There is no need to unregister the profile, because when this method gets called it has already been unregistered.

### array{string} UUIDs [read-only]
128-bit GATT service UUIDs to auto connect.


org.bluez.GattService

title: org.bluez.GattService(5)

text:
# org.bluez.GattService(5)

## NAME
org.bluez.GattService - BlueZ D-Bus GattService API documentation

## DESCRIPTION
GATT local/server and remote/client services share the same high-level D-Bus API.

Local/Server refers to GATT based service exported by a plugin or an external application.

Remote/Client refers to GATT services exported by the peer.

## INTERFACE

### Client
Service

org.bluez

Interface

org.bluez.GattService1

Object path

[variable prefix]/{hci0,hci1,...}/dev_XX_XX_XX_XX_XX_XX/serviceXX

### Server
Service

unique name

Interface

org.bluez.GattService1

Object path

freely definable

### string UUID [read-only]
128-bit service UUID.

### boolean Primary [read-only]
Indicates whether or not this GATT service is a primary service. If false, the service is secondary.

### object Device [read-only, optional]
Object path of the Bluetooth device the service belongs to. Only present on services from remote devices.

### array{object} Includes [read-only, optional]
Array of object paths representing the included services of this service.

### uint16 Handle [read-only] (client only)
Service handle.

### uint16 Handle [read-write, optional] (Server Only)
Service handle. When available in the server it would attempt to use to allocate into the database which may fail, to auto allocate the value 0x0000 shall be used which will cause the allocated handle to be set once registered.


org.bluez.Input

title: org.bluez.Input(5)

summary: BlueZ D-Bus Input API documentation

text:
# org.bluez.Input(5)

## NAME
org.bluez.Input - BlueZ D-Bus Input API documentation

## INTERFACE
Service

org.bluez

Interface

org.bluez.Input1

Object path

[variable prefix]/{hci0,hci1,...}/dev_XX_XX_XX_XX_XX_XX

### string ReconnectMode [readonly]
Indicates the Connectability mode of the HID device as defined by the HID Profile specification, Section 5.4.2. This mode is based in the two properties HIDReconnectInitiate (see Section 5.3.4.6) and HIDNormallyConnectable (see Section 5.3.4.14) which define the following four possible values:

none

Device and host are not required to automatically restore the connection.

host

Bluetooth HID host restores connection.

device

Bluetooth HID device restores connection.

any

Bluetooth HID device shall attempt to restore the lost connection, but Bluetooth HID Host may also restore the connection.


org.bluez.LEAdvertisement

title: org.bluez.LEAdvertisement(5)

text:
# org.bluez.LEAdvertisement(5)

## NAME
org.bluez.LEAdvertisement - BlueZ D-Bus LEAdvertisement API documentation

## DESCRIPTION
Advertising packets are structured data which is broadcast on the LE Advertising channels and available for all devices in range. Because of the limited space available in LE Advertising packets, each packet's contents must be carefully controlled.

The service daemon acts as a store for the Advertisement Data which is meant to be sent. It constructs the correct Advertisement Data from the structured data and configured the kernel to send the correct advertisement.

## INTERFACE
Specifies the Advertisement Data to be broadcast and some advertising parameters. Properties which are not present will not be included in the data. Required advertisement data types will always be included. All UUIDs are 128-bit versions in the API, and 16 or 32-bit versions of the same UUID will be used in the advertising data as appropriate.

Service

org.bluez

Interface

org.bluez.LEAdvertisement1

Object path

freely definable

### void Release() [noreply]
This method gets called when the service daemon removes the Advertisement. A client can use it to do cleanup tasks. There is no need to call UnregisterAdvertisement() because when this method gets called it has already been unregistered.

### string Type [readonly]
Determines the type of advertising packet requested. Possible values:

broadcast

peripheral

### array{string} ServiceUUIDs [readonly, optional]
List of UUIDs to include in the "Service UUID" field of the Advertising Data.

### dict ManufacturerData [readonly, optional]
Manufacturer Data fields to include in the Advertising Data. Keys are the Manufacturer ID to associate with the data.

### array{string} SolicitUUIDs [readonly, optional]
List of UUIDs to include in the "Service Solicitation" field of the Advertising Data.

### dict ServiceData [readonly, optional]
Service Data elements to include in the Advertising Data. The keys are the UUID to associate with the data.

### dict Data [readonly, optional]
Advertising Data to include. Key is the advertising type and value is the data as byte array. Note: Types already handled by other properties shall not be used.

Possible values:

<type>

<byte array>

Example:

<Transport Discovery> <Organization Flags...> 0x26 0x01 0x01...

### array{string} ScanResponseServiceUUIDs [readonly, optional, experimental]
List of UUIDs to include in the "Service UUID" field of the Scan Response Data.

### dict ScanResponseManufacturerData [readonly, optional, experimental]
Manufacturer Data fields to include in the Scan Response Data. Keys are the Manufacturer ID to associate with the data.

### array{string} ScanResponseSolicitUUIDs [readonly, optional, experimental]
List of UUIDs to include in the "Service Solicitation" field of the Scan Response Data.

### dict ScanResponseServiceData [readonly, optional, experimental]
Service Data elements to include in the Scan Response Data. The keys are the UUID to associate with the data.

### dict ScanResponseData [readonly, optional, experimental]
Scan Response Data to include. Key is the advertising type and value is the data as byte array.

### bool Discoverable [readonly, optional]
Advertise as general discoverable. When present this will override adapter Discoverable property. Note: This property shall not be set when Type is set to "broadcast".

### uint16 DiscoverableTimeout [readonly, optional]
The discoverable timeout in seconds. A value of zero means that the timeout is disabled and it will stay in discoverable/limited mode forever. Note: This property shall not be set when Type is set to "broadcast".

### array{string} Includes [readonly, optional]
List of features to be included in the advertising packet. Possible values:

See org.bluez.LEAdvertisingManager(5) SupportedIncludes property.

### string LocalName [readonly, optional]
Local name to be used in the advertising report. If the string is too big to fit into the packet it will be truncated. If this property is available 'local-name' cannot be present in the Includes.

### uint16 Appearance [readonly, optional]
Appearance to be used in the advertising report. Possible values: as found on GAP Service.

### uint16 Duration [readonly, optional]
Rotation duration of the advertisement in seconds. If there are other applications advertising no duration is set the default is 2 seconds.

### uint16 Timeout [readonly, optional]
Timeout of the advertisement in seconds. This defines the lifetime of the advertisement.

### string SecondaryChannel [readonly, optional]
Secondary channel to be used. Primary channel is always set to "1M" except when "Coded" is set. Possible value:

1M (default)

2M

Coded

### uint32 MinInterval [readonly, optional]
Minimum advertising interval to be used by the advertising set, in milliseconds. Acceptable values are in the range [20ms, 10,485s]. If the provided MinInterval is larger than the provided MaxInterval, the registration will return failure.

### uint32 MaxInterval [readonly, optional]
Maximum advertising interval to be used by the advertising set, in milliseconds. Acceptable values are in the range [20ms, 10,485s]. If the provided MinInterval is larger than the provided MaxInterval, the registration will return failure.

### int16 TxPower [readonly, optional]
Requested transmission power of this advertising set. The provided value is used only if the "CanSetTxPower" feature is enabled on the org.bluez.LEAdvertisingManager(5). The provided value must be in range [-127 to +20], where units are in dBm.


org.bluez.LEAdvertisingManager

title: org.bluez.LEAdvertisingManager(5)

text:
# org.bluez.LEAdvertisingManager(5)

## NAME
org.bluez.LEAdvertisingManager - BlueZ D-Bus LEAvertisingManager API documentation

## INTERFACE
The Advertising Manager allows external applications to register Advertisement Data which should be broadcast to devices. Advertisement Data elements must follow the API for LE Advertisement Data described above.

Service

org.bluez

Interface

org.bluez.LEAdvertisingManager1

Object path

/org/bluez/{hci0,hci1,...}

### void RegisterAdvertisement(object advertisement, dict options)
Registers an advertisement object to be sent over the LE Advertising channel. The service must implement org.bluez.LEAdvertisement(5) interface. Possible errors:

org.bluez.Error.InvalidArguments

Indicates that the object has invalid or conflicting properties.

org.bluez.Error.AlreadyExists

Indicates the object is already registered.

org.bluez.Error.InvalidLength

Indicates that the data provided generates a data packet which is too long

org.bluez.Error.NotPermitted

Indicates the maximum number of advertisement instances has been reached.

### void UnregisterAdvertisement(object advertisement)
Unregisters an advertisement that has been previously registered using RegisterAdvertisement(). The object path parameter must match the same value that has been used on registration. Possible errors:

org.bluez.Error.InvalidArguments

org.bluez.Error.DoesNotExist

### byte ActiveInstances [readonly]
Number of active advertising instances.

### byte SupportedInstances [readonly]
Number of available advertising instances.

### array{string} SupportedIncludes [readonly]
List of supported system includes. Possible values:

tx-power

appearance

local-name

rsi

### array{string} SupportedSecondaryChannels [readonly]
List of supported Secondary channels. Secondary channels can be used to advertise with the corresponding PHY. Possible values:

1M

2M

Coded

### dict SupportedCapabilities [readonly]
Enumerates Advertising-related controller capabilities useful to the client. Possible Values:

byte MaxAdvLen

Max advertising data length

byte MaxScnRspLen

Max advertising scan response length

int16 MinTxPower

Min advertising tx power (dBm)

int16 MaxTxPower

Max advertising tx power (dBm)

### array{string} SupportedFeatures [readonly,optional]
List of supported platform features. If no features are available on the platform, the SupportedFeatures array will be empty. Possible values:

CanSetTxPower

Indicates whether platform can specify tx power on each advertising instance.

HardwareOffload

Indicates whether multiple advertising will be offloaded to the controller.


org.bluez.Media

title: org.bluez.Media(5)

summary: BlueZ D-Bus Media API documentation

text:
# org.bluez.Media(5)

## NAME
org.bluez.Media - BlueZ D-Bus Media API documentation

## INTERFACE
Service

org.bluez

Interface

org.bluez.Media1

Object path

[variable prefix]/{hci0,hci1,...}

### void RegisterEndpoint(object endpoint, dict properties)
Register a local end point to sender, the sender can register as many end points as it likes. Note: If the sender disconnects the end points are automatically unregistered.

possible properties:

string UUID

UUID of the profile which the endpoint is for. UUID must be in the list of SupportedUUIDS.

byte Codec

Assigned number of codec that the endpoint implements. The values should match the profile specification which is indicated by the UUID.

uint32_t Vendor [Optional]

Vendor-specific Company ID, Codec ID tuple that the endpoint implements. It shall be set to appropriate value when Vendor Specific Codec (0xff) is used.

array{byte} Capabilities

Capabilities blob, it is used as it is so the size and byte order must match.

array{byte} Metadata [Optional]

Metadata blob, it is used as it is so the size and byte order must match.

Possible Errors:

org.bluez.Error.InvalidArguments

org.bluez.Error.NotSupported

emitted when interface for the end-point is disabled

### void UnregisterEndpoint(object endpoint)
Unregister sender end point.

### void RegisterPlayer(object player, dict properties)
Register a media player object to sender, the sender can register as many objects as it likes. Object must implement at least org.mpris.MediaPlayer2.Player as defined in MPRIS 2.2 spec:

http://specifications.freedesktop.org/mpris-spec/latest/

Note: If the sender disconnects its objects are automatically unregistered.

Possible Errors:

org.bluez.Error.InvalidArguments

org.bluez.Error.NotSupported

### void UnregisterPlayer(object player)
Unregister sender media player.

### void RegisterApplication(object root, dict options)
Register endpoints an player objects within root object which must implement ObjectManager. The application object path together with the D-Bus system bus connection ID define the identification of the application.

Possible errors:

org.bluez.Error.InvalidArguments

org.bluez.Error.AlreadyExists

### void UnregisterApplication(object application)
This unregisters the services that has been previously registered. The object path parameter must match the same value that has been used on registration. Possible errors:

org.bluez.Error.InvalidArguments

org.bluez.Error.DoesNotExist

### array{string} SupportedUUIDs [readonly]
List of 128-bit UUIDs that represents the supported Endpoint registration.

### array{string} SupportedFeatures [readonly]
List of strings that represent supported special features. Possible values: tx-timestamping

Bluetooth TX timestamping in media stream sockets is supported by BlueZ and kernel. Applications may check kernel support for specific timestamp types via SIOCETHTOOL.


org.bluez.MediaAssistant

title: org.bluez.MediaAssistant(5)

text:
# org.bluez.MediaAssistant(5)

## NAME
org.bluez.MediaAssistant - BlueZ D-Bus MediaAssistant API documentation

## INTERFACE
Service

org.bluez

Interface

org.bluez.MediaAssistant1

Object path

/org/bluez/{hci0,hci1,...}/dev_{BDADDR}/src_{BDADDR}/sid#/bis#

### void Push(dict properties)
Send stream information to the remote device. dict properties

Indicate stream properties that will be sent to the peer.

Values:

array{byte} Metadata [ISO only]

See Metadata property.

dict QoS [ISO only]

See QoS property.

### string State [readonly]
Indicates the state of the assistant object. Possible values are: idle

assistant object was created for the stream

pending

assistant object was pushed (stream information was sent to the peer)

requesting

remote device requires Broadcast_Code

active

remote device started receiving stream

### array{byte} Metadata [readwrite, ISO Only, experimental]
Indicates stream Metadata.

### dict QoS [readwrite, ISO only, experimental]
Indicates stream QoS capabilities. Values:

byte Encryption

Indicates whether the stream is encrypted.

:array{byte} BCode

Indicates Broadcast_Code to decrypt stream.


org.bluez.MediaControl

title: org.bluez.MediaControl(5)

text:
# org.bluez.MediaControl(5)

## NAME
org.bluez.MediaControl - BlueZ D-Bus MediaControl API documentation

## INTERFACE
Service

org.bluez

Interface

org.bluez.MediaControl1

Object path

[variable prefix]/{hci0,hci1,...}/dev_XX_XX_XX_XX_XX_XX

### void Play() [Deprecated]
Resume playback.

### void Pause() [Deprecated]
Pause playback.

### void Stop() [Deprecated]
Stop playback.

### void Next() [Deprecated]
Next item.

### void Previous() [Deprecated]
Previous item.

### void VolumeUp() [Deprecated]
Adjust remote volume one step up

### void VolumeDown() [Deprecated]
Adjust remote volume one step down

### void FastForward() [Deprecated]
Fast forward playback, this action is only stopped when another method in this interface is called.

### void Rewind() [Deprecated]
Rewind playback, this action is only stopped when another method in this interface is called.

### object Player [readonly, optional]
Addressed Player object path.


org.bluez.MediaEndpoint

title: org.bluez.MediaEndpoint(5)

text:
# org.bluez.MediaEndpoint(5)

## NAME
org.bluez.MediaEndpoint - BlueZ D-Bus MediaEndpoint API documentation

## INTERFACE
Service

unique name (Server role) org.bluez (Client role)

Interface

org.bluez.MediaEndpoint1

Object path

freely definable (Server role) [variable prefix]/{hci0,hci1,...}/dev_XX_XX_XX_XX_XX_XX/sepX (Client role)

### void SetConfiguration(object transport, dict properties)
Set configuration for the transport. object transport

Configured transport object.

dict properties

Configured org.bluez.MediaTransport(5) properties.

For client role transport must be set with a server endpoint object which will be configured and the properties must contain the following properties:

array{byte} Capabilities [Mandatory]

See Capabilities property.

array{byte} Metadata [ISO only]

See Metadata property.

dict QoS [ISO only]

See org.bluez.MediaTransport(5) QoS property.

### array{byte} SelectConfiguration(array{byte} capabilities)
Select preferable configuration from the supported capabilities. Returns a configuration which can be used to setup a transport, see org.bluez.MediaTransport(5) for possible values.

Note: There is no need to cache the selected configuration since on success the configuration is send back as parameter of SetConfiguration.

### dict SelectProperties(dict capabilities)
Select BAP unicast configuration from the supported capabilities: object Endpoint

array{byte} Capabilities

array{byte} Metadata

uint32 Locations

uint32_t ChannelAllocation

dict QoS

byte Framing

byte PHY

uint16 MaximumLatency

uint32 MinimumDelay

uint32 MaximumDelay

uint32 PreferredMinimumDelay

uint32 PreferredMaximumDelay

See MediaEndpoint Properties for their possible values.

Returns a configuration which can be used to setup a transport:

array{byte} Capabilities

array{byte} Metadata [optional]

dict QoS

See SetConfiguration for their possible values.

Note: There is no need to cache the selected properties since on success the configuration is send back as parameter of SetConfiguration.

### void ClearConfiguration(object transport)
Clear transport configuration. Server role: [ISO only]

Close the stream associated with the given transport. If the path given is the path of this endpoint, all its streams are closed.

### void Reconfigure(dict properties)
[ISO only] Reconfigure a BAP unicast endpoint. This closes all existing streams of the endpoint, and restarts the configuration selection flow which e.g. triggers calls to SelectProperties allowing the sound server to modify the configuration.

The following arguments are taken in properties:

boolean Defer [optional]

If True, mark endpoint for reconfiguration, but postpone it until a non-deferred Reconfigure() operation is made on an endpoint of the same device. This is necessary to use when reconfiguring source and sink streams with the intention that they be combined into the same CIG, possibly forming bidirectional CIS.

### void Release()
This method gets called when the service daemon unregisters the endpoint. An endpoint can use it to do cleanup tasks. There is no need to unregister the endpoint, because when this method gets called it has already been unregistered.

### string UUID [readonly, optional]
UUID of the profile which the endpoint is for.

### byte Codec [readonly, optional]
Assigned number of codec that the endpoint implements. The values should match the profile specification which is indicated by the UUID.

### uint32_t Vendor [readonly, Optional]
Vendor-specific Company ID, Codec ID tuple that the endpoint implements. It shall be set to appropriate value when Vendor Specific Codec (0xff) is used.

### array{byte} Capabilities [readonly, optional]
Capabilities blob, it is used as it is so the size and byte order must match.

### array{byte} Metadata [readonly, Optional]
Metadata blob, it is used as it is so the size and byte order must match.

### object Device [readonly, optional]
Device object which the endpoint is belongs to.

### bool DelayReporting [readonly, optional]
Indicates if endpoint supports Delay Reporting.

### uint32 Locations [readonly, optional, ISO only, experimental]
Indicates endpoint supported locations.

### uint16 SupportedContext [readonly, optional, ISO only, experimental]
Indicates endpoint supported audio context.

### uint16 Context [readonly, optional, ISO only, experimental]
Indicates endpoint available audio context.

### dict QoS [readonly, optional, ISO only, experimental]
Indicates QoS capabilities. byte Framing

Indicates endpoint support framing. Possible Values:

0x00

Unframed PDUs supported.

0x01

Unframed PDUs not supported.

byte PHY

Indicates endpoint preferred PHY. Possible values:

bit 0

LE 1M preferred.

bit 1

LE 2M preferred.

bit 2

LE Coded preferred.

byte Retransmissions

Indicates endpoint preferred number of retransmissions.

uint16 MaximumLatency

Indicates endpoint maximum latency.

uint32 MinimumDelay

Indicates endpoint minimum presentation delay.

uint32 MaximumDelay

Indicates endpoint maximum presentation delay.

uint32 PreferredMinimumDelay

Indicates endpoint preferred minimum presentation delay.

uint32 PreferredMaximumDelay

Indicates endpoint preferred maximum presentation delay.


org.bluez.MediaFolder

title: org.bluez.MediaFolder(5)

text:
# org.bluez.MediaFolder(5)

## NAME
org.bluez.MediaFolder - BlueZ D-Bus MediaFolder API documentation

## INTERFACE
Service

unique name (Target role) org.bluez (Controller role)

Interface

org.bluez.MediaFolder1

Object path

freely definable (Target role) [variable prefix]/{hci0,hci1,...}/dev_XX_XX_XX_XX_XX_XX/playerX (Controller role)

### object Search(string value, dict filter)
Return a folder object containing the search result. To list the items found use the folder object returned and pass to ChangeFolder.

Possible Errors:

org.bluez.Error.NotSupported

org.bluez.Error.Failed

### array{objects, properties} ListItems(dict filter)
Return a list of items found Possible Errors:

org.bluez.Error.InvalidArguments

org.bluez.Error.NotSupported

org.bluez.Error.Failed

### void ChangeFolder(object folder)
Change current folder. Note: By changing folder the items of previous folder might be destroyed and have to be listed again, the exception is NowPlaying folder which should be always present while the player is active.

Possible Errors:

org.bluez.Error.InvalidArguments

org.bluez.Error.NotSupported

org.bluez.Error.Failed

### uint32 NumberOfItems [readonly]
Number of items in the folder

### string Name [readonly]
Folder name: Possible values:

/Filesystem/...

Filesystem scope

/NowPlaying/...

NowPlaying scope

Note: /NowPlaying folder might not be listed if player is stopped, folders created by Search are virtual so once another Search is perform or the folder is changed using ChangeFolder it will no longer be listed.

### Filters
uint32 Start

Offset of the first item. Default value: 0

uint32 End

Offset of the last item. Default value: NumbeOfItems

array{string} Attributes

Item properties that should be included in the list. Possible Values:

"title", "artist", "album", "genre", "number-of-tracks", "number", "duration" Default Value: All


org.bluez.MediaItem

title: org.bluez.MediaItem(5)

summary: BlueZ D-Bus MediaItem API documentation

text:
# org.bluez.MediaItem(5)

## NAME
org.bluez.MediaItem - BlueZ D-Bus MediaItem API documentation

## INTERFACE
Service

unique name (Target role) org.bluez (Controller role)

Interface

org.bluez.MediaItem1

Object path

freely definable (Target role) [variable prefix]/{hci0,hci1,...}/dev_XX_XX_XX_XX_XX_XX/playerX/itemX (Controller role)

### void Play()
Play item Possible Errors:

org.bluez.Error.NotSupported

org.bluez.Error.Failed

### void AddtoNowPlaying()
Add item to now playing list Possible Errors:

org.bluez.Error.NotSupported

org.bluez.Error.Failed

### object Player [readonly]
Player object path the item belongs to

### string Name [readonly]
Item displayable name

### string Type [readonly]
Item type Possible values: "video", "audio", "folder"

### string FolderType [readonly, optional]
Folder type. Possible values: "mixed", "titles", "albums", "artists"

Available if property Type is "Folder"

### boolean Playable [readonly, optional]
Indicates if the item can be played Available if property Type is "folder"

### dict Metadata [readonly]
Item metadata. Possible values:

string Title

Item title name Available if property Type is "audio" or "video"

string Artist

Item artist name Available if property Type is "audio" or "video"

string Album

Item album name Available if property Type is "audio" or "video"

string Genre

Item genre name Available if property Type is "audio" or "video"

uint32 NumberOfTracks

Item album number of tracks in total Available if property Type is "audio" or "video"

uint32 Number

Item album number Available if property Type is "audio" or "video"

uint32 Duration

Item duration in milliseconds Available if property Type is "audio" or "video"


org.bluez.MediaPlayer

title: org.bluez.MediaPlayer(5)

text:
# org.bluez.MediaPlayer(5)

## NAME
org.bluez.MediaPlayer - BlueZ D-Bus MediaPlayer API documentation

## INTERFACE
Service

org.bluez (Controller role)

Interface

org.bluez.MediaPlayer1

Object path

[variable prefix]/{hci0,hci1,...}/dev_XX_XX_XX_XX_XX_XX/playerX

### void Play()
Resume playback. Possible Errors:

org.bluez.Error.NotSupported

org.bluez.Error.Failed

### void Pause()
Pause playback. Possible Errors:

org.bluez.Error.NotSupported

org.bluez.Error.Failed

### void Stop()
Stop playback. Possible Errors:

org.bluez.Error.NotSupported

org.bluez.Error.Failed

### void Next()
Next item. Possible Errors:

org.bluez.Error.NotSupported

org.bluez.Error.Failed

### void Previous()
Previous item. Possible Errors:

org.bluez.Error.NotSupported

org.bluez.Error.Failed

### void FastForward()
Fast forward playback, this action is only stopped when another method in this interface is called. Possible Errors:

org.bluez.Error.NotSupported

org.bluez.Error.Failed

### void Rewind()
Rewind playback, this action is only stopped when another method in this interface is called. Possible Errors:

org.bluez.Error.NotSupported

org.bluez.Error.Failed

### void Press(byte avc_key)
Press a specific key to send as passthrough command. The key will be released automatically. Use Hold() instead if the intention is to hold down the key. Possible Errors:

org.bluez.Error.InvalidArguments

org.bluez.Error.NotSupported

org.bluez.Error.Failed

### void Hold(byte avc_key)
Press and hold a specific key to send as passthrough command. It is your responsibility to make sure that Release() is called after calling this method. The held key will also be released when any other method in this interface is called. Possible Errors:

org.bluez.Error.InvalidArguments

org.bluez.Error.NotSupported

org.bluez.Error.Failed

### void Release()
Release the previously held key invoked using Hold(). Possible Errors:

org.bluez.Error.NotSupported

org.bluez.Error.Failed

### string Equalizer [readwrite]
Indicates Player Equalizer setting. Possible values:

off

on

### string Repeat [readwrite]
Indicates Player Repeat setting. Possible values:

off

singletrack

alltracks

group

### string Shuffle [readwrite]
Indicates Player Suffle setting. Possible values:

off

alltracks

group

### string Scan [readwrite]
Indicates Player Scan setting. Possible values:

off

alltracks

group

### string Status [readonly]
Indicates Player Status setting. Possible status:

playing

stopped

paused

forward-seek

reverse-seek

error

### uint32 Position [readonly]
Playback position in milliseconds. Changing the position may generate additional events that will be sent to the remote device. When position is 0 it means the track is starting and when it's greater than or equal to track's duration the track has ended. Note that even if duration is not available in metadata it's possible to signal its end by setting position to the maximum uint32 value.

### dict Track [readonly]
Track metadata. Possible values:

string Title

Track title name

string Artist

Track artist name

string Album

Track album name

string Genre

Track genre name

uint32 NumberOfTracks

Number of tracks in total

uint32 TrackNumber

Track number

uint32 Duration

Track duration in milliseconds

string ImgHandle

[experimental] Track image handle, available and valid only during the lifetime of an OBEX BIP connection to the ObexPort.

### object Device [readonly]
Device object path.

### string Name [readonly]
Player name

### string Type [readonly]
Player type Possible values:

"Audio" "Video" "Audio Broadcasting" "Video Broadcasting"

### string Subtype [readonly]
Player subtype Possible values:

"Audio Book" "Podcast"

### boolean Browsable [readonly]
If present indicates the player can be browsed using MediaFolder interface. Possible values:

True

Supported and active

False

Supported but inactive

Note: If supported but inactive clients can enable it by using MediaFolder interface but it might interfere in the playback of other players.

### boolean Searchable [readonly]
If present indicates the player can be searched using MediaFolder interface. Possible values:

True

Supported and active

False

Supported but inactive

Note: If supported but inactive clients can enable it by using MediaFolder interface but it might interfere in the playback of other players.

### object Playlist
Playlist object path.

### uint16 ObexPort [readonly, experimental]
If present indicates the player can get cover art using BIP over OBEX on this PSM port.


org.bluez.MediaTransport

title: org.bluez.MediaTransport(5)

text:
# org.bluez.MediaTransport(5)

## NAME
org.bluez.MediaTransport - BlueZ D-Bus MediaTransport API documentation

## INTERFACE
Service

org.bluez

Interface

org.bluez.MediaTransport1

Object path

[variable prefix]/{hci0,hci1,...}/dev_XX_XX_XX_XX_XX_XX/fdX

### fd, uint16, uint16 Acquire()
Acquire transport file descriptor and the MTU for read and write respectively. Possible Errors:

org.bluez.Error.NotAuthorized

org.bluez.Error.Failed

### fd, uint16, uint16 TryAcquire()
Acquire transport file descriptor only if the transport is in "pending" state at the time the message is received by BlueZ. Otherwise no request will be sent to the remote device and the function will just fail with org.bluez.Error.NotAvailable. Possible Errors:

org.bluez.Error.NotAuthorized

org.bluez.Error.Failed

org.bluez.Error.NotAvailable

### void Release()
Releases file descriptor.

### void Select()
Applicable only for transports created by a broadcast sink. This moves the transport from 'idle' to 'broadcasting'. This allows the user to select which BISes he wishes to sync to via a 2 step process: 1) the user calls the method, changing the transport's state to broadcasting 2) the audio server detects that the transport is in the 'broadcasting' state and automatically acquires it Possible Errors:

org.bluez.Error.NotAuthorized

### void Unselect()
Applicable only for transports created by a broadcast sink. This moves the transport from 'broadcasting' or 'active' to 'idle'. This allows the user to terminate the sync to a BIS to via a 2 step process: 1) the user calls this method, changing the transport's state to idle 2) the audio server detects this event and releases the transport Possible Errors:

org.bluez.Error.NotAuthorized

### object Device [readonly]
Device object which the transport is connected to.

### string UUID [readonly]
UUID of the profile which the transport is for.

### byte Codec [readonly]
Assigned number of codec that the transport support. The values should match the profile specification which is indicated by the UUID.

### array{byte} Configuration [readonly]
Configuration blob, it is used as it is so the size and byte order must match.

### string State [readonly]
Indicates the state of the transport. Possible values are: idle

not streaming

pending

streaming but not acquired

broadcasting

streaming but not acquired, applicable only for transports created by a broadcast sink

active

streaming and acquired

### uint16 Delay [readwrite, optional]
Transport delay in 1/10 of millisecond, this property is only writeable when the transport corresponds to a sink endpoint and it was acquired by the sender.

### uint16 Volume [readwrite, optional]
Indicates volume level of the transport, this property is only writeable when the transport was acquired by the sender. Possible Values: 0-127 (A2DP)

0-255 (BAP)

### object Endpoint [readonly, optional, experimental]
Endpoint object which the transport is associated with.

### uint32 Location [readonly, ISO only, experimental]
Indicates transport Audio Location.

### array{byte} Metadata [readwrite, ISO Only, experimental]
Indicates transport Metadata.

### array{object} Links [readonly, optional, CIS only, experimental]
Linked transport objects which the transport is associated with.

### array{object} Links [readwrite, BIS only, experimental]
For a Broadcast Sink, the BIG sync procedure requires all desired streams to be enumerated from the start and it cannot be later reconfigured by adding or removing BISes. To avoid terminating and recreating the BIG sync everytime a new transport is selected for acquire, all transports selected via Transport.Select need to be linked together. When the first transport is acquired via Transport.Acquire, all links are included in the BIG sync command. An acquired transport will create and set fds for all its links. Then, each link needs to be acquired separately, to get the fd and start receiving audio.

### dict QoS [readwrite, optional, ISO only, experimental]
Only present when QoS is configured. Possible values for Unicast:

byte CIG

Indicates configured CIG. Possible values:

0x00 - 0xef

Valid ID range.

0xff

Auto allocate.

byte CIS

Indicates configured CIS. Possible values:

0x00 - 0xef

Valid ID range.

0xff

Auto allocate.

byte Framing

Indicates configured framing. Possible values:

0x00

Unframed.

0x01

Framed.

uint32 PresentationDelay

Indicates configured transport presentation delay (us).

byte TargetLatency

Indicates the requested target latency. Possible values:

0x01

Low Latency.

0x02

Balanced Latency/Reliability.

0x03

High Reliability.

Possible values for Broadcast:

byte BIG

Indicates configured QoS BIG.

byte BIS

Indicates configured BIS.

byte SyncFactor

Indicates configured broadcast sync factor.

byte Packing

Indicates configured packing.

byte Framing

Indicates configured framing.

array{byte} BCode

Indicates the string used for encryption/decryption.

byte encryption

Indicates if the stream is encrypted.

byte Options

Indicates configured broadcast options.

uint16 Skip

Indicates configured broadcast skip.

byte SyncTimeout

Indicates configured broadcast sync timeout.

byte SyncType

Indicates configured broadcast sync CTE type.

byte MSE

Indicates configured broadcast MSE.

uint16 Timeout

Indicates configured broadcast timeout.

Possible values for both Unicast and Broadcast:

uint32 Interval

Indicates configured ISO interval (us).

uint16 Latency

Indicates configured transport latency (ms).

uint16 SDU

Indicates configured maximum SDU.

byte PHY

Indicates configured PHY. Possible values:

bit 0

LE 1M

bit 1

LE 2M

bit 2

LE Coded

byte Retransmissions

Indicates configured retransmissions.


org.bluez.Network

title: org.bluez.Network(5)

summary: BlueZ D-Bus Network API documentation

text:
# org.bluez.Network(5)

## NAME
org.bluez.Network - BlueZ D-Bus Network API documentation

## INTERFACE
Service

org.bluez

Interface

org.bluez.Network1

Object path

[variable prefix]/{hci0,hci1,...}/dev_XX_XX_XX_XX_XX_XX

### string Connect(string uuid)
Connects to the network device and return the network interface name. Possible uuid values:

panu , 00001115-0000-1000-8000-00805f9b34fb

Personal Network User role.

nap , 00001116-0000-1000-8000-00805f9b34fb

Network Access Point role.

gn , 00001117-0000-1000-8000-00805f9b34fb

Group Network role.

The connection will be closed and network device released either upon calling Disconnect() or when the client disappears from the message bus.

Possible errors:

org.bluez.Error.InvalidArguments

org.bluez.Error.NotSupported

org.bluez.Error.InProgress

org.bluez.Error.Failed

### void Disconnect()
Disconnects from the network device. To abort a connection attempt in case of errors or timeouts in the client it is fine to call this method.

Possible errors:

org.bluez.Error.Failed

org.bluez.Error.NotConnected

### boolean Connected [readonly]
Indicates if the device is connected.

### string Interface [readonly, optional]
Indicates the network interface name when available.

### string UUID [readonly, optional]
Indicates the connection role when available.


org.bluez.NetworkServer

title: org.bluez.NetworkServer(5)

text:
# org.bluez.NetworkServer(5)

## NAME
org.bluez.NetworkServer - BlueZ D-Bus NetworkServer API documentation

## INTERFACE
Service

org.bluez

Interface

org.bluez.NetworkServer1

Object path

/org/bluez/{hci0,hci1,...}

### void Register(string uuid, string bridge)
Registers server for the provided UUID. Every new connection to this server will be added the bridge interface.

Possible uuid values:

panu , 00001115-0000-1000-8000-00805f9b34fb

Personal Network User role.

nap , 00001116-0000-1000-8000-00805f9b34fb

Network Access Point role.

gn , 00001117-0000-1000-8000-00805f9b34fb

Group Network role.

Initially no network server SDP is provided. Only after this method a SDP record will be available and the BNEP server will be ready for incoming connections.

Possible errors:

org.bluez.Error.InvalidArguments

org.bluez.Error.AlreadyExists

org.bluez.Error.Failed

### void Unregister(string uuid)
Unregisters the server for provided UUID which was previously registered with Register() method. All servers will be automatically unregistered when the calling application terminates.

Possible errors:

org.bluez.Error.InvalidArguments

org.bluez.Error.Failed


org.bluez.Profile

title: org.bluez.Profile(5)

summary: BlueZ D-Bus Profile API documentation

text:
# org.bluez.Profile(5)

## NAME
org.bluez.Profile - BlueZ D-Bus Profile API documentation

## INTERFACE
Service

unique name

Interface

org.bluez.Profile1

Object path

freely definable

### void Release() [noreply]
This method gets called when the service daemon unregisters the profile. A profile can use it to do cleanup tasks. There is no need to unregister the profile, because when this method gets called it has already been unregistered.

### void NewConnection(object device, fd, dict fd_properties)
This method gets called when a new service level connection has been made and authorized. Possible fd_properties values:

uint16 Version [optional]

Profile version.

uint16 Features [optional]

Profile features.

Possible errors:

org.bluez.Error.Rejected

org.bluez.Error.Canceled


org.bluez.ProfileManager

title: org.bluez.ProfileManager(5)

text:
# org.bluez.ProfileManager(5)

## NAME
org.bluez.ProfileManager - BlueZ D-Bus ProfileManager API documentation

## INTERFACE
Service

org.bluez

Interface

org.bluez.ProfileManager1

Object path

/org/bluez

### void RegisterProfile(object profile, string uuid, dict options)
Registers profile agent. The object path defines the path of the profile that will be called when there is a connection and must implement org.bluez.Profile(5) interface.

If an application disconnects from the bus all its registered profiles will be removed.

Possible uuid values:

0000111f-0000-1000-8000-00805f9b34fb

HFP AG, default profile Version is 1.7, profile Features is 0b001001 and RFCOMM channel is 13. Authentication is required.

0000111e-0000-1000-8000-00805f9b34fb

HFP HS, default profile Version is 1.7, profile Features is 0b000000 and RFCOMM channel is 7. Authentication is required.

00001112-0000-1000-8000-00805f9b34fb

HSP AG, default profile Version is 1.2, RFCOMM channel is 12 and Authentication is required. Does not support any Features, option is ignored.

00001108-0000-1000-8000-00805f9b34fb

HSP HS, default profile Version is 1.2, profile Features is 0b0 and RFCOMM channel is 6. Authentication is required. Features is one bit value, specify capability of Remote Audio Volume Control (by default turned off).

<vendor UUID>

Vendor defined UUID, no defaults, must set options.

Possible options values:

string Name

Human readable name for the profile

string Service

The primary service class UUID (if different from the actual profile UUID).

string Role

For asymmetric profiles that do not have UUIDs available to uniquely identify each side this parameter allows specifying the precise local role. Possible values:

client

server

uint16 Channel

RFCOMM channel number that is used for client and server UUIDs. If applicable it will be used in the SDP record as well.

uint16 PSM

PSM number that is used for client and server UUIDs. If applicable it will be used in the SDP record as well.

boolean RequireAuthentication

Pairing is required before connections will be established. No devices will be connected if not paired.

boolean RequireAuthorization

Request authorization before any connection will be established.

boolean AutoConnect

In case of a client UUID this will force connection of the RFCOMM or L2CAP channels when a remote device is connected.

string ServiceRecord

Provide a manual SDP record.

uint16 Version

Profile version (for SDP record)

uint16 Features

Profile features (for SDP record)

Possible errors:

org.bluez.Error.InvalidArguments

org.bluez.Error.AlreadyExists

### void UnregisterProfile(object profile)
Unregisters profile object that has been previously registered using RegisterProfile. The object path parameter must match the same value that has been used on registration.

Possible errors:

org.bluez.Error.DoesNotExist


org.bluez.obex.Agent

title: org.bluez.obex.Agent(5)

text:
# org.bluez.obex.Agent(5)

## NAME
org.bluez.obex.Agent - BlueZ D-Bus OBEX Agent API documentation

## INTERFACE
Service

unique name

Interface

org.bluez.obex.Agent1

Object path

freely definable

### void Release()
This method gets called when obexd(8) daemon unregisters the agent. An agent can use it to do cleanup tasks. There is no need to unregister the agent, because when this method gets called it has already been unregistered.

### string AuthorizePush(object transfer)
This method gets called when the obexd(8) needs to accept/reject a Bluetooth object push request. Returns the full path (including the filename) or the folder name suffixed with '/' where the object shall be stored.

The transfer object, see org.bluez.obex.Transfer(5) will contain a Filename property that contains the default location and name that can be returned.

Possible errors:

org.bluez.obex.Error.Rejected

org.bluez.obex.Error.Canceled

### void Cancel()
This method gets called to indicate that the agent request failed before a reply was returned. It cancels the previous request.


org.bluez.obex.AgentManager

title: org.bluez.obex.AgentManager(5)

text:
# org.bluez.obex.AgentManager(5)

## NAME
org.bluez.obex.AgentManager - BlueZ D-Bus OBEX AgentManager API documentation

## INTERFACE
Service

org.bluez.obex

Interface

org.bluez.obex.AgentManager1

Object path

/org/bluez/obex

### void RegisterAgent(object agent)
Registers an agent, which must implement org.bluez.obex.Agent(5), to request authorization of the user to accept/reject objects. Object push service needs to authorize each received object.

Possible errors:

org.bluez.obex.Error.AlreadyExists

### void UnregisterAgent(object agent)
Unregisters the agent that has been previously registered using RegisterAgent(). The object path parameter must match the same value that has been used on registration. Possible errors:

org.bluez.obex.Error.DoesNotExist


org.bluez.obex.Client

title: org.bluez.obex.Client(5)

text:
# org.bluez.obex.Client(5)

## NAME
org.bluez.obex.Client - BlueZ D-Bus OBEX Client API documentation

## INTERFACE
Service

org.bluez.obex

Interface

org.bluez.obex.Client1

Object path

/org/bluez/obex

### object CreateSession(string destination, dict args)
Connects to the destination address and then proceed to create an OBEX session object which implements org.bluez.obex.Session(5) interface. The last parameter is a dictionary to hold optional or type-specific parameters.

Possible args values:

string Target

Type of session to be created. Possible values:

ftp

map

opp

pbap

sync

bip-avrcp

string Source

Local address to be used.

byte Channel

Channel to be used.

uint16 PSM

L2CAP PSM to be used.

Possible errors:

org.bluez.obex.Error.InvalidArguments

org.bluez.obex.Error.Failed

### void RemoveSession(object session)
Disconnects and removes session previously created by CreateSession() aborting any pending transfers. Possible errors:

org.bluez.obex.Error.InvalidArguments

org.bluez.obex.Error.NotAuthorized


org.bluez.obex.FileTransfer

title: org.bluez.obex.FileTransfer(5)

text:
# org.bluez.obex.FileTransfer(5)

## NAME
org.bluez.obex.FileTransfer - BlueZ D-Bus OBEX FileTransfer API documentation

## INTERFACE
Service

org.bluez.obex

Interface

org.bluez.obex.FileTransfer1

Object path

[Session object path]

### void ChangeFolder(string folder)
Changes the current folder of the remote device. Possible errors:

org.bluez.obex.Error.InvalidArguments

org.bluez.obex.Error.Failed

### void CreateFolder(string folder)
Creates a new folder in the remote device. Possible errors:

org.bluez.obex.Error.InvalidArguments

org.bluez.obex.Error.Failed

### array{dict} ListFolder()
Returns a dictionary containing information about the current folder content. Possible return values:

string Name

Object name in UTF-8 format.

string Type

Either "folder" or "file".

uint64 Size

Object size or number of items in folder.

string Permission

Group, owner and other permission.

uint64 Modified

Last change.

uint64 Accessed

Last access.

uint64 Created

Creation date.

Possible errors:

org.bluez.obex.Error.Failed

### object, dict GetFile(string targetfile, string sourcefile)
Copies the contents of the source file (from remote device) to the target file (on local filesystem). If an empty target file is given, a name will be automatically generated for the temporary file.

The returned path represents the newly created transfer, which should be used to find out if the content has been successfully transferred or if the operation fails.

The properties of this transfer are also returned along with the object path, to avoid a call to GetProperties, see org.bluez.obex.Transfer(5) for the possible list of properties.

Possible errors:

org.bluez.obex.Error.InvalidArguments

org.bluez.obex.Error.Failed

### object, dict PutFile(string sourcefile, string targetfile)
Copies the contents of the source file (from local filesystem) to the target file (on remote device). The returned path represents the newly created transfer, which should be used to find out if the content has been successfully transferred or if the operation fails.

The properties of this transfer are also returned along with the object path, to avoid a call to GetProperties, see org.bluez.obex.Transfer(5) for the possible list of properties.

Possible errors:

org.bluez.obex.Error.InvalidArguments

org.bluez.obex.Error.Failed

### void CopyFile(string sourcefile, string targetfile)
Copies the contents from source file to target file on the remote device. Possible errors:

org.bluez.obex.Error.InvalidArguments

org.bluez.obex.Error.Failed

### void MoveFile(string sourcefile, string targetfile)
Moves a file within the remote device from source file to the target file. Possible errors:

org.bluez.obex.Error.InvalidArguments

org.bluez.obex.Error.Failed

### void Delete(string file)
Deletes the specified file/folder. Possible errors:

org.bluez.obex.Error.InvalidArguments

org.bluez.obex.Error.Failed


org.bluez.obex.Image

title: org.bluez.obex.Image(5)

text:
# org.bluez.obex.Image(5)

## NAME
org.bluez.obex.Image - BlueZ D-Bus OBEX Image API documentation

## INTERFACE
Service

org.bluez.obex

Interface

org.bluez.obex.Image1 [experimental]

Object path

[Session object path]

### object, dict Get(string targetfile, string handle, dict description)
Retrieves the image corresponding to the handle and the description, as one of the descriptions retrieved by GetImageProperties, and store it in a local file. If the "transform" property description exists it should be set to one of the value listed by GetImageProperties for this description.

If description is an empty dict, the native image will be retrieved.

Possible errors:

org.bluez.obex.Error.InvalidArguments

org.bluez.obex.Error.Failed

### array{dict} Properties(string handle)
Retrieves the image properties corresponding to the handle. The first dict entry is mandatory and correspond to 'handle' and 'name' of the image.

The second dict entry is mandatory and correspond to the native description ('type':'native') of the image.

The following dict entries are optional and correspond to variant descriptions of the image. If the 'transform' entry exists in the description, it lists the available possible image transformations and should be set to one of them before using the description as parameter to GetImage.

Possible property values:

string type

Type of dict properties. Mandatory for each dict. Possible values:

native

variant

string encoding

File encoding format. Possible values:

BMP

GIF

JPEG

JPEG2000

PNG

WBMP

string pixel

File encoding format size of form "<width>*<height>".

uint64 size

File size.

uint64 maxsize

File maximum size.

string transformation

List of available transformations separated by space. Possible values:

crop

fill

stretch

Possible errors:

org.bluez.obex.Error.InvalidArguments

org.bluez.obex.Error.Failed

### object, dict GetThumbnail(string targetfile, string handle)
Retrieves the image thumbnail corresponding to the handle and store it in a local file. Possible errors:

org.bluez.obex.Error.InvalidArguments

org.bluez.obex.Error.Failed


org.bluez.obex.Message

title: org.bluez.obex.Message(5)

text:
# org.bluez.obex.Message(5)

## NAME
org.bluez.obex.Message - BlueZ D-Bus OBEX Message API documentation

## INTERFACE
Service

org.bluez.obex

Interface

org.bluez.obex.Message1

Object path

[Session object path]/message{#}

### object, dict Get(string targetfile, boolean attachment)
Download message and store it in the target file. If an empty target file is given, a temporary file will be automatically generated.

The returned path represents the newly created transfer, which should be used to find out if the content has been successfully transferred or if the operation fails.

The properties of this transfer are also returned along with the object path, to avoid a call to GetProperties, see org.bluez.obex.Transfer(5) for the possible list of properties.

Possible errors:

org.bluez.obex.Error.InvalidArguments

org.bluez.obex.Error.Failed

### string Folder [readonly]
Folder which the message belongs to

### string Subject [readonly]
Message subject

### string Timestamp [readonly]
Message timestamp

### string Sender [readonly]
Message sender name

### string SenderAddress [readonly]
Message sender address

### string ReplyTo [readonly]
Message Reply-To address

### string Recipient [readonly]
Message recipient name

### string RecipientAddress [readonly]
Message recipient address

### string Type [readonly]
Message type Possible values:

email

sms-gsm

sms-cdma

mms

### uint64 Size [readonly]
Message size in bytes

### string Status [readonly]
Message reception status Possible values:

complete

fractioned

notification

### boolean Priority [readonly]
Message priority flag

### boolean Read [read/write]
Message read flag

### boolean Deleted [writeonly]
Message deleted flag

### boolean Sent [readonly]
Message sent flag

### boolean Protected [readonly]
Message protected flag

### string DeliveryStatus [readonly] [optional]
Message delivery status Possible values:

delivered

sent

unknown

### uint64 ConversationId [readonly] [required]
Message conversation id sent by Server Unique identification of the conversation

### string ConversationName [readonly] [optional]
Human readable name of the conversation

### string Direction [readonly] [required]
Indicate the direction of the message Possible values:

incoming

outgoing

outgoingdraft

outgoingpending

### string AttachmentMimeTypes [readonly] [optional]
MIME type of the attachment


org.bluez.obex.MessageAccess

title: org.bluez.obex.MessageAccess(5)

text:
# org.bluez.obex.MessageAccess(5)

## NAME
org.bluez.obex.MessageAccess - BlueZ D-Bus OBEX MessageAccess API documentation

## INTERFACE
Service

org.bluez.obex

Interface

org.bluez.obex.MessageAccess1

Object path

[Session object path]

### void SetFolder(string name)
Set working directory for current session. Possible name:

Directory name or '..[/dir]'.

Possible errors:

org.bluez.obex.Error.InvalidArguments

org.bluez.obex.Error.Failed

### array{dict} ListFolders(dict filter)
Returns a dictionary containing information about the current folder content. Possible filter:

uint16 Offset (default 0)

Offset of the first item.

uint16 MaxCount (default 1024)

Maximum number of items.

Possible return:

string Name

Folder name

Possible errors:

org.bluez.obex.Error.InvalidArguments

org.bluez.obex.Error.Failed

### array{string} ListFilterFields()
Return all available fields that can be used in Fields filter. Possible values:

subject

timestamp

sender

sender-address

recipient

recipient-address

type

size

status

text

attachment

priority

read

sent

protected

replyto

Possible errors: None

### array{object, dict} ListMessages(string folder, dict filter)
Returns an array containing the messages objects found in the given subfolder of the current folder, or in the current folder if folder is empty. Possible Filters:

uint16 Offset (default 0)

Offset of the first item.

uint16 MaxCount (default 1024):

Maximum number of items.

byte SubjectLength (default 256)

Maximum length of the Subject property in the message.

array{string} Fields

Message fields, default is all values. See ListFilterFields() for possible values.

array{string} Types

Filter messages by type. Possible values:

sms

email

mms

string PeriodBegin

Filter messages by starting period. Possible values:

Date in "YYYYMMDDTHHMMSS" format.

string PeriodEnd

Filter messages by ending period. Possible values:

Date in "YYYYMMDDTHHMMSS" format.

boolean Read

Filter messages by read flag. Possible values:

True for read or False for unread

string Recipient

Filter messages by recipient address.

string Sender

Filter messages by sender address.

boolean Priority

Filter messages by priority flag. Possible values:

True for high priority or False for non-high priority.

Each message is represented by an object path, which implements org.bluez.obex.Message(5) interface, followed by a dictionary of its properties.

void UpdateInbox(void)

Requests remote to update its inbox. Possible errors:

org.bluez.obex.Error.Failed

### object, dict PushMessage(string sourcefile, string folder, dict args)
Transfers a message (in bMessage format) to the remote device. The message is transferred either to the given subfolder of the current folder, or to the current folder if folder is empty.

Possible args: Transparent, Retry, Charset

The returned path represents the newly created transfer, which should be used to find out if the content has been successfully transferred or if the operation fails.

The properties of this transfer are also returned along with the object path, to avoid a call to GetProperties, see org.bluez.obex.Transfer(5) for the possible list of properties.

Possible errors:

org.bluez.obex.Error.InvalidArguments

org.bluez.obex.Error.Failed

### array{string} SupportedTypes [readonly]
List of supported message types. Possible values:

EMAIL

Email messages.

SMS_GSM

GSM short messages.

SMS_CDMA

CDMA short messages.

MMS

MMS messages.

IM

Instant messaging.


org.bluez.obex.ObjectPush

title: org.bluez.obex.ObjectPush(5)

text:
# org.bluez.obex.ObjectPush(5)

## NAME
org.bluez.obex.ObjectPush - BlueZ D-Bus OBEX ObjectPush API documentation

## INTERFACE
Service

org.bluez.obex

Interface

org.bluez.obex.ObjectPush1

Object path

[Session object path]

### object, dict SendFile(string sourcefile)
Sends local file to the remote device. The returned path represents the newly created transfer, which should be used to find out if the content has been successfully transferred or if the operation fails.

The properties of this transfer are also returned along with the object path, to avoid a call to GetProperties, see org.bluez.obex.Transfer(5) for the possible list of properties.

Possible errors:

org.bluez.obex.Error.InvalidArguments

org.bluez.obex.Error.Failed

### object, dict PullBusinessCard(string targetfile)
Request the business card from a remote device and store it in the local file. If an empty target file is given, a name will be automatically generated for the temporary file.

The returned path represents the newly created transfer, which should be used to find out if the content has been successfully transferred or if the operation fails.

The properties of this transfer are also returned along with the object path, to avoid a call to GetProperties, see org.bluez.obex.Transfer(5) for the possible list of properties.

Possible errors:

org.bluez.obex.Error.InvalidArguments

org.bluez.obex.Error.Failed

### object, dict ExchangeBusinessCards(string clientfile, string targetfile)
Push the client's business card to the remote device and then retrieve the remote business card and store it in a local file. If an empty target file is given, a name will be automatically generated for the temporary file.

The returned path represents the newly created transfer, which should be used to find out if the content has been successfully transferred or if the operation fails.

The properties of this transfer are also returned along with the object path, to avoid a call to GetProperties, see org.bluez.obex.Transfer(5) for the possible list of properties.

Possible errors:

org.bluez.obex.Error.InvalidArguments

org.bluez.obex.Error.Failed


org.bluez.obex.PhonebookAccess

title: org.bluez.obex.PhonebookAccess(5)

text:
# org.bluez.obex.PhonebookAccess(5)

## NAME
org.bluez.obex.PhonebookAccess - BlueZ D-Bus OBEX PhonebookAccess API documentation

## INTERFACE
Service

org.bluez.obex

Interface

org.bluez.obex.PhonebookAccess1

Object path

[Session object path]

### void Select(string location, string phonebook)
Selects the phonebook object for other operations. Should be call before all the other operations. Possible location values:

int , internal (default)

Store in the Internal memory.

sim{#}

Store in the sim number.

Possible phonebook values:

pb

Store as contact.

ich

Store as incoming call.

och

Store as outgoing call.

mch

Store as missing call.

cch

Store as a combination of incoming, outgoing and missing call.

"spd":

Store as speed dials entry ( only for "internal" )

"fav":

Store as favorites entry ( only for "internal" )

Possible errors:

org.bluez.obex.Error.InvalidArguments

org.bluez.obex.Error.Failed

### object, dict PullAll(string targetfile, dict filters)
Returns the entire phonebook object from the PSE server in plain string with vcard format, and store it in a local file. If an empty target file is given, a name will be automatically generated for the temporary file.

The returned path represents the newly created transfer, which should be used to find out if the content has been successfully transferred or if the operation fails.

The properties of this transfer are also returned along with the object path, to avoid a call to GetProperties, see org.bluez.obex.Transfer(5) for the possible list of properties.

Possible filters:

string Format

Items vcard format. Possible values:

vcard21 (default)

vcard30

string Order

Items order. Possible values:

indexed

alphanumeric

phonetic

uint16 Offset (default 0)

Offset of the first item.

uint16 MaxCount (default 65535)

Maximum number of items.

array{string} Fields (default all fields)

Item vcard fields. See ListFilterFields() for possible values.

array{string} FilterAll

Filter items by fields using AND logic, cannot be used together with FilterAny. See ListFilterFields() for possible values.

array{string} FilterAny

Filter items by fields using OR logic, cannot be used together with FilterAll. See ListFilterFields() for possible values.

bool ResetNewMissedCalls

Reset new the missed calls items, shall only be used for folders mch and cch.

Possible errors:

org.bluez.obex.Error.InvalidArguments

org.bluez.obex.Forbidden

### array{string vcard, string name} List(dict filters)
Returns array of vcard-listing data where every entry consists of a pair of strings containing the vcard handle and the contact name. For example: 1.vcf

"John"

Possible filters:

string Order

Contact order. Possible values:

indexed

alphanumeric

phonetic

uint16 Offset

Start offset.

uint16 MaxCount

Maximum number of contacts.

Possible errors:

org.bluez.obex.Error.InvalidArguments

org.bluez.obex.Forbidden

### object, dict Pull(string vcard, string targetfile, dict filters)
Retrieves the vcard in the current phonebook object and store it in a local file. If an empty target file is given, a name will be automatically generated for the temporary file.

The returned path represents the newly created transfer, which should be used to find out if the content has been successfully transferred or if the operation fails.

The properties of this transfer are also returned along with the object path, to avoid a call to GetProperties, see org.bluez.obex.Transfer(5) for the possible list of properties.

Possible filters:

string Format

Contact data format. Possible values:

vcard21

vcard30

array{string} Fields

See ListFilterFields() for possible values.

Possible errors:

org.bluez.obex.Error.InvalidArguments

org.bluez.obex.Error.Forbidden

org.bluez.obex.Error.Failed

### array{string vcard, string name} Search(string field, string value, dict filters)
Searches for entries matching the given condition and return an array of vcard-listing data where every entry consists of a pair of strings containing the vcard handle and the contact name. Possible field values:

name (default)

Search by name.

number

Search by number.

sound

Search by sound.

value: the string value to search for

Possible filters:

string Order

Contact order. Possible values:

indexed

alphanumeric

phonetic

uint16 Offset

Start offset.

uint16 MaxCount

Maximum number of contacts.

Possible errors:

org.bluez.obex.Error.InvalidArguments

org.bluez.obex.Error.Forbidden

org.bluez.obex.Error.Failed

### uint16 GetSize()
Returns the number of entries in the selected phonebook object that are actually used (i.e. indexes that correspond to non-NULL entries). Possible errors:

org.bluez.obex.Error.Forbidden

org.bluez.obex.Error.Failed

### void UpdateVersion()
Attempts to update PrimaryCounter and SecondaryCounter. Possible errors:

org.bluez.obex.Error.NotSupported

org.bluez.obex.Error.Forbidden

org.bluez.obex.Error.Failed

### array{string} ListFilterFields()
Returns all Available fields that can be used in Fields filter. Possible return:

VERSION

FN

N

PHOTO

BDAY

ADR

LABEL

TEL

EMAIL

MAILER

TZ

GEO

TITLE

ROLE

LOGO

AGENT

ORG

NOTE

REV

SOUND

URL

UID

KEY

NICKNAME

CATEGORIES

PROID

CLASS

SORT-STRING

X-IRMC-CALL-DATETIME

X-BT-SPEEDDIALKEY

X-BT-UCI

X-BT-UID

BIT-{#}

Possible errors: None

### string Folder [readonly]
Current folder.

### string DatabaseIdentifier [readonly, optional]
128 bits persistent database identifier. Possible values:

32-character hexadecimal such as A1A2A3A4B1B2C1C2D1D2E1E2E3E4E5E6

### string PrimaryCounter [readonly, optional]
128 bits primary version counter. Possible values:

32-character hexadecimal such as A1A2A3A4B1B2C1C2D1D2E1E2E3E4E5E6

### string SecondaryCounter [readonly, optional]
128 bits secondary version counter. Possible values:

32-character hexadecimal such as A1A2A3A4B1B2C1C2D1D2E1E2E3E4E5E6

### bool FixedImageSize [readonly, optional]
Indicate support for fixed image size. Possible values:

True if image is JPEG 300x300 pixels otherwise False.


org.bluez.obex.Session

title: org.bluez.obex.Session(5)

text:
# org.bluez.obex.Session(5)

## NAME
org.bluez.obex.Session - BlueZ D-Bus OBEX Client API documentation

## INTERFACE
Service

org.bluez.obex

Interface

org.bluez.obex.Session1

Object path

/org/bluez/obex/server/session{#} or /org/bluez/obex/client/session{#}

### string GetCapabilities()
Get remote device capabilities. Possible errors:

org.bluez.obex.Error.NotSupported

org.bluez.obex.Error.Failed

### string Source [readonly]
Bluetooth adapter address

### string Destination [readonly]
Bluetooth device address

### byte Channel [readonly]
Bluetooth channel

### uint16 PSM [readonly]
Bluetooth L2CAP PSM

### string Target [readonly]
Target UUID

### string Root [readonly]
Root path


org.bluez.obex.Synchronization

title: org.bluez.obex.Synchronization(5)

text:
# org.bluez.obex.Synchronization(5)

## NAME
org.bluez.obex.Synchronization - BlueZ D-Bus OBEX Synchronization API documentation

## INTERFACE
Service

org.bluez.obex

Interface

org.bluez.obex.Synchronization1

Object path

[Session object path]

### void SetLocation(string location)
Sets the phonebook object store location for other operations. Should be called before all the other operations. Possible location:

int ( internal which is default )

Store in the interval memory.

sim{#}

Store in sim card number #.

Possible errors:

org.bluez.obex.Error.InvalidArguments

### object, dict GetPhonebook(string targetfile)
Retrieves an entire Phonebook Object store from remote device, and stores it in a local file. If an empty target file is given, a name will be automatically calculated for the temporary file.

The returned path represents the newly created transfer, which should be used to find out if the content has been successfully transferred or if the operation fails.

The properties of this transfer are also returned along with the object path, to avoid a call to GetProperties, see org.bluez.obex.Transfer(5) for the possible list of properties.

Possible errors:

org.bluez.obex.Error.InvalidArguments

org.bluez.obex.Error.Failed

### object, dict PutPhonebook(string sourcefile)
Sends an entire Phonebook Object store to remote device. The returned path represents the newly created transfer, which should be used to find out if the content has been successfully transferred or if the operation fails.

The properties of this transfer are also returned along with the object path, to avoid a call to GetProperties, see org.bluez.obex.Transfer(5) for the possible list of properties.

Possible errors:

org.bluez.obex.Error.InvalidArguments

org.bluez.obex.Error.Failed


org.bluez.obex.Transfer

title: org.bluez.obex.Transfer(5)

text:
# org.bluez.obex.Transfer(5)

## NAME
org.bluez.obex.Transfer - BlueZ D-Bus OBEX Transfer API documentation

## INTERFACE
Service

org.bluez.obex

Interface

org.bluez.obex.Transfer1

Object path

[Session object path]/transfer{#}

### void Cancel()
Cancels the current transference. Possible errors:

org.bluez.obex.Error.NotAuthorized

org.bluez.obex.Error.InProgress

org.bluez.obex.Error.Failed

### void Suspend()
Suspends transference. Possible errors:

org.bluez.obex.Error.NotAuthorized

org.bluez.obex.Error.NotInProgress

If transfer is still in with Status "queued".

### void Resume()
Resumes transference previously suspended with use of Suspend() method. Possible errors:

org.bluez.obex.Error.NotAuthorized

org.bluez.obex.Error.NotInProgress

If transfer is still in with Status "queued".

### string Status [readonly]
Indicates the current status of the transfer. Possible values:

queued

active

suspended

complete

error

### object Session [readonly]
The object path of the session the transfer belongs to.

### string Name [readonly, optional]
Name of the object being transferred. Either Name or Type or both will be present.

### string Type [readonly, optional]
Type of the object transferred being transferred. Either Name or Type or both will be present.

### uint64 Time [readonly, optional]
Time of the object being transferred if this is provided by the remote party.

### uint64 Size [readonly, optional]
Size of the object being transferred. If the size is unknown, then this property will not be present.

### uint64 Transferred [readonly, optional]
Number of bytes transferred. For transfers with Status set to "queued", this value will not be present.

### string Filename [readonly, optional]
Complete name of the file being received or sent. For incoming object push transaction, this will be the proposed default location and name. It can be overwritten by the AuthorizePush() in org.bluez.obex.Agent(5) and will be then updated accordingly.


cdb

package: libcdb-devel

title: cdb(5)

summary: Constant DataBase file format

text:
# cdb(5)

## NAME
cdb - Constant DataBase file format

## DESCRIPTION
A cdb database is a single file used to map `keys' to `values', having records of (key,value) pairs. File consists of 3 parts: toc (table of contents), data and index (hash tables).

Toc has fixed length of 2048 bytes, containing 256 pointers to hash tables inside index sections. Every pointer consists of position of a hash table in bytes from the beginning of a file, and a size of a hash table in entries, both are 4-bytes (32 bits) unsigned integers in little-endian form. Hash table length may have zero length, meaning that corresponding hash table is empty.

Right after toc section, data section follows without any alingment. It consists of series of records, each is a key length, value (data) length, key and value. Again, key and value length are 4-byte unsigned integers. Each next record follows previous without any special alignment.

After data section, index (hash tables) section follows. It should be looked to in conjunction with toc section, where each of max 256 hash tables are defined. Index section consists of series of hash tables, with starting position and length defined in toc section. Every hash table is a sequence of records each holds two numbers: key's hash value and record position inside data section (bytes from the beginning of a file to first byte of key length starting data record). If record position is zero, then this is an empty hash table slot, pointed to nowhere.

CDB hash function is

```
  hv = ((hv << 5) + hv) ^ c
```

for every single c byte of a key, starting with hv = 5381. Toc section indexed by (hv % 256), i.e. hash value modulo 256 (number of entries in toc section).

In order to find a record, one should: first, compute the hash value (hv) of a key. Second, look to hash table number hv modulo 256. If it is empty, then there is no such key exists. If it is not empty, then third, loop by slots inside that hash table, starting from slot with number hv divided by 256 modulo length of that table, or ((hv / 256) % htlen), searching for this hv in hash table. Stop search on empty slot (if record position is zero) or when all slots was probed (note cyclic search, jumping from end to beginning of a table). When hash value in question is found in hash table, look to key of corresponding record, comparing it with key in question. If them of the same length and equals to each other, then record is found, overwise, repeat with next hash table slot. Note that there may be several records with the same key.

## SEE ALSO
cdb(1), cdb(3).

## AUTHOR
The tinycdb package written by Michael Tokarev <mjt@corpit.ru>, based on ideas and shares file format with original cdb library by Dan Bernstein.

## LICENSE
Public domain.


crypt

package: libcrypt

title: crypt(5)

text:
# crypt(5)

## NAME
crypt — storage format for hashed passphrases and available hashing methods

## DESCRIPTION
The hashing methods implemented by crypt(3) are designed only to process user passphrases for storage and authentication; they are not suitable for use as general-purpose cryptographic hashes.

Passphrase hashing is not a replacement for strong passphrases. It is always possible for an attacker with access to the hashed passphrases to guess and check possible cleartext passphrases. However, with a strong hashing method, guessing will be too slow for the attacker to discover a strong passphrase.

All of the hashing methods use a “salt” to perturb the hash function, so that the same passphrase may produce many possible hashes. Newer methods accept longer salt strings. The salt should be chosen at random for each user. Salt defeats a number of attacks:

- It is not possible to hash a passphrase once and then test it against each account's stored hash; the hash calculation must be repeated for each account.

- It is not possible to tell whether two accounts use the same passphrase without successfully guessing one of the phrases.

- Tables of precalculated hashes of commonly used passphrases must have an entry for each possible salt, which makes them impractically large.

All of the hashing methods are also deliberately engineered to be slow; they use many iterations of an underlying cryptographic primitive to increase the cost of each guess. The newer hashing methods allow the number of iterations to be adjusted, using the “CPU time cost” parameter to crypt_gensalt(3). This makes it possible to keep the hash slow as hardware improves.

## FORMAT OF HASHED PASSPHRASES
All of the hashing methods supported by crypt(3) produce a hashed passphrase which consists of four components: prefix, options, salt, and hash. The prefix controls which hashing method is to be used, and is the appropriate string to pass to crypt_gensalt(3) to select that method. The contents of options, salt, and hash are up to the method. Depending on the method, the prefix and options components may be empty.

The setting argument to crypt(3) must begin with the first three components of a valid hashed passphrase, but anything after that is ignored. This makes authentication simple: hash the input passphrase using the stored passphrase as the setting, and then compare the result to the stored passphrase.

Hashed passphrases are always entirely printable ASCII, and do not contain any whitespace or the characters ‘:’, ‘;’, ‘*’, ‘!’, or ‘\’. (These characters are used as delimiters and special markers in the passwd(5) and shadow(5) files.)

The syntax of each component of a hashed passphrase is up to the hashing method. ‘$’ characters usually delimit components, and the salt and hash are usually encoded as numerals in base 64. The details of this base-64 encoding vary among hashing methods. The common “base64” encoding specified by RFC 4648 is usually not used.

## AVAILABLE HASHING METHODS
This is a list of all the hashing methods supported by crypt(3), in decreasing order of strength. Many of the older methods are now considered too weak to use for new passphrases. The hashed passphrase format is expressed with extended regular expressions (see regex(7)) and does not show the division into prefix, options, salt, and hash.

### yescrypt
yescrypt is a scalable passphrase hashing scheme designed by Solar Designer, which is based on Colin Percival's scrypt. Recommended for new hashes.

Prefix

"$y$"

Hashed passphrase format

\$y\$[./A-Za-z0-9]+\$[./A-Za-z0-9]{,86}\$[./A-Za-z0-9]{43}

Maximum passphrase length

unlimited

Hash size

256 bits

Salt size

up to 512 bits

CPU time cost parameter

1 to 11 (logarithmic)

### gost-yescrypt
gost-yescrypt uses the output from the yescrypt hashing method in place of a hmac message. Thus, the yescrypt crypto properties are superseded by the GOST R 34.11-2012 (Streebog) hash function with a 256 bit digest. This hashing method is useful in applications that need modern passphrase hashing methods, but require to rely on the cryptographic properties of GOST algorithms. The GOST R 34.11-2012 (Streebog) hash function has been published by the IETF as RFC 6986. Recommended for new hashes.

Prefix

"$gy$"

Hashed passphrase format

\$gy\$[./A-Za-z0-9]+\$[./A-Za-z0-9]{,86}\$[./A-Za-z0-9]{43}

Maximum passphrase length

unlimited

Hash size

256 bits

Salt size

up to 512 bits

CPU time cost parameter

1 to 11 (logarithmic)

### scrypt
scrypt is a password-based key derivation function created by Colin Percival, originally for the Tarsnap online backup service. The algorithm was specifically designed to make it costly to perform large-scale custom hardware attacks by requiring large amounts of memory. In 2016, the scrypt algorithm was published by IETF as RFC 7914.

Prefix

"$7$"

Hashed passphrase format

\$7\$[./A-Za-z0-9]{11,97}\$[./A-Za-z0-9]{43}

Maximum passphrase length

unlimited

Hash size

256 bits

Salt size

up to 512 bits

CPU time cost parameter

6 to 11 (logarithmic)

### bcrypt
A hash based on the Blowfish block cipher, modified to have an extra-expensive key schedule. Originally developed by Niels Provos and David Mazieres for OpenBSD and also supported on recent versions of FreeBSD and NetBSD, on Solaris 10 and newer, and on several GNU/*/Linux distributions.

Prefix

"$2b$"

Hashed passphrase format

\$2[abxy]\$[0-9]{2}\$[./A-Za-z0-9]{53}

Maximum passphrase length

72 characters

Hash size

184 bits

Salt size

128 bits

CPU time cost parameter

4 to 31 (logarithmic)

The alternative prefix "$2y$" is equivalent to "$2b$". It exists for historical reasons only. The alternative prefixes "$2a$" and "$2x$" provide bug-compatibility with crypt_blowfish 1.0.4 and earlier, which incorrectly processed characters with the 8th bit set.

### sha512crypt
A hash based on SHA-2 with 512-bit output, originally developed by Ulrich Drepper for GNU libc. Supported on Linux but not common elsewhere. Acceptable for new hashes. The default CPU time cost parameter is 5000, which is too low for modern hardware.

Prefix

"$6$"

Hashed passphrase format

\$6\$(rounds=[1-9][0-9]+\$)?[^$:\n]{1,16}\$[./0-9A-Za-z]{86}

Maximum passphrase length

unlimited

Hash size

512 bits

Salt size

6 to 96 bits

CPU time cost parameter

1000 to 999,999,999

### sha256crypt
A hash based on SHA-2 with 256-bit output, originally developed by Ulrich Drepper for GNU libc. Supported on Linux but not common elsewhere. Acceptable for new hashes. The default CPU time cost parameter is 5000, which is too low for modern hardware.

Prefix

"$5$"

Hashed passphrase format

\$5\$(rounds=[1-9][0-9]+\$)?[^$:\n]{1,16}\$[./0-9A-Za-z]{43}

Maximum passphrase length

unlimited

Hash size

256 bits

Salt size

6 to 96 bits

CPU time cost parameter

1000 to 999,999,999

### sha1crypt
A hash based on HMAC-SHA1. Originally developed by Simon Gerraty for NetBSD. Not as weak as the DES-based hashes below, but SHA1 is so cheap on modern hardware that it should not be used for new hashes.

Prefix

"$sha1"

Hashed passphrase format

\$sha1\$[1-9][0-9]+\$[./0-9A-Za-z]{1,64}\$[./0-9A-Za-z]{8,64}[./0-9A-Za-z]{32}

Maximum passphrase length

unlimited

Hash size

160 bits

Salt size

6 to 384 bits

CPU time cost parameter

4 to 4,294,967,295

### SunMD5
A hash based on the MD5 algorithm, with additional cleverness to make precomputation difficult, originally developed by Alec David Muffet for Solaris. Not adopted elsewhere, to our knowledge. Not as weak as the DES-based hashes below, but MD5 is so cheap on modern hardware that it should not be used for new hashes.

Prefix

"$md5"

Hashed passphrase format

\$md5(,rounds=[1-9][0-9]+)?\$[./0-9A-Za-z]{8}\${1,2}[./0-9A-Za-z]{22}

Maximum passphrase length

unlimited

Hash size

128 bits

Salt size

48 bits

CPU time cost parameter

4096 to 4,294,963,199

### md5crypt
A hash based on the MD5 algorithm, originally developed by Poul-Henning Kamp for FreeBSD. Supported on most free Unixes and newer versions of Solaris. Not as weak as the DES-based hashes below, but MD5 is so cheap on modern hardware that it should not be used for new hashes. CPU time cost is not adjustable.

Prefix

"$1$"

Hashed passphrase format

\$1\$[^$:\n]{1,8}\$[./0-9A-Za-z]{22}

Maximum passphrase length

unlimited

Hash size

128 bits

Salt size

6 to 48 bits

CPU time cost parameter

1000

### bsdicrypt (BSDI extended DES)
A weak extension of traditional DES, which eliminates the length limit, increases the salt size, and makes the time cost tunable. It originates with BSDI and is also available on at least NetBSD, OpenBSD, and FreeBSD due to the use of David Burren's FreeSec library. It is better than bigcrypt and traditional DES, but still should not be used for new hashes.

Prefix

"_"

Hashed passphrase format

_[./0-9A-Za-z]{19}

Maximum passphrase length

unlimited (ignores 8th bit)

Hash size

64 bits

Effective key size

56 bits

Salt size

24 bits

CPU time cost parameter

1 to 16,777,215 (must be odd)

### bigcrypt
A weak extension of traditional DES, available on some System V-derived Unixes. All it does is raise the length limit from 8 to 128 characters, and it does this in a crude way that allows attackers to guess chunks of a long passphrase in parallel. It should not be used for new hashes.

Prefix

""

(empty string)

Hashed passphrase format

[./0-9A-Za-z]{13,178}

Maximum passphrase length

128 characters (ignores 8th bit)

Hash size

up to 1024 bits

Effective key size

up to 896 bits

Salt size

12 bits

CPU time cost parameter

25

### descrypt (Traditional DES)
The original hashing method from Unix V7, based on the DES block cipher. Because DES is cheap on modern hardware, because there are only 4096 possible salts and 2**56 possible hashes, and because it truncates passphrases to 8 characters, it is feasible to discover any passphrase hashed with this method. It should only be used if you absolutely have to generate hashes that will work on an old operating system that supports nothing else.

Prefix

""

(empty string)

Hashed passphrase format

[./0-9A-Za-z]{13}

Maximum passphrase length

8 characters (ignores 8th bit)

Hash size

64 bits

Effective key size

56 bits

Salt size

12 bits

CPU time cost parameter

25

### NT
The hashing method used for network authentication in some versions of the SMB/CIFS protocol. Available, for cross-compatibility's sake, on FreeBSD. Based on MD4. Has no salt or tunable cost parameter. Like traditional DES, it is so weak that any passphrase hashed with this method is guessable. It should only be used if you absolutely have to generate hashes that will work on an old operating system that supports nothing else.

Prefix

"$3$"

Hashed passphrase format

\$3\$\$[0-9a-f]{32}

Maximum passphrase length

unlimited

Hash size

256 bits

Salt size

0 bits

CPU time cost parameter

1

## SEE ALSO
crypt(3), crypt_gensalt(3), getpwent(3), passwd(5), shadow(5), pam(8)

Niels Provos and David Mazieres, A Future-Adaptable Password Scheme, Proceedings of the 1999 USENIX Annual Technical Conference, https://www.usenix.org/events/usenix99/provos.html, June 1999.

Robert Morris and Ken Thompson, Password Security: A Case History, Communications of the ACM, 11, 22, http://wolfram.schneider.org/bsd/7thEdManVol2/password/password.pdf, 1979.