华为Matebook 16s 2022在Deepin v23下的声音、硬盘、电池等系统问题的解决

news/2024/7/2 4:40:51/文章来源:https://www.cnblogs.com/jetcser/p/18275961

  手头上的Matebook 16s 2022款笔记本配备的是Intel i5-12500H,手动替换了原装的512固态硬盘为致钛的PC005 1TB,系统环境是Deepin V23 RC2。

  安装系统之后,主要有3个问题需要解决:

1.笔记本没有声音,通过安装github上的项目huawei-linux-sound-fix解决,需要注意的是,Deepin V23的软件仓库里面缺少依赖项alsa-tools,必须先从Debian12的仓库安装alsa-tools再运行声音修复补丁。

如果github无法访问,可以从蓝奏云下载:https://thesats.lanzout.com/iUrwJ232p6gf

# 从Debian12仓库下载并安装alsa-tools包
wget http://ftp.cn.debian.org/debian/pool/main/a/alsa-tools/alsa-tools_1.2.5-3_amd64.deb -O /tmp/alsa-tools_1.2.5-3_amd64.deb && sudo apt install /tmp/alsa-tools_1.2.5-3_amd64.deb

2.笔记本在睡眠唤醒之后,直接掉盘,系统只能强制断电。这貌似是由于APST机制,睡眠的时候硬盘进入了P4深度省电状态,导致系统唤醒的时候,无法唤醒硬盘,结果掉盘,这可以通过在grub配置文件中添加参数解决,修改之后的参数为:

GRUB_CMDLINE_LINUX_DEFAULT="nvme_core.default_ps_max_latency_us=2000 splash quiet "

bash脚本如下:

#!/bin/bash# 问题:在安装有致钛PC005-1TB硬盘的Matebook16s-2022中,Deepin v23 RC2(Linux Kernel 6.6.25-amd64-desktop-hwe)在睡眠唤醒之后,硬盘掉盘。
# 该脚本在/etc/default/grub的GRUB_CMDLINE_LINUX_DEFAULT参数中,添加nvme_core.default_ps_max_latency_us=2000,让硬盘不处于P4状态(深度省电状态)。
# 参考链接:
# https://wiki.archlinux.org/title/Solid_state_drive/NVMe
# https://www.tekbyte.net/fixing-nvme-ssd-problems-on-linux# 以下是致钛PC005硬盘支持的电源状态
# sudo smartctl -c /dev/nvme0n1 | grep -A7 "Supported Power States"
#
# Supported Power States
# St Op     Max   Active     Idle   RL RT WL WT  Ent_Lat  Ex_Lat
#  0 +     9.00W       -        -    0  0  0  0        0       0
#  1 +     4.60W       -        -    1  1  1  1        0       0
#  2 +     3.80W       -        -    2  2  2  2        0       0
#  3 -   0.0450W       -        -    3  3  3  3     2000    2000
#  4 -   0.0040W       -        -    4  4  4  4    15000   15000echo "matebook16s解决NVME硬盘睡眠唤醒掉盘的问题-root.sh"# 检查脚本是否以sudo权限执行
if [ "$EUID" -ne 0 ]; thenecho "请以sudo权限执行此脚本"exit 1
fi# 检查系统中是否存在NVMe硬盘
NVME_DISKS=$(ls /dev/nvme*n1 2> /dev/null)if [ -z "$NVME_DISKS" ]; thenecho "系统中不存在NVMe硬盘,退出"exit 1
fi# 显示每个NVMe硬盘的信息
for DISK in $NVME_DISKS; doecho -e "\033[35m硬盘信息:$DISK\033[0m"sudo smartctl -c $DISK | grep -A7 "Supported Power States"
done# 读取GRUB_CMDLINE_LINUX_DEFAULT的值
GRUB_CMDLINE=$(grep -oP '^GRUB_CMDLINE_LINUX_DEFAULT="\K[^"]+' /etc/default/grub)# 检查nvme_core.default_ps_max_latency_us参数是否存在
if [[ $GRUB_CMDLINE =~ nvme_core.default_ps_max_latency_us=([0-9]+) ]]; then# 如果存在,检查其值是否为2000if [ ${BASH_REMATCH[1]} == 2000 ]; thenecho "nvme_core.default_ps_max_latency_us=2000"echo "grub参数已正确设置,无需调整..."exit 0elseecho "当前参数nvme_core.default_ps_max_latency_us=${BASH_REMATCH[1]},将其改为2000"# 替换参数值GRUB_CMDLINE=${GRUB_CMDLINE//nvme_core.default_ps_max_latency_us=${BASH_REMATCH[1]}/nvme_core.default_ps_max_latency_us=2000}# 更新/etc/default/grub文件sudo sed -i "s/^GRUB_CMDLINE_LINUX_DEFAULT=.*/GRUB_CMDLINE_LINUX_DEFAULT=\"$GRUB_CMDLINE\"/" /etc/default/grub# 更新grub配置sudo grub-mkconfig -o /boot/grub/grub.cfgecho "请重启系统,来让参数生效..."fi
elseecho "参数nvme_core.default_ps_max_latency_us=2000不存在,添加该参数"# 备份grub文件sudo cp /etc/default/grub /etc/default/grub.bakecho "已备份原始grub文件为grub.bak"# 添加参数GRUB_CMDLINE="$GRUB_CMDLINE nvme_core.default_ps_max_latency_us=2000"# 更新/etc/default/grub文件sudo sed -i "s/^GRUB_CMDLINE_LINUX_DEFAULT=.*/GRUB_CMDLINE_LINUX_DEFAULT=\"$GRUB_CMDLINE\"/" /etc/default/grub# 更新grub配置sudo grub-mkconfig -o /boot/grub/grub.cfgecho "请重启系统,来让参数生效...."
fi

 3.笔记本充电没有开启电池保养功能,需要安装tlp来设置,电量高于81%时停止充电,低于75%时充电。设置上限是81%而不是80%,是因为设置到80%停止充电时,系统会一直显示“电量79%”,对强迫症不友好。

bash脚本如下:

#!/bin/bashecho "matebook16s设置电池保养功能-root.sh"# 检查用户是否具有root/sudo权限
if [ "$(id -u)" != "0" ]; thenecho -e "\033[31m请以root/sudo用户身份运行此脚本。\033[0m" 1>&2# 按任意键退出echo "按任意键退出..."read -n 1exit 1
fisudo apt install tlp -y# 定义文件路径
FILE="/etc/tlp.conf"# 显示电池信息
clear
echo -e "\033[31m电池详情如下:\033[0m"
tlp-stat -b
echo "-------------------------------------------------"# 复制文件
cp /etc/tlp.conf /etc/tlp.conf.bak# 检查是否已经存在修改后的这两行
if grep -Fxq "START_CHARGE_THRESH_BAT0=75" /etc/tlp.conf && grep -Fxq "STOP_CHARGE_THRESH_BAT0=81" /etc/tlp.conf
thenecho -e "\033[31m电池保养功能已开启,电池将在低于75%时充电,高于80%时停止充电\033[0m"
else# 修改文件sed -i 's/#START_CHARGE_THRESH_BAT0=75/START_CHARGE_THRESH_BAT0=75/g' /etc/tlp.confsed -i 's/#STOP_CHARGE_THRESH_BAT0=80/STOP_CHARGE_THRESH_BAT0=81/g' /etc/tlp.conf# 检查是否修改成功if grep -Fxq "START_CHARGE_THRESH_BAT0=75" /etc/tlp.conf && grep -Fxq "STOP_CHARGE_THRESH_BAT0=81" /etc/tlp.confthen# 执行tlp starttlp start > /dev/nullecho -e "\033[31m电池保养功能已开启,电池将在低于75%时充电,高于80%时停止充电\033[0m"elseecho -e "\033[31m/etc/tlp.conf修改失败,请检查该文件...\033[0m"fi
fiecho "想要临时完全充满电池,请运行sudo tlp fullcharge BAT0"
# 按任意键退出
echo "按任意键退出..."
read -n 1
exit 0

  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/733843.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PTA七、八次总结

前言 本学期的最后两次PTA作业了,毕竟作为压轴的节目,难度还是有的,而且对我来说还不小。这一次Blog也是本学期最后一次Blog了,我也做出了一点对这学期相关PTA作业的总结。 这一学期PTA算得上是一次挣扎中进步的经历了,尤其是这两次。前几次老师给了一些思路给我做出了引导…

大作业7-8总结

前言 这两次大作业使用到的新知识点并不是很多,考查的是各类知识点的综合应用,题量方面大概考虑到这两次大作业的难度和临近考试的学习压力,两次大作业都只有一道大题,由于是所有知识点的总结,考察的知识点很广,再加上迭代的次数增加,这两次大作业的难度比之前的几次都要…

你的第一个SpringMVC程序

1.创建Maven模块 1.1 新建一个父模块1.2修改一下JDK版本这里选择JDK211.3 父模块中建立一个子模块,接下来的操作将在子模块中进行2.添加web支持 2.1设置本地Maven仓库(非必须)2.2 在springmvc-001的pom.xml文件中修改打包方式为war同时添加web所需要的依赖,由于Servlet依赖…

第三次OOP作业总结

第三次OOP作业总结 前言 此次作业为家居强电电路模拟程序的再次迭代,主要增加了两个特殊用电器,并且考察学生前几次的程序架构的完善性。新增的电压与电流的要求迫使程序更加智能。设计与分析 题一:家居强电电路模拟程序-3题解:在器具方面,控制设备增加了互斥开关,受控设…

codis架构学习

转自:https://jackeyzhe.github.io/2018/11/14/玩转Redis集群之Codis/ 1.介绍 codis是一种redis 分布式集群解决方案,codis是基于多个redis实例做了一层路由层来进行数据路由,每个redis实例承担一定的数据分片。Codis FE:集群管理界面。多个集群实例共享可以共享同一个前端…

PTA作业7~8总结

目录1.前言:2.设计与分析:(1)第七次大作业(2)第八次大作业3.采坑心得:4.改进建议:5.总结: ---------------------------------------------------------------------------------------------------------------------------------- PTA作业总结1.前言:这次的作业相比于前几次…

02-单链表的操作

单链表的创建:头插法 #include <stdio.h> #include <malloc.h> #include <stdbool.h>typedef int ElemType; /*定义一个单链表*/ typedef struct LNode{ElemType data;/*下一个元素的地址指针*/struct LNode *next; } LNode,*LinkList;/***单链表的创建* @r…

Java7-8次大作业题目集总结性Blog

Java4~6次大作业题目集的总结性Blog前言这两次大作业无疑就是更好学会面向对象编程了,并且是新添加的信息能够合理处理然后使用。 题量不大,只是在之前的代码上运用开闭原则修改代码,但我还是不能能很好掌握开闭原则。 难度有点大了,第八次大作业在之前的基础上添加了并联…

Linux系统基本介绍

一、Linux系统基本介绍 【1】、Linux操作系统特点多任务的操作系统多任务操作系统严格区分大小写Linux一切皆文件所有文件的起点都是“/”根目录对于Linux操作系统来说文件的后缀名没有任何实际意义,他不像是Windows操作系统中的后缀名代表了本文件是什么类型的文件。Linux中文…

STM32延时函数

STM32延时函数(查询定时器实现) 之前在STM32中使用延时函数的时候,都是直接使用,并不了解其中的原理。经过查阅资料,这里记录一下大致原理。 首先直接贴出来延时函数delay.c,通过查询的SysTick Timer的STK_CTRL寄存器的计数标志位COUNTFLAG方式实现,其中SysTick是一个结构…

OOP最后两次作业总结

OPP最后两次作业总结 前言 两次题目集其实都是在前面的基础上进行迭代,第一次作业说实话我没花什么时间,毕竟我从写第一次PTA就是给电器使用两个接点,我从拿到题目到达到及格分只用了半天时间,然后最后又花了点时间测试几个样例,拿到了82分。然后最后一次作业嘛,我几乎是…

游戏常用运行库 合集 | Game Runtime Libraries Package(2.1.24.0618)

软件简介: 游戏常用运行库 合集 整合了许多游戏会用到的运行库,支持 Windows XP – Windows 11 系统,并且支持自动检测系统勾选推荐的运行库,方便快捷。 本版特点: By:mefcl整合常见最新游戏所需运行库根据系统自动勾选推荐的版本纯净安装包无病毒和弹窗行为支持静默安装…

背包DP——混合背包

顾名思义,混合背包就是将前面三种的背包问题(01,完全,多重)混合起来,有的只能取一次,有的能取无限次,有的只能取 k 次。 正解特解 部分情况下,如小数据,可以转换成多重背包(把完全情况的数量换成足够大,如1e7,就把完全相对变成了多重) 例题 https://www.luogu.co…

cent os配置docker(解决2024.6月docker镜像拉取问题)

docker拉取镜像目前已经失效,多方查找目前试了试下面这个还可以用 首先执行以下命令安装dockeruname -r yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum …

Field stock doesnt have a default value

当你遇到 "Field stock doesnt have a default value"​ 这个错误时,这意味着你正在尝试插入一条新记录到数据库中,但是涉及的 stock 字段没有提供一个值,同时该字段在数据库表定义中也没有设置默认值(default value),并且数据库配置为严格模式,不允许NULL值或…

南昌航空大学软件学院23201823第三次blog

一、前言 这是最后一次blog了,是一些关于题目集7~8次的总结以及这一个学期对于PTA题目集的总结了。最后这两次的题目难度其实我并不是非常了解,大抵是因为我已经来不及挽救了,但是我还是想说其实这几次题目的难度感觉并没有想象中的触不可及,而是我自己没有花足够的心思去了…

中国城市降雨量历史记录查询 All In One

中国城市降雨量历史记录查询 All In One 降雨量 历史记录中国城市降雨量历史记录查询 All In One降雨量 历史记录https://www.ceicdata.com.cn/zh-hans/china/precipitation 中国 降水量:河南:郑州 1990 - 2022 | 月 | 毫米 | 气象局 降水量:河南:郑州在12-01-2022达1.500毫米,…

oracle安装调用图形化失败

报错现象: [grid@19c01 grid]$ ./gridSetup.sh ERROR: Unable to verify the graphical display setup. This application requires X display. Make sure that xdpyinfo exist under PATH variable.No X11 DISPLAY variable was set, but this program performed an operatio…

Kubernetes-高可用k8s集群部署(多Master节点二进制方式)

一、安装Docker 配置docker的yum源地址 yum -y install wget wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo yum provides docker-ce 安装指定的docker版本 yum install -y docker-ce-20.10.7 docker-ce-cli-20…

23201813-第三次blog作业

前言: 这学期已经接近了尾声,java和面向对象的学习也已经接近结束,在这门课程的最后时间里,剩余的两次pta我都没有完成,一部分原因是后面的题目集感觉好难,然后要经过好多迭代,还有期末的考试学科很多,有大部分的时间用来复习,所以对pta就基本上放弃了,所以最后两个题…