Add respeaker driver install script
This commit is contained in:
Executable
+66
@@ -0,0 +1,66 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Installs drivers for the ReSpeaker 2mic and 4mic HATs on Raspberry Pi OS.
|
||||
# Must be run with sudo.
|
||||
# Requires: curl raspberrypi-kernel-headers dkms i2c-tools libasound2-plugins alsa-utils
|
||||
|
||||
set -eo pipefail
|
||||
|
||||
apt-get update
|
||||
apt-get install --no-install-recommends --yes \
|
||||
curl raspberrypi-kernel-headers dkms i2c-tools libasound2-plugins alsa-utils
|
||||
|
||||
temp_dir="$(mktemp -d)"
|
||||
|
||||
function finish {
|
||||
rm -rf "${temp_dir}"
|
||||
}
|
||||
|
||||
trap finish EXIT
|
||||
|
||||
pushd "${temp_dir}"
|
||||
|
||||
# Download source code to temporary directory
|
||||
# NOTE: There are different branches in the repo for different kernel versions.
|
||||
# We use v6.1 here.
|
||||
echo 'Downloading source code'
|
||||
curl -L -o - 'https://github.com/HinTak/seeed-voicecard/archive/refs/heads/v6.1.tar.gz' | \
|
||||
tar -xzf -
|
||||
|
||||
cd seeed-voicecard-6.1/
|
||||
|
||||
# 1. Build kernel module
|
||||
echo 'Building kernel module'
|
||||
ver='0.3'
|
||||
mod='seeed-voicecard'
|
||||
src='./'
|
||||
kernel="$(uname -r)"
|
||||
marker='0.0.0'
|
||||
|
||||
mkdir -p "/usr/src/${mod}-${ver}"
|
||||
cp -a "${src}"/* "/usr/src/${mod}-${ver}/"
|
||||
|
||||
dkms add -m "${mod}" -v "${ver}"
|
||||
dkms build -k "${kernel}" -m "${mod}" -v "${ver}" && {
|
||||
dkms install --force -k "${kernel}" -m "${mod}" -v "${ver}"
|
||||
}
|
||||
|
||||
mkdir -p "/var/lib/dkms/${mod}/${ver}/${marker}"
|
||||
|
||||
# 2. Install kernel module and configure
|
||||
echo 'Updating boot configuration'
|
||||
config='/boot/config.txt'
|
||||
|
||||
cp seeed-*-voicecard.dtbo /boot/overlays
|
||||
grep -q "^snd-soc-ac108$" /etc/modules || echo "snd-soc-ac108" >> /etc/modules
|
||||
sed -i -e 's:#dtparam=i2c_arm=on:dtparam=i2c_arm=on:g' "${config}"
|
||||
echo "dtoverlay=i2s-mmap" >> "${config}"
|
||||
echo "dtparam=i2s=on" >> "${config}"
|
||||
mkdir -p /etc/voicecard
|
||||
cp *.conf *.state /etc/voicecard
|
||||
cp seeed-voicecard /usr/bin/
|
||||
cp seeed-voicecard.service /lib/systemd/system/
|
||||
systemctl enable --now seeed-voicecard.service
|
||||
|
||||
echo 'Done. Please reboot the system.'
|
||||
popd
|
||||
Reference in New Issue
Block a user