[Feedback on issues] 自己修复了Deepin 25.0.7不能使用绿联麦克风的问题……
Tofloor
poster avatar
tan90º
deepin
2025-09-26 17:54
Author

上网买了个绿联摄像头+麦克风的设备,宣传该设备支持Linux,但在Deepin 25.0.7下没法使用麦克风,仅能使用摄像头,设置里也看不到这个麦克风的选项。在DeepSeek的辅佐下,我把这个BUG修复了,现在分析给大家,也希望官方能修复这个BUG。

530db4a1c9be44ec6e5fbdff76db096e.jpg


分析

查看接入的设备,发现检测到麦克风了,但是在 pactl list sources short中没有这个麦克风设备(修复后截图的,忽略图片中那个设备)

PulseAudio 的一个命令,用于简要列出当前系统中所有音频输入源

lsusb
lsub -t
arecord -l
pactl list sources short

image.png

使用 journalctl --user-unit=wireplumber -f查看wireplumber的日志,发现了如下报错:

Sep 26 12:55:13 jianuo-PC wireplumber[1531]: wplua: [string "alsa.lua"]:182: attempt to concatenate a nil value (local 'node_name')
                                             stack traceback:
                                                     [string "alsa.lua"]:182: in function <[string "alsa.lua"]:175>

日志全文:

journalctl --user-unit=wireplumber -f
Hint: You are currently not seeing messages from the system.
      Users in groups 'adm', 'systemd-journal' can see all messages.
      Pass -q to turn off this notice.
Sep 26 12:35:09 jianuo-PC wireplumber[1531]: wp-internal-comp-loader: Loading profile 'main'
Sep 26 12:35:09 jianuo-PC wireplumber[1531]: default: Failed to get percentage from UPower: org.freedesktop.DBus.Error.NameHasNoOwner
Sep 26 12:35:09 jianuo-PC wireplumber[1531]: wp-device: SPA handle 'api.libcamera.enum.manager' could not be loaded; is it installed?
Sep 26 12:35:09 jianuo-PC wireplumber[1531]: s-monitors-libcamera: PipeWire's libcamera SPA plugin is missing or broken. Some camera types may not be supported.
Sep 26 12:35:11 jianuo-PC wireplumber[1531]: GLib-GIO: Unexpected reply 3 when releasing name org.freedesktop.ReserveDevice1.Audio1
Sep 26 12:35:11 jianuo-PC wireplumber[1531]: GLib-GIO: Unexpected reply 3 when releasing name org.freedesktop.ReserveDevice1.Audio0
Sep 26 12:35:17 jianuo-PC wireplumber[1531]: wplua: [string "alsa.lua"]:182: attempt to concatenate a nil value (local 'node_name')
                                             stack traceback:
                                                     [string "alsa.lua"]:182: in function <[string "alsa.lua"]:175>
Sep 26 12:37:12 jianuo-PC wireplumber[1531]: wplua: [string "alsa.lua"]:182: attempt to concatenate a nil value (local 'node_name')
                                             stack traceback:
                                                     [string "alsa.lua"]:182: in function <[string "alsa.lua"]:175>
Sep 26 12:55:13 jianuo-PC wireplumber[1531]: wplua: [string "alsa.lua"]:182: attempt to concatenate a nil value (local 'node_name')
                                             stack traceback:
                                                     [string "alsa.lua"]:182: in function <[string "alsa.lua"]:175>

DeekSeek说

这表明WirePlumber在处理ALSA设备时遇到了脚本错误,具体是在 alsa.lua脚本的第182行尝试拼接一个nil值(node_name变量为空)。

后面试着让DeepSeek修改这个文件,麦克风能用了,但我的蓝牙耳机不能用了,检查 wireplumber的日志,显示有其他进程在和它抢我蓝牙设备的控制权。

wireplumber.service - Multimedia Service Session Manager
     Loaded: loaded (/usr/lib/systemd/user/wireplumber.service; enabled; preset: enabled)
     Active: active (running) since Fri 2025-09-26 15:26:00 CST; 2min 46s ago
   Main PID: 14032 (wireplumber)
      Tasks: 6 (limit: 35471)
     Memory: 10.4M (peak: 12.1M)
        CPU: 473ms
     CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/wireplumber.service
             └─14032 /usr/bin/wireplumber

Sep 26 15:26:00 jianuo-PC wireplumber[14032]: wp-internal-comp-loader: Loading profile 'main'
Sep 26 15:26:00 jianuo-PC wireplumber[14032]: spa.bluez5.native: RegisterProfile() failed: org.bluez.Error.NotPermitted
Sep 26 15:26:00 jianuo-PC wireplumber[14032]: wp-device: SPA handle 'api.libcamera.enum.manager' could not be loaded; is it installed?
Sep 26 15:26:00 jianuo-PC wireplumber[14032]: s-monitors-libcamera: PipeWire's libcamera SPA plugin is missing or broken. Some camera types may not be supported.
Sep 26 15:26:21 jianuo-PC wireplumber[14032]: spa.bluez5.midi: org.bluez.GattManager1.RegisterApplication() failed: GDBus.Error:org.freedesktop.DBus.Error.UnknownMethod: Method "RegisterApplication" with signature "oa{sv}" on interface "org.bluez.GattManager1" doesn't exist
Sep 26 15:26:21 jianuo-PC wireplumber[14032]: spa.bluez5.midi.server: org.bluez.GattManager1.RegisterApplication() failed: GDBus.Error:org.freedesktop.DBus.Error.UnknownMethod: Method "RegisterApplication" with signature "oa{sv}" on interface "org.bluez.GattManager1" doesn't exist
Sep 26 15:26:21 jianuo-PC wireplumber[14032]: spa.bluez5.native: RegisterProfile() failed: org.bluez.Error.NotPermitted
Sep 26 15:26:21 jianuo-PC wireplumber[14032]: spa.bluez5: Properties changed in unknown transport '/org/bluez/hci0/dev_25_02_13_B6_B4_03/sep1/fd0'. Multiple sound server instances (PipeWire/Pulseaudio/bluez-alsa) are probably trying to use Bluetooth audio at the same time, which can cause problems. The system configuration likely should be fixed to have only one sound server that manages Bluetooth audio.
Sep 26 15:26:21 jianuo-PC wireplumber[14032]: spa.bluez5: Properties changed in unknown transport '/org/bluez/hci0/dev_25_02_13_B6_B4_03/sep1/fd0'. Multiple sound server instances (PipeWire/Pulseaudio/bluez-alsa) are probably trying to use Bluetooth audio at the same time, which can cause problems. The system configuration likely should be fixed to have only one sound server that manages Bluetooth audio.
Sep 26 15:26:26 jianuo-PC wireplumber[14032]: spa.bluez5: Properties changed in unknown transport '/org/bluez/hci0/dev_25_02_13_B6_B4_03/sep1/fd0'. Multiple sound server instances (PipeWire/Pulseaudio/bluez-alsa) are probably trying to use Bluetooth audio at the same time, which can cause problems. The system configuration likely should be fixed to have only one sound server that manages Bluetooth audio.

通过查看系统进程,发现有个 PulseAudio 进程在争夺语音设备的控制权

(base) jianuo@jianuo-PC:/usr/share/wireplumber/scripts/monitors$ pactl info | grep "Server Name"
Server Name: PulseAudio (on PipeWire 1.2.5)
(base) jianuo@jianuo-PC:/usr/share/wireplumber/scripts/monitors$ 
(base) jianuo@jianuo-PC:/usr/share/wireplumber/scripts/monitors$ ps aux | grep -E "(pipewire|pulseaudio|wireplumber)"
jianuo      1460  0.8  0.0 222296 20184 ?        Ssl  15:52   0:05 /usr/bin/pipewire
jianuo      1461  0.0  0.0 125324  6092 ?        Ssl  15:52   0:00 /usr/bin/pipewire -c filter-chain.conf
jianuo      1465  0.8  0.0 232100 26576 ?        SLsl 15:52   0:05 /usr/bin/pipewire-pulse
jianuo      2303  0.0  0.1 668232 32684 ?        Sl   15:52   0:00 pulseaudio --start --log-target=syslog
jianuo     12410  0.2  0.1 681836 35292 ?        Ssl  15:58   0:00 /usr/bin/wireplumber
jianuo     17585  0.0  0.0  44748  2264 pts/1    S+   16:03   0:00 grep -E (pipewire|pulseaudio|wireplumber)
(base) jianuo@jianuo-PC:/usr/share/wireplumber/scripts/monitors$ systemctl --user status pipewire-pulse.service
● pipewire-pulse.service - PipeWire PulseAudio
     Loaded: loaded (/usr/lib/systemd/user/pipewire-pulse.service; enabled; preset: enabled)
     Active: active (running) since Fri 2025-09-26 15:52:03 CST; 11min ago
TriggeredBy: ● pipewire-pulse.socket
   Main PID: 1465 (pipewire-pulse)
      Tasks: 3 (limit: 35471)
     Memory: 17.8M (peak: 23.7M)
        CPU: 5.958s
     CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire-pulse.service
             └─1465 /usr/bin/pipewire-pulse
(base) jianuo@jianuo-PC:/usr/share/wireplumber/scripts/monitors$ systemctl --user list-unit-files | grep pulseaudio
app-pulseaudio@autostart.service                                             generated       -
pulseaudio-x11.service                                                       static          -
pulseaudio.service                                                           masked          enabled
pulseaudio.socket                                                            masked          enabled

DeepSeek的分析

诊断结果分析

  1. pactl info输出Server Name: PulseAudio (on PipeWire 1.2.5)

    • 这表示您的应用程序通过 PulseAudio 协议连接,但后端实际上是 PipeWire。这是正常的目标状态。
  2. ps aux输出:这是关键证据!

    • /usr/bin/pipewire(PID 1460): 主 PipeWire 服务
    • /usr/bin/pipewire -c filter-chain.conf(PID 1461): PipeWire 滤波器链
    • /usr/bin/pipewire-pulse(PID 1465): PipeWire 的 PulseAudio 兼容服务(这是好的)
    • /usr/bin/wireplumber(PID 12410): WirePlumber 会话管理器
    • pulseaudio --start --log-target=syslog(PID 2303): 问题所在!这是一个独立的、原生的 PulseAudio 进程
  3. systemctl --user list-unit-files输出

    • pulseaudio.servicepulseaudio.socket显示为 masked(已屏蔽),这表示 systemd 不会自动启动它们。

虽然 Deepin 已经通过 systemd 屏蔽了 PulseAudio 服务,但有一个独立的 pulseaudio进程(PID 2303)仍然在运行。目前没研究出这个进程是怎么启动的。

解决方案

最后的解决方案很简单,直接把 pulseaudio卸载掉就好了,卸载之后前面 wireplumber 的报错也没了。

sudo apt remove pulseaudio
Reply Favorite View the author
All Replies
SkyShadowHero
deepin
2025-09-26 21:31
#1

向会动手修复bug的大佬致敬tail

Reply View the author