Как с помощью hackintool пропатчить usb ports
Несмотря на то, что Windows 10 сейчас фактически стала стандартом для современных компьютеров и ноутбуков, Windows 7 не спешит окончательно уходить на покой. Зачастую такой выбор обусловлен специфическим софтом, который не работает на десятке или работает как-то криво, а не какими то религиозными соображениями.
Формально, порты USB 2.0 ещё встречаются на современном железе, но управляются чаще контроллерами версии 3.0, а это значит что без интеграции драйверов в дистрибутив Windows 7 уже не обойтись, ведь семёрка ничего не знает о USB-контроллерах третьего поколения.
Существует несколько специализированных утилит для интеграции драйверов USB 3.0 в установщик Windows 7 от Intel, ASRock, MSI и Gigabyte:
Конечно, можно ещё интегрировать драйвера USB 3.0 вручную, при помощи утилиты DISM или использовать популярную программу для кастомизации дистрибутивов nLite, но зачем усложнять, если всё за вас уже сделали. Если будет интересно, могу рассказать (напишите в комментариях), но полагаю что и этих вариантов будет достаточно.
Лично мне больше по душе варианты от Intel и gigabyte. Сложного тут ничего нет, главное скачайте с сайта Microsoft оригинальный образ Windows 7 (всякие сборки тут могут не прокатить) и по возможности обзаведитесь быстрой флешкой.
Как сделать установочную флешку Windows 7 с USB 3.0 на примере Windows 7 USB 3.0 Creator Utility
Важно! Windows 7 USB 3.0 Creator Utility от Intel работает только на Windows 8.1 и выше.
Ранее на сайте Intel была даже небольшая инструкция по работе с данной утилитой, скачать можно отсюда . Переписываем образ диска Windows 7 (предварительно скачиваем с сайта Microsoft) на флешку с помощью утилиты Rufus (о ней я уже рассказывал подробнее ).
Далее, запустив Windows 7 USB 3.0 Creator Utility остаётся только указать нашу флешку и ждать. Хочу заметить, что на медленных флешках процесс может затянуться на пару часов. Показателем что всё готово, в случае с Windows 7 USB 3.0 Creator Utility будет надпись «SUCCESS!».
Расписывать процесс интеграции драйверов в других утилитах я особого смысла не вижу, от вас требуются минимальные действия в указании где находятся образ диска и флешка на которую записать результат работы. Теперь можно без труда установить Windows 7 с флешки, подключенной к контроллеру usb3.0. Правда в моём случае все усилия были тщетны.
Copy raw contents
С помощью применения патчей для файла DSDT, мне удалось заставить отображаться индикатор заряда батареи и включить регулировку яркости экрана с помощью клавиш Fn+F2 и Fn+F3.
- Перейдите в GUI меню загрузчика Clover и нажмите F4 или Fn+F4, чтобы сохранились оригинальные ACPI таблицы вашего компьютера
- Загрузитесь в MacOSX, примонтируйте ESP и перейдите в /EFI/CLOVER/ACPI/original и убедитесь, что там есть файлы с расширением .aml и скопируйте папку origianl куда-нибудь
- Скачайте MaciASL
- Создайте новую папку и скопируйте в нее файл DSDT.aml
- Действуя инструкции на osxpc или на tonymacx86 преобразуйте файл DSDT.aml в файл DSDT.dsl
- Откройте файл DSDT.dsl с помощью MaciASL и нажмите кнопку "Скомпилировать" в верху окна программы
- У вас появится маленькое окно внизу которого написано количество ошибок и предупреждений. Если ошибок 0, это замечательно. Если ошибки есть, найдите ее формулировку и гуглите. На предупреждения можно не обращать внимание
У меня не работала регулировка яркости с помощью клавиш Fn+F2 и Fn+F3 (да, я в BIOS/UEFI включил клавишу Fn, чтобы функциональные клавиши включались только вместе с Fn, а обычные клавиши F1-F12 работали без Fn), хотя в Системных настройках в пункте "Монитор" яркость регулировалось, но каждый раз заходить туда было бы глупо.
Я узнал, что настроить регулировку яркости с помощью F клавиш можно с помощью кекста ApplePS2SmartTouchpad, либо с помощью патчей в DSDT. Я попробовал кекст ApplePS2SmartTouchpad, но мне он не понравился, т.к. по сравнению с VoodooPS2Trackpad он давал мне мало жестов. Я решил пропатчить DSDT, чтобы можно было регулировать яркость F клавишами. С помощью этого гайда, я узнал, что при нажатии клавиш Fn+F2/F3 в DSDT вызываются методы _Q10 и _Q11. Я нашел строчки на которые нужно заменить внутренности этих методов и сделал свой патч:
Чтобы его применить нужно открыть файл DSDT.dsl с помощью MaciASL, вверху нажать кнопку "Патч" и в поле, в котором вы можете набирать текст, нужно вставить этот патч, а потом нажать применить. Скорее всего за регулировку яркости у вас будут отвечать другие методы, а не _Q10 и _Q11, поэтому следуйте гайду от Rehabman, чтобы выяснить названия методов.
Так же патчи от olderst для клавиш регулировки яркости тоже аналогичным образом смогли включить регулировку яркости с помощью Fn+F2/F3
Для начала попробуйте использовать только кекст для батареи без применения патчей для DSDT. Есть несколько кекстов, позволяющих отобразить индикатор заряда батареи. Вряд ли они заработают без применения патчей, но стоит попробовать.
Кексты для отображения заряда батареи:
Так же не забывайте читать инструкцию и/или README файлы с этими кекстами, чтобы знать нюансы их установки и настройки. Кексты FakeSMC и VirtualSMC не совместимы и нужно использовать только 1 из них. При использовании кекста VirtualSMC так же нужно удалить драйвер SMCHelper.efi и на его место переместить драйвер VirtualSMC.efi. Кексты ACPIBatteryManager и VoodooBatterySMC и SMCBatteryManager скорее всего тоже не совместимы между собой. Все кексты нужно помещать в папку /EFI/CLOVER/kexts/Other и, желательно, после этого сбрасывать кэш ядра с помощью запуска программы KextUtility.
Если просто использовании какого-либо из этих кекстов не помогло, то нужно пропатчить файл DSDT для работы индикатора заряд батареи. Можно сделать свой патч по инструкции на форуме tonymacx86 или ее сокращенной версии на форуме olarila. Я пробовал сделать свой патч и вот, что у меня получилось:
Но также для меня хорошо сработал патч батареи для HP Pavilion n012tx. Перед тем как применять патчи сохраните рабочую копию файла DSDT.dsl в каком-нибудь месте. Вы можете его найти и применить патчи для батареи открыв файл DSDT.dsl в MaciASL, нажав кнопку "Патч" и в левой боковой панели пролистав до строчек, которые начинаются с "[bat]". Дальше пробуй применить патчи для примерно ваших ноутбуков. Читайте Начало каждого патча, потому что там вверху в комментариях содержится полезная справочная информация.
У меня индикатор заряда батареи отображается и проценты изменяются при зарядке и разрядке, но часто бывает, что они не меняются и приходится сбрасывать CMOS с помощью зажатия кнопки питания на 15-20 секунд.
Каких-то видимых изменений после манипуляций с "_OSI" я не заметил.
Код ACPI может использовать метод _OSI (реализованный узлом ACPI), чтобы проверить, на какой версии Windows он работает. Большинство реализаций DSDT изменит конфигурацию USB в зависимости от версии Windows, которая работает.
При запуске OS X ни одна из проверок, которые DSDT может выполнять для _OSI (”Windows <version>“), не вернет true, потому что она отвечает только на”Darwin". Это является причиной для семейства исправлений DSDT "OS Check Fix". Исправляя DSDT для имитации определенной версии Windows при запуске Darwin, мы можем получить поведение, которое обычно происходит при запуске этой конкретной версии Windows.
Rehabman уже сделал ACPI файл с разными вариантами проверок, но я немного дополнил его, потому что сейчас уже есть Windows 10 1903. Я не знаю какая это версия, поэтому в SSDT написал "Windows 2019". Чтобы этот SSDT файл работал корректно, нужно все методы "_OSI" переименовать в "XOSI" и проще всего это сделать соответствующим патчем в файле config.
Вот так выглядит патч для конфига, он так же есть в программе Clover Configurator:
Так же, на всякий случай я подредактировал DSDT в том блоке кода, где происходит проверка условий на то какая это версия Windows и первой строкой, перед началом сравнений, я выставил то, что возвращается, если это "Windows 2015".
Есть другой способ, более просто - сгенерировать нужные файлы с помощью программы Hackintool.
Открываете Hackintool, вкладку "USB". Берет флешку, которая поддерживает USB 3.0 и поочередно подключаете во все USB порты и спотрите, какие строчки в программе подсвечиваются зеленым. Потом берет флешку, которая поддерживает только USB 2.0 и тоже поочередно подключаете во все USB порты.
Потом все порты, которые ни разе не были подсечены зеленым выделяете и удаляете. (Поочередно выделяете и нажимаете на кнопку с иконкой круга с минусом). Потом нажимаете кнопку Export (она так же внизу окна). Потом в ходе появившихся диалоговых окон соглашаетесь с ними и выбираете ваш config файл, в него пропишутся некоторые патчи (можно и не выбирать config файл, а указать любую папку, тогда создаться конфиг файл исключительно с некоторыми патчами и вы сможете вручную их скопировать). На рабочем столе появятся .aml файлы и kext USBPorts. Эти файлы помещаете в /CLOVER/ACPI/patched и в /CLOVER/kexts/Other соответственно. Добавляете кекст USBInjectAll (хотя я точно не знаю нужен ли он для работы этих "патчей") и перезагружаетесь.
После проделанных манипуляций и нескольких дней использования хакинтоша с этими кекстами и SSDT файлами для USB, я не заметил какой-то видимой разницы того, как работал хакинтош до их применения, но я не стал их удалять.
-
UEFI bios:
- Скидываем все настройки в default.
- AHCI - enable;
- Vt-d: Disable (+ в Clover дропнуть DMAR таблицу)
- Vt-x: Enable (только для 10.13 и если используете виртуальные машины)
- Intel Virtualization Technology - Enable
- Serial-port: Disable
- XHCI Hand-off: Disable (рекомендуеться)
- XHCI Hand-off: Enabled (только если что то не работает в режиме Disable )
- IOAPIC 24-119 Entries: Enabled (подмечено что у многих с этим пунктом паникует, поэтому тестируйте)
- CSM: Disable (по возможности)
- Fasboot: Disable
- Secure boot: Disable or Other OS
Установить один из загрузчиков на диск (если он не входит в состав сборки) :
- Загрузчик №1 - Clover (рекомендуется для большинства пользователей);
Как это сделать: UEFI, Legacy BIOS.
- Загрузчик №2 - OpenCore (для опытных пользователей)
- Загрузчик №3 - Chameleon (на данный момент существует для очень старых систем и особых случаев);
*загрузчик устанавливаем только один, на ваш выбор
- Устанавливаем кекст для сетевой карты;
- Настраиваем SMbios;
- "Заводим" видео-карту (разрешение должно быть правильным, и верхняя строка прозрачная);
; - Поднимаем звук через AppleALC или VoodooHDA
CloverHackyColor_rus_5114.pdf ( 4.66 МБ )
Clover.of.Hacky.Color_5097_rus.pdf.zip ( 11.78 МБ )
Clover of Hacky Color_5000_rus.pdf ( 11.84 МБ )
Клевер цвета хаки 4871.zip ( 11.6 МБ )
431566_Klever_cveta_xaki_4542.pdf ( 4.33 МБ )
Клевер цвета хаки 4450.pdf ( 4.05 МБ )
Клевер цвета хаки 4415.zip ( 3.68 МБ )
Klever_cveta_xaki_4244.pdf.zip ( 3.72 МБ )
Klever_cveta_xaki_4000.zip ( 3.77 МБ )
Klever_cveta_xaki_3545.zip ( 4.18 МБ )
Актуальный релиз Clover
Настройки, патчи, фиксы вносятся в файл EFI/CLOVER/ сonfig.plist, редактировать этот файл нужно этим.
В macOS порт VGA не работает, подключать монитор нужно к DVI-D/HDMI/DP. Eсть исключения для некоторых моделей. На графике Intel HD порт VGA не работает ни при каких ухищрениях!
При установке macOS наличие ключей -v debug=0x100 keepsyms=1 обязательно!
В настройке USB на хакинтоше мне почудилось какое-то неуловимое сходство с настройкой музыкального инструмента. Потребовалось в процессе и после: программы IORegistryExplorer и maciASL, расширения USBInjectAll.kext и XHCI-200-series-injector.kext, редактор для plist (сойдет TextMate), устройства USB 2.0 и USB 3.0. На выходе получился файл SSDT-USB.aml.
Для начала нужно положить USBInjectAll.kext и XHCI-200-series-injector.kext в папку /EFI/CLOVER/kexts/other. Первый нужен всем и скорее всего уже будет куда-либо установлен проверьте обычные места (/S/L/E /L/E). Второй необходим для материнских плат на чипсетах 200 серии, без него у меня не работал USB3. Далее нужно устранить ограничение на 15 портов, делается правкой /EFI/CLOVER/config.plist.
Ахтунг, никогда не редактируйте plist/xml и т.п. в приложениях типа TextEdit.
После перезагрузки у вас должны работать все имеющиеся USB порты. На этом можно было бы остановиться, но если делать по-уму, то дальше начинается забавная рутина. Суть — оставить только те порты, которые реально существуют на вашей машине и назначить им правильный тип.
Запускаем IORegistryExplorer и ищем HS01, находится он в ветке XHC. Смотрим список соседей. Я не удосужился сделать скриншот «до», но изначально там было 26 устройств типа HSxx SSxx и какие-то USRxx. Для каждого устройства есть набор параметров, из которых нас будет интересовать только port и UsbConnector.
У меня получился такой список:
В списке есть «дыры» — на внутренних коннекторах USB доступны по 2 порта, но у меня на корпус выведены только 1xUSB2 и 1xUSB3, то есть к оставшимся 4 разъемам я подключиться не могу. Можно их просто заполнить по порядку, но большого смысла нет, поскольку в конце рабочих портов все равно останется только 15.
С этой табличкой на руках запускаем maciASL, создаем новый dsl файл и заполняем нашими данными. Значение для UsbConnector такие: 0 для обычного USB2, 3 для USB3 type A, 10 для USB3 type C, 255 для внутреннего разъема для того самого Bluetooth. В итоге должно получиться что-то типа такого.
В port-count нужно вписать цифровое значение port самого последнего порта, у меня это SS08 и порт 0x18.
Полученный файл нужно сохранить в формате ACPI Machine Language Library (asl). Если по ходу компиляции никаких ошибок не будет, то полученный SSDT-USB.aml кладем в /EFI/CLOVER/ACPI/patched и перезагружаемся. Если все прошло нормально, то в XHC должны остаться только описанные порты, все они должны нормально работать.
Опционально — можно довести число портов до 15 и избавиться от патча в config.plist. Сделать это можно при помощи параметра загрузки uia_exclude в том же config.plist. У меня эта строчка выглядит так:
Я исключил порты HS08 и SS08, это внутренний разъем USB3_2, который я не использую — всего осталось 14 штук. В принципе, можно просто выкинуть пару портов из самого asl, наверно, поскольку еще 4 порта я вообще не вписал.
Читайте также: