直通后声卡仍无法使用
如果重启发现PulseAudio没有正确对接上声卡,可能还需要再进一步。这也是正常的,包括我的键鼠也遇到类似的问题,我猜测PulseAudio 可能在 Xorg 之前启动,无法检测到 ALSA 声卡。
PulseAudio 不会自动加载 module-udev-detect 和 module-alsa-card。因此需要手动持久化 ALSA 设备配置。
一次性测试
声卡重新检测、识别、启用,重启后失效。PulseAudio无法正确识别声卡情况,因此需要取消加载相关模块,并重新启用。这里重点需要检查自己的声卡张数情况,一般就是只有一张。如果有效,我们就进行持久化配置
l@CT101:~$ pactl unload-module module-udev-detect l@CT101:~$ pactl unload-module module-alsa-card l@CT101:~$ pactl load-module module-udev-detect 10 l@CT101:~$ pactl load-module module-alsa-card device_id=0 11 pulseaudio --kill pulseaudio --start
持久化 ALSA 设备配置
root@CT101:~# nano /etc/pulse/default.pa ### module-udev-detect应该已存在,添加module-alsa-card即可 load-module module-udev-detect load-module module-alsa-card device_id=0
补充1
在 PulseAudio 中,device_id=0 代表 第一张 ALSA 声卡,相当于 hw:0(ALSA 设备号)。module-alsa-card 模块的作用是加载一个完整的 ALSA 声卡,包括其输入和输出设备。device_id=0 指定要加载的声卡的 ID。通常,device_id=0 对应于系统中的第一个声卡。这个命令会使 PulseAudio 识别并管理整个声卡,包括其所有可用的输入和输出设备。
本质:加载整个声卡,包括输入输出。
补充2
如果 module-udev-detect 不能加载,可以尝试 module-alsa-sink。持久化配置/etc/pulse/default.pa中,也要修改为对应的项
pactl load-module module-alsa-sink device=hw:0
module-alsa-sink 模块的作用是加载一个特定的 ALSA 输出设备(sink),device=hw:0 指定要加载的 ALSA 设备。hw:0 通常对应于第一个声卡的第一个输出设备。这个命令只会加载指定的输出设备,而不会加载整个声卡或其其他输入/输出设备。
本质:加载声卡的某一个输出设备。