Jak zrestartować usługę Bluetooth z linii poleceń

28

W systemie Linux, jeśli ktoś chce zrestartować usługę Bluetooth, po prostu uruchamia terminal i wydaje następujące polecenie:

sudo /etc/init.d/bluetooth restart

Jaki jest odpowiednik w systemie Mac OS X? Chciałbym zrestartować Bluetooth bez konieczności restartowania całego komputera.

Używam Yosemite.

Aktualizacja: spośród różnych opcji wiersza poleceń udostępnianych przez Testowanie poniżej jedyna, która wydawała się działać, była ostatnia, a mianowicie:

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

Aktualizacja 2: Powyższe polecenie już nie działa i zastanawiam się, czy kiedykolwiek zadziałało. Za pierwszym razem, gdy go wypróbowałem, mogło to być coś, co zrestartowało moje usługi bluetooth. Jedyne, co będzie dla mnie działać, to ponowne uruchamianie całej maszyny każdego ranka.

zeple
źródło
Która wersja OS X? Wygląda na to, że w tym przypadku może to mieć znaczenie.
tim.rohrer
Jeśli zainstalowanie innej aplikacji jest opcją, możesz sprawdzić tę treść: gist.github.com/ralph-hm/a65840c4f5e439b90170d735a89a863f
tim.rohrer
Doskonałe pytanie. Wciąż inwestuję w sedno. Myślę, że jest czysty sposób na Mavericksi Yosemite.
dan
Usunąłem com.apple.Bluetooth.plist z / Library / Preferences / SystemConfiguration / lub / Library / Preferences / i zrestartowałem> naprawiłem. poniższe polecenia terminalu nie działały dla mnie - ale oczywiście możesz wykonać polecenie terminalu, które usuwa ten plik, a następnie ponownie uruchamia komputer Mac :)
Thieme Hennis

Odpowiedzi:

26

W High Sierra żadna z opcji wiersza poleceń nie działała dla mnie. Byłem w stanie podłączyć przewodową mysz USB i użyć opcji Shift + Option z rozwiązaniem Debug / Rest.

Wypróbowałem rozwiązanie blueutil na mojej wysokiej Sierra i zadziałało to jak urok. Regularnie mam Bluetooth na moim MBPR 2015 z podłączonym wężem Apple Magic Mouse i muszę ponownie uruchomić. Tak, mógłbym otworzyć pokrywę i użyć podkładki, ale jest po drugiej stronie ściany od miejsca na biurku.

Możesz zainstalować blueutil za pomocą Homebrew:

brew install blueutil

Lub możesz go skompilować i zainstalować ręcznie, używając:

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

Teraz uruchom:

blueutil -p 0 && sleep 1 && blueutil -p 1
sygibson
źródło
Korzystam z wersji 10.13.3 i właśnie z powodzeniem użyłem wiersza poleceń blueutil opublikowanego powyżej. Dziękuję za to!
Chris Sia
3
Wreszcie coś, co działa !!!
Mirko
6
Polecenie nie działało dla mnie. Musiałem uruchomić blueutil -p 0 && sleep 1 && blueutil -p 1Również ~/binspowodowało, że komunikat o lokalizacji nie istnieje. Wymagana pełna lokalizacja, która była /usr/local/bin. Dla mnie działało idealnie. Dzięki.
Oliver
Uruchamianie testu wydaje się udane, ale zawsze zaczyna się od. ./test: line 3: read: 0.001: invalid timeout specificationNastępnie, gdy biegnę blueutil off && sleep 1 && blueutil on, otrzymuję-bash: blueutil: command not found
skybondsor
2
Wskazując, że możesz zainstalować to z Homebrew:brew install blueutil
Alter Lagos
17

Na El Capitan jest to dość trudne, ponieważ nie pozwala ci zwolnić usług systemowych. Jednak metoda brute-force to:
sudo pkill blued
„blued” to demon bluetooth OS X i automatycznie uruchomi się ponownie po zakończeniu (przynajmniej gdy przetestowałem go na moim komputerze El Capitan). Inne powiązane demony to: com.apple.bluetoothReporter, com.apple.IOBluetoothUSBDFU i com.apple.bluetoothaudiod (możesz sprawdzić uruchomione demony sudo launchctl list)

Możesz także spróbować:

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

Jeśli masz starszą wersję OS X, jest czystsza:

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

lub

sudo kextunload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport
sudo kextload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport
Testowanie
źródło
Wypróbowałem wszystkie trzy polecenia, które zasugerowałeś, i żadne z nich nie zabiło i / lub nie uruchomiło ponownie bluetooth. Mówię to, ponieważ nadal byłem w stanie korzystać z myszy i klawiatury Bluetooth po wydaniu wersji „kill” każdego z poleceń. Jakieś inne pomysły? W tej chwili jestem na Yosemite.
zeeple
@zeeple: masz rację. Wszystkie polecenia dostarczone przez @Testing spowodują automatyczne ponowne uruchomienie zabitych demonów, ponieważ są one skonfigurowane w ten sposób przez launchd(który interfejs poleceń jest launchctl).
dan
Dziś rano żadne z tych poleceń nie działa, aby ponownie uruchomić bluetooth. Jedyne, co zadziałałoby, to ponowne uruchomienie systemu operacyjnego.
zeeple
W przypadku El Capitan sudo launchctl stop com.apple.bluedpolecenie faktycznie zrestartuje demona bez polecenia start. Starsze polecenia nic nie robią na El Capitan, więc niestety nie mam większego wglądu (zaktualizowałem moją ostatnią maszynę Yosemite zaledwie kilka tygodni temu).
Testowanie
Niestety pracuję dla gigantycznej firmy z zacofanym działem IT. Nie pozwolą na aktualizację do niczego poza Yosemite. Żadne z powyższych poleceń w ogóle mi nie działa. Ponowne uruchamianie całej maszyny każdego ranka jest jedyną rzeczą, która będzie działać.
zeeple
7

Jedną z rzeczy, o których należy wspomnieć, jest nazwa niebieskiego demona (przynajmniej do MacOS 10.11 El Capitan), zmieniona na bluetoothd .

Zatem w zależności od wersji systemu macOS musisz zmienić nazwę demona w poniższych poleceniach.

Inną rzeczą wartą uwagi jest to, że rozładowanie, a następnie załadowanie listy demonów (zamiast zatrzymania, a następnie uruchomienia lub wysłania sygnału HUP) może nie działać z powodu SIP (System Integrity Protection) wprowadzonego w El Capitan. Ale powinno działać, gdy wyłączyłeś SIP lub MacOS przed El Capitan.

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

Nawet w środowisku SIP (po El Capitan) możesz po prostu uruchomićctctl stop, a następnie startctl uruchomić demona.

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

Jeśli chcesz tylko zmienić status (włączony | wyłączony) bluetooth, a nie chcesz, aby demon faktycznie się ponownie uruchomił, możesz wykonać następujące czynności,

# 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 jest fajny, ale używa niektórych prywatnych interfejsów API IOBluetooth.framework, więc może nie działać w przyszłej wersji systemu macOS.

mogutan88
źródło
5

To narzędzie linii poleceń innej firmy wydaje się działać aż do High Sierra, usuwając różnice między wersjami OSX: https://github.com/toy/blueutil

Miemo
źródło
działa dla mnie na 10.13 blueutil off && blueutil s && blueutil onplus można go zainstalować przez brewbrew install blueutil
urandom
4
sudo pkill bluetoothd

Działa dla mnie na macOS High Sierra Mój Logitech MX gdziekolwiek nie działa czasem po śnie. Jak czytam, to nie z powodu myszy, to błąd macOS Smart Bluetooth. Ale moja klawiatura Apple zawsze działa, nigdy nie mam tego problemu. Czasami budzę komputer, klawiatura Apple działa, ale mysz Logitech nie działa. Więc bez myszy nie mogę zrestartować Bluetooth z systemu (mógłbym zamknąć, ale moja klawiatura też zniknie, więc nie mogę ponownie uruchomić) Zacząłem używać tego polecenia z terminala, zatrzymuje usługę, ale kiedy usługa się zatrzymuje, automatycznie uruchamia się ponownie . A moja mysz zaczyna działać w ciągu sekundy!

Yusuf
źródło
4

W przypadku mojego Macbooka Pro 2017 z systemem macOS High Sierra 10.13.6 ponownie uruchamiam Bluetooth za pomocą następującego skryptu bash:

#!/bin/bash

sudo launchctl stop com.apple.bluetoothd
sudo launchctl start com.apple.bluetoothd
Mark Winterbottom
źródło
2

Znalazłem tę stronę w GitHub Gist z poleceniami, które działały dla mnie (korzystam z Yosemite 10.10.5). Możesz po prostu wpisać następujące dane w terminalu, aby zrestartować demona Bluetooth bez ponownego uruchamiania:

sudo kextunload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport

sudo kextload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport 

Miriam Marling
źródło
1

Używam Yosemite 10.10.5 i żadne inne komentarze / listy nie działały dla mnie. Jedynymi krokami, które udało mi się wymyślić, aby przywrócić do życia sterownik bluetooth, były:

  1. Wykonaj sudo kextunload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransportw terminalu
  2. Uruchom ponownie komputer bez zachowywania otwartych okien
EnriqueH
źródło
4
Dla mnie wystarczy samo ponowne uruchomienie komputera. To, czego szukam, to sposób wykonania wiersza poleceń bez konieczności ponownego uruchamiania całej maszyny.
zeeple