Как перезапустить службу Bluetooth из командной строки

28

В Linux, если кто-то хочет перезапустить службу Bluetooth, он просто запускает терминал и выполняет следующую команду:

sudo /etc/init.d/bluetooth restart

Что эквивалентно в Mac OS X? Я хотел бы перезагрузить Bluetooth без перезагрузки всего компьютера.

Я использую Yosemite.

Обновление: из различных параметров командной строки, представленных в разделе «Тестирование» ниже, единственным, который, похоже, работал, был последний, а именно:

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

Обновление 2: приведенная выше команда больше не работает, и мне интересно, работала ли она когда-либо. В первый раз, когда я попробовал это, это могло быть что-то еще, что перезапустило мои службы Bluetooth. Единственная вещь, которая будет работать для меня, это перезапуск всей машины каждое утро.

zeeple
источник
Какая версия OS X? Похоже, это может иметь значение в этом случае.
tim.rohrer
Если установка другого приложения является опцией, вы можете проверить эту суть: gist.github.com/ralph-hm/a65840c4f5e439b90170d735a89a863f
tim.rohrer
Отличный вопрос. Все еще вкладываю точку. Я думаю , что есть чистый путь на Mavericksи Yosemite.
дан
Я удалил com.apple.Bluetooth.plist из / Library / Preferences / SystemConfiguration / или / Library / Preferences / и перезапустил> исправлено. приведенные ниже команды терминала не сработали для меня, но, конечно, вы можете создать команду терминала, которая удалит этот файл, а затем перезапустит ваш Mac :)
Thieme

Ответы:

26

На High Sierra ни один из параметров командной строки не работал для меня. Я смог подключить проводную USB-мышь и использовать опцию Shift + Option с решением отладки / отдыха.

Я попробовал решение blueutil на своей High Sierra, и оно сработало как шарм. У меня регулярно есть Bluetooth на моем MBPR 2015 с подключенным шлангом Apple Magic Mouse, и мне приходится перезапускать. Да, я мог бы открыть крышку и использовать трек-площадку, но она находится на другой стороне стены от моего рабочего стола.

Вы можете установить blueutil используя Homebrew:

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
sygibson
источник
Я использую 10.13.3 и только что успешно использовал командную строку blueutil, опубликованную выше. Спасибо вам за это!
Крис Сиа
3
Наконец то, что работает !!!
Мирко
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 bluetooth, и он автоматически перезапускается после завершения (по крайней мере, когда я тестировал его на своей машине 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
тестирование
источник
Я перепробовал все три предложенные вами команды, и ни одна из них не убивала и / или не перезапускала Bluetooth. Я говорю это, потому что я все еще был в состоянии использовать мою Bluetooth-мышь и клавиатуру после выдачи версии kill каждой из команд. Есть еще идеи? Я сейчас в Йосемити.
Зеепл
@zeeple: ты прав. Все команды, предоставляемые @Testing, вызовут автоматический перезапуск уничтоженных демонов, потому что они настроены таким образом launchd(какой интерфейс команды launchctl).
дан
Сегодня утром ни одна из этих команд не работает, чтобы мой Bluetooth снова заработал. Единственное, что сработало, это перезагрузка ОС.
Зеепл
На El Capitan sudo launchctl stop com.apple.bluedкоманда действительно автоматически перезапускает демона без команды запуска. Старые команды ничего не делают в El Capitan, поэтому, к сожалению, у меня не так много понимания (я обновил свою последнюю машину Yosemite всего пару недель назад).
Тестирование
К сожалению, я работаю в гигантской компании с отсталым отделом ИТ. Они не позволят перейти на что-либо кроме Йосемити. Ни одна из команд выше не работает для меня вообще. Перезапуск всей машины каждое утро - единственное, что будет работать.
Zeeple
7

Следует упомянуть, что имя демона blued (по крайней мере, до macOS 10.11 El Capitan) было изменено на bluetoothd .

Таким образом, в зависимости от версии macOS, вам нужно изменить имя демона в приведенных ниже командах.

Следует также отметить, что выгрузка, а затем загрузка plist демона (вместо остановки, затем запуска или отправки сигнала HUP) могут не работать из-за SIP (защита целостности системы), представленного в El Capitan. Но это должно работать, когда вы отключили SIP или на macOS перед El Capitan.

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

Даже в среде SIP (после El Capitan) вы можете просто запустить launchctl stop, а затем launchctl запустить демон.

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

В случае, если вы просто хотите изменить состояние (вкл. / Выкл.) Bluetooth, не желая, чтобы демон действительно перезапускался, вы можете сделать следующее:

# 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 - классная штука, но он использует некоторые частные API IOBluetooth.framework, поэтому он может не работать в будущей версии macOS.

mogutan88
источник
5

Этот сторонний инструмент командной строки, кажется, работает вплоть до High Sierra, абстрагируя различия между версиями OSX: https://github.com/toy/blueutil

miemo
источник
у меня работает на 10.13 blueutil off && blueutil s && blueutil onплюс его можно установить через brewbrew install blueutil
urandom
4
sudo pkill bluetoothd

У меня работает на macOS High Sierra Мой Logitech mx нигде не работает после сна иногда. Как я понял, это не из-за мыши, это ошибка MacOS Smart Bluetooth. Но моя клавиатура Apple всегда работает, никогда не получал эту проблему. Иногда я просыпаюсь от компьютера, клавиатура Apple работает, но мышь Logitech не работает. Поэтому без мыши я не могу перезапустить Bluetooth из системы (я мог закрыть, но моя клавиатура тоже ушла, поэтому я не могу перезапустить снова) Я начал использовать эту команду из терминала, она останавливает службу, но когда служба останавливается, она автоматически перезапускает себя , И моя мышь начинает работать через секунду!

Юсуф
источник
4

Для моего Macbook Pro 2017 с macOS High Sierra 10.13.6 я перезагружаю Bluetooth с помощью следующего скрипта bash:

#!/bin/bash

sudo launchctl stop com.apple.bluetoothd
sudo launchctl start com.apple.bluetoothd
Марк Уинтерботтом
источник
2

Нашел эту страницу на GitHub Gist с командами, которые работали для меня (я использую Yosemite v. 10.10.5). Вы можете просто ввести следующее в терминале, чтобы перезапустить демон Bluetooth без перезапуска:

sudo kextunload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport

sudo kextload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport 

Мириам Марлинг
источник
1

Я работаю с Yosemite v10.10.5, и ни один из других комментариев / комментариев не работал для меня вообще. Единственные шаги, которые мне удалось выяснить, чтобы вернуть к жизни драйвер bluetooth, были:

  1. Выполнить sudo kextunload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransportв терминале
  2. Перезагрузите компьютер без сохранения открытых окон
EnriqueH
источник
4
Для меня просто перезагрузка компьютера делает свое дело. То, что я ищу, это способ командной строки сделать это без перезагрузки всей машины.
Zeeple