Jump to content

USB Keyboard/mouse not working after upgrade to Sierra.


Bounc1ngbanker
 Share

8 posts in this topic

Recommended Posts

Hello. 

 

I have a Dell T5610  (Dual Xeon, C602 chipset with Nvidia NV310 graphics card) running Yosemite 10.10.5 with Clover bootloader.  

 

This morning, I backed up the OS drive to another one and then attempted to upgrade  to Sierra 10.12.6.  

 

I copied all the (existing) kexts to the correct places in EFI/CLOVER/Kexts (ie from the 10.10 to the 10.12 directory) using clover configurator to mount the EFI and ran the install.  Once of the kexts is USBInjectAll.kext.   (I tried clover with and without USB inject flag set and it didn't help). 

 

The flags in clover that are being used right now are PCIRootUID=1 npci=0x3000 cpus=1 nv_disable=1

 

The install worked fine. The machine restarted a few times. 

However, when the login screen arrives, I have no USB mouse and no keyboard. PS/2 mouse and keyboard don't work either. 

 

The keyboard and mouse work fine when using clover to choose the boot partition. They just stop working during the boot process.

 

I also tried an install from a USB stick on the same hardware on Sierra - which failed with a 'still waiting for root device' error - leading me to believe that there was a problem with USB compatibility on the machine. 

 

 I gather there was a change in the USB stack in El Capitan which is perhaps why Yosemite works for me and sierra does not? 

 

To get Yosemite working, I had to run it with USB3 turned off in the BIOS. 

The BIOS also has serial port turned off and intel virtualisation turned off.  

The Boot is UEFI. 

 

I am able to fortunately carry on with my yosemite install until I get this resolved.  Does anyone have any ideas how to resolve? I'm relatively new at all this - so if this is a silly question or there is not enough detail in the question, I apologize for that.. 

 

Kind Rgds

 

Link to comment
Share on other sites

Hello @PPCnostalgic. Thanks for the response.  I spent some time reading about custom DSDT patching last night. I was hoping not to have to do it, or, perhaps even find and download a patch for my system (since it's a pre-built one) but - I wasn't able to find that. 

 

I've worked in IT development for 20 years so I prefer to spend my free time doing more fun things - hence this isn't an area I am familiar with. Am willing to learn though. 

 

So far I know that you can get the machines DSDT table from linux by using:

sudo cat /sys/firmware/acpi/tables/dsdt dsdt.aml > myDSDT.aml.   

I have ubuntu but it's not installed on that machine so there is always that fallback. 

 

I also gather that you can obtain the same by pressing F4 during the clover boot process. However, for this to work, I gather the EFI partition has to be FAT32. Which it is not for me.  So that's no good. 

 

I used a script from this post http://www.insanelymac.com/forum/topic/278170-dsdt-—-what-is-it-and-how-do-i-get-it/to extract the DSDT table info. It appears to make use of a tool IoReg (IORegistryExplorer) to do that. That seems a bit convoluted.

 

I also downloaded:  MaciASL from here: https://sourceforge.net/projects/maciasl/files/latest/download?source=recommended

 

That seemed to allow saving of both a binary System.aml and a dissassembled System.dsl file to examine.  So far, so good. 

 

The next problem is how to obtain information on the ports that are active and perform a process of port discovery. 

I have gathered that it's necessary to:

 

Disable any existing custom SSDT or DSDT (presumably to ensure correct output) 

 

rename EHC1->EH01 and EHC2->EH02 (in config.plist), if applicable (if the chipset has EHCI present and enabled).  I understand that this is necessary so that the apple 'port injectors' in MacOS do not 'find' the ports and interfere with what's in the actual DSDT for those ports. Then some other custom port injector can work with them.

 

Ensure that XHCI controller is named XHC (for most PCs it is default)
apply the port limit patch (in config.plist)  (not sure why that is - I read some discussion about USB device limits)

 

install USBInjectAll.kext to the system volume.
install FakePCIID.kext + FakePCIID_XHCIMux.kext if I want to use it. 

 

And then use a package such as IoRegistryExplorer  (IoReg) to test the ports. 

 

Then I gather there is some method of writing text-based 'patches' in the clover config.plist that will be appled to the core DSDT to change the values that I want - rather than writing and saving a whole file although it also looks like MaciASL can do that. 

 

It looks like 'clover configurator' has a number of pre-configured patches that it can apply to clover.plist - including the above mentioned EHC1->EH01 Patches. 

 

I'm trying to find out how to decide what needs to be patched. Perhaps looking inside the output of MacIASL will help me out there.  So. The ACPI spec is here: http://www.acpi.info/spec.htm

 

Quickly scanning the spec, it seems to me that _UPC and _PLD objects in the file are related to USB 2.0 controllers. I'm looking around in the DSDT.dsl file to find anything that looks USB related. Not having much luck - there must be something I'm missing.

 

 

I also ran IORegistryExplorer on my existing Yosemite installation and I can see entries under AppleACPIPCI which related to USB Keyboard and so on - I guess the key now is to know how to read that and translate what's in it, to the content of the DSDT.dsl file so  I know what to patch. 

 

I tried plugging in a USB stick into a port whilst it was running. 

I can see output like this:

 

PCI0@0

     AppleACPIPCI

            EUSB@1D

                AppleUSBEHCI

 

                        usb@1d130000

(contains entries for IOUSBMassStorageClass) - so I assume this is the stick. 

 

                         USB receiver@1d160000 - which seems to be my wireless keyboard/mouse receiver.

 

I have a feeling that I need to rename EUSB to EHC1 to get it working.

 

Does that sound to be on the right track? Are there any shortcut guides to understanding the content of the system DSL file without needing to read the ACPI spec? 

Link to comment
Share on other sites

Update. I was correct.  I applied patches using clover configurator to the DSDT to:

Rename EUSB to EHCI and Rename USBE to EHC2.  The keyboard and mouse now work.

So I'm a happy camper.

I will comprehensively write up this Dell T5610 install when I have it working properly so that others can benefit. 

 

Thanks for the hint @PPCNostalgic.  I will read more about ACPI.. 

Link to comment
Share on other sites

OK. I have another question.  I've been trying to get rid of the cpus=1 flag. 

I note that there are many 'unsychronized TSC' errors on startup and, since this is a dual LGA2011 processor board, I understand that the extension VoodooTSCSync.kext is required. 

 

I ran VoodooTSCSync configurator. Very useful. From http://www.insanelymac.com/forum/files/file/744-voodootscsync-configurator/

 

And created a custom .kext for my CPU based on the E5-V3 model (since the V1 model was not in the list) 

Placed that in CLOVER/kexts/10.12 for sierra and tried to boot without cpus=1.  Didn't work. 

 

Am I doing something stupid or is there something else needed? I am already using NullCPUPowerManagement.kext in that same location.

 

I am not sure if I need to generate an SSDT file for the CPUs or not.  I saw a reference to that in this thread: 

 

 http://www.insanelymac.com/forum/topic/312312-dual-lga2011-hackintosh-build-el-capitan-1011-guide/?hl=%2Bcpus%26amp%3B%2382081+%2Bhp&do=findComment&comment=2245103

 

Can anyone give me a hint pls? 

Link to comment
Share on other sites

OK. I had time to have another look.  It seems that the VoodooTSCSync.kext that was produced from the configurator wasn't right.  

 

I got another (8 core) version for sierra from another link online (am I allowed to post the link - if you google 'Mark with tech common kexts and other downloads' that's where I got it) and tried that without changing it. It worked.  So presumably the thread count in the kext refers to threads per CPU?

 

So I now have 32 cores operational and no crashes.   I worked the machine using all 32 cores for a while and it was just fine. 

 

I got my sound working using VoodooHDA.kext.  Network worked when I changed the DSDT definitions. 

 

Graphics are still dodgy but rather than waste time on the NVS-310 card, I've just bought a cheap Nvidia GTX650 card off Ebay because I understand that this card is natively supported and it will be probably be enough for my needs. 

Link to comment
Share on other sites

Thank you for the reply. and sorry for the slow response. 

 

I installed an Nvidia GTX650 graphics card and now the machine is a lot better. As a bonus, HDMI audio is working too.  I already solved the USB issue as mentioned. 

 

I have not included the files for that reason - I don't have many problems left to solve.  :) 

 

I do have one issue that I've still not been able to solve.  The machine goes to sleep just fine, and wakes up on a mouse movement or a keyboard press as it should. However, when it does, it reboots. The cause of a reboot is a kernel panic.

 

*** Panic Report ***

panic(cpu 17 caller 0xffffff800ab6b46f): initproc exited  -- exit reason namespace 2 subcode 0x8 description: none
 
I have tried a few settings for the clover flag darkwake  (=0,=1,=3) and ensured that 'Generate P states and Generate C states' are set in my ACPI clover configuration.   I have ensured that the BIOS is set to fully initialise all devices on POST (disabled quick boot). It hasn't helped. 
 
Could the answer be that I need to generate a proper SSDT for CPU pwr management? 
 
Just a few pointers would be useful. I'm not looking for anyone to actually solve the problem for me. 
Many thanks. 
Link to comment
Share on other sites

 Share

×
×
  • Create New...