Provided by: bluez-alsa-utils_4.1.1-1build3_amd64 bug

NAME

       bluealsa - Bluetooth Audio ALSA Backend

SYNOPSIS

       bluealsa -p PROFILE [OPTION]...

DESCRIPTION

       bluealsa  is  a  Linux  daemon to give applications access to Bluetooth audio streams using the Bluetooth
       A2DP, HFP and/or HSP profiles.  It provides a D-Bus  API  to  applications,  and  can  be  used  by  ALSA
       applications via libasound plugins (see bluealsa-plugins(7) for details).

OPTIONS

       -h, --help
              Output a usage message and exit.

       -V, --version
              Output the version number and exit.

       -S, --syslog
              Send output to system logger (syslogd(8)).  By default, log output is sent to stderr.

       -B NAME, --dbus=NAME
              BlueALSA  D-Bus  service  name  suffix.   Without  this  option,  bluealsa  registers itself as an
              "org.bluealsa" D-Bus service.  For more information see the EXAMPLES below.

       -i hciX, --device=hciX
              HCI device to use. Can be specified multiple times to select  more  than  one  HCI.   Because  HCI
              numbering  can change after a system reboot, this option also accepts HCI MAC address for the hciX
              value, for example: --device=00:11:22:33:44:55

              Without this option, the default is to use all available HCI devices.

       -p NAME, --profile=NAME
              Enable NAME Bluetooth profile.  May be given multiple number of times to enable multiple profiles.

              It is mandatory to enable at least one Bluetooth profile.  For the list of supported profiles  see
              Profiles in the NOTES section below.

       -c NAME, --codec=NAME
              Enable or disable NAME Bluetooth audio codec.  May be given multiple number of times to enable (or
              disable) multiple codecs.

              In  order  to  disable  given  audio  codec  (remove  it  from the list of audio codecs enabled by
              default), the NAME has to be prefixed with - (minus) character.  It is not possible to disable SBC
              and CVSD codecs which are mandatory for A2DP and HFP/HSP respectively.

              By default BlueALSA enables SBC, AAC (if AAC support is  compiled-in),  CVSD  and  mSBC  (if  mSBC
              support  is  compiled-in).   For  the  list  of supported audio codecs see the "Available BT audio
              codecs" section of the bluealsa command-line help message.

       --initial-volume=NUM
              Set the initial volume to NUM % when a device is first connected.  NUM must be an integer  in  the
              range from 0 to 100.

              By  default  the  volume  of  all PCMs of a device is set to 100% (full volume) when the device is
              first connected. For some devices,  particularly  headphones,  this  can  lead  to  an  unpleasant
              experience.  This  option  allows the user to choose an alternative initial volume level. Only one
              value can be specified and each device on first connect will have the volume level of all its PCMs
              set to this value. However, a device with native volume control may then immediately override this
              level. On subsequent connects the volume will be  set  to  the  remembered  value  from  the  last
              disconnection.  See Volume control in the NOTES section below for more information.

       --keep-alive=SEC
              Keep Bluetooth transport alive for SEC number of seconds after streaming was closed.

              This  option  is  required  when  using bluealsa with applications that close and then immediately
              re-open the same PCM as part of their initialization; for  example  applications  built  with  the
              portaudio portability library and many other "portable" applications.

              It  can also be useful when playing short audio files in quick succession.  It will reduce the gap
              between playbacks caused by Bluetooth audio transport acquisition.

       --disable-realtek-usb-fix
              Since Linux kernel 5.14 Realtek USB adapters have required bluealsa to apply a fix for mSBC.  This
              option disables that fix and may be necessary when using an earlier kernel.

       --a2dp-force-mono
              Force monophonic sound for A2DP profile.

       --a2dp-force-audio-cd
              Force  44.1  kHz  sampling  frequency for A2DP profile.  Some Bluetooth devices can handle streams
              sampled at either 48kHz or 44.1kHz, in which case they normally default to using 48kHz.  With this
              option, bluealsa will request such a device uses only 44.1 kHz sample rate.

       --a2dp-volume
              Enable native A2DP volume control.   By  default  bluealsa  will  use  its  own  internal  scaling
              algorithm  to attenuate the volume.  This option disables that internal scaling and instead passes
              the volume change request to the A2DP device.  This feature can also be controlled during  runtime
              for  individual  PCMs  via  the  BlueALSA D-Bus API or by the BlueALSA ALSA plugins; and if so the
              changed setting will be remembered. See Volume  control  in  the  NOTES  section  below  for  more
              information.  Note that this feature might not work with all Bluetooth headsets.

       --sbc-quality=MODE
              Set SBC encoder quality.  Default value is high.

              The MODE can be one of:

              • low - low audio quality (mono: 114 kbps, stereo: 213 kbps)

              • medium - medium audio quality (mono: 132 kbps, stereo: 237 kbps)

              • high - high audio quality (mono: 198 kbps, stereo: 345 kbps)

              • xq - SBC Dual Channel HD (SBC XQ) (452 kbps)

              • xq+ - SBC Dual Channel HD (SBC XQ+) (551 kbps)

       --mp3-algorithm=TYPE
              Select LAME encoder internal algorithm.  Default value is expensive.

              The TYPE can be one of:

              • fast - OK quality, really fast

              • cheap - good quality, fast

              • expensive - near-best quality, not too slow

              • best - best quality, slow

              If  CPU  power  consumption  is  not an issue, one might safely select best as the algorithm type.
              Also, please note that the true quality is determined by the selected bit rate or used VBR quality
              option (--mp3-vbr-quality).

       --mp3-vbr-quality=MODE
              Set variable bit rate (VBR) quality.  Default value is standard.

              The MODE can be one of:

              • low - low audio quality (100-130 kbps)

              • medium - medium audio quality (140-185 kbps)

              • standard - standard audio quality (170-210 kbps)

              • high - high audio quality (190-250 kbps)

              • extreme - best audio quality, no low-pass filter (220-260 kbps)

       --aac-afterburner
              Enables Fraunhofer AAC afterburner feature, which is a type of analysis  by  synthesis  algorithm.
              This  feature  increases  the  audio quality at the cost of increased processing power and overall
              memory consumption.

       --aac-bitrate=BPS
              Set the target bit rate for constant bit rate (CBR) mode or the maximum peak bit rate for variable
              bit rate (VBR) mode.  Default value is 220000 bits per second.

       --aac-latm-version=NUM
              Select LATM syntax version used for AAC audio transport.  Default value is 1.

              The NUM can be one of:

              • 0 - LATM syntax specified by ISO-IEC 14496-3 (2001), should work with all older BT devices

              • 1 - LATM syntax specified by ISO-IEC 14496-3 (2005), should work with newer BT devices

       --aac-true-bps
              Enable true "bit per second" bit rate.

              A2DP AAC specification requires that for the constant bit rate (CBR) mode every RTP frame has  the
              same bit rate and for the variable bit rate (VBR) mode the maximum peak bit rate limit is also per
              RTP  frame.   However,  a  single  RTP frame does not contain a single full second of audio.  This
              option enables true bit rate calculation (per second), which means that per RTP frame bit rate may
              vary even for CBR mode.  This feature is not enabled by default,  because  it  violates  A2DP  AAC
              specification.   Enabling it should result in an enhanced audio quality, but will for sure produce
              fragmented RTP frames.  If RTP fragmentation is not supported by  used  A2DP  sink  device  (e.g.,
              headphones)  one might hear clearly audible clicks in the playback audio.  In such case, please do
              not enable this option.

       --aac-vbr
              Prefer variable bit rate mode over constant bit rate mode.

              Please note, that this option does not necessarily mean that the variable bit rate (VBR) mode will
              be used.  Used AAC configuration depends on a remote Bluetooth device capabilities.

       --lc3plus-bitrate=BPS
              Set LC3plus encoder bit rate for constant bit rate mode (CBR) as BPS.   Default  value  is  396800
              bits per second.

       --ldac-abr
              Enables  LDAC  adaptive  bit  rate,  which  will  dynamically  adjust encoder quality based on the
              connection stability.

       --ldac-quality=MODE
              Specifies LDAC encoder quality.  Default value is standard.

              The MODE can be one of:

              • mobile - mobile quality (44.1 kHz: 303 kbps, 48 kHz: 330 kbps)

              • standard - standard quality (44.1 kHz: 606 kbps, 48 kHz: 660 kbps)

              • high - high quality (44.1 kHz: 909 kbps, 48 kHz: 990 kbps)

       --xapl-resp-name=NAME
              Set the product name send in  the  XAPL  response  message.   By  default,  the  name  is  set  as
              "BlueALSA".   However, some devices (reported with e.g., Sony WM-1000XM4) will not provide battery
              level notification unless the product name is set as "iPhone".

NOTES

   Profiles
       bluealsa provides support for Bluetooth Advanced Audio Distribution Profile  (A2DP),  Hands-Free  Profile
       (HFP)  and Headset Profile (HSP).  A2DP profile is dedicated for streaming music (i.e., stereo, 48 kHz or
       more sampling frequency), while HFP and HSP for two-way  voice  transmission  (mono,  8  kHz  or  16  kHz
       sampling frequency).

       The  Bluetooth audio profiles are not peer-to-peer; they each have a source or gateway role (a2dp-source,
       hfp-ag, or hsp-ag) and a sink or target role (a2dp-sink, hfp-hf, hsp-hs). The source/gateway role is  the
       audio  player  (e.g.,  mobile  phone),  the  sink/target  role is the audio renderer (e.g., headphones or
       speaker). The bluealsa daemon can perform any combination of profiles and  roles,  although  it  is  most
       common to use it either as a source/gateway:

          bluealsa -p a2dp-source -p hfp-ag -p hsp-ag

       or as a sink/target:

          bluealsa -p a2dp-sink -p hfp-hf -p hsp-hs

       or with oFono for HFP support,

       source/gateway:

          bluealsa -p a2dp-source -p hfp-ofono -p hsp-ag

       sink/target:

          bluealsa -p a2dp-sink -p hfp-ofono -p hsp-hs

       With  A2DP, bluealsa always includes the mandatory SBC codec and may also include various optional codecs
       like AAC, aptX, and other.

       With HFP, bluealsa always includes the mandatory CVSD codec and may also include the optional mSBC codec.

       The full list of available optional codecs, which depends on selected compilation options, will be  shown
       with bluealsa command-line help message.

       The list of profile NAME-s accepted by the --profile=NAME option:

       • a2dp-source - Advanced Audio Source (streaming audio to connected device)

       • a2dp-sink - Advanced Audio Sink (receiving audio from connected device)

       • hfp-ofono - Hands-Free AG/HF handled by oFono

       • hfp-ag - Hands-Free Audio Gateway

       • hfp-hf - Hands-Free

       • hsp-ag Headset Audio Gateway

       • hsp-hs - Headset

       The  hfp-ofono  is  available only when bluealsa was compiled with oFono support. Enabling HFP over oFono
       will automatically disable hfp-hf and hfp-ag.

       BlueZ permits only one service to register the HSP and HFP profiles, and that  service  is  automatically
       registered with every HCI device.

       For  the  A2DP  profile,  BlueZ  allows each HCI device to be registered to a different service, so it is
       possible to have multiple instances of bluealsa offering A2DP support, each with a  unique  service  name
       given  with  the  --dbus=  option,  so  long  as  they  are registered to different HCI devices using the
       --device= option. See the EXAMPLES below.

       A profile connection does not immediately initiate the audio stream(s); audio  can  only  flow  when  the
       profile  transport  is  "acquired".  Acquisition  can  only be performed by the source/gateway role. When
       acting as source/gateway, bluealsa acquires the profile transport (i.e., initiates the audio  connection)
       when  a  client  opens  a  PCM. When bluealsa is acting as target, a client can open a PCM as soon as the
       profile is connected, but the audio stream(s) will not begin until the remote source/gateway has acquired
       the transport.

   Volume control
       The Bluetooth specifications for HFP and HSP include optional support for volume control of the target by
       the gateway device. For A2DP, volume control is  optionally  provided  by  the  AVRCP  profile.  bluealsa
       provides  a  single,  consistent, abstracted interface for volume control of PCMs. This interface can use
       the native Bluetooth features or alternatively bluealsa also implements its own internal volume  control,
       called  "soft-volume".  For A2DP the default is to use soft-volume, but this can be overridden to use the
       Bluetooth native support where available by using the --a2dp-volume command line option. For HFP/HSP  the
       default is to use Bluetooth native volume control.

       When  using  soft-volume,  bluealsa  scales PCM samples before encoding, and after decoding, and does not
       interact with the Bluetooth AVRCP volume property or HFP/HSP volume control. Volume can only be  modified
       by  local  clients. (Note that Bluetooth headphones or speakers with their own volume controls will still
       be able to alter their own volume, but this change will not be notified to bluealsa local  clients,  they
       will only see the soft-volume setting).

       When  using  native volume control, bluealsa links the PCM volume setting to the AVRCP volume property or
       HFP/HSP volume control. No scaling of PCM samples is applied.  Volume  can  be  modified  by  both  local
       clients  and the remote device.  Local clients will be notified of volume changes made by controls on the
       remote device.

       A2DP native volume control does not permit independent values for left and  right  channels,  so  when  a
       client sets such values bluealsa will set the Bluetooth volume as the average of the two channels.

       Volume  level,  mute  status,  and  soft-volume selection can all be controlled for each PCM by using the
       D-Bus API (or by using ALSA plugins, see bluealsa-plugins(7) for more information). The current value  of
       these  settings for each PCM is stored in the filesystem so that the device can be disconnected and later
       re-connected without losing its volume settings.

       When a device is connected, the volume level of its PCMs is  set  according  to  the  following  criteria
       (highest priority first):

          1. saved value from previous connection of the device

          2. value set by the --initial-volume command line option

          3. 100%

       its mute status according to:

          1. saved value from previous connection

          2. false

       and its soft-volume status according to:

          1. saved value from previous connection

          2. false for SCO (i.e., use native volume control).

          3. false for A2DP if the --a2dp-volume command line option is given

          4. true for A2DP (i.e., use soft-volume control).

       When native volume control is enabled, then the remote device may also modify the volume level after this
       initial  setting.  Mute  and  soft-volume  are  implemented  locally by the bluealsa daemon and cannot be
       modified by the remote device.

       Note that bluealsa relies on support from BlueZ to implement native volume control for A2DP using  AVRCP,
       and  BlueZ  has  not  always provided robust support here. It is recommended to use BlueZ release 5.65 or
       later to be certain that native A2DP volume control will always be available  with  those  devices  which
       provide it.

FILES

       /etc/dbus-1/system.d/bluealsa.conf
              BlueALSA  service D-Bus policy file.  D-Bus will deny all access to the org.bluealsa service (even
              to root) unless permission is granted by a policy file. The default file permits only root to  own
              this service, and only members of the audio group to exchange messages with it.

       /var/lib/bluealsa/XX:XX:XX:XX:XX:XX
              BlueALSA  volume  persistent  state storage. Files are named after the Bluetooth device address to
              which they refer.

EXAMPLES

       Emulate Bluetooth headset with A2DP and HSP support:

          bluealsa -p a2dp-sink -p hsp-hs

       On systems with more than one HCI device, it is possible to expose different profiles  on  different  HCI
       devices.   A  system  with  three HCI devices might (for example) use hci0 for an A2DP sink service named
       "org.bluealsa.sink" and both hci1 and hci2 for an A2DP source service named "org.bluealsa.source".   Such
       a setup might be created as follows:

          bluealsa -B sink -i hci0 -p a2dp-sink &
          bluealsa -B source -i hci1 -i hci2 -p a2dp-source &

       Setup  like  this  will  also require a change to the BlueALSA D-Bus configuration file in order to allow
       connection with BlueALSA services with suffixed names.  Please add following lines to the BlueALSA  D-Bus
       policy:

          ...
          <allow send_destination="org.bluealsa.sink" />
          <allow send_destination="org.bluealsa.source" />
          ...

COPYRIGHT

       Copyright (c) 2016-2023 Arkadiusz Bokowy.

       The bluez-alsa project is licensed under the terms of the MIT license.

SEE ALSO

       bluealsa-aplay(1),    bluealsa-cli(1),    bluealsa-rfcomm(1),    bluetoothctl(1),    bluealsa-plugins(7),
       bluetoothd(8)

       Project web site
              https://github.com/arkq/bluez-alsa

BlueALSA v4.1.1                                   January 2023                                       BLUEALSA(8)