Update install-respeaker-drivers.sh
Added logic to support both Bookworm and Trixie version of Raspberry Pi OS.
This commit is contained in:
@@ -2,26 +2,54 @@
|
||||
|
||||
# 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
|
||||
# Requires: curl, dkms, i2c-tools, libasound2-plugins, alsa-utils,
|
||||
# and appropriate Raspberry Pi kernel headers.
|
||||
|
||||
set -eo pipefail
|
||||
|
||||
kernel_formatted="$(uname -r | cut -f1,2 -d.)"
|
||||
driver_url_status="$(curl -ILs https://github.com/HinTak/seeed-voicecard/archive/refs/heads/v$kernel_formatted.tar.gz | tac | grep -o "^HTTP.*" | cut -f 2 -d' ' | head -1)"
|
||||
driver_url_status="$(curl -ILs "https://github.com/HinTak/seeed-voicecard/archive/refs/heads/v${kernel_formatted}.tar.gz" \
|
||||
| tac | grep -o "^HTTP.*" | cut -f 2 -d' ' | head -1)"
|
||||
|
||||
if [ ! "$driver_url_status" = 200 ]; then
|
||||
echo "Could not find driver for kernel $kernel_formatted"
|
||||
exit 1
|
||||
if [ ! "$driver_url_status" = 200 ]; then
|
||||
echo "Could not find driver for kernel $kernel_formatted"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Detecting appropriate kernel header package..."
|
||||
|
||||
header_pkg=""
|
||||
header_candidates=(
|
||||
raspberrypi-kernel-headers
|
||||
linux-headers-rpi-v8
|
||||
linux-headers-rpi-v7l
|
||||
linux-headers-rpi-v7
|
||||
)
|
||||
|
||||
for pkg in "${header_candidates[@]}"; do
|
||||
if apt-cache show "$pkg" >/dev/null 2>&1; then
|
||||
header_pkg="$pkg"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -n "$header_pkg" ]; then
|
||||
echo "Using kernel header package: $header_pkg"
|
||||
else
|
||||
echo "WARNING: No known Raspberry Pi kernel header package found."
|
||||
echo " Tried: ${header_candidates[*]}"
|
||||
echo " Continuing without installing kernel headers; dkms build may fail."
|
||||
fi
|
||||
|
||||
apt-get update
|
||||
apt-get install --no-install-recommends --yes \
|
||||
curl raspberrypi-kernel-headers dkms i2c-tools libasound2-plugins alsa-utils
|
||||
curl dkms i2c-tools libasound2-plugins alsa-utils \
|
||||
${header_pkg:+$header_pkg}
|
||||
|
||||
temp_dir="$(mktemp -d)"
|
||||
|
||||
function finish {
|
||||
rm -rf "${temp_dir}"
|
||||
rm -rf "${temp_dir}"
|
||||
}
|
||||
|
||||
trap finish EXIT
|
||||
@@ -31,10 +59,10 @@ pushd "${temp_dir}"
|
||||
# Download source code to temporary directory
|
||||
# NOTE: There are different branches in the repo for different kernel versions.
|
||||
echo 'Downloading source code'
|
||||
curl -L -o - "https://github.com/HinTak/seeed-voicecard/archive/refs/heads/v$kernel_formatted.tar.gz" | \
|
||||
tar -xzf -
|
||||
curl -L -o - "https://github.com/HinTak/seeed-voicecard/archive/refs/heads/v${kernel_formatted}.tar.gz" | \
|
||||
tar -xzf -
|
||||
|
||||
cd seeed-voicecard-"$kernel_formatted"/
|
||||
cd "seeed-voicecard-${kernel_formatted}/"
|
||||
|
||||
# 1. Build kernel module
|
||||
echo 'Building kernel module'
|
||||
@@ -44,10 +72,10 @@ src='./'
|
||||
kernel="$(uname -r)"
|
||||
marker='0.0.0'
|
||||
threads="$(getconf _NPROCESSORS_ONLN)"
|
||||
memory="$(LANG=C free -m|awk '/^Mem:/{print $2}')"
|
||||
memory="$(LANG=C free -m | awk '/^Mem:/{print $2}')"
|
||||
|
||||
if [ "${memory}" -le 512 ] && [ "${threads}" -gt 2 ]; then
|
||||
threads=2
|
||||
if [ "${memory}" -le 512 ] && [ "${threads}" -gt 2 ]; then
|
||||
threads=2
|
||||
fi
|
||||
|
||||
mkdir -p "/usr/src/${mod}-${ver}"
|
||||
@@ -55,7 +83,7 @@ cp -a "${src}"/* "/usr/src/${mod}-${ver}/"
|
||||
|
||||
dkms add -m "${mod}" -v "${ver}"
|
||||
dkms build -k "${kernel}" -m "${mod}" -v "${ver}" -j "${threads}" && {
|
||||
dkms install --force -k "${kernel}" -m "${mod}" -v "${ver}"
|
||||
dkms install --force -k "${kernel}" -m "${mod}" -v "${ver}"
|
||||
}
|
||||
|
||||
mkdir -p "/var/lib/dkms/${mod}/${ver}/${marker}"
|
||||
|
||||
Reference in New Issue
Block a user