Cara me-restart layanan Bluetooth dari baris perintah

27

Di Linux, jika seseorang ingin memulai kembali layanan Bluetooth, mereka cukup meluncurkan terminal dan mengeluarkan perintah berikut:

sudo /etc/init.d/bluetooth restart

Apa yang setara di Mac OS X? Saya ingin me-restart Bluetooth saya tanpa harus me-restart seluruh komputer.

Saya menggunakan Yosemite.

Pembaruan: Dari berbagai opsi baris perintah yang disediakan oleh Pengujian di bawah ini, satu-satunya yang tampaknya berfungsi adalah yang terakhir, yaitu:

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

Pembaruan 2: Perintah di atas tidak lagi berfungsi dan saya ingin tahu apakah itu pernah berhasil. Pertama kali saya mencobanya mungkin ada sesuatu yang me-restart layanan bluetooth saya. Satu-satunya hal yang akan berhasil bagi saya adalah restart seluruh mesin setiap pagi.

zeeple
sumber
Versi OS X yang mana? Tampaknya mungkin penting dalam kasus ini.
tim.rohrer
Jika menginstal aplikasi lain adalah sebuah opsi, Anda dapat melihat inti ini: gist.github.com/ralph-hm/a65840c4f5e439b90170d735a89a863f
tim.rohrer
Pertanyaan yang sangat bagus Masih berinvestasi intinya. Saya pikir ada cara bersih Mavericksdan Yosemite.
dan
Saya menghapus com.apple.Bluetooth.plist dari / Library / Preferences / SystemConfiguration / atau / Library / Preferences / dan restart> fixed. perintah terminal di bawah ini tidak berfungsi untuk saya - tetapi tentu saja Anda dapat membuat perintah terminal yang menghapus file ini dan kemudian me-restart mac Anda :)
Thieme Hennis

Jawaban:

25

Di High Sierra, tidak ada opsi baris perintah yang berfungsi untuk saya. Saya dapat menyambungkan mouse USB kabel dan menggunakan opsi Shift + Option dengan Debug / Rest.

Saya mencoba solusi blueutil di High Sierra saya, dan itu bekerja seperti pesona. Saya secara teratur memiliki Bluetooth pada MBPR 2015 saya dengan selang Apple Magic Mouse, dan harus memulai ulang. Ya, saya bisa membuka tutupnya dan menggunakan track pad, tapi ada di sisi lain dinding dari ruang meja saya.

Anda dapat menginstal blueutil menggunakan Homebrew:

brew install blueutil

Atau Anda dapat mengkompilasi dan menginstalnya dengan tangan menggunakan:

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

Sekarang jalankan:

blueutil -p 0 && sleep 1 && blueutil -p 1
sygibson
sumber
Saya menjalankan 10.13.3 dan baru saja berhasil menggunakan baris perintah blueutil yang diposting di atas. Terima kasih untuk itu!
Chris Sia
3
Akhirnya, sesuatu yang berhasil !!!
Mirko
6
Perintah itu tidak berhasil untukku. Saya harus menjalankan blueutil -p 0 && sleep 1 && blueutil -p 1Juga ~/binmengakibatkan lokasi tidak ada pesan. Diperlukan lokasi lengkap yang sebelumnya /usr/local/bin. Berfungsi dengan sempurna bagi saya. Terima kasih.
Oliver
Tes lari tampaknya berhasil, tetapi selalu dimulai dengan ./test: line 3: read: 0.001: invalid timeout specificationKemudian ketika saya menjalankan blueutil off && sleep 1 && blueutil onsaya dapatkan-bash: blueutil: command not found
skybondsor
2
Hanya dengan menunjukkan Anda dapat menginstal ini dengan homebrew:brew install blueutil
Alter Lagos
17

Di El Capitan, ini agak rumit karena tidak memungkinkan Anda membongkar layanan sistem. Namun, metode brute-force adalah:
sudo pkill blued
'blued' adalah daemon bluetooth OS X, dan itu akan secara otomatis restart ketika diakhiri (setidaknya ketika saya mengujinya di mesin El Capitan saya). Daemon terkait lainnya adalah: com.apple.bluetoothReporter, com.apple.IOBluetoothUSBDFU, dan com.apple.bluetoothaudiod (Anda dapat melihat daemon yang berjalan menggunakan sudo launchctl list)

Anda juga dapat mencoba:

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

Jika Anda memiliki versi OS X yang lebih lama, lebih bersih:

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

atau

sudo kextunload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport
sudo kextload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport
Pengujian
sumber
Saya mencoba ketiga perintah yang Anda sarankan dan tidak ada yang akan mematikan dan / atau me-restart bluetooth. Saya mengatakan ini karena saya masih dapat menggunakan mouse dan keyboard bluetooth saya setelah mengeluarkan versi 'kill' dari masing-masing perintah. Ada ide lain? Saya sedang di Yosemite saat ini.
zeeple
@zeeple: Anda benar. Semua perintah yang disediakan oleh @Testing akan menyebabkan restart otomatis daemon yang mati karena dikonfigurasi dengan cara ini launchd(antarmuka perintah mana launchctl).
dan
Pagi ini tidak satu pun dari perintah ini yang berfungsi agar bluetooth saya berfungsi kembali. Satu-satunya hal yang akan berhasil adalah reboot OS.
zeeple
Pada El Capitan sudo launchctl stop com.apple.bluedperintah memang melakukan restart otomatis daemon tanpa perintah mulai. Perintah yang lebih lama tidak melakukan apa-apa pada El Capitan jadi sayangnya saya tidak memiliki lebih banyak wawasan (saya meningkatkan mesin Yosemite terakhir saya hanya beberapa minggu yang lalu).
Menguji
Sedihnya, saya bekerja di perusahaan raksasa dengan departemen TI yang terbelakang. Mereka tidak akan mengizinkan peningkatan apa pun di luar Yosemite. Tidak ada perintah di atas yang berfungsi untuk saya sama sekali. Me-restart seluruh mesin setiap pagi adalah satu-satunya hal yang akan berhasil.
zeeple
7

Satu hal yang perlu disebutkan adalah nama daemon blued (setidaknya sampai macOS 10.11 El Capitan), telah diubah menjadi bluetoothd .

Jadi berdasarkan pada versi macOS, Anda perlu mengubah nama daemon dalam perintah di bawah ini.

Hal lain yang perlu diperhatikan adalah, bongkar kemudian muatkan daemon's plist (alih-alih berhenti lalu mulai atau mengirim sinyal HUP) mungkin tidak berfungsi karena SIP (System Integrity Protection) yang diperkenalkan di El Capitan. Tetapi itu harus bekerja ketika Anda menonaktifkan SIP atau pada macOS sebelum El Capitan.

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

Bahkan dalam lingkungan SIP (setelah El Capitan) Anda dapat dengan mudah memulai, menghentikan, dan memulai, menjalankan daemon.

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

Jika Anda hanya ingin status (on | off) bluetooth diubah, tidak ingin daemon benar-benar restart, Anda dapat melakukan hal berikut,

# 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 adalah hal yang keren, tetapi menggunakan beberapa API pribadi dari IOBluetooth.framework, sehingga mungkin tidak berfungsi pada versi MacOS yang akan datang.

mogutan88
sumber
5

Alat baris perintah pihak ke-3 ini tampaknya berfungsi sepenuhnya hingga High Sierra, mengabstraksi perbedaan antara versi OSX: https://github.com/toy/blueutil

miemo
sumber
bekerja untuk saya pada 10,13 blueutil off && blueutil s && blueutil onplus itu dapat diinstal melalui brewbrew install blueutil
urandom
4
sudo pkill bluetoothd

Bekerja untuk saya di macOS High Sierra My Logitech mx di mana saja kadang-kadang tidak berfungsi setelah tidur. Ketika saya membaca ini bukan karena mouse, itu adalah macOS Smart Bluetooth bug. Tetapi keyboard Apple saya selalu berfungsi, tidak pernah mengalami masalah ini. Terkadang saya membangunkan komputer saya, keyboard Apple berfungsi tetapi mouse Logitech tidak berfungsi. Jadi tanpa mouse saya tidak dapat me-restart Bluetooth dari sistem (saya bisa menutup tetapi keyboard saya juga pergi, jadi tidak bisa me-restart lagi) Saya mulai menggunakan perintah ini dari terminal, ia menghentikan layanan tetapi ketika layanan berhenti secara otomatis me-restart itu sendiri . Dan mouse saya mulai bekerja dalam sedetik!

Yusuf
sumber
4

Untuk Macbook Pro 2017 dengan macOS High Sierra 10.13.6, saya memulai ulang bluetooth menggunakan skrip bash berikut:

#!/bin/bash

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

Menemukan halaman ini di GitHub Gist dengan perintah yang bekerja untuk saya (saya menjalankan Yosemite v. 10.10.5). Anda cukup mengetik berikut ini di terminal untuk me-restart daemon bluetooth tanpa me-restart:

sudo kextunload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport

sudo kextload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport 

Miriam Marling
sumber
1

Saya menjalankan Yosemite v10.10.5 dan tidak ada komentar / inti lain yang bekerja untuk saya sama sekali. Satu-satunya langkah yang berhasil saya pikirkan untuk menghidupkan kembali driver bluetooth adalah:

  1. Jalankan sudo kextunload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransportdi terminal
  2. Nyalakan kembali komputer tanpa menyimpan jendela yang terbuka
EnriqueH
sumber
4
Bagi saya, cukup me-restart komputer melakukan trik. Apa yang saya cari adalah cara baris perintah untuk melakukannya tanpa harus me-restart seluruh mesin.
zeeple