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


Какая версия 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

Я использую 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.


5

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


у меня работает на 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. Перезагрузите компьютер без сохранения открытых окон

4
Для меня просто перезагрузка компьютера делает свое дело. То, что я ищу, это способ командной строки сделать это без перезагрузки всей машины.
— Zeeple
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.