为什么要禁用
Manjaro默认是开启蓝牙的,照理说应该没什么问题,但是我在通过journalctl检查时发现一个错误
systemd-udevd[271]: Process '/usr/bin/set-wireless-regdom' failed with exit code 1.
通过网上检索,得知这是蓝牙导致的,于是便考虑关闭蓝牙功能
禁用方案
1. systemctl
# 首先想到的便是这个方法
systemctl status bluetooth
systemctl disable bluetooth.service
# 但是重启后发现bluetooth服务依然会启动,后来阅读文档了解到,应该使用mask来彻底禁用
# ======================= 详细说明start =======================
# 取消开机自动激活单元(只是开机的时候不自动启动,如果有其他程序调用,则会启动):
systemctl disable <单元>
# 禁用一个单元(禁用后,间接启动也是不可能的):
systemctl mask <单元>
# 取消禁用一个单元:
systemctl unmask <单元>
# ======================= 详细说明end =======================
很可惜,即使使用mask彻底禁用bluetooth.service,开机依然会报错,并且还多了两条
dbus-daemon[636]: [system] Activating via systemd: service name='org.bluez' unit='dbus-org.bluez.service' requested by ':1.110' (uid=1000 pid=>
dbus-daemon[636]: [system] Activation via systemd failed for unit 'dbus-org.bluez.service': Unit bluetooth.service is masked.
后来又发现网上说可以这样:
systemctl mask dbus-org.bluez.service
但是使用之后依然报错,当我尝试使用:
systemctl unmask dbus-org.bluez.service
进行还原时,竟然报错,提示dbus-org.bluez.service不存在
后来才发现,原来“dbus-org.bluez”只是“bluetooth.service”的一个别名,所以可以通过重新enable bluetooth.service的方法来恢复“dbus-org.bluez”
# 重新允许
systemctl enable bluetooth.service
# 在查询发现已经恢复
$ systemctl status dbus-org.bluez.service
bluetooth.service - Bluetooth service
Loaded: loaded (/usr/lib/systemd/system/bluetooth.service; enabled)
Active: active (running) since dom, 2013-01-06 03:24:53 CET; 20min ago
Main PID: 1651 (bluetoothd)
CGroup: name=systemd:/system/bluetooth.service
└─1651 /usr/sbin/bluetoothd -n
2. gsettings
后来发现,原来xfce环境默认安装的blueman会调用bluetooth服务,所以如果可以禁用,说不定有效
gsettings set org.blueman.plugins.powermanager auto-power-on false
# 上面是命令的方式,如果想通过图形界面进行配置,也可以打开BlueMan的主窗口,然后点击View菜单,在里面选择“插件”,然后选中左侧面板的“PowerManager”插件,然后点击右侧面板的“Configuration”,然后去掉“Auto Power-on”的对勾
但是重启后发现,依然会出现最开始的错误,所以这种方法只能一开始禁用蓝牙功能,但是并不能消除报错
3. xfce4-session-settings
既然blueman设置不自动上电也无效,那么干脆直接禁用Blueman的开机项
如图所示,去掉BlueMan前面的对勾
但是后来发现,这样重启后托盘的通知消失了,甚至连“ps -ef | grep python”查出来的“python /usr/bin/blueman-applet”进程都消失了,但是一开始那个报错依然存在