Jump to content

Help installing Mojave on Xeon W-2175 and Asus WS C422 mobo


obus
 Share

852 posts in this topic

Recommended Posts

33 minutes ago, Ellybz said:

Have you tried enabling the  AppleCpuPmCfgLock option in OC?  (MSR 0xE2 write protection)

You can also try to mod your Bios with the UEFITool from Longsoft if you feel adventurous & the option in OC doesn't work. 

Screen Shot 2019-11-01 at 1.49.54 PM.png

I have tested setting AppleCPUPMCfgLock to true (YES) without any success, and yea I've tried to patch with UEFITool too.

Have a look here:  https://www.tonymacx86.com/threads/successfully-patched-z170x-ud5-th-cfg-lock-msr-ex02.253466/page-9

Edited by obus
  • Sad 1
Link to comment
Share on other sites

  • 4 weeks later...

Hi Obus,

 

Is your USB power working correctly? I am using your SSDT-ALL.aml. As I reverse compiled it to dsl, it seems USBX implementation is there., but I still couldn't properly charge iPad. The power is limited ot 500mA. Here is the SSDT-ALL.dsl:

 

/*
 * Intel ACPI Component Architecture
 * AML/ASL+ Disassembler version 20180427 (64-bit version)(RM)
 * Copyright (c) 2000 - 2018 Intel Corporation
 * 
 * Disassembling to non-symbolic legacy ASL operators
 *
 * Disassembly of SSDT-ALL.aml, Wed Nov 27 00:16:58 2019
 *
 * Original Table Header:
 *     Signature        "SSDT"
 *     Length           0x0000020A (522)
 *     Revision         0x01
 *     Checksum         0xF3
 *     OEM ID           "obus"
 *     OEM Table ID     "PLUG/EC"
 *     OEM Revision     0x00000000 (0)
 *     Compiler ID      "INTL"
 *     Compiler Version 0x20190509 (538510601)
 */
DefinitionBlock ("", "SSDT", 1, "obus", "PLUG/EC", 0x00000000)
{
    External (_SB_.PC00.LPC0, DeviceObj)    // (from opcode)
    External (_SB_.PC00.LPC0.EC0_, DeviceObj)    // (from opcode)
    External (_SB_.SCK0.CP00, DeviceObj)    // (from opcode)

    Method (DTGP, 5, NotSerialized)
    {
        If (LEqual (Arg0, ToUUID ("a0b5b7c6-1318-441c-b0c9-fe695eaf949b")))
        {
            If (LEqual (Arg1, One))
            {
                If (LEqual (Arg2, Zero))
                {
                    Store (Buffer (One)
                        {
                             0x03                                           
                        }, Arg4)
                    Return (One)
                }

                If (LEqual (Arg2, One))
                {
                    Return (One)
                }
            }
        }

        Store (Buffer (One)
            {
                 0x00                                           
            }, Arg4)
        Return (Zero)
    }

    Scope (\_SB.PC00.LPC0.EC0)
    {
        Method (_STA, 0, NotSerialized)  // _STA: Status
        {
            If (_OSI ("Darwin"))
            {
                Return (Zero)
            }
            Else
            {
                Return (0x0F)
            }
        }
    }

    Scope (\_SB)
    {
        Device (USBX)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
            {
                If (LEqual (Arg2, Zero))
                {
                    Return (Buffer (One)
                    {
                         0x03                                           
                    })
                }

                Return (Package (0x08)
                {
                    "kUSBSleepPowerSupply", 
                    0x13EC, 
                    "kUSBSleepPortCurrentLimit", 
                    0x0834, 
                    "kUSBWakePowerSupply", 
                    0x13EC, 
                    "kUSBWakePortCurrentLimit", 
                    0x0834
                })
            }
        }

        Scope (\_SB.PC00.LPC0)
        {
            Device (EC)
            {
                Name (_HID, "ACID0001")  // _HID: Hardware ID
                Method (_STA, 0, NotSerialized)  // _STA: Status
                {
                    If (_OSI ("Darwin"))
                    {
                        Return (0x0F)
                    }
                    Else
                    {
                        Return (Zero)
                    }
                }
            }
        }
    }

    Scope (\_SB.SCK0.CP00)
    {
        Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
        {
            Store ("Writing plugin-type to Registry!", Debug)
            If (LEqual (Arg2, Zero))
            {
                Return (Buffer (One)
                {
                     0x03                                           
                })
            }

            Return (Package (0x02)
            {
                "plugin-type", 
                One
            })
        }
    }
}

 

Thanks.

 

Link to comment
Share on other sites

9 hours ago, addoil said:

Hi Obus,

 

Is your USB power working correctly? I am using your SSDT-ALL.aml. As I reverse compiled it to dsl, it seems USBX implementation is there., but I still couldn't properly charge iPad. The power is limited ot 500mA. Here is the SSDT-ALL.dsl

My USB Power is working like a treat both under sleep and shut down. I'am using attached kext. Drop the old SSDT-ALL.aml and try this kext instead together wit my new attached SSDT:s. You need to run your rig as an iMacPro1,1 of course, otherwise you need to change iMacPro1,1 under IOKitPersonalities and model too that SMBIOS model you are running. For the moment I'am running Open Core 0.5.3 and using only attached SSDT:s instead of SSDT-ALL.aml.  This works with Clover too.

Screenshot 2019-12-03 at 15.16.05.png

Archive.zip

Edited by obus
Link to comment
Share on other sites

14 hours ago, obus said:

My USB Power is working like a treat both under sleep and shut down. I'am using attached kext. Drop the old SSDT-ALL.aml and try this kext instead together wit my new attached SSDT:s. You need to run your rig as an iMacPro1,1 of course, otherwise you need to change iMacPro1,1 under IOKitPersonalities and model too that SMBIOS model you are running. For the moment I'am running Open Core 0.5.3 and using only attached SSDT:s instead of SSDT-ALL.aml.  This works with Clover too.

Screenshot 2019-12-03 at 15.16.05.png

Archive.zip

Hi, I tried your files, but still cannot get more than 500mA. Would you please also share your config.plist? 

Link to comment
Share on other sites

13 hours ago, obus said:

Here we go.

EFI.zip

 

Thanks for the help. I connected iPad to one of the 4 back USB 3.0 ports, then I got additional currents for charging. 

 

It turns that USB power injects only works for C422 attached USB ports, namely 4 back USB 3.0 ports and 2 internal USB 3.0 ports. The back 2 USB 3.1 ports (1 USB-C 1 USB-A) are through ASM3142 controller, thus no power injection.

 

Do you know how to enable USB power for ASM3142 controller? 

Link to comment
Share on other sites

14 hours ago, addoil said:

 

Thanks for the help. I connected iPad to one of the 4 back USB 3.0 ports, then I got additional currents for charging. 

 

It turns that USB power injects only works for C422 attached USB ports, namely 4 back USB 3.0 ports and 2 internal USB 3.0 ports. The back 2 USB 3.1 ports (1 USB-C 1 USB-A) are through ASM3142 controller, thus no power injection.

 

Do you know how to enable USB power for ASM3142 controller? 

That is correct.

With my kext two of the back USB 3.0 ports are disconnected and the two front is working (to keep the USB 15 ports limit) I did this because I need the four USB 2.0 ports in the back for stuff like IR receiver, Bluetooth and Thunderbolt because there is only one internal. If yo deselect two of the four USB 2.0 ports in my kext you can add two more USB 3.0 ports front or back instead and still keep the 15 port limit. Another way is to set the XhciPortLimit in config.plist under Kernel -> Quirks to YES/True to override the 15 port limit (like injecting Rehabmans USBInjectAll.kext). I don't recommend that.

 

From my back and front USB C ports it looks like this for both ports:

Screenshot 2019-12-05 at 23.08.39.png

 

Should it be any additional power on that two ports?

Edited by obus
Link to comment
Share on other sites

6 hours ago, obus said:

That is correct.

With my kext two of the back USB 3.0 ports are disconnected and the two front is working (to keep the USB 15 ports limit) I did this because I need the four USB 2.0 ports in the back for stuff like IR receiver, Bluetooth and Thunderbolt because there is only one internal. If yo deselect two of the four USB 2.0 ports in my kext you can add two more USB 3.0 ports front or back instead and still keep the 15 port limit. Another way is to set the XhciPortLimit in config.plist under Kernel -> Quirks to YES/True to override the 15 port limit (like injecting Rehabmans USBInjectAll.kext). I don't recommend that.

 

From my back and front USB C ports it looks like this for both ports:

 

 

Should it be any additional power on that two ports?

 

 

Please see the screenshot, my motherboard C422 Sage/10G has 3 USB controllers. One is from Intel's C422 PCH, the other two are from ASM3142. I can get full power if iPad is plugged into PCH controlled USB controller. But from ASM3142 controller, iPad cannot charge. I am wondering if it's the same for you.

 

ASM3142 controller is in charge of the back USB 3.1 gen 2 type A (HS/SS01), USB 3.1 gen2 type c (HS/SS02) and USB 3.1 gen2 internal connector (not sure which port because I have no front USB connector)

 

 

Screen Shot 2019-12-05 at 8.23.05 PM.png

Link to comment
Share on other sites

On 11/25/2019 at 7:22 PM, Aoxiong said:

I started installing 10.15.1 to show this ,The motherboard is WS C422 PRO ,CPU W2191B656141f5a5937df63187153ceb658d4.thumb.jpg.3ab5b8663fbda4a4f07649e9db631366.jpg

 

Hi, have you configured your BIOS settings, OC config.plist, FwRuntimeServices properly? They may all contributes to this problem. reference: https://khronokernel-2.gitbook.io/opencore-vanilla-desktop-guide/extras/kalsr-fix#fixing-kalsr-slide-values

Link to comment
Share on other sites

8 hours ago, addoil said:

ASM3142 controller is in charge of the back USB 3.1 gen 2 type A (HS/SS01), USB 3.1 gen2 type c (HS/SS02) and USB 3.1 gen2 internal connector (not sure which port because I have no front USB connector.

The picture I sent above is with connected external hard disks on my ASM3142 ports back and front (internal). 

Available power connected is 900 mA. Should it be more?

I have no charging cable with USB-C so I can't check if the ports are working for charging my iPhone or iPad.

Edited by obus
Link to comment
Share on other sites

16 hours ago, obus said:

The picture I sent above is with connected external hard disks on my ASM3142 ports back and front (internal). 

Available power connected is 900 mA. Should it be more?

I have no charging cable with USB-C so I can't check if the ports are working for charging my iPhone or iPad.

 

If you plug your iPhone into the ASM3142 USB ports, do you still see "Extra Operating Current (mA): 1600" as in your picture?

 

 

1526617659_Screenshot2019-12-03at15_16_05.png.b28874af0de97a3f228fac5736fa6021.png

Link to comment
Share on other sites

13 hours ago, addoil said:

 

If you plug your iPhone into the ASM3142 USB ports, do you still see "Extra Operating Current (mA): 1600" as in your picture?

Nope. This is what I've get:

 

1118411649_Screenshot2019-12-07at17_54_54.thumb.png.09736d8bcc7384c3d3ce76306fb53481.png

 

How to fix this? I have no clue. Need to do some research. I haven't think of it before because I've always charging my iPhone thru USB 3.0 ports in the front.

Link to comment
Share on other sites

  • 2 weeks later...

The new OEM DSDT is suspected. Is extremally big -  760kb vs 130kb in 1202. After i put old OEM DSDT into EFI/Clover/ACPI/patched i get some progress in verbose boot. I have little understanding in ACPI-language so I have left further experiments, wrote to ASUS-support about non-functional MSR Configure Lock and now I'm just waiting for a new BIOS from ASUS...

Edited by yapan4
Link to comment
Share on other sites

2 hours ago, yapan4 said:

The new OEM DSDT is suspected. Is extremally big -  760kb vs 130kb in 1202. After i put old OEM DSDT into EFI/Clover/ACPI/patched i get some progress in verbose boot. I have little understanding in ACPI-language so I have left further experiments, wrote to ASUS-support about non-functional MCP Configure Lock and now I'm just waiting for a new BIOS from ASUS...

I have a similar discussion with Asus too (read from bottom and up):

 

Hi Again.

 

This is really funny because as I can see it shows the opposite regarding 1202.

(see attached pictures).

The first one is showing an unlocked MSR 0xE2 register with 1202 firmware and the second one is showing locked MSR 0xE2 register with firmware 3003 loaded.

For the moment I can use the 1202 firmware for my work but not with the 3003 firmware. Obviously there is something wrong here!

Why can’t you provide me with un unlocked MSR 0xE2 register? Gigabyte for example is providing motherboard with the same specifications with unlocked MSR 0xE2 register. Do I have to bye one of this motherboards and use that instead of the Asus C422,  just to get my work done?

For the records I know that the Asus Asus Prime X299 Deluxe motherboard has a unlocked MSR 0xE2 register so I can’t see the reason for why you don’t could provide me with an unlocked version for my WS C422 Pro/Se

 

With best regards

 

Obus Obusson

518331699_IMG_00632.thumb.jpeg.1a8cf3284a12a39c5e28a6ed6b848b5c.jpegIMG_0064.thumb.jpeg.261a4f7c987ae48b84b85fe389f1753d.jpeg

On 11 Dec 2019, at 10:25, servicecenter_emea@asus.com wrote:

 

 

Hello Obus,

Apologies for the delays.
Our HQ feedback that this register you requested opened, is not unlocked on any of the BIOS version on  this motherboard. This was checked on update version and factory BIOS.
Developement does not currently have plans to change this.

 

Best Regards,
Marko H
ASUS Nordic
Technical Support Department

Receive direct support for your ASUS All-in-One, Desktop, LCD,
Notebook, Mobile phone and Wireless.
From Sweden: 0046 (0)8 587 69 407
ASUS Supportsite: http://support.asus.com

 

"Please do not remove any of the previous correspondence in this mail.”
By sending emails to ASUS, you agree that ASUS may collect your email address, name of email account and other information included in your emails to ASUS to fulfill your request for customer support service, and also agree to the “ASUS Privacy Policy”.

Hello Obus,

Thank you for these details. We have passed this issue to our HQ for possible solution.
Unfortunately we cannot provide estimate of schedule at this time.
 

Best Regards,
Marko H
ASUS Nordic
Technical Support Department

 

 

"Please do not remove any of the previous correspondence in this mail.”

By sending emails to ASUS, you agree that ASUS may collect your email address, name of email account and other information included in your emails to ASUS to fulfill your request for customer support service, and also agree to the “ASUS Privacy Policy”.

 

From: Obus Obusson

Sent: 2019-11-13 23:09:30

Subject: Re: General-Specification;ASUS Service No=E1911003488

 

 

 

On 7 Nov 2019, at 15:48, servicecenter_emea@asus.com wrote:

 

   Customer Service Feedback

 

My motherboard is a WS C422 PRO/SE and the latest bios 3003 has a locked MSR 0xE2 register.

This was not the case for the 1202 bios and I’am now wondering why this suddenly is changed? I have no problems to downgrade from 3003 to 1202 and use 1202 in my work but then I have an outdated micro code. The result of this change is that I can’t use my motherboard with the new bios and the updated micro code, for those purpose I’ve bought the motherboard for, because I need an unlocked MSR 0xE2 register.

 

Regards

 

Obus Obusson 

WS C422 PRO/SE

  •  

##Please reply back with your answer above the line##

 

Hello Obus,

Could you elaborate on which product are you referring to?


The ASUS website publishes the latest BIOS versions to provide enhancements on system stability, compatibility, and performance. However, BIOS updating is potentially risky. If there is no problem using the current version of BIOS. DO NOT manually update the BIOS. Inappropriate BIOS updating may result to system's failure to boot.



Receive direct support for your ASUS All-in-One, Desktop, LCD,
Notebook, Mobile phone and Wireless.
From Sweden: 0046(0)8 587 69 407
ASUS Supportsite: http://support.asus.com

 

"Please do not remove any of the previous correspondence in this mail.”

By sending emails to ASUS, you agree that ASUS may collect your email address, name of email account and other information included in your emails to ASUS to fulfill your request for customer support service, and also agree to the “ASUS Privacy Policy”.

 

From:Obus.Obusson

Sent:2019-11-01 21:39:24

Subject:General-Specification

Apply Date : 2019/11/01 20:39:24.994 (UTC Time)

 

 

[Problem Description]

Firmware 3003 for my motherboard has suddenly a locked MSR 0xES register.

WHY?

It wasn't locked in the previous bios 1202.

I can't use my motherboard with a ,locked MSR 0xE2 register. If you want to change this you need to inform me as a customer. My work was ruined after loading the new bios.

 

 

 

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

If it is a bug of ASUS, for some reason I am sure that it will be fixed. If it's a bug by Intel (the CPU microcode developed by Intel), then it's a worse deal. Let's see ...

 

While We are waiting for a response from ASUS Support, it would be a good idea to correct the OEM DSDT.aml from BIOS v.3003. Who can help?:worried_anim:

 

ACPI origin v.3003.zip

Edited by yapan4
Link to comment
Share on other sites

1 hour ago, obus said:

 

I wouldn't use that utility for a number of different reasons. First off, it only changes the saved setting, so if you ever restore from defaults, it's gone. It also only works with very specific boards. I tried using it as my first step and had to heavily modify the code to even set the correct property on my Supermicro board. I have no idea if it would work with your board but having looked at the code, it's VERY specific to certain board configurations.

 

Instead, you should try modifying the BIOS itself. Chances are, there is a setting like MSR Lock Control in the BIOS, it's simply hidden. Using UEFITool, you can search for the relevant section, extract it, disassemble it with ifrextract, find the lines of code that are hiding it, patch them with a hex editor, resave it with UEFITool and flash your board. It's by no means easy but it means the setting will be visible in the BIOS and you can toggle it there.

Link to comment
Share on other sites

1 hour ago, eritius said:

 

I wouldn't use that utility for a number of different reasons. First off, it only changes the saved setting, so if you ever restore from defaults, it's gone. It also only works with very specific boards. I tried using it as my first step and had to heavily modify the code to even set the correct property on my Supermicro board. I have no idea if it would work with your board but having looked at the code, it's VERY specific to certain board configurations.

 

Instead, you should try modifying the BIOS itself. Chances are, there is a setting like MSR Lock Control in the BIOS, it's simply hidden. Using UEFITool, you can search for the relevant section, extract it, disassemble it with ifrextract, find the lines of code that are hiding it, patch them with a hex editor, resave it with UEFITool and flash your board. It's by no means easy but it means the setting will be visible in the BIOS and you can toggle it there.

I have tried to do what you are suggesting Trying to follow some old guide from PikerAlpha with no success. Could you elaborate a little further and maybe give me some guidance or tips of where I can find a guide?

I'am quite sure there is a hidden entry in the firmware , I just need to learn how to unhide it.

Link to comment
Share on other sites

3 hours ago, obus said:

I have tried to do what you are suggesting Trying to follow some old guide from PikerAlpha with no success. Could you elaborate a little further and maybe give me some guidance or tips of where I can find a guide?

I'am quite sure there is a hidden entry in the firmware , I just need to learn how to unhide it.

 

I'm not aware of a good guide, unfortunately. I'm not sure your personal comfort level with hex editors and reading some basic code, but those are prerequisites.

 

Tools you'll need:

 

Steps:

  1. Open your BIOS in UEFITool.
  2. Action > Search... by text for some key phrases. It could be called any number of different things. CFG? MSR? Double click on one of the results to jump to the section it's contained in. For my motherboards, the main section is called Platform.
  3. Once you find the section you think contains it, right click on the PE32 image section and export the body. Perusing through it, some of the options should look familiar to you. If not, that's probably a problem.
  4. Run ifrextract on the exported body to disassemble it into human readable text.
  5. Open the text file and search for that keyword. It will probably appear in a bunch of different places. You're looking for the most likely candidate. My motherboard called it "MSR Lock Control". Hard to say though.
  6. Once you find the relevant setting, look for why it's disabled. There's probably a wrapping command within that form called something like Suppress If True. What we want to do is rewrite whatever is suppressing it to... not.
  7. To the left of each line, there is a hex byte offset within the binary for that line. The right end of each line contains in { } braces the hex corresponding to the code on that line. Copy the byte offset for the code that's hiding the option.
  8. Open your trusty hex editor and open the extracted binary (not the human-readable result of ifrextract) and jump to that byte offset. Verify that the hex at that offset matches the hex in the { } braces.
  9. Next, we want to modify that command to always show instead of hide. If it's something like Suppress If True, we want it to be Suppress If False. If it's something like If 0 == 1, we want to change it to If 0 == 0. You'll have to look up the UEFI byte codes corresponding to that.
  10. Rewrite the relevant bytes in the hex editor and save as something else.
  11. Run ifrextract again but on your modified binary and verify that the code is modified as you expected.
  12. In UEFITool, right-click the PE32 image section you extracted and choose Replace body... and select the modified binary that you edited.
  13. Save as with a new name. This is your modified bios.
  14. Flash the modified BIOS to your board. Good luck!
Edited by eritius
  • Like 4
Link to comment
Share on other sites

8 hours ago, eritius said:

 

I'm not aware of a good guide, unfortunately. I'm not sure your personal comfort level with hex editors and reading some basic code, but those are prerequisites.

Ok.

In attached extracted *.bin file I have both CFG Lock, MSR Lock Control and Package Power Limit MSR Lock. 

The first one (CFG Lock) is Enabled/locked (0x1).

The second one (MSR Lock Control) is 0x15 which is unfamiliar for me. This is the same as you changed in your firmware if I understand you correctely. But you changed it from 0x1 --> 0x0 and not from 0x15?.

The third one (Package Power Limit MSR Lock) is enabled/locked (0x1) like the CFG Lock. 

Now to the "one hundred thousand dollar question" which one (s) should I change?

 

Any ideas

3003.text

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

Good job, @obus

But I think you're confused in lock/unlock and hide/unhide, no?

 

If you be able unhide this options then they will be available in BIOS Setup. Then it will be possible to lock / unlock direct from BIOS Setup. For example MSR Lock Control Menu unhided since v.0603 and was hided in v0505. If hide him - this menu no more will be available in BIOS setup.

 

 

 

0.jpeg

Edited by yapan4
Link to comment
Share on other sites

 Share

×
×
  • Create New...