Опубликовать статью
Блоги
Tester autopost
0
6

Bluetooth на хакинтоше: что купить и как подключить

На хакинтоше блютуз решается покупкой, а не настройкой: macOS сама выбирает контроллер, и список того, что она берёт, зашит в демон. Разбираю, какие адаптеры работают и чем они отличаются, что ставить к каждому чипу, почему руководства про правку Info.plist мертвы и как за пять минут проверить, что получилось.

Bluetooth на хакинтоше: что купить и как подключить

Машина такая: i5-13600KF на плате Gigabyte Z690 UD DDR4, видеокарта RX 5700 XT, macOS 13.4.1, OpenCore 1.0.7, SMBIOS iMacPro1,1. Встроенного блютуза нет — как и у большинства десктопных сборок. Адаптер придётся покупать отдельно, и вопрос не в цене и не в настройках, а в чипе: одно железо работает сразу, другое не заведётся вообще.

Главное правило: блютуз выбирается чипом

С Monterey работа с блютузом переехала из ядра в пользовательское пространство. Устройство отбирает демон bluetoothd через модуль bm3_usb, и перечень того, что он принимает, вшит прямо в его бинарник.

Это подтверждается замером, а не только разговорами на форумах. Команда ioreg -w0 | grep USBTransport показывает: все транспорты блютуза в системе загружены, и у всех пометка !matched. Причина видна по их персоналиям: CSRBluetoothHostControllerUSBTransport, BroadcomBluetoothHostControllerUSBTransport и IOBluetoothHostControllerUSBTransport — у каждого провайдер IOResources.

Провайдер IOResources вместо IOUSBHostDevice значит, что с USB-устройствами эти транспорты не сопоставляются вообще, какие бы идентификаторы вы туда ни вписали. Если прочесать все кексты в /System/Library/Extensions, под блютузом найдётся ровно две персоналии с USB-провайдером, и обе лежат в IOBluetoothFamily: «Bluetooth Entitlement» с idVendor: 1452 (это Apple) и конкретный хаб из Mac Pro 6,1.

Отсюда два вывода, которые берегут вечер:

  • Руководства в духе «откройте IOBluetoothFamily.kext/…/Info.plist и впишите свои VID и PID» мертвы дважды. Отбор устройства делает демон, а системный том с Big Sur запечатан, править там нечего. Именно поэтому и появился BlueToolFixup, который работает с памятью, а не с файлами.
  • Неподходящий чип не настраивается. Он либо в списке демона, либо нет. Середины не бывает, и карта портов её не создаст.

Что купить

Рабочих вариантов четыре. Сразу скажу, откуда данные: своими руками ни один из них я пока не проверил, замена ещё едет, поэтому у каждого варианта помечен источник.

  • USB-донгл ASUS USB-BT400 и клоны. Чип Broadcom BCM20702A0. Ставить к нему BlueToolFixup, BrcmPatchRAM3 и BrcmFirmwareData. Bluetooth 4.0, самый массовый рабочий вариант у хакинтошников.
  • USB-донгл Laird BT851 (04b4:f901). Чип Cypress CYW20704. Нужен только BlueToolFixup, прошивка зашита в донгл. Источник — отчёт на tonymacx86, август 2022, macOS 12.5: трекпад, AirPods и Handoff работают, AirDrop у автора не поднялся.
  • Карта M.2 Intel AX200 / AX210 через переходник. Чип Intel. Ставятся IntelBluetoothFirmware и IntelBTPatcher, а Wi-Fi закрывает AirportItlwm. Источник — проект OpenIntelWireless, сам не проверял.
  • Карта BCM94360CD на переходнике PCIe. Чип Broadcom. Ставить почти ничего не нужно, видится родной. С ней работают Continuity и AirDrop, но стоит заметно дороже.

Как выбирать между ними:

Подпишитесь на рассылку журнала!
Отвечайте на запросы журналистов на Pressfeed и получайте публикации в СМИ! В первом письме промокод на 3 дня безлимитных ответов

Нужны только наушники, клавиатура и мышь — берите донгл на BCM20702A0. Это самый дешёвый путь, который точно заканчивается работающим блютузом, и половина сборок живёт именно на нём.

Нужны Handoff, AirDrop, разблокировка часами — только карта Broadcom с родными идентификаторами. Донгл такого не даст никогда: Continuity опирается на связку Wi-Fi и блютуза с одной поддерживаемой карты, так что отдельный блютуз проблему не решает. Это по руководству Dortania, своего замера у меня нет.

Чтобы получить бесплатное упоминание в СМИ, отвечайте на запросы по вашей теме. Полный список смотрите на Pressfeed
Показать еще

В сборке нет и Wi-Fi — AX210 закрывает обе задачи одной картой, ценой Continuity. Мне интереснее как раз этот вариант: в EFI уже лежит выключенный AirportItlwm.

Чего не брать: самые дешёвые донглы на CSR, 0a12:0001. macOS 13 отбраковывает их на этапе отбора устройства — проверено на этой машине. Демон находит донгл и читает идентификаторы, а следующей же строкой заявляет, что получить их не может. В журнале это выглядит так: [bm3_usb][GetProductAndVendorID] — Found USB Device : с idVendor = 0x0A12 idProduct = 0x0001 deviceClass = 0xE0, затем [bm3_usb][IOThreadFunc] — USB — Can’t obtain vendorID and productID — try again.

Дальше цикл, Transport layer initialization failed и десятки перезапусков демона подряд. Ни кексты, ни карта портов, ни снятие с устройства чужих процессов отказ не двигают — он слово в слово тот же. Опознать такой донгл можно ещё в отзывах с фотографиями: у устройства, заявленного как Bluetooth 4.0, в свойствах стоит строка продукта BT2.0.

Три условия рабочего блютуза

Правильный чип — только первое из трёх. Остальные два делаются руками, и без них не заведётся даже верное железо.

Кекст BlueToolFixup обязателен всем на macOS 12 и новее. Лежит в релизах BrcmPatchRAM, кладётся в EFI/OC/Kexts и прописывается в config.plist последней записью, после Lilu, с MinKernel 21.0.0. Без него сторонние контроллеры игнорируются молча — ни ошибки, ни строки в журнале.

Прошивочные кексты по чипу. Броадкомам, которым прошивка заливается при каждом старте, нужны BrcmPatchRAM3 и BrcmFirmwareData. Интелам — IntelBluetoothFirmware и IntelBTPatcher. Cypress и родным картам Broadcom дополнительно не нужно ничего.

Порт, помеченный внутренним. Контроллер блютуза macOS берёт только с порта, у которого в карте портов стоит UsbConnector = 255. В моём UTBMap.kext это правится одним значением: у порта HS04, куда воткнут адаптер, 3 меняется на 255. Подействовало сразу — у устройства появилось Built-In: Yes, транспорт в профайлере сменился с UART на USB. И втыкать стоит в USB 2.0: блютуз-адаптеры — устройства Full Speed, скорость им не нужна, а перечисление на 2.0 ровнее.

После правок — ocvalidate на конфиг и перезагрузка.

Как проверить за пять минут

Три команды отвечают на вопрос «почему не работает» почти всегда. Вот их вывод на моей машине прямо сейчас — блютуз-железа в ней нет, и видно это по второму кадру.

kextstat: BlueToolFixup 2.7.2 и Lilu 1.7.2 загружены

system_profiler: Address NULL, State Off, чипсет BCM_4350C2 из SMBIOS

ioreg: четыре транспорта блютуза, все с пометкой !matched

Первая команда — жив ли кекст. kextstat | grep -iE «lilu|bluetool»: если BlueToolFixup в списке нет, дальше идти незачем, дело в конфиге, а не в железе.

Вторая — состояние контроллера, system_profiler SPBluetoothDataType. Смотреть надо на две строки. Работает — настоящий Address и State: On. Не работает — Address: NULL и State: Off.

А вот строка, которая обманывает многих: Chipset: BCM_4350C2. Она показывается даже тогда, когда никакого блютуз-железа в машине нет вовсе — как на кадре выше. Это чип настоящего iMac Pro, зашитый в bluetoothd, который смотрит на SMBIOS; ACPI-устройства за ней нет. Не радуйтесь ей и не подбирайте под неё кексты.

Третья — транспорты в ioreg. Пока у нужного стоит !matched, контроллер не взят. Обратите внимание: транспортов там четыре, и загружены они всегда — само их присутствие ничего не обещает.

Подробности всегда в журнале демона. В zsh log — встроенная команда, звать надо по полному пути: /usr/bin/log show —last 5m —predicate ‘process == «bluetoothd»‘ —style compact. Строка Found USB Device там означает, что до отбора дело дошло; Transport layer initialization failed — что чип не взяли.

Чем закончилось у меня

Честно: блютуза в машине пока нет — кадры выше это и показывают. Донгл, купленный наугад на маркетплейсе, оказался тем самым CSR и поехал в мусор, карта AX210 ещё едет. Приедет — допишу, что из этого вышло.

Если у вас на Ventura или Sonoma работает USB-донгл, напишите в комментариях, какой именно — интересны чип и идентификаторы. Посмотреть их можно командой system_profiler SPUSBDataType | grep -A 6 -i bluetooth.

Соберу из ответов список проверенного железа и вынесу в конец статьи. Примерно этого списка мне и не хватало в начале.

Читайте также
ИИ для создания визиток: ТОП-10 нейросетей для визитных карточекСмс от налоговой приходит владельцу, даже если бухгалтер в штатеСледующая вакансия не снимает владельца с вечерней сменыДана Малкина Вайлдкард отзывы
0
Техно Заметки
Пишу о маркетинге и коммуникациях: как бренды становятся заметными в поиске...

Комментарии

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Зарегистрируйтесь на Pressfeed прямо сейчас в три клика!
И получите первую публикацию в СМИ уже через неделю!
И получите доступ к 120 000 экспертов
Реклама: ООО "ПРЕССФИД", ИНН 9715219654, ОГРН: 1157746902961, erid: jN8KJ5YQ
Скачайте приложение Pressfeed, чтобы отвечать на запросы СМИ быстрее других!
Реклама: ООО "ПРЕССФИД", ИНН 9715219654, ОГРН: 1157746902961
Войти
Регистрация
Восстановить пароль
Укажите адрес электронной почты. Обратите внимание: письмо с новым паролем может попасть в папку «Спам»
Pressfeed
Платформа для работы с медиа
Бесплатные публикации в СМИ
Узнайте, в каких СМИ вы можете опубликоваться прямо сейчас
Пройдите тест и узнайте, какие медиа в данный момент находятся в поиске материалов для публикаций и соответствуют вашей тематике
Добавьте ваши данные
1/2
Подпишитесь на нашу рассылку и получите 3 дня бесплатного доступа к PRO-аккаунту Pressfeed
Будем присылать самые актуальные материалы, полезные советы и эксклюзивные кейсы