Jump to content

[GUIDE] USB Fix El Capitan 10.11


829 posts in this topic

Recommended Posts

Ā 

Can somebody remove the two errors... i don't know a lot about DSDT... i would love to get my USB3 working....

Ā 

Or can someone explain what the 2 errors are? I can not compile it....

Ā 
Like most of us... the USB3 ports are working .... only with usb2 devices... when connecting a usb3 device, it is just not found...

Ā 

Ā 

Upload the .dsl, not the .aml. Ā When I complied what you uploaded, I had over 200 errors. Ā That's common.

Link to comment
Share on other sites

@shot - i had a similar issue not long ago - seems like i got a newer IASL compiler and was able to decompile without getting a bunch of lines "zero" lines and errors. it maybe that the compiler is too old to decompile the .aml file properly so i would try that. Ā the IASL in the MacIASL you used is from 2012.

Ā 

you may want create a port injector to define your ports vs doing it in DSDT.

Link to comment
Share on other sites

@shot - i had a similar issue not long ago - seems like i got a newer IASL compiler and was able to decompile without getting a bunch of lines "zero" lines and errors. it maybe that the compiler is too old to decompile the .aml file properly so i would try that. Ā the IASL in the MacIASL you used is from 2012.

Ā 

you may want create a port injector to define your ports vs doing it in DSDT.

Thanks, I downloaded the now the version on Insanely Mac..... and update my new DSDT.dsl

Ā 

Ā 

Upload the .dsl, not the .aml. Ā When I complied what you uploaded, I had over 200 errors. Ā That's common.

Ā 

Ā 

this is the .dsl file... i can not make an .aml file of it... got errors....

@shot - i had a similar issue not long ago - seems like i got a newer IASL compiler and was able to decompile without getting a bunch of lines "zero" lines and errors. it maybe that the compiler is too old to decompile the .aml file properly so i would try that. Ā the IASL in the MacIASL you used is from 2012.

Ā 

you may want create a port injector to define your ports vs doing it in DSDT.

I tried that with the dummy kext but no USB worked then at all no USB2 nor USB3 ... i renamed it in my dummy kext to XHC and removed te ports.

Normally al ports works even the USB3 ones only not with USB3 devices... Also tried with different smbios

MSI H87-G41 PCMate NEW DSDT.zip

Link to comment
Share on other sites

@schotĀ 

Ā 

are you decompiling something like this?

Ā 

# iasl -dl -e ssdt*.aml -d dsdt.aml

Ā 

which means you decompile in context of all ACPI tables. and it will spit out legacy code which is less likely to emit errors upon recompile.

Ā 

see the comment in your .dsl file

Ā 

Ā 

Ā 

Ā  Ā /*

Ā  Ā  Ā * iASL Warning: There were 12 external control methods found during
Ā  Ā  Ā * disassembly, but additional ACPI tables to resolve these externals
Ā  Ā  Ā * were not specified. This resulting disassembler output file may not
Ā  Ā  Ā * compile because the disassembler did not know how many arguments
Ā  Ā  Ā * to assign to these methods. To specify the tables needed to resolve
Ā  Ā  Ā * external control method references, the -e option can be used to
Ā  Ā  Ā * specify the filenames. Note: SSDTs can be dynamically loaded at
Ā  Ā  Ā * runtime and may or may not be available via the host OS.
Ā  Ā  Ā * Example iASL invocations:
Ā 
Ā  Ā  Ā * Ā  Ā  iasl -e ssdt*.aml -d dsdt.aml
Link to comment
Share on other sites

Ā 

@schotĀ 

Ā 

are you decompiling something like this?

Ā 

# iasl -dl -e ssdt*.aml -d dsdt.aml

Ā 

which means you decompile in context of all ACPI tables. and it will spit out legacy code which is less likely to emit errors upon recompile.

Ā 

see the comment in your .dsl file

Ā 

Ā 

Ā 

Ā  Ā /*

Ā  Ā  Ā * iASL Warning: There were 12 external control methods found during
Ā  Ā  Ā * disassembly, but additional ACPI tables to resolve these externals
Ā  Ā  Ā * were not specified. This resulting disassembler output file may not
Ā  Ā  Ā * compile because the disassembler did not know how many arguments
Ā  Ā  Ā * to assign to these methods. To specify the tables needed to resolve
Ā  Ā  Ā * external control method references, the -e option can be used to
Ā  Ā  Ā * specify the filenames. Note: SSDTs can be dynamically loaded at
Ā  Ā  Ā * runtime and may or may not be available via the host OS.
Ā  Ā  Ā * Example iASL invocations:
Ā 
Ā  Ā  Ā * Ā  Ā  iasl -e ssdt*.aml -d dsdt.aml

Ā 

Ā 

Well.... i don't know i used MaciASL here in the downloads from september 2015 and clicked on new -> from DSDT

and then tried to compile it, so i can use it with Clover....

Ā 

Ā 

for the injector where is this placed? In the root of /S/L/E or elsewhere within the IOUSB kext ?

Ā 

thanks

in S/L/E otherwise it won't work at all.

post-77462-0-56417300-1445005296_thumb.png

Link to comment
Share on other sites

Extremely confused about getting USB working on El Capitan with Asus X99 Deluxe MB.
Ā 
I read that ASMedia chipsets are not supported yet, period.
I read somewhere else that someone had it working OOB on the ASMedia ports.
Ā 
Anyway, I have an Asus X99 Deluxe with i7 5820K and working great under Yosemite (GenericUSBXHCI + Clover USBFix). All USB ports are working as they are supposed.
Ā 
Under El Capitan, it is a totally different storyā€¦ Only two USB3.0/2.0 rear ports are working, all others are off. I thought that it was the Intel USB ports from the X99 chipset, and all the non working ones the ASMedia controlled ones.
Ā 
It appears that it is not the case!
Ā 
The Asus X99 Deluxe has 8 rear USB 3.0/2.0 ports and 2 USB2.0 ports. There is 2 internal USB3.0 headers and 2 USB2.0 headers. I am using both USB3.0 internal header for the front panel of my PC case, giving me 3 USB3.0 plugs and a SD card reader.
Ā 
Here is the back of the Asus X99 Deluxe:Ā 
wireless.jpg
Ā 
Here are the official specifications:Ā https://www.asus.com/Motherboards/X99DELUXE/specifications/ where we can read:

IntelĀ® X99 chipset :
4 x USB 3.0/2.0 port(s) (4 at mid-board
IntelĀ® X99 chipset :
6 x USB 2.0/1.1 port(s) (2 at back panel, , 4 at mid-board)
ASMediaĀ® USB 3.0 controller :
10 x USB 3.0/2.0 port(s) (10 at back panel, blue)

Ā 
And here: http://techreport.com/review/26973/asus-x99-deluxe-motherboard-reviewedĀ an interesting article indicating that:

Another ASMedia controller powers the two USB 3.0 ports on the left side of the rear cluster. The other eight ports are driven by just two USB connections in the chipset, each of which is shared via a four-way ASMedia hub.

Ā 

I also tried every port with a USB3.0 thumbdrive, and found this:

MB rear USB ports (cf picture):
                            ___
USB2.0:                   5|___|                   \
                            ___                     | Intel X99 chipset (direct)
USB2.0:                   6|___|                   /
--------------------------------------------------
        |   ___    ___  |   ___    ___  |   ___  
USB3.0: | 9|___| 7|___| | 5|___| 3|___| | 1|___|   \
        |   ___    ___  |   ___    ___  |   ___     | ASMedia Controller
USB3.0: |10|___| 8|___| | 6|___| 4|___| | 2|___|   /
        |               |               |
        |  ASM107x HUB  |  ASM107x HUB  | direct (no hub)
        |               |               |

On Yosemite, I was able to figure out that USB3.0 ports 1 and 2 are direct ports to the ASMedia controller, and they are the only ones working on El Capitan (USB2 and USB3 devices)!!!

USB3.0 ports 3, 4, 5 and 6 are under an ASM107x hub. Hub is shown under Yosemite (System Info), not under El Capitan.

USB3.0 ports 7, 8, 9 and 10 are under another ASM107x hub. Again showing under Yosemite, not El Capitan.

USB2.0 ports 5 and 6 are direct Intel X99 chipset, not working under El Capitan.

USB3.0 front ports (from mid-board) are direct Intel X99 chipset, not working under El Capitan.

Ā 

I know from reading the forums that the ASM107x can be recognized, since it is only a hub, and someone got it working OOB.

I know that the Intel chipset should be recognized by El Capitan.

The ASMedia chipset is not supposed to be working under El Capitan, but the only 2 ports working for me are controlled by ASMedia chipset (not hub).

Ā 

I use the same DSDT under Yosemite and El Capitan. I removed port limitations editing El Capitan kext, without success.

Ā 

Any idea on how to fix that?

Thank you for your attention and your help.

Ā 

Attached is the original BIOS DSDT.

DSDT-or.aml.zip

Link to comment
Share on other sites

Has anybody made progress getting Renesas chipsets to work? Mine are detected but are unusably slow. Am trying some tweaks with the injector kexts but not much in the way of progress yet.

Ā 

Does anybody have a chipset (any, ideally not-intel though) that works properly and via AppleUSBXHCIPCI proper (there are several different iomatch sections in that kext)? I need an IOReg so I can see how it looks on a working machine.

Link to comment
Share on other sites

@xenophon

Ā 

really? what is wrong with it?

Ā 

# iasl -h

Supports ACPI Specification Revision 6.0

Ā 

Usage: iasl [Options] [Files]

Options:

Ā 

General:

Ā  -@ <file> Ā  Ā  Ā  Ā  Specify command file

Ā  -I <dir>Ā  Ā  Ā  Ā  Ā  Specify additional include directory

Ā  -T <sig>|ALL|*Ā  Ā  Create table template file for ACPI <Sig>

Ā  -p <prefix> Ā  Ā  Ā  Specify path/filename prefix for all output files

Ā  -vĀ  Ā  Ā  Ā  Ā  Ā  Ā  Ā  Display compiler version

Ā  -vo Ā  Ā  Ā  Ā  Ā  Ā  Ā  Enable optimization comments

Ā  -vs Ā  Ā  Ā  Ā  Ā  Ā  Ā  Disable signon

Ā 

Help:

Ā  -hĀ  Ā  Ā  Ā  Ā  Ā  Ā  Ā  This message

Ā  -hc Ā  Ā  Ā  Ā  Ā  Ā  Ā  Display operators allowed in constant expressions

Ā  -hf Ā  Ā  Ā  Ā  Ā  Ā  Ā  Display help for output filename generation

Ā  -hr Ā  Ā  Ā  Ā  Ā  Ā  Ā  Display ACPI reserved method names

Ā  -ht Ā  Ā  Ā  Ā  Ā  Ā  Ā  Display currently supported ACPI table names

Ā 

Preprocessor:

Ā  -D <symbol> Ā  Ā  Ā  Define symbol for preprocessor use

Ā  -li Ā  Ā  Ā  Ā  Ā  Ā  Ā  Create preprocessed output file (*.i)

Ā  -PĀ  Ā  Ā  Ā  Ā  Ā  Ā  Ā  Preprocess only and create preprocessor output file (*.i)

Ā  -Pn Ā  Ā  Ā  Ā  Ā  Ā  Ā  Disable preprocessor

Ā 

Errors, Warnings, and Remarks:

Ā  -va Ā  Ā  Ā  Ā  Ā  Ā  Ā  Disable all errors/warnings/remarks

Ā  -ve Ā  Ā  Ā  Ā  Ā  Ā  Ā  Report only errors (ignore warnings and remarks)

Ā  -vi Ā  Ā  Ā  Ā  Ā  Ā  Ā  Less verbose errors and warnings for use with IDEs

Ā  -vr Ā  Ā  Ā  Ā  Ā  Ā  Ā  Disable remarks

Ā  -vw <messageid> Ā  Disable specific warning or remark

Ā  -w1 -w2 -w3 Ā  Ā  Ā  Set warning reporting level

Ā  -we Ā  Ā  Ā  Ā  Ā  Ā  Ā  Report warnings as errors

Ā 

AML Code Generation (*.aml):

Ā  -oa Ā  Ā  Ā  Ā  Ā  Ā  Ā  Disable all optimizations (compatibility mode)

Ā  -of Ā  Ā  Ā  Ā  Ā  Ā  Ā  Disable constant folding

Ā  -oi Ā  Ā  Ā  Ā  Ā  Ā  Ā  Disable integer optimization to Zero/One/Ones

Ā  -on Ā  Ā  Ā  Ā  Ā  Ā  Ā  Disable named reference string optimization

Ā  -cr Ā  Ā  Ā  Ā  Ā  Ā  Ā  Disable Resource Descriptor error checking

Ā  -in Ā  Ā  Ā  Ā  Ā  Ā  Ā  Ignore NoOp operators

Ā  -r <revision> Ā  Ā  Override table header Revision (1-255)

Ā 

Optional Source Code Output Files:

Ā  -sc -sa Ā  Ā  Ā  Ā  Ā  Create source file in C or assembler (*.c or *.asm)

Ā  -ic -ia Ā  Ā  Ā  Ā  Ā  Create include file in C or assembler (*.h or *.inc)

Ā  -tc -ta -ts Ā  Ā  Ā  Create hex AML table in C, assembler, or ASL (*.hex)

Ā  -so Ā  Ā  Ā  Ā  Ā  Ā  Ā  Create offset table in C (*.offset.h)

Ā 

Optional Listing Files:

Ā  -lĀ  Ā  Ā  Ā  Ā  Ā  Ā  Ā  Create mixed listing file (ASL source and AML) (*.lst)

Ā  -lm Ā  Ā  Ā  Ā  Ā  Ā  Ā  Create hardware summary map file (*.map)

Ā  -ln Ā  Ā  Ā  Ā  Ā  Ā  Ā  Create namespace file (*.nsp)

Ā  -ls Ā  Ā  Ā  Ā  Ā  Ā  Ā  Create combined source file (expanded includes) (*.src)

Ā 

Data Table Compiler:

Ā  -GĀ  Ā  Ā  Ā  Ā  Ā  Ā  Ā  Compile custom table that contains generic operators

Ā  -vt Ā  Ā  Ā  Ā  Ā  Ā  Ā  Create verbose template files (full disassembly)

Ā 

AML Disassembler:

Ā  -dĀ  <f1 f2 ...> Ā  Disassemble or decode binary ACPI tables to file (*.dsl)

Ā  Ā  Ā  Ā  Ā  Ā  Ā  Ā  Ā  Ā  Ā  (Optional, file type is automatically detected)

Ā  -da <f1 f2 ...> Ā  Disassemble multiple tables from single namespace

Ā  -db Ā  Ā  Ā  Ā  Ā  Ā  Ā  Do not translate Buffers to Resource Templates

Ā  -dc <f1 f2 ...> Ā  Disassemble AML and immediately compile it

Ā  Ā  Ā  Ā  Ā  Ā  Ā  Ā  Ā  Ā  Ā  (Obtain DSDT from current system if no input file)

Ā  -df Ā  Ā  Ā  Ā  Ā  Ā  Ā  Force disassembler to assume table contains valid AML

Ā  -dl Ā  Ā  Ā  Ā  Ā  Ā  Ā  Emit legacy ASL code only (no C-style operators)

Ā  -eĀ  <f1 f2 ...> Ā  Include ACPI table(s) for external symbol resolution

Ā  -fe <file>Ā  Ā  Ā  Ā  Specify external symbol declaration file

Ā  -in Ā  Ā  Ā  Ā  Ā  Ā  Ā  Ignore NoOp opcodes

Ā  -vt Ā  Ā  Ā  Ā  Ā  Ā  Ā  Dump binary table data in hex format within output file

Ā 

Debug Options:

Ā  -bf Ā  Ā  Ā  Ā  Ā  Ā  Ā  Create debug file (full output) (*.txt)

Ā  -bs Ā  Ā  Ā  Ā  Ā  Ā  Ā  Create debug file (parse tree only) (*.txt)

Ā  -bp <depth> Ā  Ā  Ā  Prune ASL parse tree

Ā  -bt <type>Ā  Ā  Ā  Ā  Object type to be pruned from the parse tree

Ā  -fĀ  Ā  Ā  Ā  Ā  Ā  Ā  Ā  Ignore errors, force creation of AML output file(s)

Ā  -m <size> Ā  Ā  Ā  Ā  Set internal line buffer size (in Kbytes)

Ā  -nĀ  Ā  Ā  Ā  Ā  Ā  Ā  Ā  Parse only, no output generation

Ā  -ot Ā  Ā  Ā  Ā  Ā  Ā  Ā  Display compile times and statistics

Ā  -x <level>Ā  Ā  Ā  Ā  Set debug level for trace output

Ā  -zĀ  Ā  Ā  Ā  Ā  Ā  Ā  Ā  Do not insert new compiler ID for DataTables

Link to comment
Share on other sites

I'm probably wrong on this, but it did throw an error on my system.

Ā 

If you have a minute, can you please update me on MacIASL installation (the /usr/bin/iasl command I'm talking about) - can't figure it out :-(

Ā 

(Sorry for the off-topic remark).

Ā 

TIA

Ā 

Xen

Link to comment
Share on other sites

I use the same DSDT under Yosemite and El Capitan. I removed port limitations editing El Capitan kext, without success.

Ā 

Any idea on how to fix that?

Thank you for your attention and your help.

Ā 

Attached is the original BIOS DSDT.

Try this DSDT. All I did was rename EHC1/EHC2 to EH01/EH02 & change _OSI to simulate OS X as Windows 8.1. Post an IOReg afterwards.

DSDT-or 2.aml.zip

Link to comment
Share on other sites

Try this DSDT. All I did was rename EHC1/EHC2 to EH01/EH02 & change _OSI to simulate OS X as Windows 8.1. Post an IOReg afterwards.

I did try the EHC1/EHC2 to EH01/EH02, with a kext_injector and IOJones shows the change is successful. Does not change my problem (only 2 ports working).

However, I did not change _OSI, so I will try that, and post IOReg afterwards.

Ā 

Just tried the provided DSDT. Not working, same problem.

It is like all USB ports from intel chipset are not activated, and all ports behind the ASM107x hubs are not activated either.

Ā 

IOReg is attached.

Ā 

IOReg.ioreg.zip

Link to comment
Share on other sites

@Larx

Ā 

decompile the aml file and the search for EUSB and USBE -- those seem to be your USB2 devices on address 1D and 1A.

Ā 

if i were you, I would just create an usb port injector type kext vs mucking with DSDT.

  • Like 1
Link to comment
Share on other sites

@Larx

Ā 

decompile the aml file and the search for EUSB and USBE -- those seem to be your USB2 devices on address 1D and 1A.

Ā 

if i were you, I would just create an usb port injector type kext vs mucking with DSDT.

Ā 

Thx for advice. I will try that !

Link to comment
Share on other sites

Can someone explain how to properly inject hubs like this?

Thanks

Ā 

Ā 

Hello!

Trying to make port restriction on laptop.

Ā 

Added ports to dummy kext, but USB still not working.

Can someone tell what i doing wrong?

Ā 

SMBIOS is MacBookPro 9,2

Attached DSDT and Info.plist from DummyEHCI

Ā 

Thanks!

Ā 

Snymok_ekrana_2015_10_04_v_19_42_46_500.

Ā 

Snymok_ekrana_2015_10_04_v_19_47_44_800.

Ā 

Link to comment
Share on other sites

I'm not sure if I'm doing this right but for my Z68AP-D3 it works like this:

Ā 

post-158318-0-29799900-1445381422_thumb.png Ā post-158318-0-17206200-1445381934_thumb.png

Ā 

For this you'll need to remove all ports from "MacBookPro9,2-EHC1" but "PRT1", that correspond to the higher level one on your DSDT. Then create another section calledĀ MacBookPro9,2-EHC1-PRT1-hub with all your ports inside. Beware the keys on this hub are a bit different, here's an example:

		<key>MacBookPro8,3-EH01-PR10-hub</key>
		<dict>
			<key>CFBundleIdentifier</key>
			<string>com.apple.driver.AppleUSBMergeNub</string>
			<key>IOClass</key>
			<string>AppleUSBMergeNub</string>
			<key>IOProbeScore</key>
			<integer>5000</integer>
			<key>IOProviderClass</key>
			<string>AppleUSB20InternalHub</string>
			<key>IOProviderMergeProperties</key>
			<dict>
				<key>port-count</key>
				<data>
				CAAAAA==
				</data>
				<key>ports</key>
				<dict>
					<key>PRT1</key>
					<dict>
						<key>UsbConnector</key>
						<integer>255</integer>
						<key>port</key>
						<data>
						AQAAAA==
						</data>
					</dict>
                                        . . . 
				</dict>
			</dict>
			<key>locationID</key>
			<integer>487587840</integer>
			<key>model</key>
			<string>MacBookPro8,3</string>
		</dict>

I'm not sure about having 2 PRT1 items, perhaps you'll have to rename one on your DSDT and plist to something else. And remember that if you rename the higher PRT1 one thenĀ MacBookPro9,2-EHC1-PRT1-hubĀ must be renamed accordingly.

Edited by Maniac10
Link to comment
Share on other sites

I'm not sure if I'm doing this right but for my Z68AP-D3 it works like this:

Ā 

attachicon.gifioreg.png Ā attachicon.gifplist.png

Ā 

For this you'll need to remove all ports from "MacBookPro9,2-EHC1" but "PRT1", that correspond to the higher level one on your DSDT. Then create another section calledĀ MacBookPro9,2-EHC1-PRT1-hub with all your ports inside. Beware the keys on this hub are a bit different, here's an example:

		<key>MacBookPro8,3-EH01-PR10-hub</key>
		<dict>
			<key>CFBundleIdentifier</key>
			<string>com.apple.driver.AppleUSBMergeNub</string>
			<key>IOClass</key>
			<string>AppleUSBMergeNub</string>
			<key>IOProbeScore</key>
			<integer>5000</integer>
			<key>IOProviderClass</key>
			<string>AppleUSB20InternalHub</string>
			<key>IOProviderMergeProperties</key>
			<dict>
				<key>port-count</key>
				<data>
				CAAAAA==
				</data>
				<key>ports</key>
				<dict>
					<key>PRT1</key>
					<dict>
						<key>UsbConnector</key>
						<integer>255</integer>
						<key>port</key>
						<data>
						AQAAAA==
						</data>
					</dict>
                                        . . . 
				</dict>
			</dict>
			<key>locationID</key>
			<integer>487587840</integer>
			<key>model</key>
			<string>MacBookPro8,3</string>
		</dict>

I'm not sure about having 2 PRT1 items, perhaps you'll have to rename one on your DSDT and plist to something else. And remember that if you rename the higher PRT1 one thenĀ MacBookPro9,2-EHC1-PRT1-hubĀ must be renamed accordingly.

Do your USB3 ports work?

Link to comment
Share on other sites

Yes but only with USB3 devices.

Interesting. According to the specifications, you haveĀ Etron EJ168 chipset. Nonetheless I'll try it with my board, when I'm at home again.

iMac16,x and iMac17,x are still no where to be found in the 10.11.1 USB kexts.

What are their board-id's?

Link to comment
Share on other sites

Is it possible to use XHCIUsbMux + FakePCIId with not-intel chips? I'm not asking whether it wil work; I'm asking whether it's possible to use it to inject properties for other chips (By modifying the IOMatch to make it attach to said device, obviously)

Link to comment
Share on other sites

×
×
  • Create New...