「Advanced Linux Sound Architecture/トラブルシューティング」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(文字列「Category:音声/動画」を「Category:マルチメディア」に置換)
(→‎No output: 翻訳)
 
(3人の利用者による、間の20版が非表示)
1行目: 1行目:
 
[[Category:サウンド]]
 
[[Category:サウンド]]
[[Category:マルチメディア]]
 
 
[[en:Advanced Linux Sound Architecture/Troubleshooting]]
 
[[en:Advanced Linux Sound Architecture/Troubleshooting]]
 
メインの記事は [[Advanced Linux Sound Architecture]] を見て下さい。
 
メインの記事は [[Advanced Linux Sound Architecture]] を見て下さい。
   
 
==ボリューム==
 
==ボリューム==
  +
=== 出力がない ===
  +
  +
{{ic|speaker-test}} がサウンドを生成するが、他のプログラムがサウンドを生成しない場合は、[[PulseAudio]] が使用されているかどうかを判断します。
  +
  +
# fuser -v /dev/snd/*
  +
  +
その場合は、[[Advanced Linux Sound Architecture#PulseAudio との互換性]] で説明されているように、{{AUR|apulse}} を使用してみてください。あるいは、PulseAudio プロセスを強制終了すると、目的のプロセスでサウンドが動作し始める可能性があります。
  +
 
=== 再起動後にミュートになる ===
 
=== 再起動後にミュートになる ===
   
51行目: 58行目:
 
}
 
}
 
</nowiki>}}
 
</nowiki>}}
  +
{{note|alsa デーモンを再起動しても新しい構成が読み込まれないため、おそらくコンピューターを再起動する必要があります。また、再起動しても設定がうまくいかない場合は、上記設定の {{ic|plug}} を {{ic|hw}} に変更してみてください。}}
{{note|You will probably have to restart the computer, as restarting the alsa daemon did not load the new configuration for me. Also, if the configuration does not work even after restarting, try changing {{ic|plug}} with {{ic|hw}} in the above configuration.}}
 
   
 
正しくロードされた後、alsamixer の {{ic|Pre-Amp}} セクションを見て下さい。このセクションでボリュームを調節できます。
 
正しくロードされた後、alsamixer の {{ic|Pre-Amp}} セクションを見て下さい。このセクションでボリュームを調節できます。
 
{{Note|
 
{{Note|
  +
* {{ic|Pre-Amp}}の値を高く設定すると音がひずむ場合がありますので、お好みのレベルに合わせて調整してください。
* Setting a high value for {{ic|Pre-Amp}} can cause sound distortion, so adjust it according to the level that suits you.
 
  +
* 一部のオーディオ コーデックでは、歪みのない適切な音量を実現するために、HDA アナライザーで設定を調整する必要がある場合があります ([[Advanced Linux Sound Architecture/トラブルシューティング#ボリュームが小さすぎる|ボリュームが小さすぎる]] を参照) 再生スイッチのウィジェット制御で HP オプションをチェックすると (ALC892 コーデックの Node[0x14] PIN など)、オーディオの品質と音量が大幅に向上する場合があります。
* Some audio codecs may need to have settings adjusted in the HDA Analyzer (see [[#ボリュームが小さすぎる]]) in order to achieve proper volume without distortion. Checking the HP option under widget control in the Playback Switch (Node[0x14] PIN in the ALC892 codec, for instance) can sometimes improve audio quality and volume significantly.
 
 
}}
 
}}
   
259行目: 266行目:
   
 
==ハードウェアとカード==
 
==ハードウェアとカード==
  +
  +
=== 出力パラメータの検証 ===
  +
  +
{{ic|/proc/asound/cardX/pcmYp/subZ/hw_params}} の内容を確認します。ここで、{{ic|X}}、{{ic|Y}}、および {{ic|Z}} はシステムに依存します。このファイルを見つけるには、ALSA 経由で何かを出力しながら次のコマンドを実行します。
  +
$ find /proc/asound/ -name hw_params | xargs -I FILE grep -v -l "closed" FILE | grep '/proc/asound/card./pcm.p/sub./hw_params'
  +
何も再生されていない場合、結果は得られません。
  +
  +
以下は、[[Wikipedia:ja:ビット深度 (音響機器)|ビット深度]] が 24 ビット、[[Wikipedia:ja:標本化|サンプリング周波数]] が 44.1 キロヘルツのオーディオの出力例です。
  +
{{hc|cat /proc/asound/card1/pcm0p/sub0/hw_params|
  +
access: RW_INTERLEAVED
  +
format: S24_3LE
  +
subformat: STD
  +
channels: 2
  +
rate: 44100 (44100/1)
  +
period_size: 5513
  +
buffer_size: 22050
  +
}}
  +
  +
詳細については、[https://alsa.opensrc.org/Proc_asound_documentation ALSA ドキュメント] を参照してください。
  +
 
===カーネルをアップデートした後に 'Unknown hardware' エラーが出る===
 
===カーネルをアップデートした後に 'Unknown hardware' エラーが出る===
   
281行目: 308行目:
 
===オーディオピンのマッピングが間違っている===
 
===オーディオピンのマッピングが間違っている===
   
オーディオピンプラグのマッピングが一致していないのに ALSA が問題なく動いている場合、HDA Analyzer を試してみて下さい -- HD オーディオコントロールの pyGTK2 GUI で [http://www.alsa-project.org/main/index.php/HDA_Analyzer ALSA wiki] にあります。
+
オーディオピン(プラグ)のマッピングが一致していないのに ALSA が問題なく動いている場合、HDA Analyzer を試してみて下さい -- HD オーディオコントロールの pyGTK2 GUI で [http://www.alsa-project.org/main/index.php/HDA_Analyzer ALSA wiki] にあります。
 
PIN ノードの Widget Control セクションを調整して、マイクロフォンの IN とヘッドフォンジャックの OUT を作ってみて下さい。Config Defaults の見出しを参照すると良いでしょう。
 
PIN ノードの Widget Control セクションを調整して、マイクロフォンの IN とヘッドフォンジャックの OUT を作ってみて下さい。Config Defaults の見出しを参照すると良いでしょう。
   
  +
{{Note|このスクリプトは、Arch Linux のデフォルトの Python 実装である Python 3 と互換性がありません。スクリプトを使用するには、{{ic|run.py}} ファイル内のすべての {{ic|python}} を {{ic|python2}} に置き換えて、スクリプトが Python 2 バージョンを指すようにします。次に、スクリプトに [[chmod|実行可能]] 権限を付けて実行します。}}
{{Note|
 
* The script is done by such way that it is incompatible with Python 3 (which is now shipped with Arch Linux) but tries to use it. The workaround is: open "run.py", find all occurences of "python" (2 occurences - one on the first line, and the second on the last line) and replace them all by "python2".
 
* The script requires root acces, but running it via su/sudo is bogus. Run it via {{ic|kdesu}} or {{ic|gksu}}.
 
}}
 
   
 
===S/PDIF から出力できない===
 
===S/PDIF から出力できない===
335行目: 359行目:
 
===サウンドカードのモデル設定が間違っている===
 
===サウンドカードのモデル設定が間違っている===
   
Alsa は BIOS を通してサウンドカードを検知していますが、時々 Alsa が [http://www.kernel.org/doc/Documentation/sound/alsa/HD-Audio-Models.txt モデルのタイプ] を認識できなくなることがあります。サウンドカードのチップは {{ic|alsamixer}} で見ることができ (例: ALC662) モデルは {{ic|/etc/modprobe.d/modprobe.conf}} や {{ic|/etc/modprobe.d/sound.conf}} で設定することができます。例えば:
+
Alsa は BIOS を通してサウンドカードを検知していますが、時々 Alsa が [https://www.kernel.org/doc/Documentation/sound/alsa/HD-Audio-Models.txt モデルのタイプ] を認識できなくなることがあります。サウンドカードのチップは {{ic|alsamixer}} で見ることができ (例: ALC662) モデルは {{ic|/etc/modprobe.d/modprobe.conf}} や {{ic|/etc/modprobe.d/sound.conf}} で設定することができます。例えば:
   
 
options snd-hda-intel model=MODEL
 
options snd-hda-intel model=MODEL
385行目: 409行目:
 
{{Note|この "options" 行はあなたのカードの "alias" 行の下(後ろ)に置く必要があるかもしれません。}}
 
{{Note|この "options" 行はあなたのカードの "alias" 行の下(後ろ)に置く必要があるかもしれません。}}
   
カーネルドキュメントで利用できる全てのモデルを見ることができます。例えば [http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/Documentation/sound/alsa/HD-Audio-Models.txt ここ]、ただしあなたの使っているカーネルのバージョンとドキュメントのバージョンが正しいかを確認してください。
+
カーネルドキュメントで利用できる全てのモデルを見ることができます。例えば [https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/Documentation/sound/alsa/HD-Audio-Models.txt ここ]、ただしあなたの使っているカーネルのバージョンとドキュメントのバージョンが正しいかを確認してください。
   
利用できるモデルの一覧は [http://www.mjmwired.net/kernel/Documentation/sound/alsa/HD-Audio-Models.txt ここ] にもあります。あなたの使っているチップの名前を知るには次のコマンドを実行してください (* はあなたのファイルにあわせて修正してください)。チップによっては名前が変わっておりファイルのモデル名と一致しないことがあるので注意してください。
+
利用できるモデルの一覧は [https://www.mjmwired.net/kernel/Documentation/sound/alsa/HD-Audio-Models.txt ここ] にもあります。あなたの使っているチップの名前を知るには次のコマンドを実行してください (* はあなたのファイルにあわせて修正してください)。チップによっては名前が変わっておりファイルのモデル名と一致しないことがあるので注意してください。
   
 
$ grep Codec /proc/asound/card*/codec*
 
$ grep Codec /proc/asound/card*/codec*
449行目: 473行目:
 
}}
 
}}
   
====HDMI からマルチチャンネル PCM が出力できない (Intel Gfx) ====
+
==== HDMI からマルチチャンネル PCM が出力できない (Intel Gfx) ====
   
 
Linux 3.1 現在、インテルのカード (Intel Eaglelake, IbexPeak/Ironlake,SandyBridge/CougarPoint, IvyBridge/PantherPoint) での HDMI からのマルチチャンネル PCM の出力はサポートされていません。Linux 3.2 でサポートが追加される予定です。Linux 3.1 で出力できるようにするには以下のパッチを適用する必要があります:
 
Linux 3.1 現在、インテルのカード (Intel Eaglelake, IbexPeak/Ironlake,SandyBridge/CougarPoint, IvyBridge/PantherPoint) での HDMI からのマルチチャンネル PCM の出力はサポートされていません。Linux 3.2 でサポートが追加される予定です。Linux 3.1 で出力できるようにするには以下のパッチを適用する必要があります:
   
* [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=patch;h=76adaa34db407f174dd06370cb60f6029c33b465 drm: support routines for HDMI/DP ELD]
+
* [https://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=patch;h=76adaa34db407f174dd06370cb60f6029c33b465 drm: support routines for HDMI/DP ELD]
* [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=patch;h=e0dac65ed45e72fe34cc7ccc76de0ba220bd38bb drm/i915: pass ELD to HDMI/DP audio driver]
+
* [https://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=patch;h=e0dac65ed45e72fe34cc7ccc76de0ba220bd38bb drm/i915: pass ELD to HDMI/DP audio driver]
  +
  +
==== HDMI 5.1 サウンドが間違ったスピーカーに届く ====
  +
  +
ALSA の {{ic|remap}} 関数を使用して、サウンドを目的のスピーカーにリダイレクトできます。
  +
  +
{{hc|/etc/asound.conf|2=
  +
pcm.!hdmi-remap {
  +
type asym
  +
playback.pcm {
  +
type plug
  +
slave.pcm "remap-surround51"
  +
}
  +
}
  +
  +
pcm.!remap-surround51 {
  +
type route
  +
slave.pcm "hw:0,3"
  +
ttable {
  +
0.0= 1
  +
1.1= 1
  +
2.4= 1
  +
3.5= 1
  +
4.2= 1
  +
5.3= 1
  +
}
  +
}
  +
}}
  +
  +
=== Intel Cannon Lake PCH cAVS ===
  +
  +
Intel Cannon Lake (例: HP ZBook 15 G6) では、統合サウンドチップセットには [[Advanced Linux Sound Architecture#ALSA ファームウェア|ALSA ファームウェア]] が必要で、次の [[カーネルモジュールパラメータ]] が必要です。
  +
  +
{{bc|1=
  +
options snd-hda-intel dmic_detect=0
  +
options snd-hda-intel model=laptop-amic enable=yes
  +
}}
  +
  +
これにより、サウンドとマイクの両方が有効になるはずです。
   
 
==アプリケーション==
 
==アプリケーション==
461行目: 523行目:
 
SDL では音が鳴らずアプリケーションで ALSA を選べない場合、SDL_AUDIODRIVER 環境変数を alsa に設定してみてください。
 
SDL では音が鳴らずアプリケーションで ALSA を選べない場合、SDL_AUDIODRIVER 環境変数を alsa に設定してみてください。
 
# export SDL_AUDIODRIVER=alsa
 
# export SDL_AUDIODRIVER=alsa
  +
  +
=== OpenAL: OpenAL を使用するアプリケーションで音が出ない ===
  +
  +
OpenAL のデフォルトは PulseAudio です。最初に ALSA を試すように指示するには、次のようにします。
  +
  +
{{hc|/etc/openal/alsoft.conf|2=
  +
drivers=alsa,pulse
  +
}}
   
 
===VirtualBox: 仮想マシンで音が鳴らない===
 
===VirtualBox: 仮想マシンで音が鳴らない===
531行目: 601行目:
   
 
{{note|この {{ic|/etc/asound.conf}} ファイルは全体的な [[Music Player Daemon|MPD]] 設定をすれば問題なく使えます。複数のユーザーについては[[#一度に複数のユーザーが使えない問題|このセクション]]を見て下さい。}}
 
{{note|この {{ic|/etc/asound.conf}} ファイルは全体的な [[Music Player Daemon|MPD]] 設定をすれば問題なく使えます。複数のユーザーについては[[#一度に複数のユーザーが使えない問題|このセクション]]を見て下さい。}}
  +
  +
{{Note|あるいは、PulseAudio がインストールされておらず、{{ic|dmix}} をバニラ ALSA で動作させるだけの場合は、[https://www.alsa-project.org/main/index.php/Asoundrc#dmix を参照してください、アップストリームドキュメント] 特に、上記の設定の {{ic|dsp}} を {{ic|!default}} に置き換えることをお勧めします。また、これによって特定のアプリケーションが再生中にスキップし (つまり、'''不具合''' なサウンド)、アンダーランが発生することに気付いた場合は、{{ic|pcm.dmixer}} 内の {{ic|slave.buffer_size}} を微調整するとよいでしょう。}}
  +
  +
=== 古い ALSA 状態ファイル (asound.state) の削除 ===
  +
  +
{{Pkg|alsa-utils}} パッケージは、システムのシャットダウン時に現在の ALSA 状態を {{ic|/var/lib/alsa/asound.state}} に自動的に保存する {{ic|alsa-store.service}} を提供します。これは、シャットダウンするたびに現在の状態で {{ic|asound.state}} ファイルが再作成されるため、現在の ALSA 状態をリセットしようとしているユーザーにとっては問題になる可能性があります (たとえば、ミキサーからユーザー定義チャンネルを削除しようとする場合) )次の空のファイルを作成すると、{{ic|alsa-store.service}} サービスを一時的に無効にすることができます。
  +
  +
# mkdir -p /etc/alsa
  +
# touch /etc/alsa/state-daemon.conf
  +
  +
{{ic|state-daemon.conf}} が存在すると、シャットダウン中に {{ic|alsa-store.service}} が {{ic|asound.state}} を保存できなくなります。このサービスを無効にすると、{{ic|asound.state}} ファイルが次のように削除される場合があります。
  +
  +
# rm /var/lib/alsa/asound.state
  +
  +
再起動後、以前の ALSA 状態は失われ、現在の状態はデフォルトにリセットされるはずです。作成した条件ファイルを削除して、{{ic|alsa-store.service}} を再度有効にします。
  +
  +
# rm /etc/alsa/state-daemon.conf
  +
  +
次回のシャットダウン時に、{{ic|asound.state}} ファイルは ALSA のデフォルトで再作成される必要があります。ファイルは、次のコマンドを使用してすぐに生成することもできます。
  +
  +
# alsactl store
  +
  +
再起動せずに ALSA 状態をクリーンアップしたい場合は、{{ic|rmmod}} を使用してサウンドドライバーモジュールを削除し、{{ic|asound.state}} 内の不要なエントリを手動で削除してから、{{ic |modprobe}} を実行して、サウンドドライバーモジュールを再インストールします。
   
 
===一度に複数のユーザーが使えない問題===
 
===一度に複数のユーザーが使えない問題===
542行目: 635行目:
 
slave {
 
slave {
 
...
 
...
  +
  +
=== Dell ノートパソコンでポップ音/パチパチ音 ===
  +
  +
{{AUR|i8kutils}} がインストールされているかどうか、また、i8kutils BIOS システムコールがカーネルを一時的にブロックしているため、モジュールによって公開されているインターフェイスに対して何か (例: {{ic|i8kmon.service}}) が読み書きされているかどうかを確認してください。一部のシステムでは。詳細については、[[ファンスピード制御#Dell ノートパソコン]] の警告を参照してください。

2023年10月17日 (火) 10:45時点における最新版

メインの記事は Advanced Linux Sound Architecture を見て下さい。

目次

ボリューム

出力がない

speaker-test がサウンドを生成するが、他のプログラムがサウンドを生成しない場合は、PulseAudio が使用されているかどうかを判断します。

# fuser -v /dev/snd/*

その場合は、Advanced Linux Sound Architecture#PulseAudio との互換性 で説明されているように、apulseAUR を使用してみてください。あるいは、PulseAudio プロセスを強制終了すると、目的のプロセスでサウンドが動作し始める可能性があります。

再起動後にミュートになる

次のコマンドを実行してみてください:

# alsactl restore

問題が解決しない場合、alsamixer の Auto-Mute トグルの状態を確認してください: EnabledDisabled にしてください。

ボリュームが小さすぎる

alsamixer を起動してスライダーの値を増やしたり、必要に応じてチャンネルのミュートを解除してください。スライダーが沢山ある場合、右側にスライダーが隠れている可能性があります。

全てのスライダーを最大にしても、ボリュームが小さすぎる場合、以下の スクリプト を実行することでコーデックの設定をリセットできます:

$ wget http://www.alsa-project.org/hda-analyzer.py
$ su -c 'python2 hda-analyzer.py'

このスクリプトでは /usr/bin/python が Python 2 を指すことになっていますが、Arch では Python 3 です。問題を回避するために以下のコマンドを実行してください:

$ sed -i 's/python %s/python2 %s/' hda-analyzer_run.py

アナライザを閉じて、コーデックをリセットするかどうかのプロンプトが表示されたら、"yes" と答えて下さい。

それでもボリュームが小さい場合、alsamixer をもう一度起動してください: コーデックのリセットによって新しいスライダーが現れることがあります。

音が小さい

スピーカーやヘッドフォンの音量を最大にしても音が小さいならば、softvol プラグインを試すことができます。以下を /etc/asound.conf に加えて下さい:

pcm.!default {
      type plug
      slave.pcm "softvol"
  }

pcm.softvol {
    type softvol
    slave {
        pcm "dmix"
    }
    control {
        name "Pre-Amp"
        card 0
    }
    min_dB -5.0
    max_dB 20.0
    resolution 6
}
ノート: alsa デーモンを再起動しても新しい構成が読み込まれないため、おそらくコンピューターを再起動する必要があります。また、再起動しても設定がうまくいかない場合は、上記設定の plughw に変更してみてください。

正しくロードされた後、alsamixer の Pre-Amp セクションを見て下さい。このセクションでボリュームを調節できます。

ノート:
  • Pre-Ampの値を高く設定すると音がひずむ場合がありますので、お好みのレベルに合わせて調整してください。
  • 一部のオーディオ コーデックでは、歪みのない適切な音量を実現するために、HDA アナライザーで設定を調整する必要がある場合があります (ボリュームが小さすぎる を参照) 再生スイッチのウィジェット制御で HP オプションをチェックすると (ALC892 コーデックの Node[0x14] PIN など)、オーディオの品質と音量が大幅に向上する場合があります。

起動時にランダムで音が出なくなる

speaker-test を実行することで音のテストができます。音が出ない場合、以下のようなエラーメッセージが表示されるはずです:

 ALSA lib pcm_dmix.c:1022:(snd_pcm_dmix_open) unable to open slave
 Playback open error: -16
 Device or resource busy

ランダムで音が出なくなる場合、あなたのシステムに複数のサウンドカードが存在するのが理由かもしれません。起動時にサウンドカードの順番が変わっている可能性があります。この場合は、デフォルトのサウンドカードを設定してみてください。

mpd を使っていて上記の設定が動かないときは、こちらを読んで下さい

マイクロフォン

マイクが入らない

alsamixer で、録音のところの全てのボリュームレベルが上がっているか、そしてマイク (例: Mic, Internal Mic) の CAPTURE が有効になっているか確認してください (alsamixer で、アイテムを選択してスペースを押して下さい)。Mic Boost を使ったり Capture や Digital レベルを高くしてみて下さい。音が悪くなるかもしれませんが、何か聞こえたら後で元に戻すことができます。

alsamixer では pulseaudio ラッパーは "default" と表示されるので、実際のサウンドカードを選ぶためにまず F6 を押す必要があるかもしれません。また、再生セクションの Line-in を有効にしたり上げたりもしてみて下さい。

マイクをテストするには、以下のコマンドを実行してください (詳しくは arecord の man ページを見て下さい):

$ arecord -d 5 test-mic.wav
$ aplay test-mic.wav

全てが上手くいかないときは、他のデバイスを使ってマイクのテストを行い、ハードウェアに問題がないか確認してください。

コンピュータによっては、マイクロフォン (MM) のミュートをするとスピーカーにすぐには入力が行かないことがあります。入力は受信されています。

Dell のノートパソコンの多くは /etc/modprobe.d/modprobe.conf のモデル名に "-dmic" を加えることを必要とします:

options snd-hda-intel model=dell-m6-dmic

プログラムによってはメインの入力ソフトウェアとして OSS を使おうとすることがあります。snd_pcm_oss, snd_mixer_oss, snd_seq_oss カーネルモジュールを以前有効にしている場合 (デフォルトではロードされません)、アンロードしてみて下さい。

参照:

デフォルトのマイク・キャプチャデバイスの設定

アプリケーションによってはキャプチャデバイスを変更するオプションがないことがあります (Pidgin, Adobe Flash)。内蔵のサウンドカード以外にマイクロフォンがある場合 (例: USB webcam や microphone) これが問題になるでしょう。デフォルトのキャプチャデバイスを変更するには、デフォルトの playback device を変えて下さい。~/.asoundrc ファイルを以下のように変更します:

pcm.usb
{
    type hw
    card U0x46d0x81d
}

pcm.!default
{
    type asym
    playback.pcm
    {
        type plug
        slave.pcm "dmix"
    }
    capture.pcm
    {
        type plug
        slave.pcm "usb"
    }
}

"U0x46d0x81d" は ALSA のキャプチャデバイスのカード名に置き換えてください。arecord -L を使ってALSA によって検知されている全てのキャプチャデバイスを一覧できます。

内蔵マイクが動作しない

まず alsamixer で録音のボリュームレベルを全て上げてあるか確認してください。オプションを /etc/sound.conf に追加して、snd-* モジュールをリロードすると内蔵マイクの Capture という新しいボリューム設定が作られることがあります。例えば、snd-hda-inter の場合:

options snd-hda-intel enable_msi=1

それからモジュールをリロードして、Capture の録音ボリュームを上げてください。

# rmmod snd-hda-intel && modprobe snd-hda-intel

マイクにパチパチという音が乗る

マイクロフォンからパチパチというノイズやポップノイズが出ていて、ALSA の設定やマイクジャックの掃除で問題が解決しない場合、次の行を /etc/modprobe.d/modprobe.conf に追加してみて下さい:

options snd-hda-intel model=MODEL position_fix=3

このオプションは Alsa のノイズを修正しますが、pulseaudio に問題を発生させます。Pulse がこの設定を問題なく使えるようにするには、/etc/pulse/default.pa 内で次の行を探して:

load-module module-udev-detect

以下のように変更してください:

load-module module-udev-detect tsched=0

カーネルドキュメントの DMA-Position Problem を参照してください。

音質

ミニジャック (ヘッドフォンコネクタ) で音が割れる

同時出力のヒントを見て同時出力を設定した場合、ヘッドフォンや外付けスピーカーで音が割れることがあります。この問題は Mic アイテムをミュートにしたりボリュームを 0% に設定することで解決します。alsamixer または amixer を使って下さい:

$ amixer sset "Mic" 0%
$ amixer sset "Mic" mute

サスペンドから復帰した後にポップノイズが鳴る

休止状態から復帰したときにポップノイズが聞こえることがあるかもしれません。/etc/pm/sleep.d/90alsa を編集して aplay -d 1 /dev/zero と書かれた行を削除することで直せます。

USB デバイスで音割れする

USB デバイスで音割れが起こるときは、snd-usb-audio を調整してレイテンシを下げることを試すことができます。

以下を /etc/modprobe.d/modprobe.conf に加えて下さい:

options snd-usb-audio nrpacks=1

ソース: http://alsa.opensrc.org/Usb-audio#Tuning_USB_devices_for_minimal_latencies

サウンドの品質が悪い

サウンドの質が悪いときは、(alsamixer で) PCM ボリュームの値をゲインが 0 になるようにしてみてください。

snd-usb-audio ドライバーがロードされている場合、/etc/asound.conf ファイルで softvol を有効にすることができます。最初のオーディオデバイスの設定例:

 pcm.!default {
   type plug
   slave.pcm "softvol"
 }
 pcm.dmixer {
      type dmix
      ipc_key 1024
      slave {
          pcm "hw:0"
          period_time 0
          period_size 4096
          buffer_size 131072
          rate 50000
      }
      bindings {
          0 0
          1 1
      }
 }
 pcm.dsnooper {
      type dsnoop
      ipc_key 1024
      slave {
          pcm "hw:0"
          channels 2
          period_time 0
          period_size 4096
          buffer_size 131072
          rate 50000
      }
      bindings {
          0 0
          1 1
      }
 }
 pcm.softvol {
      type softvol
      slave { pcm "dmixer" }
      control {
          name "Master"
          card 0
      }
 }
 ctl.!default {
   type hw
   card 0
 }
 ctl.softvol {
   type hw
   card 0
 }
 ctl.dmixer {
   type hw
   card 0
 }

再生を開始・停止するとポップノイズが鳴る

モジュールにはサウンドカードが使われていない時、その電源を落とすものがあります (例えば snd_ac97_codec と snd_hda_intel)。サウンドカードの電源が入ったり落とされる時にノイズ(ポップ・クリック・スクラッチ)が出ることがあります。これはボリュームスライダーを動かしたり、ウィンドウを開閉することでも (KDE4) 起きることがあります。これが気になる時は、modinfo snd_MY_MODULE でパワーオフ機能を調整・無効にするモジュールオプションを使って下さい。

例: パワーセーブモードを無効化してスピーカーからポップ音が鳴るのを止めるには、snd_hda_intel を /etc/modprobe.d/modprobe.conf に追加します:

options snd_hda_intel power_save=0

もしくは:

options snd_hda_intel power_save=0 power_save_controller=N

また、modprobe snd_hda_intel power_save=0 で試すこともできます。

これを機能させるために 'Line' ALSA チャンネルのミュートを解除する必要もあるかもしれません。値は何でも結構です ('0' 以外なら)。

例: オンボードの VIA VT1708S (snd_hda_intel モジュールを使います) では 'power_save' が 0 に設定されていてもノイズが発生します。'Line' チャンネルをアンミュートして値を '1' に設定することで問題は解決します。

参照: https://www.kernel.org/doc/Documentation/sound/alsa/powersave.txt

ノートパソコンを使っているのなら、/etc/modprobe.d で省電力モードを無効にしていても、電源をバッテリーに移行した時に pm-utils によって power_save が 1 に戻されてしまうことがあります。変更を行うスクリプトを無効にして pm-utils にこれを止めさせて下さい (詳しくは Pm-utils#Disabling_a_hook を参照):

# touch /etc/pm/power.d/intel-audio-powersave

動的周波数スケーリングを使っていると音が飛ぶ

ALSA ドライバとチップセットの組み合わせによっては、ondemandconservative などの dynamic frequency scaling governor を一緒に使った時に全てのソースの音声が飛ぶ問題が起こることがあります。今の所、解決法は performance governor に切り替えることです。

詳細は CPU 周波数スケーリング を参照してください。

ハードウェアとカード

出力パラメータの検証

/proc/asound/cardX/pcmYp/subZ/hw_params の内容を確認します。ここで、XY、および Z はシステムに依存します。このファイルを見つけるには、ALSA 経由で何かを出力しながら次のコマンドを実行します。

$ find /proc/asound/ -name hw_params | xargs -I FILE grep -v -l "closed" FILE | grep '/proc/asound/card./pcm.p/sub./hw_params'

何も再生されていない場合、結果は得られません。

以下は、ビット深度 が 24 ビット、サンプリング周波数 が 44.1 キロヘルツのオーディオの出力例です。

cat /proc/asound/card1/pcm0p/sub0/hw_params
access: RW_INTERLEAVED
format: S24_3LE
subformat: STD
channels: 2
rate: 44100 (44100/1)
period_size: 5513
buffer_size: 22050

詳細については、ALSA ドキュメント を参照してください。

カーネルをアップデートした後に 'Unknown hardware' エラーが出る

カーネルのアップデート後に ALSA を起動すると以下のメッセージが表示されることがあります:

Unknown hardware "foo" "bar" ...
Hardware is initialized using a guess method
/usr/bin/alsactl: set_control:nnnn:failed to obtain info for control #mm (No such file or directory)

または:

Found hardware: "HDA-Intel" "VIA VT1705" "HDA:11064397,18490397,00100000" "0x1849" "0x0397"
Hardware is initialized using a generic method
/usr/bin/alsactl: set_control:1328: failed to obtain info for control #1 (No such file or directory)
/usr/bin/alsactl: set_control:1328: failed to obtain info for control #2 (No such file or directory)
/usr/bin/alsactl: set_control:1328: failed to obtain info for control #25 (No such file or directory)
/usr/bin/alsactl: set_control:1328: failed to obtain info for control #26 (No such file or directory)

(root で) ALSA ミキサーの設定をもう一度保存してください:

# alsactl -f /var/lib/alsa/asound.state store

alsamixer で ALSA の設定をもう一度する必要があるかもしれません。

オーディオピンのマッピングが間違っている

オーディオピン(プラグ)のマッピングが一致していないのに ALSA が問題なく動いている場合、HDA Analyzer を試してみて下さい -- HD オーディオコントロールの pyGTK2 GUI で ALSA wiki にあります。 PIN ノードの Widget Control セクションを調整して、マイクロフォンの IN とヘッドフォンジャックの OUT を作ってみて下さい。Config Defaults の見出しを参照すると良いでしょう。

ノート: このスクリプトは、Arch Linux のデフォルトの Python 実装である Python 3 と互換性がありません。スクリプトを使用するには、run.py ファイル内のすべての pythonpython2 に置き換えて、スクリプトが Python 2 バージョンを指すようにします。次に、スクリプトに 実行可能 権限を付けて実行します。

S/PDIF から出力できない

モジュールをロードして alsamixer でミュートを解除してもマザーボード・サウンドカードのオプティカル・コアキシャルのデジタル出力ができない場合、root で次を実行してください:

# iecset audio on

再起動後にまた出力できなくなるときはこのコマンドを systemd サービスに入れることができます。

PC スピーカーが衝突する

全てのミュートを解除していて、ドライバーが適切にインストールされていて、ボリュームもちゃんと上がっていて、それでも何も聞こえない場合、次の行を /etc/modprobe.d/modprobe.conf に追加してみて下さい:

options snd-NAME-OF-MODULE ac97_quirk=0

上記の修正は via82xx でも機能することが確認されています。

options snd-NAME-OF-MODULE ac97_quirk=1

上記の修正は snd_intel8x0 でも機能することが報告されています。

HP TX2500

以下の2行を /etc/modprobe.d/modprobe.conf に加えて下さい:

options snd-cmipci mpu_port=0x330 fm_port=0x388
options snd-hda-intel index=0 model=toshiba position_fix=1
options snd-hda-intel model=hp (tx2000cto の場合)

S/PDIF ビデオカードをインストールすると音が出ない

モジュールとその順番を調べて下さい:

$ cat /proc/asound/modules
0 snd_hda_intel
1 snd_ca0106

/etc/modprobe.d/modprobe.conf で不要なビデオカードのオーディオコーデックを無効化します:

# /etc/modprobe.d/modprobe.conf
#
install snd_hda_intel /bin/false

両方のデバイスが同じモジュールを使っている場合、snd-hda-intel モジュールの *enable* パラメータを使うことができます。boolean の配列でサウンドカードを有効・無効にすることが可能です。

例:

options snd-hda-intel enable=1,0

次のコマンドでカードのリストが取得できます:

cat /proc/asound/cards

サウンドカードのモデル設定が間違っている

Alsa は BIOS を通してサウンドカードを検知していますが、時々 Alsa が モデルのタイプ を認識できなくなることがあります。サウンドカードのチップは alsamixer で見ることができ (例: ALC662) モデルは /etc/modprobe.d/modprobe.conf/etc/modprobe.d/sound.conf で設定することができます。例えば:

options snd-hda-intel model=MODEL

他のモデルの設定も存在します。ほとんどの場合 Alsa のデフォルトが実行します。あなたのサウンドカードに合わせた設定を見たい場合は、Alsa Soundcard List からあなたのモデルを探して、Details をクリックして、"Setting up modprobe..." セクションを見て下さい。/etc/modprobe.d/modprobe.conf にそれらの値を入力してください。例えば、Intel AC97 オーディオならば:

# ALSA portion
alias char-major-116 snd
alias snd-card-0 snd-intel8x0
# module options should go here

# OSS/Free portion
alias char-major-14 soundcore
alias sound-slot-0 snd-card-0

# card #1
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-8 snd-seq-oss
alias sound-service-0-12 snd-pcm-oss

Intel オンボードサウンド

オンボードの Intel サウンドカードで音が出ない

ロードされた2つのモジュール、snd_intel8x0snd_intel8x0m が衝突しているのかもしれません。この場合、snd_intel8x0m をブラックリストに入れてください:

/etc/modprobe.d/modprobe.conf
blacklist snd_intel8x0m

alsamixeramixer で "External Amplifier" をミュートにすることが問題を解決することもあります。the ALSA wiki を見て下さい。

また、ミキサーで "Mix" 設定をアンミュートすることによって音が鳴るかもしれません。

オンボードの Intel サウンドカードでヘッドホンの音が出ない

ラップトップの Intel Corporation 82801 I (ICH9 Family) HD Audio Controller では、次の行を modprobe か sound.conf に加える必要があるかもしれません:

options snd-hda-intel model=model

model は以下の内どれかになります (この順番で動作しやすいはずです):

  • dell-vostro
  • olpc-xo-1_5
  • laptop
  • dell-m6
  • laptop-hpsense
ノート: この "options" 行はあなたのカードの "alias" 行の下(後ろ)に置く必要があるかもしれません。

カーネルドキュメントで利用できる全てのモデルを見ることができます。例えば ここ、ただしあなたの使っているカーネルのバージョンとドキュメントのバージョンが正しいかを確認してください。

利用できるモデルの一覧は ここ にもあります。あなたの使っているチップの名前を知るには次のコマンドを実行してください (* はあなたのファイルにあわせて修正してください)。チップによっては名前が変わっておりファイルのモデル名と一致しないことがあるので注意してください。

$ grep Codec /proc/asound/card*/codec*

これを選ぶと入力デバイス (内蔵・外付マイク) が全て動作しなくなることが十分あるので注意してください、それがヘッドフォンかマイクです。バグによる影響があるときは ALSA に報告してください。

またビープの動作に問題がある場合は (pcspkr):

options snd-hda-intel model=$model enable=1 index=0

HDMI

HDMI から出力できない

以下で説明している方法を使って HDMI オーディオをテストすることができます。進む前に、alsamixer でアウトプットが有効・アンミュートされているか確認してください。

ノート: ATI カードと linux カーネル >=3.0 を使っている場合は、必要なカーネルモジュールがデフォルトでは無効になっています。ATI#HDMI オーディオ を見て下さい。

HDMI ケーブルで PC をディスプレイに接続して xrandrarandr などのツールを使ってディスプレイを有効にしてください。例えば:

$ xrandr # list outputs
$ xrandr --output DVI-D_1 --mode 1024x768 --right-of PANEL # enable output

aplay -l を使ってカードとデバイス番号を取得してください。例えば:

$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: SB [HDA ATI SB], device 0: ALC892 Analog [ALC892 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: SB [HDA ATI SB], device 1: ALC892 Digital [ALC892 Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Generic [HD-Audio Generic], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

デバイスに音声を送って下さい。上の例に従って、カード 1 デバイス 3 に音を送ることにします:

$ aplay -D plughw:1,3 /usr/share/sounds/alsa/Front_Center.wav

aplay がエラーを出力しないのに、音が聞こえない場合、モニタや TV を"再起動"してください。HDMI インターフェイスは接続時にハンドシェイクを実行するので、埋め込まれたオーディオストリームがなかったり、オーディオデコードが無効化されていることに先に気づきます。特に、スタンドアロンのウィンドウマネージャを使っている場合、HDMI ケーブルを差し込む最中になんらかの音を再生しておく必要があります。

mplay や他のアプリケーションが音声出力に特別な HDMI デバイスを使うように設定することもできます。しかしながら flashplugin はデフォルトのデバイスしか使いません。以下の方法でデフォルトのデバイスを上書きすることができます。ただし TV を HDMI ポートから切断したときは変更を戻す必要があります。

テストが成功したら、~/.asoundrc ファイルを作成・編集して HDMI をデフォルトのオーディオデバイスに設定してください。

~/.asoundrc
pcm.!default {
  type hw
  card 0
  device 3
}

もしくは上の設定が機能しない場合:

~/.asoundrc
defaults.pcm.card 0
defaults.pcm.device 3
defaults.ctl.card 0

HDMI からマルチチャンネル PCM が出力できない (Intel Gfx)

Linux 3.1 現在、インテルのカード (Intel Eaglelake, IbexPeak/Ironlake,SandyBridge/CougarPoint, IvyBridge/PantherPoint) での HDMI からのマルチチャンネル PCM の出力はサポートされていません。Linux 3.2 でサポートが追加される予定です。Linux 3.1 で出力できるようにするには以下のパッチを適用する必要があります:

HDMI 5.1 サウンドが間違ったスピーカーに届く

ALSA の remap 関数を使用して、サウンドを目的のスピーカーにリダイレクトできます。

/etc/asound.conf
pcm.!hdmi-remap {
    type asym
    playback.pcm {
        type plug
        slave.pcm "remap-surround51"
    }
}

pcm.!remap-surround51 {
    type route
    slave.pcm "hw:0,3"
    ttable {
        0.0= 1
        1.1= 1
        2.4= 1
        3.5= 1
        4.2= 1
        5.3= 1
    }
}

Intel Cannon Lake PCH cAVS

Intel Cannon Lake (例: HP ZBook 15 G6) では、統合サウンドチップセットには ALSA ファームウェア が必要で、次の カーネルモジュールパラメータ が必要です。

options snd-hda-intel dmic_detect=0
options snd-hda-intel model=laptop-amic enable=yes

これにより、サウンドとマイクの両方が有効になるはずです。

アプリケーション

SDL: SDL アプリケーションで音が鳴らない

SDL では音が鳴らずアプリケーションで ALSA を選べない場合、SDL_AUDIODRIVER 環境変数を alsa に設定してみてください。

# export SDL_AUDIODRIVER=alsa

OpenAL: OpenAL を使用するアプリケーションで音が出ない

OpenAL のデフォルトは PulseAudio です。最初に ALSA を試すように指示するには、次のようにします。

/etc/openal/alsoft.conf
drivers=alsa,pulse

VirtualBox: 仮想マシンで音が鳴らない

virtualbox で問題が起こっているのなら、次のコマンドが役に立つかもしれません:

$ alsactl init

Found hardware: "ICH" "SigmaTel STAC9700,83,84" "AC97a:83847600" "0x8086" "0x0000"
Hardware is initialized using a generic method

またオーディオソフトウェアで ALSA 出力を有効にする必要があるかもしれません。

他のプログラム

XMMS や Mplayer など固有のオーディオ設定を使うプログラムには、それぞれ指定のオプションを設定してやってください。

MPlayer では、設定ファイルを開き以下の行を追加してください:

ao=alsa

mpv でも同じ行を設定ファイルのどれか一つに追加してください。

XMMS/Beep Media Player では、オプションからサウンドドライバを Alsa に設定してください。

XMMS では:

  • XMMS を起動
    • Options -> preferences
    • Alsa プラグインを選択

ALSA 出力をサポートしていないアプリケーションでは、alsa-oss パッケージの aoss を使うことができます。aoss を使うには、プログラムを起動するときに aoss を前に付けて下さい、例:

aoss realplay

pcm.!default{ ... } が動かない場合、次が使えるかもしれません:

pcm.default pcm.dmixer

その他の問題

同時再生問題

同時再生問題が起こっていて、(GNOME によって) PulseAudio がインストールされているのなら、それは PulseAudio のデフォルトの設定がサウンドカードを"ハイジャック"するようにセットされているためです。ALSA のユーザーの中には PulseAudio は使いたくなく、全て ALSA で設定したいという人もいるかもしれません。/etc/asound.conf を編集して以下の行をコメントアウトして修正することができます:

# Use PulseAudio by default
#pcm.!default {
#  type pulse
#  fallback "sysdefault"
#  hint {
#    show on
#    description "Default ALSA Output (currently PulseAudio Sound Server)"
#  }
#}

以下をコメントアウトすることでも可能です:

#ctl.!default {
#  type pulse
#  fallback "sysdefault"
#}

以上は PulseAudio を完全にアンインストールするよりもずっとシンプルな解決方法になります。

下は動作する /etc/asound.conf のサンプルです:

pcm.dmixer {
        type dmix
        ipc_key 1024
        ipc_key_add_uid 0
        ipc_perm 0660
}
pcm.dsp {
        type plug
        slave.pcm "dmix"
}
ノート: この /etc/asound.conf ファイルは全体的な MPD 設定をすれば問題なく使えます。複数のユーザーについてはこのセクションを見て下さい。
ノート: あるいは、PulseAudio がインストールされておらず、dmix をバニラ ALSA で動作させるだけの場合は、を参照してください、アップストリームドキュメント 特に、上記の設定の dsp!default に置き換えることをお勧めします。また、これによって特定のアプリケーションが再生中にスキップし (つまり、不具合 なサウンド)、アンダーランが発生することに気付いた場合は、pcm.dmixer 内の slave.buffer_size を微調整するとよいでしょう。

古い ALSA 状態ファイル (asound.state) の削除

alsa-utils パッケージは、システムのシャットダウン時に現在の ALSA 状態を /var/lib/alsa/asound.state に自動的に保存する alsa-store.service を提供します。これは、シャットダウンするたびに現在の状態で asound.state ファイルが再作成されるため、現在の ALSA 状態をリセットしようとしているユーザーにとっては問題になる可能性があります (たとえば、ミキサーからユーザー定義チャンネルを削除しようとする場合) )次の空のファイルを作成すると、alsa-store.service サービスを一時的に無効にすることができます。

# mkdir -p /etc/alsa
# touch /etc/alsa/state-daemon.conf

state-daemon.conf が存在すると、シャットダウン中に alsa-store.serviceasound.state を保存できなくなります。このサービスを無効にすると、asound.state ファイルが次のように削除される場合があります。

# rm /var/lib/alsa/asound.state

再起動後、以前の ALSA 状態は失われ、現在の状態はデフォルトにリセットされるはずです。作成した条件ファイルを削除して、alsa-store.service を再度有効にします。

# rm /etc/alsa/state-daemon.conf

次回のシャットダウン時に、asound.state ファイルは ALSA のデフォルトで再作成される必要があります。ファイルは、次のコマンドを使用してすぐに生成することもできます。

# alsactl store

再起動せずに ALSA 状態をクリーンアップしたい場合は、rmmod を使用してサウンドドライバーモジュールを削除し、asound.state 内の不要なエントリを手動で削除してから、modprobe を実行して、サウンドドライバーモジュールを再インストールします。

一度に複数のユーザーが使えない問題

dmixer を使えるのは一度にたったひとりのユーザーだけです。これはほとんどの人にとっては問題ありませんが、mpd を違うユーザーで動作させている人にとっては問題になります。mpd が再生中の時、一般ユーザーは dmixer を使ってサウンドを再生できなくなってしまいます。同じユーザーで mpd を実行する以外にも解決方法は存在します。ipc_key_add_uid 0pcm.dmixer に追加するとロックが無効になります。以下は asound.conf のスニペットです、他の部分への変更はありません。

...
pcm.dmixer {
 type dmix
 ipc_key 1024
 ipc_key_add_uid 0
 ipc_perm 0660
slave {
...

Dell ノートパソコンでポップ音/パチパチ音

i8kutilsAUR がインストールされているかどうか、また、i8kutils BIOS システムコールがカーネルを一時的にブロックしているため、モジュールによって公開されているインターフェイスに対して何か (例: i8kmon.service) が読み書きされているかどうかを確認してください。一部のシステムでは。詳細については、ファンスピード制御#Dell ノートパソコン の警告を参照してください。