253 lines
6.6 KiB
Bash
Executable File
253 lines
6.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -x
|
|
sudo apt-get -y install \
|
|
dh-autoreconf \
|
|
dh-make \
|
|
check \
|
|
bluez \
|
|
bluetooth \
|
|
bluez-tools
|
|
|
|
sudo apt-get -y install \
|
|
libbluetooth-dev \
|
|
libbsd-dev \
|
|
libusb-dev \
|
|
libglib2.0-dev \
|
|
libudev-dev \
|
|
libdbus-1-dev \
|
|
libical-dev \
|
|
libmp3lame-dev \
|
|
libmpg123-dev \
|
|
libncurses-dev \
|
|
libfdk-aac-dev \
|
|
libreadline-dev \
|
|
libsbc1 \
|
|
libfdk-aac-dev \
|
|
libsbc-dev \
|
|
libasound2-dev \
|
|
libortp-dev
|
|
|
|
|
|
USER="Arkq"
|
|
PROJECT="bluez-alsa"
|
|
LICENSE="mit"
|
|
SECTION="admin"
|
|
HOMEPAGE="http://www.bluez.org"
|
|
BUILD_HOME="/var/tmp/bluez-alsa-git_build"
|
|
#VERSION="2.1.0"
|
|
PACKAGE="bluealsa"
|
|
VERSION=$(curl "https://api.github.com/repos/${USER}/${PROJECT}/tags?per_page=5" | jq -r '.[0] | .name')
|
|
VERSION=${VERSION:1} # strip the preceding 'v'
|
|
DEBEMAIL="person@company.tld"
|
|
DEBFULLNAME="Testy McTester"
|
|
DESCRIPTION="Integration between BlueZ and ALSA."
|
|
LONG_DESCRIPTION=" With BlueALSA one can achieve the same goal as with PulseAudio, but with fewer\n dependencies and less overhead. BlueALSA registers all known Bluetooth audio\n profiles in BlueZ, so in theory every Bluetooth audio device can be connected.\n In order to access the audio stream, one has to connect to the ALSA PCM device\n called bluealsa."
|
|
|
|
# Disable discoverable timeout in the main.conf from the bluez package
|
|
sed -i 's,^\(DiscoverableTimeout = \).*,\1'\"0\"',' /etc/bluetooth/main.conf
|
|
|
|
# Make the BUILD_HOME directory and clone upstream
|
|
mkdir -p ${BUILD_HOME}
|
|
cd ${BUILD_HOME} || exit
|
|
|
|
git clone https://github.com/${USER}/${PROJECT}.git ${PACKAGE}-${VERSION}
|
|
|
|
cd ${PACKAGE}-${VERSION} || exit
|
|
|
|
mkdir -p m4
|
|
|
|
|
|
cat <<EOF > .git/gbp.conf
|
|
[DEFAULT]
|
|
# this is the upstream-branch:
|
|
upstream-branch=master
|
|
EOF
|
|
|
|
# debianize the BUILD_HOME directory
|
|
echo ${DEBFULLNAME}
|
|
dh_make \
|
|
--createorig \
|
|
--single \
|
|
--native \
|
|
--copyright ${LICENSE} \
|
|
--yes
|
|
|
|
|
|
|
|
# Customize the debian directory values
|
|
#sed -i 's,^\(Description: \).*,\1'${DESCRIPTION}',' debian/control
|
|
sed -i "s,^\(Description: \).*,\1${DESCRIPTION}," debian/control
|
|
sed -i 's,^\(Section: \).*,\1'${SECTION}',' debian/control
|
|
sed -i "s,^\(Maintainer: \).*,\1'${DEBFULLNAME}\ \<${DEBEMAIL}\>'," debian/control
|
|
sed -i 's,^\(Homepage: \).*,\1'${HOMEPAGE}',' debian/control
|
|
sed -i "s/.*insert\ long.*/${LONG_DESCRIPTION}/" debian/control
|
|
|
|
|
|
echo ****************
|
|
cat debian/control
|
|
echo ****************
|
|
|
|
BUILD_OPTIONS="--enable-aac --enable-ofono --enable-debug"
|
|
|
|
cat <<EOF > debian/rules
|
|
#!/usr/bin/make -f
|
|
%:
|
|
dh \$@
|
|
|
|
override_dh_auto_configure:
|
|
dh_auto_configure -- ${BUILD_OPTIONS}
|
|
EOF
|
|
|
|
cat <<EOF > debian/watch
|
|
version=4
|
|
opts=filenamemangle=s/.+\/v?(\d\S+)\.tar\.gz/${PROJECT}-$1\.tar\.gz/ \
|
|
https://github.com/${USER}/${PROJECT}/tags .*/v?(\d\S+)\.tar\.gz
|
|
EOF
|
|
|
|
dpkg-buildpackage -us -uc -b
|
|
|
|
echo ${PACKAGE}_${VERSION}_amd64.deb
|
|
|
|
sudo dpkg -i ../${PACKAGE}_${VERSION}_amd64.deb
|
|
|
|
|
|
sudo apt-get -y install \
|
|
libbluetooth-dev \
|
|
libbsd-dev \
|
|
libusb-dev \
|
|
libglib2.0-dev \
|
|
libudev-dev \
|
|
libdbus-1-dev \
|
|
libical-dev \
|
|
libmp3lame-dev \
|
|
libmpg123-dev \
|
|
libncurses-dev \
|
|
libfdk-aac-dev \
|
|
libreadline-dev \
|
|
libsbc1 \
|
|
libfdk-aac-dev \
|
|
libsbc-dev \
|
|
libasound2-dev \
|
|
libortp-dev
|
|
|
|
#-------------------------------------------------------------------------------
|
|
## grep bluealsa /etc/passwd
|
|
#bluealsa:x:129:962:added by portage for bluez-alsa:/dev/null:/sbin/nologin
|
|
## grep bluealsa /etc/group
|
|
#bluealsa:x:962:
|
|
#-------------------------------------------------------------------------------
|
|
|
|
cat > /etc/init.d/bluealsa <<'EOF'
|
|
#!/sbin/openrc-run
|
|
# Copyright 1999-2017 Gentoo Foundation
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
|
|
pidfile="/var/run/bluealsa.pid"
|
|
command="/usr/bin/bluealsa"
|
|
command_args="${BLUEALSA_CONF}"
|
|
command_background="true"
|
|
|
|
depend() {
|
|
after bluetooth
|
|
need dbus localmount
|
|
}
|
|
|
|
start_pre() {
|
|
checkpath -q -D -m 0770 -o :audio /var/run/bluealsa
|
|
}
|
|
EOF
|
|
#-------------------------------------------------------------------------------
|
|
## When BlueALSA has been created, then you can start BlueALSA as background task:
|
|
#bluealsa --disable-hfp &
|
|
|
|
# Now - for using your bluetooth-speaker/headset - with BlueALSA you have to intoduce the device to the bluetooth-stack using bluetoothctl:
|
|
# bluetoothctl >
|
|
# scan on
|
|
# [NEW] Device 30:23:23:F4:48:2C TH-S10U
|
|
# scan off
|
|
# pair 30:23:23:F4:48:2C
|
|
# trust 30:23:23:F4:48:2C
|
|
# exit
|
|
|
|
# After that power off&on the bt-speaker device and the device will connect automatically as a trusted device.
|
|
|
|
# Before we try our first audio-command we had to export one thing to make BlueALSA more system-friendly:
|
|
#export LIBASOUND_THREAD_SAFE=0
|
|
|
|
# autostart bluealsa
|
|
#cat <<EOF > /etc/rc.local
|
|
## Start bluealsa as root <https://github.com/Arkq/bluez-alsa>
|
|
#export LIBASOUND_THREAD_SAFE=0
|
|
#/usr/bin/bluealsa -S &
|
|
#EOF
|
|
|
|
gawk -i inplace '
|
|
/^exit 0/ {
|
|
print "export LIBASOUND_THREAD_SAFE=0"
|
|
print "/usr/bin/bluealsa -S &"
|
|
print ""
|
|
}
|
|
{ print }
|
|
' /etc/rc.local
|
|
|
|
# Text to speech:
|
|
|
|
# espeak "Hello, how are you?" -w /home/guido/espeak.wav -s145
|
|
# aplay -D bluealsa:HCI=hci0,DEV=30:23:23:F4:48:2C,PROFILE=a2dp /home/guido/espeak.wav
|
|
|
|
# arecord -D bluealsa capture.wav
|
|
|
|
# bluealsa-aplay XX:XX:XX:XX:XX:XX
|
|
|
|
# $ aplay -D bluealsa:SRV=org.bluealsa,DEV=XX:XX:XX:XX:XX:XX,PROFILE=sco Bourree_in_E_minor.wav
|
|
|
|
# amixer -D bluealsa sset '<control name>' 70%
|
|
# amixer -D bluealsa sset 'Jabra MOVE v2.3.0 - A2DP' 50%
|
|
|
|
|
|
# Internetradio:
|
|
|
|
# mpg123 -a bluealsa:HCI=hci0,DEV=30:23:23:F4:48:2C,PROFILE=a2dp -@ /home/guido/ffh80s.pls
|
|
|
|
# For shorting the command you could create a ~/.asoundrc with the following content:
|
|
|
|
# defaults.bluealsa.interface "hci0"
|
|
# defaults.bluealsa.device "30:23:23:F4:48:2C"
|
|
# defaults.bluealsa.profile "a2dp"
|
|
# defaults.bluealsa.delay 10000
|
|
|
|
# Now you can the shorter version of the command:
|
|
|
|
# mpg123 -a bluealsa -@ /home/guido/ffh80s.pls
|
|
|
|
# For set the volume of such a device you have to know the "real" name of the device out of the bluetoothctl and the name of the used protocol:
|
|
|
|
# Device: 30:23:23:F4:48:2C TH-S10U
|
|
# Protocol: A2DP
|
|
# amixer -D bluealsa sset 'TH-S10U - A2DP ' 70%
|
|
|
|
#------------------------------------------------------------------------
|
|
## ldacBT
|
|
##
|
|
## AOSP libldac dispatcher
|
|
## https://android.googlesource.com/platform/external/libldac
|
|
## https://github.com/EHfive/ldacBT
|
|
|
|
#git clone https://github.com/EHfive/ldacBT.git
|
|
#cd ldacBT
|
|
#git submodule update --init
|
|
#
|
|
#mkdir build && cd build
|
|
#cmake \
|
|
# -DCMAKE_INSTALL_PREFIX=/usr \
|
|
# -DINSTALL_LIBDIR=/usr/lib \
|
|
# -DLDAC_SOFT_FLOAT=OFF \
|
|
# ../
|
|
#make DESTDIR=$DEST_DIR install
|
|
|
|
#------------------------------------------------------------------------
|
|
## [open]aptx - reverse-engineered apt-X
|
|
## https://github.com/Arkq/openaptx
|
|
|
|
#------------------------------------------------------------------------
|