因此,每次重新启动时,我听不到任何声音,需要每次重新配置默认选项为“模拟输出”。
我该如何移除/禁用特定的音频输出,比如HDMI,或者设置一个默认选项来覆盖现有的音频输出?
blacklist snd_hda_codec_hdmi
在编辑default.pa之前,另一种方法是将隐藏目录~/.pulseaudio
重命名为类似~/.pulseaudio.000
的名称,放置在您的/home目录中。这是存储用户定义设置的位置。如果删除或重命名它,它将立即从/etc/pulse/default.pa的设置中重新创建。
只有当这对您的系统没有影响时,可能udev会将HDMI接口加载为默认输出设备。那么一个方法就是按照HagenaarsDotNu提到的方式编辑default.pa文件。请务必备份当前的default.pa文件。查找以下部分,它相当容易理解(请注意,在Ubuntu >10.04中,hal-detect将不起作用)。
### Load audio drivers statically (it's probably better to not load
### these drivers manually, but instead use module-hal-detect --
### see below -- for doing this automatically)
#load-module module-alsa-sink
#load-module module-alsa-source device=hw:1,0
#load-module module-oss device="/dev/dsp" sink_name=output source_name=input
#load-module module-oss-mmap device="/dev/dsp" sink_name=output source_name=input
#load-module module-null-sink
#load-module module-pipe-sink
#
### Automatically load driver modules depending on the hardware available
.ifexists module-udev-detect.so
load-module module-udev-detect
.else
### Alternatively use the static hardware detection module (for systems that
### lack udev support)
load-module module-detect
.endif
这将使内部音频和HDMI接口都能输出音频。将此虚拟输出设备设置为默认设备,您就可以拥有所有选项。
我在Launchpad上找到了这个建议
该建议指出您应该编辑pulseaudio设置
sudo nano /etc/pulse/default.pa
将#set-default-sink output
替换为:set-default-sink {您的设备名称}
设备名称可以通过查看pactl list
输出中的Card部分的name
字段找到。
我已经检查过,这种方法在10.10版本仍然有效。
找到了更好的选择
按照下面描述的方法使用systemd可以在启动时工作,但是在将设备插入到已经运行的系统中时却不起作用。
要在热插拔和启动时忽略音频,udev规则是更好的选择。
使用lsusb
命令来识别你想要忽略的设备的供应商/产品ID。
$ lsusb
总线 006 设备 003: ID 17e9:4307 DisplayLink LAPDOCK
# <其他我不关心的设备>
ID
部分给出了我们需要的魔术数字。
创建一个udev规则文件,例如/etc/udev/rules.d/80-ignore-audio-cards.rules
,为pulse audio设置一个环境变量。
对我来说,这个文件看起来像是:
ATTRS{idVendor}=="17e9", ATTRS{idProduct}=="4307", ENV{PULSE_IGNORE}="1"
我随意选择了80-
作为文件名的前缀。如果你有任何与pulseaudio相关的规则,请确保你的新文件以较低的数字开头。
重新启动以确保生效。
之前的回答:
遇到了同样的问题,给出的答案在重新启动后对我没有起作用。我认为我的问题是卡片的延迟检测;当pulseaudio启动时,它没有看到所有的卡片,而且module-switch-on-connect
和module-switch-on-port-available
的某种组合总是重置我的选择。
我通过创建一个systemd用户单元来解决这个问题,在我登录时运行pactl set_card_profile "$MY_CARD_NAME" off
。
找到你不想要的卡的名称;希望名称足够告诉你是哪一张卡:
$ pactl list cards | grep -E '(Card|Name:)'
Card #0
Name: alsa_card.usb-DisplayLink_LAPDOCK_U3D2338486250-02
Card #1
Name: alsa_card.pci-0000_01_00.1
Card #2
Name: alsa_card.usb-Plantronics_Plantronics_Blackwire_5220_Series_2961D11C621649939CED8BF57E910BA5-00
Card #3
Name: alsa_card.usb-HD_Web_Camera_HD_Web_Camera_Ucamera001-02
Card #4
Name: alsa_card.pci-0000_00_1f.3
对我来说,是"LAPDOCK"一直在抢走我的音频。
创建systemd单元,调用pactl
并禁用该卡:
$ mkdir -p ~/.config/systemd/user
$ nano ~/.config/systemd/user/disable-cards.service
添加以下内容,将ExecStart
行更改为所需删除的卡的引用:
[Unit]
Description=禁用卡
[Service]
Type=simple
Restart=on-failure
ExecStart=pactl set-card-profile "alsa_card.usb-DisplayLink_LAPDOCK_U3D2338486250-02" off
[Install]
WantedBy=default.target
启用服务:systemctl --user enable disable-cards
/etc/pulse/default.pa
来禁用该功能,并注释掉(使用#
)或删除以下内容:load-module module-switch-on-port-available