MacBook Air 2012: ¿el hardware USB se quedó sin ranuras para dispositivos?

Tengo un MBA i7 de 11" de 2012. Esta es una gran máquina pequeña, pero una cosa ha sido absolutamente loca por eso... Los puertos USB funcionan bien en su mayor parte, pero inevitablemente conectaré un dispositivo USB (podría ser cualquier cosa. Memoria USB, puerto serie USB, cable JTAG, dispositivo USB2 o USB3, no importa) y se encenderá (los LED parpadean, etc.) pero la Mac no reconoce el dispositivo.

Mirando dmesg, veo esto:

USBF:    126826.226    AppleUSBXHCI[0xffffff80d5636000]::WaitForCMD (Enable Slot Command) - Command failed: -1009 (num interrupts: 93582187, num primary: 46791094, inactive:0, unavailable:0, is controller available:1)
USBF:    126826.226    AppleUSBXHCI[0xffffff80d5636000]::PrintInterrupter WaitForCMD IRQ:0 - IMAN: 00000002 IMOD: 000700a0 ERDP: 002043d0
USBF:    126826.226    AppleUSBXHCI[0xffffff80d5636000]::UIMCreateControlEndpoint 2 - Run out of device slots, returning: e0004045
USBF:    126826.226    AppleUSBHubPort[0xffffff8015ddce00]::DoConfigureDeviceZero  Port 1 of hub at 0x14000000.  Cannot create USB device (kIOUSBDeviceCountExceeded)
The USB stack is not able to enumerate the device at Port 1 of hub at 0x14000000 because the USB hardware ran out of device slots

En este punto, el puerto USB está kaput. Desconectar/volver a conectar el mismo dispositivo u otro mostrará mensajes similares. La única solución parece ser un reinicio. Poner la Mac a dormir no ayuda.

Tengo instalado el controlador de registro USB para tratar de ayudar a diagnosticar el problema, pero no veo nada que pueda llamar una prueba irrefutable, y tratar de recargar los kexts USB tampoco ayuda.

Este problema también estaba presente en mi antiguo MBA de 2011, y el problema ha persistido de 10.7 a 10.9. Ambos puertos eventualmente harán esto, lo que me hace creer que no es un problema de puerto físico ya que un puerto está en una placa de E/S separada y el otro está en la placa lógica principal. Intenté conectar el dispositivo a través de un concentrador externo USB2 y USB3 (probé ambos) y el problema eventualmente ocurrirá también en estas situaciones.

Soy bastante experto técnicamente, pero no necesariamente en mi mejor momento en OSX. Puedo recopilar más información si alguien me ayudara a determinar qué datos son apropiados para ayudar a depurar el problema. También realicé los reinicios habituales de NVRAM/SMC, arregle los permisos, etc. No ayuda.

¿Se ha encontrado alguien mas con esto? ¿Qué información podría proporcionar para ayudar a diagnosticar el problema? ¿Alguien sabe de una manera de restablecer completamente el controlador XHCI en esta situación para intentar recuperarse sin necesidad de reiniciar?

Editar 20140217

¡Agregar la recompensa ciertamente le dio a esta pregunta la atención que sentí que necesitaba! Gracias por todas las respuestas hasta ahora, pero creo que hay algunos conceptos erróneos importantes que me gustaría abordar:

  1. No migré mi cuenta del MacBook Air anterior. Instalación nueva
  2. El problema ocurre con casi cualquier dispositivo. Llaves USB (¡aquí no hay cables!), adaptadores JTAG, unidades USB3
  3. El problema ocurre con o sin concentradores USB2 o USB3
  4. Si el problema ocurre con un dispositivo en un concentrador, desenchufar el concentrador y enchufar el dispositivo directamente a la Mac no ayuda
  5. Si el problema ocurre sin un concentrador, conectar el dispositivo a un concentrador USB2 o USB3 no ayuda
  6. Una vez que ocurre el problema, cerrar la sesión o cambiar a un usuario diferente (nuevo) no hace que el problema desaparezca para el nuevo usuario o el antiguo.

Me gano la vida desarrollando hardware y software electrónico, incluidos dispositivos USB 3.0. Estoy familiarizado con los controladores del puerto raíz USB, pero no del todo familiarizado con el desarrollo de bajo nivel (núcleo) en OSX.

Estoy bastante seguro de que se trata de un problema de controlador de dispositivo simplemente debido a la naturaleza de cómo se manifiesta. Desde un arranque limpio, las cosas funcionan muy bien. Desenchufe / vuelva a enchufar y aún podría funcionar muy bien. Desconectar/volver a conectar eventualmente hará que aparezca el problema y, en ese momento, CUALQUIER dispositivo USB en ese puerto no funcionará. Reinicie y las cosas funcionan muy bien de nuevo.

Esto suena como un caso típico de una placa lógica defectuosa. Si está fuera de su período de garantía, tendrá mala suerte, ya que las placas lógicas cuestan fácilmente más de 800 dólares. Siempre puede intentar hacer una cita en un Genius Bar y dejar que realicen algunos diagnósticos. En su mayoría van más allá que su prueba de hardware normal. ¡Buena suerte!

Respuestas (3)

Buenas noticias: no tienes ningún problema con tu hardware. O software, permisos, etc.

El problema es, lo creas o no, exactamente lo que dice el mensaje de error:

the USB hardware ran out of device slots

Probablemente tenga la impresión de que se pueden usar unos 127 dispositivos USB con un solo controlador, ya que eso es lo que dice todo el material de marketing. Pero eso en realidad solo es cierto en una única configuración muy específica y probablemente en su mayoría teórica. Los dispositivos USB admiten, como máximo, cinco conexiones en una jerarquía de estrellas escalonadas. Los concentradores no son dispositivos de paso, por lo que cuentan para este número, al igual que cualquier componente interno que use el bus USB y cualquier dispositivo que use más de un perfil de dispositivo (incluso si se trata de una única conexión física ).

Sin embargo, ¿cómo podría saber que no tienes un problema con tu hardware?
¡Por qué, porque tengo la misma máquina y pude reproducir el error!

captura de pantalla


Si el problema parece ser esporádico, probablemente también te encuentres con otros problemas:

  • Conjuntos de chips incompatibles y de mala calidad en los concentradores, ya que el estándar no se aplica.

  • Energía insuficiente: las velocidades USB más rápidas requieren más energía que las más lentas.
    Si un dispositivo tiene la capacidad de retroceder a una velocidad más lenta (en lugar de un error debido a una potencia insuficiente), lo hará, llevándose consigo cualquier cosa en el mismo bus.

Si no desea volver a ver este error:

  • Deseche todos los concentradores y cables USB que esté utilizando actualmente. Muy enserio.

  • Deje $ 40- $ 80 por dos o cuatro de estos , más todos los que necesite.
    La mayoría de los cables USB 3 deberían estar bien.

  • Especialmente teniendo en cuenta que todos los dispositivos que menciona son de alta velocidad y no muy tolerantes a errores, nunca debe confiar en la alimentación del bus y asegurarse de que (Sí, una verruga de pared para cada concentrador y dispositivo. Excepciones: teclados, ratones, etc.

  • Este último punto es especialmente cierto en el MBA de 11', que viene con un mísero adaptador de corriente de 45 W, y la computadora básicamente necesita todo eso incluso con una carga de CPU moderada. Si tiene este efectivo, considere comprar un adaptador de 60W o 85W.

  • En la práctica, el máximo de dispositivos/hub conectados en un solo hub es 2 + otro hub.

  • Utilice siempre concentradores de 4 puertos, no de 7 puertos. Los concentradores de 7 puertos son solo dos controladores en una cadena.
    ¡Pero no sabe qué puertos se conectan al primer concentrador o al segundo!
    (Sin mirar en System Profiler).

  • En caso de duda, prefiera el puerto USB en la placa lógica (derecha). Existe una posibilidad remota de que haya interferencia en la placa de E/S. Afortunadamente, esa no es una parte costosa .

Siga esos pasos y básicamente le garantizo que este problema desaparecerá.


Editar: la perspectiva de desarrollo de hardware/kernel

Para responder a la aclaración de que esta es una pregunta del desarrollador.

Entonces: el fragmento de registro publicado indica lo que abordé anteriormente: demasiados dispositivos USB 3.0 conectados al concentrador raíz XHCI.

(El conjunto de chips QS77 admite 4 y hay 2 en uso dentro de la máquina).

Para "restablecer el controlador XHCI" (técnicamente es un problema del kernel, no del controlador):

sudo kextunload -b com.apple.driver.AppleUSBXHCI
sudo kextload -b com.apple.driver.AppleUSBXHCI

sin embargo, eso no va a hacer nada si esto también sucede con los dispositivos USB 2, en cuyo caso es:

sudo kextunload -b com.apple.driver.AppleUSBEHCI
sudo kextload -b com.apple.driver.AppleUSBEHCI

y si son ambos, bueno, ninguno de esos.

Cuando digo que puedo reproducir el problema, quiero decir que si sobrecargo el bus XHCI como en el fragmento de registro, aparece el mismo mensaje de error. Y no asumí necesariamente que estabas usando un concentrador malo, sino que también podrías necesitar uno bueno , porque el concentrador raíz tiene demasiadas conexiones.

Sin embargo, más allá de eso, creo que estamos entrando en el ámbito de una pregunta wiki en el sentido de:

¿Cómo depuro el kernel y los controladores de dispositivos en Mac OS X?

Como ese es más el problema, nada que ver con el MacBook Air per se o incluso necesariamente con USB.

Podría intentar escribir uno (no es realmente mi experiencia, pero lo he hecho varias veces), pero probablemente tarde unos días en hacerlo. Mientras tanto, echa un vistazo a:

man 8 kext_loggingysudo sysctl -w debug.kextlog=0xlogspec

kextstat | grep USB

La fuente IOUSBFamily .


Gracias por su respuesta detallada, pero creo que está asumiendo que el problema ocurre cuando uso concentradores externos / concentradores de cadena juntos. Actualicé mi pregunta para incluir más detalles, en particular el hecho de que las unidades de memoria USB (sin cables) y los equipos de baja velocidad y alimentados externamente (JTAG/adaptadores seriales, etc.) aún presentan el problema. Excelente captura en la fuente de alimentación, pero tengo el adaptador más grande (85W). El problema ocurre ya sea que esté conectado a la alimentación de CA o no.
Otra cosa... mencionas que puedes recrear el problema. ¿Cómo lo haces? ¿Necesita un reinicio para borrar el error?
Ok, sí, esto definitivamente fue escrito para un usuario avanzado/manitas, no para un desarrollador.
"El fragmento de registro publicado indica lo que abordé anteriormente: demasiados dispositivos USB 3.0 conectados al concentrador raíz XHCI". -- ¿Esto no indica un error del controlador? No tengo más de un dispositivo conectado al puerto (y no es un concentrador)... ¿no se está olvidando el controlador de limpiar después de sí mismo?
Ciertamente es posible; Honestamente, a Apple no le importa mucho la compatibilidad con dispositivos de terceros. Aunque no estoy lo suficientemente familiarizado (probablemente lo sepas mejor) con la forma en que se supone que funciona la conexión en caliente USB en relación con la disponibilidad de las ranuras. Sé que (por ejemplo) se supone que los dispositivos de almacenamiento deben enviar un mensaje de desmontaje (debido a HFS; en Windows/FAT/NTFS esto no es necesario) o es posible que el sistema no anule el registro del dispositivo (el mensaje "desconectado incorrectamente" se ve si no 'expulsa'). Pero tendría que ver mucho más de cuatro líneas system.logpara decirlo realmente.
Recuerde también dos perfiles = dos dispositivos. Probablemente no sea su problema exacto, pero una cámara con una ranura para tarjeta SD utilizará todas las ranuras XHCI disponibles y debería registrar al menos una como EHCI para evitar esto. Además: ¿es posible que tenga bluetooth o que su cámara se 'despierte' de forma intermitente? Estos están en el bus USB.
También tendría mucha curiosidad por ver cuál es el mensaje de error cuando solo usa EHCI. Porque no puede haber visto este problema exacto en su MBA 2011: no tiene USB 3.
Descargar los kexts (en un script de shell, ya que el teclado es un dispositivo USB) provoca un pánico inmediato y se reinicia. Su respuesta no resuelve el problema, pero proporciona información muy valiosa y algunas direcciones a seguir para resolverlo. Gracias, acepto esta respuesta y te concedo la recompensa.
:) Lo siento, no pude resolverlo, ¡mucha suerte!

¿Estaría seguro asumiendo que migró el sistema operativo de su vieja Mac al nuevo MBA y que actualizó el sistema operativo en lugar de realizar una reinstalación limpia? O quizás usuarios o aplicaciones migrados.

Sospecho que es un problema del sistema operativo de nivel extremadamente bajo. Si tiene una unidad externa, instale un nuevo sistema operativo y arranque desde allí durante unos días y vea si el problema desaparece. Si es así, realice una instalación limpia en su MBA y no migre nada , copie sus datos e instale solo las aplicaciones más necesarias desde los medios de instalación en lugar de su antiguo sistema operativo. Bien podría ser que tenga alguna aplicación desagradable o rota que esté causando el problema, así que vuelva a agregarla lentamente y siempre desde archivos de instalación nuevos.

He editado mi pregunta para abordar sus suposiciones. Desafortunadamente no, esta Mac fue una instalación completamente nueva, no una migración de mi anterior MBA. No había nada copiado, ni configuraciones ni aplicaciones.

Definitivamente software.

solución fácil sería:

haga una copia de seguridad de la máquina del tiempo, luego formatee su disco duro y luego reinstale su sistema operativo.

cuando termine crea una nueva cuenta

cuando la cuenta esté configurada, inicie la herramienta de migración y seleccione su carpeta de inicio, e intente omitir cualquier cosa sin importancia

hecho, es casi seguro que esto debería solucionar su problema de forma permanente

( Diskmaker x ) ¡una gran utilidad para crear una unidad de disco de arranque de Mavericks para que no tengas que descargar Mountain Lion primero! si va con este enfoque, use alt en lugar de cmd + R

Le agradezco que se haya tomado el tiempo para responder, pero me gustaría saber cómo está seguro de que se trata de un problema de software (sospecho que también lo es). Además, si se trata de un problema de software, ¿existe una manera fácil de reinstalar solo la subsección específica (controladores XHCI) que podría estar causando el problema?
Estoy seguro de que la tecnología a menudo no es complicada, si un reinicio parece solucionar el problema por un tiempo, entonces no es seguro que sea un software, especialmente si usted mismo lo siente. Además, no hay problema con respecto a mi tiempo, ¡estoy feliz de ayudar! una manera fácil de volver a instalar la subsección específica. Me temo que no lo sé, sin embargo, simplemente reinstalar todo es tan fácil que es casi mi enfoque, hecho correctamente, y tomaría 30 minutos para reinstalar y luego simplemente transferir sus datos atrás, solo asegúrese de usar el enfoque de la herramienta de migración