diff --git a/install.sh b/install.sh index 1d8370b..872b428 100755 --- a/install.sh +++ b/install.sh @@ -1,5 +1,7 @@ #!/bin/bash +FORCE_KERNEL="1.20190925+1-1" + if [[ $EUID -ne 0 ]]; then echo "This script must be run as root (use sudo)" 1>&2 exit 1 @@ -100,15 +102,46 @@ function check_kernel_headers() { apt-get -y --reinstall install raspberrypi-kernel } +function download_install_debpkg() { + local prefix name r + prefix=$1 + name=$2 + + for (( i = 0; i < 3; i++ )); do + wget $prefix$name -O /tmp/$name && break + done + dpkg -i /tmp/$name; r=$? + rm -f /tmp/$name + return $r +} + +function install_kernel() { + local _url _prefix + + # Instead of retriving the lastest kernel & headers + [ "X$FORCE_KERNEL" == "X" ] && { + # Raspbian kernel packages + apt-get -y --force-yes install raspberrypi-kernel-headers raspberrypi-kernel + # Ubuntu kernel packages + apt-get -y install linux-raspi linux-headers-raspi linux-image-raspi + } || { + # We would like to a fixed version + KERN_NAME=raspberrypi-kernel_${FORCE_KERNEL}_armhf.deb + HDR_NAME=raspberrypi-kernel-headers_${FORCE_KERNEL}_armhf.deb + _url=$(apt-get download --print-uris raspberrypi-kernel | sed -nre "s/'([^']+)'.*$/\1/g;p") + _prefix=$(echo $_url | sed -nre 's/^(.*)raspberrypi-kernel_.*$/\1/g;p') + + download_install_debpkg "$_prefix" "$KERN_NAME" + download_install_debpkg "$_prefix" "$HDR_NAME" + } +} + # update and install required packages which apt &>/dev/null if [[ $? -eq 0 ]]; then apt update -y - # Raspbian kernel packages - apt-get -y install raspberrypi-kernel-headers raspberrypi-kernel - # Ubuntu kernel packages - apt-get -y install linux-raspi linux-headers-raspi linux-image-raspi apt-get -y install dkms git i2c-tools libasound2-plugins + install_kernel # rpi-update checker check_kernel_headers fi diff --git a/seeed-voicecard b/seeed-voicecard index 9a135a1..2e11ef0 100755 --- a/seeed-voicecard +++ b/seeed-voicecard @@ -122,7 +122,8 @@ if [ "$overlay" ]; then rm /etc/asound.conf rm /var/lib/alsa/asound.state - kernel_ver=$(uname -r) # get_kernel_version) +: <<\EOF + kernel_ver=$(get_kernel_version) # echo kernel_ver=$kernel_ver # TODO: dynamic dtoverlay Bug of v4.19.x @@ -137,6 +138,7 @@ if [ "$overlay" ]; then fi done fi +EOF #make sure the driver loads correctly dtoverlay -d $OVERLAYS $overlay || true