18.04, 16.04 헤드폰이 감지되었지만 시작 후 자동으로 켜지지 않음


26

편집 :이 문제는 18.04에도 영향을 미치는 것으로 보입니다.

15.10 이후이 문제가 발생했지만 16.04로 업그레이드 한 후 실제로 기어를 연마하기 시작했습니다.

헤드폰을 연결했다고 가정 해 보겠습니다. 우분투로 재부팅 / 재 로그온 \ 부팅 하고 음악을 재생합니다. 헤드폰 대신 내장 스피커에서 나옵니다 .

오디오 설정 메뉴 에서 헤드폰이 감지되는 것을 볼 수 있지만 장치를 변경하거나 헤드폰을 다시 연결 한 후에 만 ​​작동합니다.

시작한 후 모든 것이 음소거되었으므로 15.10에서는 무시하기가 더 쉬웠습니다. 상기 시동 전에 헤드폰이 존재하는 경우, 헤드폰 및 스피커.

질문에 로그를 추가하려고하지만 실제로 어떤 로그를 얻는 지 모르겠습니다 (제안을 위해 열려 있습니다). 이 문제는 Dell Inspiron 3537 랩탑 에서 발생 하며 Realtek 사운드 카드가 내장되어 있습니다.

측면에 하나의 출력 잭이 있으며 입력과 출력 모두로 작동합니다.


출력 pacmd listcards

2 card(s) available.
    index: 0
    name: <alsa_card.pci-0000_00_03.0>
    driver: <module-alsa-card.c>
    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: <output:hdmi-stereo>
    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: <alsa_card.pci-0000_00_1b.0>
    driver: <module-alsa-card.c>
    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: <output:analog-stereo+input:analog-stereo>
    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"

1
이것은 잘못된 것 같습니다 (PulseAudio가 조여지는 의미)-처음 시도해도 헤드폰을 연결해야합니다. a는 수행 rm -rf ~/.pulse ~/.config/pulse다른 모든 전에. PA가 기본 설정을 사용하게합니다. 문제가 지속됩니까?
emk2203

그렇습니다. 모든 것이 그대로 헤드폰은 여전히 ​​감지됩니다. 위의 디렉토리 중 어느 것도 존재하지 않는 rm이 두 번 작동했는지 확인했습니다. 나중에 재부팅했습니다.
Błażej Michalik

당신은 게시 할 수 pacmd list-cards있습니까?
emk2203

@ emk2203 완료. 일부 키워드는 폴란드어로되어 있으므로 "wyjście"== "output", "wejście"== "input", "wewnętrzny mikrofon"== "내장 마이크".
Błażej Michalik

어떤 음악 플레이어를 사용하고 있습니까?
userDepth 2016 년

답변:


7

이것에 대한 나의 견해는 PulseAudio를 이용하는 다음과 같습니다. 우분투에 로그인 할 때 항상 헤드폰을 연결했다고 가정하면 다음은 우분투로 부팅 할 때 자동으로 기본 입력 및 출력으로 설정되도록합니다 (둘 다 원한다고 가정).

Ubuntu에서 터미널로 이동하여 색인 번호 만 수집 할 다음을 입력하십시오.

당신을 위해 출력 장치 :

pacmd list-sinks -많은 정보가 있지만 색인 번호와 새로운 기본 출력 장치가 될 해당 장치를 찾으십시오.

당신을 위해 입력 장치 :

pacmd list-sink-inputs또는 pacmd list-samples많은 정보가 있지만 색인 번호와 새 기본 입력 장치가 될 해당 장치를 찾으십시오. 목록 싱크 입력에 표시되지 않는 경우 목록 샘플을 사용하십시오.

지금까지 우분투에서는 헤드폰을 연결 한 상태에서 2 개의 색인 번호가 있어야합니다. 입력 및 출력을위한 것. 이제 펄스 오디오 기본 구성으로 이동합니다 :

sudo nano /etc/pulse/default.pa

마지막 줄로 이동하여 다음을 추가하십시오.

set-default-sink 1 - 의 색인을보고 출력 소스에 해당합니다 pacmd list-sinks. 1은 색인이므로 얻은 색인으로 변경하십시오.

set-default-source 5- 또는 의 색인을보고 입력 소스에 해당합니다 . 숫자 5는 인덱스이므로 얻은 인덱스로 변경하십시오.pacmd list-sink-inputspacmd list-samples

테스트 할 컴퓨터를 재부팅하여 파일을 저장하십시오. 일부 장치의 이름이 유사하기 때문에 (NVIDIA OR INTEL 오디오 소스와 같이) 정확한 색인 값을 얻었는지 검사하는 테스트가 포함됩니다.

모든 것이 올바르게 설정되면 컴퓨터를 부팅 할 때마다 Ubuntu가 기본 입 / 출력을 헤드폰으로 설정합니다. 헤드폰에 대해 이야기하고 있기 때문에 노이즈 감소를 위해 다른 답변을 사용하여 도움을 줄 수 있습니다. PulseAudio로 실시간 노이즈 제거?

참고 : 당신은 또한 사용할 수있는 pacmd list-sources대신 인덱스 번호를 사용하는 모든 장치를 확인하고, 당신은 할당 된 장치, 같은 표정 뭔가의 이름을 사용할 수 있습니다 :

alsa_input.usb-Logitech_Logitech_USB_Headset-00.analog-mono.echo-cancel어떤 이름을 찾아야하는지에 대한 아이디어를 제공합니다 (Super long I know). 이름은 사용하기가 더 정확하지만 기억하기 어렵 기 때문에 여기에서 하나를 사용할 수있는 옵션이 있습니다. 이름을 사용한 최종 결과는 다음과 같습니다.

set-default-source alsa_input.usb-Logitech_Logitech_USB_Headset-00.analog-mono.echo-cancel default.pa 파일에서 아이디어를 제공합니다.

GUI 옵션의 경우 pavucontrol또는 PulseAudio Volume Control을 권장 합니다. 장치를 입력 및 출력 장치의 기본 / 대체로 설정하는 옵션을 제공합니다. 두 가지 기술을 모두 사용하면 원하는 것을 얻을 수 있습니다.


나는 그것이 효과가 있다고 생각하지 않지만, 당신은 무언가에있을 수 있습니다. 내 컴퓨터에는 Intel HDMI와 Realtek 아날로그의 두 가지 사운드 장치가 있습니다. 색인은 0-HDMI, 1-아날로그입니다. Realtek 장치에는 스피커와 헤드폰의 두 가지 포트가 있습니다 (우선 순위 10k 및 9k).이 숫자는 스위칭 우선 순위와 관련이 있습니까? 내가 볼 수있는 한,이 포트는 실제로 default.pa제시 한 방식 으로 파일에서 색인을 생성 할 수 없습니다 .
Błażej Michalik

안녕 @ BłażejMichalik 실제로 이것은 여기에 게시하기 전에 아내의 컴퓨터와 광산에서 테스트되었습니다. 색인 혼동을 위해 끝에 언급 한대로 전체 이름을 사용할 수 있습니다.
Luis Alvarado

2
음, 작동하지만 헤드폰이 없어도 기본적으로 스피커가 꺼집니다. 이것이 15.10에서 경험 한 동작입니다. 그것은 per-se 수정이 아닙니다.
Błażej Michalik

예, 앞에서 언급했듯이 우분투는 헤드폰을 연결하면 기본적으로 헤드폰을 사용해야한다고 가정하지 않으므로 헤드폰을 연결해야합니다. 스피커를 끄려면 기본 스피커 만 설정하고 다른 스피커는 비활성화하지 않기 때문에 나는 전혀 모른다. 이는 일반적으로 하나의 잭 커넥터 (동시에 입력 / 출력)가있는 랩톱을 사용하는 경우에 발생합니다. 랩톱에 2 개의 연결이 있는지 (하나는 마이크, 다른 하나는 출력) 또는 하나가 있는지 묻습니다. 당신의 대답이 하나라면, 이제 왜 문제가 나타나는지 알 수 있습니다.
Luis Alvarado

그렇습니다. 그렇습니다. 그것이 중요하다는 것을 몰랐습니다.
Błażej Michalik 2016 년

3

사운드 장치가 0-HDMI 및 1-아날로그 인 경우 다음을 사용하여 헤드폰으로 전환 할 수 있습니다

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

그것을 영구적으로 만들려면 편집 /etc/pulse/default.pa하고 아래에 ### Make some devices default놓으십시오.

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

이제 모든 것이 원하는대로 작동합니다. 헤드폰 사용에 지쳤을 때이 점을 다시 언급하십시오.


1
이것은 시작시에 우분투가 헤드폰으로 전환되도록합니다. 헤드폰을 뽑아도 시작시 스피커에서 소리가 나지 않습니다. 이것이 15.10에서 경험 한 동작입니다.
Błażej Michalik

당신은 그것보다 나아지지 않을 것입니다. 링크 : bbs.archlinux.org/viewtopic.php?id=175951 bbs.archlinux.org/viewtopic.php?pid=1250505#p1250505 bbs.archlinux.org/viewtopic.php?id=212010 예술의 현재 상태 . 나는 누군가가 더 나은 솔루션을
생각 해낼

Meh. 나는 bash 해결 방법을 사용할 수 있습니다. 나는 스스로 요리 할 수 ​​있습니다-문제 없습니다. 그러나 그것은 단순히 일을 엉망으로 만듭니다. 6 개월마다 우분투 변경 로그 및 개인 보지 목록을 통해 본인 또는 다른 사람의 태만으로 인해 또는 API 또는 프론트 엔드로 업그레이드 한 경우 어디서 발생했는지 확인해야합니다. 그렇기 때문에 더 이상 이런 일을하지 않는 이유는 엉망이되고, 필연적으로 무언가를 업데이트 한 후에 잃어 버릴만한 가치가없는 것입니다.
Błażej Michalik

1
bash 해결 방법을 수행 할 수있는 경우 1) 헤드폰이 연결되어있는 경우에만 헤드폰을 선택하고 그렇지 않으면 스피커가 기본값이며 2) 헤드폰을 연결하면 자동으로 헤드폰으로 전환하고 스피커를 음소거합니다.
emk2203

이것은 데비안 스트레치에서 나를 위해 일했지만 pacmd list-sinks가 반환 한 인덱스 인 1 대신 0을 사용해야합니다.
로드리고

0

다음은 문제에 대한 해결책을 찾을 때까지 문제를 해결하는 데 도움이됩니다.

다음은 원하는 것을 수행 하지 않지만 필요한 것에 대한 모든 부분을 포함 하는 두 개의 스크립트입니다 .

두 번째 것은 작동하지만 실제로 이해하지 못하는 여러 가지 펄스 오디오를 포함합니다. 미리 사과드립니다. ;)

부팅 후 스피커를 다시 켜는 데 사용한 스크립트는 다음과 같습니다. 원하는대로 오디오 출력을 설정하도록 쉽게 수정할 수 있어야합니다.

#!/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 연결 여부에 따라 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: /ubuntu/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

문제는 lightgm (로그인 관리자) 이후에 실행되는 스크립트로는 충분하지 않다는 것입니다. 로그인하기 전에 사운드 효과가 재생됩니다. 초기화 후에 실행할 수 있습니까?
Błażej Michalik

"초기"소리가 당신에게 중요하다면, 그렇지 않을 것입니다. 부팅시 PATH에 사용 가능한 것이 거의 없습니다. 일을 처리하는 데 필요한 것입니다. 이 스크립트가 사용하는 것과 같은 나머지는 나중에 사용자가 로그인 할 때 PATH에 추가됩니다. pulseaudio가 시작된 시점을 모르겠습니다. 누군가 등을 깨우지 않고 부팅해야하는 경우,이를 해결하는 방법을 모르겠습니다.
Joe

또 다른 임의의 해결 방법은 재생되는 사운드 파일 (아마도 something.ogg)을 찾아 자동 파일로 바꾸는 것입니다. 여전히 문제를 해결하지는 않지만 도움이 될 수 있습니다. 나중에 다른 사운드 파일을 사용하려는 다른 항목이 있는지 여부에 따라 다릅니다. 그렇다면 원본을 저장하고 부팅 후 다시 넣을 수 있습니다. 그러나 매번 올바른 것을 얻으려면 systemd로 혼란을 시작해야합니다.
Joe

@DavidFoerster-기술적으로 정확하지만 (내 대답은 "이것은 답이 아닙니다"로 시작 함) 누군가에게 솔루션을 제공 할 수있는 도구 나 도구를 제공하는 것이 IMHO를 침묵시키는 것보다 낫습니다. 내가 게시했을 때 다른 답변은 없었습니다. 내 콘텐츠가 주석 또는 일련의 주석에 맞지 않았으며 코드가 연결되었거나 읽을 수 없었을 것입니다. SE 주석이 전체 형식을 지원하면 게시물을 하나로 묶었을 것입니다.
Joe

@DavidFoerster : 링크 한 도움말 페이지 를 보면 질문에 대한 부분 답변 처럼 보입니다 . 그것은 매우하지 않을 수 있습니다 좋은 대답하지만, 심지어 용어의 SE의 정의에 유효한 "대답"할 않는 부분적인 솔루션을 제공하기 위해 시도.
Ilmari Karonen

0

좋아, 당신이 시도 할 수있는 것이 있다고 생각합니다. 멀티미디어 시스템
을 검색하는 경우 대시에서 선택하십시오 . 그것을 열고 Audio기본 오디오 입력 및 출력 장치를 선택할 수 있는 탭으로 이동 하십시오.

기본적으로 설치해야합니다. 그렇지 않은 경우 언제든지 실행할 수 있습니다 sudo apt-get install gnome-media. 대시에 표시되지 않으면 다음을 실행하십시오.

gksudo gedit /usr/share/applications/gstreamer-properties.desktop. 결과 텍스트 파일에서 NoDisplay=.Change NoDisplay=trueto to NoDisplay=false Hope로 시작하는 줄로 이동 하십시오 !


나는 며칠 전에 우분투 그놈으로 전환해야했고,이 측면에서 패킷 그놈 미디어에는 후보가 없습니다.
Błażej Michalik

좋구나. 내가 당신을 위해 파낼 수있는 것을 볼 수 있습니다. 행운을 빕니다!
James
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.