Tengo molti dispositivi USB inseriti nel mio MacBook Pro Mid-15 da 15 pollici per il mio lavoro.
Questo MacBook Pro ha 2 porte USB esterne. In uno è per un fan del laptop, e l'altro è un hub USB che ha < a href="http://www.newegg.com/Product/Product.aspx?Item=9SIA1HD1A40110"> un altro hub USB e l'hub del mio monitor Dell U2713HM.
Apparentemente i dispositivi non funzionano a caso o per il resto vengono ... rilevati a metà? Appariranno nell'elenco dei dispositivi USB ma non funzioneranno correttamente, anche se in passato. Passarli attraverso un'installazione di Windows su Parallels aveva solo metà risultati. Spesso il dispositivo è stato rilevato a livello USB ma non è riuscito a livello di software. Inserirli in un laptop Windows dedicato ha dimostrato che funzionavano bene.
Ho installato i driver di registrazione IOUSBFamily. USB Prober.app con dettagli impostati su 5 ha mostrato quanto segue nel registro quando si collega 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
L'errore è su queste righe:
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 , che genera quell'errore Purtroppo, quel file è piuttosto vecchio, in quanto Apple non rilascia più tale fonte. La fonte è per 10.8.4 e io sono su 10.9.4.
L'errore è definito in USB.h come #define kIOUSBEndpointCountExceeded // 0xe0004046 The endpoint was not created because the controller cannot support more endpoints
, ma purtroppo questo è solo un piccolo dettaglio.
Il nome dell'errore indica che si tratta di un limite di dispositivo superato (dur), quindi ho scollegato molti dispositivi e, dopo aver collegato solo uno, è stato rilevato e funzionante.
Le mie domande sono:
- Dov'è la limitazione?
- È documentato?
- C'è una soluzione alternativa?