Кажется, у меня постоянные проблемы с подключением Bluetooth, особенно после пробуждения моего Macbook Pro после долгого сна.
У меня есть динамик, который автоматически отключается после определенного периода бездействия, и обычно я открываю ноутбук, включаю динамик, и когда драйвер Bluetooth работает нормально, они автоматически переподключаются.
Однако проблема заключается в том, что мои периферийные устройства Bluetooth не подключаются повторно, если мой Macbook только что проснулся после долгого сна.
После поиска я нашел этот скрипт для перезапуска расширений ядра Bluetooth , но, похоже, он не работал на Yosemite.
Вот что sudo tail -f /var/log/system.log
дало мне после выполнения kextload
and kextunload
(имя хоста и имя пользователя отредактировано):
Nov 17 07:50:11 {redacted} sudo[8118]: username: TTY=ttys000 ; PWD=/Users/username; USER=root ; COMMAND=/sbin/kextload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport
Nov 17 07:50:11 {redacted} kernel[0]: IOBluetoothUSBDFU::probe
Nov 17 07:50:11 {redacted} kernel[0]: IOBluetoothUSBDFU::probe ProductID - 0x821D FirmwareVersion - 0x0147
Nov 17 07:50:11 {redacted} kernel[0]: **** [IOBluetoothHostControllerUSBTransport][start] -- completed -- result = TRUE -- 0x0800 ****
Nov 17 07:50:11 {redacted} kernel[0]: **** [BroadcomBluetoothHostControllerUSBTransport][start] -- Completed -- 0x0800 ****
Nov 17 07:50:11 {redacted} kernel[0]: [IOBluetoothHCIController][staticBluetoothTransportShowsUp] -- Received Bluetooth Controller register service notification -- 0x0800
Nov 17 07:50:12 {redacted} kernel[0]: **** [IOBluetoothHostControllerUSBTransport][initHardwareWL] -- failed -- calling DoDeviceReset (kBluetoothControllerResetHub) -- 0x0800 ****
Nov 17 07:50:12 {redacted} kernel[0]: **** [IOBluetoothHostControllerUSBTransport][DoDeviceReset] -- thread_call_enter1 (mReEnumerateOrResetThread) -- reEnumerateOrReset (0xffffff8213ac3ae0) = 2 -- returned FALSE -- 0x0800 ****
Nov 17 07:50:12 {redacted} kernel[0]: **** [IOBluetoothHCIController][ProcessBluetoothTransportShowsUpActionWL] -- Error!! -- Something went wrong in the setup process. Could not communicate with Bluetooth Transport successfully -- 0x0800 -- 0x0800 ****
Nov 17 07:50:12 {redacted} kernel[0]: **** [IOBluetoothHostControllerUSBTransport][ReEnumerateOrResetThreadEntry] -- entering -- param0 = 0xffffff806a870800, param1 = 0x2 -- 0x0800
Nov 17 07:50:12 {redacted} kernel[0]: **** [IOBluetoothHostControllerUSBTransport][ReEnumerateOrReset] -- entering -- reEnumerateOrResetIn = 2 -- this = 0x0800 ****
Nov 17 07:50:12 {redacted} kernel[0]: **** [IOBluetoothHostControllerUSBTransport][ReEnumerateOrReset] -- in our workloop -- 0x0800 ****
Nov 17 07:50:12 {redacted} kernel[0]: **** [IOBluetoothHostControllerUSBTransport][ReEnumerateOrReset] -- parameter is valid -- 0x0800 ****
Nov 17 07:50:12 {redacted} kernel[0]: **** [IOBluetoothHostControllerUSBTransport][ReEnumerateOrReset] -- reEnumerateOrReset = 2 -- 0x0800 ****
Nov 17 07:50:12 {redacted} kernel[0]: [IOBluetoothHostControllerUSBTransport][ReEnumerateOrReset] -- calling myHub->ReEnumerateDevice() -- gEnumerateCounter = 1
Nov 17 07:50:12 {redacted} kernel[0]: [IOBluetoothHostControllerUSBTransport][ReEnumerateOrReset] -- exit; error = 0x0000 (kIOReturnSuccess)
Nov 17 07:50:12 {redacted} kernel[0]: **** [IOBluetoothHostControllerUSBTransport][ReEnumerateOrResetThreadEntry] -- exiting -- 0x0800
Nov 17 07:50:12 {redacted} kernel[0]: IOBluetoothUSBDFU::probe
Nov 17 07:50:12 {redacted} kernel[0]: IOBluetoothUSBDFU::probe ProductID - 0x821D FirmwareVersion - 0x0147
Nov 17 07:50:12 {redacted} kernel[0]: **** [IOBluetoothHostControllerUSBTransport][start] -- completed -- result = TRUE -- 0x0800 ****
Nov 17 07:50:12 {redacted} kernel[0]: **** [BroadcomBluetoothHostControllerUSBTransport][start] -- Completed -- 0x0800 ****
Nov 17 07:50:12 {redacted} kernel[0]: [IOBluetoothHCIController][staticBluetoothTransportShowsUp] -- Received Bluetooth Controller register service notification -- 0x0800
Nov 17 07:50:12 {redacted} kernel[0]: [IOBluetoothHCIController::setConfigState] calling registerService
Nov 17 07:50:12 {redacted} kernel[0]: **** [IOBluetoothHCIController][ProcessBluetoothTransportShowsUpActionWL] -- Connected to the transport successfully -- 0xe300 -- 0x0800 -- 0x0800 ****
Nov 17 07:50:12 {redacted} sharingd[367]: 07:50:12.595 : SDStatusMonitor::kStatusBluetoothPowerChanged
Nov 17 07:50:12 {redacted} sharingd[367]: 07:50:12.617 : SDStatusMonitor::kStatusBluetoothPowerChanged
Nov 17 07:50:12 {redacted} sharingd[367]: 07:50:12.637 : SDStatusMonitor::kStatusBluetoothPowerChanged
Nov 17 07:50:12 {redacted} sharingd[367]: 07:50:12.657 : SDStatusMonitor::kStatusBluetoothPowerChanged
Nov 17 07:50:12 {redacted} sharingd[367]: 07:50:12.659 : BTLE scanner Powered Off
Nov 17 07:50:12 --- last message repeated 2 times ---
Nov 17 07:50:12 {redacted} coreaudiod[360]: 2014-11-17 07:50:12.663673 AM [AirPlay] BTLE client stopping to browse for AirPlay Solo Target Presence.
Nov 17 07:50:12 {redacted} blued[62]: hciControllerOnline; HID devices? 0
Nov 17 07:50:12 {redacted} coreaudiod[360]: 2014-11-17 07:50:12.663868 AM [AirPlay] BTLE client starting to browse for AirPlay Solo Target Presence.
Nov 17 07:50:12 {redacted} sharingd[367]: 07:50:12.664 : Starting Handoff scanning
Nov 17 07:50:12 {redacted} coreaudiod[360]: 2014-11-17 07:50:12.664336 AM [AirPlay] BTLE client stopped to browse for AirPlay Solo Target Presence.
Nov 17 07:50:12 {redacted} coreaudiod[360]: 2014-11-17 07:50:12.664753 AM [AirPlay] BTLE client started to browse for AirPlay Solo Target Presence.
Nov 17 07:50:12 {redacted} sharingd[367]: 07:50:12.664 : Stopping Handoff advertising
Nov 17 07:50:12 {redacted} sharingd[367]: 07:50:12.665 : BTLE scanner Powered On
Nov 17 07:50:12 {redacted} blued[62]: hostControllerOnline - Number of Paired devices = 2, List of Paired devices = (
"00-0c-8a-dd-fd-88",
"84-38-35-ec-1c-ea"
)
Nov 17 07:50:13 {redacted} kernel[0]: AppleUSBMultitouchDriver::message - kIOUSBMessagePortHasBeenReset.
Nov 17 07:50:13 {redacted} kernel[0]: AppleUSBMultitouchDriver::checkStatus - received Status Packet, Payload 2: device was reinitialized
Nov 17 07:50:13 {redacted} hidd[74]: MultitouchHID: device bootloaded
Nov 17 07:50:13 {redacted} kernel[0]: AppleUSBMultitouchDriver::_deviceGetReport - DeviceRequest for reportID 0xc8 returned with result 0xe000404f - retrying
uname -a
вывод (имя хоста отредактировано):
$ uname -a
Darwin {redacted} 14.0.0 Darwin Kernel Version 14.0.0: Fri Sep 19 00:26:44 PDT 2014; root:xnu-2782.1.97~2/RELEASE_X86_64 x86_64
Кто-нибудь из вас видел эту проблему раньше? Любая помощь будет оценена по достоинству.
У меня были проблемы с повторным подключением клавиатуры и трекпада Bluetooth после обновления до Yosimite.
Сначала попробуйте это: откройте терминал и выполните 2 команды:
sudo kextunload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport
sudo kextload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport
Мне пришлось бежать выше только один раз. Если позже Bluetooth снова сломает 2 варианта, просто снова запустите выше, или вы можете создать решение в 1 клик с помощью простого приложения с помощью Automator:
Замените (* Ваш скрипт здесь *) на:
do shell script "kextunload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport;
kextload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport" with administrator privileges
Запускайте приложение-автоматизатор всякий раз, когда устройства Bluetooth не подключаются
kextunload
сбой ( Can't unload kext com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport; classes have instances
) и оставляет Bluetooth недоступным (перемещайтесь по значку).(kernel) Can't remove kext com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport; services failed to terminate - 0xdc008018. Failed to unload com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport - (libkern/kext) kext is in use or retained (cannot unload).
Решение Mikaey на форуме поддержки Apple:
Это решило проблему для меня.
После попытки запустить сценарии, предложенные другими ответами, выгрузив и перезагрузив как kext, так и демон bluetooth, мой bluetooth все еще не отвечал.
Однако я обнаружил, что если Yosemite спит с запущенным VMWare, а bluetooth не работает, когда ОС просыпается, закрытие VMWare устраняет проблему.
Кажется, что драйверы в VMWare не всегда правильно обрабатывают процесс сна/пробуждения.
-- ОБНОВЛЕНИЕ: эта проблема НЕ исправлена в OSX 10.11 El Capitan --
Ниже приводится альтернатива решению Automator, опубликованному вебоголиком, для тех, кто, как и я, находит неудобным повторный ввод пароля (скорее всего, вы только что ввели его для входа в систему после пробуждения вашего Mac).
Во-первых, в Терминале создайте скрипт, который перезагружает подсистему bluetooth:
cat > bt_restart <<END
#!/bin/sh
kextunload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport && \
kextload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport
END
chmod +x bt_restart
Во-вторых, сделайте root его владельцем и переместите его в /sbin:
sudo chown root:wheel bt_restart
sudo mv bt_restart /usr/local/sbin
В-третьих, добавьте команду в список команд NOPASSWD в sudoers:
echo -e "\n\n# Restart bluetooth without password\n$USER ALL=(ALL) NOPASSWD: /usr/local/sbin/bt_restart" | EDITOR='tee -a' sudo visudo
Наконец, создайте скрипт на рабочем столе, который вызывает bt_restart:
echo '#!/usr/bin/sudo /usr/local/sbin/bt_restart' > ~/Desktop/"Restart Bluetooth"
chmod +x ~/Desktop/"Restart Bluetooth"
Выполнено! Просто дважды щелкните трекпадом ноутбука (или USB-мышью) кнопку « Перезапустить Bluetooth » на рабочем столе.
chown
- chmod
пытался отредактировать сам, но здесь нет кредита, и редактирование было ниже ограничения длины :-//etc/sudoers
, в качестве альтернативы вы можете редактировать файл напрямую с помощьюsudo visudo
У меня была такая же проблема, и я думаю, что заметил возможную причину проблемы. Моя мышь называлась «мышь моего имени» с апострофом, возможно, это вызывало ошибки.
Я изменил имя, чтобы избежать использования пробелов и специальных символов, теперь оно называется просто «mymouse», и, похоже, у меня больше нет проблемы.
Подводя итог, вот список вещей, упомянутых здесь, в ссылках отсюда, в подобных темах на других сайтах или даже составленный мной на основе этих других. Я пробовал все это, по отдельности и во многих комбинациях. Все они, по крайней мере, однажды сработали; все потерпели неудачу хотя бы раз.
Я решил держать этот список под рукой и использовать «все вышеперечисленное».
Я думаю, единственное, что здесь точно, это то, что где-то задействована большая доза «случайности», возможно, гонка среди всех этих драйверов для сетей, псевдосетей, многоуровневых сетей, виртуальных сетей и прокси-сетей. В этом случае, вероятно, это вина не только Apple, потому что эти драйверы поступают из разных источников.
Конечно, когда-то знаменитая репутация Apple как «просто работает» была в значительной степени построена на запрете именно такого столкновения разнообразия.
У меня все еще есть эта проблема в macOS Sierra. Ссылка @Tyilo выше на его суть дала мне отправную точку. Но я также хотел использовать доморощенный для установки sleepwatcher, и файлы plist не были настроены должным образом из коробки. Так что я долго экспериментировал и придумал этот сценарий, благодаря которому у меня все заработало надежно.
brew install sleepwatcher
sudo touch /etc/rc.sleep
sudo tee -a /etc/rc.wakeup <<EOF
#!/bin/sh
# Sleepwatcher script to get bluetooth working after the mac wakes up
# Got this approach from https://gist.github.com/Tyilo/c92684d277acb62272b5
kextunload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport
kextload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport
EOF
sudo chmod +x /etc/rc.wakeup
brew services start sleepwatcher
sudo tee -a /Library/LaunchAgents/de.bernhard-baehr.sleepwatcher-20compatibility-custom.plist <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>de.bernhard-baehr.sleepwatcher</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/sbin/sleepwatcher</string>
<string>-V</string>
<string>-s /etc/rc.sleep</string>
<string>-w /etc/rc.wakeup</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
</dict>
</plist>
EOF
sudo launchctl load /Library/LaunchAgents/de.bernhard-baehr.sleepwatcher-20compatibility-custom.plist
Благодаря Tyilo из комментариев к принятому ответу, я изменил его сценарий, чтобы установить sleepwatcher и добавить к сценарию некоторый код, который не только выгрузит драйвер Bluetooth ( com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport
), но и перезапустит blued
демон Apple Bluetooth.
Скрипт можно найти здесь: https://gist.github.com/timgws/fc63aeca6a248bbb25ff .
Запуск этого решил все проблемы для меня.
Сознавая, что это довольно старый пост, но меня сводила с ума задержка, которую я получал после пробуждения во сне до того, как можно было использовать Magic Trackpad .... легко может быть добрых 30 секунд. Перепробовал большинство/все подсказки и подсказки, которые смог найти, но без особого эффекта.
Однако я только что попытался переместить значок Bluetooth в строке меню (перетаскивание CMD ALT) из его нормального положения (примерно 7-е место) на 2-е место (если считать справа), то есть рядом с меню Spotlight.
Пока?... проблема ушла!
Не уверен на 100%, почему это может быть, но подозреваю, что это может быть как-то связано с порядком, в котором задачи из этих элементов в строке меню RHS решаются после пробуждения, т. е. те, что ближе к RHS, имеют более высокий приоритет?
Это занимает всего пару секунд, поэтому, если у вас тоже есть эта проблема, возможно, стоит попробовать?
(iMac 27 дюймов i7 / OS X 10.10.5)
ДХ
Большинство предложений, которые я читал, казались немного сложными для чего-то столь же простого, как это. Решил использовать нубский подход:
Похоже, kextunload
команды больше не работают в High Sierra. Тем не менее , есть сторонний инструмент командной строки для выполнения того же самого, и он работает: https://github.com/toy/blueutil — вы можете настроить упомянутые здесь сценарии, чтобы использовать blueutil
вместо них, или даже есть полноценное решение ( очень похоже на то, что мы уже видели на этой странице): https://gist.github.com/ralph-hm/a65840c4f5e439b90170d735a89a863f
xcodebuild -project blueutil.xcodeproject
в распакованной директории. Это тогда в build/Release
.В этой статье Майкла Куммера приводится довольно исчерпывающий список неудачных попыток исправить проблемы Bluetooth на Mac и, наконец, предлагается скомпрометированное решение путем отключения громкой связи, которое кажется работающим: https://michaelkummer.com/technology/mac-bluetooth-issues-affect -клавиатура-трекпад/
Также можно увидеть на https://www.forbes.com/sites/bradmoon/2017/07/13/this-trick-may-solve-your-mac-bluetooth-connectivity-issues/#6fefb3f45196.
Переустановите MacOS.
На самом деле это не решение проблемы, но я просто хочу поделиться своим опытом, чтобы дать надежду тем, кто сталкивается с той же проблемой, что и моя, — что это может быть не аппаратная проблема или проблема с помехами Wi-Fi, которая может быть более дорогостоящей. или проблематично решить эту проблему переустановкой MacOS.
Что я испытал: после того, как мой Macbook Pro 2015 года вышел из спящего режима, он не смог подключиться к устройствам Bluetooth. Проблема усугублялась со временем, от небольшого неудобства (например, отключение и повторное включение модуля bluetooth или Wi-Fi может решить эту проблему) до серьезной боли (например, требуется перезагрузка со сбросом SMC/PRAM).
Симптом или побочный эффект, который мог быть связан с этим, заключался в том, что компьютеру иногда требовалось слишком много времени (десятки секунд) для пробуждения.
Переустановка (чистая) MacOS была моим последним средством, но, похоже, она просто работает. После переустановки я не наблюдал никаких проблем или сбоев с блютузом, вайфаем или сном.
Отказ от ответственности: вероятно, есть какое-то правильное исправление, которое может достичь того же эффекта, которое может быть еще не обнаружено. Кроме того, переустановка ОС всегда сопряжена с риском потери данных и производительности, которые следует оценивать.
Новое обновление: в течение недели проблем не было. Но потом проблема с Bluetooth иногда возвращается. В течение недели я не особо возился с системой, за исключением установки некоторых очень распространенных программ и пакетов, в основном через Homebrew.
Основываясь на предложениях других людей, я создал простой сценарий оболочки для сброса Bluetooth. Подробнее см. суть .
Упрощенная версия (зависит от blueutil
напитка):
blueutil -p 0
networksetup -setairportpower en0 off
sleep 3
networksetup -setairportpower en0 on
sleep 3
blueutil -p 1
Он выключает Bluetooth, выключает Wi-Fi, снова включает Wi-Fi и, наконец, снова включает Bluetooth.
ОБНОВЛЕНИЕ 2: последнее решение работало только около недели. Я обновился до macOS Mojave (10.14.6), и эта проблема, похоже, устранена. Буду следить и отчитываться, если что-то изменится.
ОБНОВЛЕНИЕ: я смог решить эту проблему на 100% после нескольких месяцев наблюдения, перейдя System Preferences
-> General
-> сняв флажокAllow Handoff between this Mac and your iCloud devices
Итак, я имел дело с этим на своем Macbook Pro (начало 2015 г.) примерно столько же, сколько он у меня был. Перепробовал почти все, kextunload
/ kextload
, сброс SMC и т. Д. ... безрезультатно. Чтобы быть конкретным, мой симптом заключается в том, что после пробуждения значок Bluetooth будет иметь волнистую форму, как это: И отказывается подключаться к каким-либо устройствам. Такое поведение присутствовало в Yosemite, а также в High Sierra (версия, на которой я сейчас работаю).
ЕДИНСТВЕННЫЙ обходной путь, который сработал для меня с согласованностью> 80% (кроме перезагрузки), заключается в следующем:
System Preferences
-> Bluetooth
-> Снимите флажок Show Bluetooth in menu bar
-> Проверьте Show Bluetooth in menu bar
, затем подождите 10 секунд (в этот момент ваш bluetooth должен быть доступен и не иметь волнистой линии на значке) -> повторите попытку подключения устройства.
Это сработало для меня в 80% случаев, хотя иногда мне все еще нужна перезагрузка. Надеюсь это поможет.
ОБНОВЛЕНИЕ: Это предотвратило недоступность Bluetooth, но, похоже, Bluetooth просто иногда не подключался / не работал, хотя значок показывает, что все в порядке ... Не совсем уверен, что делать дальше. Это похоже на проблему, которую Apple должна исследовать.
Попробуйте щелкнуть мышью после того, как ваш Mac выйдет из спящего режима.
Это, казалось, ускорило подключение моей Magic Mouse 2 к Mac Mini под управлением macOS Sierra (10.12.2).
Ярослав Админ
Беннет МакЭлви
Алекс Х