Jump to content

[GUIA] El Capitan 10.11.5 no ASUS VivoBook S400C (S400CA-CA178H)


ludufre
 Share

3 posts in this topic

Recommended Posts

Novo guia para o macOS Catalina 10.15 (versões i3 e i5)!

Obs.: Somente em inglês :/

 

 

 

Instalando OS X El Capitan 10.11.5 no ASUS VivoBook S400C (também conhecido como S400CA)

Especificamente no modelo S400CA-CA178H, provavelmente os outros modelos serão compatíveis

 

  

 

Atualização 26/06/16 #1:

- Adicionado correção para a logo no segundo estágio de boot em <KextsToPatch> no config.plist do Clover. (não está nos anexos)

 

 

O que funciona e o que não funciona

 

- Processador -> Tick.png Funciona. i5-3317U @ 1.7Ghz/2.6Ghz.  SpeedStep 8 a 26 estágios. AsusAICPUPM <true/> no Clover config.plist. 
- Placa de vídeo -> Tick.png Funciona. HD4000. QE/CI completo.
- Chipset -> Tick.png Funciona.
HDMI -> Tick.png Funciona.
- VGA -> Cross.png Não funciona.
- Som -> Tick.png Funciona. VoodooHDA 2.8.8 (use o arquivo PKG).
- WiFi -> Tick.png Funciona. Substituída pela Athero 9285 Wifi/Bluetooth (http://lista.mercadolivre.com.br/atheros-9285#D[A:atheros-9285]).
- Rede -> Tick.png Funciona. AtherosE2200Ethernet 2.1.0.
- Teclado e touchpad -> Tick.png FuncionaELAN, FocalTech and Synaptics (Smart Touchpad) Driver (Mac OS X) (versão 4.6).
- Teclas FN do teclado -> Tick.png Funciona. Alterado "FN keys layout" na kext ELAN acima.
- Controle do brilho -> Tick.png Funciona. DSDT patch (abaixo).
- Repouso/Sleep -> Cross.png Não funciona. A tela desliga mas não entra em standby.
- Bateria -> Tick.png Funciona. ACPIBatteryManager by RehabMan (versão 2016-0531) e DSDT patch (abaixo).
- Leitor de cartão -> Cross.png Não funciona.
- Câmera integrada -> Tick.png FuncionaAnyiSightCam.
- Bluetooth -> Tick.png FuncionaBluetooth Firmware Uploader (versão 3.1).
- Segundo estágio da logo no boot -> Tick.png Funciona. Correção para adicionar em <KextsToPatch> abaixo.
 

 

O que você precisa para instalar

 

- Instalação do El Capitan funcionando no VMware -> Baixei a versão 10.11 por torrent (busque torrent por "10.11 vmware"). Você pode usar um Mac real de um amigo. Meu método só funciona no Mavericks (10.9) e acima.

- Um pendrive de 8GB ou maior.

- App de instalação do OS X El Capitan -> Baixe na App Store por dentro da máquina virtual. Baixei a versão 10.11.5.

- CloverEFI -> Também baixe por dentro da máquina virtual. Eu usei a compilação 3577.

- Habilidade em DSDT patch-> Necessário para a bateria funcionar. [Guia] DSDT/SSDT - Conhecimentos Gerais. Ou você pode baixar o meu DSDT abaixo, mas eu não recomendo.

 

 

Como criar o pendrive

 

Criando a instalação:

 

Formate o pendrive com partição GUID e nomeie como "Install"

 

Abra o terminal e execute o comando:

 

Quote

sudo /Applications/Install\ OS\ X\ El\ Capitan.app/Contents/Resources/createinstallmedia --volume /Volumes/Install --applicationpath /Applications/Install\ OS\ X\ El\ Capitan.app --nointeraction

 

Isso vai levar 30 minutos.

Screen_Shot_2016_06_25_at_4_41_35_PM.png

Instalando o bootloader:

 

Baixe o CloverEFI (usei 3577) e instale com essas opções em "Install OS X El Capitan":

Screen_Shot_2016_06_25_at_6_43_49_PM.pngScreen_Shot_2016_06_25_at_6_43_53_PM.png

Opções:

 

- Install for UEFI booting only

- Install Clover in the ESP

- Drivers64UEFI - CsmVideoDxe-64

- Drivers64UEFI - OsxAptioFixDrv-64

 

Vai ser criado uma partição com nome EFI. Edite o arquivo /EFI/CLOVER/config.plist e altere os seguintes valores:

 
- Graphics - Inject - ATI - <false/>
- Graphics - Inject - Intel - <true/>
- Graphics - ig-platform-id - 0x01660003
- KernelAndKextPatches - AsusAICPUPM - <true/>
 
Importante: Renomeie "#Inject" para "Inject" e "#ig-platform-id" para "ig-platform-id".
 
Obs.: Vou deixar em anexo meu config.plist.
 

Agora você vai precisar dessas duas Kexts:

 

Baixar a kext Smart Touchpad. Eu usei a versão 4.6.

Baixar o dmg do HWSensors e utilizar a FakeSMC.kext de dentro. Eu usei a versão 6.20.1410. Isso é muito importante. Não dá pra dar boot sem ele.

- Coloque essas Kexts dentro de /EFI/CLOVER/kexts/10.11/

- Coloque o instalador do Clover dentro do pendrive também.

 

Agora você pode iniciar a inalação sem problema (eu acho).

 

 

Configuração do Setup da BIOS e Instalação

 

- Desligue o ultrabook e insira o pendrive.

- Ligue com a tecla F2 apertada para entrar no Setup da BIOS.

- Vá para "Save & Exit" e selecione "Restore Defaults".

- Vá para aba "Advanced" e altere esses valores:

- Intel Virtualization Technology: Disabled

- VT-d: Disabled

- USB Configuration - XHCI Pre-Boot Mode: Disabled

- Vá para "Save & Exit" novamente e selecione "Save Changes".

- Agora na seção "Boot Override" selecione o pendrive que vai estar com onome começando com UEFI. No meu caso "UEFI: KingstonDataTraveler 2.0PMAP".

- O menu do Clover vai aparecer. Use as setas do teclado para selecionar o pendrive. Vai até a opção com o nome de "Boot OS X Install from Install OS X El Capitan", então aperter Enter.

- Se você fez tudo corretamente, sua instalação vai inciar. Lembre-se: Formatar o HDD ou SSD com partição GUID.

- Isso vai levar cerca de 20 minutos.

- Depois da instalação da primeira parte o sistema vai reiniciar. Você precisa segurar o botão ESC para entrar no menu de Boot quando aparecer a logo da Asus.

- Selecione o pendrive novamente.

- No menu do Clover, aperte Enter em "Boot OS X Install from Install OS X El Capitan" mais uma vez.

- A segunda parte da instalação vai começar. Isso leva cerca de 16 minutos.

 

Pós instalação

 

- Quando a segunda parte da instalação acabar, o sistema vai reiniciar novamente.

- Após realizar a configuração inicial de usuário e ir para a área de trabalho, você precisará instalar o Clover no disco interno.

- Abra o instalador do Clover dentro do pendrive que você copiou anteriormente.

- Use as mesmas opções acima mas dessa vez escolha o a partição do sistema.

- Agora você precisa substituir a pasta EFI de dentro da partição EFI do disco interno com a pasta EFI da partição EFI do pendrive.

- A partição EFI do pendrive não vai estar montada. Monde com "diskutil mount /dev/rdiskXs1". Para saber qual é o X, use "diskutil list", mas provavelmente será 1.

- Agora reinicie o sistema. Você vai precisar apertar ESC para entrar no menu de Boot quando aparecer a logo da Asus.

- Selecione o pendrive novamente.

- No menu do Clove, use as setas do teclado e vá para a última opção com nome "Clover Boot Options" e aperte Espaço.

- Selecione a opção "Add Clover boot options for all entries".

- Desligue, remova o pendrive e ligue.

- Se você fez tudo corretamente, o sistema vai iniciar normalmente.

 

Outras Kexts:

 

Baixe as kexts nos links abaixo. Eu recomendo fortemente sempre usar versões mais novas. Se você estiver com preguiça, eu anexei no final desse post.

 

Rede: AtherosE2200Ethernet 2.1.0

Som: VoodooHDA 2.8.8 (use o arquivo PKG). Você precisa selecionar a saída nas Preferências do Sistemas após reiniciar.

Bateria: ACPIBatteryManager by RehabMan (versão 2016-0531). Você precisa do path DSDT (abaixo).

Bluetooth: Bluetooth Firmware Uploader (versão 3.1).

Câmera integrada: AnyiSightCam

 

Todas as kexts devem ser colocadas em /EFI/CLOVER/kexts/10.11/, monde essa partição novamente (diskutil mount /dev/rdiskXs1) pra isso.

 

Teclas FN:

Abra "ApplePS2SmartTouchPad.kext/Contents/Plugins/ApplePS2Keyboard.kext/Contents/Info.plist" e altere:

<key>Fn keys Layout</key>
<string>NONE</string>
<key>Fn keys Mode</key>
<integer>2</integer>

Para:

<key>Fn keys Layout</key>
<string>ASUS</string>
<key>Fn keys Mode</key>
<integer>3</integer>  

Correção do segundo estágio de boot:

Adicionar em /EFI/CLOVER/config.plist dentro de KextsToPatch

			<dict>
				<key>Comment</key>
				<string>HD 4000 Logo Fix</string>
				<key>Find</key>
				<data>
				AQAAdRc=
				</data>
				<key>Name</key>
				<string>IOGraphicsFamily</string>
				<key>Replace</key>
				<data>
				AQAA6xc=
				</data>
			</dict>

Path DSDT da bateria:

#Maintained by: RehabMan for: Laptop Patches
#battery_ASUS-N55SL.txt

# created by RehabMan 8/12/2013
# created originally for jesselid

# works for:
#  ASUS N55SL, BIOS rev. 204
#  ASUS VivoBook series
#  ASUS Zenbook UX31A
#  ASUS UX301LA
#  ASUS X553E-SX399V
#  ASUS F501A
#  ASUS K55VM
#  ASUS U46SV, BIOS rev. 2.04
#  ASUS N43
#  ASUS PU500CA (90NB00F1-M01120)
#  ASUS N73SV
#  ASUS X401A-WX108
#  ASUS F551CA Bios rev. 207
#  ASUS S551LB VivoBook
#  ASUS ZenBook UX32VD
#  ASUS F550L-X455H
#  ASUS X53S
#  ASUS K550JD-XX003H
#  ASUS G53SX
#  ASUS K56CB
#  ASUS UX305

into method label B1B2 remove_entry;
into definitionblock code_regex . insert
begin
Method (B1B2, 2, NotSerialized) { Return (Or (Arg0, ShiftLeft (Arg1, 8))) }\n
end;

# not really for battery, but might come in handy to read fan speed(s)
into device label EC0 code_regex TAH0,\s+16 replace_matched begin TH00,8,TH01,8 end;
into device label EC0 code_regex TAH1,\s+16 replace_matched begin TH10,8,TH11,8 end;
into method label TACH code_regex \(TAH0, replace_matched begin (B1B2(TH00,TH01), end;
into method label TACH code_regex \(TAH1, replace_matched begin (B1B2(TH10,TH11), end;
into method label GFAN code_regex \(\\_SB\.PCI0\.LPCB\.EC0\.TAH0, replace_matched begin (B1B2(\\_SB.PCI0.LPCB.EC0.TH00,\\_SB.PCI0.LPCB.EC0.TH01), end;

# battery EC
into device label EC0 code_regex B0SN,\s+16 replace_matched begin B0S0,8,B0S1,8 end;
into device label EC0 code_regex B1SN,\s+16 replace_matched begin B1S0,8,B1S1,8 end;
into method label BIFA code_regex \(B0SN, replace_matched begin (B1B2(B0S0,B0S1), end;
into method label BIFA code_regex \(B1SN, replace_matched begin (B1B2(B1S0,B1S1), end;
into device label EC0 code_regex DT2B,\s+16 replace_matched begin T2B0,8,T2B1,8 end;
into method label SMBR code_regex \(DT2B, replace_matched begin (B1B2(T2B0,T2B1), end;
into method label SMBW code_regex Store\s+\(([^,]*),\s+DT2B\) replace_matched
begin
Store(%1,T2B0) Store(ShiftRight(%1,8),T2B1)
end;

into device label EC0 insert
begin
Method (RDBA, 0, Serialized)\n
{\n
    Name (TEMP, Buffer(0x20) { })\n
    Store (BA00, Index(TEMP, 0x00))\n
    Store (BA01, Index(TEMP, 0x01))\n
    Store (BA02, Index(TEMP, 0x02))\n
    Store (BA03, Index(TEMP, 0x03))\n
    Store (BA04, Index(TEMP, 0x04))\n
    Store (BA05, Index(TEMP, 0x05))\n
    Store (BA06, Index(TEMP, 0x06))\n
    Store (BA07, Index(TEMP, 0x07))\n
    Store (BA08, Index(TEMP, 0x08))\n
    Store (BA09, Index(TEMP, 0x09))\n
    Store (BA0A, Index(TEMP, 0x0A))\n
    Store (BA0B, Index(TEMP, 0x0B))\n
    Store (BA0C, Index(TEMP, 0x0C))\n
    Store (BA0D, Index(TEMP, 0x0D))\n
    Store (BA0E, Index(TEMP, 0x0E))\n
    Store (BA0F, Index(TEMP, 0x0F))\n
    Store (BA10, Index(TEMP, 0x10))\n
    Store (BA11, Index(TEMP, 0x11))\n
    Store (BA12, Index(TEMP, 0x12))\n
    Store (BA13, Index(TEMP, 0x13))\n
    Store (BA14, Index(TEMP, 0x14))\n
    Store (BA15, Index(TEMP, 0x15))\n
    Store (BA16, Index(TEMP, 0x16))\n
    Store (BA17, Index(TEMP, 0x17))\n
    Store (BA18, Index(TEMP, 0x18))\n
    Store (BA19, Index(TEMP, 0x19))\n
    Store (BA1A, Index(TEMP, 0x1A))\n
    Store (BA1B, Index(TEMP, 0x1B))\n
    Store (BA1C, Index(TEMP, 0x1C))\n
    Store (BA1D, Index(TEMP, 0x1D))\n
    Store (BA1E, Index(TEMP, 0x1E))\n
    Store (BA1F, Index(TEMP, 0x1F))\n
    Return (TEMP)\n
}\n
end;

into device label EC0 insert
begin
Method (WRBA, 1, Serialized)\n
{\n
    Name (TEMP, Buffer(0x20) { })\n
    Store (Arg0, TEMP)\n
    Store (DerefOf(Index(TEMP, 0x00)), BA00)\n
    Store (DerefOf(Index(TEMP, 0x01)), BA01)\n
    Store (DerefOf(Index(TEMP, 0x02)), BA02)\n
    Store (DerefOf(Index(TEMP, 0x03)), BA03)\n
    Store (DerefOf(Index(TEMP, 0x04)), BA04)\n
    Store (DerefOf(Index(TEMP, 0x05)), BA05)\n
    Store (DerefOf(Index(TEMP, 0x06)), BA06)\n
    Store (DerefOf(Index(TEMP, 0x07)), BA07)\n
    Store (DerefOf(Index(TEMP, 0x08)), BA08)\n
    Store (DerefOf(Index(TEMP, 0x09)), BA09)\n
    Store (DerefOf(Index(TEMP, 0x0A)), BA0A)\n
    Store (DerefOf(Index(TEMP, 0x0B)), BA0B)\n
    Store (DerefOf(Index(TEMP, 0x0C)), BA0C)\n
    Store (DerefOf(Index(TEMP, 0x0D)), BA0D)\n
    Store (DerefOf(Index(TEMP, 0x0E)), BA0E)\n
    Store (DerefOf(Index(TEMP, 0x0F)), BA0F)\n
    Store (DerefOf(Index(TEMP, 0x10)), BA10)\n
    Store (DerefOf(Index(TEMP, 0x11)), BA11)\n
    Store (DerefOf(Index(TEMP, 0x12)), BA12)\n
    Store (DerefOf(Index(TEMP, 0x13)), BA13)\n
    Store (DerefOf(Index(TEMP, 0x14)), BA14)\n
    Store (DerefOf(Index(TEMP, 0x15)), BA15)\n
    Store (DerefOf(Index(TEMP, 0x16)), BA16)\n
    Store (DerefOf(Index(TEMP, 0x17)), BA17)\n
    Store (DerefOf(Index(TEMP, 0x18)), BA18)\n
    Store (DerefOf(Index(TEMP, 0x19)), BA19)\n
    Store (DerefOf(Index(TEMP, 0x1A)), BA1A)\n
    Store (DerefOf(Index(TEMP, 0x1B)), BA1B)\n
    Store (DerefOf(Index(TEMP, 0x1C)), BA1C)\n
    Store (DerefOf(Index(TEMP, 0x1D)), BA1D)\n
    Store (DerefOf(Index(TEMP, 0x1E)), BA1E)\n
    Store (DerefOf(Index(TEMP, 0x1F)), BA1F)\n
}\n
end;

into device label EC0 code_regex BDAT,\s+256 replace_matched 
begin
//BDAT, 256,\n
BA00,8,BA01,8,BA02,8,BA03,8,\n
BA04,8,BA05,8,BA06,8,BA07,8,\n
BA08,8,BA09,8,BA0A,8,BA0B,8,\n
BA0C,8,BA0D,8,BA0E,8,BA0F,8,\n
BA10,8,BA11,8,BA12,8,BA13,8,\n
BA14,8,BA15,8,BA16,8,BA17,8,\n
BA18,8,BA19,8,BA1A,8,BA1B,8,\n
BA1C,8,BA1D,8,BA1E,8,BA1F,8\n
end;

into method label SMBR code_regex \(BDAT, replaceall_matched begin (RDBA(), end;
into method label SMBR code_regex Store\s\((.*),\sBDAT\) replaceall_matched begin WRBA(%1) end;
into method label SMBW code_regex Store\s\((.*),\sBDAT\) replaceall_matched begin WRBA(%1) end;
into method label ECSB code_regex Store\s\((.*),\sBDAT\) replaceall_matched begin WRBA(%1) end;
into method label ECSB code_regex \(BDAT, replaceall_matched begin (RDBA(), end;


into device label EC0 insert
begin
Method (RDBB, 0, Serialized)\n
{\n
    Name (TEMP, Buffer(0x20) { })\n
    Store (BB00, Index(TEMP, 0x00))\n
    Store (BB01, Index(TEMP, 0x01))\n
    Store (BB02, Index(TEMP, 0x02))\n
    Store (BB03, Index(TEMP, 0x03))\n
    Store (BB04, Index(TEMP, 0x04))\n
    Store (BB05, Index(TEMP, 0x05))\n
    Store (BB06, Index(TEMP, 0x06))\n
    Store (BB07, Index(TEMP, 0x07))\n
    Store (BB08, Index(TEMP, 0x08))\n
    Store (BB09, Index(TEMP, 0x09))\n
    Store (BB0A, Index(TEMP, 0x0A))\n
    Store (BB0B, Index(TEMP, 0x0B))\n
    Store (BB0C, Index(TEMP, 0x0C))\n
    Store (BB0D, Index(TEMP, 0x0D))\n
    Store (BB0E, Index(TEMP, 0x0E))\n
    Store (BB0F, Index(TEMP, 0x0F))\n
    Store (BB10, Index(TEMP, 0x10))\n
    Store (BB11, Index(TEMP, 0x11))\n
    Store (BB12, Index(TEMP, 0x12))\n
    Store (BB13, Index(TEMP, 0x13))\n
    Store (BB14, Index(TEMP, 0x14))\n
    Store (BB15, Index(TEMP, 0x15))\n
    Store (BB16, Index(TEMP, 0x16))\n
    Store (BB17, Index(TEMP, 0x17))\n
    Store (BB18, Index(TEMP, 0x18))\n
    Store (BB19, Index(TEMP, 0x19))\n
    Store (BB1A, Index(TEMP, 0x1A))\n
    Store (BB1B, Index(TEMP, 0x1B))\n
    Store (BB1C, Index(TEMP, 0x1C))\n
    Store (BB1D, Index(TEMP, 0x1D))\n
    Store (BB1E, Index(TEMP, 0x1E))\n
    Store (BB1F, Index(TEMP, 0x1F))\n
    Return (TEMP)\n
}\n
end;

into device label EC0 insert
begin
Method (WRBB, 1, Serialized)\n
{\n
    Name (TEMP, Buffer(0x20) { })\n
    Store (Arg0, TEMP)\n
    Store (DerefOf(Index(TEMP, 0x00)), BB00)\n
    Store (DerefOf(Index(TEMP, 0x01)), BB01)\n
    Store (DerefOf(Index(TEMP, 0x02)), BB02)\n
    Store (DerefOf(Index(TEMP, 0x03)), BB03)\n
    Store (DerefOf(Index(TEMP, 0x04)), BB04)\n
    Store (DerefOf(Index(TEMP, 0x05)), BB05)\n
    Store (DerefOf(Index(TEMP, 0x06)), BB06)\n
    Store (DerefOf(Index(TEMP, 0x07)), BB07)\n
    Store (DerefOf(Index(TEMP, 0x08)), BB08)\n
    Store (DerefOf(Index(TEMP, 0x09)), BB09)\n
    Store (DerefOf(Index(TEMP, 0x0A)), BB0A)\n
    Store (DerefOf(Index(TEMP, 0x0B)), BB0B)\n
    Store (DerefOf(Index(TEMP, 0x0C)), BB0C)\n
    Store (DerefOf(Index(TEMP, 0x0D)), BB0D)\n
    Store (DerefOf(Index(TEMP, 0x0E)), BB0E)\n
    Store (DerefOf(Index(TEMP, 0x0F)), BB0F)\n
    Store (DerefOf(Index(TEMP, 0x10)), BB10)\n
    Store (DerefOf(Index(TEMP, 0x11)), BB11)\n
    Store (DerefOf(Index(TEMP, 0x12)), BB12)\n
    Store (DerefOf(Index(TEMP, 0x13)), BB13)\n
    Store (DerefOf(Index(TEMP, 0x14)), BB14)\n
    Store (DerefOf(Index(TEMP, 0x15)), BB15)\n
    Store (DerefOf(Index(TEMP, 0x16)), BB16)\n
    Store (DerefOf(Index(TEMP, 0x17)), BB17)\n
    Store (DerefOf(Index(TEMP, 0x18)), BB18)\n
    Store (DerefOf(Index(TEMP, 0x19)), BB19)\n
    Store (DerefOf(Index(TEMP, 0x1A)), BB1A)\n
    Store (DerefOf(Index(TEMP, 0x1B)), BB1B)\n
    Store (DerefOf(Index(TEMP, 0x1C)), BB1C)\n
    Store (DerefOf(Index(TEMP, 0x1D)), BB1D)\n
    Store (DerefOf(Index(TEMP, 0x1E)), BB1E)\n
    Store (DerefOf(Index(TEMP, 0x1F)), BB1F)\n
}\n
end;

into device label EC0 code_regex BDA2,\s+256 replace_matched 
begin
//BDA2, 256,\n
BB00,8,BB01,8,BB02,8,BB03,8,\n
BB04,8,BB05,8,BB06,8,BB07,8,\n
BB08,8,BB09,8,BB0A,8,BB0B,8,\n
BB0C,8,BB0D,8,BB0E,8,BB0F,8,\n
BB10,8,BB11,8,BB12,8,BB13,8,\n
BB14,8,BB15,8,BB16,8,BB17,8,\n
BB18,8,BB19,8,BB1A,8,BB1B,8,\n
BB1C,8,BB1D,8,BB1E,8,BB1F,8\n
end;

into method label SMBR code_regex \(BDA2, replaceall_matched begin (RDBB(), end;
into method label SMBR code_regex Store\s\((.*),\sBDA2\) replaceall_matched begin WRBB(%1) end;
into method label SMBW code_regex Store\s\((.*),\sBDA2\) replaceall_matched begin WRBB(%1) end;
into method label ECSB code_regex Store\s\((.*),\sBDA2\) replaceall_matched begin WRBB(%1) end;
into method label ECSB code_regex \(BDA2, replaceall_matched begin (RDBB(), end;

# additional work for _BIX method present in some ASUS laptops

into device label EC0 code_regex B0C3,\s+16 replace_matched begin XC30,8,XC31,8 end;
into device label EC0 code_regex B1C3,\s+16 replace_matched begin YC30,8,YC31,8 end;
into_all method label _BIX code_regex \(\^\^LPCB\.EC0\.B0C3, replaceall_matched begin (B1B2(^^LPCB.EC0.XC30,^^LPCB.EC0.XC31), end;
into_all method label _BIX code_regex \(\^\^LPCB\.EC0\.B1C3, replaceall_matched begin (B1B2(^^LPCB.EC0.YC30,^^LPCB.EC0.YC31), end;

# or could remove the _BIX method if it turns out not to work

#into_all method label _BIX remove_entry;

Path do brilho

#Maintained by: RehabMan for: Laptop Patches
#graphics_PNLF_ivy_sandy.txt

# This patch enables the brightness slider in SysPrefs->Displays
# and will also enable activation of sleep mode by closing
# the laptop lid.
#
# This particular version is intended to be used with ACPIBacklight.kext
# although it can also be used with AppleBacklight.kext,
# provided AppleBacklight.kext is patched to recognize your 
# display or an injector is used to set brightness levels.
#
# See this thread for more information:
#     http://www.tonymacx86.com/hp-probook-mavericks/121031-native-brightness-working-without-blinkscreen-using-patched-applebacklight-kext.html
# (also read any linked threads)
#
#
# Note: This patch should be applied to the DSDT or SSDT that defines
# your integrated graphics device (always at _ADR 0x00020000)
#

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, 10)\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
    // DEB1 special for setting KLVX at runtime...\n
    //Method (DEB1, 1, NotSerialized)\n
    //{\n
    //    Store(Arg0, KLVX)\n
    //}\n
    // LMAX: use 0x710 to force OS X value\n
    //       or use any arbitrary value\n
    //       or use 0 to capture BIOS setting\n
    Name (LMAX, 0x710)\n
    // KMAX: defines the unscaled range in the _BCL table below\n
    Name (KMAX, 0x710)\n
    // KPCH: saved value for PCHL\n
    Name(KPCH, 0)\n
    // _INI deals with differences between native setting and desired\n
    Method (_INI, 0, NotSerialized)\n
    {\n
        // save value of PCHL for later\n
        Store(PCHL, KPCH)\n
        // determine LMAX to use\n
        If (LNot(LMAX)) { Store(ShiftRight(LEVX,16), LMAX) }\n
        If (LNot(LMAX)) { Store(KMAX, LMAX) }\n
        Store(ShiftLeft(LMAX,16), KLVX)\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(LEVL, 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
            If (LGreater(LEVL, LMAX))\n
                { Store(KLVX, LEVX) Store(Local0, LEVL) }\n
            Else\n
                { Store(Local0, LEVL) Store(KLVX, LEVX) }\n
        }\n
    }\n
    // _BCM/_BQC: set/get for brightness level\n
    Method (_BCM, 1, NotSerialized)\n
    {\n
        // initialize for consistent backlight level before/after sleep\n
        If (LNotEqual(PCHL, KPCH)) { Store(KPCH, PCHL) }\n
        If (LNotEqual(LEVW, 0x80000000)) { Store (0x80000000, LEVW) }\n
        If (LNotEqual(LEVX, KLVX)) { Store (KLVX, LEVX) }\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
        If (LNotEqual(LEV2, 0x80000000)) { Store(0x80000000, LEV2) }\n
        Store(DerefOf(Index(_BCL, Local0)), LEVL)\n
    }\n
    Method (_BQC, 0, NotSerialized)\n
    {\n
        Store(Match(_BCL, MGE, LEVL, 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
        // initialize for consistent backlight level before/after sleep\n
        If (LNotEqual(PCHL, KPCH)) { Store(KPCH, PCHL) }\n
        If (LNotEqual(LEVW, 0x80000000)) { Store (0x80000000, LEVW) }\n
        If (LNotEqual(LEVX, KLVX)) { Store (KLVX, LEVX) }\n
        // store new backlight level\n
        If (LGreater(Arg0, XRGH)) { Store(XRGH, Arg0) }\n
        If (LAnd(Arg0, LLess(Arg0, XRGL))) { Store(XRGL, Arg0) }\n
        If (LNotEqual(LEV2, 0x80000000)) { Store(0x80000000, LEV2) } \n
        Store(Arg0, LEVL)\n
    }\n
    Method (XBQC, 0, NotSerialized)\n
    {\n
        Store(LEVL, Local0)\n
        If (LGreater(Local0, XRGH)) { Store(XRGH, Local0) }\n
        If (LAnd(Local0, LLess(Local0, XRGL))) { Store(XRGL, Local0) }\n
        Return(Local0)\n
    }\n
    // Use XOPT=1 to disable smooth transitions\n
    Name (XOPT, Zero)\n
    // XRGL/XRGH: defines the valid range\n
    Name (XRGL, 40)\n
    Name (XRGH, 1808)\n
    // KLVX is initialization value for LEVX\n
    Name (KLVX, 0x7100000)\n
    // _BCL: returns list of valid brightness levels\n
    // first two entries describe ac/battery power levels\n
    Name (_BCL, Package()\n
    {\n
        1808,\n
        479,\n
        0,\n
        53, 55, 57, 59,\n
        62, 66, 71, 77,\n
        83, 91, 99, 108,\n
        119, 130, 142, 154,\n
        168, 183, 198, 214,\n
        232, 250, 269, 289,\n
        309, 331, 354, 377,\n
        401, 426, 453, 479,\n
        507, 536, 566, 596,\n
        627, 660, 693, 727,\n
        762, 797, 834, 872,\n
        910, 949, 990, 1031,\n
        1073, 1115, 1159, 1204,\n
        1249, 1296, 1343, 1391,\n
        1440, 1490, 1541, 1592,\n
        1645, 1698, 1753, 1808,\n
    })\n
}\n
end;

Está pronto!

 

 

Em anexo arquivos utilizados na instalação. Pelo amor de deus, sempre use versões mais novas.

 

 

E por último mas não menos importante

 

Eu gostaria de agradecer os seguintes membros da comunidade, por tornar esse sonho possível:

@crushers, @snatch, @apianti, @blackosx, @blusseau, @dmazar, @slice2009, @autumnrain, @phpdev32, @EMlyDinEsH, @RehabMan, @Scellow, @mitch_de, @Shailua, @Andy Vandijck, @maxfierke, @ArturXXX, @LexHimself, @brumas e todos os outros membros envolvidos direta ou indiretamente.

EFI antes instalação.zip

EFI após instalação.zip

Edited by ludufre
  • Like 2
Link to comment
Share on other sites

  • 4 months later...

Estou querendo montar um hackintosh, tenho um asus s400ca tbm. Criei uma VmWare só q ao entra na app store, não tinha o download do el capitan, então queria saber se da certo com o Sierra e se tudo vai funcionar. Primeira vez que faço um hackintosh então não sei de nada, editar dsdt, no caso gostaria de usar a sua pasta pronta. Vc sabe se funciona no Sierra? Vc tem algum meio melhor de comunicação? WhatsApp,Skype,Face,Email?

Edited by Allan
Post movido para o lugar correto
Link to comment
Share on other sites

  • 3 years later...
 Share

×
×
  • Create New...