Jump to content

HP Envy 17t-j000 Quad (Haswell) + 10.8.5/10.9.5/10.10.x/10.11.x/10.12.x/10.13.x/10.14.x


gygabyte666
 Share

1,321 posts in this topic

Recommended Posts

One other thing I found when I tried to redo everything from scratch is that install_downloads.sh doesn't install AppleBacklightInjector.kext, you have to compile that with the backlight patch before hand, and one question I had for RehabMan was, if it was normal to not have those transitions when changing brightness or having the screen shutdown when you hit the lowest brightness point.

Thanks guys for the precious help

I guess I need to run patch_backlight.sh from install_downloads.sh. I haven't actually tried everything on a fresh install yet.

 

Normal to not have smooth transitions... that was the reason I did all the work on ACPIBacklight.kext to add them. But ACPIBacklight.kext is not currently working. I may be able to fix it eventually, but I'll probably wait until after final.

 

It is normal for the screen to turn off at the lowest point. It is how Macs work.

 

EDIT: USB was working fine for me with simple DSDT renaming, but I wanted to try what was posted, so when XCHIMux got installed, I couldn't get access to my HP Truevision no more on FaceTime, and so I installed USB_Envy.kext and it got back a message I used to see on boot about ports limit being reached but still the webcam wouldn't work, then I deleted both files and it's back working again.

Do you have your USB3 set to "auto" in BIOS?

What is the "port limit message"?

Is your Envy a K or J series?

 

From looking at ioreg on J, there is a ridiculous number of USB ports. Someone that has the laptop will need to determine which ones are real.

The XCHIMux does cause the Bluetooth device to not be detected.

Are you using the port injector?

Which series K or J?

Is your BIOS USB3 setting "auto"?

 

@OtechMan I noticed as I recompiled from scratch too and while everything works with @Rehabman's DSDT and SSDTs, I get the occasional screen flicker upon boot up. This happened back with Yosemite before @Rehabman applied his latest patches back at the end of April.

There is no patch for the boot glitch yet. Just haven't looked at it, and may wait a while... (as it is likely to change before final).

Link to comment
Share on other sites

Do you have your USB3 set to "auto" in BIOS?

What is the "port limit message"?

Is your Envy a K or J series?

 

From looking at ioreg on J, there is a ridiculous number of USB ports. Someone that has the laptop will need to determine which ones are real.

Yes it is set to auto

Here is the message displayed: 

Jul 11 02:26:15 localhost kernel[0]: 000005.894214 XHC@14000000: AppleUSBXHCIPCI::createPorts: ports limit reached.  Not creating the remaining 6 ports

And it's a J series.

 

Thanks for the clarifications about backlight :)

(About the boot glitch, I see none, is it because I always boot in verbose mode?)

 

EDIT: first time I use ioreg and I think that's what you meant by lots of ports?

now how would one go about figuring to the real ones and then when that's done, what is the next step to be undertaken?bBzOSUx.png

Link to comment
Share on other sites

Yes it is set to auto

Here is the message displayed: 

Jul 11 02:26:15 localhost kernel[0]: 000005.894214 XHC@14000000: AppleUSBXHCIPCI::createPorts: ports limit reached.  Not creating the remaining 6 ports
And it's a J series.

 

Thanks for the clarifications about backlight :) 

(About the boot glitch, I see none, is it because I always boot in verbose mode?)

 

Post ioreg without the USBXHCI_Envy.kext installed. I want to see which ports are active without the port filter...

 

Also, I'd like to see ioreg with and without FakePCIID_XHCIMux.kext.

 

And with FakePCIID_XHCIMux.kext installed, output of:

grep -y fakepciid /var/log/system.log
Also, can you post DSDT (output from 'patchmatic -extract' would work)? In theory, we can eliminate any port that is 'not connectable' (in _UPC) and is not user-visible (in _PLD).
Link to comment
Share on other sites

Do you have your USB3 set to "auto" in BIOS?

What is the "port limit message"?

Is your Envy a K or J series?

 

From looking at ioreg on J, there is a ridiculous number of USB ports. Someone that has the laptop will need to determine which ones are real.

 

Are you using the port injector?

Which series K or J?

Is your BIOS USB3 setting "auto"?

 

 

There is no patch for the boot glitch yet. Just haven't looked at it, and may wait a while... (as it is likely to change before final).

My "USB 3.0 in a pre-boot" is set to enabled instead of auto. Also my Envy series is the J with no port injector.

 

@OtechMan, I boot either in verbose or regular mode and it's like 50/50 that the quick flash of the screen will happen. If it happens, it will show about 1/2 second when you see the verbose screen. For some reason, I haven't had the flash on the DSDT and SSDT files I posted.

 

@Rehabman are you talking about the gambled screen once the progress bar of OS X moves towards 100% or the quick flash of the screen once verbose mode or the process bar starts? Usually I don't mind the gambled screen, was just wondering why the quick flash is happening roughly 50/50 of the time while booting with the new files.

Link to comment
Share on other sites

Post ioreg without the USBXHCI_Envy.kext installed. I want to see which ports are active without the port filter...

 

Also, I'd like to see ioreg with and without FakePCIID_XHCIMux.kext.

 

And with FakePCIID_XHCIMux.kext installed, output of:

grep -y fakepciid /var/log/system.log
Also, can you post DSDT (output from 'patchmatic -extract' would work)? In theory, we can eliminate any port that is 'not connectable' (in _UPC) and is not user-visible (in _PLD).

 

As requested here are the files:

https://www.dropbox.com/s/ndpdxbpdb71vycv/With%20FakePCIID_XHCIMux.kext.zip?dl=0

https://www.dropbox.com/s/z9r84p8c8e1f0f7/Without%20USBXHCI_Envy.kext%20and%20FakePCIID_XHCIMux.kext.ioreg.zip?dl=0

 

EDIT: as for the DSDT, I was discussing it with Andrw0380, my DSDT and SSDTs always get extracted but when comes the time for them to be patched and compiled to aml, a lot of errors show up, this doesn't seem to happen with him, and his files work with my config, so his can be used, or I can just post my unmatched DSDT if you so wish

Link to comment
Share on other sites

My "USB 3.0 in a pre-boot" is set to enabled instead of auto. Also my Envy series is the J with no port injector.

I'd like to see the same files I requested from @OtechMan...

 

The idea: I like to know if XHCIMux works with any BIOS configuration. And then why (hence the system.log output from fakepciid).

 

Test on both Yosemite and 10.11.

 

@Rehabman are you talking about the gambled screen once the progress bar of OS X moves towards 100% or the quick flash of the screen once verbose mode or the process bar starts? Usually I don't mind the gambled screen, was just wondering why the quick flash is happening roughly 50/50 of the time while booting with the new files.

Quick flash is a reality, since in order to work with AppleBacklight.kext, we have conform to OS X idea of LMAX[0xad9](PWM max for backlight controller), not BIOS.

 

But I was talking about the "boot glitch" which I'm having mixed results with the 10.10 patch (I haven't even checked if the "Find" pattern is there).

Is this with or without USBXHCI_Envy.kext (port injector)? I think FakePCIID_XHCIMux.kext(USB2 port routing from XHC) is a no-go without a proper USBXHCI_Envy.kext.

 

I'll wait for DSDT.

 

Edit: Try the new port injector I just pushed. I got rid of HS15,HS13,HS12,HS11,HS10,HS09,HS08 on XHC.

Link to comment
Share on other sites

I'd like to see the same files I requested from @OtechMan...

 

The idea: I like to know if XHCIMux works with any BIOS configuration. And then why (hence the system.log output from fakepciid).

 

Test on both Yosemite and 10.11.

 

 

Quick flash is a reality, since in order to work with AppleBacklight.kext, we have conform to OS X idea of LMAX[0xad9](PWM max for backlight controller), not BIOS.

 

But I was talking about the "boot glitch" which I'm having mixed results with the 10.10 patch (I haven't even checked if the "Find" pattern is there).

 

Is this with or without USBXHCI_Envy.kext (port injector)? I think FakePCIID_XHCIMux.kext(USB2 port routing from XHC) is a no-go without a proper USBXHCI_Envy.kext.

 

I'll wait for DSDT.

Well that is without the USBXHCI_Envy.kext, as I tried with it and it was a no-go with the webcam, but do tell me if you want it installed again or what type of setting you want and I'll try it.

Here is the extracted DSDT, unpatched.

https://www.dropbox.com/s/hr22ercdvxhjj5z/DSDT.dsl?dl=0

Link to comment
Share on other sites

Well that is without the USBXHCI_Envy.kext, as I tried with it and it was a no-go with the webcam, but do tell me if you want it installed again or what type of setting you want and I'll try it.

Here is the extracted DSDT, unpatched.

https://www.dropbox.com/s/hr22ercdvxhjj5z/DSDT.dsl?dl=0

Unfortunately the DSDT is doing the visibility thing in code.

 

For example, _PLD from HS01:

                    Method (_PLD, 0, Serialized)  // _PLD: Physical Location of Device
                    {
                        Name (PLDP, Package (0x01)
                        {
                            Buffer (0x10)
                            {
                                /* 0000 */  0x01, 0xC6, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00,
                                /* 0008 */  0x69, 0x0C, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00 
                            }
                        })
                        CreateBitField (DerefOf (Index (PLDP, Zero)), 0x40, VIS)
                        If (LNot (And (PR2S (One), PR2)))
                        {
                            And (VIS, Zero, VIS)
                        }

                        Return (PLDP)
                    }
So, VIS bit (which is user-visibility of the port) is based on what PR2S returns.

 

PR2S is this monster:

            Method (PR2S, 1, Serialized)
            {
                Name (_T_1, Zero)  // _T_x: Emitted by ASL Compiler
                Name (_T_0, Zero)  // _T_x: Emitted by ASL Compiler
                If (LEqual (And (CDID, 0xF000), 0x8000))
                {
                    While (One)
                    {
                        Store (Arg0, _T_0)
                        If (LEqual (_T_0, One))
                        {
                            Return (One)
                        }
                        Else
                        {
                            If (LEqual (_T_0, 0x02))
                            {
                                Return (0x02)
                            }
                            Else
                            {
                                If (LEqual (_T_0, 0x03))
                                {
                                    Return (0x04)
                                }
                                Else
                                {
                                    If (LEqual (_T_0, 0x04))
                                    {
                                        Return (0x08)
                                    }
                                    Else
                                    {
                                        If (LEqual (_T_0, 0x05))
                                        {
                                            Return (0x0100)
                                        }
                                        Else
                                        {
                                            If (LEqual (_T_0, 0x06))
                                            {
                                                Return (0x0200)
                                            }
                                            Else
                                            {
                                                If (LEqual (_T_0, 0x07))
                                                {
                                                    Return (0x0400)
                                                }
                                                Else
                                                {
                                                    If (LEqual (_T_0, 0x08))
                                                    {
                                                        Return (0x0800)
                                                    }
                                                    Else
                                                    {
                                                        If (LEqual (_T_0, 0x09))
                                                        {
                                                            Return (0x10)
                                                        }
                                                        Else
                                                        {
                                                            If (LEqual (_T_0, 0x0A))
                                                            {
                                                                Return (0x20)
                                                            }
                                                            Else
                                                            {
                                                                If (LEqual (_T_0, 0x0B))
                                                                {
                                                                    Return (0x1000)
                                                                }
                                                                Else
                                                                {
                                                                    If (LEqual (_T_0, 0x0C))
                                                                    {
                                                                        Return (0x2000)
                                                                    }
                                                                    Else
                                                                    {
                                                                        If (LEqual (_T_0, 0x0D))
                                                                        {
                                                                            Return (0x40)
                                                                        }
                                                                        Else
                                                                        {
                                                                            If (LEqual (_T_0, 0x0E))
                                                                            {
                                                                                Return (0x80)
                                                                            }
                                                                            Else
                                                                            {
                                                                                If (LEqual (_T_0, 0x0F))
                                                                                {
                                                                                    Return (0x4000)
                                                                                }
                                                                            }
                                                                        }
                                                                    }
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }

                        Break
                    }
                }
                Else
                {
                    While (One)
                    {
                        Store (Arg0, _T_1)
                        If (LEqual (_T_1, One))
                        {
                            Return (One)
                        }
                        Else
                        {
                            If (LEqual (_T_1, 0x02))
                            {
                                Return (0x02)
                            }
                            Else
                            {
                                If (LEqual (_T_1, 0x03))
                                {
                                    Return (0x04)
                                }
                                Else
                                {
                                    If (LEqual (_T_1, 0x04))
                                    {
                                        Return (0x08)
                                    }
                                    Else
                                    {
                                        If (LEqual (_T_1, 0x05))
                                        {
                                            Return (0x10)
                                        }
                                        Else
                                        {
                                            If (LEqual (_T_1, 0x06))
                                            {
                                                Return (0x20)
                                            }
                                            Else
                                            {
                                                If (LEqual (_T_1, 0x07))
                                                {
                                                    Return (0x40)
                                                }
                                                Else
                                                {
                                                    If (LEqual (_T_1, 0x08))
                                                    {
                                                        Return (0x80)
                                                    }
                                                    Else
                                                    {
                                                        If (LEqual (_T_1, 0x09))
                                                        {
                                                            Return (0x0100)
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }

                        Break
                    }
                }
            }
From looking at it it compares against CDID and returns visible for ports 1-9 (else) or ports 1-15. Not really surprising.

 

In addition, though it depends on the value of PR2. Which is a mask set on the XHCI controller telling which USB2 ports on the XHC controller *are* being routed to EHC1. This is different from PR2M which tells which USB2 ports on XHC *can* be routed to EHC1.

 

You could instrument this stuff with ACPIDebug. Somewhere in an _INI, call each of the _PLD methods just to see how the visibility bit comes out and print the result to system.log. That would tell you which ports are user visible, which you could then cross reference against all ports that we know are not "connectable". The ports which are not user-visible and are not-connectable are not used on the platform (non user-visible ports that are connectable are to dedicated devices such as finger print readers, bezel webcams, etc.)

 

It could also be that the data in DSDT is wrong. And that might explain why without the port injector it only counts up to SSP1, because it hit the 15-port limit with HS01->HS14+SSP1. This is where port overriding comes in. Unless you only have one SS port?

Well that is without the USBXHCI_Envy.kext, as I tried with it and it was a no-go with the webcam, but do tell me if you want it installed again or what type of setting you want and I'll try it.

Here is the extracted DSDT, unpatched.

https://www.dropbox.com/s/hr22ercdvxhjj5z/DSDT.dsl?dl=0

Try with the new, stripped down port injector.

 

I think having the EH01/EH02 is important when XHCIMux is in play... (and I see no ioreg with the port injector)

Link to comment
Share on other sites

Try with the new, stripped down port injector.

I think having the EH01/EH02 is important when XHCIMux is in play... (and I see no ioreg with the port injector)

 

 

I'm not going to pretend I understood everything you said, I'll probably need to reread your explanation multiple time :P

but here is the ioreg with both of them installed (with the new port injector):

the webcam isn't getting detected and devices are being listed under usb 2.0 in System report

https://www.dropbox.com/s/guoeccfigz0n42f/with%20both%20Kexts.zip?dl=0

 

 

I'm off to bed as it's 4:45am here and a long day of fasting awaits, but I'm always on my phone so if there is anything, i'll be sure to get back to you right away

Have a good night sir.

Link to comment
Share on other sites

I'm not going to pretend I understood everything you said, I'll probably need to reread your explanation multiple time :P

but here is the ioreg with both of them installed (with the new port injector):

the webcam isn't getting detected and devices are being listed under usb 2.0 in System report

https://www.dropbox.com/s/guoeccfigz0n42f/with%20both%20Kexts.zip?dl=0

 

 

I'm off to bed as it's 4:45am here and a long day of fasting awaits, but I'm always on my phone so if there is anything, i'll be sure to get back to you right away

Have a good night sir.

OK, I note you're not using my DSDT/config.plist setup (my repo doesn't inject AAPL,clock-id from either on XHC)...

 

But it probably doesn't matter...

 

It could be that your webcam cannot be routed from XHC to EHC. It is on port 7. We can override what XHCMux does with that port.

 

# 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
"RM,pr2-force", Buffer() { 0x40, 0, 0, 0, },\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;
That should keep port 7 USB2 on XHC (bit 6 corresponds to port 7) and route the rest to EHC1.

(I indented it funky just so you can see the additional property).

 

You can keep XHCMux from routing any other port in the same way... (just set the bit to 1 corresponding to the port in the 32-bit buffer).

 

Normally, the BIOS should set PR2M such that software knows not to route this port, but it obviously isn't doing that.

 

Unless something else is going on.

 

If the problem happens with other devices/ports, then I'm not sure about this... I haven't run into a computer yet where XHCMux messes up all the ports. It is working flawlessly on three different computers I have here.

 

It could be that your DSDT is not patched for the correct Windows version (as I noted you're not using my patches, or not using my config.plist setup, not sure which). I've changed recently from "Windows 2012" (Win8) to "Windows 2009" (win7).

 

Note: I probably won't be able to check on things for a couple of days, so feel free to experiment.

 

----

 

 

I see a problem with your files now... Maybe 'the' problem.

 

You have neglected to rename EHC1/EHC2 -> EH01/EH02. This is required for the port injector to work.

 

I'd suggest you run your native ACPI files through my scripts instead of doing whatever you're doing for ACPI patching...

Link to comment
Share on other sites

(Only a push notification needed for me to wake up)

But to answer you, believe me when I say I tried to patch it with your scripts.

Are there any pre-requisites?

Should the computer boot without any dsdt dsdt for it to work? Because when I try the make command, I'm stuck with errors.

Link to comment
Share on other sites

(Only a push notification needed for me to wake up)

But to answer you, believe me when I say I tried to patch it with your scripts.

Are there any pre-requisites?

Should the computer boot without any dsdt dsdt for it to work? Because when I try the make command, I'm stuck with errors.

You must run ./disassemble.sh with a Clover configuration that leaves all DSDT/SSDT files native.

 

That means:

- no patched files in ACPI/patched

- no SSDTs listed in config.plist/ACPI/DropTables

- config.plist/ACPI/SSDT/DropOem=false

- no so-called Clover DSDT "Fixes"

 

See config.plist files here: https://github.com/RehabMan/OS-X-Clover-Laptop-Config

 

Generally, you put such a config.plist on a USB (usually used for the installer) and use that to boot prior to running ./disassemble.sh.

 

If you have incorrect files in ./unpatched, make sure you do 'make cleanallex' before running ./disassemble.sh.

 

It is all in my guide (I know not on this site, but you can read it anyway).

 

You also must be using the tools provide by ./download.sh, and ./install_downloads.sh. It will not work if you're not using the correct version of iasl (correct in this case is my version).

 

The alternate is to place the exact directory structure from /sys/firmware/acpi/tables into ./native_linux. Then run ./disassemble.sh (make sure there is only readme.txt in native_patchmatic, and don't forget 'make cleanallex'). Clover files from ACPI/origin can be used too (they go in native_patchmatic), but sometimes Clover makes duplicates, so you may have to filter them. Because of that and because of the difficulty some people have pressing F4, I didn't push the Clover method of extraction in the guide.

 

By far the easiest way, is the default using a clean Clover config and patchmatic -extract (that's what ./disassemble.sh does).

Link to comment
Share on other sites

It could also be that the data in DSDT is wrong. And that might explain why without the port injector it only counts up to SSP1, because it hit the 15-port limit with HS01->HS14+SSP1. This is where port overriding comes in. Unless you only have one SS port?

Try with the new, stripped down port injector.

 

I think having the EH01/EH02 is important when XHCIMux is in play... (and I see no ioreg with the port injector)

 

At least on my j-070 Envy only has one SS port. I think the main issue is these Envy computers only have physical USB 3.0 ports and no USB 2.0.

 

I tried your DSDT patch to try and keep the webcam on port 7 but applying that using the Mux kext and port injector still doesn't have webcam and the Bluetooth adapter detected. I removed the Mux kext and kept the updated DSDT and port injector and everything is detected so at least the port injector isn't causing that issue.

 

This is what the USB looks like with the port injector and no Mux and with no port injector and no Mux. I wonder if the port injector is applying correctly. When I do apply the injector, it doesn't show as Loaded in extensions.

post-923358-0-58794500-1436623866_thumb.jpg

Link to comment
Share on other sites

At least on my j-070 Envy only has one SS port. I think the main issue is these Envy computers only have physical USB 3.0 ports and no USB 2.0.

Each port on XHC controller has two ports: 1 USB2 and 1 USB3 (they use separate pins). EHC1 controller is part of the chipset too. XHCIMux routes USB2 pins on XHC controller to EHC. I had an Envy-J. For a while I used GenericUSBXHCI.kext with -gux_defer_usb2. -gux_defer_usb2 manipulates the same register as XHCIMux.

 

I tried your DSDT patch to try and keep the webcam on port 7 but applying that using the Mux kext and port injector still doesn't have webcam and the Bluetooth adapter detected. I removed the Mux kext and kept the updated DSDT and port injector and everything is detected so at least the port injector isn't causing that issue.

No idea without seeing "patchmatic -extract" output and ioreg.

Link to comment
Share on other sites

Each port on XHC controller has two ports: 1 USB2 and 1 USB3 (they use separate pins). EHC1 controller is part of the chipset too. XHCIMux routes USB2 pins on XHC controller to EHC. I had an Envy-J. For a while I used GenericUSBXHCI.kext with -gux_defer_usb2. -gux_defer_usb2 manipulates the same register as XHCIMux.

 

I see that make sense as when I first installed Yosemite and wanted to see what the -gux_defer_usb2 with the GenericUSBXHCI.kext and it did cause some of my USB devices to not recognize. Must be with the Envy series, the usb connections are connected to the USB 3.0 port instead of the USB 2.0 on the XHC controller. At least we figured out and it works now!

Link to comment
Share on other sites

I see that make sense as when I first installed Yosemite and wanted to see what the -gux_defer_usb2 with the GenericUSBXHCI.kext and it did cause some of my USB devices to not recognize. Must be with the Envy series, the usb connections are connected to the USB 3.0 port instead of the USB 2.0 on the XHC controller. At least we figured out and it works now!

I removed XHCIMux from the install script for now. People can test on their own accord and report if it works in any scenario. Especially those that are using my ACPI patches as provided.

 

Does the port injector (USBXHCI_Envy.kext) work ok now?

 

Edit: At least one example of FakePCIID_XHCIMux not working has it now working (from my suggestion) with config.plist/Devices/USB/FixOwnership=true

 

Edit #2: Added FakePCIID_XHCIMux back into install_downloads.sh and FixOwnership=true in config.plist. We'll see if that fixes the problem for those following the guide/repo.

Link to comment
Share on other sites

I removed XHCIMux from the install script for now. People can test on their own accord and report if it works in any scenario. Especially those that are using my ACPI patches as provided.

 

Does the port injector (USBXHCI_Envy.kext) work ok now?

 

Edit: At least one example of FakePCIID_XHCIMux not working has it now working (from my suggestion) with config.plist/Devices/USB/FixOwnership=true

 

Edit #2: Added FakePCIID_XHCIMux back into install_downloads.sh and FixOwnership=true in config.plist. We'll see if that fixes the problem for those following the guide/repo.

Well thanks to you, i finally succeeded in having my own SSDTs and DSDT patched from the repo and so went on to try your suggestion, with you config.plist, added the FixOwnership=true but that doesn't change a thing (the webcam is the best way for me to check if it works).

I deleted the FakePCIID_XHCIMux (only port injector remaining) and now when booting I don't get that message I used to have about ports limit with everything else working webcam, and all visible ports working

Link to comment
Share on other sites

Well thanks to you, i finally succeeded in having my own SSDTs and DSDT patched from the repo and so went on to try your suggestion, with you config.plist, added the FixOwnership=true but that doesn't change a thing (the webcam is the best way for me to check if it works).

I deleted the FakePCIID_XHCIMux (only port injector remaining) and now when booting I don't get that message I used to have about ports limit with everything else working webcam, and all visible ports working

Make sure you're using the current repo.

 

Post EFI/Clover folder if you want me to check.

---

 

Also post ioreg. I'd still like to see what's going on with FakePCIID_XHCIMux.

 

Also, post output of 'grep -y usb /var/log/system.log'...

 

Note: Current install_downloads.sh excludes USBXHCI_Envy.kext from installation, even though the kext is updated with current information provided so far. I'll leave it up to those with the laptop to test/finalize.

Link to comment
Share on other sites

Sure thing.
it is kind of frustrating, I went to check BIOS and found that the USB 3 setting was set to Enabled and not auto, so I changed it thinking it was the problem, and then I installed the XHCIMux.kext again, upon restarting, the usb 2 devices are correctly reported under usb 2 but the webcam isn't there listed.
Anyways just wanted to post up the latest updates. I saw on other forums some success with this kext.

 

https://www.dropbox.com/s/gi8z60u4qohcw73/CLOVER.zip?dl=0

 

I wonder if changing the smbios will affect anything

 

EDIT:  remaining files ioreg and grep
https://www.dropbox.com/s/m6grqytmm71aaty/ioreg%20%26%20grep.zip?dl=0

Link to comment
Share on other sites

Sure thing.

it is kind of frustrating, I went to check BIOS and found that the USB 3 setting was set to Enabled and not auto, so I changed it thinking it was the problem, and then I 

installed the XHCIMux.kext again, upon restarting, the usb 2 devices are correctly reported under usb 2 but the webcam isn't there listed.

Anyways just wanted to post up the latest updates. I saw on other forums some success with this kext.

 

https://www.dropbox.com/s/gi8z60u4qohcw73/CLOVER.zip?dl=0

 

I wonder if changing the smbios will affect anything

 

EDIT:  remaining files ioreg and grep

https://www.dropbox.com/s/m6grqytmm71aaty/ioreg%20%26%20grep.zip?dl=0

OK, managed to compare your ACPI files in ACPI/patched against those that I created myself by patching the ones you have in ACPI/origin. And they have the correct patches from my script (so that much is good). It was a bit tricky to compare as you didn't use my install script ('make install') so they don't have the expected names. But they still appear to load in the correct order and are identically patched...

 

Please post ioreg without FakePCIID_XHCIMux.kext installed (all other things same). I need to know where the camera is connecting on XHC.

Link to comment
Share on other sites

Yes sir :D

Here is the ioreg without the HXCIMux Kext

https://www.dropbox.com/s/srqwza8r4p8k8hv/without%20the%20Kext.zip?dl=0

 

(you can't believe how happy i was to finally get a dsdt error free)

Try this patch to XHC (from post #836):

# 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
"RM,pr2-force", Buffer() { 0x40, 0, 0, 0, },\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;
Setting RM,pr2-force to 0x40 should cause USB2-port7 on XHC to NOT route EHC1 (EH01).

 

You can see where this patch is applied in patches/usb.txt (and modify usb.txt itself), or you can apply the patch to patched/DSDT.dsl directly (then use 'make' to build it to build/DSDT.aml)... then, of course, install to ACPI/patched.

 

I should clarify... this mod is intended to be used with FakePCIID_XHCIMux.kext. The expected result would be that all USB2 devices on XHC, except for the camera, go to EH01.

Link to comment
Share on other sites

Try this patch to XHC (from post #836):

# 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
"RM,pr2-force", Buffer() { 0x40, 0, 0, 0, },\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;
Setting RM,pr2-force to 0x40 should cause USB2-port7 on XHC to NOT route EHC1 (EH01).

 

You can see where this patch is applied in patches/usb.txt (and modify usb.txt itself), or you can apply the patch to patched/DSDT.dsl directly (then use 'make' to build it to build/DSDT.aml)... then, of course, install to ACPI/patched.

 

I should clarify... this mod is intended to be used with FakePCIID_XHCIMux.kext. The expected result would be that all USB2 devices on XHC, except for the camera, go to EH01.

 

SO, I did patch the DSDT file and put it inside the patched folder of my EFI partition and installed, I also reinstalled FakePCIID_XHCIMux.kext. with the rest being no change at all.

you'll find attached the DSDT just so we're sure it has been patched correctly, but I suppose it was since i used the make command then the ioreg.

https://www.dropbox.com/s/l1toohv4v7lkj4n/with%20dsdt%20patch.zip?dl=0

Link to comment
Share on other sites

SO, I did patch the DSDT file and put it inside the patched folder of my EFI partition and installed, I also reinstalled FakePCIID_XHCIMux.kext. with the rest being no change at all.

you'll find attached the DSDT just so we're sure it has been patched correctly, but I suppose it was since i used the make command then the ioreg.

https://www.dropbox.com/s/l1toohv4v7lkj4n/with%20dsdt%20patch.zip?dl=0

What is output of 'grep -y fakepciid /var/log/system.log'?

 

Next step is to try each bit one-by-one (because maybe we don't understand ... eg. you've already tried 0x40, next try: 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40 (already tried), 0x80, 0x100, 0x200, 0x400, 0x800, 0x1000, 0x2000.

 

Note: Byte reversal in effect, so as example: 0x200 { 0, 0x02, 0, 0 }, and 0x1000 { 0, 0x10, 0, 0 }

Link to comment
Share on other sites

What is output of 'grep -y fakepciid /var/log/system.log'?

 

Next step is to try each bit one-by-one (because maybe we don't understand ... eg. you've already tried 0x40, next try: 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40 (already tried), 0x80, 0x100, 0x200, 0x400, 0x800, 0x1000, 0x2000.

 

Note: Byte reversal in effect, so as example: 0x200 { 0, 0x02, 0, 0 }, and 0x1000 { 0, 0x10, 0, 0 }

OK so just to check if I understood correctly. This is what we tried { 0x40, 0, 0, 0, } (getting inspired from this)

and this is what I need to try (i'm confused with all the zeros and if i should add or remove them):

0x01 { 0x01, 0, 0, 0,  }

0x02 { 0x02, 0, 0, 0,  }

0x04 { 0x04, 0, 0, 0,  } 

0x08 { 0x08, 0, 0, 0,  } 

0x10 { 0x10, 0, 0, 0,  } 

0x20 { 0x20, 0, 0, 0,  }

0x40 { 0x40, 0, 0, 0, } (base for my reasoning)

0x80 { 0x80, 0, 0, 0,  } 

0x100 { 0, 0x10, 0, 0, 0,  } 

0x200 { 0, 0x20, 0, 0, 0,  }

0x400 { 0, 0x40, 0, 0, 0,  } 

0x800 { 0, 0x80, 0, 0, 0,  } 

0x1000  { 0, 0, 0x10, 0, 0, 0,  }

0x2000 { 0, 0, 0x20, 0, 0, 0,  }

 

is all this right or am I making a fool out of myself, i tried looking up byte reversal but with no good link to read.

and then should I just replace those values instead of the old existing one?

Link to comment
Share on other sites

 Share

×
×
  • Create New...