18.04,16.04检测到耳机,但启动后未自动打开

编辑:问题似乎也影响18.04。

我从15.10开始就遇到了这个问题,但是在升级到16.04后它开始变得非常磨损。

假设我已经插入了耳机。我重新启动\ relog on \ boot to ubuntu,然后播放音乐。 它来自内置扬声器而不是耳机

我可以看到在音频设置菜单中检测到耳机 ,但只有在我更换设备或重新插入耳机后才能正常工作。

这在15.10更容易被忽略,因为在那之后,在创业之后,一切都被静音了。 耳机和扬声器,如果在上述启动之前有耳机。

我会在问题中添加日志,但我真的不知道哪些,或者如何获取它们(我愿意接受建议)。 Dell Inspiron 3537笔记本电脑出现问题,内置Realtek声卡。

它的侧面有一个输出插孔,既可作为输入,也可作为输出。


pacmd listcards输出

 2 card(s) available. index: 0 name:  driver:  owner module: 6 properties: alsa.card = "0" alsa.card_name = "HDA Intel HDMI" alsa.long_card_name = "HDA Intel HDMI at 0xc0810000 irq 49" alsa.driver_name = "snd_hda_intel" device.bus_path = "pci-0000:00:03.0" sysfs.path = "/devices/pci0000:00/0000:00:03.0/sound/card0" device.bus = "pci" device.vendor.id = "8086" device.vendor.name = "Intel Corporation" device.product.id = "0a0c" device.product.name = "Haswell-ULT HD Audio Controller" device.form_factor = "internal" device.string = "0" device.description = "Wbudowany dźwięk" module-udev-detect.discovered = "1" device.icon_name = "audio-card-pci" profiles: output:hdmi-stereo: Wyjście Digital Stereo (HDMI) (priority 5400, available: unknown) output:hdmi-surround: Wyjście Digital Surround 5.1 (HDMI) (priority 300, available: unknown) output:hdmi-surround71: Wyjście Digital Surround 7.1 (HDMI) (priority 300, available: unknown) output:hdmi-stereo-extra1: Wyjście Digital Stereo (HDMI 2) (priority 5200, available: unknown) output:hdmi-surround-extra1: Wyjście Digital Surround 5.1 (HDMI 2) (priority 100, available: unknown) output:hdmi-surround71-extra1: Wyjście Digital Surround 7.1 (HDMI 2) (priority 100, available: unknown) output:hdmi-stereo-extra2: Wyjście Digital Stereo (HDMI 3) (priority 5200, available: unknown) output:hdmi-surround-extra2: Wyjście Digital Surround 5.1 (HDMI 3) (priority 100, available: unknown) output:hdmi-surround71-extra2: Wyjście Digital Surround 7.1 (HDMI 3) (priority 100, available: unknown) off: Wyłączone (priority 0, available: unknown) active profile:  sinks: alsa_output.pci-0000_00_03.0.hdmi-stereo/#0: Wbudowany dźwięk Digital Stereo (HDMI) sources: alsa_output.pci-0000_00_03.0.hdmi-stereo.monitor/#0: Monitor of Wbudowany dźwięk Digital Stereo (HDMI) ports: hdmi-output-0: HDMI / DisplayPort (priority 5900, latency offset 0 usec, available: no) properties: device.icon_name = "video-display" hdmi-output-1: HDMI / DisplayPort 2 (priority 5800, latency offset 0 usec, available: no) properties: device.icon_name = "video-display" hdmi-output-2: HDMI / DisplayPort 3 (priority 5700, latency offset 0 usec, available: no) properties: device.icon_name = "video-display" index: 1 name:  driver:  owner module: 7 properties: alsa.card = "1" alsa.card_name = "HDA Intel PCH" alsa.long_card_name = "HDA Intel PCH at 0xc0814000 irq 48" alsa.driver_name = "snd_hda_intel" device.bus_path = "pci-0000:00:1b.0" sysfs.path = "/devices/pci0000:00/0000:00:1b.0/sound/card1" device.bus = "pci" device.vendor.id = "8086" device.vendor.name = "Intel Corporation" device.product.id = "9c20" device.product.name = "8 Series HD Audio Controller" device.form_factor = "internal" device.string = "1" device.description = "Wbudowany dźwięk" module-udev-detect.discovered = "1" device.icon_name = "audio-card-pci" profiles: input:analog-stereo: Wejście Analogowe stereo (priority 60, available: unknown) output:analog-stereo: Wyjście Analogowe stereo (priority 6000, available: unknown) output:analog-stereo+input:analog-stereo: Analogowy dupleks stereo (priority 6060, available: unknown) off: Wyłączone (priority 0, available: unknown) active profile:  sinks: alsa_output.pci-0000_00_1b.0.analog-stereo/#1: Wbudowany dźwięk Analogowe stereo sources: alsa_output.pci-0000_00_1b.0.analog-stereo.monitor/#1: Monitor of Wbudowany dźwięk Analogowe stereo alsa_input.pci-0000_00_1b.0.analog-stereo/#2: Wbudowany dźwięk Analogowe stereo ports: analog-input-internal-mic: Wewnętrzny mikrofon (priority 8900, latency offset 0 usec, available: unknown) properties: device.icon_name = "audio-input-microphone" analog-input-headphone-mic: Mikrofon (priority 8700, latency offset 0 usec, available: no) properties: device.icon_name = "audio-input-microphone" analog-input-headset-mic: Mikrofon na słuchawkach (priority 8700, latency offset 0 usec, available: no) properties: device.icon_name = "audio-input-microphone" analog-output-speaker: Głośniki (priority 10000, latency offset 0 usec, available: unknown) properties: device.icon_name = "audio-speakers" analog-output-headphones: Słuchawki (priority 9000, latency offset 0 usec, available: no) properties: device.icon_name = "audio-headphones" 

我对此的看法将是以下利用PulseAudio。 假设当你登录Ubuntu时,你总是连接了你的耳机,那么下面将确保当你启动到Ubuntu时它会自动将它设置为默认的输入和输出(假设你想要两者)。

在Ubuntu上转到终端并键入以下内容,您只能从中收集索引号:

对于您的输出设备

pacmd list-sinks – 会有很多信息,但会查找索引号和相应的设备,这些设备将成为新的默认输出设备。

对于您的INPUT设备

pacmd list-sink-inputspacmd list-samples – 会有很多信息,但会查找索引号和相应的设备,这些设备将成为新的默认输入设备。 在list-sink中使用list-samples,如果它没有显示。

到目前为止,在Ubuntu上,连接耳机后,你应该有2个索引号。 一个用于输入和输出。 现在我们将编辑您的pulseaudio默认配置:

 sudo nano /etc/pulse/default.pa 

转到最后一行,只需添加以下内容:

set-default-sink 1 – 在查看pacmd list-sinks的索引后,它对应于Output Source 。 1是索引,因此将其更改为您获得的索引。

set-default-source 5 – 在查看pacmd list-sink-inputspacmd list-samples的索引后,这对应于输入源 。 数字5是索引,因此将其更改为您获得的索引。

保存文件重启计算机以进行测试。 测试涉及检查您是否获得了正确的索引值,因为某些设备具有相似的名称(如NVIDIA OR INTEL音频源)。

如果一切设置正确,每次启动计算机时,都应该看到Ubuntu将默认输入/输出设置为耳机。 既然你在谈论耳机,为了减少噪音,你可以用我的其他答案来帮助你: 使用PulseAudio实时去除噪音?

注意:您还可以使用pacmd list-sources查看所有设备,而不是使用索引号,您可以使用指定设备的名称,如下所示:

alsa_input.usb-Logitech_Logitech_USB_Headset-00.analog-mono.echo-cancel让你知道要查找的名字(超长我知道)。 名称使用起来更准确,但更难以记住,因此您可以选择使用其中一个名称。 使用名称的最终结果如下:

default.pa文件中的set-default-source alsa_input.usb-Logitech_Logitech_USB_Headset-00.analog-mono.echo-cancel ,只是为了给你一个想法。

对于GUI选项,我建议使用pavucontrol或PulseAudio Volume Control。 它提供了将设备设置为输入和输出设备的默认/后备的选项。 使用这两种技术可能会给你你想要的。

如果您的声音设备是0 – HDMI和1 – 模拟,您可以切换到耳机

 $ pacmd set-sink-port 1 analog-output-headphones 

要使其永久化,请编辑/etc/pulse/default.pa并在### Make some devices default下方的底部### Make some devices default设置:

 set-default-sink 1 set-sink-port 1 analog-output-headphones 

现在一切都应该按照需要运作。 当您厌倦使用耳机时,请确保再次对此进行评论。

以下内容可帮助您解决问题,直到找到问题的解决方法。

以下是一些不能满足您需求的脚本,但可能包含您需要的所有部分。

第二个包含一堆有效的pulseaudio东西,但我真的不明白。 我提前道歉。 ;)

这是我用来在启动后重新打开扬声器的脚本。 应该很容易修改以根据需要设置音频输出。

 #!/bin/bash ## temporary kludge to turn the speakers back on at login SOUND=1 if [ "${1}" == "-q" ] then shift SOUND=0 fi amixer set Speaker unmute > /dev/null amixer set Speaker 100 > /dev/null (( SOUND )) && mplayer -quiet /usr/lib/libreoffice/basis3.4/share/gallery/sounds/kongas.wav > /dev/null 2>&1 

根据HDMI是否连接,此function可自动在HDMI和模拟输出之间切换声音输出。 不是你想要的,但它确实检测到音频输出的去向,并知道如何将其切换到其他地方。

 #!/bin/bash ## audio_select ## Copyleft 08/11/2014 - JPmicrosystems ## Last modified 05/14/2015 ## Added code to detect ramdass vs halo to handle older pactl version ## Added code to tell if the audio was already selected ## If HDMI is connected, audio output is channelled to HDMI ## Otherwise it's channelled to internal audio ## From: https://askubuntu.com/questions/458194/switching-to-hdmi-audio-when-hdmi-is-plugged-into-a-laptop-14-04 ## Script needs to be triggered by a udev rule ## Works manually now ## udevadm monitor produces the following output ## Plug in HDMI udev events ##KERNEL[11363.720327] change /devices/pci0000:00/0000:00:02.0/drm/card0 (drm) ##UDEV [11363.722979] change /devices/pci0000:00/0000:00:02.0/drm/card0 (drm) ## Unplug HDMI udev events ##KERNEL[11392.043367] change /devices/pci0000:00/0000:00:02.0/drm/card0 (drm) ##UDEV [11392.046155] change /devices/pci0000:00/0000:00:02.0/drm/card0 (drm) ## Make a script name in SCRIPT_NAME function script_name { ## See if the calling script has a name string defined if [ -n "${NAME}" ] then SCRIPT_NAME="${NAME}" else SCRIPT_NAME="$(basename $0)" fi } ## Get active audio port type function get_active_audio_port { ## first very rough cut local ACTIVE_AUDIO_PORT_NAME RC=0 ## Success ACTIVE_AUDIO_PORT_NAME="$(pactl list | grep 'Active Port:' | awk '{print $3}')" case "${ACTIVE_AUDIO_PORT_NAME}" in "analog-output-speaker") ACTIVE_AUDIO_PORT="Speakers" ;; "analog-output-headphones") ACTIVE_AUDIO_PORT="Headphones" ;; "hdmi-output-0") ACTIVE_AUDIO_PORT="HDMI" ;; *) ACTIVE_AUDIO_PORT="Unknown" RC=1 ## Failure ;; esac return $RC } ##source "$HOME/bin/bash_trace" ## debug script_name HOST="$(hostname)" HDMI_STATUS=$(cat /sys/class/drm/card0/*HDMI*/status) INPUTS=($(pacmd list-sink-inputs | grep index | awk '{print $2}')) DSPTIME=10 # yad message persistence time YOPT="--center --on-top --title ${SCRIPT_NAME}" # yad common options get_active_audio_port ## Find out where audio is going now if ((RC)) then yad ${YOPT} --info --button=gtk-ok:0 --text="Failed to detect current audio source" --width 250 --timeout=${DSPTIME} exit 1 fi if [ $HDMI_STATUS = "connected" ] then if [ "${ACTIVE_AUDIO_PORT}" == "HDMI" ] then yad ${YOPT} --info --button=gtk-ok:0 --text="Audio already set to HDMI" --width 250 --timeout=${DSPTIME} exit 1 fi pactl set-card-profile 0 output:hdmi-stereo if [ "$HOST" == "ramdass" ] ## Using newer version of pactl then pactl set-default-sink alsa_output.pci-0000_00_1b.0.hdmi-stereo else pactl set-sink-port alsa_output.pci-0000_00_1b.0.hdmi-stereo hdmi-output-0 fi for i in ${INPUTS[*]} do pacmd move-sink-input $i alsa_output.pci-0000_00_1b.0.hdmi-stereo &> /dev/null done yad ${YOPT} --info --button=gtk-ok:0 --text="Audio directed to HDMI" --width 250 --timeout=${DSPTIME} else if [ "${ACTIVE_AUDIO_PORT}" == "Speakers" ] || [ "${ACTIVE_AUDIO_PORT}" == "Headphones" ] then yad ${YOPT} --info --button=gtk-ok:0 --text="Audio already set to Analog Output" --width 250 --timeout=${DSPTIME} exit 1 fi pactl set-card-profile 0 output:analog-stereo if [ "$HOST" == "ramdass" ] ## Using newer version of pactl then pactl set-default-sink alsa_output.pci-0000_00_1b.0.analog-stereo else pactl set-sink-port alsa_output.pci-0000_00_1b.0.analog-stereo analog-output-speaker fi for i in ${INPUTS[*]} do pacmd move-sink-input $i alsa_output.pci-0000_00_1b.0.analog-stereo &> /dev/null done yad ${YOPT} --info --button=gtk-ok:0 --text="Audio directed to Analog Output" --width 250 --timeout=${DSPTIME} fi 

好吧,我想我有一些你可以尝试的东西。
如果您在短划线上搜索多媒体系统选择 。 打开它并转到“ Audio选项卡,您可以在其中选择默认音频输入和输出设备。

这应该默认安装。 如果不是,你可以随时运行sudo apt-get install gnome-media 。 如果未在Dash中显示,请运行:

gksudo gedit /usr/share/applications/gstreamer-properties.desktop 。 在生成的文本文件中,转到以NoDisplay=.开头的行NoDisplay=.NoDisplay=true更改为NoDisplay=false希望NoDisplay=false帮助!

有两种可能性。

在BIOS中,选择高清音频到AC’97(对我有用)或终端类型:

 sudo apt-get install kubuntu-desktop 

并选择KDE。