Mantengo muchos dispositivos USB conectados a mi MacBook Pro de mediados de 2012 de 15 pulgadas para mi trabajo.
Este MacBook Pro tiene 2 puertos USB externos. Uno de ellos es para un fanático de una computadora portátil, y el otro es un concentrador USB que tiene < a href="http://www.newegg.com/Product/Product.aspx?Item=9SIA1HD1A40110"> otro concentrador USB y el concentrador de mi monitor Dell U2713HM.
Aparentemente, ¿los dispositivos no funcionarían al azar o de lo contrario serían ... ¿detectados a medias? Aparecerían en la lista de dispositivos USB pero no funcionarán correctamente, aunque lo hayan hecho en el pasado. Pasarlas a una instalación de Windows en Parallels tuvo solo la mitad de resultados. A menudo, el dispositivo se detectó en el nivel USB pero falló en el nivel de software. Al enchufarlos en una computadora portátil con Windows, se demostró que funcionaron bien.
Instalé los controladores de registro de IOUSBFamily. El USB Prober.app con el detalle establecido en 5 mostró lo siguiente en el registro al conectar un dispositivo:
Sep 2 10:52:41.274 [5] AppleUSBHub[0xffffff8026d7f800]::ProcessStatusChanged found (0x 2) in statusChangedBitmap
Sep 2 10:52:41.274 [3] AppleUSBHub[0xffffff8026d7f800]::ChangeRaisedPowerState(+) now (1)
Sep 2 10:52:41.274 [5] AppleUSBHubPort[0xffffff802703d200]::PortStatusChangedHandler: port 1 obtained runLock (_hasExternalConnector: 0)
Sep 2 10:52:41.274 [5] AppleUSBHubPort[0xffffff802703d200]::PortStatusChangedHandler: calling GetPortStatus for port 1
Sep 2 10:52:41.274 [5] AppleUSBHub[0xffffff8026d7f800]::powerChangeDone - spawning _checkForActivePortsThread
Sep 2 10:52:41.274 [4] AppleUSBHub[0xffffff8026d7f800]::CheckForActivePorts - this hub does not allow low power, so abandoning
Sep 2 10:52:41.274 [5] AppleUSBHubPort[0xffffff802703d200]::PortStatusChangedHandler - Hub 0x14221000 port 1 - Initial status(0x0101)/change(0x0001)
Sep 2 10:52:41.274 [5] AppleUSBHubPort[0xffffff802703d200]::PortStatusChangedHandler - port 1 - change 6 clearing feature 0x10 (kUSBHubPortConnectionChangeFeature)
Sep 2 10:52:41.274 [5] AppleUSBHub[0xffffff8026d7f800]::ClearPortFeature port/feature (10010) - clearing
Sep 2 10:52:41.274 [5] AppleUSBHubPort[0xffffff802703d200]::PortStatusChangedHandler - port 1 - status(0x0101) - change(0x0000) - before call to (6) handler function
Sep 2 10:52:41.274 [5] AppleUSBHubPort[0xffffff802703d200]::DefaultConnectionChangeHandler - handling port 1 changes (0x0101,0x0000)
Sep 2 10:52:41.274 [3] AppleUSBHubPort[0xffffff802703d200]::DefaultConnectionChangeHandler port (1) - previous enumeration failed - sleeping 300 ms
Sep 2 10:52:41.575 [5] AppleUSBHubPort[0xffffff802703d200]::DefaultConnectionChangeHandler - port 1 - no existing device found on port
Sep 2 10:52:41.575 [4] AppleUSBHubPort[0xffffff802703d200]::DefaultConnectionChangeHandler port 1 status(0x0101)/change(0x0000) - no error from GetPortStatus
Sep 2 10:52:41.575 [5] AppleUSBHubPort[0xffffff802703d200]::DefaultConnectionChangeHandler - port 1 - device detected, calling AddDevice
Sep 2 10:52:41.575 [3] AppleUSBHub[0xffffff8026d7f800]::ChangeRaisedPowerState(+) now (2)
Sep 2 10:52:41.575 [5] AppleUSBHubPort[0xffffff802703d200]::DefaultConnectionChangeHandler - port 1 done, ending (_portPMState: 3)
Sep 2 10:52:41.575 [5] AppleUSBHubPort[0xffffff802703d200]::PortStatusChangedHandler - port 1 - err (0) on return from call to (6) handler function
Sep 2 10:52:41.575 [5] AppleUSBHubPort[0xffffff802703d200]::PortStatusChangedHandler - port 1 - err = 0 - done, releasing _runLock
Sep 2 10:52:41.575 [3] AppleUSBHub[0xffffff8026d7f800]::ChangeRaisedPowerState(-) now (1)
Sep 2 10:52:41.575 [3] AppleUSBHub[0xffffff8026d7f800]::DecrementOutstandingIO(1018), outstandingIO(0), _interruptReadPending(false) - rearming read
Sep 2 10:52:41.575 [5] AppleUSBHub[0xffffff8026d7f800]::DecrementOutstandingIO(1018) - spawning _checkForActivePortsThread
Sep 2 10:52:41.575 [5] ***** AppleUSBHubPort[0xffffff802703d200]::AddDevice - port 1 on hub at 0x14221000 - start (options: 0x00000000)
Sep 2 10:52:41.575 [4] AppleUSBHub[0xffffff8026d7f800]::CheckForActivePorts - this hub does not allow low power, so abandoning
Sep 2 10:52:41.575 [5] ***** AppleUSBHubPort[0xffffff802703d200]::AddDevice - port 1 on hub at 0x14221000 - bus 0xffffff81a6082000 - acquiring dev zero lock
Sep 2 10:52:41.575 [5] AppleUSBXHCI[0xffffff81a6082000]::ProtectedDevZeroLock - about to obtain device zero lock
Sep 2 10:52:41.575 [5] AppleUSBXHCI[0xffffff81a6082000]::ProtectedDevZeroLock - not already locked - obtaining
Sep 2 10:52:41.575 [5] AppleUSBXHCI[0xffffff81a6082000]::ProtectedDevZeroLock - setting _devZeroLock to true
Sep 2 10:52:41.575 [5] AppleUSBXHCI[0xffffff81a6082000]::AcquireDeviceZero Acquired devZeroLock
Sep 2 10:52:41.575 [3] AppleUSBHub[0xffffff8026d7f800]::ChangeRaisedPowerState(+) now (2)
Sep 2 10:52:41.576 [5] ***** AppleUSBHubPort[0xffffff802703d200]::AddDevice - port 1 on hub at 0x14221000 - resetting port
Sep 2 10:52:41.576 [5] AppleUSBHub[0xffffff8026d7f800]::SetPortFeature port/feature (0x10004) - setting
Sep 2 10:52:41.594 [5] AppleUSBHub[0xffffff8026d7f800]::ProcessStatusChanged found (0x 2) in statusChangedBitmap
Sep 2 10:52:41.594 [3] AppleUSBHub[0xffffff8026d7f800]::ChangeRaisedPowerState(+) now (3)
Sep 2 10:52:41.594 [5] AppleUSBHubPort[0xffffff802703d200]::PortStatusChangedHandler: port 1 obtained runLock (_hasExternalConnector: 0)
Sep 2 10:52:41.594 [5] AppleUSBHubPort[0xffffff802703d200]::PortStatusChangedHandler: delaying 100ms before first GetPortStatus after a reset of port 1
Sep 2 10:52:41.595 [5] ***** AppleUSBHubPort[0xffffff802703d200]::AddDevice - port 1 on hub at 0x14221000 - (err = 0) done - (0x0503, 0x0010), returning
Sep 2 10:52:41.595 [3] AppleUSBHub[0xffffff8026d7f800]::ChangeRaisedPowerState(-) now (2)
Sep 2 10:52:41.694 [5] AppleUSBHubPort[0xffffff802703d200]::PortStatusChangedHandler: calling GetPortStatus for port 1
Sep 2 10:52:41.694 [5] AppleUSBHubPort[0xffffff802703d200]::PortStatusChangedHandler - Hub 0x14221000 port 1 - Initial status(0x0503)/change(0x0010)
Sep 2 10:52:41.694 [5] AppleUSBHubPort[0xffffff802703d200]::PortStatusChangedHandler - port 1 - change 2 clearing feature 0x14 (kUSBHubPortResetChangeFeature)
Sep 2 10:52:41.694 [5] AppleUSBHub[0xffffff8026d7f800]::ClearPortFeature port/feature (10014) - clearing
Sep 2 10:52:41.695 [5] AppleUSBHubPort[0xffffff802703d200]::PortStatusChangedHandler - port 1 - status(0x0503) - change(0x0000) - before call to (2) handler function
Sep 2 10:52:41.695 [5] ***** AppleUSBHubPort[0xffffff802703d200]::AddDeviceResetChangeHandler - port 1 on hub at 0x14221000 - start - status(0x0503) change (0x0000)
Sep 2 10:52:41.695 [3] **1** AppleUSBHubPort[0xffffff802703d200]::AddDeviceResetChangeHandler - port 1 on hub at 0x14221000 - new delay 300
Sep 2 10:52:41.695 [5] **1** AppleUSBHubPort[0xffffff802703d200]::AddDeviceResetChangeHandler - port 1 on hub at 0x14221000 - delaying 300 ms
Sep 2 10:52:41.995 [5] **2** AppleUSBHubPort[0xffffff802703d200]::AddDeviceResetChangeHandler - port 1 on hub at 0x14221000 - found high speed device
Sep 2 10:52:41.995 [5] **2** AppleUSBHubPort[0xffffff802703d200]::AddDeviceResetChangeHandler - port 1 on hub at 0x14221000 - configuring dev zero
Sep 2 10:52:41.995 [5] AppleUSBHubPort[0xffffff81a6082000]::DoConfigureDeviceZero - maxPacketSize: 64, speed: 2, hub: 10, port: 1
Sep 2 10:52:41.995 [3] AppleUSBXHCI[0xffffff81a6082000]::UIM **** - ConfigureDeviceZero maxPacketSize:64, speed:2, hub:10, adj port:1
Sep 2 10:52:41.995 [5] AppleUSBXHCI[0xffffff81a6082000]::ConfigureDeviceZero, new method called with speed : 2, hub:10, port:1
Sep 2 10:52:41.995 [5] AppleUSBXHCI[0xffffff81a6082000]::UpdateTopology, high speed ancestor hub:0, port:0
Sep 2 10:52:41.995 [5] AppleUSBXHCI[0xffffff81a6082000]::DoCreateEP, high speed ancestor hub:0, port:0, address: 0, speed: 2, maxStreams: 0, maxBurst: 0, mult: 0 EP: (0,0,64,0)
Sep 2 10:52:41.995 [1] AppleUSBXHCI[0xffffff81a6082000]::TestConfiguredEpCount (kIOUSBEndpointCountExceeded) - sub 2 _configuredEndpointCount, was:(97)
Sep 2 10:52:41.995 [1] AppleUSBXHCI[0xffffff81a6082000]::DoCreateEP - Received a kIOUSBEndpointCountExceeded, Address: 0, Speed: 2: Endpoint: (0x0, 0x0, 0x40, 0x0)
Sep 2 10:52:41.995 [3] AppleUSBXHCI[0xffffff81a6082000]::ConfigureDeviceZero (maxPacketSize: 64, Speed: 2) returned 0xe0004046 (Controller does not support more endpoints)
Sep 2 10:52:41.995 [3] ASM107x[0xffffff802703dc00] DisplayUserNotification type 0x1000007
Sep 2 10:52:41.995 [3] ASM107x[0xffffff802703dc00]::DisplayUserNotificationForDevice notificationType: 7, port 1
Sep 2 10:52:41.995 [5] **3** AppleUSBHubPort[0xffffff802703d200]::AddDeviceResetChangeHandler - port 1 on hub at 0x14221000 - failed to create device zero, detach'ing device
Sep 2 10:52:41.995 [5] AppleUSBHub[0xffffff8026d7f800]::ClearPortFeature port/feature (10001) - clearing
Sep 2 10:52:41.995 [3] AppleUSBHub[0xffffff8026d7f800]::ChangeRaisedPowerState(-) now (1)
Sep 2 10:52:41.995 [3] AppleUSBXHCI[0xffffff81a6082000]::UIMDeleteEndpoint - fn:0, ep:0, dir:3
Sep 2 10:52:41.995 [3] AppleUSBXHCI[0xffffff81a6082000]::GetSlotID - functionNumber disabled: 0
Sep 2 10:52:41.995 [5] AppleUSBXHCI[0xffffff81a6082000]::ProtectedDevZeroLock - about to release device zero lock
Sep 2 10:52:41.995 [5] AppleUSBXHCI[0xffffff81a6082000]::ProtectedDevZeroLock - releasing lock
Sep 2 10:52:41.995 [5] AppleUSBXHCI[0xffffff81a6082000]::ProtectedDevZeroLock - wakeup done
Sep 2 10:52:41.995 [5] AppleUSBHubPort[0xffffff802703d200]::PortStatusChangedHandler - port 1 - err (0) on return from call to (2) handler function
Sep 2 10:52:41.995 [5] AppleUSBHubPort[0xffffff802703d200]::PortStatusChangedHandler - port 1 - err = 0 - done, releasing _runLock
Sep 2 10:52:41.995 [3] AppleUSBHub[0xffffff8026d7f800]::ChangeRaisedPowerState(-) now (0)
Sep 2 10:52:41.995 [3] AppleUSBHub[0xffffff8026d7f800]::DecrementOutstandingIO(1023), outstandingIO(0), _interruptReadPending(false) - rearming read
Sep 2 10:52:41.995 [5] AppleUSBHub[0xffffff8026d7f800]::powerChangeDone - spawning _checkForActivePortsThread
Sep 2 10:52:41.995 [4] AppleUSBHub[0xffffff8026d7f800]::CheckForActivePorts - this hub does not allow low power, so abandoning
El error está en estas líneas:
Sep 2 10:52:41.995 [1] AppleUSBXHCI[0xffffff81a6082000]::TestConfiguredEpCount (kIOUSBEndpointCountExceeded) - sub 2 _configuredEndpointCount, was:(97)
Sep 2 10:52:41.995 [1] AppleUSBXHCI[0xffffff81a6082000]::DoCreateEP - Received a kIOUSBEndpointCountExceeded, Address: 0, Speed: 2: Endpoint: (0x0, 0x0, 0x40, 0x0)
Fuente para IOUSBControllerV2.cpp , que arroja ese error. Lamentablemente, ese archivo es bastante antiguo, ya que Apple ya no publica esa fuente. La fuente es para 10.8.4 y estoy en 10.9.4.
El error se define en USB.h como #define kIOUSBEndpointCountExceeded // 0xe0004046 The endpoint was not created because the controller cannot support more endpoints
pero, lamentablemente, es solo un pequeño detalle.
El nombre del error sugiere que se trata de un límite de dispositivo excedido (dur), por lo que desconecté muchos dispositivos y, después de conectar uno, se detectó y funcionó bien.
Mis preguntas son:
- ¿Dónde está la limitación?
- ¿Está esto documentado?
- ¿Hay alguna solución?