我查看了我的日志并在顶部发现了这一点:
[pulseaudio] bluez5-util.c: GetManagedObjects() 失败:org.freedesktop.DBus.Error.NoReply:未收到回复。可能的原因包括:远程应用程序未发送回复、消息总线安全策略阻止回复、回复超时或网络连接中断。
我不知道这是什么意思。我的电脑启动正常,到目前为止我还没有发现任何错误。但为了安全起见,有人知道如何解决这个问题吗?
另外,需要明确的是,我已经读过错误,并且我可以看到“可能的原因”部分,但我不知道“远程应用程序”或“消息总线安全”是什么意思。
答案1
简短的回答是执行以下命令:
cp /usr/share/gdm/default.pa ~/.config/pulse/
说明:
通过谷歌搜索,我发现这pulseaudio
是现在 Ubuntu 中的音频子系统,pactl
可以使用该命令来摆弄其设置。
该命令有不少子命令,其中最有趣的是list
。
通过执行pactl list short
可以看到有一个模块bluez
名字里含有 这个词,是蓝牙相关的。
我使用的台式电脑没有配备蓝牙,所以应该没有运行与蓝牙相关的模块。
执行pactl unload-module
每个蓝牙相关模块均无效,因为在重新启动时模块会再次加载,因此错误会再次出现在日志中。人们应该从以下事实中得到提示:该pactl
程序被称为“控制正在运行的 PulseAudio 声音服务器”的程序:它实际上不会修改声音服务器的持久配置。
通过进一步谷歌搜索,我发现 PulseAudio 设置存储在某个default.pa
文件中,并且我在我的系统上发现了这个文件的两个实例,一个是下面的胖实例/etc/pulse/
,另一个是下面的瘦实例/usr/share/gdm/
。
显然,粗体是全局 PulseAudio 设置,而细体是与 gnome 桌面管理器相关的用户特定设置。
用户特定命令的内容default.pa
非常有趣,因为它包含的命令正是我想要执行的操作:禁用蓝牙相关模块。它bluez
本身不会禁用模块,但通过pactl
之前的尝试,我发现禁用其他两个蓝牙相关模块也会自动禁用 bluez 模块。
唯一的问题是,gdm 的配置文件对我来说没什么用,因为它在我登录时不会被执行。
通过进一步谷歌搜索,我发现此设置文件的用户本地实例的位置应该是~/.config/pulse/default.pa
。
因此,我推断,只要我将 gdm 的文件复制到我的个人资料上的这个位置,问题就会得到解决。
事实确实如此。
对于那些没有包含蓝牙卸载逻辑的文件副本的人来说,这里是实现该功能的文件部分(来自 ubuntu 20.04)。
### unload driver modules for Bluetooth hardware
.ifexists module-bluetooth-policy.so
unload-module module-bluetooth-policy
.endif
.ifexists module-bluetooth-discover.so
unload-module module-bluetooth-discover
.endif
答案2
不幸的是,添加 Mike 在他的回答中建议的行对我来说不起作用。我也没有文件/usr/share/gdm/default.pa
因此,我搜索了全局设置并default.pa
在那里找到了该文件。您可能想要编辑此文件,这就是我所做的!
sudo nano /etc/pulse/default.pa
然后我注释掉了加载蓝牙模块的行。现在错误就消失了!
### Automatically load driver modules for Bluetooth hardware (edited)
#.ifexists module-bluetooth-policy.so
#load-module module-bluetooth-policy
#.endif
#.ifexists module-bluetooth-discover.so
#load-module module-bluetooth-discover
#.endif
请注意,我的系统没有 wifi/蓝牙硬件。