「PulseAudio/トラブルシューティング」の版間の差分
3行目: | 3行目: | ||
[[en:PulseAudio/Troubleshooting]] |
[[en:PulseAudio/Troubleshooting]] |
||
[[it:PulseAudio/Troubleshooting]] |
[[it:PulseAudio/Troubleshooting]] |
||
+ | [[ru:PulseAudio/Troubleshooting]] |
||
メインの記事は [[PulseAudio]] を見て下さい。 |
メインの記事は [[PulseAudio]] を見て下さい。 |
||
269行目: | 270行目: | ||
== 音質 == |
== 音質 == |
||
+ | |||
+ | === エコー除去・ノイズキャンセルを有効にする === |
||
+ | |||
+ | デフォルトでは Arch は Pulseaudio のエコー除去モジュールをロードしません。そのため {{ic|/etc/pulse/default.pa}} にモジュールを追加する必要があります。まず {{ic|pacmd}} で {{ic|list-modules}} を入力することでモジュールが存在するか確認できます。{{ic|name: <module-echo-cancel>}} という行が表示されない場合、以下を追加してください: |
||
+ | |||
+ | {{hc|/etc/pulse/default.pa| |
||
+ | ### Enable Echo/Noise-Cancelation |
||
+ | load-module module-echo-cancel |
||
+ | }} |
||
+ | |||
+ | そして Pulseaudio を再起動してください: |
||
+ | |||
+ | pulseaudio -k |
||
+ | pulseaudio --start |
||
+ | |||
+ | {{ic|pavucontrol}} を起動してモジュールが有効になっているか確かめます。{{ic|Recoding}} の下の入力デバイスが {{ic|Echo-Cancel Source Stream from"}} となっているはずです。 |
||
=== Glitches, skips or crackling === |
=== Glitches, skips or crackling === |
2015年12月16日 (水) 20:37時点における版
メインの記事は PulseAudio を見て下さい。
目次
- 1 ボリューム
- 1.1 Auto-Mute モード
- 1.2 オーディオデバイスがミュートになる
- 1.3 アプリケーションがミュートになる
- 1.4 ボリューム調整が上手く動かない
- 1.5 Master ボリュームを調整するとアプリケーションごとのボリュームが変化する
- 1.6 新しいアプリケーションを起動するたびにボリュームが大きくなる
- 1.7 M-Audio Audiophile 2496 サウンドカードで音声出力がモノラルになる
- 1.8 ボリュームのカットオフで音が鳴らない
- 1.9 内蔵マイクのボリュームが小さい
- 1.10 クライアントが master の出力ボリュームを変えてしまう (アプリケーションを実行するとボリュームが 100% になる)
- 1.11 サスペンドから復帰した後に音が鳴らない
- 1.12 ヘッドフォンの抜き差しと ALSA のチャンネルのミュート
- 2 マイク
- 3 音質
- 4 ハードウェアとカード
- 5 Bluetooth
- 6 アプリケーション
- 7 その他の問題
- 7.1 設定ファイルが間違っている
- 7.2 pavucontrol でサウンドデバイスの設定を更新できない
- 7.3 Pulse が ALSA の設定を上書きする
- 7.4 Pulse が再起動するのを止める
- 7.5 デーモンの起動が失敗する
- 7.6 Daemon already running
- 7.7 曲が終わるとサブウーファーが止まる
- 7.8 "Surround 4.0" 以外のサラウンド設定が選択できない
- 7.9 リアルタイムスケジューリング
- 7.10 pactl "invalid option" error with negative percentage arguments
- 7.11 Fallback デバイスが反映されない
ボリューム
Auto-Mute モード
Auto-Mute モードが有効になっているのかもしれません。alsamixer
を使って無効にできます。
詳しくは http://superuser.com/questions/431079/how-to-disable-auto-mute-mode を見て下さい。
オーディオデバイスがミュートになる
もし、ALSAの利用中にどうやっても音が鳴らないならば、サウンドカードのミュート設定を外しましょう。そのためには、alsamixer
を実行して、それぞれの列の下部が緑色の「00」になっているようにします (m
キーを押すことで切り替えます):
$ alsamixer -c 0
アプリケーションがミュートになる
特定のアプリケーションがミュートになったり、他のアプリケーションと比べて音量が低くなる場合、おそらく個々の sink-input
の設定が原因です。問題のアプリケーションで音声を再生しているときに、以下を実行してください:
$ pacmd list-sink-inputs
適切な sink input
の index
を探して下さい。properties:
application.name
と application.process.binary
などでわかるはずです。muted
や volume
などの設定が問題ないことを確認しましょう。sink がミュートになっている場合、次のコマンドでミュートを解除できます:
$ pacmd set-sink-input-mute <index> false
ボリュームを変える必要がある場合、次のコマンドで 100% に設定できます:
$ pacmd set-sink-input-volume <index> 0x10000
ボリューム調整が上手く動かない
次を確認してください:
/usr/share/pulseaudio/alsa-mixer/paths/analog-output.conf.common
alsamixer
や amixer
でボリュームを適切に調整できない場合、pulseaudio が大きい数値を使っている可能性があります (正確には 65537)。ボリュームを変更するときに大きい値を使ってみて下さい (例: amixer set Master 655+
)。
Master ボリュームを調整するとアプリケーションごとのボリュームが変化する
これは PulseAudio がデフォルトで、絶対的なマスターボリュームに呼応する相対ボリュームではなく、フラットボリュームを使っていることが原因です。この設定が困る場合、PulseAudio デーモンの設定ファイルでフラットボリュームを無効にすることで、相対ボリュームを有効にすることができます:
/etc/pulse/daemon.conf
flat-volumes = no
そして以下を実行して PulseAudio を再起動してください:
$ pulseaudio -k $ pulseaudio --start
新しいアプリケーションを起動するたびにボリュームが大きくなる
デフォルトの設定では、アプリケーション内でボリュームを変更すると、各アプリケーションだけに影響を与えるのではなく、グローバルなシステムボリュームがそのレベルに設定されるようになっているようです。そのためアプリケーションが起動時にボリュームを設定すると、システムボリュームが"跳ね上がる"ようになります。
これを修正するには、前のセクションで説明しているように、フラットボリュームを無効にしてください。Pulse を起動しなおして数秒したら、アプリケーションはグローバルなシステムボリュームの代わりにアプリケーション毎のボリュームレベルを変更するようになっているはずです。
M-Audio Audiophile 2496 サウンドカードで音声出力がモノラルになる
以下を追加してください:
/etc/pulseaudio/default.pa
load-module module-alsa-sink sink_name=delta_out device=hw:M2496 format=s24le channels=10 channel_map=left,right,aux0,aux1,aux2,aux3,aux4,aux5,aux6,aux7 load-module module-alsa-source source_name=delta_in device=hw:M2496 format=s24le channels=12 channel_map=left,right,aux0,aux1,aux2,aux3,aux4,aux5,aux6,aux7,aux8,aux9 set-default-sink delta_out set-default-source delta_in
ボリュームのカットオフで音が鳴らない
既知の問題 (won't fix): https://bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/223133
Pulseaudio のボリュームが特定のレベル以下のときに音声が流れない場合、/etc/pulse/default.pa
で ignore_dB=1
を使ってみて下さい:
/etc/pulse/default.pa
load-module module-udev-detect ignore_dB=1
ただし、ヘッドフォンや他のオーディオデバイスが接続されていないときに pulseaudio がスピーカーをアンミュートできないという他のバグが発生してしまう可能性があります。
内蔵マイクのボリュームが小さい
ノートパソコン内蔵のマイクロフォンのボリュームが小さい時は、以下を設定して見て下さい:
/etc/pulse/default.pa
set-source-volume 1 300000
クライアントが master の出力ボリュームを変えてしまう (アプリケーションを実行するとボリュームが 100% になる)
特定のアプリケーションでボリュームを変更したり、アプリケーションを実行するだけで、マスター出力ボリュームが変更されてしまう場合、pulseaudio のフラットボリュームモードが原因です。無効化する前に、KDE ユーザーは System Settings -> Application and System Notifications -> Manage Notifications の Player Settings タブでシステム通知のボリュームを下げて問題が解決しないか試して下さい。KMix などのボリュームミキサーアプリケーションで Event Sounds のボリュームを変更してもここでは役に立ちません。これでフラットボリュームモードが正しく機能するようになるはずですが、機能しない場合、他のアプリケーションが音声の再生時にボリュームを 100% に設定してしまいます。全く直せそうにない場合、フラットボリュームを無効化しましょう:
/etc/pulse/daemon.conf
flat-volumes = no
そして PulseAudio デーモンを再起動してください:
# pulseaudio -k # pulseaudio --start
サスペンドから復帰した後に音が鳴らない
通常は音が鳴るのに、サスペンドから復帰すると停止する場合、次を実行して PulseAudio を"再ロード"してみてください:
$ /usr/bin/pasuspender /bin/true
これは PulseAudio を完全に終了して再起動するよりかはベターです (pulseaudio -k
の後に pulseaudio --start
)、なぜなら動作中のアプリケーションを破壊しないからです。
上のコマンドで修正できたら、systemd のサービスファイルを作成することでこれを自動化できます。
1. /etc/systemd/system/resume-fix-pulseaudio@.service
にテンプレートのサービスファイルを作成してください:
[Unit] Description=Fix PulseAudio after resume from suspend After=suspend.target [Service] User=%I Type=oneshot Environment="XDG_RUNTIME_DIR=/run/user/%U" ExecStart=/usr/bin/pasuspender /bin/true [Install] WantedBy=suspend.target
2. ユーザーアカウントで有効にしてください
# systemctl enable resume-fix-pulseaudio@YOUR_USERNAME_HERE.service
3. systemd をリロードしてください
# systemctl --system daemon-reload
ヘッドフォンの抜き差しと ALSA のチャンネルのミュート
ヘッドフォンを切断したり接続したときに alsamixer で間違ったチャンネルが 0% に設定されてミュートになる場合、/etc/pulse/default.pa
を開いて次の行をコメントアウトすることで修正できます:
load-module module-switch-on-port-available
マイク
マイクが PulseAudio から認識されない
マイクのカードとデバイス番号を確認:
$ arecord -l **** List of CAPTURE Hardware Devices **** card 0: PCH [HDA Intel PCH], device 0: ALC269VC Analog [ALC269VC Analog] Subdevices: 1/1 Subdevice #0: subdevice #0
hw:CARD,DEVICE という表記を見て下さい。上記の場合デバイスは hw:0,0
になります。
次に、/etc/pulse/default.pa
を編集して以下のように load-module
行を挿入してください (デバイスは必要に応じて置き換えてください):
load-module module-alsa-source device=hw:0,0 # the line above should be somewhere before the line below .ifexists module-udev-detect.so
最後に、pulseaudio を再起動して新しい設定を適用します:
$ pulseaudio -k ; pulseaudio -D
全てが上手くいった場合、pavucontrol
を実行したときにマイクが認識されているのがわかるはずです (Input Devices
タブ)。
Pulseaudio で間違ったマイクが使われる
Pulseaudio が間違ったマイクロフォンを使っていて、Pavucontrol で Input Device を変更しても直らない場合、alsamixer を見て下さい。Pavucontrol が入力ソースを正しく設定していない可能性があります。
$ alsamixer
F6
を押してあなたの使っているサウンドカードを選択してください (例: HDA Intel)。そして F5
を押し全てのアイテムを表示します。次のアイテムを探して下さい: Input Source
。上下の矢印キーで入力ソースを変更することができます。
適切なマイクロフォンが録音に使われているか確かめて下さい。
ThinkPad T400/T500/T420 でマイクが使えない
次を実行してください:
alsamixer -c 0
"Internal Mic" のボリュームを最大化/アンミュートします。
Once you see the device with:
arecord -l
you might still need to adjust the settings. The microphone and the audio jack are duplexed. Set the configuration of the internal audio in pavucontrol to Analog Stereo Duplex.
Acer Aspire One でマイクが使えない
Install pavucontrol, unlink the microphone channels and turn down the left one to 0. Reference: http://getsatisfaction.com/jolicloud/topics/deaf_internal_mic_on_acer_aspire_one#reply_2108048
マイク録音に雑音が入る
Skype, gnome-sound-recorder, arecord などでノイズが混じる場合、サウンドカードのサンプルレートが間違っています。サウンドハードウェアのサンプリング周波数を /etc/pulse/daemon.conf
で設定してください。
システムのサウンドカードを確かめる (1/5)
alsa-utils と関連パッケージをインストールする必要があります:
$ arecord --list-devices
**** List of CAPTURE Hardware Devices **** card 0: Intel [HDA Intel], device 0: ALC888 Analog [ALC888 Analog] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: Intel [HDA Intel], device 2: ALC888 Analog [ALC888 Analog] Subdevices: 1/1 Subdevice #0: subdevice #0
サウンドカードは hw:0,0
になります。
サウンドカードのサンプリングレートを確かめる (2/5)
arecord -f dat -r 60000 -D hw:0,0 -d 5 test.wav
"Recording WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 60000 Hz, Stereo Warning: rate is not accurate (requested = 60000Hz, got = 96000Hz) please, try the plug plugin
got = 96000Hz
に注目してください。これが使っているカードの最大サンプリングレートになります。
サウンドカードのサンプリングレートを pulse audio に設定する (3/5)
pulseaudio のデフォルトのサンプルレート:
$ grep "default-sample-rate" /etc/pulse/daemon.conf
; default-sample-rate = 44100
44100
は無効にして 96000
に変更する必要があります:
# sed 's/; default-sample-rate = 44100/default-sample-rate = 96000/g' -i /etc/pulse/daemon.conf
pulseaudio を再起動して新しい設定を適用する (4/5)
$ pulseaudio -k $ pulseaudio --start
最後に録音してから再生して確認する (5/5)
10秒ほど、マイクを使って何か録音してみてください。マイクロフォンがミュートになっていないことを確認してください。
$ arecord -f cd -d 10 test-mic.wav
10秒後、録音したものを再生してみましょう...
$ aplay test-mic.wav
上手くいっていれば、マイクの録音にノイズが混ざらなくなっているはずです。
enable-remixing = no を設定すると Steam や Skype でマイクが使えない
/etc/pulse/daemon.conf
に enable-remixing = no
を設定すると Skype や Steam など特定のアプリケーションでマイクロフォンが停止することがあります。これはアプリケーションがマイクロフォンをモノ音声のみとしてキャプチャしていて、リミキシングが無効になっているのが原因です。Pulseaudio はステレオのマイクロフォンをモノにリミックスしません。
これを修正するには Pulseaudio がリミックスするよう設定する必要があります:
1. ソースの名前を探して下さい
# pacmd list-sources
出力の例、必要な名前は太字になっています:
index: 2 name: <alsa_input.pci-0000_00_14.2.analog-stereo> driver: <module-alsa-card.c> flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY
2. リマップルールを /etc/pulse/default.pa
に追加、前のコマンドで見つけた名前を使って下さい。ここでは例として alsa_input.pci-0000_00_14.2.analog-stereo を使います:
/etc/pulse/default.pa
### Remap microphone to mono load-module module-remap-source master=alsa_input.pci-0000_00_14.2.analog-stereo master_channel_map=front-left,front-right channels=2 channel_map=mono,mono
3. Pulseaudio を再起動
# pulseaudio -k
マイクロフォンを使用するプログラムを終了していない場合 Pulseaudio が起動に失敗することがあります (例えばファイルを編集する前に Steam でテストした場合)、その場合はアプリケーションを終了して手動で Pulseaudio を起動してください:
# pulseaudio --start
音質
エコー除去・ノイズキャンセルを有効にする
デフォルトでは Arch は Pulseaudio のエコー除去モジュールをロードしません。そのため /etc/pulse/default.pa
にモジュールを追加する必要があります。まず pacmd
で list-modules
を入力することでモジュールが存在するか確認できます。name: <module-echo-cancel>
という行が表示されない場合、以下を追加してください:
/etc/pulse/default.pa
### Enable Echo/Noise-Cancelation load-module module-echo-cancel
そして Pulseaudio を再起動してください:
pulseaudio -k pulseaudio --start
pavucontrol
を起動してモジュールが有効になっているか確かめます。Recoding
の下の入力デバイスが Echo-Cancel Source Stream from"
となっているはずです。
Glitches, skips or crackling
PulseAudio サウンドサーバの新しい実装では旧来の割り込みを使用する方法に変わってタイマーベースのオーディオスケジューリングを使っています。
タイマーベースのスケジューリングはいくつかの ALSA ドライバーで問題を発生する可能性があります。他方では、タイマーベースのスケジューリングがないと不調になるドライバーもあります。あなたのシステムで何が動作しているのか確認してください。
タイマーベースのスケジューリングを無効にするには /etc/pulse/default.pa
に tsched=0
を追加してください:
/etc/pulse/default.pa
load-module module-udev-detect tsched=0
それから PulseAudio サーバーを再起動してください:
$ pulseaudio -k $ pulseaudio --start
タイマーベースのスケジューリングがデフォルトで有効になっていなかった場合、逆を行なって下さい。
Intel の IOMMU を使っていると問題が発生することもあります。IOMMU を使っていて中断やスキップなどが起こる場合 intel_iommu=igfx_off
をカーネルコマンドラインに追加してください。
問題が起こるカードは PulseAudio Broken Sound Driver のページ で報告してください。
Pulseaudio におけるデフォルトのフラグメント・バッファサイズを設定する
オーディオデバイスのパラメータを調べる (1/4)
サウンドカードのバッファリング設定を見つけるには:
$ echo autospawn = no >> ~/.config/pulse/client.conf $ pulseaudio -k $ LANG=C timeout --foreground -k 10 -s kill 10 pulseaudio -vvvv 2>&1 | grep device.buffering -B 10 $ sed -i '$d' ~/.config/pulse/client.conf
Pulseaudio によって検出されたサウンドカードごとに、以下のような出力が表示されます:
I: [pulseaudio] source.c: alsa.long_card_name = "HDA Intel at 0xfa200000 irq 46" I: [pulseaudio] source.c: alsa.driver_name = "snd_hda_intel" I: [pulseaudio] source.c: device.bus_path = "pci-0000:00:1b.0" I: [pulseaudio] source.c: sysfs.path = "/devices/pci0000:00/0000:00:1b.0/sound/card0" I: [pulseaudio] source.c: device.bus = "pci" I: [pulseaudio] source.c: device.vendor.id = "8086" I: [pulseaudio] source.c: device.vendor.name = "Intel Corporation" I: [pulseaudio] source.c: device.product.name = "82801I (ICH9 Family) HD Audio Controller" I: [pulseaudio] source.c: device.form_factor = "internal" I: [pulseaudio] source.c: device.string = "front:0" I: [pulseaudio] source.c: device.buffering.buffer_size = "768000" I: [pulseaudio] source.c: device.buffering.fragment_size = "384000"
該当するサウンドカードの buffer_size と fragment_size の値をメモして下さい。
ミリ秒のフラグメントサイズとフラグメントの数を計算する (2/4)
PulseAudio のデフォルトのサンプリングレートとビット深度は 44100Hz
@ 16 bits
に設定されています。
この設定の場合、必要なビットレートは 44100
*16
= 705600
ビット毎秒です。ステレオなら 1411200 bps
になります。
前のステップで見つけたパラメータを見てみましょう:
device.buffering.buffer_size = "768000" => 768000/1411200 = 0.544217687075s = 544 msecs device.buffering.fragment_size = "384000" => 384000/1411200 = 0.272108843537s = 272 msecs
Pulseaudio の設定ファイルを修正する (3/4)
/etc/pulse/daemon.conf
; default-fragments = X ; default-fragment-size-msec = Y
前のステップで、フラグメントサイズのパラメータを計算しました。
フラグメントの数字は buffer_size/fragment_size になり、この場合 (544/272
) で 2
です:
/etc/pulse/daemon.conf
; default-fragments = '''2''' ; default-fragment-size-msec = '''272'''
Pulseaudio デーモンを再起動する (4/4)
$ pulseaudio -k $ pulseaudio --start
詳しくは次を参照してください: Linux Mint topic
アナログのサラウンド設定で音が途切れる
低域効果音 (low-frequency effects, LFE) チャンネルはデフォルトではリミックスされません。有効にするには以下を /etc/pulse/daemon.conf
で設定する必要があります:
/etc/pulse/daemon.conf
enable-lfe-remixing = yes
音がズレる
この問題はバッファサイズが適当でないことが原因です。
(もし存在するならば)以下のエントリに加えた修正を無効にするか、それでも問題が解決しない場合、アンコメントしてください:
/etc/pulse/daemon.conf
default-fragments = 8 default-fragment-size-msec = 5
音が歪んだり途切れる
サンプルレートの設定が間違っているために pulsaudio で音がとぎれるようになっている可能性があります。次を試して下さい:
/etc/pulse/daemon.conf
default-sample-rate = 48000
それから PulseAudio サーバーを再起動してください。
OpenAL を使っているアプリケーションで音が途切れるような場合は、/etc/openal/alsoft.conf
のサンプルレートを変更してください:
frequency = 48000
PCM ボリュームを 0dB より高く設定すると音声信号にクリッピングが発生することがあります。alsamixer -c0
を実行すればボリュームが問題なのか確認でき、修正することが可能です。ALSA は PulseAudio に dB 情報を 正しく伝えられない ことがあります。次を試して:
/etc/pulse/defaults.pa
load-module module-udev-detect ignore_dB=1
PulseAudio サーバーを再起動してみてください。ボリュームのカットオフで音が鳴らないも参照。
ハードウェアとカード
モニターの電源を切ると HDMI のサウンド出力がなくなる
モニターが HDMI/DisplayPort で接続されていて、音声端子がモニターのヘッドフォンジャックに挿入されているのに、pulseaudio が接続されていないと認識する場合:
pactl list sinks
... hdmi-output-0: HDMI / DisplayPort (priority: 5900, not available) ...
この場合 HDMI 出力から音声は流れません。この問題の対応策は他の TTY に切り替えてから元に戻すことです。この問題は ATI/Nvidia/Intel ユーザーによって報告されています。
カードが表示されない
PulseAudio が起動している場合、pacmd list
を実行してください。カードが全く表示されないときは、ALSA デバイスが使われていないか確認してください:
$ fuser -v /dev/snd/* $ fuser -v /dev/dsp
pcm や dsp ファイルを使用するアプリケーションは PulseAudio を再起動する前にシャットダウンしてください。
"dummy output" しかデバイスが表示されない
この問題は様々な原因が考えられますが、その一つは $HOME にある .asoundrc
ファイルがシステム全体の /etc/asound.conf
よりも優先されてしまうということです。
このユーザーファイルは asoundconf
ツールやグラフィカルな asoundconf-gtk
(メニューでは "Default sound card" という名前が付けられます) が起動した時も変更が加えられます。.asoundrc
が使われるのを止めるには以下のように最後の行をコメントアウトしてください:
.asoundrc
# </home/yourusername/.asoundrc.asoundconf>
特定のプログラムがオーディオデバイスを独占していまっている可能性もあります:
# fuser -v /dev/snd/*
USER PID ACCESS COMMAND /dev/snd/controlC0: root 931 F.... timidity bob 1195 F.... panel-6-mixer /dev/snd/controlC1: bob 1195 F.... panel-6-mixer bob 1215 F.... pulseaudio /dev/snd/pcmC0D0p: root 931 F...m timidity /dev/snd/seq: root 931 F.... timidity /dev/snd/timer: root 931 f.... timidity
上記の例では timidity によって pulseaudio のオーディオデバイスへのアクセスがブロックされています。timidity を終了すればまた音が出るようになります。
他にも FluidSynth が PulseAudio と衝突することもあります。このスレッドを参照。解決方法は FluidSynth を削除することです:
# pacman -Rnsc fluidsynth
デバイスで HDMI 5/7.1 を選択できない
使用している HDMI デバイスで 5/7.1 チャンネル出力が選択できない場合、/etc/pulse/default.pa
で "stream device reading" をオフにすると解決するかもしれません。
#Fallback デバイスが反映されない を見て下さい。
Failed to create sink input: sink is suspended
音声が出力されず、journalctl -b
ログに sink の休止に関する多数のエラーが表示される場合、まずユーザー別の pulse フォルダをバックアップして、それから削除してみてください:
$ rm -r ~/.pulse ~/.pulse-cookie
複数のサウンドカード・デバイスの同時出力
2つの異なるデバイスに同時出力するのはとても便利です。例えば、グラフィックカードの HDMI 出力から A/V レシーバに音声を送りながら、マザーボードのオンボードオーディオのアナログ出力から同じ音声を出力するなどが考えられます。以前と比べて同時出力はずっと簡単になりました (この例では GNOME デスクトップを使います)。
paprefs を使って、"Simultaneous Output" タブから "Add virtual output device for simultaneous output on all local sound cards" を選択します。そして、GNOME の "sound settings" で作成した同時出力を選択してください。
これで動作しない場合、以下を ~/.asoundrc
に追加してみてください:
pcm.dsp { type plug slave.pcm "dmix" }
同一サウンドカード上の複数の sink への同時出力が使えない
This can be useful for users who have multiple sound sources and want to play them on different sinks/outputs. An example use-case for this would be if you play music and also voice chat and want to output music to speakers (in this case Digital S/PDIF) and voice to headphones. (Analog)
This is sometimes auto detected by pulseaudio but not always. If you know that your soundcard can output to both Analog and S/PDIF at the same time and pulseaudio does not have this option in it's profiles in pavucontrol, or veromix then you probably need to create a configuration file for your soundcard.
More in detail you need to create a profile-set for your specific soundcard. This is done in two steps mostly.
- Create udev rule to make pulseaudio choose your pulseaudio configuration file specific to the soundcard.
- Create the actual configuration.
Create a pulseadio udev rule.
/usr/lib/udev/rules.d/90-pulseaudio-Xonar-STX.rules
ACTION=="change", SUBSYSTEM=="sound", KERNEL=="card*", \ ATTRS{subsystem_vendor}=="0x1043", ATTRS{subsystem_device}=="0x835c", ENV{PULSE_PROFILE_SET}="asus-xonar-essence-stx.conf"
Create now a configuration file. If you bother you can start from scratch and make if saucy. However you can also use the default configuration file rename it and then add your profile there that you know works. Less pretty but also faster.
To enable multiple sinks for Asus Xonar Essence STX you need only to add this in.
/usr/share/pulseaudio/alsa-mixer/profile-sets/asus-xonar-essence-stx.conf
[Profile analog-stereo+iec958-stereo] description = Analog Stereo Duplex + Digital Stereo Output input-mappings = analog-stereo output-mappings = analog-stereo iec958-stereo skip-probe = yes
This will auto-profile your Asus Xonar Essence STX with default profiles and add your own profile so you can have multiple sinks.
You need to create another profile in the configuration file if you want to have the same functionality with AC3 Digital 5.1 output.
See pulseaudio article about profiles
Bluetooth
Bluetooth サポートを無効にする
Bluetooth を使っていない場合 journal に以下のエラーが表示されることがあります:
bluez5-util.c: GetManagedObjects() failed: org.freedesktop.DBus.Error.ServiceUnknown: The name org.bluez was not provided by any .service files
PulseAudio の Bluetooth サポートを無効にするには、使用している設定ファイル (~/.config/pulse/default.pa
もしくは /etc/pulse/default.pa
) 内の以下の行をコメントアウトしてください:
~/.config/pulse/default.pa
### Automatically load driver modules for Bluetooth hardware #.ifexists module-bluetooth-policy.so #load-module module-bluetooth-policy #.endif #.ifexists module-bluetooth-discover.so #load-module module-bluetooth-discover #.endif
Bluetooth ヘッドセットの再生の問題
bluetooth 接続でデータが送信されず大きな遅延が発生したり、音が鳴らないという報告をしているユーザーが確認されています。これは module-suspend-on-idle
モジュールが原因です。このモジュールはアイドル状態の時に sink/source を自動的にサスペンドさせます。結果として、ヘッドセットで必要なモジュールが無効化されてしまうという問題が発生することがあります。
module-suspend-on-idle
モジュールのロードを無効にするには、使っている設定ファイル (~/.config/pulse/default.pa
または /etc/pulse/default.pa
) の以下の行をコメントアウトしてください:
~/.config/pulse/default.pa
### Automatically suspend sinks/sources that become idle for too long #load-module module-suspend-on-idle
そして PulseAudio を再起動して変更を適用してください。
Bluetooth や USB ヘッドセットの自動切り替え
以下を追加してください:
/etc/pulse/default.pa
# automatically switch to newly-connected devices load-module module-switch-on-connect
Bluetooth デバイスをペアリングしても音が鳴らない
Starting from PulseAudio 2.99 and bluez 4.101 you should avoid using Socket interface. Do NOT use:
/etc/bluetooth/audio.conf
[General] Enable=Socket
If you face problems with A2DP and PA 2.99 make sure you have sbc library.
アプリケーション
Flash コンテンツ
Adobe Flash は PulseAudio を直接サポートしていないため仮想の PulseAudio サウンドカードを使うように ALSA を設定するのが推奨されています。
もしくは AUR にある libflashsupport-pulseAUR を使うこともできます。
Flash からの音声にラグが生じる場合、Flash が直接 ALSA にアクセスできるようにしたほうが良いかもしれません。場合によってはこれで問題が解決することがあります。直接アクセスを許可するには、PulseAudio が dmix を使うように設定してください。
KDE Plasma ワークスペース
おそらく phonon で他の出力デバイスが優先するように設定されています。優先の出力デバイスが上にくるようになっているか全ての設定をチェックして、kmix
の再生ストリームタブを確認してアプリケーションが使っている出力デバイスを確認してください。
デフォルトのオーディオデバイスを見るには、次を実行します:
pactl stat
利用可能なオーディオデバイスを見るには:
pactl list
デフォルトのオーディオデバイスを設定するには、"pacmd" を使うか、以下を /etc/pulse/default.pa
に追加します:
set-default-sink alsa_output.analog-stereo
パーミッションエラーバグ
pulseaudio --start
E: [autospawn] core-util.c: Failed to create secure directory (/run/user/1000/pulse): Operation not permitted W: [autospawn] lock-autospawn.c: Cannot access autospawn lock. E: [pulseaudio] main.c: Failed to acquire autospawn lock
Polkit を使って root に権限昇格するときに /run/user/user id/pulse
のパーミッションを変更してしまう既知のプログラム:
- sakis3gAUR
対応策としては、デスクトップエントリで gksu または kdesu を読み込ませるか、sudoers に username ALL=NOPASSWD: /usr/bin/program_name
を追加して、パスワードではなく sudo や gksudo
で実行させるようにしてください。
/etc/pulse/daemon.conf
に daemonize = yes
を設定することでも問題を回避できます。
[1] も参照。
Audacity
Audacity の起動時にヘッドフォンから音が流れなくなることがあります。これは Audacity がヘッドフォンを録音デバイスとして認識してしまうのが原因です。この問題を解決するには、Audacity を開いて、録音デバイスを pulse:Internal Mic:0
に設定してください。
特定の状況下で、再生が途切れるようになったり、急に加速したり、フリーズすることがあります。Audacity Wiki's Linux Issues page を参照。
上記のページで提案されている解決方法で上手くいくことがあります: Audacity を起動するときに次のコマンドを使用:
$ env PULSE_LATENCY_MSEC=30 audacity
上記の方法で問題が解決しない場合、pasuspender
コマンドを使うことで Audacity を実行している間だけ pulseaudio を一時的に無効化できます:
$ pasuspender -- audacity
上記のコマンドを実行したら、Audacity で ALSA の入出力を選択するようにしてください。
#Pulseaudio におけるデフォルトのフラグメント・バッファサイズを設定するも見て下さい。
その他の問題
設定ファイルが間違っている
pulseaudio を起動した後、システムが音を出力しない場合、~/.pulse
の中身を削除する必要があるかもしれません。Pulseaudio は次の起動時に新しい設定ファイルを自動的に作成します。
pavucontrol でサウンドデバイスの設定を更新できない
pavucontrol は pulseaudio を設定するための手頃な GUI ユーティリティです。'Configuration' タブから、サウンドデバイスごとに異なるプロファイルを選択することができます。例えばアナログ・ステレオ、デジタル出力 (IEC958)、HDMI 5.1 サラウンドなど。
However, you may run into an instance where selecting a different profile for a card results in the pulse daemon crashing and auto restarting without the new selection "sticking". If this occurs, use the other useful GUI tool, paprefs, to check under the "Simultaneous Output" tab for a virtual simultaneous device. If this setting is active (checked), it will prevent you changing any card's profile in pavucontrol. Uncheck this setting, then adjust your profile in pavucontrol prior to re-enabling simultaneous output in paprefs.
Pulse が ALSA の設定を上書きする
alsa デーモンがロードされている場合でも、Pulseaudio は基本的に ALSA の設定 (例えば alsamixer の設定) を起動時に上書きします。上書きを止めさせる方法は存在しないため、pulseaudio が起動した後に alsa の設定を戻すのが対処法になります。以下のコマンドを .xinitrc
や .bash_profile
などの [自動起動|autostart]] ファイルに追加してください:
restore_alsa() { while [ -z "$(pidof pulseaudio)" ]; do sleep 0.5 done alsactl -f /var/lib/alsa/asound.state restore } restore_alsa &
Pulse が再起動するのを止める
たまに Pulse を一時的に無効にしたい場合があるかもしれません。そのようなときは Pulse を終了した後に再起動しないようにする必要があります。
~/.config/pulse/client.conf
# Disable autospawning the PulseAudio daemon autospawn = no
デーモンの起動が失敗する
PulseAudio を再設定して見て下さい:
$ rm -rf /tmp/pulse* ~/.pulse* $ pulseaudio -k $ pulseaudio --start
サーバーが動作していないのに PulseAudio がエラーメッセージ "User-configured server at ... refusing to start/autospawn" で起動できない場合、おそらく以前のログインでの PulseAudio の設定が問題です。pax11publish -d
で X11 ルートウィンドウに古いプロパティが付けられていないか確認してください。もし古いプロパティがある場合は、サーバーを起動する前に pax11publish -r
で削除してください。この手動消去は LXDM を使うときは必ず必要になります。LXDM はログアウトで X サーバーを再起動しないためです。LXDM#PulseAudio を見て下さい。
inotify の問題
上の修正で解決しないときは、以下のようなエラーが表示されないか確認してください:
$ pulseaudio -vvvv
E: [pulseaudio] module-udev-detect.c: You apparently ran out of inotify watches, probably because Tracker/Beagle took them all away. I wished people would do their homework first and fix inotify before using it for watching whole directory trees which is something the current inotify is certainly not useful for. Please make sure to drop the Tracker/Beagle guys a line complaining about their broken use of inotify.
エラーが表示されるなら、inotify の監視数が上限に達しています。
次のコマンドで簡単に解決できます:
# echo 100000 > /proc/sys/fs/inotify/max_user_watches
永続的に変更させるには、次を使って下さい:
/etc/sysctl.d/99-sysctl.conf
# Increase inotify max watchs per user fs.inotify.max_user_watches = 100000
Daemon already running
システムによっては pulseaudio が複数回実行されることがあります。journalctl は次のように表示します:
[pulseaudio] pid.c: Daemon already running.
アプリケーションを自動実行する方法を一つだけに限って下さい。pulseaudio には以下のファイルが含まれています:
/etc/X11/xinit/xinitrc.d/pulseaudio
/etc/xdg/autostart/pulseaudio.desktop
/etc/xdg/autostart/pulseaudio-kde.desktop
xinitrc, ~/.config/autostart/
などのユーザーの自動実行ファイル・ディレクトリも確認してください。
曲が終わるとサブウーファーが止まる
既知の問題: https://bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/494099
これを修正するには、/etc/pulse/daemon.conf
を編集して enable-lfe-remixing
を有効にしてください:
/etc/pulse/daemon.conf
enable-lfe-remixing = yes
"Surround 4.0" 以外のサラウンド設定が選択できない
pavucontrol で "Analog Surround 4.0 Output" しか表示されず 5.1 サラウンド出力が設定できない場合、ALSA ミキサーを開いて出力設定を6チャンネルに変更してください。それから pulseaudio を再起動すれば、pavucontrol でもっと多くのオプションが表示されるようになります。
リアルタイムスケジューリング
rtkit が動作しない場合、PulseAudio がリアルタイムスケジューリングで動作するようにシステムを手動で設定することでパフォーマンスが改善されることがあります。これをするには、以下の行を /etc/security/limits.conf
に追加してください:
@pulse-rt - rtprio 9 @pulse-rt - nice -11
その後、使用しているユーザーを pulse-rt
グループに追加してください:
# gpasswd -a <user> pulse-rt
pactl "invalid option" error with negative percentage arguments
pactl
コマンドに負のパーセンテージを引数としてわたすと 'invalid option' エラーが起こります。標準シェルの '--' 擬似引数を使って、負の引数の前の引数のパースを無効にしてください。例: pactl set-sink-volume 1 -- -5%
。
Fallback デバイスが反映されない
PulseAudio は本当のデフォルトデバイスを持っていません。代わりに新しいサウンドストリームにのみ適用される "fallback" を使用します。このため以前実行したアプリケーションは新しく設定した fallback デバイスの影響を受けません。
gnome-control-center と mate-media だけがこれを上手く処理できます。もしくは:
1. pavucontrol で古いストリームを手動で新しいサウンドカードに移動する。
2. Pulse を停止して、~/.pulse
の "stream-volumes" を消去して Pulse を再起動する。これはアプリケーションボリュームもリセットします。
3. ストリームデバイスの読み込みを無効化する。様々なサウンドカードで様々なアプリケーションを使う場合はあまり好ましくありません。
/etc/pulse/defaults.pa
load-module module-stream-restore restore_device=false