USB-порты на Hackintosh после установки системы часто работают нестабильно: встроенный Bluetooth отваливается после сна, фронтальные разъёмы корпуса не видят флешки, а USB 3.0-устройства определяются только как USB 2.0. Причина почти всегда одна — система macOS жёстко ограничивает количество USB-портов одного контроллера 15 портами, а типичная материнская плата на чипсете Intel предоставляет их значительно больше, поскольку каждый физический разъём USB 3.x занимает сразу два логических порта (HS и SS).
Процедура USB mapping решает эту проблему: вы вручную составляете карту реально используемых портов, отключаете лишние и указываете для каждого корректный тип. Без этого шага сборка Hackintosh считается незавершённой, даже если «всё вроде бы работает» — проблемы проявятся позже, чаще всего в виде нестабильного сна и отказа Bluetooth-модулей.
Почему macOS требует не более 15 портов
Ограничение в 15 портов зашито в драйвер AppleUSBXHCI на уровне кода операционной системы. Каждый контроллер XHCI может «показать» системе до 26 портов (стандартное значение для многих чипсетов Intel), но macOS инициализирует только первые пятнадцать. Какие именно порты попадут в эту пятнадцатку — определяется порядком перечисления, а не вашими пожеланиями.
На практике это выглядит так: физический разъём USB 3.x на задней панели занимает два логических порта — HS (High Speed, USB 2.0) и SS (SuperSpeed, USB 3.x). Плата с восемью разъёмами USB 3.x и парой USB 2.0 легко превышает лимит. Часть портов просто обрезается, причём часто отрезаются именно внутренние порты, на которых «висят» Bluetooth-модуль или разъёмы передней панели.
⚠️ Внимание: временные обходные пути вроде загрузочного аргумента -uia_exclude_hs или повышения лимита через патчи XhciPortLimit подходят только для этапа установки и диагностики. Оставлять систему в таком состоянии постоянно нельзя — это нарушает стабильность работы USB-стека и ломается при обновлениях macOS.
Инструменты для создания карты портов
Существует несколько рабочих подходов, и выбор зависит от того, на каком этапе находится ваша сборка и какая ОС вам доступна прямо сейчас.
- 🛠️ USBMap (скрипт от CorpNewt) — классический инструмент, работает в терминале macOS, создаёт готовый USBMap.kext. Требует, чтобы система уже загружалась.
- 🪟 USBToolBox — позволяет составить карту портов из Windows до установки macOS, что особенно удобно для новых сборок. Результат — файл UTBMap.kext в связке с USBToolBox.kext.
- 📋 Ручное редактирование SSDT — метод через SSDT-UIAC и USBInjectAll.kext. Более гибкий, но требует понимания ACPI и аккуратности.
- 🔍 Hackintool — утилита для визуального определения портов: показывает, какие из них активны, и позволяет экспортировать конфигурацию.