Skocz do zawartości

haMac.pl używa cookie. Przeczytaj Privacy Policy aby dowiedzieć się więcej. Aby usunąć tę wiadomość, proszę kliknąć w przycisk po prawej:    Akceptuję użycie cookie

Zdjęcie
- - - - -

Kwestia mobilnych Inteli - natywna regulacja jasności dla Sierra 10.12.4 i nowszych

intel podświetlenie jasność regulacja AppleBacklight laptopy

  • Zaloguj się, aby dodać odpowiedź
1 odpowiedź w tym temacie

#1 MKjanek32

MKjanek32
  • Moderators
  • 1942 postów
  • LocationMysłakowice / Wrocław

Napisano 26 czerwiec 2017 - 13:36

Witam wszystkich po przerwie (trochę tego zeszło, prawie cały semestr...) - i od razu zamieszczam krótki poradnik.

Otóż jak może wiecie, w wersji macOS Sierra 10.12.4 przestały działać dwa często stosowane na laptopach ze zintegrowanymi układami graficznymi Intela sposoby "popychania" regulacji podświetlenia ekranu - pierwszy wykorzystujący ACPIBacklight.kext, a drugi IntelBacklight.kext. Za to działa oczywiście w pełni natywna metoda, bazująca na systemowym sterowniku AppleBacklight.kext - tyle, że do jego prawidłowej pracy potrzebna jest odpowiednie skonfigurowanie systemu. I tym właśnie zajmiemy się w tym poradniku.

:arrow: 1. Modyfikacja DSDT

Pierwszą potrzebną rzeczą jest specjalna wersja poprawki PNLF w DSDT. Z klasyczną wersją wprawdzie regulacja też działa, ale w pełnym dostępnym zakresie dopiero po wybudzeniu z uśpienia - wcześniej ekran jest lekko przyciemniony, mimo ustawienia jasności na maksimum.
Otwieramy więc w ulubionym edytorze nasze DSDT i zaczynamy od zmiany nazwy zintegrowanego układu graficznego (i wszystkich odwołań do niego) na IGPU. Sekcja integry znajduje się wewnątrz Device (PCI0) i posiada adres 0x00020000. W zależności od laptopa może się nazywać różnie, najczęściej Device (GFX0) albo Device (VID). Czasami (na przykład na moim ThinkPadzie) urządzenie VID może występować dwa razy: jedno dla zintegrowanej karty, drugie pod portem dla ewentualnej dedykowanej - nawet w modelu z samą zintegrowaną. Wtedy oczywiście wystarczy zmienić nazwę tylko tego pierwszego.

 

Następnie wewnątrz sekcji IGPU (na przykład przed zamykającym nawiasem klamrowym) dodajemy taki fragment kodu:

                OperationRegion (RMPC, PCI_Config, 0x10, 4)
                Field (RMPC, AnyAcc, NoLock, Preserve)
                {
                    BAR1,32,
                }
                
                Device (PNLF)
                {
                    // normal PNLF declares (note some of this probably not necessary)
                    Name (_ADR, Zero)
                    Name (_HID, EisaId ("APP0002"))
                    Name (_CID, "backlight")
                    Name (_UID, 10)
                    Name (_STA, 0x0B)
                    //define hardware register access for brightness
                    // you can see BAR1 value in RW-Everything under Bus00,02 Intel VGA controler PCI
                    // Note: Not sure which one is right here... for now, going with BAR1 masked
                    //OperationRegion (BRIT, SystemMemory, Subtract(^BAR1, 4), 0xe1184)
                    OperationRegion (BRIT, SystemMemory, And(^BAR1, Not(0xF)), 0xe1184)
                    Field (BRIT, AnyAcc, Lock, Preserve)
                    {
                        Offset(0x48250),
                        LEV2, 32,
                        LEVL, 32,
                        Offset(0x70040),
                        P0BL, 32,
                        Offset(0xc8250),
                        LEVW, 32,
                        LEVX, 32,
                        Offset(0xe1180),
                        PCHL, 32,
                    }
                    // _INI deals with differences between native setting and desired
                    Method (_INI, 0, NotSerialized)
                    {
                        Store(ShiftRight(LEVX,16), Local1)
                        if (LNotEqual(0x710, Local1))
                        {
                            Divide(Multiply(LEVL, 0x710), Local1,, Local0)
                            //Store(P0BL, Local1)
                            //While(LEqual (P0BL, Local1)) {}
                            Store(Local0, LEVL)
                            Store(0x7100000, LEVX)
                        }
                    }
                }

:!: UWAGA: jeżeli wcześniej dopisywaliśmy inną wersję poprawki PNLF, klasyczną lub dla ACPIBacklight.kext - należy ją oczywiście najpierw usunąć

Kompilujemy i wrzucamy plik DSDT.aml do odpowiedniego katalogu Clovera.

 

:arrow: 2. Binpatch AppleBacklight.kext w Cloverze
W kolejnym kroku dodajemy do naszego config.plist w sekcji KernelAndKextPatches -> KextsToPatch następujący binpatch:

            <dict>
                <key>Comment</key>
                <string>change F%uT%04x to F%uTxxxx in AppleBacklightInjector.kext (credit RehabMan)</string>
                <key>Name</key>
                <string>com.apple.driver.AppleBacklight</string>
                <key>Find</key>
                <data>RiV1VCUwNHgA</data>
                <key>Replace</key>
                <data>RiV1VHh4eHgA</data>
            </dict>

:arrow: 3. AppleBacklightInjector.kext
Na koniec pobieramy z załącznika i instalujemy AppleBacklightInjector.kext w katalogu Clovera z kextami lub w /S/L/E. Jeżeli mamy któryś z poprzednich kextów (ACPIBacklight.kext lub IntelBacklight.kext) - musimy go oczywiście usunąć.

Restartujemy system - i regulacja podświetlenia powinna działać. Pomiędzy kolejnymi uruchomieniami systemu ustawienia podświetlenia są przechowywane NVRAM - więc jeżeli mają być pamiętane, odczyt i zapis do NVRAM musi działać u nas prawidłowo.

W razie wątpliwości czy problemów, pomocne może okazać się przejrzenie wątku z oryginalnym tutorialem RehabMana, na wszelki wypadek podaję link:
https://www.tonymacx...or-kext.218222/

Załączone pliki


Izerpad2: Lenovo ThinkPad T420 - macOS 10.12.5 | Intel Core i5-2520M 2,5 GHz | 4GB DDR3 | Intel HD 3000 | Intel QM67 | Conexant CX20672 | Broadcom BCM4322 | Intel 82579LM
Wcześniej: Lenovo ThinkPad T61 - Mac OS X 10.6.8 | Intel Core 2 Duo T7300 2 GHz | 2GB DDR2 | GMA X3100 | ICH8-M | SoundMAX AD1984 | Atheros AR5BXB6 | Intel 82566MM
FlagaPL.gif Piszę poprawnie po polsku! | Legacy kext dla kart Atheros | LegacyHDA AD1984 | Regulacja podświetlenia dla kart Intel


#2 razor1995

razor1995
  • Members
  • 58 postów

Napisano 27 czerwiec 2017 - 21:23

Wyciągnąłem sobie DSDT z dumpu Clovera, ale przy kompilacji sypie błędami (nie da rady zrobić screena :( ). Mógłby ktoś sprawdzić ten DSDT?

Patched:

 
Clean:

Laptop: Dell Latitude E7240 | Intel Core i5 4310U | Intel HD 4400 | 8GB RAM Kingston | Samsung SSD 1TB | macOS 10.14 Mojave

PC: Intel Core i5 2400S @2.5GHz + SilentiumPC SpartanPro | Gateway DT71 | nVidia GeForce GT 640 2GB | 16 GB RAM Kingston| Goodram Iridium Pro SSD 512 GB | Seagate ST2000DM001 HDD 2TB | macOS 10.14 Mojave
Japko: Apple iPhone 8 | Apple A11 Bionic @2.74 GHz | Apple A11 GPU | 3GB RAM | 64GB PAMIĘCI | iOS 12


"Niestety, ludzie nie buntują się przeciwko Microsoftowi. Nie znają niczego lepszego." - Steve Jobs     






Również z jednym lub większą ilością słów kluczowych: intel, podświetlenie, jasność, regulacja, AppleBacklight, laptopy

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych