Skip to content

Instantly share code, notes, and snippets.

@mmoya
Forked from hxss/20-bt-auto-enable-a2dp.rules
Created February 28, 2018 15:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mmoya/1da81acb97a11de6e43d38dc714343b8 to your computer and use it in GitHub Desktop.
Save mmoya/1da81acb97a11de6e43d38dc714343b8 to your computer and use it in GitHub Desktop.
Udev service for temporary solve bug 92102 https://bugs.freedesktop.org/show_bug.cgi?id=92102
# /etc/udev/rules.d/20-bt-auto-enable-a2dp.rules
# hxss
SUBSYSTEM=="bluetooth", ACTION=="add", RUN+="/home/hxss/.config/scripts/xorg/bt-auto-enable-a2dp.sh"
#!/bin/sh
# Dependencies:
# * bluez-tools
# * expect
# * perl
function enable_a2dp() {
# run connect command in bluetoothctl and wait for resolve of services
expect <<< "
spawn bluetoothctl
send \"connect $mac\r\"
log_user 0
expect -re \".*Device $mac ServicesResolved: yes\"
"
# enable card in pulseaudio
pactl set-card-profile $pulsecard a2dp_sink
logger -p info "mac $mac enabled"
headsetname=`bt-device -l | perl -ne '/(.*) \('$mac'\)/ and print "$1\n"'`
notify-send 'Headset connected' "$headsetname" --icon=blueman-headset
}
function search_headsets() {
sleep 1
# in all added devices
for mac in `bt-device -l | perl -ne '/.*\((.*)\)/ and print "$1\n"'`
do
# search for connected device with AudioSink service
if [[ `bt-device -i $mac | perl -00 -ne '/.*Trusted: 1.*\n\s*Blocked: 0.*\n\s*Connected: 1\n\s*UUIDs: .*AudioSink.*/ and print "1\n"'` ]]; then
logger -p info "found mac: $mac"
# convert mac to pulse card name
pulsecard=`perl -pe 's/:/_/g' <<< "bluez_card.$mac"`
enable_a2dp
fi
done
echo "search done"
}
logger -p info "${BASH_SOURCE[0]}"
# get script owner name
user=`stat -c %U $0`
if [ "$user" == `whoami` ]; then
# if script runned by owner - start main function
search_headsets
elif [ "`w -hs $user`" ]; then
# else if user session exist(to prevent running on system startup) - run script from user
machinectl shell --uid=$user .host ${BASH_SOURCE[0]}
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment