如何从命令行重启蓝牙服务


28

在Linux上,如果希望重启蓝牙服务,他们只需启动终端并发出以下命令:

sudo /etc/init.d/bluetooth restart

Mac OS X上的等效功能是什么?我想重新启动蓝牙,而不必重新启动整个计算机。

我正在使用Yosemite

更新:在“测试”提供的各种命令行选项中,似乎唯一可行的是最后一个,这是:

sudo kextunload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport
sudo kextload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport

更新2:上面的命令不再起作用,我想知道是否可以。第一次尝试时,可能是因为其他原因重新启动了蓝牙服务。对我来说唯一有效的方法是每天早晨重新启动整个机器。


哪个版本的OS X?在这种情况下似乎很重要。
tim.rohrer

如果可以选择安装另一个应用程序,则可以查看以下要点:gist.github.com/ralph-hm/a65840c4f5e439b90170d735a89a863f
tim.rohrer

很好的问题。仍在投资这一点。我认为这是一个干净的方式上MavericksYosemite
2013年

我从/ Library / Preferences / SystemConfiguration /或/ Library / Preferences /中删除了com.apple.Bluetooth.plist并重新启动>已修复。以下终端命令对我不起作用-但您当然可以通过终端命令删除该文件,然后重新启动Mac :)
Thieme Hennis

Answers:


26

在High Sierra上,没有任何命令行选项对我有用。我能够插入有线USB鼠标,并在Debug / Rest解决方案中使用Shift + Option。

我在High Sierra上尝试了blueutil解决方案,它的工作原理很吸引人。我经常在2015 MBPR上使用Apple Magic Mouse软管连接蓝牙,并且必须重新启动。是的,我可以打开盖子并使用触控板,但它在桌子空间的另一侧。

您可以使用Homebrew 安装blueutil

brew install blueutil

或者,您可以使用以下命令手动编译并安装它:

cd ~/tmp/
git clone https://github.com/toy/blueutil.git
cd blueutil
make
make test 
cp blueutil ~/bin/

现在运行:

blueutil -p 0 && sleep 1 && blueutil -p 1

我正在运行10.13.3,并且刚刚成功使用了上面发布的命令行blueutil。谢谢你!
克里斯·西亚

3
最后,一些可行的方法!!!
Mirko,

6
该命令对我不起作用。我不得不运行blueutil -p 0 && sleep 1 && blueutil -p 1~/bin导致位置不存在的消息。需要完整的位置/usr/local/bin。那对我来说就完美了。谢谢。
奥利弗

跑步测试似乎成功了,但始终以开头。./test: line 3: read: 0.001: invalid timeout specification然后,当我跑步时,blueutil off && sleep 1 && blueutil on我得到-bash: blueutil: command not found
skybondsor

2
只是指出您可以使用自制软件安装它:brew install blueutil
Alter Lagos

17

在El Capitan上,这有点棘手,因为它不允许您卸载系统服务。但是,暴力破解方法是:
sudo pkill blued
'blued'是OS X蓝牙守护程序,终止后它将自动重新启动(至少在我在El Capitan机器上对其进行测试时)。其他相关的守护程序是:com.apple.bluetoothReporter,com.apple.IOBluetoothUSBDFU和com.apple.bluetoothaudiod(您可以查看使用来运行的守护程序sudo launchctl list

您也可以尝试:

sudo launchctl stop com.apple.blued
sudo launchctl start com.apple.blued

如果您使用的是较旧的OS X版本,则它更干净:

sudo launchctl unload /System/Library/LaunchDaemons/com.apple.blued.plist
sudo launchctl load /System/Library/LaunchDaemons/com.apple.blued.plist

要么

sudo kextunload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport
sudo kextload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport

我尝试了您建议的所有三个命令,但没有一个命令会杀死和/或重新启动蓝牙。我之所以这样说,是因为发出每个命令的“ kill”版本后,我仍然可以使用蓝牙鼠标和键盘。还有其他想法吗?我目前在优胜美地。
zeeple'9

@zeeple:你是对的。@Testing提供的所有命令都将导致被终止的守护程序自动重启,因为它们是通过launchd(通过哪个命令界面launchctl)配置的。
2013年

今天早上,这些命令都无法使我的蓝牙正常工作。唯一有效的方法是重新启动操作系统。
zeeple 2013年

sudo launchctl stop com.apple.blued实际上,在El Capitan上,该命令确实无需启动命令即可自动重新启动守护程序。较旧的命令在El Capitan上无法执行任何操作,因此很遗憾,我没有更多的了解(几周前我升级了我的最后一台Yosemite机器)。
测试

可悲的是,我为一家IT部门落后的大公司工作。他们将不允许升级到优胜美地以外的任何地方。上面的命令对我都不起作用。每天早上重启整个机器是唯一可行的方法。
zeeple

7

值得一提的是,守护程序名称blued(至少在macOS 10.11 El Capitan之前)已更改为bluetoothd

因此,根据macOS的版本,您需要在以下命令中更改守护程序名称。

要注意的另一件事是,由于El Capitan中引入了SIP(系统完整性保护),因此卸载然后加载守护程序的plist(而不是先停止然后再启动或发送HUP信号)可能不起作用。但是,当您在El Capitan之前禁用SIP或在macOS上时,它应该可以工作。

$ sudo launchctl unload /System/Library/LaunchDaemons/com.apple.blued.plist
$ sudo launchctl load /System/Library/LaunchDaemons/com.apple.blued.plist

即使在SIP环境中(在El Capitan之后),您也可以简单地启动launchctl停止然后启动启动守护程序。

$ sudo launchctl stop com.apple.bluetoothd # or blued based on macOS version
$ sudo launchctl start com.apple.bluetoothd

如果您只想更改蓝牙的状态(开|关),而不希望守护程序真正重启,则可以执行以下操作:

# Let bluetooth be on 
$ sudo defaults write 
/Library/Preferences/com.apple.Bluetooth ControllerPowerState -int 1

# let bluetooth be off 
$ sudo defaults write 
/Library/Preferences/com.apple.Bluetooth ControllerPowerState -int 0

# Then reload the daemon
$ sudo killall -HUP bluetoothd # or blued based on macOS version
# On a macOS system which has proctools installed, you can replace `killall` to `pkill`

Blueutil很酷,但是它使用了IOBluetooth.framework的一些私有 API,因此它可能无法在macOS的未来版本中使用。


5

这个第三方命令行工具似乎可以一直运行到High Sierra,从而抽象化了OSX版本之间的差异:https : //github.com/toy/blueutil


可以在10.13 blueutil off && blueutil s && blueutil on上为我工作,也可以通过brew安装brew install blueutil
urandom

4
sudo pkill bluetoothd

在macOS High Sierra上对我有效我的Logitech mx有时在睡眠后无法正常工作。据我了解,并非由于鼠标原因,这是macOS Smart Bluetooth错误。但是我的Apple键盘始终可以正常工作,但从未遇到过此问题。有时,我唤醒计算机后,Apple键盘可以工作,但Logitech鼠标不能工作。因此,如果没有鼠标,我将无法从系统重新启动蓝牙(我可以关闭蓝牙,但键盘也消失了,因此无法再次重新启动)。 。我的鼠标在一秒钟内开始工作!


4

对于带有macOS High Sierra 10.13.6的Macbook Pro 2017,我使用以下bash脚本重新启动蓝牙:

#!/bin/bash

sudo launchctl stop com.apple.bluetoothd
sudo launchctl start com.apple.bluetoothd

2

发现这个页面在GitHub要点与工作对我来说(我正在约塞米蒂诉10.10.5)命令。您只需在终端中键入以下命令即可重新启动蓝牙守护程序,而无需重新启动:

sudo kextunload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport

sudo kextload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport 


1

我正在运行Yosemite v10.10.5,其他注释/要点对我都没有作用。我设法弄清楚使蓝牙驱动程序恢复活力的唯一步骤是:

  1. kextunload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport在终端执行sudo
  2. 重新启动计算机,但不保留打开的窗口

4
对我而言,只需重启计算机即可解决问题。我正在寻找的是一种无需重新启动整个计算机的命令行方式。
zeeple
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.