项目作者: pastleo

项目描述 :
Workaround fixing no A2DP when BT headphone reconnects automatically (after being paired)
高级语言: Ruby
项目地址: git://github.com/pastleo/fix-bt-a2dp.git
创建时间: 2019-02-05T01:40:03Z
项目社区:https://github.com/pastleo/fix-bt-a2dp

开源协议:MIT License

下载


Workaround fixing no A2DP when BT headphone reconnects automatically (after being paired)

updated 2019/03/30: This workaround might be no longer needed

I found bluez-git has upgraded to the version that this issue no longer exists (5.50.r295.g9e6da22ed-1 > 5.50-264-g750a26cd9)

Now we can remove this and install bluez-git:

  1. yay -R fix-bt-a2dp
  2. rm /etc/.fix-bt-a2dp.device-profiles /etc/.fix-bt-a2dp.user
  3. yay -S bluez-git

after installing bluez-git, please check out my comments below…there is a problem I have to fixed manually.

Original README.md below


On my ArchLinux KDE plasma setup, BT headphone will use A2DP only when connected by pairing; after disconnect and reconnect, only HSP/HFP is available

According to https://github.com/EHfive/pulseaudio-modules-bt/issues/14#issuecomment-462039332, this should soon become unnecessary

this workaround deploys a udev-rules to detect changes of BT dev and systemctl start fix-bt-a2dp to call fix-bt-a2dp.rb in background with correct user

basically a rewrite from https://gist.github.com/EHfive/c4f1218a75f95b076f0387403246de78, mainly because I want to avoid slowing down connecting of other BT devs

Usage

install this AUR first:

  1. yay -S fix-bt-a2dp

run this command with root to set GUI session owner:

  1. /usr/bin/fix-bt-a2dp set-user [user]

When used with pulseaudio-modules-bt

recently pulseaudio-modules-bt has added codec name after a2dp_sink profile, and pacmd list-cards tells that my MDR-1ABT only supports AptX…so I finally came up with a solution by telling fix-bt-a2dp what profile should be used for a device manually…(so fix-bt-a2dp will set card profile to what you assigned when connected)

  1. bluetoothctl devices
  2. # => Device 10:4F:A8:CE:DB:D2 MDR-1ABT
  3. fix-bt-a2dp set-device-profile MDR-1ABT a2dp_sink_ldac
  4. # currently known profiles are
  5. # a2dp_sink_sbc a2dp_sink_aac a2dp_sink_aptx a2dp_sink_aptx_hd a2dp_sink_ldac