Решение для мобильной графики Intel GMA 950 / GMA 945 (0x27AE8086): нативное разрешение и ускорение CI/QE/OpenGL в 10.6
Патч фреймбуфера и загрузчика Chameleon (ветка Andy Vandijck / Prasys) для активации нативного разрешения экрана и полного аппаратного ускорения Core Image, Quartz Extreme и OpenGL на мобильных чипсетах Intel GMA 950 (Device ID 0x27AE8086 и 0x27A28086) в Mac OS X Snow Leopard 10.6.2 и 10.6.3.
- Основной автор
-
@andyvand
Опубликовано 2010-02-12
- Раздел архива
- Ядро OSx86 10.X и архитектура загрузки
- Охват в архиве
- 407,228 просмотров · 39 отобранных заметок (из 41 исходных сообщений) · 2010-02-12 – 2011-09-24
- Участники обсуждения (13)
- @andyvand (12)@scififan68 (6)@krrr (4)@y333 (4)@chitchit (4)@Imkantus (2)@kocoman (2)@Ianxxx (2)@stha@lotech@aceruser12@plotino@bobert
- Справочник оборудования
- USB 3.2 Boot Flash Drives ↗ 4K DisplayPort & HDMI Monitors ↗ SATA III & NVMe SSDs ↗
Я плотно поработал совместно с командой разработчиков Chameleon, чтобы сделать это возможным.
Огромная благодарность Prasys за реализацию поддержки GMA в механизме автоинжекта GraphicsEnabler.
Мне удалось разработать решение, активирующее полноценное аппаратное ускорение CI/QE/OpenGL на мобильном графическом ядре Intel GMA (0x27AE8086), которым я сейчас пользуюсь...
Заодно я исправил ряд предупреждений компилятора в коде модуля GMA GraphicsEnabler.
Эта версия патча предназначена для Mac OS X Snow Leopard 10.6.2.
Скачать пакет для 10.6.2:
rapid share.com/files/349732013/GMA_0x27AE8086_Snow_Leopard_Fix.zip
Исходные коды модифицированного загрузчика:
Доступны в репозитории Chameleon Forge (в ветке branches/andyvand).
Пользуйтесь на здоровье!
Обновлённый фикс для Mac OS X 10.6.3 (включает также поддержку идентификатора 0x27A2 для тех, у кого возникли проблемы после обновления до 10.6.3):
rapid share.com/files/378494223/GMA950_27A2___27AE_fixed_10.6.3.zip
Подтверждение работоспособности (скриншоты):
Полевые заметки и отчёты сообщества
Отобрано 39 технических ответов из 41 исходных сообщений темы
Позволяет ли это просто заменить строку EFI для GMA950 на параметр GraphicsEnabler, или же благодаря этому видеокарта может работать вообще без бинарного патчинга расширений ядра AppleIntelGMA950 и AppleIntegratedFramebuffer?
Пытался установить этот пакет на свой нетбук Dell Mini 10v, но установка загрузчика завершилась ошибкой.
@ImkantusПозволяет ли это просто заменить строку EFI для GMA950 на параметр GraphicsEnabler, или же благодаря этому видеокарта может работать вообще без бинарного патчинга расширений ядра AppleIntelGMA950 и AppleIntegratedFramebuffer?
Сама EFI-инъекция свойств выполняется через GraphicsEnabler.
Однако для чипа Intel GMA945 с идентификатором 0x27AE8086 всё равно потребовалось прописать этот ID в файлы Info.plist обоих приложенных кекстов, а также заменить байты 8680A227 на 8680AE27 внутри их бинарников.
Если установщик загрузчика выдаёт ошибку, распакуй пакет через Pacifist и установи файлы вручную.
А если у тебя уже установлен Chameleon 2 RC4, достаточно просто скопировать файл boot в корень диска /...
Этот метод работает и для карт с идентификатором 0x27A28086.
В этом случае нужно выполнить все те же шаги, но ОСТАВИТЬ ШТАТНЫЕ (непатченные) кексты AppleIntelIntegratedFramebuffer.kext и AppleIntelGMA950.kext.
@andyvandЭтот метод работает и для карт с идентификатором 0x27A28086. В этом случае нужно выполнить все те же шаги, но ОСТАВИТЬ ШТАТНЫЕ (непатченные) кексты AppleIntelIntegratedFramebuffer.kext и AppleIntelGMA950.kext.
А будут ли патченные кексты IntelGMA950 работать из папки /Extra/Extensions, или их обязательно нужно ставить только в /System/Library/Extensions?
Можно ли добавить сюда поддержку 0x2592 (GMA900/915)? Я всё ещё сижу на старом драйвере от Elliott.. Пробовал положить кекст Elliott и патченный AppleIntegratedGMA в папку Extra (даже добавлял 3 зависимости..) — не сработало, пришлось ставить в /S/L/E...
Вторая проблема возникла с mach_kernel: положил патченное ядро в /Extra, но оттуда оно тоже не подхватилось..
@kocomanМожно ли добавить сюда поддержку 0x2592 (GMA900/915)? Я всё ещё сижу на старом драйвере от Elliott.. Пробовал положить кекст Elliott и патченный AppleIntegratedGMA в папку Extra (даже добавлял 3 зависимости..) — не сработало, пришлось ставить в /S/L/E... Вторая проблема с mach_kernel: положил патченное ядро в /Extra, но…
Это вполне возможно, если заменить один из совместимых идентификаторов (посмотри в Info.plist, какие именно там прописаны).
При патчинге самого бинарного файла нужно менять идентификатор с обратным порядком байтов (byte-swapped):
-- Пример --
Запись в Info.plist:
0x27A28086
В бинарном коде выглядит так:
86 80 A2 27
Замени наиболее близкий к твоей карте Device ID на свой собственный...
Только что проверил:
0x25828086 в Info.plist нужно заменить на
0x25928086
в обоих файлах plist
А для обоих бинарников воспользуйся шестнадцатеричным редактором 0xED и замени (в hex-режиме):
86 80 82 25
на
86 80 92 25
Сами бинарные файлы всегда лежат внутри кекста в подпапке Contents/MacOS (на случай, если ты не знал).
Установи оба модифицированных кекста в /S/L/E взамен штатных.
Выполни остальные шаги из руководства, а если инсталлятор загрузчика выдаст ошибку — поставь обычный Chameleon 2 RC4 и замени файл boot на прикреплённый...
Надеюсь, это поможет...
Новая версия: теперь загрузчик также распознаёт внешний (второй) дисплей и автоматически применяет нужные патчи (информация корректно отображается в «Сведениях о системе»).
Кроме того, исправлена поддержка разрешений экрана для чипов 0x27AE8086 и 0x27A68086 благодаря снятому мной дампу VBIOS ROM и доработкам в коде...
Для снятия дампа видеобиоса Intel используйте связку RadeonPCI.kext и команду RadeonDump -d (она отлично снимает сам дамп VBIOS, хотя чтение регистров на Intel не работает...).
Пожалуйста, присылайте дампы VBIOS от других модификаций GMA — это поможет мне добавить поддержку новых карт (по аналогии с GMA950 / GMAX3100)
и здорово выручит всю команду разработчиков Chameleon.
@andyvandНовая версия: теперь загрузчик также распознаёт внешний (второй) дисплей и автоматически применяет нужные патчи (информация корректно отображается в «Сведениях о системе»). Кроме того, исправлена поддержка разрешений экрана для чипов 0x27AE8086 и 0x27A68086 благодаря снятому мной дампу VBIOS ROM и доработкам в коде...
Огромное спасибо, Andy! Отлично работает на моём Dell Mini 10v.
Я соберу версию под 10.6.3, как только мне вернут мой ноутбук... :-|
Хммм, похоже, твой старый фикс и так работает у меня на 10.6.3.
Доступна новая версия под 10.6.3 для следующих двух ревизий видеочипа:
0x27AE
0x27A2
Для свежей установки обязательно скачайте также первый архив с загрузчиком.
@scififan68Хммм, похоже, твой старый фикс и так работает у меня на 10.6.3.
Да, но там используются кексты от предыдущей версии ОС.
В новой сборке под 10.6.3 исправлен ряд проблем с OpenGL...
Поможет ли это решение с проблемой сна? Моя GMA950 без проблем заводится со штатными кекстами через правку DSDT, но я всё никак не могу заставить работать режим сна.
Без понятия, так как на моей собственной машине режим сна тоже пока не работает...
А у тебя лежит кекст SleepEnabler.kext в папке /Extra/Extensions?
Да, SleepEnabler.kext установлен, и ноутбук нормально уходит в сон, но при попытке пробуждения он просто перезагружается с нуля и не может восстановить состояние из образа sleepimage...
@Andy
Возможно, у тебя не загружается кекст AppleLPC, и/или отладочная версия IOUSBFamily сыплет ошибками контроллера UHCI в выводе dmesg?
По моему опыту, именно эти две причины чаще всего мешают нормальному пробуждению из режима сна на подобных конфигурациях...
@Imkantus@Andy Возможно, у тебя не загружается кекст AppleLPC, и/или отладочная версия IOUSBFamily сыплет ошибками контроллера UHCI в выводе dmesg? По моему опыту, именно эти две причины чаще всего мешают нормальному пробуждению из режима сна на подобных конфигурациях...
Ах да, ты совершенно прав! Помню, у меня тоже были проблемы со сном из-за контроллеров UHCI. Чтобы исправить это, добавьте строки:
<key>UHCIreset</key>
<string>Yes</string>
в свой файл com.apple.Boot.plist
@andyvandЭто вполне возможно, если заменить один из совместимых идентификаторов (посмотри в Info.plist, какие именно там прописаны). При патчинге самого бинарного файла нужно менять идентификатор с обратным порядком байтов (byte-swapped): -- Пример -- Запись в Info.plist: 0x27A28086 В бинарном коде выглядит так: 86 80 A2 27…
Привет знатокам!
Я полный новичок в OSx86, но мне удалось установить и запустить сборку Hazard OS X 10.6.2 на своём ноутбуке Lenovo R60.
Единственное, что пока не завелось — встроенная видеокарта GMA945.
Установщик .pkg выдал ошибку, поэтому я вручную заменил файл boot в корне диска /.. и установил два кекста из первого поста темы. Также прописал "GraphicsEnabler" в файле com.apple.Boot.plist. Увы, безуспешно. В итоге я махнул на это рукой: экран работает, но только в разрешении 1024x768, и стандартный DVD-плеер не запускается.
Но теперь перед появлением графического меню Chameleon на экран каждый раз вываливается предзагрузочный текстовый список PCI UUID с требованием нажать любую клавишу ("Press any key to continue").
Как избавиться от этого списка и паузы "Press any key to continue" при включении?
Флага "-v" в моём com.apple.Boot.plist нет.
Насколько я понимаю, этот список PCI-устройств выводится ещё до чтения файла com.apple.Boot.plist — верно?
К сожалению, я не сохранил резервную копию своего старого файла boot из корня диска, поэтому не могу просто вернуть всё как было.
Очень надеюсь на вашу помощь.
Извините за «чайниковский» вопрос, но я готов учиться!
Stha
Примечание 1: параметр GraphicsEnabler=Yes должен быть прописан отдельно, а не внутри строки Kernel Flags.
Примечание 2: скачай обновлённый файл boot rel3 (из одноимённой темы на InsanelyMac).
Ух ты, спасибо огромное — наконец-то нашёл способ завести графику на своём нетбуке Sony Vaio W в 10.6.2! Перепробовал кучу разных вариантов, и только этот дал реальный результат.
Осталась одна серьёзная проблема: если я выполняю все шаги, кроме замены загрузчика, изображение выводится только на внешний VGA-монитор, а встроенный экран нетбука гаснет; когда же я ставлю новый загрузчик (пробовал и из первого поста, и более свежий из комментариев), нетбук сразу уходит в сон в момент инициализации графики — а после пробуждения картинка, судя по всему, всё равно идёт только на внешний VGA.
Подскажете, куда копать?
Привет, Andy!
У меня на нетбуке MSI Wind U100 (графика 27AE 8086) установлена сборка iATKOS S3 (версия ОС 10.6.3, ядро 10.3.0). Подскажи, пожалуйста, как правильно установить твои кексты, чтобы получить родное разрешение экрана? Очень нужна помощь: за последние два дня я переустанавливал систему уже раз двадцать и скоро сойду с ума.
Вот вывод из моего Терминала — что я делаю не так?
==================
netbooks-MacBook:GMA950 0x27AE 10.6.3 fixed netbook$ pwd
/Users/netbook/Downloads/GMA950_27A2___27AE_fixed_10/GMA950 0x27AE 10.6.3 fixed
netbooks-MacBook:GMA950 0x27AE 10.6.3 fixed netbook$ uname -a
Darwin netbooks-MacBook.local 10.3.0 Darwin Kernel Version 10.3.0: Fri Feb 26 11:58:09 PST 2010; root:xnu-1504.3.12~1/RELEASE_I386 i386
netbooks-MacBook:GMA950 0x27AE 10.6.3 fixed netbook$ sudo kextload -t AppleIntelGMA950.kext/
WARNING: Improper use of the sudo command could lead to data loss
or the deletion of important system files. Please double-check your
typing when using sudo. Type "man sudo" for more information.
To proceed, enter your password, or type Ctrl-C to abort.
Password:
Notice: -print-diagnostics (-t) ignored; use kextutil(8) to test kexts.
/Users/netbook/Downloads/GMA950_27A2___27AE_fixed_10/GMA950 0x27AE 10.6.3 fixed/AppleIntelGMA950.kext failed to load - (libkern/kext) authentication failure (file ownership/permissions); check the system/kernel logs for errors or try kextutil(8).
netbooks-MacBook:GMA950 0x27AE 10.6.3 fixed netbook$ sudo kextload -t AppleIntelIntegratedFramebuffer.kext/
Notice: -print-diagnostics (-t) ignored; use kextutil(8) to test kexts.
/Users/netbook/Downloads/GMA950_27A2___27AE_fixed_10/GMA950 0x27AE 10.6.3 fixed/AppleIntelIntegratedFramebuffer.kext failed to load - (libkern/kext) authentication failure (file ownership/permissions); check the system/kernel logs for errors or try kextutil(8).
netbooks-MacBook:GMA950 0x27AE 10.6.3 fixed netbook$ sudo cp -rf AppleIntel* /Extra/Extensions/
Password:
netbooks-MacBook:GMA950 0x27AE 10.6.3 fixed netbook$ cd /Extra/Extensions
netbooks-MacBook:Extensions netbook$ sudo chmod -R 755 AppleIntelGMA950.kext/
netbooks-MacBook:Extensions netbook$ sudo chmod -R 755 AppleIntelIntegratedFramebuffer.kext/
netbooks-MacBook:Extensions netbook$ sudo chown -R root:wheel AppleIntelGMA950.kext/
netbooks-MacBook:Extensions netbook$ sudo chown -R root:wheel AppleIntelIntegratedFramebuffer.kext/
netbooks-MacBook:Extensions netbook$ sudo kextload -t AppleIntelGMA950.kext/
Notice: -print-diagnostics (-t) ignored; use kextutil(8) to test kexts.
netbooks-MacBook:Extensions netbook$ sudo kextload -t AppleIntelIntegratedFramebuffer.kext/
Notice: -print-diagnostics (-t) ignored; use kextutil(8) to test kexts.
netbooks-MacBook:Extensions netbook$ pwd
/Extra/Extensions
netbooks-MacBook:Extensions netbook$
==================
Ухожу на перезагрузку.
UPD: Только что перезагрузился — ВПЕРВЫЕ БЕЗ ПАНИКИ ЯДРА, УРААА! (извините за эмоции, просто безумно рад, что система не зависла при загрузке).
Но разрешение экрана не изменилось. Файла com.apple.Boot.plist у меня почему-то нет, а установщик Chameleon R69, который я скачал по твоей ссылке из рассылки Chameleon, выдал ошибку при установке. Как быть дальше?
UPD спустя 24 часа:
После очередной переустановки я наткнулся на утилиту NetbookInstaller ↗. Она работала около 20 минут поверх чистой установки iATKOS S3 на моём MSI U100, раза три запросила пароль, а после перезагрузки — вуаля! — появился рабочий стол в высоком разрешении, но пропорции какие-то странные (см. прикреплённые скриншоты).
Andy, как мне теперь правильно накатить твои файлы поверх этого? Нужно ли также заменить файл boot на тот, что ты прикладывал в комментариях? Очень жду твоего ответа.
(На скриншотах видна информация о видеокарте GMA 950 27AE и содержимое корневого каталога /).
Я обновил свой предыдущий пост после частичного успеха — посмотри, пожалуйста.
А у вас нет проблем с режимом видеоповтора (Mirror Mode) при подключении внешнего монитора?
У меня оба экрана покрываются ужасными вертикальными полосами...
Andyvand> Как именно ты создаёшь и патчишь эти расширения ядра? Я бы очень хотел помочь сообществу, но нигде не нашёл толкового руководства по дизассемблированию и правке бинарников кекстов.
Я подключал внешний ЖК-монитор только в режиме расширенного рабочего стола (когда окно можно перетащить с первого экрана на второй) — в таком режиме никаких проблем нет. Или ты имеешь в виду именно дублирование экранов (Mirror Mode)?
krrr> Да, у тебя включён режим расширенного рабочего стола (Extended Mode), когда второй монитор служит продолжением первого. А я спрашивал именно про режим видеоповтора (Mirror Mode), когда на обоих экранах дублируется одна и та же картинка — он включается галочкой «Синхронизировать видео» (Mirror Displays) на средней вкладке настроек «Мониторы» при подключённом втором экране.
Но будь осторожен: если при включении этой галочки экраны пойдут полосами, как у меня, то после отключения кабеля внешнего монитора встроенный экран снова заработает нормально, однако при любом повторном подключении монитора ты снова увидишь эти «прекрасные» артефакты. Чтобы принудительно выключить режим видеоповтора из командной строки, можно воспользоваться консольной утилитой fabia ncanas.com/Projects/MirrorDisplays/ (либо удалить конфигурационные файлы настроек мониторов) — после этого снова заработает режим расширенного рабочего стола.
Andyvand> Не мог бы ты взглянуть на дамп моего видеобиоса (27A2.5D00.0003.vga.rom)?
media fire.com/file/gvodjemzzl3/27A2.5D00.0003.vga.rom
@y333, да, подтверждаю: режим дублирования экранов (mirroring) не работает — пошли вертикальные полосы! Я уж испугался, что придётся переустанавливать систему, потому что утилита по твоей ссылке не сработала.
К счастью, я нашёл другую консольную программку на eru via.org/software/osxmirroring/, и вот она успешно переключила режим обратно из Терминала. Фух, пронесло!
krrr> Вот способ сбросить настройки экранов прямо из командной строки без сторонних утилит:
rm -f /Library/Preferences/com.apple.window*
rm -f /Users/"ИМЯ_ПОЛЬЗОВАТЕЛЯ"/Library/Preferences/ByHost/com.apple.window*
rm -f /Users/"ИМЯ_ПОЛЬЗОВАТЕЛЯ"/Library/Preferences/ByHost/com.apple.pref*
(Разумеется, подставив своё имя пользователя вместо "ИМЯ_ПОЛЬЗОВАТЕЛЯ"...)
krrr> Спасибо за проверку!
А можно ли как-нибудь задействовать два экрана одновременно — то есть встроенную матрицу ноутбука плюс внешний монитор по VGA?
Привет, Andy! Как я уже писал тебе на InsanelyMac, я проделал следующую модификацию:
заменил все вхождения 86 80 72 27 на 86 80 AE 27 под свой чип 27AE, но режим дублирования экранов (mirror) всё равно не работает. Есть какое-нибудь решение? Спасибо!
UPD: пробовал поочерёдно менять в бинарнике все идентификаторы — сначала 86 80 72 27 на 86 80 AE 27, затем 86 80 82 25 на 86 80 AE 27, потом 86 80 92 25 на 86 80 AE 27, но видеоповтор так и не заработал. Ты уверен, что патч заключается только в замене Device ID?
Существует ли вообще способ починить дублирование экранов?
Скажите, а можно ли применить этот метод для видеокарты GMA 900 на моём ноутбуке? Её идентификатор — 0x2592. Я прочитал твоё объяснение выше про замену байтов, но немного запутался. Можешь помочь?
У меня всё заработало! Похоже, поддержка моей карты уже была встроена. Вот только цветопередача совершенно искажена. Что делать?
А, отставить — это было из-за эмулятора инструкций sse3emu.
У меня ноутбук Dell Latitude D620 с графикой Intel GMA 945. Никак не могу взять в толк, как именно включить родное разрешение для чипа 0x27AE8086 и завести аппаратное ускорение CI/QE/OpenGL. Где можно прочитать пошаговую инструкцию для начинающих? Я совсем не эксперт, это моя первая установка Mac OS на ПК.
Крис (Chris)
Если я пытаюсь применить этот метод для видеокарты GMA900 с идентификатором [8086:2592],
что именно мне нужно сделать? Пропатчить кекст GMA900 и добавить старый AppleIntelIntegratedFramebuffer.kext? Или как?
@bkribbsЕсли я пытаюсь применить этот метод для видеокарты GMA900 с идентификатором [8086:2592], что именно мне нужно сделать? Пропатчить кекст GMA900 и добавить старый AppleIntelIntegratedFramebuffer.kext? Или как?
Да, возьми один из идентификаторов серии 0x25XX внутри кекста для замены.
Не забудь, что в самом бинарном файле байты записаны в обратном порядке (например, 25928086 превращается в 86809225).
Найди в Info.plist близкий ID карты и замени его в бинарнике на свой перевёрнутый ID, как я показал выше.
И, разумеется, не забудь прописать свой ID в самом файле Info.plist.
Эту процедуру нужно проделать для обоих кекстов (и затем установить их в систему).
@andyvandДа, возьми один из идентификаторов серии 0x25XX внутри кекста для замены. Не забудь, что в самом бинарном файле байты записаны в обратном порядке (например, 25928086 превращается в 86809225). Найди в Info.plist близкий ID карты и замени его в бинарнике на свой перевёрнутый ID, как я показал выше. И, разумеется, не забудь…
Но, судя по всему, этот идентификатор уже прописан внутри кекста изначально — по крайней мере, я вижу свой Device ID в списке.
Нет ни QE, ни CI, ни OpenGL
Привет! Я новичок в этом деле, раньше уже пробовал разные варианты, но добился лишь скромных успехов lol... Сейчас у меня стоит 10.6.8: смена разрешений работает, но аппаратного ускорения QE/CI/OpenGL нет, причём картинка выводится только на внешний монитор, так как встроенный экран нетбука пока не заводится.
У меня нетбук Toshiba NB100, идентификатор видеоядра — 27AE.
Итого:
10.6.8
0x27AE
Нетбук Toshiba NB100
Может ли кто-нибудь мне помочь? Я не слишком силён в командной строке (Терминале), но если есть понятная пошаговая инструкция — выполню её от и до, буква в букву...
Вот архив с кекстами, которые я сейчас использую:
osx 86.co/attachment.php?attachmentid=1618&stc=1&d=1316877241
Источники и реестр соавторов (указано участников: 13 · Тема #5512)
| Участник | Роль в досье | Сообщений | Период активности |
|---|---|---|---|
| @andyvand | Основной автор | 12 | 2010-02-12 → 2011-07-28 |
| @scififan68 | Ключевой участник | 6 | 2010-02-13 → 2010-04-26 |
| @krrr | Ключевой участник | 4 | 2010-06-23 → 2010-06-27 |
| @y333 | Ключевой участник | 4 | 2010-06-26 → 2010-06-27 |
| @chitchit | Ключевой участник | 4 | 2011-01-13 → 2011-07-30 |
| @Imkantus | Участник | 2 | 2010-02-13 → 2010-04-25 |
| @kocoman | Участник | 2 | 2010-02-15 → 2010-06-29 |
| @Ianxxx | Участник | 2 | 2010-04-24 → 2010-04-25 |
| @stha | Участник | 1 | 2010-06-01 |
| @lotech | Участник | 1 | 2010-06-10 |
| @aceruser12 | Участник | 1 | 2010-09-01 |
| @plotino | Участник | 1 | 2011-02-01 |
| @bobert | Участник | 1 | 2011-09-24 |