ALSA/疑難解答
音量[編輯 | 編輯原始碼]
沒有輸出[編輯 | 編輯原始碼]
如果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 }
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_oss
、snd_mixer_oss
或 snd_seq_oss
內核模塊(默認不會加載它們),嘗試卸載(unloading)它們。
另見:
- https://www.alsa-project.org/main/index.php/SoundcardTesting
- https://alsa.opensrc.org/Record_from_mic
設置默認麥克風/捕獲設備[編輯 | 編輯原始碼]
一些應用(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%可以解決。使用 alsamixer
或 amixer
:
$ 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_codec
和 snd_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頻率動態調整時聲音發生跳躍[編輯 | 編輯原始碼]
使用 ondemand
或 conservative
頻率策略、啟用CPU頻率動態調整時,某些聲卡和 ALSA 驅動的組合會導致來自所有來源的聲音出現跳躍。目前的解決方案是用回 performance
策略。
更多信息見 CPU frequency scaling 。
硬件與聲卡[編輯 | 編輯原始碼]
驗證輸出參數[編輯 | 編輯原始碼]
檢查 /proc/asound/cardX/pcmYp/subZ/hw_params
的內容,其中 X
、 Y
和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 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.
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-intel8x0
和 snd-intel8x0m
。這種情況下屏蔽掉 snd-intel8x0m
:
/etc/modprobe.d/modprobe.conf
blacklist snd-intel8x0m
在alsamixer
或 amixer
中靜音「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
可以在內核文檔中看到所有可用的 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
啟用輸出並解除其靜音。
使用 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 1
, device 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_AUDIODRIVER
為 alsa
。
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,需要設置其特定選項。
對於 MPlayer 或 mpv,將以下行加入相應的配置文件:
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" }
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 中的警告。