web-dev-qa-db-ja.com

18.04、16.04ヘッドフォンは検出されましたが、起動後に自動的にオンになりません

編集:この問題は18.04にも影響するようです

15.10以降この問題がありますが、16.04へのアップグレードを行った後、本当に歯車を磨き始めました。

ヘッドフォンが接続されているとしましょう。I reboot\relog on\boot to ubuntuで、音楽を再生します。 ヘッドフォンの代わりにスピーカーに内蔵されているから出てきます。

ヘッドフォンはオーディオ設定内で検出されますメニューが表示されますが、デバイスを変更するかヘッドフォンを再接続した後にのみ機能します。

これは、15.10では無視するのが簡単でした。なぜなら、当時は起動後にすべてがミュートされていたからです。スタートアップの前にヘッドフォンがあった場合は、ヘッドフォンとスピーカー。

質問にログを追加しますが、どのログを取得するのか、どのように取得するのかはわかりません(提案を受け付けています)。この問題はDell Inspiron 3537ラップトップで発生し、内部にRealtekサウンドカードがあります。

入力と出力の両方として機能する側面に1つの出力ジャックがあります。


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"
26

これに関する私の考えは、PulseAudioを利用した次のようなものです。 Ubuntuにログインするときにヘッドフォンを常に接続していると仮定すると、次のようにすると、Ubuntuを起動したときに自動的にヘッドフォンがデフォルトの入力および出力に設定されます(両方が必要であると仮定)。

Ubuntuでターミナルに移動し、インデックス番号のみを収集する次のものを入力します。

OUTPUT DEVICESの場合:

pacmd list-sinks-多くの情報がありますが、インデックス番号と、新しいデフォルトの出力デバイスとなる対応するデバイスを探してください。

INPUT DEVICES

pacmd list-sink-inputs OR pacmd list-samples-多くの情報がありますが、インデックス番号と、新しいデフォルトの入力デバイスとなる対応するデバイスを探します。表示されないlist-sink-inputsの場合は、list-samplesを使用します。

これまでのところ、Ubuntuでは、ヘッドフォンを接続した状態で、2つのインデックス番号が必要です。入出力用に1つ。次に、pulseaudioのデフォルト構成を編集します。

Sudo nano /etc/Pulse/default.pa

最後の行に移動して、次を追加します。

set-default-sink 1-これは、pacmd list-sinksのインデックスを見た後のOutput Sourceに対応します。 1はインデックスなので、取得したものに変更します。

set-default-source 5-これは、pacmd list-sink-inputsまたはpacmd list-samplesのインデックスを見た後のInput Sourcesに対応します。番号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ボリュームコントロールをお勧めします。入力および出力デバイスのデフォルト/フォールバックとしてデバイスを設定するオプションを提供します。両方の手法を使用すると、必要なものが得られる場合があります。

7
Luis Alvarado

サウンドデバイスが0(HDMI)および1(アナログ)の場合、次の方法でヘッドフォンに切り替えることができます。

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

永続的にするには、/etc/Pulse/default.paを編集し、一番下の### Make some devices default putの下に:

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

必要に応じてすべてが動作するはずです。ヘッドフォンの使用にうんざりしている場合は、このコメントを再度コメント化してください。

3
emk2203

さて、私はあなたが試すことができる何かを持っていると思います。
ダッシュでMultimedia Systems Selectを検索した場合。それを開き、Audioタブに移動します。ここで、デフォルトのオーディオ入力および出力デバイスを選択できます。

これはデフォルトでインストールする必要があります。そうでない場合は、Sudo apt-get install gnome-mediaをいつでも実行できます。ダッシュに表示されない場合は、次を実行します。

gksudo gedit /usr/share/applications/gstreamer-properties.desktop。結果のテキストファイルで、NoDisplay=.で始まる行に移動しますNoDisplay=trueNoDisplay=falseに変更します。

0
James

以下は、問題の修正が見つかるまで問題を回避するのに役立ちます。

以下は、必要なことをnotするスクリプトですが、おそらく必要なものすべてが含まれているスクリプトがいくつかあります。

2番目のものには、機能するが実際には理解していないpulseaudioの束が含まれています。事前におaび申し上げます。 ;)

起動後にスピーカーをオンに戻すために使用したスクリプトを次に示します。必要に応じてオーディオ出力を設定するように変更するのは簡単です。

#!/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: 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
0
Joe