Provided by: bluez-alsa-utils_4.2.0-1_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, HSP and/or  BLE-MIDI  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.

       --loglevel=LEVEL
              Set the priority level threshold for log messages. Only messages of the given level
              or higher are logged. The LEVELs are, in decreasing order:

              • error   - error conditions

              • warning - warning conditions

              • info - informational messages

              If bluealsa was built with debug enabled, then  an  additional,  lowest,  level  is
              available:

              • debug - debug messages

              If  this option is not given then the default is to use the lowest level (i.e., all
              messages are logged).

       -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, mSBC
              (if mSBC support is compiled-in) and LC3-SWB (if LC3-SWB 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.

       --io-rt-priority=NUM
              Set the FIFO scheduler real-time priority of the I/O threads to NUM.

              By  default  all  I/O  threads  run  at the same priority as the main thread.  This
              option allows the user to increase the priority of the I/O threads.   This  can  be
              useful when playing audio with a low latency requirement.

              It  is  recommended  to  use  this  option when using the HFP profile with the mSBC
              codec, as the Linux kernel does not provide any buffering for the mSBC SCO  socket.
              If  the  data are not read from the socket in time, the kernel will drop them. This
              can lead to lots of "Missing mSBC packets" warnings which will be audible as clicks
              in the audio.

              For more information about scheduling policies and priorities see sched(7).

       --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)

       --midi-advertisement
              Advertise BLE-MIDI service using Bluetooth LE advertising.

       --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), Headset Profile (HSP) and Bluetooth Low Energy MIDI  (BLE-MIDI).
       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).  BLE-MIDI, on the other hand, is used for transmitting MIDI messages
       over Bluetooth LE.

       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 and LC3-SWB codecs.

       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

       • midi - Bluetooth LE MIDI

       The hfp-ofono and midi profiles are available only when bluealsa was compiled respectively
       with oFono and BLE-MIDI support.

       Enabling  HFP  over  oFono  will  automatically  disable  hfp-hf  and hfp-ag.  Also, it is
       important to note that BlueZ permits only one service to register  the  HFP  profile,  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-2024 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