Cách khởi động lại dịch vụ Bluetooth từ dòng lệnh


27

Trên Linux, nếu muốn khởi động lại dịch vụ Bluetooth, họ chỉ cần khởi động một thiết bị đầu cuối và ra lệnh sau:

sudo /etc/init.d/bluetooth restart

Tương đương trên Mac OS X là gì? Tôi muốn khởi động lại Bluetooth mà không phải khởi động lại toàn bộ máy tính.

Tôi đang sử dụng Yosemite.

Cập nhật: Trong số các tùy chọn dòng lệnh khác nhau được cung cấp bởi Kiểm tra bên dưới, chỉ có một tùy chọn dường như hoạt động là cuối cùng, đó là:

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

Cập nhật 2: Lệnh trên không còn hoạt động nữa và tôi tự hỏi liệu nó đã từng làm chưa. Lần đầu tiên tôi dùng thử, nó có thể là thứ gì đó đã khởi động lại dịch vụ bluetooth của tôi. Điều duy nhất sẽ làm việc cho tôi là khởi động lại toàn bộ máy mỗi sáng.


Phiên bản nào của OS X? Có vẻ như nó có thể quan trọng trong trường hợp này.
tim.rohrer

Nếu cài đặt ứng dụng khác là một tùy chọn, bạn có thể kiểm tra ý chính này: gist.github.com/ralph-hm/a65840c4f5e439b90170d735a89a863f
tim.rohrer

Câu hỏi tuyệt vời. Vẫn đầu tư điểm. Tôi nghĩ rằng có một cách sạch sẽ MavericksYosemite.
dan

Tôi đã xóa com.apple.Bluetooth.plist khỏi / Library / Preferences / SystemConfiguration / hoặc / Library / Preferences / và khởi động lại> đã sửa. các lệnh đầu cuối bên dưới không hoạt động với tôi - nhưng tất nhiên bạn có thể tạo một lệnh đầu cuối loại bỏ tệp này và sau đó khởi động lại máy Mac của bạn :)
Thieme Hennis

Câu trả lời:


25

Trên High Sierra, không có tùy chọn dòng lệnh nào phù hợp với tôi. Tôi đã có thể cắm chuột USB có dây và sử dụng Tùy chọn Shift + với giải pháp Gỡ lỗi / Nghỉ ngơi.

Tôi đã thử giải pháp blueutil trên High Sierra của tôi và nó hoạt động như một bùa mê. Tôi thường xuyên có Bluetooth trên MBPR 2015 của mình với vòi Apple Magic Mouse và phải khởi động lại. Vâng, tôi có thể mở nắp và sử dụng bảng theo dõi, nhưng nó ở phía bên kia của bức tường từ không gian bàn làm việc của tôi.

Bạn có thể cài đặt blueutil bằng Homebrew:

brew install blueutil

Hoặc bạn có thể biên dịch và cài đặt nó bằng tay bằng cách sử dụng:

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

Bây giờ chạy:

blueutil -p 0 && sleep 1 && blueutil -p 1

Tôi đang chạy 10.13.3 và vừa sử dụng thành công dòng lệnh blueutil được đăng ở trên. Cảm ơn vì điều đó!
Chris Sia

3
Cuối cùng, một cái gì đó hoạt động !!!
Mirko

6
Lệnh không làm việc cho tôi. Tôi đã phải chạy blueutil -p 0 && sleep 1 && blueutil -p 1Cũng ~/bindẫn đến vị trí không tồn tại tin nhắn. Yêu cầu vị trí đầy đủ đó là /usr/local/bin. Làm việc hoàn hảo sau đó cho tôi. Cảm ơn.
Oliver

Chạy thử có vẻ thành công, nhưng luôn bắt đầu với ./test: line 3: read: 0.001: invalid timeout specificationSau đó khi tôi chạy, blueutil off && sleep 1 && blueutil ontôi nhận được-bash: blueutil: command not found
skybondsor

2
Chỉ cần chỉ ra bạn có thể cài đặt cái này với homebrew:brew install blueutil
Alter Lagos

17

Trên El Capitan, điều đó thật khó khăn vì nó không cho phép bạn dỡ các dịch vụ hệ thống. Tuy nhiên, một phương pháp vũ phu là:
sudo pkill blued
'blued' là daemon bluetooth OS X và nó sẽ tự động khởi động lại khi chấm dứt (ít nhất là khi tôi đã thử nghiệm nó trên máy El Capitan của mình). Các trình tiện ích liên quan khác là: com.apple.bluetoothReporter, com.apple.IOBluetoothUSBDFU và com.apple.bluetoothaudiod (bạn có thể xem các trình tiện ích đang chạy bằng cách sử dụng sudo launchctl list)

Bạn cũng có thể thử:

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

Nếu bạn có phiên bản OS X cũ hơn, nó sẽ sạch hơn:

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

hoặc là

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

Tôi đã thử cả ba lệnh mà bạn đề xuất và không ai trong số chúng sẽ giết và / hoặc khởi động lại bluetooth. Tôi nói điều này bởi vì tôi vẫn có thể sử dụng chuột và bàn phím bluetooth của mình sau khi phát hành phiên bản 'giết' của mỗi lệnh. Còn ý tưởng nào khác không? Tôi đang ở Yosemite vào lúc này.
zeeple

@zeeple: bạn nói đúng Tất cả các lệnh được cung cấp bởi @Testing sẽ gây ra tự động khởi động lại các daemon bị giết bởi vì chúng được cấu hình theo cách này bởi launchd(giao diện lệnh nào launchctl).
dan

Sáng nay không có lệnh nào trong số này hoạt động để bluetooth của tôi hoạt động trở lại. Điều duy nhất sẽ hoạt động là khởi động lại hệ điều hành.
zeeple

Trên El Capitan, sudo launchctl stop com.apple.bluedlệnh thực sự tự động khởi động lại daemon mà không cần lệnh start. Các lệnh cũ hơn không làm bất cứ điều gì trên El Capitan, thật không may, tôi không có cái nhìn sâu sắc hơn nhiều (tôi đã nâng cấp máy Yosemite cuối cùng của tôi chỉ một vài tuần trước).
Kiểm tra

Đáng buồn thay, tôi làm việc cho một công ty khổng lồ với bộ phận CNTT lạc hậu. Họ sẽ không cho phép nâng cấp lên bất cứ thứ gì ngoài Yosemite. Không có lệnh nào ở trên làm việc cho tôi cả. Khởi động lại toàn bộ máy mỗi sáng là điều duy nhất sẽ hoạt động.
zeeple

7

Một điều cần đề cập là tên daemon blued (ít nhất là cho đến khi macOS 10.11 El Capitan), đã được đổi thành bluetoothd .

Vì vậy, dựa trên phiên bản của macOS, bạn cần thay đổi tên daemon trong (các) lệnh bên dưới.

Một điều cần lưu ý là, dỡ tải sau đó tải plist của daemon (thay vì dừng sau đó bắt đầu hoặc gửi tín hiệu HUP) có thể không hoạt động do SIP (Bảo vệ toàn vẹn hệ thống) được giới thiệu trong El Capitan. Nhưng nó sẽ hoạt động khi bạn tắt SIP hoặc trên macOS trước El Capitan.

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

Ngay cả trong môi trường SIP (sau khi El Capitan), bạn có thể chỉ đơn giản là launchctl dừng sau đó launchctl bắt đầu daemon.

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

Trong trường hợp bạn chỉ muốn thay đổi trạng thái (bật | tắt) của bluetooth, không muốn trình nền thực sự khởi động lại, bạn có thể làm như sau,

# 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 là một thứ tuyệt vời, nhưng nó đang sử dụng một số API riêng của IOBluetooth.framework, vì vậy nó có thể không hoạt động trên phiên bản macOS trong tương lai.


5

Công cụ dòng lệnh của bên thứ 3 này dường như hoạt động hoàn toàn lên tới High Sierra, trừu tượng hóa sự khác biệt giữa các phiên bản OSX: https://github.com/toy/blueutil


hoạt động với tôi vào ngày 10.13 blueutil off && blueutil s && blueutil oncộng với nó có thể được cài đặt qua brewbrew install blueutil
urandom

4
sudo pkill bluetoothd

Hoạt động với tôi trên macOS High Sierra My Logitech mx ở mọi nơi đôi khi không hoạt động sau khi ngủ. Khi tôi đọc không phải vì chuột, đó là lỗi Bluetooth thông minh macOS. Nhưng bàn phím Apple của tôi luôn hoạt động, không bao giờ gặp phải vấn đề này. Đôi khi tôi đánh thức máy tính của mình, bàn phím Apple đang hoạt động nhưng chuột Logitech không hoạt động. Vì vậy, không có chuột, tôi không thể khởi động lại Bluetooth từ hệ thống (Tôi có thể đóng nhưng bàn phím của tôi cũng biến mất, vì vậy không thể khởi động lại) Tôi bắt đầu sử dụng lệnh này từ thiết bị đầu cuối, nó dừng dịch vụ nhưng khi dịch vụ dừng, nó sẽ tự động khởi động lại. . Và con chuột của tôi bắt đầu làm việc trong vòng một giây!


4

Đối với Macbook Pro 2017 của tôi với macOS High Sierra 10.13.6, tôi khởi động lại bluetooth bằng cách sử dụng tập lệnh bash sau:

#!/bin/bash

sudo launchctl stop com.apple.bluetoothd
sudo launchctl start com.apple.bluetoothd

2

Tìm thấy trang này trên GitHub Gist với các lệnh làm việc cho tôi (Tôi đang chạy Yosemite v. 10.10.5). Bạn chỉ cần nhập nội dung sau vào thiết bị đầu cuối để khởi động lại daemon bluetooth mà không cần khởi động lại:

sudo kextunload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport

sudo kextload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport 


1

Tôi đang chạy Yosemite v10.10.5 và không có ý kiến ​​/ ý chính nào khác làm việc cho tôi cả. Các bước duy nhất mà tôi đã tìm ra để lấy lại trình điều khiển bluetooth là:

  1. Thực thi sudo kextunload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransporttrong thiết bị đầu cuối
  2. Khởi động lại máy tính mà không bảo tồn các cửa sổ đã mở

4
Đối với tôi, chỉ cần khởi động lại máy tính là mẹo. Những gì tôi đang tìm kiếm là một cách dòng lệnh để làm điều đó mà không phải khởi động lại toàn bộ máy.
zeeple
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.