ALSA、PulseAudio、Intel HDA PCH で音が出ない

ALSA、PulseAudio、Intel HDA PCH で音が出ない

私は Realtek ALC298 というオンボード サウンド カードを 1 枚しか持っていません。高度なサウンド設定は必要ありません。YouTube の動画を聞いたり、映画を見たりするためのサウンド システムだけです。これまで、多くのオンライン記事を参考にしてきました。試した内容をまとめると、次のようになります。

  1. チャンネルがミュートされているかどうかを確認します。 を使用しalsamixer、 も確認しましたがpavucontrol、どちらもミュートされたチャンネルは表示されません。 が 3 番目の手順 (下記を参照) のときにこの手順を繰り返しましたが、新しいチャンネルが時々表示されましたが、最終的には音が出ませんでした。

  2. ALSA の問題なのか、それとも PulseAudio の問題なのかを判断します。そこで、以下を使用しましたaplay -l:

**** 再生ハードウェアデバイスのリスト ****
カード 0: PCH [HDA Intel PCH]、デバイス 0: ALC298 アナログ [ALC298 アナログ]
  サブデバイス: 1/1
  サブデバイス #0: サブデバイス #0
カード 0: PCH [HDA Intel PCH]、デバイス 3: HDMI 0 [HDMI 0]
  サブデバイス: 1/1
  サブデバイス #0: サブデバイス #0
カード 0: PCH [HDA Intel PCH]、デバイス 7: HDMI 1 [HDMI 1]
  サブデバイス: 1/1
  サブデバイス #0: サブデバイス #0
カード 0: PCH [HDA Intel PCH]、デバイス 8: HDMI 2 [HDMI 2]
  サブデバイス: 1/1
  サブデバイス #0: サブデバイス #0
カード 0: PCH [HDA Intel PCH]、デバイス 9: HDMI 3 [HDMI 3]
  サブデバイス: 1/1
  サブデバイス #0: サブデバイス #0
カード 0: PCH [HDA Intel PCH]、デバイス 10: HDMI 4 [HDMI 4]
  サブデバイス: 1/1
  サブデバイス #0: サブデバイス #0

そこから、PCM 形式の wav ファイルを使用しましたaplay -D plughw:0,0 test.wav

WAVE 'test.wav' を再生中: 符号付き 32 ビット リトルエンディアン、レート 44100 Hz、ステレオ

しかし、何も聞こえません。スピーカーもヘッドフォンも、どこからも音が出ません。これは ALSA の問題であり、PulseAudio の問題ではないと結論付けましたが、この手順の間ずっと PulseAudio デーモンが実行されていたため、疑問が残ります。興味深い補足として、この手順を実行していたとき、gnome のサウンド設定では、何かが再生されているかのようにサウンド バーが動いていました :D

  1. 私は見つけたカーネルウェブサイトの記事HDA オーディオと、マシンを再起動せずにオーディオ コーデックを動的に再構成するカーネル機能について。リポジトリhdajackretaskの一部であるユーティリティ を見つけて使用しalsa-tools、GUI を使用できました。このユーティリティは、ピンの変更をuser_pin_configsファイルに書き込みます (ちなみに、再起動後に手動で確認しました)。ただし、ピンの再割り当ての正しい組み合わせがわかりませんでした。再割り当てできるピンは次のとおりです。
0x12
0x13
0x14
0x17
0x18
0x19
0x1a
0x1d
0x1e
0x1f
0x21
  1. ここでの私のアイデアは、基本的にALC269モデルを使用することでした興味深いパッチファイルALC269グーグルで検索すると、リンクはrasp pi用ですが、試してみる価値があると思いました。サポートされているカーネル HDA オーディオ モデルこれによって何も変わることはありませんが、おそらく誰かが恩恵を受けることができるでしょう。

どのような助けでも大歓迎です。私は Linux のスキルをはるかに超えています。

PS: manjaro、linux56 ですが、すべてのディストリビューションでサウンド カードに関する同じ問題が発生しています。サウンドが機能することを期待して、過去数か月間にほぼすべてのディストリビューションをインストールしました。

編集1

追加しましたペーストビンalsa-info.sh詳細については、をご覧ください。

答え1

朗報です!ronincoder という名の非常に賢い Arch ユーザーが、ヘッドフォン ジャックの修正方法を発見しました。私は ronincoder と協力してカーネル パッチ [1] を作成し、そのパッチが 5.7 カーネル リリースに採用されました。また、5.4 LTS カーネルにも適用されました。5.7.2 と 5.4.46 の両方を起動しましたが、ヘッドフォン ジャックの音声は大きくてクリアです。:)

あなたにとってはうまくいきますか? Samsung Notebook 9 Pro NP930SBE-K01US または NP930MBE-K04US (ronincoder は前者、私のは後者) をお持ちの場合はうまくいくはずです。 alsa_info.sh を実行して「ボード名」を確認することで、ラップトップ モデルを確認できます。 NP930SBE-K01US および NP930MBE-K04US の Realtek ALC298 コーデックは、それぞれ「サブシステム ID」0x144dc169 および 0x144dc176 で識別されます。 snd_hda_intel がこれらの ID のいずれかを検出すると、修正が実装されます。

スピーカーはどうでしょうか? 内蔵スピーカーで音が出ない問題はカーネル Bugzilla [2] に報告しました。Linux サウンド メンテナーの Jaroslav Kysela は、HDA コーデックに接続されているアンプが BIOS で初期化されていないために Linux ではアクティブになっていないのではないかと推測しています。彼は、QEMU を使用して Windows ドライバーのコーデック通信をダンプすることを提案しています。その後、ダンプを解析して、Early Patching [3] または別のカーネル パッチを使用して Linux で通信を再生することができます。Jaroslav がこの提案をしてから 1 か月が経ち、私は少し進歩しましたが、まだ良いダンプがありません。私を手伝ってくれる場合は、カーネル Bugzilla の議論に参加してください。^^

[1] 参考までに、私たちのパッチはコミット14425f1f521f(ALSA: hda/realtek: Samsung Notebook向けの機能追加)としてLinusのツリーに組み込まれました。[2]https://bugzilla.kernel.org/show_bug.cgi?id=207423 [3]https://www.kernel.org/doc/html/v4.17/sound/hd-audio/notes.html#早期パッチ

答え2

elementaryOS(Ubuntu 20.04ベース)では、MacBook Pro 2012の音が出ない問題は、設定ファイルを編集してsudo vim /etc/modprobe.d/alsa-base.conf

options snd-hda-intel model=generic

による

# options snd-hda-intel model=generic
options snd-hda-intel probe_mask=1

さらに詳しい説明:

注: インストール後、最初は正常に動作していたため、なぜ音が出ない問題が発生したのか、または以前に何が変更されたのかはわかりません。

ただし、pacmd list-cardsターミナルでクエリを実行すると、出力は次のように変更されました (修正前)。

ports:
    analog-input-mic: Mikrofon (priority 8700, latency offset 0 usec, available: unknown)
        properties:
            device.icon_name = "audio-input-microphone"
    analog-output-speaker: Lautsprecher (priority 10000, latency offset 0 usec, available: unknown)
        properties:
            device.icon_name = "audio-speakers"
    analog-output-headphones: Kopfhörer (priority 9900, latency offset 0 usec, available: no)
        properties:
            device.icon_name = "audio-headphones"
    iec958-stereo-output: Digitalausgang (S/PDIF) (priority 0, latency offset 0 usec, available: unknown)
        properties:

(修正後):

ports:
    [Out] Speaker: Speaker (priority 100, latency offset 0 usec, available: unknown)
        properties:
            
    [Out] Headphones: Headphones (priority 200, latency offset 0 usec, available: no)
        properties:
            
    [In] Mic2: Headphones Stereo Microphone (priority 200, latency offset 0 usec, available: unknown)
        properties:

(ここで構文の違いに注意してください。)

また、出力はsudo vim aplay -l(修正前)から変更されました:

Karte 0: PCH [HDA Intel PCH], Gerät 0: Generic Analog [Generic Analog]
  Sub-Geräte: 0/1
  Sub-Gerät #0: subdevice #0
Karte 0: PCH [HDA Intel PCH], Gerät 1: Generic Digital [Generic Digital]           
  Sub-Geräte: 1/1
  Sub-Gerät #0: subdevice #0

(修正後):

Karte 0: PCH [HDA Intel PCH], Gerät 0: CS4206 Analog [CS4206 Analog]
  Sub-Geräte: 1/1
  Sub-Gerät #0: subdevice #0
Karte 0: PCH [HDA Intel PCH], Gerät 1: CS4206 Digital [CS4206 Digital]
  Sub-Geräte: 1/1
  Sub-Gerät #0: subdevice #0

答え3

ここで問題となるのは、Realtek の ALC298 には I2S という異なるバス要件があることです。linux56 の時点では I2S オーディオ コーデックはサポートされておらず、これが新しい標準のようです。Lenovo、Samsung、Huawei は、この新しい I2S 標準のサウンド カードを使用しているようですが、この件に関して未解決のスレッドやトピックが数多く存在し、放置されているのが見つかりました。

私はヘッドフォンを修正する回避策を見つけました。これは私と、Samsung Notebook Pro 9 を使用しているもう 1 人のユーザーにとって有効でした。この解決策では、「Early Patching」と呼ばれるカーネル機能を使用して、デフォルトのピン、動詞、モデル、その他の ALSA 固有の属性をオプションでオーバーライドします。代替カスタム カーネル パッチを含む完全な情報は、次の Web サイトにあります。Arch Linux フォーラム

答え4

以下の手順を試してください。私のシステムでは同様の問題を解決できました。

  1. 「aplay」コマンドを実行しても何も聞こえません。「sudo aplay」コマンドを実行してはどうでしょうか。ALSA が動作していれば、音が聞こえるはずです。

  2. お使いのシステムでは pulseaudio が動作していると思います。ただし、alsa-lib と snd-hda-intel ドライバーの間に互換性の問題がある可能性があります。

    $pacmd カード一覧

「ポート」の結果を確認してください。スピーカーに関連するものが表示されない場合は、サウンド カードが pulseaudio によって認識されていないことを意味します。

  1. 「/usr/share/alsa/ucm2/HDA-Intel/HDA-Intel.conf」ファイルを編集します。「Define.Use」の後に空の文字列が表示された場合は、文字列に「3」と入力してください。その後、保存します。

  2. マシンを再起動します。それでも音が出ない場合は、サウンド カードが「ダミー出力」になっているかどうかを確認します。その場合は、「/etc/modprobe.d/alsa-base.conf」の末尾に「options snd-hda-intel model=generic」を追加します。

この問題は主に「HDA-Intel.conf」によって発生します。開発者が「Define.Use」文字列を空のままにしておく理由がまったくわかりません。

関連情報