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

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

sudo /etc/init.d/bluetooth restart

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

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

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

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

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

Если установка другого приложения является вариантом, вы можете проверить это: gist.github.com/ralph-hm/a65840c4f5e439b90170d735a89a863f
Я удалил com.apple.Bluetooth.plist из /Library/Preferences/SystemConfiguration/ или /Library/Preferences/ и перезапустил > исправлено. приведенные ниже команды терминала у меня не сработали, но, конечно, вы можете сделать команду терминала, которая удалит этот файл, а затем перезагрузит ваш Mac :)

Ответы (11)

В High Sierra у меня не работал ни один из параметров командной строки. Мне удалось подключить проводную USB-мышь и использовать Shift + Option с решением Debug/Rest.

Я попробовал решение 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
Команда у меня не сработала. Пришлось бежать . 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
Никогда не слышал об этой утилите, спас мой бекон. v10.14.5для меня и это отлично работает. Устанавливается также с macports, если вы тоже не любите пиво.
Эта команда может быть полезна, но на самом деле она не перезапускает службу Bluetooth. Вы можете убедиться в этом, запустив ps aux |grep -i blue. Ответ Юсуфа перезапускает службу:sudo pkill bluetoothd
@BryanRoach - я никогда не утверждал, что он перезапустил службы Bluetooth.
@sygibson - исходный вопрос: «Как перезапустить службу Bluetooth из командной строки», поэтому я подумал, что должен хотя бы указать на это.

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

ПРИМЕЧАНИЕ. У меня работает на macOS High Sierra .

Моя мышь Logitech MX Anywhere иногда не работает после сна. Как я читал, это не из-за мыши, это ошибка MacOS Smart Bluetooth. Но моя клавиатура Apple всегда работает, никогда не было этой проблемы.

Иногда я просыпаю свой компьютер, клавиатура Apple работает, но мышь Logitech не работает. Таким образом, без мыши я не могу перезапустить Bluetooth из системы (я мог бы закрыть крышку, но моя клавиатура также исчезает, поэтому я не могу перезапустить ее снова).

Я начал использовать эту команду из терминала, она останавливает службу, но когда служба останавливается, она автоматически перезапускает себя. И моя мышь начинает работать в течение секунды!

О, хорошо, это исправит мою медленную волшебную мышь
отлично работает в MacOS Monterrey 12.6
У вас может быть запущена связанная служба Bluetooth под названием BlueTool. Чтобы перезапустить все, запустите, ps aux |grep -i blueчтобы получить PID для BlueTool. Убейте BlueTool с помощью sudo kill -9 <PID>. Теперь, если вы запустите sudo pkill bluetoothd, он перезапустит обе службы.
Работал у меня на Монтерее 12.6

Стоит отметить, что имя демона 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) вы можете просто запустить ctl stop , а затем запустить daemon.

$ 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.

Для моего 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
Спасибо! Это также работает на macOS Monterey.

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

у меня работает на 10.13 blueutil off && blueutil s && blueutil onплюс можно установить через вареваbrew install blueutil

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

sudo kextunload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport

sudo kextload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport 

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

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

На BigSur вы можете просто сделать,

  1. Удерживая нажатыми клавиши Shift и Option , щелкните значок Bluetooth в строке меню. Если его там нет, добавьте его, перейдя в « Системные настройки »> « Bluetooth » > «Отметьте « Показать Bluetooth» в строке меню .
  2. А затем выберите «Сбросить модуль Bluetooth» в меню.
Эта опция удалена в Monterey 12.x? Shift + Option + щелчок по значку BT не показывает параметр сброса для меня.
Похоже, это было удалено в Монтерее
В Вентуре тоже нет

все варианты, упомянутые здесь в этой теме, не работают должным образом, очевидно, серия ошибок в выводе. Я просто хочу поместить псевдоним в bash_profile для легкого отключения/включения службы Bluetooth с терминала. Помогает ли для него варианты Applescript, которые Я могу легко запустить через псевдоним bash_profile, набрав всего одну короткую команду псевдонима, например blueon/blueoff?

MBP:~ applehead$ > system_profiler SPSoftwareDataType Программное обеспечение:

System Software Overview:

  System Version: macOS 10.14.6 (18G9323)
  Kernel Version: Darwin 18.7.0
  Boot Volume: Macintosh HD
  Boot Mode: Normal
  Computer Name:  MBP_appleHead
  User Name: applehead (applehead)
  Secure Virtual Memory: Enabled
  System Integrity Protection: Enabled
  Time since boot: 4 days 17:11
Если у вас есть новый вопрос, пожалуйста, задайте его, нажав кнопку Задать вопрос . Включите ссылку на этот вопрос, если это помогает обеспечить контекст. - Из обзора

Моя проблема заключается в потере Magic Mouse 2 от Macbook Air (Monterey 12.2). Затем я обнаружил, что загрузка процессора bluetoothd высока.

Я пробовал просто убить bluetoothd. И моя Magic Mouse 2 переподключилась, как только я убил bluetoothd. Кажется, bluetoothd перезапустится автоматически.

Хотя это может быть решением, ОП специально спросил «из командной строки».