Xubuntu 14.04をXubuntu 16.04にアップグレードするときにもこの問題が発生しました(ヘッドフォンでは音が出るが、スピーカーでは音が出ない)。Realtek ALC259チップを搭載したHD Intelサウンドカードを持っています。この問題は、3.13.Xから4.10.Xまでのさまざまなカーネルで起動したときにも持続しました。
しかし、私はそれを修正しました、そしてここに方法があります:
Pulseaudio(PA)はUbuntuのデフォルトのサウンドコントロールシステムであり、そのバリエーションのほとんど(すべて?)であることを理解することが重要です。PAは本質的に、コアALSAサウンドシステムの上にオーバーレイされます。したがって、PAで行われたすべてのアクションに対して、ALSA内で後続の反応があります。PA内で定義された各出力(別名ポート)には、ALSAシステムに対する定義済みの調整があります。この調整は「ミキシングパス」と呼ばれます。
!!! 重要!!!
続行する前に、これが実際に問題であること、およびスピーカーが機能しない理由が他にないことを確認する良い機会です。次のテストを行うと、非常に簡単に行うことができます。(サウンドシステムをいじっていた場合は、テストする前にデフォルトに戻すことをお勧めします):
- 動作していないスピーカー以外のヘッドフォンやその他のサウンドデバイスを取り外します。
- 現在はそうではありませんが、通常はスピーカーから音を生成するオーディオファイルの再生を開始します。そして、
端末を開き、次のコマンドを実行します。
alsamixer
以下が表示されます。
サウンドカードの違いにより、お使いのデバイスは画像のデバイスと少し異なる場合があります。私の場合、問題を修正する前は、alsamixerは上の画像のように見えました。
- 現在ミュートされているデバイスのミュートを解除します(ミュートを切り替えるには「m」キーを使用します)。次に、100%になっていないデバイスの音量スライダーを上げます。
スピーカーから音が聞こえる場合は、この修正が最適です。
音が聞こえない場合は、「Google」に戻って検索を続けてください。この意志方法はあなたを助けません。
上記のテストで問題なくサウンドが得られた場合、次に行う必要があるのは、alsamixerの設定を再生して次のことを確認することです。
- どのデバイスのボリュームコントロールが実際にスピーカーのボリュームを制御しているか、
- スピーカーが機能するためにミュートを解除する必要があるデバイスはどれですか。複数のデバイスのミュートを解除する必要がある場合があります。
スピーカーが機能するALSA設定がわかったら、この情報を使用して、PAミキサーのパスに必要な変更を加えることができます。
私の場合、私のヘッドフォンとスピーカーが次の方法でALSA内にリンクされていることがわかりました。
- ヘッドフォンの音量は「ヘッドフォン」デバイスによって制御されます。
- ヘッドフォンからサウンドを取得するには、「マスター」デバイスと「ヘッドフォン」デバイスのミュートを解除する必要があります。
- 私のスピーカーの音量も「ヘッドフォン」デバイスによって制御されます。(驚いたことに、ALSAスピーカーの音量設定は私のスピーカーの音量に影響を与えません。)
- スピーカーからサウンドを取得するには、「マスター」デバイスと「スピーカー」デバイスのミュートを解除する必要があります。
PulseAudio(PA)内のスピーカーのデフォルトのミキサーパスは、私のスピーカーが私のヘッドフォンから独立していると想定していました。上記の観察3で示されているように、そうではありませんでした。その後、スピーカー内のスピーカー出力がPA内で選択されると、私のスピーカーのPA内のデフォルトのミキサーパスにより、ALSA内で次の問題のある変更が行われました。
- ヘッドフォンの音量を0に下げました。
- スピーカーデバイスをボリュームコントロールとして設定します。
前述のように、ALSAのスピーカーとヘッドフォンの連携をどのように観察したかを考えると、ALSAへのこれらの変更により、スピーカーから音が出ないようにすることができます。
したがって、この問題の解決策は、スピーカーのミキサーパスを変更することによって得られます。
PAミキサーパスファイルは次の場所にあります。
/ usr / share / pulseaudio / alsa-mixer / paths /
スピーカーを制御するミキサーパスファイルを決定するには、次のことを行う必要があります。
スピーカー出力がPA内で選択されていることを確認してください(つまり、ヘッドフォンではありません)。
ターミナルを開き、次のコマンドを実行します:
pactl list | grep 'Active Port.*output.*'
次のような出力が表示されます。
アクティブポート:audiotype -output- デバイス
すなわち
「アクティブポート」は、ALSA設定を現在制御しているPAポートです。スピーカーをPA出力として既に選択しているので、ターミナルコマンドからのこの出力は、ミキサーパスファイルaudiotype -output- device .confを編集する必要があることを示しています。私の場合、ミキサーパスファイルはanalog-output-speaker.confでした。
正しいミキサーパスファイルが作成されたので、変更を加える必要があります。
注:このミキサーパスフォルダー内には、「analog-output.conf.common」という名前のファイルがあります。このファイルの内容は、ミキサーパスファイルがどのように解釈されるかを説明しています。以下の変更点を理解したい場合は、ミキサーパスを編集する前にこのファイルを確認することを強くお勧めします。
各ミキサーパスファイルには、多数の「要素」が含まれています。理想的には、コンピューター上の各ALSAデバイスを表す要素が各ファイル内に存在します。おそらくあなたも持っていない要素があるでしょう。これは正常です。
私の場合、次の方法でanalog-output-speaker.confのミキサーパス内のヘッドフォンとスピーカーの要素を変更する必要がありました。
- PAボリュームでヘッドフォンALSAボリュームを調整できるようにします。
元の:
[Element Headphone]
switch = off
volume = off
編集:
[Element Headphone]
switch = off
volume = merge
override-map.1 = all
override-map.2 = all-left,all-right
- (オプション)スピーカーの音量をオフに設定し、PAの音量がALSAの音量に影響しないようにします。(これを行わなくても、サウンドは機能しますが、ALSA内のスピーカー設定が不必要に跳ね返ります。)
元の:
[Element Speaker]
required-any = any
switch = mute
volume = merge
override-map.1 = all
override-map.2 = all-left,all-right
編集:
[Element Speaker]
required-any = any
switch = mute
volume = off
次に、以下を実行してPAを再起動します。
pulseaudio -k && pulseaudio --start
ほら!