树莓派上WM8960 驱动安装的过程

安装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࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值