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


26

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

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

ヘッドフォンを接続しているとしましょう。私は 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"

1
これは間違っているようです(PulseAudioがねじ込まれているという意味で)-ヘッドフォンを接続するのは、最初の試行でも選択する必要があります。rm -rf ~/.pulse ~/.config/pulse他のすべての前に。これにより、PAはデフォルト設定を使用します。問題は解決しませんか?
emk2203

はい、そうです。すべてはそのままで、ヘッドフォンはまだ検出されています。rmが機能することを2回確認しました。上記のディレクトリは存在しませんでした。その後、再起動しました。
ブワジエミカリック

投稿してもらえますpacmd list-cardsか?
emk2203

@ emk2203完了。いくつかのキーワードはポーランド語であるため、「wyjście」==「output」、「wejście」==「input」、「wewnętrznymikrofon」==「internal Microphone」です。
ブルワジミカリック

どの音楽プレーヤーを使用していますか?
userDepth

回答:


7

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

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

あなたのための出力デバイス

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

あなたのための入力デバイス

pacmd list-sink-inputsまたは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ます。1はインデックスなので、取得したものに変更します。

set-default-source 5-これはまたはのインデックスを見た後の入力ソースに対応します。番号5はインデックスなので、取得したものに変更します。pacmd list-sink-inputspacmd list-samples

ファイルを保存し、コンピューターを再起動してテストします。一部のデバイスには類似した名前があるため(NVIDIAやINTELオーディオソースなど)、テストでは正しいインデックス値を取得したかどうかを確認します。

すべてが正しくセットアップされていれば、コンピューターを起動するたびに、Ubuntuがヘッドフォンのデフォルトの入力/出力を設定するのが見えるはずです。あなたがヘッドフォンについて話しているので、ノイズリダクションのためにあなたはそれであなたを助けるために私の他の答えを使うことができます:PulseAudioによるリアルタイムのノイズ除去?

注:また、pacmd list-sourcesすべてのデバイスを表示するために使用できます。また、インデックス番号を使用する代わりに、次のような割り当てられたデバイスの名前を使用することもできます。

alsa_input.usb-Logitech_Logitech_USB_Headset-00.analog-mono.echo-cancel検索する名前のアイデアを提供します(私は知っています)。名前はより正確に使用できますが、覚えにくいので、ここでどちらかを使用するオプションがあります。名前を使用した最終結果は次のようになります。

set-default-source alsa_input.usb-Logitech_Logitech_USB_Headset-00.analog-mono.echo-cancel default.paファイルで、アイデアを提供します。

GUIオプションについては、pavucontrolPulseAudioボリュームコントロールをお勧めします。入力および出力デバイスのデフォルト/フォールバックとしてデバイスを設定するオプションを提供します。両方の手法を使用すると、必要なものが得られる場合があります。


私はそれがうまくいくとは思わないが、あなたは何かの上にいる可能性がある。実は、私のマシンには、Intel HDMIとRealtek analogの2つのサウンドデバイスがあります。インデックスは、0-HDMI、1-アナログです。Realtekデバイスには2つのポートがあります-スピーカーとヘッドフォン(それぞれ10kと9kの優先順位)-これらの番号は優先順位の切り替えに関係していますか?私が見る限り、これらのポートはdefault.paあなたが提示した方法で実際にファイルにインデックスを付けることはできません。
ブルワジミカリック

こんにちは、@BłażejMichalikは、実際にここで公開する前に、妻のコンピューターと私のコンピューターでテストしました。索引の混乱のために、最後に注で説明したフルネームを使用できます。
ルイスアルバラード

2
まあ、それは機能しますが、ヘッドフォンがなくてもデフォルトでスピーカーをオフにします。これは、15.10で発生した動作です。それ自体は修正されていません。
ブルワジミカリック

はい、私が言及したように、ヘッドフォンを接続する必要があります。Ubuntuは、ヘッドフォンを接続する場合、デフォルトで使用する必要があると想定しないためです。スピーカーをオフにする場合、これはデフォルトのスピーカーのみを設定し、他のユーザーを無効にするわけではないため、そこにはわかりません。これは通常、1つのジャックコネクタ(同時に入出力)を備えたラップトップを使用している場合に発生します。ラップトップに2つの接続(マイク用、出力用)があるか、または接続されているかを尋ねます。答えが1つであれば、問題が発生している理由がわかります。
ルイスアルバラード

うん、それはまさにそうです、それが重要であることを知りませんでした。
ブルワジミカリック

3

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

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

永続的にする/etc/pulse/default.paには、編集して、下部の### Make some devices defaultput:

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

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


1
これは、起動時にubuntuがヘッドフォンに切り替わるだけです。ヘッドフォンを取り外しても、起動時にスピーカーから音が出ないようになりました。これは、15.10で発生した動作です。
ブルワジミカリック

あなたはそれより良くなることはありません、私は恐れています。リンク:bbs.archlinux.org/viewtopic.php? id = 175951 bbs.archlinux.org/viewtopic.php?pid=1250505#p1250505 bbs.archlinux.org/viewtopic.php?id=212010は最新技術。私は本当に...誰かがよりよい解決策を考え出すことを願って
emk2203

Meh ... bashの回避策を実行できます。私は自分で料理することができます-問題ありません。しかし、それは単に物事を台無しにします。6か月ごとに、Ubuntuの変更ログと個人のbodgelistを実行して、自分や他の誰かの過失、または単にAPIやフロントエンドのアップグレードが原因でどこが壊れたのかを確認する必要があります。だから私はこれらをもうしません-それは混乱をもたらし、何かへの避けられないアップデートブレークに遭遇した後、おそらく失う時間の価値はありません。
ブワジェマイカリック

1
1)ヘッドフォンが接続されている場合にのみヘッドフォンを選択するbash回避策を行うことができる場合は、スピーカーはデフォルトであり、2)ヘッドフォンを接続すると自動的にヘッドフォンに切り替わり、スピーカーをミュートすると非常に興味があります。
emk2203

Debian Stretchではこれでうまくいきましたが、pacmd list-sinksによって返されるインデックスである1ではなく0を使用する必要があります。
ロドリゴ

0

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

以下は、あなたが望むことをしないが、おそらくあなたが必要とするもののためのすべての部分を含むスクリプトのカップルです。

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: /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(ログインマネージャー)の後に実行されるスクリプトでは十分ではないということです。ログインする前にサウンド効果が再生されます。これらは初期化後から実行できますか?
ブルワジミカリック

これらの「初期」サウンドがあなたにとって重要である場合、いいえ、これらはおそらく動作しません。起動時には、PATHに使用可能なものはほとんどありません。残り-これらのスクリプトが使用するものと同様に、ユーザーのログイン時に後でPATHに追加されます。pulseaudioがいつ開始されたかさえわかりません。誰かを起こさずに起動する必要がある場合など、その対処方法がわかりません。
ジョー

別のランダムな回避策は、再生されるサウンドファイル(おそらくsomething.ogg)を探して、それらをサイレントファイルに置き換えることです。それでも問題は解決しませんが、おそらく役立つでしょう。また、それらのサウンドファイルを後で使用する必要があるかどうかにも依存します。その場合、元のファイルを保存して、起動後に元に戻すことができます。しかし、毎回物事を正しくするためにsystemdをいじり始める必要があります。
ジョー

@DavidFoerster-あなたは技術的には正しいですが(私の返信は「これは答えではありません」で始まります)、誰かが探し始めたり、ソリューションに貢献するかもしれないツールを与えたりすることは、私見を沈黙させるよりも優れています。私が投稿したとき、他の答えはありませんでした。私のコンテンツはコメントまたは一連のコメントに収まらず、コードはリンクされているか、読み取り不能である必要があります。SEのコメントが完全なフォーマットをサポートしていれば、私はその投稿を1つにまとめていただろう。
ジョー

@DavidFoerster:リンク先のヘルプページを見ると、これは質問に対する部分的な回答のように見えます。それはあまり良い答えではないかもしれませんが、部分的な解決策を提供しようとしても、用語のSE定義による有効な「答え」になります。
イルマリカロネン

0

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

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

gksudo gedit /usr/share/applications/gstreamer-properties.desktop。結果のテキストファイルで、NoDisplay=.Change NoDisplay=trueto to NoDisplay=false Hopeで始まる行に移動してください!


数日前にUbuntu Gnomeに切り替える必要がありましたが、こちら側のパケットgnome-mediaには候補がありません。
ブルワジミカリック

わかった。それでは、あなたのために掘り下げることができるものを見ていきます。がんばろう!
ジェームズ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.