ALSA/疑難解答

出自 Arch Linux 中文维基

音量[編輯 | 編輯原始碼]

沒有輸出[編輯 | 編輯原始碼]

如果speaker-test能發出聲音而一些其他程序卻不能,確認是否使用了PulseAudio

# fuser -v /dev/snd/*

若是,試試apulseAUR,見Advanced Linux Sound Architecture#PulseAudio 兼容性。或者,終止PulseAudio進程可能會讓聲音在所需的進程中開始工作。

重啟後輸出被靜音[編輯 | 編輯原始碼]

運行以下命令:

# alsactl restore

如果問題持續,請確認alsamixer中的 Auto-Mute 選項已被設為 Disabled(禁用)。

音量過低[編輯 | 編輯原始碼]

運行alsamixer,嘗試提高滑塊的值,必要時解除聲道的靜音。注意如果滑塊很多,可能需要滾動到右側查看是否有被遺漏的滑塊。

如果所有滑塊都已被推到最大,但音量仍然過低,可以嘗試運行以下腳本復位編解碼器設置:

$ wget -O hda-analyzer.py https://git.alsa-project.org/?p=alsa.git;a=blob_plain;f=hda-analyzer/run.py
$ su -c 'python2 hda-analyzer.py' 

該腳本假定/usr/bin/python指向Python 2,但這不符合Arch的默認設置。為避免此問題,運行以下命令:

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

關閉analyzer,當提示是否要復位編解碼器時回答「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後未能加載新配置。另外,如果重啟之後上述配置依然不起效,試試將上述配置中的plug換成hw

成功載入更改之後,在alsamixer中會看到 Pre-Amp 部分,在此即可調整音量水平。

注意:
  • Pre-Amp 設置較高的值可能導致聲音失真,請根據對你來說合適的水平進行調節。
  • 一些音頻編解碼器可能需要在HDA分析器中更改設置(見#音量過低)才能達到正確的音量而不失真。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.

啟動後隨機出現無聲[編輯 | 編輯原始碼]

運行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中確保recording下的所有音量等級都調了上去,並且已對麥克風(如Mic、Internal Mic)和/或Capture激活CAPTURE(在alsamixer中,選定這些項並按空格)。試試把Mic Boost設為正,並調高Capture和Digital音量等級;這樣可能會造成靜電噪聲或失真,但一旦你在錄音時聽到有動靜,就可以把它們調低回去了。

由於pulseaudio wrapper在alsamixer中顯示為「default」,可能需要先按F6選擇你的實際音效卡。可能也需要在Playback部分中啟用並調高Line-in的音量。

使用以下命令來測試麥克風(參考arecord的手冊頁獲取更多信息):

$ arecord --duration=5 --format=dat test-mic.wav
$ aplay test-mic.wav

或者也可用以下命令:

$ arecord -vv --format=dat /dev/null

同時使用alsamixer就可以輕鬆分辨應當選擇哪個聲道並解除其靜音。

要測試特定設備,使用--device後接hw:C,D形式的PCM硬體名稱,音效卡編號為 C 而設備編號為 D,如果是plug類硬體的話則使用plughw:C,D。例如:

$ arecord -vvv --format=dat --device=plughw:0,0 /dev/null

如果都不管用,可能需要通過另一設備測試麥克風,以排除硬體故障。

至少對於某些電腦來說,靜音麥克風(MM)僅僅意味著其輸入並不直接送往音箱。它仍然會接收輸入。

很多戴爾筆記本需要在/etc/modprobe.d/modprobe.conf中的model名字後面添加「-dmic」:

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

一些程序嘗試將OSS作為主輸入軟體。如果之前啟用了snd_pcm_osssnd_mixer_osssnd_seq_oss 內核模塊(默認不會加載它們),嘗試卸載(unloading)它們。

另見:

設置默認麥克風/捕獲設備[編輯 | 編輯原始碼]

一些應用(Pidgin、Adobe Flash)並不提供更改捕獲設備的選項。如果你的麥克風是在內置音效卡之外的單獨設備上的話(如USB網絡攝像頭或麥克風)這就會成為問題。要想只更改默認捕獲設備,而讓默認回放設備保持原樣,可以更改 ~/.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中的Capture視圖下的音量已經啟用。有時「Internal Microphone」不會顯示在按F4顯示出的捕獲列表當中。如果是這樣,啟動alsamixer時指定 aplay -l 給出的音效卡編號(如 alsamixer -c 0 )就有可能讓它出現。

之後將以下內容加入 /etc/modprobe.d/snd-hda-intel.conf

options snd-hda-intel enable_msi=1

然後重新加載模塊:

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

現在在前述的Capture視圖當中就應該會多出來一路輸入了。

麥克風有爆裂聲[編輯 | 編輯原始碼]

如果你的麥克風有爆裂或噗噗聲,且無法通過ALSA設置或清潔麥克風插頭解決,試試在 /etc/modprobe.d/modprobe.conf 中添加以下行:

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

該選項可以解決純ALSA的爆裂聲,但會對pulseaudio造成問題。要讓pulseaudio等同使用這些設置,編輯/etc/pulse/default.pa,找到這一行:

load-module module-udev-detect

並將其更改為:

load-module module-udev-detect tsched=0

DMA-Position Problem in the kernel docs

音頻質量[編輯 | 編輯原始碼]

通過耳機插孔有爆裂聲[編輯 | 編輯原始碼]

無論是遵循了同時輸出操作提示或是嘗試自己完成,都有可能在耳機或外接音箱中聽到爆裂聲。通過將Mic項靜音或音量設為0%可以解決。使用 alsamixeramixer

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

從掛起狀態恢復後聽到噗聲[編輯 | 編輯原始碼]

在從掛起狀態恢復電腦後可能會聽到一聲噗聲。編輯/etc/pm/sleep.d/90alsa,刪除aplay -d 1 /dev/zero行即可解決。

回放時聲音跳躍[編輯 | 編輯原始碼]

運行alsamixer,如果其中有與不存在的輸出設備相對應的聲道則禁用它們(例如alsamixer顯示了一個實際上並沒有的中置音箱)。

音質差或卡頓[編輯 | 編輯原始碼]

如果發現音質特別差,試試在 alsamixer 中調節 PCM 音量到增益(gain)為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_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_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_codecsnd_hda_intel)會在音效卡閒置時關閉它以節約用電。音效卡啟動或關閉時,就會發出刺耳的噪音。甚至在調節音量或開關窗口(KDE4)時也可能發生這種情況。如果你覺得煩的話,試試用 modinfo your_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 等為內核模塊設置參數。

也可能需要解除ALSA「Line」通道的靜音才能奏效。任何值都可以(只要不是0或者過高的話)。例如對於板載VIA VT1708S(使用snd_hda_intel模塊),即使將 power_save 設為0也會發出爆裂聲。解除「Line」通道的靜音並設置音量值為1即可解決問題。

來源: https://docs.kernel.org/sound/designs/powersave.html

使用CPU頻率動態調整時聲音發生跳躍[編輯 | 編輯原始碼]

使用 ondemandconservative 頻率策略、啟用CPU頻率動態調整時,某些音效卡和 ALSA 驅動的組合會導致來自所有來源的聲音出現跳躍。目前的解決方案是用回 performance 策略。

更多信息見 CPU frequency scaling

硬體與音效卡[編輯 | 編輯原始碼]

驗證輸出參數[編輯 | 編輯原始碼]

檢查 /proc/asound/cardX/pcmYp/subZ/hw_params 的內容,其中 XYZ與系統有關。 要找到該文件,請在通過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 kHz的音頻:

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)

只需重新保存ALSA混音器設定:

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

可能需要用alsamixer重新配置ALSA。

修復錯誤的音頻插孔映射[編輯 | 編輯原始碼]

如果你的音頻插孔(插頭)映射不正確,但ALSA工作正常,可以試試HDA Analyzer,一個用於HD-audio控制的pyGTK2 GUI,見ALSA wiki。 嘗試調整 PIN 節點的 Widget Control 部分,讓麥克風為 IN 而耳機插孔為 OUT。 Referring to the Config Defaults heading is a good idea.

注意: 此腳本不兼容Python 3(Arch Linux的默認Python實現)。要使用該腳本,將run.py中出現的python全部替換為python2,從而將腳本指向Python 2版本。之後把腳本設為可執行並運行。

S/PDIF輸出不工作[編輯 | 編輯原始碼]

若主板/音效卡的同軸/光纖數字輸出不工作或停止工作,且已經在alsamixer啟用之並解除靜音,嘗試運行:

$ 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 (works for 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參數;它是一個布爾數組,可以啟用/禁用所希望的顯卡。

options snd_hda_intel enable=1,0

錯誤的音效卡model類型[編輯 | 編輯原始碼]

儘管ALSA通過BIOS檢測音效卡,有時候ALSA可能無法識別你的model類型。音效卡晶片可以在alsamixer中找到(如ALC662),model可以在 /etc/modprobe.d/modprobe.conf/etc/modprobe.d/sound.conf中設置。例如:

options snd-hda-intel model=MODEL

也有其他的model設置。大部分情況下ALSA默認的就可以了。如果想要查詢更加針對於你音效卡的設置,訪問ALSA音效卡列表,查找你的型號,點擊Details,然後閱讀「Setting up modprobe...」部分。將這些值輸入/etc/modprobe.d/modprobe.conf。例如對於英特爾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

英特爾板載音效卡[編輯 | 編輯原始碼]

英特爾板載音效卡無聲[編輯 | 編輯原始碼]

問題可能是由加載了兩個相衝突的模塊導致的,具體是 snd-intel8x0snd-intel8x0m。這種情況下屏蔽掉 snd-intel8x0m

/etc/modprobe.d/modprobe.conf
blacklist snd-intel8x0m

alsamixeramixer靜音 「External Amplifier」 也可能有效。見 ALSA wiki

在mixer中解除「Mix」設置的靜音也有可能有幫助。

英特爾板載音效卡耳機無聲[編輯 | 編輯原始碼]

如果是使用 Intel Corporation 82801 I (ICH9 Family) HD Audio Controller 的筆記本,可能需要將該行加入 modprobe 或 sound.conf:

options snd-hda-intel model=model

其中 model 為下列之中的一個:

  • dell-m6
  • dell-vostro
  • generic
  • laptop
  • laptop-hpsense
  • olpc-xo-1_5
注意: 可能需要將此「options」行置於對應於您的音效卡的「alias」行之後。

可以在內核文檔中看到所有可用的 model,如 https://docs.kernel.org/sound/hd-audio/models.html ,但請確認它是對應於您的內核版本的正確文檔版本。

可用 model 列表也見於 這裡。使用以下命令即可獲知音效卡晶片名稱(其中的*應當改為符合您的相應文件的值)。注意有些晶片可能已經更名,不能直接對應於該文件中的條目。

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

注意如果進行此操作,則有很大可能所有輸入設備(內置及外置麥克風)都不能工作,所以要麼就用耳機,要麼用麥克風。如果受到此bug影響,請將其報告給ALSA。

另外,如果蜂鳴器(pcspkr)出現問題:

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

HDMI[編輯 | 編輯原始碼]

HDMI 輸出不工作[編輯 | 編輯原始碼]

以下流程可以用來測試 HDMI 音頻。繼續之前請確認已經通過 alsamixer 啟用輸出並解除其靜音。

注意: 如果是使用 AMD 顯卡,則有一個必要的內核模塊默認被禁用了。詳見 ATI#HDMI 音頻輸出[損壞的連結:無效的章節]

使用 HDMI 電纜連接 PC 與顯示器,並使用 xrandr 啟用顯示器。

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

向設備發送音頻。按照上面步驟的例子,將音頻發送到 card 1device 3

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

若 aplay 沒有任何報錯,但還是聽不到聲音,「重啟」功放、顯示器或電視機。由於 HDMI 接口在連接時會進行握手,它在之前可能會發現沒有音頻流嵌入,於是禁用音頻解碼。如果使用獨立的窗口管理器,可能需要在聲音正在播放時插入 HDMI 電纜。

mplay 及其他應用可以配置為使用特別的 HDMI 設備作為音頻輸出。但 flashplugin 只能使用默認設備。以下方法可以覆蓋默認設備,但在從 HDMI 接口斷開電視的時候就需要改回去。

若測試成功,創建或編輯 ~/.asoundrc 文件,以將 HDMI 設為默認音頻設備。

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

或者如果以上配置不奏效,請嘗試:

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

或者如果使用

$ speaker-test -Dplug:hdmi

在 HDMI 或 DisplayPort 上測試成功,可以使用以下配置(在聯想 ThinkPad T430s 上測試成功):

~/.asoundrc
pcm.!default {
    type plug
    slave.pcm "hdmi"
}

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

應用[編輯 | 編輯原始碼]

SDL:SDL 應用沒有聲音[編輯 | 編輯原始碼]

如果在使用基於 SDL 的應用時聽不到聲音,嘗試設置 環境變量 SDL_AUDIODRIVERalsa

OpenAL:使用 OpenAL 的應用沒有聲音[編輯 | 編輯原始碼]

Openal 默認使用 pulseaudio,要更改次序,將以下配置加入 /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,需要設置其特定選項。

對於 MPlayermpv,將以下行加入相應的配置文件:

ao=alsa

如對於 XMMS2,進入其選項並確保聲音驅動設為 ALSA 而非 oss。

要在 XMMS 中進行此操作:

  • 打開 XMMS
    • Options > Preferences.
    • 選擇 ALSA 輸出插件。

對於不提供 ALSA 輸出的應用,可以使用來自 alsa-oss 軟體包的 aoss。要使用 aoss,請在運行程序時加上 aoss 前綴,例如:

aoss realplay

pcm.!default{ ... } 對於我(原作者)來說不管用了。下面這些還可以用:

pcm.default pcm.dmixer

其他問題[編輯 | 編輯原始碼]

同時播放時出現問題[編輯 | 編輯原始碼]

如果您在同時播放時遇到問題,且安裝了 PulseAudio ,則其默認配置是「獨占」音效卡。一些 ALSA 用戶可能對自己的配置已經很滿意,不希望使用 PulseAudio。 解決方案是編輯 /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,只是想在原版 ALSA 下使用 dmix 的話,見 上游文檔。特別地,可能需要將上述配置中的 dsp 換成 !default。另外,如果察覺到該操作導致某些應用在播放時出現跳躍(聲音聽起來不流暢), and complain about underrun occurring, 可能需要在 pcm.dmixer 中調整 slave.buffer_size

刪除舊的 ALSA 狀態文件[編輯 | 編輯原始碼]

alsa-utils 軟體包提供了 alsa-store.service ,在系統關機時會自動將當前 ALSA 狀態保存到 /var/lib/alsa/asound.state。對於嘗試重置當前 ALSA 狀態的用戶來說這可能會帶來問題,因為每次關機時都會以當前狀態重新創建 asound.state 文件(如試圖從混音器移除用戶定義的通道時)。通過創建以下空文件,可暫時禁用 alsa-store.service 服務:

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

state-daemon.conf 的存在會阻止 alsa-store.service 在關機時保存 asound.state。禁用該服務後,可以這樣刪除 asound.state 文件:

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

重啟之後,之前的 ALSA 狀態應該會丟失,當前狀態應該會重置到默認值。刪除我們創建的條件文件來重新啟用 alsa-store.service

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

下次關機時應該就會以 ALSA 默認值重新創建 asound.state 文件。也可以用此命令立即生成該文件:

# alsactl store

如果想要清除 ALSA 狀態而不重啟,可使用 rmmod 移除聲音驅動模塊,然後手動刪除 asound.state 中不想要的條目,然後用 modprobe 重新安裝聲音驅動模塊。

同一時間只有一個用戶可以使用[編輯 | 編輯原始碼]

你可能會發現同一時間只有一個用戶可以使用 dmixer。對於大多數情況這樣也許可以,但對於以單獨用戶運行 mpd 的人來說就會造成問題。當 mpd 正在播放,普通用戶就不能通過 dmixer 播放聲音。儘管確實可以在用戶的登錄帳戶下運行 mpd,也有另一個解決方案被發現出來。將 ipc_key_add_uid 0 行加入 pcm.dmixer 塊就可以解除這一鎖定。以下是來自 asound.conf 的一個片段,其餘部分與上述相同。

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

戴爾筆記本上出現爆裂或噗噗聲[編輯 | 編輯原始碼]

檢查是否安裝了 i8kutilsAUR ,是否有程序(如 i8kmon.service)在讀寫該模塊提供的接口,因為 i8kutils BIOS 系統調用在一些系統上會短時阻塞內核運行。詳見 Fan speed control#Dell laptops 中的警告。