Erro kiousbendpointcountsexenciado ao conectar o dispositivo USB -- acbook-pro campo com usb camp apple Relacionado O problema

kIOUSBEndpointCountExceeded error when plugging in USB device


1
vote

problema

português

Eu mantenho muitos dispositivos USB conectados ao meu MacBook Pro MacBook Pro para o meu trabalho.

Este MacBook Pro possui 2 portas USB externas. Em um é para um fã de laptop, e o outro é um hub USB que tem outro hub USB e meu centro do monitor Dell U2713hm. < / p >.

Dispositivos aparentemente não funcionariam aleatoriamente ou seriam ... metade detectada? Eles apareceriam na lista de dispositivos USB, mas não funcionarão corretamente, mesmo que tenham no passado. Passando-os para uma instalação do Windows no Parallels tinha apenas meio de resultados. Muitas vezes o dispositivo foi detectado no nível USB, mas falhou no nível do software. Conectá-los a um laptop de Windows dedicado mostrou que funcionaram bem.

Eu instalei os drivers de log de iousbfamily. Usb prober.app com detalhe definido como 5 mostrou o seguinte no log ao conectar um 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    

O erro está nestas linhas:

  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)    

fonte para iousbcontrollerv2. CPP , que lança esse erro. Infelizmente, esse arquivo é bastante envelhecido, pois a Apple não libera mais essa fonte. A fonte é para 10.8.4 e eu estou em 10.9.4.

O erro é definido em USB.H como #define kIOUSBEndpointCountExceeded // 0xe0004046 The endpoint was not created because the controller cannot support more endpoints mas, infelizmente, é apenas o mínimo de detalhes.

O nome do erro sugere que é um limite de dispositivo excedido (Dur), então eu desconectei muitos dispositivos e depois de conectar apenas um deles foi detectado e funcionando bem.

minhas perguntas são:

  • onde está a limitação?
  • é este documentado?
  • Existe uma solução alternativa?

english

I keep a lot of USB devices plugged into my 15-inch Mid 2012 MacBook Pro for my job.

This MacBook Pro has 2 external USB ports. In one is for a laptop fan, and the other is a USB hub which has another USB hub and my Dell U2713HM monitor's hub.

Devices would seemingly not work at random or otherwise be... half detected? They'd appear in the USB device list but not work correctly, even though they have in the past. Passing them through to a Windows install on Parallels had just as half-results. Often the device was detected at the USB level but failed at the software level. Plugging them into a dedicated Windows laptop showed they worked fine.

I installed the IOUSBFamily logging drivers. USB Prober.app with detail set to 5 showed the following in the log when plugging in a device:

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 

The error is on these lines:

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) 

Source for IOUSBControllerV2.cpp, which throws that error. Sadly, that file is rather aged, as Apple no longer releases that source. The source is for 10.8.4 and I'm on 10.9.4.

The error is defined in USB.h as #define kIOUSBEndpointCountExceeded // 0xe0004046 The endpoint was not created because the controller cannot support more endpoints but sadly that's just as little detail.

The name of the error suggests that it's an exceeded device limit (dur), so I unplugged a lot of devices and after plugging in just one it was detected and working fine.

My questions are:

  • Where is the limitation?
  • Is this documented?
  • Is there a workaround?
     

Lista de respostas

2
 
vote
vote
Melhor resposta
 

Patching o kernel para contornar o problema

Eu não recomendo que você faça isso. Você está editando o binário de um arquivo muito importante. Se ficar bagunçado, bem, ya. Mas esta é a única solução.

É provável que 10.9.4 específico.

Abcdefghijklmnabcdefghijklmn0 de /System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/AppleUSBXHCI.kext/Contents/MacOS/AppleUSBXHCI deve conter 66 B9 60 00. que se traduz em mov cx, 60h

Eu editei para 66 B9 *80* 00 e todos os meus dispositivos vêm online agora. Eu suponho que vai ainda mais alto, ou removendo o cheque "errata", também é seguro. Se você tiver problemas em problemas, você pode simplesmente desconectar dispositivos e reiniciar.


Pesquisa

Parece estar quebrando dentro da função AppleUSBXHCI::TestConfiguredEpCount em AppleUSBXHCIUIM.cpp .

que está usando um valor máximo, que é definido de:

  // default max number of endpoints we allow to be configured _maxControllerEndpoints = kMaxXHCIControllerEndpoints;  // this will switch the mux for panther point EnableXHCIPorts();  if( (_errataBits & kXHCIErrataPPT) != 0) {        // Panther Point - limit endpoints to 64 <rdar://problem/10385765>     // does this need a separate errata bit?     _maxControllerEndpoints = 64; }    

Os sinalizadores estão sendo definidos por este código

  static ErrataListEntry  errataList[] = {      {0x1033, 0x0194, 0, 0xffff, kXHCIErrata_NEC},   // NEC XHCI, check firmware     {0x1b73, 0x1000, 0, 0xffff, kXHCIErrata_NoMSI}, // Fresco Logic XHCI     {0x8086, 0x1e31, 0, 0xffff, kXHCIErrataPPT | kXHCIErrataPPTMux | kXHCIErrata_EnableAutoCompliance | kErrataSWAssistXHCIIdle | kXHCIErrata_ParkRing},    // Intel Panther Point     {0x1b21, 0, 0, 0xffff,  kXHCIErrata_ASMedia},   // ASMedia XHCI     {0x1b73, 0, 0, 0xffff, kXHCIErrata_FrescoLogic},// Fresco Logic     {0x1b73, 0x1100, 0, 16, kXHCIErrata_FL1100_Ax}, // Fresco Logic FL1100-Ax     {0x1b6f, 0x7052, 1, 0xffff, kXHCIErrata_Etron7052} };    

0x1e31 é o ID do dispositivo do meu MacBook Pro's Construído no Controlador USB!

O registro mostra que o meu limite máximo é definido como 96 (ele atinge 97 e define o valor ERR fazendo com que ele reverte). Esta fonte é antiga, pois a Apple fechou a fonte para IOUsbfamily há um tempo atrás, então não há uma maneira real de dizer onde o 96 está vindo, mas a conclusão parece ser meu hub é preto listado pelo kernel OSX por razões desconhecidas. / p >.

A Apple aumentou o limite em 50% em 10,8, onde foi 64, a 96 em 10,9. Isso mostra que o número é arbitrário. O hardware não mudou, mas havia um aumento de 50% permitido no software, isso é uma mudança significativa. Mas por que não 128? Por que não 95 ou 96? As unidades de poder de dois são provavelmente também sem sentido aqui.


Por que 96 pontos finais é um limite muito baixo

Cada um dos meus hubs USB tem 3 controladores USB dentro dele. Cada um suporta "velocidade completa / baixa" e "superspeed". Cada um deles tem um endpoint para entrada e outro para a saída. 3 Hubs * 3 controladores Cada * 2 Protocolos Cada controlador * 2 para io = 36 pontos finais ... apenas em hubs!

O Bluetooth embutido no laptop usa 8, a câmera HD Facetime usa 6, um Nexus 4 usa 6.

96 é uma quantidade muito baixa de pontos finais.

 

Patching the kernel to work around the issue

I do not recommend you do this. You're editing the binary of a very important file. If it gets messed up, well, ya. But this is the only solution.

This is likely 10.9.4 specific.

Location 0x00016942 of /System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/AppleUSBXHCI.kext/Contents/MacOS/AppleUSBXHCI should contain 66 B9 60 00. That translates to mov cx, 60h

I edited it to 66 B9 *80* 00 and all of my devices come online now. I assume going even higher, or removing the "errata" check altogether, is also safe. If you run into trouble you can just unplug devices and reboot.


Research

It appears to be breaking inside of the function AppleUSBXHCI::TestConfiguredEpCount in AppleUSBXHCIUIM.cpp.

Which is using a max value, which is set from:

// default max number of endpoints we allow to be configured _maxControllerEndpoints = kMaxXHCIControllerEndpoints;  // this will switch the mux for panther point EnableXHCIPorts();  if( (_errataBits & kXHCIErrataPPT) != 0) {        // Panther Point - limit endpoints to 64 <rdar://problem/10385765>     // does this need a separate errata bit?     _maxControllerEndpoints = 64; } 

The flags are being set by this code

static ErrataListEntry  errataList[] = {      {0x1033, 0x0194, 0, 0xffff, kXHCIErrata_NEC},   // NEC XHCI, check firmware     {0x1b73, 0x1000, 0, 0xffff, kXHCIErrata_NoMSI}, // Fresco Logic XHCI     {0x8086, 0x1e31, 0, 0xffff, kXHCIErrataPPT | kXHCIErrataPPTMux | kXHCIErrata_EnableAutoCompliance | kErrataSWAssistXHCIIdle | kXHCIErrata_ParkRing},    // Intel Panther Point     {0x1b21, 0, 0, 0xffff,  kXHCIErrata_ASMedia},   // ASMedia XHCI     {0x1b73, 0, 0, 0xffff, kXHCIErrata_FrescoLogic},// Fresco Logic     {0x1b73, 0x1100, 0, 16, kXHCIErrata_FL1100_Ax}, // Fresco Logic FL1100-Ax     {0x1b6f, 0x7052, 1, 0xffff, kXHCIErrata_Etron7052} }; 

0x1e31 is the Device ID of my MacBook Pro's built in USB controller!

The logging shows my max limit is set to 96 (it hits 97 and sets the err value causing it to revert). This source is old as Apple has closed the source to IOUSBFamily a while ago, so there's no real way to tell where the 96 is coming from, but the conclusion appears to be my hub is black listed by the OSX kernel for reasons unknown.

Apple increased the limit by 50% in 10.8, where it was 64, to 96 in 10.9. This shows that the number is arbitrary. The hardware did not change but there was a 50% increase allowed in the software, that's a significant change. But why not 128? Why not 95, or 96? The units of power of two are likely also meaningless here.


Why 96 end points is a very low limit

Each one of my USB hubs has 3 USB controllers inside of it. Each one supports "Full/Low Speed" and "SuperSpeed." Each one of those has an endpoint for input, and one for output. 3 hubs * 3 controllers each * 2 protocols each controller * 2 for IO = 36 end points... just on hubs!

The bluetooth built into the laptop uses 8, the HD FaceTime Camera uses 6, a Nexus 4 uses 6.

96 is a very low amount of end points.

 
 

Perguntas relacionadas

2  Thunderbolt SSD ou USB 3 SSD - Precisa de uma unidade SSD externa  ( Thunderbolt ssd or usb 3 ssd need an external ssd drive ) 
Estou planejando obter um SSD (500 GB) Provavelmente Samsung Evo ou Corsair (LS, LX, GT) e Amp; Seagate Thunderbolt adaptador para o meu MacBook Pros '2011 e ...

0  Unidade USB não aparecendo no utilitário de disco  ( Usb drive not showing up in disk utility ) 
Eu tenho uma unidade USB de 64GB que foi desligada a meio caminho através da formatando, e agora não é reconhecida pelo utilitário de disco. ABCDEFGHIJKLMNAB...

9  Por que meu microfone de fone de ouvido funciona?  ( Why doesnt my headset microphone work ) 
Eu tenho um fone de ouvido de steelseries para o Natal e eu liguei ao meu MacBook Pro. A saída de áudio funciona bem, mas estou com problemas com a entrada de...

21  MacBook Pro não detectando USB inicializável com Yosemite  ( Macbook pro not detecting bootable usb with yosemite ) 
Eu criei um USEB USB de Yosemite, na versão 10.10.1. Quando eu seguro option durante a inicialização, a unidade USB não aparece no menu. Eu tenho um MBP...

8  Não consigo criar um Mavericks OSX inicializável instalar USB Drive  ( I cant create a bootable osx mavericks install usb drive ) 
Eu baixei o Mavericks da App Store, reparticionei uma tecla USB de 32GB e seguiu as instruções . Especificamente, eu corri: sudo /Applications/Install OS ...

20  Posso usar meu carregador do iPhone para carregar outros dispositivos baseados em USB?  ( Can i use my iphone charger for charging other usb based devices ) 
É OK usar o carregador do iPhone para carregar outros dispositivos alimentados por USB como o Kindle ou uma câmera digital (com uma bateria recarregável)? Pod...

3  MacBook Pro (final de 2011) Bootcamp e perguntas de inicialização USB  ( Macbook pro late 2011 bootcamp and usb boot questions ) 
Eu tenho um MacBook Pro com um caddy Drive OWC Dataadoubler que substitui o superdrive (instalado em um revendedor Premium da Apple, quando eu comprei, então ...

10  Problema de tethering USB do iPhone  ( Iphone usb tethering problem ) 
Eu tenho um pequeno problema estranho nas minhas mãos aqui. Tudo isso, eu tenho usado o iPhone tethering via USB e tudo estava bem. No entanto, hoje à tar...

5  O boot campca não copia arquivos de instalação do Windows 8  ( Boot camp fails to copy windows 8 installation files ) 
Eu tenho lutado para obter o Windows 8 instalado em um novo MacBook Pro Retina. Parecia simplesmente apenas executar o Boot Camp 5 com uma unidade flash de 16...

1  Erro ao copiar o arquivo grande para USB 16GB Thumbdrive  ( Error copying large file to usb 16gb thumbdrive ) 
tentando copiar um arquivo (win7_ie8.vhd) para uma unidade USB. O arquivo é 9.07GB de tamanho de acordo com a minha informação do arquivo Mac. A unidade U...




© 2022 pergunte.org All Rights Reserved. Casa de perguntas e respostas todos os direitos reservados


Licensed under cc by-sa 3.0 with attribution required.