Skocz do zawartości

"Poradnik" dla HD4400/HD4600 + kontrola jasności + PM


PolishApple
 Udostępnij

Rekomendowane odpowiedzi

Odpalanie HD4400/HD4600 Mobile

1. FakeID

#HD4600 Mobile:

  • FakeID - stosujemy poprawkę do Clover'a lub do DSDT/SSDT
    Clover:
    <key>Devices</key>
    <dict>
    <key>FakeID</key>
    <dict>
    <key>IntelGFX</key>
    <string>0x04128086</string>
    

    DSDT/SSDT - gotowa poprawka do użycia z maciasl.app:

    into method label _DSM parent_adr 0x00020000 remove_entry;
    into device name_adr 0x00020000 insert
    begin
    Method (_DSM, 4, NotSerialized)\n
    {\n
    If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }\n
    Return (Package()\n
    {\n
    "device-id", Buffer() { 0x12, 0x04, 0x00, 0x00 },\n
    "AAPL,ig-platform-id", Buffer() { 0x06, 0x00, 0x26, 0x0a },\n
    "hda-gfx", Buffer() { "onboard-1" },\n
    "model", Buffer() { "Intel HD 4600" },\n
    })\n
    }\n
    end;

     

 

#HD4400 Mobile:

 

  • FakeID - stosujemy poprawkę do Clover'a lub do DSDT/SSDT
    Clover:
    <key>Devices</key>
    <dict>
    <key>FakeID</key>
    <dict>
    <key>IntelGFX</key>
    <string>0x04128086</string>
    

     DSDT/SSDT - gotowa poprawka do użycia z maciasl.app:

    into method label _DSM parent_adr 0x00020000 remove_entry;
    into device name_adr 0x00020000 insert
    begin
    Method (_DSM, 4, NotSerialized)\n
    {\n
    If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }\n
    Return (Package()\n
    {\n
    "device-id", Buffer() { 0x12, 0x04, 0x00, 0x00 },\n
    "AAPL,ig-platform-id", Buffer() { 0x06, 0x00, 0x26, 0x0a },\n
    "hda-gfx", Buffer() { "onboard-1" },\n
    "model", Buffer() { "Intel HD 4400" },\n
    })\n
    }\n
    end;

     

Fix dla problemów z wyświetlaniem menu bar'a :> - problem nie występuje zawsze!!!

Dodajemy go do config.plist, sekcja KextToPatch

<dict>
	<key>Name</key>
	<string>AppleIntelFramebufferAzul</string>
	<key>Comment</key>
	<string>0x0a260006 9MB cursor bytes patch</string>
	<key>Find</key>
	<string>0600260a01030303000000020000300100006000</string>
	<key>Replace</key>
	<string>0600260a01030303000000020000300100009000</string>
</dict> 

#Inny sposób :>

Jeśli straszne jest nam dodawanie poprawek FakeID do Clover'a lub DSDT/SSDT możemy użyć kexta który doda FakeID za nas:>

https://bitbucket.org/RehabMan/os-x-fake-pci-id/downloads

 

Po rozpakowaniu paczki wchodzimy w ~/Release i kopiujemy:

- FakePCIID_HD4600_HD4400.kext

- FakePCIID.kext

do S/L/E lub folderu kexts Clover'a (przypomnienie dla osób używających folderu OEM by kexty wrzucić tam, a nie do głównego folderu) 

 

2. Injekcja - do Clover'a

<key>Graphics</key>
<dict>
<key>Inject</key>
<dict>
<key>Intel</key>
<true/>
</dict>
<key>ig-platform-id</key>
<string>0x0a260006</string>

Zmiana nazwy w DSDT oraz SSDT

Aby uzyskać pełny PM, a tym samym wydłużyć czas pracy na baterii (AGPM) należy przemianować istniejące wpisy na IGPU.

 

#Zależnie od obecnego nazewnictwa należy wybrać odpowiednią poprawkę:

GFX0 - https://github.com/RehabMan/Laptop-DSDT-Patch/blob/master/graphics/graphics_Rename-PCI0_GFX0.txt

 

VID - https://github.com/RehabMan/Laptop-DSDT-Patch/blob/master/graphics/graphics_Rename-PCI0_VID.txt

 

Patch stosujemy w DSDT oraz SSDTxx!!!

 

Kontrola jasności - gotowy patch do użycia z maciasl.app

Dodajemy go do DSDT/SSDT (należy ustalić gdzie znajduje się sekcja naszej grafiki) + Intelbacklight.kext https://github.com/RehabMan/OS-X-Intel-Backlight

#Maintained by: RehabMan for: Laptop Patches
#graphics_PNLF_haswell.txt
# Note: This patch should be applied to the DSDT or SSDT that defines
# your integrated graphics device (always at _ADR 0x00020000)
#
# This patch works for both Haswell and Broadwell graphics
#

into_all device label PNLF remove_entry;
into_all device name_adr 0x00020000 code_regex (OperationRegion\s\(RMPC,\sPCI_Config[^\}]*\}) remove_matched;

into device name_adr 0x00020000 insert
begin
OperationRegion (RMPC, PCI_Config, 0x10, 4)\n
Field (RMPC, AnyAcc, NoLock, Preserve)\n
{\n
    BAR1,32,\n
}\n
Device (PNLF)\n
{\n
    // normal PNLF declares (note some of this probably not necessary)\n
    Name (_ADR, Zero)\n
    Name (_HID, EisaId ("APP0002"))\n
    Name (_CID, "backlight")\n
    Name (_UID, 15)\n
    Name (_STA, 0x0B)\n
    //define hardware register access for brightness\n
    // lower nibble of BAR1 is status bits and not part of the address\n
    OperationRegion (BRIT, SystemMemory, And(^BAR1, Not(0xF)), 0xe1184)\n
    Field (BRIT, AnyAcc, Lock, Preserve)\n
    {\n
        Offset(0x48250),\n
        LEV2, 32,\n
        LEVL, 32,\n
        Offset(0x70040),\n
        P0BL, 32,\n
        Offset(0xc8250),\n
        LEVW, 32,\n
        LEVX, 32,\n
        Offset(0xe1180),\n
        PCHL, 32,\n
    }\n
    // LMAX: use 0xad9/0x56c/0x5db to force OS X value\n
    //       or use any arbitrary value\n
    //       or use 0 to capture BIOS setting\n
    Name (LMAX, 0xad9)\n
    // KMAX: defines the unscaled range in the _BCL table below\n
    Name (KMAX, 0xad9)\n
    // _INI deals with differences between native setting and desired\n
    Method (_INI, 0, NotSerialized)\n
    {\n
        // This 0xC value comes from looking what OS X initializes this\n
        // register to after display sleep (using ACPIDebug/ACPIPoller)\n
        Store(0xC0000000, LEVW)\n
        // determine LMAX to use\n
        If (LNot(LMAX)) { Store(ShiftRight(LEVX,16), LMAX) }\n
        If (LNot(LMAX)) { Store(KMAX, LMAX) }\n
        If (LNotEqual(LMAX, KMAX))\n
        {\n
            // Scale all the values in _BCL to the PWM max in use\n
            Store(0, Local0)\n
            While (LLess(Local0, SizeOf(_BCL)))\n
            {\n
                Store(DerefOf(Index(_BCL,Local0)), Local1)\n
                Divide(Multiply(Local1,LMAX), KMAX,, Local1)\n
                Store(Local1, Index(_BCL,Local0))\n
                Increment(Local0)\n
            }\n
            // Also scale XRGL and XRGH values\n
            Divide(Multiply(XRGL,LMAX), KMAX,, XRGL)\n
            Divide(Multiply(XRGH,LMAX), KMAX,, XRGH)\n
        }\n
        // adjust values to desired LMAX\n
        Store(ShiftRight(LEVX,16), Local1)\n
        If (LNotEqual(Local1, LMAX))\n
        {\n
            Store(And(LEVX,0xFFFF), Local0)\n
            If (LOr(LNot(Local0),LNot(Local1))) { Store(LMAX, Local0) Store(LMAX, Local1) }\n
            Divide(Multiply(Local0,LMAX), Local1,, Local0)\n
            //REVIEW: wait for vblank before setting new PWM config\n
            //Store(P0BL, Local7)\n
            //While (LEqual (P0BL, Local7)) {}\n
            Store(Or(Local0,ShiftLeft(LMAX,16)), LEVX)\n
        }\n
    }\n
    // _BCM/_BQC: set/get for brightness level\n
    Method (_BCM, 1, NotSerialized)\n
    {\n
        // store new backlight level\n
        Store(Match(_BCL, MGE, Arg0, MTR, 0, 2), Local0)\n
        If (LEqual(Local0, Ones)) { Subtract(SizeOf(_BCL), 1, Local0) }\n
        Store(Or(DerefOf(Index(_BCL,Local0)),ShiftLeft(LMAX,16)), LEVX)\n
    }\n
    Method (_BQC, 0, NotSerialized)\n
    {\n
        Store(Match(_BCL, MGE, And(LEVX, 0xFFFF), MTR, 0, 2), Local0)\n
        If (LEqual(Local0, Ones)) { Subtract(SizeOf(_BCL), 1, Local0) }\n
        Return(DerefOf(Index(_BCL, Local0)))\n
    }\n
    Method (_DOS, 1, NotSerialized)\n
    {\n
        // Note: Some systems have this defined in DSDT, so uncomment\n
        // the next line if that is the case.\n
        //External(^^_DOS, MethodObj)\n
        ^^_DOS(Arg0)\n
    }\n
    // extended _BCM/_BQC for setting "in between" levels\n
    Method (XBCM, 1, NotSerialized)\n
    {\n
        // store new backlight level\n
        If (LGreater(Arg0, XRGH)) { Store(XRGH, Arg0) }\n
        If (LAnd(Arg0, LLess(Arg0, XRGL))) { Store(XRGL, Arg0) }\n
        Store(Or(Arg0,ShiftLeft(LMAX,16)), LEVX)\n
    }\n
    Method (XBQC, 0, NotSerialized)\n
    {\n
        Store(And(LEVX,0xFFFF), Local0)\n
        If (LGreater(Local0, XRGH)) { Store(XRGH, Local0) }\n
        If (LAnd(Local0, LLess(Local0, XRGL))) { Store(XRGL, Local0) }\n
        Return(Local0)\n
    }\n
    // Set XOPT bit 0 to disable smooth transitions\n
    // Set XOPT bit 1 to wait for native BacklightHandler\n
    // Set XOPT bit 2 to force use of native BacklightHandler\n
    Name (XOPT, 0x02)\n
    // XRGL/XRGH: defines the valid range\n
    Name (XRGL, 25)\n
    Name (XRGH, 2777)\n
    // _BCL: returns list of valid brightness levels\n
    // first two entries describe ac/battery power levels\n
    Name (_BCL, Package()\n
    {\n
        2777,\n
        748,\n
        0,\n
        35, 39, 44, 50,\n
        58, 67, 77, 88,\n
        101, 115, 130, 147,\n
        165, 184, 204, 226,\n
        249, 273, 299, 326,\n
        354, 383, 414, 446,\n
        479, 514, 549, 587,\n
        625, 665, 706, 748,\n
        791, 836, 882, 930,\n
        978, 1028, 1079, 1132,\n
        1186, 1241, 1297, 1355,\n
        1414, 1474, 1535, 1598,\n
        1662, 1728, 1794, 1862,\n
        1931, 2002, 2074, 2147,\n
        2221, 2296, 2373, 2452,\n
        2531, 2612, 2694, 2777,\n
    })\n
}\n
end;

Rozwiązywanie problemów:

Dodajemy do Clover'a w sekcji KextToPatch

 

 

#Zniekształcony obraz podczas przejścia z boot do pulpitu

<dict>
		<key>Comment</key>
		<string>Boot graphics glitch, 10.10.x/10.11.x (credit lisai9093, cecekpawon)</string>
		<key>Find</key>
		<data>AQAAdRc=</data>
		<key>Name</key>
		<string>IOGraphicsFamily</string>
		<key>Replace</key>
		<data>AQAA6xc=</data>
</dict>

Poradnik oparty o:

-https://github.com/RehabMan/OS-X-Clover-Laptop-Config

-http://www.tonymacx86.com/yosemite-laptop-support/145427-fix-intel-hd4200-hd4400-hd4600-mobile-yosemite.html

Odnośnik do komentarza
Udostępnij na innych stronach

Dzięki, przykleiłem.

 

Mam od razu pytanie:

 

Aby uzyskać pełny PM, a tym samym wydłużyć czas pracy na baterii (AGPM) należy przemianować istniejące wpisy na IGPU.

Jakieś źródło/obserwacja? To dotyczy tylko HD 4400/HD 4600, czy starszych też?

U mnie (HD 3000) karta jest w DSDT jako VID i mam wrażenie, że AGPM jest. I teraz nie wiem, czy powinienem zmieniać nazwę...

 

Aha, i ten patch na regulację podświetlenia to jakiś specjalny dla Haswell/Broadwell, nie wymagający dodatkowo kexta?

Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie
 Udostępnij

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Korzystanie z tej witryny, wymaga zakceptowanie naszych warunków Warunki użytkowania.