安装WM8960驱动:
cd WM8960-Audio-HAT
需要等待一定的时间
sudo ./install.sh
sudo reboot
install.h的详细过程
!/bin/bash
检查脚本是否以 root 用户权限运行,如果不是则提示需要使用 sudo 并退出
if [[ $EUID -ne 0 ]]; then
echo "这个脚本必须以 root 权限运行 (使用 sudo)" 1>&2
exit 1
fi
检查设备是否为树莓派,如果不是则提示并退出
is_Raspberry=$(cat /proc/device-tree/model | awk '{print $1}')
if [ "x${is_Raspberry}" != "xRaspberry" ] ; then
echo "抱歉,这个驱动程序仅适用于树莓派"
exit 1
fi
ver="1.0"
创建一个带有该版本号的目录,以确保在内核更新期间 'dkms remove' 不会删除源文件
marker="0.0.0"
更新软件包列表
apt update
安装树莓派内核头文件、dkms、git、i2c 工具和音频插件
apt-get -y install raspberrypi-kernel-headers
apt-get -y install dkms git i2c-tools libasound2-plugins
查找当前安装的内核版本(如果刚更新内核,可能与正在运行的内核不同)
kernels=$(ls /lib/modules | sed "s/^/-k /")
uname_r=$(uname -r)
定义安装模块的函数
function install_module {
src=$1
mod=$2
如果 dkms 的版本标记目录存在,删除它
if [[ -d /var/lib/dkms/$mod/$ver/$marker ]]; then
rmdir /var/lib/dkms/$mod/$ver/$marker
fi
如果模块的源目录或 dkms 版本目录存在,删除它们
if [[ -e /usr/src/$mod-$ver || -e /var/lib/dkms/$mod/$ver ]]; then
dkms remove --force -m $mod -v $ver --all
rm -rf /usr/src/$mod-$ver
fi
创建模块的源目录并复制源文件
mkdir -p /usr/src/$mod-$ver
cp -a $src/ /usr/src/$mod-$ver/
添加、编译并安装模块
dkms add -m $mod -v $ver
dkms build $uname_r -m $mod -v $ver && dkms install --force $uname_r -m $mod -v $ver
创建版本标记目录
mkdir -p /var/lib/dkms/$mod/$ver/$marker
}
安装 wm8960-soundcard 模块
install_module "./" "wm8960-soundcard"
安装设备树覆盖文件
cp wm8960-soundcard.dtbo /boot/overlays
设置内核模块
grep -q "i2c-dev" /etc/modules || echo "i2c-dev" >> /etc/modules
grep -q "snd-soc-wm8960" /etc/modules || echo "snd-soc-wm8960" >> /etc/modules
grep -q "snd-soc-wm8960-soundcard" /etc/modules || echo "snd-soc-wm8960-soundcard" >> /etc/modules
设置设备树覆盖
sed -i -e 's:dtparam=i2c_arm=on:dtparam=i2c_arm=on:g' /boot/firmware/config.txt || true
grep -q "dtoverlay=i2s-mmap" /boot/firmware/config.txt || echo "dtoverlay=i2s-mmap" >> /boot/firmware/config.txt
grep -q "dtparam=i2s=on" /boot/firmware/config.txt || echo "dtparam=i2s=on" >> /boot/firmware/config.txt
grep -q "dtoverlay=wm8960-soundcard" /boot/firmware/config.txt || echo "dtoverlay=wm8960-soundcard" >> /boot/firmware/config.txt
安装配置文件
mkdir /etc/wm8960-soundcard || true
cp .conf /etc/wm8960-soundcard
cp .state /etc/wm8960-soundcard
设置服务
cp wm8960-soundcard /usr/bin/
cp wm8960-soundcard.service /lib/systemd/system/
systemctl enable wm8960-soundcard.service
systemctl start wm8960-soundcard
echo "------------------------------------------------------"
echo "请重新启动您的树莓派以应用所有设置"
echo "享受吧!"
echo "------------------------------------------------------"
安装树莓派内核头文件、dkms、git、i2c 工具和音频插件
安装树莓派内核头文件、dkms、git、i2c 工具和音频插件
apt-get -y install raspberrypi-kernel-headers
apt-get -y install dkms git i2c-tools libasound2-plugins
树莓派内核头文件(raspberrypi-kernel-headers)
树莓派内核头文件是包含内核编译所需的头文件和配置文件的包。它们对于编译和安装与内核交互的模块(如设备驱动程序)是必需的。内核头文件使开发人员能够编译自定义内核模块,而无需重新编译整个内核。
DKMS(Dynamic Kernel Module Support)
DKMS 是一个用于动态管理内核模块的框架。它允许在内核更新后自动重新构建模块,从而确保模块与新内核兼容。DKMS 提供了一种自动化的方式来管理内核模块的构建、安装和删除,对于那些需要在内核更新后继续工作的模块非常有用。
Git
Git 是一种分布式版本控制系统,广泛用于软件开发和其他版本控制任务。它允许多个开发人员同时工作,跟踪代码更改,并管理项目的不同版本。Git 是开源的,具有高效的分支和合并功能,适用于各种规模的项目。
I2C 工具(i2c-tools)
I2C