web-dev-qa-db-ja.com

再起動後にボリューム設定が最大になる回避策

私は最近、Dell E6510ラップトップを12.04(Ubuntu with Unity)にアップグレードしました。再起動するたびに、ボリュームは常に最大レベルにリセットされることに気付きました。

これがバグかどうかを判断しようとしていますが、ログイン時または起動時にシステムボリュームをミュート(または単に縮小)できる何かがあるかどうかを知りたいと思います。

Reverendj1の答えを確認した後、最初のコマンドが機能しなかった後、pacmd set-sink-volume 0 0を試し、次にSudo alsactl storeを試しました。

また、音量インジケータを右クリックして、[サウンド設定]に移動しました...」-そこから内蔵オーディオ [出力]タブでアナログ出力を選択しました(これが唯一の選択でした、しかし、それは何らかの理由で強調されていませんでした)。

このトラブルシューティングプロセス中に、数回再起動しました。アナログ出力設定のいずれかがインストールのデフォルトから変更されたことがあるかどうか100%はわかりませんが、誰かがこれに遭遇した場合に備えて、後世の設定を文書化しています:

Analog Output Settings

7
belacqua

サウンドをミュートするには、次のコマンドを使用できます。

pacmd set-sink-volume 0 0

最初の0はシンクで、2番目は設定するボリュームです。ボリュームの範囲は0〜65536であるため、半分のボリュームに設定するには、次のように使用できます。

pacmd set-sink-volume 0 32768

PulseAudio CLI(pacmd) の使用に関する詳細情報へのリンクです。

9
reverendj1

2年前にLinuxを使い始めてから、再起動後にオーディオボリュームが100%にリセットされるという問題がありました。

基本的に、上記のGigabyteProductionsによるアドバイスは私を正しい場所に導き、実際に機能するはずですが、私のシステムでは機能していません。だから私はもう少し詳しく調べなければなりませんでしたが、痛みがないわけではありませんが、多くを学びました。

バグレポートを参照してください https://bugs.launchpad.net/ubuntu/+source/alsa-utils/+bug/44978 私は問題に対するいくつかの有用な手がかりを見つけました。デフォルトの/etc/Pulse/default.paに次のエントリがあります。
### Automatically restore the volume of streams and devices load-module module-device-restore load-module module-stream-restore load-module module-card-restore

上記のバグレポートのコメント #1 ユーザーは、load-module module-volume-restoreをdefault.paに追加することで、彼のために問題を整理したと述べていますが、コメント#16では、コマンドラインから起動されたpulseaudioは、モジュールが廃止されることを警告し、代わりにmodule-stream-restoreが使用されます。 Pulseaudioはmodule-stream-restoreを2回ロードしようとするとクラッシュします。再起動時にpulseaudioは開始せず、最後のALSAマスターボリュームが自動的に復元されます。これはさまざまな理由で良い考えではありません。推奨されないモジュールのためにpulseaudioがハング/クラッシュするのではなく、オブジェクトが再起動後または一般に起動後にのみalsaボリュームを復元する場合、PulseAudioを完全に削除することをお勧めします。

私は不満を抱き、実際にPulseAudioを削除しました。かなり基本的なサウンド設定があるので、それなしでも生きることができると思っていましたが、欠点を発見するのに少し時間がかかりました。スクエア1に戻り、利用可能なすべてのオンラインリソースを調べて、PulseAudioサーバーが同時に実行されている状態でボリュームを復元しました。何も機能しませんでした...

ALSAボリューム設定は次のコマンドで保存されます:

# alsactl store

ボリューム設定はデフォルトで/var/lib/alsa/asound.stateに保存されます。これらの設定を保存し、# alsactl restoreで設定を取得するには、rootが必要です。

/etc/init.dにスタートアップスクリプトを設定し(およびupdate-rc.dを更新しました)、効果がありませんでした。スクリプトは正しく実行されますが、PulseAudioによるログインの直後に結果がキャンセルされ、ボリュームが再び100%に設定されてしまいます。 PulseAudioに先んじる唯一の方法は、サーバーを強制終了してから再起動し、サーバーの実行中にログイン後に設定を復元して、alsa設定を復元することだと考えました。

別の方法は、alsactlにボリューム設定をホームフォルダーに保存するように指示し、rootなしでそれを呼び出すスクリプトを実行できるようにすることです。ディレクトリ/home/<user>/.config/alsa/を作成し、入力しました:

alsactl -f /home/<user>/.config/alsa/asound.state store

「設定」->「セッションと起動」メニューに「alsa-restore」という名前とコマンドalsactl restore -f /home/<user>/.config/alsa/asound.stateを入力して新しいエントリを追加し、再起動しました。再び私は運がなかった、と私はオプションと忍耐を使い果たしに近づいていた。

しかし、その後、私は光を見ました! sound-restore.shという名前のシェルスクリプトを作成し、次の行を含む/home/<user>/scripts/という名前のホームディレクトリ内のフォルダーに配置しました。

#! /bin/sh pulseaudio -k #just in case pulseaudio is already running pulseaudio -D alsactl -f /home/<user>/.config/alsa/asound.state restore

Sudo chmod+xを使用してファイルを実行可能にし、[セッションと起動]ダイアログに戻り、自動起動アイテムのコマンドをsh /home/<user>/scripts/sound-restore.shに変更しました。 「PulseAudio Sound System」という名前の事前設定されたスタートアップ項目がオフになっていることを確認します。次回の再起動後、ボリューム設定はようやく以前の設定に復元されました!私はしばらくそれをテストしてきましたが、完全に正常に動作し、pulseaudioデーモンがバックグラウンドで正常に実行されています。

システム:
Linux Mint 17.1 XFCE
ハードウェア:
AthlonXP +2600
PCIサウンドカード:ESS Technology ES1938 Solo-1

3
shelleyfrank

https://github.com/falconindy/ponymix からポニーミックスをダウンロードして抽出します

Sudo apt-get install libpulse-dev
Sudo make
Sudo cp ponymix /usr/bin/ponymix
Sudo chmod +x /usr/bin/ponymix

動作しているかどうかテストする

ponymix get-volume

起動スクリプトを作成する

Sudo gedit /usr/bin/load-sound

これをファイル/ usr/bin/load-soundに追加します。

#! /bin/sh
cat /opt/Pulse-volume | xargs /usr/bin/ponymix set-volume
exit 0

ログオンスクリプト(load-sound)をアクティブにします。「スタートアップアプリケーション」を開き、[名前の追加]をクリックします:load pulseaudio volumeコマンド:load-sound

ログオフスクリプトを作成する(サウンド保存):

Sudo gedit /usr/bin/save-sound

これをファイル/ usr/bin/save-soundに追加します。

#! /bin/sh
su -c "/usr/bin/ponymix get-volume > /opt/Pulse-volume" YOUR_CURRENT_USERNAME
exit 0

ログオフスクリプトをアクティブにします(ルートとして実行されます):

Sudo gedit /etc/lightdm/lightdm.conf

これをファイル/etc/lightdm/lightdm.confに追加します。

[SeatDefaults]
session-cleanup-script=/usr/bin/save-sound

リブート。

3
Ronnie

これは非常に古い質問であることは知っていますが、これは今後もこの問題の解決に役立つ可能性があります。

/etc/Pulse/default.paファイルの先頭に次の2つのコマンドが存在することを確認する必要があります。

load-module module-card-restore
load-module module-device-restore

これらは、仮想pulseaudioカードと物理カードのボリュームを保存し、それらがシステムに戻ったときにそれらを復元することを扱います。

Default.paにはさらに多くのモジュールがあり、pulseaudioを思いどおりに動作させることができるため、新しくインストールされたUbuntu 14.04システムでdefault.paが通常どのように見えるかを確認したい場合は、次のとおりです。

#!/usr/bin/pulseaudio -nF
#
# This file is part of PulseAudio.
#
# PulseAudio is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# PulseAudio is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with PulseAudio; if not, write to the Free Software Foundation,
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.

# This startup script is used only if PulseAudio is started per-user
# (i.e. not in system mode)

.nofail

### Load something into the sample cache
#load-sample-lazy x11-bell /usr/share/sounds/gtk-events/activate.wav
#load-sample-lazy Pulse-hotplug /usr/share/sounds/startup3.wav
#load-sample-lazy Pulse-coldplug /usr/share/sounds/startup3.wav
#load-sample-lazy Pulse-access /usr/share/sounds/generic.wav

.fail

### Automatically restore the volume of streams and devices
load-module module-device-restore
load-module module-stream-restore
load-module module-card-restore

### Automatically augment property information from .desktop files
### stored in /usr/share/application
load-module module-augment-properties

### Should be after module-*-restore but before module-*-detect
load-module module-switch-on-port-available

### Load audio drivers statically
### (it's probably better to not load these drivers manually, but instead
### use module-udev-detect -- see below -- for doing this automatically)
#load-module module-alsa-sink
#load-module module-alsa-source device=hw:1,0
#load-module module-oss device="/dev/dsp" sink_name=output source_name=input
#load-module module-oss-mmap device="/dev/dsp" sink_name=output source_name=input
#load-module module-null-sink
#load-module module-pipe-sink

### Automatically load driver modules depending on the hardware available
.ifexists module-udev-detect.so
load-module module-udev-detect
.else
### Use the static hardware detection module (for systems that lack udev support)
load-module module-detect
.endif

.ifexists module-Android-audio-hal.so
load-module module-Android-audio-hal
.endif

### Automatically connect sink and source if JACK server is present
.ifexists module-jackdbus-detect.so
.nofail
load-module module-jackdbus-detect channels=2
.fail
.endif

### 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

### Load several protocols
.ifexists module-esound-protocol-unix.so
load-module module-esound-protocol-unix
.endif
load-module module-native-protocol-unix

### Network access (may be configured with paprefs, so leave this commented
### here if you plan to use paprefs)
#load-module module-esound-protocol-tcp
#load-module module-native-protocol-tcp
#load-module module-zeroconf-publish

### Load the RTP receiver module (also configured via paprefs, see above)
#load-module module-rtp-recv

### Load the RTP sender module (also configured via paprefs, see above)
#load-module module-null-sink sink_name=rtp format=s16be channels=2 rate=44100 sink_properties="device.description='RTP Multicast Sink'"
#load-module module-rtp-send source=rtp.monitor

### Load additional modules from GConf settings. This can be configured with the paprefs tool.
### Please keep in mind that the modules configured by paprefs might conflict with manually
### loaded modules.
.ifexists module-gconf.so
.nofail
load-module module-gconf
.fail
.endif

### Automatically restore the default sink/source when changed by the user
### during runtime
### NOTE: This should be loaded as early as possible so that subsequent modules
### that look up the default sink/source get the right value
load-module module-default-device-restore

### Automatically move streams to the default sink if the sink they are
### connected to dies, similar for sources
load-module module-rescue-streams

### Make sure we always have a sink around, even if it is a null sink.
load-module module-always-sink

### Honour intended role device property
load-module module-intended-roles

### Automatically suspend sinks/sources that become idle for too long
load-module module-suspend-on-idle

### If autoexit on idle is enabled we want to make sure we only quit
### when no local session needs us anymore.
.ifexists module-console-kit.so
load-module module-console-kit
.endif
.ifexists module-systemd-login.so
load-module module-systemd-login
.endif

### Enable positioned event sounds
load-module module-position-event-sounds

### Cork music/video streams when a phone stream is active
#load-module module-role-cork

### Modules to allow autoloading of filters (such as echo cancellation)
### on demand. module-filter-heuristics tries to determine what filters
### make sense, and module-filter-apply does the heavy-lifting of
### loading modules and rerouting streams.
load-module module-filter-heuristics
load-module module-filter-apply

# X11 modules should not be started from default.pa so that one daemon
# can be shared by multiple sessions.

### Load X11 bell module
#load-module module-x11-bell sample=bell-windowing-system

### Register ourselves in the X11 session manager
#load-module module-x11-xsmp

### Publish connection data in the X11 root window
#.ifexists module-x11-publish.so
#.nofail
#load-module module-x11-publish
#.fail
#.endif

### Make some devices default
#set-default-sink output
#set-default-source input

ログインアカウントのdefault.paを変更したい場合は、~/.config/Pulse/default.paに保存します。これはマスター/etc/Pulse/default.paの代わりにロードされます(そのため、カードの検出などのためにマスターにあるものをすべて置くことを忘れないでください)。

しかし、Linuxとそのディストリビューションの多くは、この質問が投稿されてから多くの進歩を遂げているため、すべてのシステムに/etc/Pulse/default.paが正しくセットアップされている必要があります。

2

ポイントを苦労して申し訳ありませんが、私は答えを調べて、ギャップがいっぱいであることがわかりました。 linux mintフォーラムで完全なチュートリアルを作成しました。この特定の回答を探している人は誰でも参照したいと思います。だから、ここにリンクがあります。

[解決済み]起動/再起動時にALSAボリュームが100%にリセットされる問題を修正

1
shelleyfrank