Jump to content

[GUIDE] High Sierra 10.13.2 on ASUS Vivobook S400C (S400CA-CA178H)

- - - - - high sierra 10.13 10.13.1 asus vivobook s400c s400ca s400ca-178h 10.13.2

  • Please log in to reply
1 reply to this topic

#1
Luan Eduardo

Luan Eduardo

    InsanelyMac Protégé

  • Members
  • Pip
  • 22 posts
  • Gender:Male
  • Location:Rio de Janeiro, Brazil

Installing macOS High Sierra 10.13.2 on ASUS Vivobook S400C (also know as S400CA)

Specifically in S400CA-CA178H model, most likely all other models are compatible

 

Untitled_3.png

 

Updates:

12/11/2017 20:26h GMT-0

- Added update instructions.

- I use SSD. I set the guide for HDD too. Small change.


11/29/2017 01:10h GMT-0

- Added USB 3.0 Kexts

- Bonus: Touchscreen now works.


11/29/2017 00:18h GMT-0

- Added HDMI audio patch to Clover



11/24/2017 00:16h GMT-0

- Complete rewritten.



What works and what does not work
 
- Processor -> Tick.png Work. All SpeedStep stages.
- Video Card -> Tick.png Work. HD4000. Full QE/CI.
- Chipset -> Tick.png Work.
- HDMI -> Tick.png Work. Audio too.
- VGA -> Cross.png Not work.
- Audio -> Tick.png Work.
- WiFi -> Cross.png Not work. Need to be replaced.
- Ethernet-> Tick.png Work.
- Keyboard and touchpad -> Tick.png Work.
- FN keyboards keys -> Tick.png Work.
- Brightness control -> Tick.png Work.
- Touchscreen -> Tick.png Work.
- Sleep -> Tick.png Work.
- Battery -> Tick.png Work.
- Card Reader -> Cross.png Not tested yet. (TODO)
- Integrated Camera -> Tick.png Work.
- Bluetooth -> Cross.png Not work.
- 2nd stage boot logo -> Cross.png Not work.


What you need to install

- Running install of macOS on VMware -> Downloaded version 10.13 via torrent (search by "10.13 vmware" torrent). You can use a real Mac of an friend. My method only tested on Mavericks (10.9) and above.
- One USB flash drive of 8GB or bigger.
- macOS High Sierra install app -> Downloaded via App Store inside the virtual machine. Downloaded version 10.13.2.
- CloverEFI -> Also download inside the virtual machine. I used build 4334.
- DSDT patch skills -> Needed to battery works. How to patch DSDT. Or you can download mine DSDT below, but would not recommend.


How create the install disk
 
Prepare flash drive:
 
Format the flash drive with GUID partition mapping and name it "Install".
Use the Disk Utility for this, but if the Erase popup in Disk Utility don't show the Schema to select, then run this in terminal:
sudo diskutil eraseDisk JHFS+ Install /dev/diskX
X is the number of the disk. Use "diskutil list" to discover.

Create install files in flash drive:

Open terminal and run this command:
sudo /Applications/Install\ macOS\ High\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/Install --applicationpath /Applications/Install\ macOS\ High\ Sierra.app --nointeraction
This will take about 30 minutes.

Install bootloader:

You need to format the EFI partition of the install flash drive to FAT32:
sudo newfs_msdos -v EFI /dev/diskXs1
X is the number of the disk. Use "diskutil list" to discover.
 
Download the CloverEFI (used 4334) and install with this options on "Install macOS High Sierra":
Screen_Shot_2017-11-22_at_04.40.09.png
Screen_Shot_2017-11-22_at_04.40.19.png

Options:
 
- Install for UEFI booting only
- Install Clover in the ESP
- Drivers64UEFI - CsmVideoDxe-64
- Drivers64UEFI - OsxAptioFixDrv-64

Adjust the config.plist genereated:

Will be created a partition named EFI. Edit the /EFI/CLOVER/config.plist inside this new partition and change those values:

- Alter value: GUI - ScreenResolution to 1366x768
- Rename key: Graphics - #Inject -> Inject
- Alter value: Graphics - Inject - ATI - FALSE
- Alter value: Graphics - Inject - Intel - TRUE
- Rename key: Graphics - #ig-platform-id -> ig-platform-id
Alter value: Graphics - ig-platform-id to 0x01660003
- Alter value: KernelAndKextPatches - AppleIntelCPUPM to TRUE
- Rename key: #KextsToPatch -> KextsToPatch
- Remove all <dict>...</dict> in <array> inside KextsToPatch
- Add <dict/> bellow in <array> inside KextsToPatch:
<dict>
	<key>Comment</key>
	<string>HD 4000 brightness fix</string>
	<key>Disabled</key>
	<false/>
	<key>Find</key>
	<data>
	EAcAABAHAAA=
	</data>
	<key>Name</key>
	<string>AppleIntelFramebufferCapri</string>
	<key>Replace</key>
	<data>
	EhMAABITAAA=
	</data>
</dict>
 
P.s.: I will provide below my config.plist as attachment.
 
Add essentials Kexts:

Download those Kexts and put in /EFI/CLOVER/kexts/10.13/
 
Download the Smart Touchpad kext from here. I used the version 4.7 beta 5.
Download the HWSensors dmg and use the FakeSMC.kext from inside. I used the version 6.26.1440. This is very important. Can't boot without it.

Put the Clover installer on the flash drive too.
 
Now you can start the instalation without problem (I guess).
 
 
BIOS Setup Configuration and Installation

Bios configuration:
 
- Shutdown the ultrabook and insert the flash drive on the left side on upper port (on the side Keystone hole).
- Power on with F2 pressed to enter BIOS setup.
- Go to "Save & Exit" and press "Restore Defaults".
- Go to "Advanced" tab and change VT-d to Disabled.
- Go to "Save & Exit" again and select "Save Changes and Exit".
- When ASUS logo appear, press and hold ESC to enter Boot Menu.
- Select the flash drive named with UEFI prefix. In my case "UEFI: KingstonDataTraveler 2.0PMAP".
- The clover menu will show. Use the arrow keys to mark the flash drive. The option name is "Boot OS X Install from Install macOS High Sierra", then press Enter.
- If you did everything correctly, you will see the installation screen.
BUG Note: I delete all entries from the list. With that, I could not add anything else. It just didn't work. I had to put some USB device so the list is not empty, so I can add a new entry. Strange thing...

Format destination disk:

Format the disk with GUID partition mapping and name it "HD".

- Select Disk Utility in the list, then press Continue.
- Click in View, then "Show All Devices".
- Select the destination Disk, then Erase.
- Name: HD, Format: Mac OS Extended (Journaled) and Scheme: GUID Partition Map

If the Erase popup in Disk Utility don't work. Close it and run this in terminal:
diskutil eraseDisk JHFS+ HD /dev/diskX
X is the number of the destination disk. Use "diskutil list" to discover.

Close Disk Utility.

If the destination is SSD: Start installation without APFS conversion:

Open Terminal and run:
/Volumes/Image\ Volume/Install\ macOS\ High\ Sierra.app/Contents/Resources/startosinstall --volume /Volumes/HD --converttoapfs NO --agreetolicense
This will take about 20 minutes.

If the destination is HDD: Start installation normally:

Select "Install macOS", then Continue.
Follow instructions in screen.

After install:

After first part install the system will reboot.

In Clover main menu, press enter in "Boot macOS Install from Install macOS High Sierra" once again

The second part of the installation will begin. This will take 16 minutes.
 

Post installation

Install bootloader:
 
When the second part of install finish, the system will reboot again.

After performing the user initial setup and go to the desktop, you need to install Clover on internal disk.

Open the Clover installer inside flash drive that you copied before.

Use same options above but choose the system partition this time.

Now you need to replace the EFI folder inside your internal disk EFI parittion with EFI folder inside flash card EFI partition.

The flash drive EFI partition is unmounted. Mount with "diskutil mount /dev/rdiskXs1". To know what X is, use "diskutil list", most likely is 1.

Add Clover entry to UEFI:

Now remove flash drive and restart the system. With F2 pressed to enter UEFI BIOS.

- Go to "Boot" and press "Add New Boot Option".
- Select "Add boot option", write CLOVER and press Enter.
- In "Select Filesystem", choose the option that contains "HD". Like "PCI(1F|2)\DevicePath(Type 3, SubType 12)HD(Part1,Sig2a0127c1-ea5d-44d3-8967-57e59c1f0e3b)".
- Select "Path for boot option", write EFI\BOOT\BOOTX64.efi and press Enter.
- Select "Create" and press enter.
- Go to "Save & Exit" and select "Save Changes and Exit".

Others Kexts:
 
I strongly recommend always use newest versions. If you are too lazy, I attach on end of the post.
 
Ethernet: AtherosE2200Ethernet 2.2.0
Sound: VoodooHDA 2.9.0d10


You need to select the output there in System Preferences after reboot.

Battery: ACPIBatteryManager by RehabMan (version 2017-1001). You need to path DSDT (below).
Integrated Camera: AnyiSightCam
USB 3.0 + Touchscreen: FakePCIID.kext + FakePCIID_XHCIMux.kext and USBInjectAll.kext
 
All kexts will placed inside /EFI/CLOVER/kexts/10.13/, mount again this partition (diskutil mount rdiskXs1) for it.
 
 
Fine Adjustiment
 
Enable FN keys
Open "ApplePS2SmartTouchPad.kext/Contents/Plugins/ApplePS2Keyboard.kext/Contents/Info.plist" and change:
<key>Fn keys Layout</key>
<string>NONE</string>
<key>Fn keys Mode</key>
<integer>2</integer>
To:
<key>Fn keys Layout</key>
<string>ASUS</string>
<key>Fn keys Mode</key>
<integer>3</integer> 
Sleep work, but Hibernate not. Disable it:
sudo pmset -a hibernatemode 0
HDMI Audio
Add <dict/>'s bellow in <array> inside KextsToPatch, in config.plist:
<dict>
	<key>Comment</key>
	<string>HDMI-audio HD4000 0x01660003, port 0406</string>
	<key>Find</key>
	<data>BAYAAAAEAACBAAAA</data>
	<key>Name</key>
	<string>AppleIntelFramebufferCapri</string>
	<key>Replace</key>
	<data>BAYAAAAIAAAGAAAA</data>
</dict>
<dict>
	<key>Comment</key>
	<string>HDMI-audio HD4000 0x01660003, port 0304</string>
	<key>Find</key>
	<data>AwQAAAAEAACBAAAA</data>
	<key>Name</key>
	<string>AppleIntelFramebufferCapri</string>
	<key>Replace</key>
	<data>AwQAAAAIAAAGAAAA</data>
</dict>
<dict>
	<key>Comment</key>
	<string>HDMI-audio HD4000 0x01660003, port 0205</string>
	<key>Find</key>
	<data>AgUAAAAEAAAHBAAA</data>
	<key>Name</key>
	<string>AppleIntelFramebufferCapri</string>
	<key>Replace</key>
	<data>AgUAAAAIAAAGAAAA</data>
</dict>
DSDT Patchs
 
First of all, extract your system DSDT.aml pressioning F4 on Clover boot menu. Will be stored in /EFI/CLOVER/ACPI/origin.
Copy to /EFI/CLOVER/ACPI/patched and apply following patchs using MaciASL:
 
Battery (ASUS N55LS/Vivobook)
#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;
Fix Sleep issues caused by USBs

[usb] 7-series/8-series USB
#Maintained by: RehabMan for: Laptop Patches
#usb_USB_7-series.txt

# USB property injection for 7-series boards (originally HM76)

# Insert Apple USB properties into EHC1
into method label _DSM parent_adr 0x001D0000 remove_entry;
into device name_adr 0x001D0000 insert
begin
Method (_DSM, 4, NotSerialized)\n
{\n
    If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }\n
    Return (Package()\n
    {\n
        "AAPL,clock-id", Buffer() { 0x01 },\n
        "built-in", Buffer() { 0x00 },\n
        "subsystem-id", Buffer() { 0x70, 0x72, 0x00, 0x00 },\n
        "subsystem-vendor-id", Buffer() { 0x86, 0x80, 0x00, 0x00 },\n
        "AAPL,current-available", 2100,\n
        "AAPL,current-extra", 2200,\n
        "AAPL,current-extra-in-sleep", 1600,\n
        "AAPL,device-internal", 0x02,\n
        "AAPL,max-port-current-in-sleep", 2100,\n
    })\n
}\n
end;

# Insert Apple USB properties into EHC2
into method label _DSM parent_adr 0x001A0000 remove_entry;
into device name_adr 0x001A0000 insert
begin
Method (_DSM, 4, NotSerialized)\n
{\n
    If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }\n
    Return (Package()\n
    {\n
        "AAPL,clock-id", Buffer() { 0x01 },\n
        "built-in", Buffer() { 0x00 },\n
        "subsystem-id", Buffer() { 0x70, 0x72, 0x00, 0x00 },\n
        "subsystem-vendor-id", Buffer() { 0x86, 0x80, 0x00, 0x00 },\n
        "AAPL,current-available", 2100,\n
        "AAPL,current-extra", 2200,\n
        "AAPL,current-extra-in-sleep", 1600,\n
        "AAPL,device-internal", 0x02,\n
        "AAPL,max-port-current-in-sleep", 2100,\n
    })\n
}\n
end;

# Insert Apple USB properties into USB 3.0 XHC
into method label _DSM parent_adr 0x00140000 remove_entry;
into device name_adr 0x00140000 insert
begin
Method (_DSM, 4, NotSerialized)\n
{\n
    If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }\n
    Return (Package()\n
    {\n
        "AAPL,clock-id", Buffer() { 0x02 },\n
        "built-in", Buffer() { 0x00 },\n
        "subsystem-id", Buffer() { 0x70, 0x72, 0x00, 0x00 },\n
        "subsystem-vendor-id", Buffer() { 0x86, 0x80, 0x00, 0x00 },\n
        "AAPL,current-available", 2100,\n
        "AAPL,current-extra", 2200,\n
        "AAPL,current-extra-in-sleep", 1600,\n
        "AAPL,device-internal", 0x02,\n
        "AAPL,max-port-current-in-sleep", 2100,\n
    })\n
}\n
end;
[usb] USB3 _PRW 0x0D (instant wake)
#Maintained by: RehabMan for: Laptop Patches
#usb_prw_0x0d_xhc.txt

# remove _PRW methods to prevent instant wake

# delete any existing XHC1 device
into device label XHC1 name_adr 0x00140000 remove_entry;
# delete any existing USB2 device
into device label USB2 name_adr 0x001D0000 remove_entry;

# if _PRW objects are methods
into method label _PRW parent_adr 0x001D0000 remove_entry;
into method label _PRW parent_adr 0x001A0000 remove_entry;
into method label _PRW parent_adr 0x00140000 remove_entry;
into method label _PRW parent_adr 0x001B0000 remove_entry;
# some other LAN cards use 0x00190000
into method label _PRW parent_adr 0x00190000 remove_entry;

# if _PRW methods are stuffed into a separate scope
into method label _PRW parent_label _SB.PCI0.EHC1 remove_entry;
into method label _PRW parent_label _SB.PCI0.EHC2 remove_entry;
into method label _PRW parent_label _SB.PCI0.XHC remove_entry;
into method label _PRW parent_label \_SB.PCI0.EHC1 remove_entry;
into method label _PRW parent_label \_SB.PCI0.EHC2 remove_entry;
into method label _PRW parent_label \_SB.PCI0.XHC remove_entry;

# if _PRW objects are names
into device name_adr 0x001D0000 code_regex Name.*_PRW.*\n.*\n.*\n.*\n.*\}\) remove_matched;
into device name_adr 0x001A0000 code_regex Name.*_PRW.*\n.*\n.*\n.*\n.*\}\) remove_matched;
into device name_adr 0x00140000 code_regex Name.*_PRW.*\n.*\n.*\n.*\n.*\}\) remove_matched;
into device name_adr 0x001B0000 code_regex Name.*_PRW.*\n.*\n.*\n.*\n.*\}\) remove_matched;
into device name_adr 0x00190000 code_regex Name.*_PRW.*\n.*\n.*\n.*\n.*\}\) remove_matched;
# some _PRW have three entries in the Package
into device name_adr 0x001D0000 code_regex Name.*_PRW.*\n.*\n.*\n.*\n.*\n.*\}\) remove_matched;
into device name_adr 0x001A0000 code_regex Name.*_PRW.*\n.*\n.*\n.*\n.*\n.*\}\) remove_matched;
into device name_adr 0x00140000 code_regex Name.*_PRW.*\n.*\n.*\n.*\n.*\n.*\}\) remove_matched;
into device name_adr 0x001B0000 code_regex Name.*_PRW.*\n.*\n.*\n.*\n.*\n.*\}\) remove_matched;
into device name_adr 0x00190000 code_regex Name.*_PRW.*\n.*\n.*\n.*\n.*\n.*\}\) remove_matched;

# seems to work better if _PRW is present, but returns 0 (original was 3) for sleep state
into device name_adr 0x001D0000 insert begin Name(_PRW, Package() { 0x0D, 0 }) end;
into device name_adr 0x001A0000 insert begin Name(_PRW, Package() { 0x0D, 0 }) end;
into device name_adr 0x00140000 insert begin Name(_PRW, Package() { 0x0D, 0 }) end;
into device name_adr 0x001B0000 insert begin Name(_PRW, Package() { 0x0D, 0 }) end;
into device name_adr 0x00190000 insert begin Name(_PRW, Package() { 0x0D, 0 }) end;

# USB property injection for 7-series boards (originally HM76)

# Insert Apple USB properties into EHC1
into method label _DSM parent_adr 0x001D0000 remove_entry;
into device name_adr 0x001D0000 insert
begin
Method (_DSM, 4, NotSerialized)\n
{\n
    If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }\n
    Return (Package()\n
    {\n
        "subsystem-id", Buffer() { 0x70, 0x72, 0x00, 0x00 },\n
        "subsystem-vendor-id", Buffer() { 0x86, 0x80, 0x00, 0x00 },\n
        "AAPL,current-available", 2100,\n
        "AAPL,current-extra", 2200,\n
        "AAPL,current-extra-in-sleep", 1600,\n
        "AAPL,device-internal", 0x02,\n
        "AAPL,max-port-current-in-sleep", 2100,\n
    })\n
}\n
end;

# Insert Apple USB properties into EHC2
into method label _DSM parent_adr 0x001A0000 remove_entry;
into device name_adr 0x001A0000 insert
begin
Method (_DSM, 4, NotSerialized)\n
{\n
    If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }\n
    Return (Package()\n
    {\n
        "subsystem-id", Buffer() { 0x70, 0x72, 0x00, 0x00 },\n
        "subsystem-vendor-id", Buffer() { 0x86, 0x80, 0x00, 0x00 },\n
        "AAPL,current-available", 2100,\n
        "AAPL,current-extra", 2200,\n
        "AAPL,current-extra-in-sleep", 1600,\n
        "AAPL,device-internal", 0x02,\n
        "AAPL,max-port-current-in-sleep", 2100,\n
    })\n
}\n
end;

# Insert Apple USB properties into USB 3.0 XHC
into method label _DSM parent_adr 0x00140000 remove_entry;
into device name_adr 0x00140000 insert
begin
Method (_DSM, 4, NotSerialized)\n
{\n
    If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }\n
    Return (Package()\n
    {\n
        "subsystem-id", Buffer() { 0x70, 0x72, 0x00, 0x00 },\n
        "subsystem-vendor-id", Buffer() { 0x86, 0x80, 0x00, 0x00 },\n
        "AAPL,current-available", 2100,\n
        "AAPL,current-extra", 2200,\n
        "AAPL,current-extra-in-sleep", 1600,\n
        "AAPL,device-internal", 0x02,\n
        "AAPL,max-port-current-in-sleep", 2100,\n
    })\n
}\n
end;


# special cases... (not in u430 DSDT)
#into scope label _SB.PCI0.XHC.RHUB.HS05 set_label begin _SB.PCI0.XHC1.RHUB.HS05 end;

It's done!


Updating to 10.13.2:

Just install Clover 4334 or more recent before install of the update.


 
To do list
 
- Replace VoodooHDA by aDummyHDA (AppleHDA Patcher).

Can't make mic/output jack work. I don't know how fix the layout.

 
- Hibernate

Hibernate not work. The system not resume. (temporarily disabled with "pmset -a hibernatemode 0")

Ps.: Sleep work.


- Brightness and Audio adjustment by FN keys

Need time to search DSDT patch.



Attached files used in the installation. For God's sake, always use the newest versions.
 
 
And last but not least
 
I would like to thank the following community members, by making these dream possible:
@crushers, @snatch, @apianti, @blackosx, @blusseau, @dmazar, @slice2009, @autumnrain, @phpdev32, @EMlyDinEsH, @RehabMan, @Scellow, @mitch_de, @Shailua, @Andy Vandijck, @maxfierke, @ArturXXX, @LexHimself, @brumas and all others members involved directly or indirectly.

Attached Files



#2
Luan Eduardo

Luan Eduardo

    InsanelyMac Protégé

  • Members
  • Pip
  • 22 posts
  • Gender:Male
  • Location:Rio de Janeiro, Brazil
COMPLETE REWRITTEN IN 11/24/2017 00:16 GMT





Also tagged with one or more of these keywords: high sierra, 10.13, 10.13.1, asus, vivobook, s400c, s400ca, s400ca-178h, 10.13.2


2 user(s) are reading this topic

2 members, 0 guests, 0 anonymous users


© 2017 InsanelyMac  |   News  |   Forum  |   Downloads  |   OSx86 Wiki  |   Designed by Ed Gain  |   Logo by irfan  |   Privacy Policy