Cuando mi MacBook Air se cayó al suelo mientras se conectaba una micro memoria USB, el conector USB del lado derecho se dañó. El puerto dejó de funcionar y desde entonces aparentemente tiene un cortocircuito menor. En efecto, el área cercana se calienta y la batería del portátil se agota en una hora. Es probable que una reparación de hardware requiera reemplazar la placa lógica principal, ya que, desafortunadamente, este conector USB es parte de esa placa. Una pieza de reemplazo costaría US $ 300 y unas 2 horas de trabajo para un gugy con HW experimentado, así que decidí que no vale la pena para mí.
No encontré ningún problema de software hasta que actualicé mi sistema de Mac OS X 10.8.6 Mountain Lion a 10.12.6 Sierra. Más tarde, supe que con 10.11 El Capitán, la forma en que se incluyen los puertos USB tiene cambiado .
Cuando el sistema (cualquier Mac OS X 10.11 o posterior) se inicia, tarda 2-3 veces más de lo normal y emite constantemente mensajes dmesg
como los siguientes:
XHC1@14000000: AppleUSBXHCI::hardwareException: kUSBCommandReset did not clear
XHC1@14000000: AppleUSBHostController::setPowerStateGated: going to state 2 failed with 0xe00002e9
Después de la solución mencionada a continuación, todavía aparece ocasionalmente el siguiente mensaje, que es soportable y una buena indicación de la causa raíz:
AppleUSBHostPort::interruptOccurred: overcurrent detected with port status 0x4000, localSimulatedInterrupts = 0x0
Desde entonces he estado luchando para encontrar una manera de deshabilitar ese puerto USB de manera que el arranque del sistema no se detenga y que el otro puerto USB del lado izquierdo todavía se pueda usar (al menos en USB 2.0 High Modo de velocidad). Finalmente lo logré, y estoy compartiendo mi solución aquí para otras personas que podrían enfrentar un problema similar:
cd /System/Library/Extensions/IOUSBHostFamily.kext/Contents/PlugIns
Edite AppleUSBEHCIPCI.kext/Contents/Info.plist
para eliminar o comentar (mediante el inicio del comentario XML <!--
y finalice -->
) la entrada para AppleUSBXHCIPPT
:
<!--<key>AppleUSBXHCIPPT</key>
<dict>
<key>CFBundleIdentifier</key>
<string>com.apple.driver.usb.AppleUSBXHCIPCI</string>
<key>IOClass</key>
<string>AppleUSBXHCIPPT</string>
<key>IOPCIPauseCompatible</key>
<true/>
<key>IOPCIPrimaryMatch</key>
<string>0x1e318086</string>
<key>IOPCITunnelCompatible</key>
<true/>
<key>IOProbeScore</key>
<integer>1000</integer>
<key>IOProviderClass</key>
<string>IOPCIDevice</string>
</dict>-->
Alternativamente, y más simplemente, deshabilite AppleUSBXHCIPCI
en conjunto:
sudo mv AppleUSBXHCIPCI.kext{,.disabled}
En ambos casos, finalmente
sudo touch /System/Library/Extensions && sudo kextcache -u /
y reiniciar.
Tenga en cuenta que al deshabilitar el controlador sobre la marcha:
kextunload -b com.apple.driver.usb.AppleUSBXHCIPCI
no funciona porque está en uso por alguna otra extensión del kernel.