-
Notifications
You must be signed in to change notification settings - Fork 2
/
headless-a2dp.sh
109 lines (99 loc) · 4.13 KB
/
headless-a2dp.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#!/bin/bash
## This is the automated script of Headless A2DP Audio for Raspberry Pi 3
## The original services and scripts were created by @mill1000
## Automation Script created by hahagu, UTC 2018-08-02
## Updating System
echo "Updating System"
sudo apt-get update
sudo apt-get upgrade -y
sudo rpi-update
## Set Name and etc
printf "\n"
echo "Bluetooth Workaround"
echo "This is recommended due to bugs with the integrated wifi."
echo "Option 1. Disable Onboard Bluetooth (Use dongle)"
echo "Option 2. Update BlueZ to 5.50 (Does not work on all cases!)"
echo "Option 3. Do Nothing"
read -p "Choose Option (1/2/3) " btansw
case ${btansw:0:1} in
1 )
## Disable Bluetooth
printf "\n"
echo "Disabling Internal Bluetooth"
printf "\n# Disable onboard Bluetooth\ndtoverlay=pi3-disable-bt" >> /boot/config.txt
sudo systemctl disable hciuart.service
;;
2 )
## Updating from source
printf "\n"
echo "Installing Prerequisites"
sudo apt install libdbus-1-dev libglib2.0-dev libudev-dev libical-dev libreadline-dev -y
echo "Downloading Source"
wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.50.tar.xz
echo "Extracting Source"
tar xvf bluez-5.50.tar.xz
cd bluez-5.50
echo "Configuring"
./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var --enable-experimental
echo "Compiling"
make -j4
echo "Installing"
sudo make install
sudo adduser pi bluetooth
sudo sed -i -e 's|<allow send_interface="org.bluez.Profile1"/>|<allow send_interface="org.bluez.Profile1"/>\n <allow send_interface="org.bluez.AlertAgent1"/>\n <allow send_interface="org.bluez.ThermometerWatcher1"/>\n <allow send_interface="org.bluez.HeartRateWatcher1"/>\n <allow send_interface="org.bluez.CyclingSpeedWatcher1"/>|g' /etc/dbus-1/system.d/bluetooth.conf
sudo sed -i -e 's|<allow send_interface="org.freedesktop.DBus.Properties"/>\n </policy>|<allow send_interface="org.freedesktop.DBus.Properties"/n </policy>\n\n <!-- allow users of bluetooth group to communicate -->\n <policy group="bluetooth">\n <allow send_destination="org.bluez"/>\n </policy>\n\n|g' /etc/dbus-1/system.d/bluetooth.conf
echo "Cleaning"
cd ..
rm -rf ./bluez-5.50*
;;
* )
printf "\n"
echo "Skipping.."
;;
esac
printf "\n"
echo "Device Name? Currently $(hostname) "
read btname
read -p "Do you want to set the name as $btname? (y/n) " nameansw
case ${nameansw:0:1} in
y|Y )
## Change Hostname
printf "\n"
echo "Changing Hostname"
sudo hostname $btname
sudo sed -i -e "s/$(hostname)/$btname/g" /etc/hosts
sudo sed -i -e "s/$(hostname)/$btname/g" /etc/hostname
sudo service networking restart
;;
* )
printf "\n"
echo "Skipping.."
;;
esac
## Installing Dependencies
printf "\n"
echo "Installing Dependencies"
sudo apt-get install bluealsa python-dbus
## Make Bluetooth Discoverable
printf "\n"
echo "Making Bluetooth Discoverable"
sudo sed -i -e 's/#DiscoverableTimeout = 0/DiscoverableTimeout = 0/g' /etc/bluetooth/main.conf
echo -e 'power on \ndiscoverable on \nquit' | sudo bluetoothctl
## Create Services
printf "\n"
echo "Creating Services"
wget https://gist.github.com/hahagu/f633ad07014ded3c3833203a77a213c4/raw/ef68cb99020dc754459d1a0b14726a23be4233ed/a2dp-agent
sudo mv a2dp-agent /usr/local/bin
sudo chmod +x /usr/local/bin/a2dp-agent
wget https://gist.github.com/hahagu/f633ad07014ded3c3833203a77a213c4/raw/ef68cb99020dc754459d1a0b14726a23be4233ed/bt-agent-a2dp.service
sudo mv bt-agent-a2dp.service /etc/systemd/system
sudo systemctl enable bt-agent-a2dp.service
wget https://gist.github.com/hahagu/f633ad07014ded3c3833203a77a213c4/raw/ef68cb99020dc754459d1a0b14726a23be4233ed/a2dp-playback.service
sudo mv a2dp-playback.service /etc/systemd/system
sudo systemctl enable a2dp-playback.service
sudo sed -i -e '$i \# Make Bluetooth Discoverable\necho -e "discoverable on \\nquit" | sudo bluetoothctl\n' /etc/rc.local
## Reboot
printf "\n"
echo "Rebooting in 5 seconds.."
sleep 5
sudo reboot