Como reiniciar o serviço Bluetooth na linha de comando

27

No Linux, se desejar reiniciar o serviço Bluetooth, eles simplesmente iniciam um terminal e emitem o seguinte comando:

sudo /etc/init.d/bluetooth restart

Qual é o equivalente no Mac OS X? Gostaria de reiniciar o Bluetooth sem precisar reiniciar o computador inteiro.

Eu estou usando Yosemite.

Atualização: Das várias opções de linha de comando fornecidas pelo Teste abaixo, a única que parecia funcionar foi a última, que é a seguinte:

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

Atualização 2: O comando acima não funciona mais e eu me pergunto se já funcionou. A primeira vez que tentei, poderia ter sido outra coisa que reiniciou meus serviços bluetooth. A única coisa que funcionará para mim é reiniciar toda a máquina todas as manhãs.

zeeple
fonte
Qual versão do OS X? Parece que pode ser importante neste caso.
tim.rohrer
Se a instalação de outro aplicativo é uma opção, você pode verificar este essência: gist.github.com/ralph-hm/a65840c4f5e439b90170d735a89a863f
tim.rohrer
Excelente pergunta. Ainda investindo o ponto. Eu acho que existe um caminho limpo Maverickse Yosemite.
dan
Eu removi o com.apple.Bluetooth.plist de / Library / Preferences / SystemConfiguration / ou / Library / Preferences / e reiniciei> corrigido. os comandos do terminal abaixo não funcionou para mim - mas é claro que você pode dar um comando de terminal que remove este arquivo e, em seguida, reinicia o mac :)
Thieme Hennis

Respostas:

25

Em High Sierra, nenhuma das opções de linha de comando funcionou para mim. Consegui conectar um mouse USB com fio e usar a solução Shift + Option com Debug / Rest.

Eu tentei a solução blueutil no meu High Sierra, e funcionou como um encanto. Normalmente, tenho Bluetooth no meu MBPR 2015 com uma mangueira do Apple Magic Mouse e preciso reiniciar. Sim, eu poderia abrir a tampa e usar o track pad, mas está do outro lado da parede do meu espaço na mesa.

Você pode instalar o blueutil usando o Homebrew:

brew install blueutil

Ou você pode compilar e instalar manualmente usando:

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

Agora execute:

blueutil -p 0 && sleep 1 && blueutil -p 1
sygibson
fonte
Estou executando o 10.13.3 e usei com sucesso a linha de comando blueutil postada acima. Obrigado por isso!
Chris Sia
3
Finalmente, algo que funciona !!!
Mirko
6
O comando não funcionou para mim. Eu tive que executar blueutil -p 0 && sleep 1 && blueutil -p 1Também ~/binresultou em localização não existe mensagem. Necessário o local completo que era /usr/local/bin. Funcionou perfeitamente então para mim. Obrigado.
Oliver
Teste de corrida parece bem sucedida, mas sempre começa com ./test: line 3: read: 0.001: invalid timeout specificationEntão, quando eu corro blueutil off && sleep 1 && blueutil oneu recebo-bash: blueutil: command not found
skybondsor
2
Apenas apontando que você pode instalá-lo com o homebrew:brew install blueutil
Alter Lagos
17

No El Capitan, é meio complicado porque não permite descarregar serviços do sistema. No entanto, um método de força bruta é:
sudo pkill blued
'blued' é o daemon do bluetooth do OS X e será reiniciado automaticamente quando finalizado (pelo menos quando eu o testei na minha máquina El Capitan). Outros daemons relacionados são: com.apple.bluetoothReporter, com.apple.IOBluetoothUSBDFU e com.apple.bluetoothaudiod (você pode ver os daemons em execução usando sudo launchctl list)

Você também pode tentar:

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

Se você possui uma versão mais antiga do OS X, é mais limpo:

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

ou

sudo kextunload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport
sudo kextload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport
Teste
fonte
Eu tentei todos os três comandos que você sugeriu e nenhum deles mataria e / ou reiniciaria o bluetooth. Digo isso porque ainda consegui usar o mouse e o teclado bluetooth depois de emitir a versão 'kill' de cada um dos comandos. Alguma outra ideia? Estou em Yosemite no momento.
zeeple 7/09/16
@ zeeple: você está certo. Todo o comando fornecido pelo @Testing causará uma reinicialização automática dos daemons mortos porque eles são configurados dessa maneira por launchd(qual é a interface de comando launchctl).
dan
Hoje de manhã, nenhum desses comandos está funcionando para que meu bluetooth volte a funcionar. A única coisa que funcionaria era uma reinicialização do sistema operacional.
zeeple 12/09/16
No El Capitan, o sudo launchctl stop com.apple.bluedcomando realmente reinicia automaticamente o daemon sem o comando start. Os comandos mais antigos não fazem nada no El Capitan; infelizmente, não tenho muito mais informações (atualizei minha última máquina Yosemite há algumas semanas).
Testando
Infelizmente, trabalho para uma empresa gigante com um departamento de TI invertido. Eles não permitirão a atualização para nada além de Yosemite. Nenhum dos comandos acima funciona para mim. Reiniciar a máquina inteira todas as manhãs é a única coisa que funcionará.
Zeeple #
7

Uma coisa a mencionar é o nome do daemon blued (pelo menos até o macOS 10.11 El Capitan), ter sido alterado para bluetoothd .

Portanto, com base na versão do macOS, você precisa alterar o nome do daemon nos comandos abaixo.

Outro aspecto a ser observado é que, descarregue e carregue o plist do daemon (em vez de parar e iniciar ou enviar sinal HUP) pode não funcionar devido ao SIP (System Integrity Protection) introduzido no El Capitan. Mas deve funcionar quando você desabilitou o SIP ou no macOS antes do El Capitan.

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

Mesmo no ambiente SIP (após El Capitan) você pode simplesmente launchctl parada depois launchctl iniciar o daemon.

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

Caso você queira apenas alterar o status (ativado | desativado) do bluetooth, não desejando que o daemon seja realmente reiniciado, você pode fazer o seguinte,

# 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`

O Blueutil é interessante, mas está usando algumas APIs privadas do IOBluetooth.framework, portanto, pode não funcionar na versão futura do macOS.

mogutan88
fonte
5

Essa ferramenta de linha de comando de terceiros parece funcionar até High Sierra, abstraindo as diferenças entre as versões do OSX: https://github.com/toy/blueutil

miemo
fonte
funciona para mim em 10,13 blueutil off && blueutil s && blueutil onAlém disso, ele pode ser instalado via bebidabrew install blueutil
urandom
4
sudo pkill bluetoothd

Funciona para mim no macOS High Sierra Meu Logitech mx em qualquer lugar não funciona depois de dormir algumas vezes. Como eu li, não é por causa do mouse, é um bug do macOS Smart Bluetooth. Mas meu teclado Apple sempre funciona, nunca entendi esse problema. Às vezes, acordo meu computador, o teclado da Apple está funcionando, mas o mouse Logitech não está funcionando. Portanto, sem o mouse, não consigo reiniciar o Bluetooth a partir do sistema (eu poderia fechar, mas meu teclado também desapareceu, não consigo reiniciar novamente). Comecei a usar este comando do terminal, ele interrompe o serviço, mas quando o serviço para, o dispositivo é reiniciado automaticamente. . E meu mouse começa a funcionar em um segundo!

Yusuf
fonte
4

Para o meu Macbook Pro 2017 com o macOS High Sierra 10.13.6, reinicio o bluetooth usando o seguinte script bash:

#!/bin/bash

sudo launchctl stop com.apple.bluetoothd
sudo launchctl start com.apple.bluetoothd
Mark Winterbottom
fonte
2

Encontrei esta página no GitHub Gist com comandos que funcionaram para mim (estou executando o Yosemite v. 10.10.5). Você pode simplesmente digitar o seguinte no terminal para reiniciar o daemon bluetooth sem reiniciar:

sudo kextunload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport

sudo kextload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport 

Miriam Marling
fonte
1

Estou executando o Yosemite v10.10.5 e nenhum outro comentário / essência funcionou para mim. Os únicos passos que eu consegui descobrir para recuperar a vida útil do driver bluetooth foram:

  1. Execute sudo kextunload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransportno terminal
  2. Reinicie o computador sem conservar as janelas abertas
EnriqueH
fonte
4
Para mim, basta reiniciar o computador. O que estou procurando é uma maneira de fazê-lo sem precisar reiniciar a máquina inteira.
zeeple