¿Cómo reiniciar el subsistema USB?

Estoy desarrollando en Arduino y, a veces, el puerto USB que se está utilizando deja de funcionar. Luego necesito conectar el dispositivo a otro puerto USB. Una vez que todos los puertos USB dejan de funcionar, tengo que reiniciar la máquina, lo cual es realmente molesto.

Por lo que recuerdo, hay un comando que puede reiniciar el subsistema USB individualmente, pero no recuerdo. ¿Cómo puedo reiniciar los USB sin reiniciar todo el sistema?

Estoy usando macOS Sierra.

Esto es diferente a la pregunta Restablecimiento del puerto USB en una MacBook Pro , ya que necesito una solución solo de software ya que mis puertos USB se congelan, lo que significa que dejan de funcionar hasta que se reinicia el sistema por completo. Debe haber una forma de reiniciar el subsistema USB individualmente.

¿Qué modelo(s) de Mac estás usando?
¿Por qué esto no está relacionado con Mac? Se trata de puertos USB en su Mac y cómo reiniciar el sistema USB en la Mac, no en Arduino. Por otro lado, la comunidad de Ardiono podría ser más útil ya que verán este problema con más frecuencia. arduino.stackexchange.com
De mi comentario que comienza con "Por la forma en que está redactada su pregunta..." dice por qué parece que esto no está relacionado con Mac. Debe articular cuál es su problema, cuál espera que sea el resultado y cuál es su entorno. Recuerde, no estamos allí para mirar por encima de su hombro. Además, esta pregunta respondida recientemente aborda su pregunta apple.stackexchange.com/questions/294944/… por lo que ahora su pregunta (basada en los comentarios) es potencialmente un engaño.
Esto suena como un problema XY. Una posible razón del problema es que el dispositivo Arduino consume demasiada energía y sobrecalienta el bus USB. Conéctelo a un concentrador USB con alimentación externa y conecte el concentrador USB con alimentación externa a la Mac.

Respuestas (2)

Puede restablecer el bus USB con la aplicación USB Prober. No está incluido con XCode, pero puede descargarlo por separado desde la página de descargas para desarrolladores de Apple . Deberá registrarse e iniciar sesión.

  1. buscariousbfamily
  2. Descargue el último archivo de liberación de registro de IOUSBFamily (en el momento de esta publicación era IOUSBFamiliy Log Release for OS X 10.9.3)
  3. Monte el .dmg y navegue hasta el directorio con IOUSB-XXXXXX-log.
  4. No instalar. Simplemente haga clic derecho en el paquete y "Mostrar contenido del paquete"
  5. Descomprima el Archive.pax.gz; el archivo USBProber.app estará en/Archive/DevTools/Hardware


Importante:

Simplemente iniciar la aplicación restablecerá su bus USB. ¡Asegúrese de desmontar las unidades que no desea que se eliminen de forma incorrecta y sin ceremonias!

No puedo restablecer el USB con este USB Prober. ¿Puede indicar cómo hacerlo?
Simplemente iniciando USB prober lo restablecerá. ¿Qué hiciste y qué pasó?
Hice todo de acuerdo con tu respuesta, pero la aplicación no lo restablece.
Recuerdo claramente que había un comando para reiniciar el maldito USB sin sentido. 1 pieza de mando, en la terminal. Simplemente no tengo que reiniciarlo en un día normal para que lo haya olvidado....
De hecho, esto no funciona aquí. Intenté montar una memoria USB 'defectuosa' en la última versión de Sierra. No se reconocen más palos hasta que se reinicia. La periferia externa aún funciona después de un mal funcionamiento, USBProber no se restablece al iniciarse. ¿Cualquier otra forma?
Por cierto: en el momento en que escribiste esta publicación, 10.9.4 parecía haber sido la última versión (curiosamente, aparece una debajo de .3). / @haxpanel Una forma de cli enumerada aquí tampoco era efectiva ahora.
A mi tampoco me funciona:sudo ./USB\ Prober.app/Contents/Resources/reenumerate -v 0x00000bda,0x00008153 sudo: ./USB Prober.app/Contents/Resources/reenumerate: command not found
Apple quiere inicio de sesión/registro. ¿Hay un enlace directo?
@kyb: originalmente tenía la aplicación vinculada a la descarga compartida, pero la eliminé porque Apple requiere registro. Si hace clic en el enlace "editado el 28 de agosto de 17" en la parte inferior de mi respuesta, verá todos los cambios.

Para restablecer un dispositivo USB, primero descargue el USB Prober.appcomo se explica en esta otra respuesta .

A continuación, debe averiguar los identificadores de proveedor y producto del dispositivo USB que desea restablecer. Puede hacerlo con USB Prober, pero puede ser más fácil usando la System Profileraplicación desde su carpeta de aplicaciones/utilidades: seleccione USBdentro del Hardwaretema en el panel izquierdo, luego busque su dispositivo USB en el panel superior derecho, selecciónelo y Verá sus ID de producto y proveedor que se muestran a continuación, así:

Captura de pantalla del perfilador del sistema

Los ID de inicio son códigos hexadecimales que comienzan con 0x y tienen 4 dígitos/letras más. Tome nota de ellos, con la identificación del proveedor primero.

Dentro de USB Prober, hay una herramienta llamada reenumerateque debe invocar desde Terminal.app (encuéntrela en su carpeta de Aplicaciones / Utilidades).

Mueva o copie lo descargado USB Prober.appa su carpeta de Utilidades.

Abra Terminal.appy pegue la siguiente línea en él:

/Applications/Utilities/USB\ Prober.app/Contents/Resources/reenumerate

Luego haga clic en la ventana Terminal y escriba la tecla de espacio, luego escriba los dos ID de dispositivo USB, ID de proveedor primero, separados por una coma. Si sus ID fueran 0x174c y 0x55aa, entonces la línea ahora debería decir:

...$ /Applications/Utilities/USB\ Prober.app/Contents/Resources/reenumerate -v 0x174c,0x55aa

Presione regresar y debería obtener un resultado similar a este:

Verbose mode ON
Looking for vid: 0x174c, pid: 0x55aa
Found "ASM105x" @ 0x14200000
Calling USBDeviceReEnumerate
USBDeviceReEnumerate returns 0x00000000

Si no obtiene más que la primera línea, significa que ingresó las identificaciones incorrectas. Si obtiene la salida completa, el dispositivo debería haberse reiniciado; para un dispositivo de disco, esto significa que se desconectará y volverá a conectar como si hubiera desconectado el cable brevemente.

Si invoca el reenumeratecomando sin ningún argumento, obtendrá información de uso con más opciones que podría probar.

¿Qué es Prober.app? ¿Qué sucede exactamente aquí? ¿Qué directorio es USB?
En Mojave, este comando que usa USB Prober no funciona para mí. Veo las dos primeras líneas, pero nada después de eso.
Lamentablemente, esto no funciona para el dispositivo en particular que estoy tratando de controlar, probablemente porque en realidad es un concentrador Thunderbolt. ;] Obtengo este resultado: ``` ~ ❯❯❯ /Applications/USB\ Prober.app/Contents/Resources/reenumerate -v 0x2109,0x0812 Verbose mode ON Buscando vid: 0x2109, pid: 0x812 Found "USB3.0 Hub " @ 0x00500000 No se puede abrir () el dispositivo IOUSB. Un controlador del kernel probablemente lo esté controlando. ``` ¿Supongo que por casualidad no sabes cómo lidiar con eso?