Usb
aplay 列出了該設備,但 pulseaudio 認為它已鎖定並且不會檢測到它
更新 2021-07-08:我現在正在使用 Pop!_OS 21.04,這個問題似乎已經解決。我剛剛使用pulseaudio 14.2和pipewire 0.3.24進行了測試,我能夠在一分鐘內斷開和重新連接耳機(通過 USB/立體聲插孔適配器連接)大約 10 次。我在下面描述的問題沒有再次發生。我認為這也適用於 Ubuntu 21.04。
我正在使用 Pop!_OS 20.10,當我“太頻繁”或“太多次”斷開並重新連接我的 USB 麥克風時,我遇到了一個間歇性問題,似乎可靠地發生。我至少想了解一種比重新啟動機器更簡單的解決方法。
它是這樣的:我斷開我的 USB 麥克風,然後重新連接它。如果我在 30 秒內這樣做 2 或 3 次,最終 pulseaudio 會告訴我:
D: [pulseaudio] module-udev-detect.c: /dev/snd/controlC1 is accessible: yes D: [pulseaudio] module-udev-detect.c: /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.0/sound/card1 is busy: no D: [pulseaudio] module-udev-detect.c: Loading module-alsa-card with arguments 'device_id="1" name="usb-Blue_Microphones_Yeti_Stereo_Microphone-00" card_name="alsa_card.usb-Blue_Microphones_Yeti_Stereo_Microphone-00" namereg_fail=false tsched=yes fixed_latency_range=no ignore_dB=no deferred_volume=yes use_ucm=yes avoid_resampling=no card_properties="module-udev-detect.discovered=1"' D: [pulseaudio] reserve-wrap.c: Device 'Audio1' already locked. E: [pulseaudio] module.c: Failed to load module "module-alsa-card" (argument: "device_id="1" name="usb-Blue_Microphones_Yeti_Stereo_Microphone-00" card_name="alsa_card.usb-Blue_Microphones_Yeti_Stereo_Microphone-00" namereg_fail=false tsched=yes fixed_latency_range=no ignore_dB=no deferred_volume=yes use_ucm=yes avoid_resampling=no card_properties="module-udev-detect.discovered=1""): initialization failed. I: [pulseaudio] module-udev-detect.c: Card /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.0/sound/card1 (alsa_card.usb-Blue_Microphones_Yeti_Stereo_Microphone-00) failed to load module. I: [pulseaudio] client.c: Created 3 "Native client (UNIX socket client)"
我沒有在各種 pulseaudio 工具中看到我的麥克風,即使 aplay 在
aplay -l
card 1: Microphone [Yeti Stereo Microphone], device 0: USB Audio [USB Audio] Subdevices: 1/1 Subdevice #0: subdevice #0
如果我重新啟動,那麼我可以再次連接我的 USB 麥克風,但我正在尋找一種比這更溫和的解決方法,當我“過於頻繁地”斷開和重新連接 USB 音頻設備時,它會重置任何混亂的狀態。
我在這里關注了一些評論:
https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/809
殺死 pipewire 然後重新啟動 pulseaudio 解決了這個問題:
systemctl --user stop pipewire.service systemctl --user restart pulseaudio.service
這似乎是 pipewire 和 pulseaudio 之間的競賽。我對 pipewire 一無所知,但它有時似乎在 pulseaudio 可以訪問它之前抓住了 USB 音頻設備的鎖。
要永久禁用管道線:
sudo systemctl --global stop pipewire.service sudo systemctl --global disable pipewire.service
我不知道 pipewire 提供了哪些我可能會錯過的服務,但到目前為止還沒有:)