除非在 Debian Buster 中 root,否则没有声音

除非在 Debian Buster 中 root,否则没有声音

我刚刚在我的 Debian SID 计算机上进行了 dist 升级,声音就消失了。

我可以在 root 中播放音频文件,但不能以普通用户身份播放。我检查过我在“音频”组中。我检查过是否有任何东西通过运行而静音阿尔萨混合器,但所有线路均已启动并正在运行。

这是我在计算机上的音频输出:

$ lspci  | grep Audio
00:1b.0 Audio device: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller (rev 05)
01:00.1 Audio device: NVIDIA Corporation GK107 HDMI Audio Controller (rev a1)

我有一个未插入的 HDMI 输出(NVIDIA 控制器)。我的音频接头连接到我的英特尔控制器上。我跑步时可以看到这个司机阿尔萨混合器,但只能看到我的显卡的 HDMI 输出帕武控制输出设备。

在此输入图像描述

列出我的音频接收器时,我只得到一个空设备:

$ pacmd list-sinks
1 sink(s) available.
  * index: 2
    name: <auto_null>
    driver: <module-null-sink.c>
    flags: DECIBEL_VOLUME LATENCY FLAT_VOLUME DYNAMIC_LATENCY
    state: IDLE
    suspend cause: 
    priority: 1000
    volume: front-left: 56362 /  86% / -3,93 dB,   front-right: 55706 /  85% / -4,23 dB
            balance -0,01
    base volume: 65536 / 100% / 0,00 dB
    volume steps: 65537
    muted: no
    current latency: 5,63 ms
    max request: 6 KiB
    max rewind: 6 KiB
    monitor source: 2
    sample spec: s16le 2ch 44100Hz
    channel map: front-left,front-right
                 Stéréo
    used by: 0
    linked by: 1
    configured latency: 40,00 ms; range is 0,50 .. 2000,00 ms
    module: 20
    properties:
        device.description = "Sortie factice"
        device.class = "abstract"
        device.icon_name = "audio-card"

我不太了解声音系统在 Debian 中是如何工作的,但我想我明白我的普通用户没有访问 Intel 芯片的权利。从这里开始,我被困住了,不知道该怎么办......

编辑:

我设法通过禁用 alsamixer 中的自动静音来恢复声音。此设置在系统更新期间已发生某种程度的更改。

但重启后,问题又出现了,但自动静音仍然关闭。

感谢 dirkt 的回答,我想我已经找到了这个问题的根源:运行时aplay-L作为普通用户和 root 用户,我注意到一些差异:

$ aplay -L
default
    Playback/recording through the PulseAudio sound server
sysdefault:CARD=PCH
    HDA Intel PCH, ALC887-VD Analog
    Default Audio Device
$ sudo aplay -L 
default:CARD=PCH
    HDA Intel PCH, ALC887-VD Analog
    Default Audio Device
sysdefault:CARD=PCH
    HDA Intel PCH, ALC887-VD Analog
    Default Audio Device

看来以简单用户运行时默认卡不一样。选择时可以有一些声音系统默认值代替默认普通用户卡。

$ aplay -D sysdefault sound.wav

但现在,我有点卡住了。我想我已经查明了问题的根源,但不知道如何解决它......

答案1

我通过运行以下命令解决了这个问题:

sudo apt-get remove --purge timidity

请确保这只会删除胆怯胆怯守护进程。据我了解,守护进程在启动时获取一些资源并阻止其他服务找到声卡。我认为胆怯与 MIDI 文件有关,因此请确保在卸载软件包时不需要它,并确保您知道要卸载的内容。

希望这可以解决某些用户的问题。当上述问题解决后,您可能希望将来重新安装 timidity。

答案2

声音简要概述:声音硬件由内核驱动程序(以前是 ALSA 的一部分)管理,ALSA 提供了访问内核驱动程序的库(这就是您在 alsamixer 中看到的),Pulseaudio 运行在 ALSA 之上。原因之一是,无需额外的努力,ALSA 设备只能由单个程序使用,而 Pulseaudio 通过提供传输层允许多个程序使用硬件。

Pulseaudio 没有接收器意味着 Pulseaudio 无法获取 ALSA 设备,可能是因为 (1) 权限错误,(2) 其他东西已经在使用它们,(3) 完全不同的东西出了问题。

因此,第一步是停止 Pulseaudio,然后使用它aplay -L来查看您的 ALSA 设备,并尝试aplay -D ... audio_file.wav查看是否可以直接访问该设备。根据结果​​,下一步是查看是什么阻止了设备(其他东西已经更早启动并正在使用它),或者找出为什么 Pulseaudio 不使用 ALSA 设备(例如加载模块 alsa 卡直接使用pacmd,查看错误消息/日志条目)。如何停止 Pulseaudio 取决于您如何启动它,可能使用 systemd,也可能通过桌面系统登录。

使用等检查正在运行的进程的命令行ps axu可能会给出有关上述几点的提示,并且还将确保 Pulseaudio 已正确停止,并且不会自行重新启动。

答案3

问题解决:升级后,不知道为什么,输出是自动静音的。我只需要在 alsamixer 中更改它。

有时,不需要深入挖掘。

答案4

实际上,问题来自于您拥有 PulseAudio 和带有 blob 的 NVidia GPU。

解决方案包括通过在 /etc/pulse/daemon.conf 中插入垃圾(仅在文件末尾插入一个字母)来阻止 PulseAudio 启动。然后你将只能通过 AlsaMixer 设置音量,但至少声音会回来。

我已针对此问题提出了#918522 票证。请随意贡献。

相关内容