arch linux休眠后没有声音

真TM的讨厌解决问题。
留一个思路给下个问题,解决问题的权重是推荐度和时间顺序

解决思路

1.查看arch wiki

原因无2.
搜索sound
sound arch wiki
内容很少,就看英文吧。

Drivers and interface – hardware support and control
Usermode API (libraries) – utilized and required by applications
(optional) Usermode sound servers – best for the complex desktop, needed for multiple simultaneous audio apps, and vital for more advanced capabilities e.g. pro audio
(optional) Sound frameworks – higher-level application environments not involving server processes```
这几个东西我大概了解。下面就是确定这几个东西哪个出毛病了。

A default Arch installation already includes the kernel sound system
这个肯定不适合我,因为我刚刚装的时候没有声音。
所以,linux内核没有我的声卡的驱动。

我是安装了alsamixer才有声音。这个是一个应用软件,因此可能被systemd控制着。休眠后它会没声音,因此极有可能是和systemd的设置有关。这里我先保留一丝质疑。毕竟没有却确凿证据。

对比蛛丝马迹,确定大致方向

我安装了ALSA,和它的设置有关系。
wiki上说它提供低级的支持对声卡。
---oss,更古老,更好用,不过被alsa在2002年超过。
后来升级了,后来好像是从close到opensource在2007年。
并且加上了一个开源许可,GPL。oss没有alsa支持的硬件设备那么广泛,但在某些方面做的比alsa好。

总结:Unix like的系统的驱动层对声音有2种解决方案。一种是支持硬件更广的alsa,一种是后来赶超但支持设备不完善的oss。

那么就是这里出现了问题。并且是alsa出现了问题。
我需要详细的阅读alsa的文档。
这个时候换个思路。到github上找issure。

到github上找issure

好吧。搜索alsamixer没找到想要的。
搜alsa.虽然肯定没找到。因为这个玩意是内核驱动嘛。
但也知道很多人基于它开发一些控制声音的程序。那么也进一步验证了这个东西是个驱动。

详细阅读ALSA文档

ALSA arch wiki

The Advanced Linux Sound Architecture (ALSA) provides kernel driven sound card drivers. It replaces the original Open Sound System (OSS).

刚上来就开始怼oss。呵呵。

Besides the sound device drivers, ALSA also bundles a user space driven library for application developers. 

捆绑有库文件,这和之前在github上看到的项目不谋而合。回想一下,github上面写的那些玩意儿极有可能被收藏进python库里面。我去验证一下。
验证了。原来开源就是这么个玩意儿~~~啧啧。

总结,ALSA挑战了OSS在unix linux系统上对声音控制的权威地位。主要就是开发了一些库,提供给开发者,让他们能够去利用他们的函数,屏蔽底层声卡细节,开发出自己的软件。
好吧,ALSA是声卡驱动领域的老大哥。。。

我的电脑只是休眠后没声音,刚开机是用声音的。并且休眠后连接耳机照样有声音。没有走声卡那条线。emmm,这确实不是ALSA的锅。我现在需要看看建立在ALSA之上实际控制我声音的软件是谁。

我怀疑是alsamixer

确定ALSA之上的应用层软件

ALSA Utilities
Install the alsa-utils package. This contains (among other utilities) the alsamixer and amixer utilities. amixer is a shell command to change audio settings, while alsamixer provides a more intuitive ncurses based interface for audio device configuration.

If you need high quality resampling install the alsa-plugins package to enable upmixing/downmixing and other advanced features.

那么就是这个alsamixer了。
还有一个命令行版本的amixer。先不管它。
思考一下。
先看一下alsamixer的介绍。

alsamixer是一个ALSA的工具。支持多声卡多设备。
麦克应该也属于声卡一类。它属于声音的输入设备。
这里的输入输出应该是针对CPU的。
有一个简单的方法来验证是不是和alsamixer有关系。我先把这俩东西给删了。
一个是alsamixer,一个是amixer.

这两个都删除以后对声音并没有影响。
开机后默认静音。然后通过另外一个软件可以解除静音。
然后休眠后还是没声音。这个时候就去systemd的官网上面瞧瞧别人的bug。
好吧,事情的真凶已经快浮出水面。要么是systemd,要么,emmm,我真想不出来其他了。

直接在这位仁兄的仓库里搜alsa。
好吧,有两页,有点多。我看看archwiki有没有更多的介绍。

ALSA和系统化

在ALSA-utils的软件包提供了systemd单元的配置文件alsa-restore.service和alsa-state.service默认。

systemctl status alsa-restore.service
systemctl status alsa-state.service

这些将在安装过程中自动安装和激活(通过提供的软件包链接到sound.target)。两者都不默认运行,因为它们依靠用户的一些有意识的决定来知道应该采用哪种方法。选项如下:

alsa-restore.service/var/lib/alsa/asound.state在启动时读取并在关闭时写入更新的值,前提是已通过alsactl store在某个时间点运行来提供更新值
alsa-state.service(重新)在守护程序模式下启动actact,以在用户有意识地alsactl daemon至少启动一次之后再次连续跟踪并保持音量变化
两种方法互斥,您可以根据需要选择两种方法之一,有关更多信息,请参见alsactl(1)

您可以使用检查状态systemctl。

这个restore很重要,而且我需要systemctl启动它。

$ amixer sset Master unmute
$ amixer sset Speaker unmute
$ amixer sset Headphone unmute

哦,

systemctl status alsa-restore.service
systemctl status alsa-state.service

这俩是用来管理alsa驱动的。
看你选用哪种。如果输入上面的三条命令,那么默认启动的是alsa-restore.service,这俩服务只要有一个启动,另外哪个就不启动了。
emmm.再来休眠测试一下。
好吧,果然没有声音了。
再关机又启动又有声音了。
然后alsa-restore的这个服务只是启动了一下就finish了。
然后它在我休眠之后没有刷新。。。
我尝试用systemctl restart alsa-restore.service来启动。
服务也重新运行并且退出了,但是没有用。
我尝试重新运行这三个命令:

$ amixer sset Master unmute
$ amixer sset Speaker unmute
$ amixer sset Headphone unmute

然后再运行:systemctl restart alsa-restore.service.
然后还是不行。
所以,得出结论,想用这个alsa-state.service

网上有人说:我先重启试试。
```
pacman -S pulseaudio pulseaudio-alsa pavucontrol paprefs lib32-pulseaudio
```
```
journalctl --user --no-pager -b -u pulseaudio
//打印一段时间的启动信息
```
/etc/asound.state
````

[systemd 详细讲](https://www.cnblogs.com/alongdidi/p/systemd_systemctl.html)

一切可能都是这个玩意儿的锅。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值