ヘッドフォンを外さずにヘッドフォンとスピーカーを切り替える方法


23

ヘッドフォンを接続すると、オーディオ出力デバイスがスピーカーからヘッドフォンに切り替わります。

ヘッドフォンを常に抜き差しするのではなく、最終的にコード/ジャックが磨耗するのではなく、ソフトウェアスイッチを使用したいだけです。

サウンド設定を開いて「ヘッドフォン->内蔵オーディオ」から「ライン出力->内蔵オーディオ」に切り替えると、スピーカーまたはヘッドフォンから音が出ません。

alsamixerを開いて、ヘッドフォンのプラグを抜くとどうなるかを確認しました。

ヘッドフォン: ヘッドフォン

ヘッドフォン出力: ヘッドフォン出力

ヘッドフォンを接続した状態で、ヘッドフォンが切れていてもスピーカーから音が出ない場合は、すべての設定を手動で設定に合わせて変更しました。

補足として、「サウンド設定」でオーディオ出力デバイスを変更すると、alsamixerにも同じ変更が発生します。


1
私の知る限り、ヘッドフォンジャック内のハードウェアスイッチであり、切り替えはできません。スイッチが有効になると、スピーカーは無効になります。Bluetoothヘッドフォンの使用について考えたことはありますか?
テランス

@Terranceのおかげで、私はそれがそのようなものであるかもしれないと感じていました。BIOSをチェックして、そこに何かがあるかどうかを確認しました。ソフトウェアの問題を解決するためのハードウェアソリューションがあることに少し驚いています。
user276318

1
サウンドカードは複数のデバイス出力に対応していない可能性があることに注意してください。一部のサウンドカードは、ヘッドフォン接続時にスピーカー出力をオフにするハードウェアレベルでハードコーディングされており、オーバーライドできません...
Thomas Ward

@Terrance私は賞金を始めました。多分あなたはそれをさらに掘り下げて答えを書きたいですか?
デザート

@dessertは以下のGoodGuyNickの答えを参照してください-すべてのハードウェアで動作するわけではなく、私の経験では出力を分離しません(これにより、プログラムAのオーディオをスピーカーに、プログラムBのヘッドフォンを同時に送信できます)が、単純に自動スイッチを無効にする必要があります。それが最初の試みです。
不安定な

回答:


9

スピーカーとヘッドフォンの両方をプラグインし、オンザフライでソフトウェアを切り替える

設計により、Pulseaudioはヘッドフォンが接続されると自動的にライン出力をオフにし、代わりにヘッドフォンスライダーを使用します。alsamixerでこの動作を確認できます。私たちが望むのは、ヘッドフォンとライン出力のスライダーを別々に同時に動作させることです。Realtekのジャックをリマップして、ヘッドフォン用にリアグリーン、スピーカー用にブルーを(alsa-toolsのhdajackretaskの助けを借りて)持つようにしたい場合、これは非常に便利です。

これを実現するには、Pulseaudioミキサーの構成を直接編集する必要があります。

1. pulseaudioにヘッドフォンが常に接続されていることを伝えます。

編集:

/usr/share/pulseaudio/alsa-mixer/paths/analog-output-lineout.conf

見つける:

[Jack Headphone]
state.plugged = no
state.unplugged = unknown

に変更noyesます。

コンピューターのケース前面のジャックを使用している場合は、[Jack Front Headphone]代わりに変更してください。

2.デフォルトでは、ライン出力の音量はマスターによってのみ制御され、ライン出力スライダー自体では制御されません。

Line OutをMasterにマージします。このスニペットをファイルの最後に追加します。

[Element Line Out]
switch = mute
volume = merge

3.ヘッドフォンを使用するときは、ライン出力を完全に遮断する必要があります。

編集:

/usr/share/pulseaudio/alsa-mixer/paths/analog-output-headphones.conf

このスニペットをファイルの最後に追加します。

[Element Line Out]
switch = off
volume = off

一部のシステムでは、次のスニペットを追加して、Frontを無効にする必要があります。

[Element Front]
switch = off
volume = off

4. Pulseaudioと同様に、ヘッドフォンを接続すると、Alsa自体がスピーカーを切断します。

alsamixerを開く:alsamixer -c0またはalsamixer -c1

/ を使用して自動ミュートモードにします。で自動ミュートモードを無効にします。でalsamixerを閉じますEsc

変更を保存します: alsactl store

5. Pulseaudioを再起動します

$ pulseaudio -k
$ pulseaudio --start

これで、pulseaudioの同じシンクに2つの個別のポートがあります。彼らはお互いをミュートするので、ヘッドフォンに切り替えることができ、これはラインアウトをミュートし、その逆も同様です。ポートを切り替えるには、Gnomeまたはプラズマサウンドミキサーを使用するか、適切なデスクトップ拡張機能をインストールします。


ソース


2
でファイルを直接編集しないでください/usr/share。pulseaudioが(バグを修正するなどのために)アップデートを受け取ると、変更は消去されます。通常、オーバーライドファイルを提供するメカニズムなどがありますが、/etcpulseaudioについて具体的には知りません。
ロビーバサック

@RobieBasakこの情報のソースはArch Linux Webサイトです。残念ながら、私はArch Linuxユーザーではないので、彼らのサイトにコメントを再投稿することはできません。ここに浮かぶArch Linuxユーザーの1人があなたのコメントを読んでそこに再投稿することを願っています。
WinEunuuchs2Unix

1
@RobieBasak、まあ、これを行うラッパースクリプトを作成し、ログイン後に呼び出すことができます
ロバートリードル

1
残念ながらそれは私にとってはうまくいきませんでしたが、答えてくれてありがとう!
デザート

1
@dessert私の喜び。この分野の調査は興味深いものでした。あなたが探しているものを見つけることを願っています。
WinEunuuchs2Unix

9

スピーカーとヘッドフォンを切り替えることができるようにするには、次の手順を実行します。

  1. を実行しますalsamixer
  2. 必要に応じて、でサウンドカードを選択しますF6
  3. 右矢印で「自動ミュート」に移動します。
  4. 下矢印で無効にします。
  5. を押しEscて終了します。

または、1つのコマンドでこれらすべての手順を実行できます。

  1. ターミナルを開く
  2. 走る amixer -c 1 set 'Auto-Mute Mode' Disabled

これで、PulseAudioボリュームコントロールでスピーカーとヘッドフォンを切り替えることができます。

これらの指示を適用した後、サウンドスイッチャーインジケーターを使用してヘッドフォンとスピーカーをすばやく切り替えることで、生活を楽にすることができます。


2
私はこれがすべてのハードウェアの組み合わせで機能するとは思わない-一部のシステム(私のような)はいくつかの種類のハードウェアスイッチを使用しているようだが、それは不明ではない。....そして、それらのデバイスには、コンピュータはありません-あなたはギターアンプにヘッドフォンを接続した場合、そのアンプでスピーカーは、通常はオフになります
チャールズ・グリーン

これは、Realtek ALC887-VDで私のために働いた
Paul Praet

ありがとうございました。それは私のために働いた。bashスクリプトを介してそれを達成する方法はありますか?
ka3ak

1
ka3ak @私はあなたのための答えを更新しました
GoodGuyNick

4

hdajackretaskは、さまざまな入力、出力、または無効にジャックの機能を再割り当てするためのツールです。たとえば、マイクジャックを追加のヘッドフォンにしたり、両方をライン出力にしてサラウンドレシーバーに接続したりします。

alsa-tools-guiをインストールします

sudo apt-get update
sudo apt-get install alsa-tools-gui

hdajackretask次に実行するジャックの1つを上書きするには:

  1. コーデックを選択してください
  2. そのピンの「オーバーライド」チェックボックスをクリックして、新しい目的の機能を選択します
  3. [今すぐ適用]をクリックします。

    注:ヘッドフォンジャックにオーディオを再ルーティングするハードウェアスイッチが組み込まれている場合は、SOLです(運が悪い)。ただし、ラインがヘッドフォンジャックに差し込まれていることをOSが検出した場合、ほとんどの場合、オーディオは機械的に切り替えられません。

ヘッドフォンとスピーカーの両方を同時にオーバーライドするのが最適であることがわかりました。


hdajackretaskヘッドフォンをスピーカーに切り替えるスクリーンショット:

ここに画像の説明を入力してください


[今すぐ適用]をクリックすると、シェルスクリプトが作成されて変更が行われ、実行するスーパーユーザーパスワードの入力が求められます。スクリプトも保存され、/tmpコピーして後でコマンドラインからsudoを使用して実行できます。

ここに画像の説明を入力してください

コマンドライン実行

前述したように、hdajackretaskスクリプトを作成script.shして/tmpに似て/tmp/hda-jack-retask-QW1EEZ/、あなたが望むジャック機能のために:

#!/bin/sh
echo "0x12 0x90a60140" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x14 0x90170150" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x17 0x40000000" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x18 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x19 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x1a 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x1b 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x1d 0x40700001" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x1e 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x21 0x40f000f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo 1 | tee /sys/class/sound/hwC0D0/reconfig 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log


このスクリプトをシステムの別の場所(/ tmp以外)にコピーします

cd /tmp/hda-jack-retask-QW1EEZ
cp script.sh ~username/speaker.sh

次にspeaker.shを編集します

cd ~username
nano speaker.sh

killall pulseaudio &ファイルの先頭に行を追加します。pulseaudio実行中はジャック機能を変更できないため、これが必要です。デフォルトでpulseaudioは再出現します。また、errors.logファイルのパスを/tmp任意の場所に変更します。

#!/bin/sh
killall pulseaudio &
echo "0x12 0x90a60140" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x14 0x90170150" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x17 0x40000000" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x18 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x19 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x1a 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x1b 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x1d 0x40700001" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x1e 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x21 0x40f000f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo 1 | tee /sys/class/sound/hwC0D0/reconfig 2>>/tmp/errors.log


スクリプトを実行するには:

sudo ./speaker.sh



以下からのalsa-toolsを-1.1.5 / hdajackretask / READMEのドキュメント:

hdajackretaskのドキュメント

ほとんどのHDA Intelサウンドカードは、ある程度リタスク可能です。つまり、複数の用途に使用できます。このツールは、マイクジャックを簡単に再配置できるGUIです。たとえば、マイクジャックを追加のヘッドフォンに変更したり、両方をライン出力にしてサラウンドレシーバーに接続したりします。

クイックスタート

コマンドラインからアプリケーション「hdajackretask」を起動します。上部のバーでコーデックを選択します。1つしか持っていない人もいます。複数持っている場合は1つが「メイン」で、残りはおそらくHDMIコーデックです。

すべてのジャック(および他の入力/出力)は、「ピン構成」の下に表示されます。ジャックの1つをオーバーライドするには、そのピンの[オーバーライド]チェックボックスをクリックして、目的の機能を選択します。注:「ラインアウト(背面)」オーバーライドを選択した場合、「ラインアウト(前面)」オーバーライドも必要です。「Line out(Center / LFE)」オーバーライドは、前の2つのオーバーライドでのみ機能します。

[今すぐ適用]をクリックして、新しい構成を試すことができます。新しい設定を起動時のデフォルトにするには、「起動オーバーライドをインストール」をクリックします。これらのいずれかを実行するには、root権限が必要なので、パスワードの入力を求められる可能性があります。

クイックエンド

あなたはめちゃくちゃにしましたか?[ブートオーバーライドの削除]ボタンをクリックします。プロセスが完了したら、コンピューターをシャットダウンし、しばらく待ってから再度オンにします。これで、開始した場所に戻るはずです。

うまくいきましたか?

もしそうなら、幸せになり、喜びを分かち合い、何か良いことをしてください!

うまくいかなかった場合は、次のことを試してください。

  • alsamixerに移動して、新しいボリュームコントロールがあるかどうかを確認し、ミュートが解除されて適切な値に設定されているかどうかを確認します。

  • ドライバーは未接続のピンをシャットオフしない場合があります(接続されていない場合、なぜ心配ですか?)。しばらくの間、コンピューターを完全にオフにすることで、この問題を解決できる場合があります。

  • 以下の「model = auto」オプションを参照してください

これで解決しない場合は、ドライバーまたはハードウェアの制限に直面している可能性が高くなります。ドライバーのバグに遭遇する可能性があります(これまでに4台のヘッドフォンをテストした人はいないでしょう!)。もしそうなら、お気軽にalsa-develメーリングリストでそれらを報告してください:しかし、人手不足のため、これは非常に低い優先度で処理される可能性があります奇妙な構成をサポートするよりも重要です)。しかし、もしあなたがカーネルハッカーであり、他のものを台無しにせずにあなたの問題を解決するパッチを考え出すなら、それはマージされる可能性がかなり高いです。

カーネルドライバーではなく、このGUIアプリケーションに問題があると思われる場合は、お気軽にメールをお送りください(必要に応じて、パッチを含めてください)。その場合は、diwic @ ubuntu.comに書き込みます。

オプション

  • 接続されていないピンを表示するBIOSは、実際に何かに接続されているコーデックのピンとそうでないピンをセットアップする役割を果たします。BIOSにバグがあり、すべてのジャックが表示されない場合があります。BIOSにジャックがないと言われている場合は、ランダムピンを有効にして、動作するかどうかを確認できます。

  • Model = autoの設定一部のコーデック、特に古いものやカーネル3.8以下では、特定のモデルを使用するようにハードコードされているため、オーバーライドを気にしません。多くの場合、かなり新しいカーネルで、自動パーサーはこれらのコーデックでもうまく機能します。このボックスをチェックすると、自動パーサーを強制的に使用できます。ただし、場合によっては、明示的なモデルが理由で存在しますが、存在する場合はスタックしています。

  • 高度なオーバーライドこれは専門家専用です。意味のあるいくつかの定義済みの値の代わりに、各構成フィールドを個別に選択できます。ここでのほとんどの組み合わせは何らかの形で無効であるため、HD Audio仕様の「Configuration Default」セクションを読んで理解していない限り、これを混乱させないでください。(この記事の執筆時点では、http//www.intel.com/content/dam/www/public/us/en/documents/product-specifications/high-definition-audio-specificationから入手でき ます。 pdf

  • パーサーのヒントこれにより、解析に異なる動作をさせる特別な「ヒント」をドライバーに送信できます。ドライバのドキュメントを読んでいない限り、「デフォルト」設定のままにしてください。(この記事の執筆時点では、https//www.kernel.org/doc/Documentation/sound/alsa/HD-Audio.txtから入手できます -「ヒント文字列」セクションを参照してください。)


1
残念ながらそれは私にはうまくいきませんでしたが、あなたの答えをありがとう!あなたの目標が私が望んでいたものに非常に近づき、目標を達成するための最良の方法を提供するように思える場合(可能な場合)、賞金が授与されます-おめでとう!:)
デザート

3

KDEではこれを行うことができます。

システム設定->マルチメディア->オーディオとビデオの設定->オーディオハードウェア設定タブ>適切なサウンドカードを選択>コネクタの下にヘッドフォンとスピーカーのオプションが表示されます。

システム設定


3
私はkdeを使用していませんが、Unityには同様の「サウンド設定」があります。オーディオ出力デバイスをヘッドフォンからスピーカーに変更しても、ヘッドフォンのみがミュートされます。ヘッドフォンが差し込まれているときに、ハードウェアスイッチのように見える。
user276318

1

Gnome-Shell Extensionオーディオ出力スイッチャー

最も簡単な方法は、オーディオ出力スイッチャー拡張機能をインストールすることです

または、gitで直接クローンを作成できます。

git clone https://github.com/adaxi/audio-output-switcher.git ~/.local/share/gnome-shell/extensions/audio-output-switcher@anduchs

スクリーンショット

この拡張機能は、現在選択されているパルスオーディオ出力デバイスを示すステータスメニューに小さなエントリを追加します。それをクリックすると、使用可能なすべての出力デバイスを含むサブメニューが開き、使用する出力デバイスを選択できます。


残念ながらそれは私にとってはうまくいきませんでしたが、答えてくれてありがとう!
デザート

0

PPAを追加してもかまわない場合は、サウンドスイッチャーインジケーターを使用できます。

これにより、システムトレイにインジケーターが表示され、クリックして入力または出力オーディオソースを変更できます。詳細については、http://yktoo.com/en/software/indicator-sound-switcherをご覧ください。

ターミナル方式

ターミナルを使用してインストールするには、次を入力します。

sudo add-apt-repository ppa:yktooo/ppa
sudo apt-get update
sudo apt-get install indicator-sound-switcher

GUIメソッド

GUIを使用してインストールするには、次の手順を実行します。

  1. Unity DashからSoftware&Updatesアプリを起動します。

  2. [その他のソフトウェア]タブをクリックします。次に、次の新しいソースを追加します。

    deb http://ppa.launchpad.net/yktooo/ppa/ubuntu vivid main
    

    (「vivid」をUbuntuリリースに置き換えることを忘れないでください。サポートされるリリースはhttp://ppa.launchpad.net/yktooo/ppa/ubuntu/dists/にリストされています)。

  3. Unity DashからUbuntu Software Centerを起動します。

  4. 「サウンド入力/出力セレクタインジケータ」を検索してインストールします。

注:上記のTerranceが提案したように、システムのヘッドフォンジャック内にハードウェアスイッチがある場合、このソリューションは機能しません。


実際にこれをインストールしました。あなたのメモのように、ハードウェアスイッチがあるようです。
user276318

0

この問題に対してこのスクリプトを作成しました。

https://github.com/biplobsd/Fixing-front-panel-audio

ターミナルのリポジトリのREADMEファイルで指定されたコマンドを実行するだけです。これにより、スクリプトがダウンロードされて実行されます。

これらのコマンドは次のとおりです。

git clone https://github.com/biplobsd/Fixing-front-panel-audio.git
cd Fixing-front-panel-audio
chmod +x Fixing-front-panel-audio.sh
./Fixing-front-panel-audio.sh
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.