Necesito apagar (y encender) el USB usando un script o una pieza de software. Idealmente, debería ser posible apagar/encender cada puerto por separado, pero también es suficiente apagar/encender todos los puertos a la vez. La máquina que estoy usando es Mac Mini. ¿Alguien tiene una solución para esto?
Por alimentación USB me refiero a Vbus, la conexión de 5V/500mA. Entiendo que la conexión de datos también está desactivada y está bien, pero no es suficiente para mí que la conexión de datos esté desactivada y Vbus permanezca encendido. Esta necesidad proviene de la necesidad de mantener los teléfonos móviles constantemente conectados para realizar pruebas automáticas. A algunas combinaciones de dispositivo/batería no les gusta estar constantemente conectadas y las baterías comienzan a hincharse en menos de un año.
Reconozco que existen múltiples variaciones de esta pregunta. Hasta ahora no hay una solución que pueda usar. Enumeraré aquí mis hallazgos hasta ahora:
es posible lograr esto utilizando un HUB USB externo autoalimentado y controlando su alimentación. Sin embargo, esta no es una opción para mí (incluso los centros de calidad han causado otros problemas en mi uso).
es posible deshabilitar el USB eliminando los archivos .kext. Entre otras fuentes , se explica en el documento de configuración de seguridad de OS X. Sin embargo, esto requiere reiniciar y no estoy seguro de si realmente deshabilita la alimentación USB o solo los datos.
hay muchas afirmaciones de que simplemente no es posible. Sin embargo, el propio OS X lo hace cuando detecta un dispositivo que consume demasiada energía, por lo que al menos hay soporte de hardware. Este mensaje de error se copia de /System/Library/Extension/IOUSBFamily.kext/Contents/Resources/English.lproj/Localizable.strings: "Desconecte el dispositivo usando demasiada energía para volver a habilitar los dispositivos USB". (por supuesto, no sé si la desactivación se realiza apagando la alimentación USB, pero supongo que es una acción natural para el dispositivo que consume demasiado).
parece que en macbook los puertos USB normalmente están alimentados incluso cuando la computadora portátil está en reposo. Si bien esto no está resolviendo mi problema, está relacionado.
La razón por la que necesito esto es que tengo un sistema de prueba en el que se conectan varios dispositivos a un mac mini. Los dispositivos también se cargan a través de USB. Ha resultado que si el dispositivo está conectado todo el tiempo a un cargador, su batería se hincha en aproximadamente un año, lo que hace que el dispositivo sea inutilizable, inseguro y potencialmente peligroso. Apagar la alimentación cuando no se necesita extendería significativamente la vida útil de los dispositivos.
Pasé mucho tiempo investigando este problema hace algunos años; mi conclusión es que simplemente no es posible con la información disponible. El control de la potencia ocurre a un nivel mucho más bajo que el propio kernel de macOS, por lo que no se trata solo de configurar macOS o hurgar en la estructura de datos del kernel correcta. Tiene que modificar el firmware que no es posible para los usuarios normales.
La única solución de trabajo que encontré es usar un concentrador. Esto funcionó muy bien para mí. Si tiene un concentrador que admite la conmutación de alimentación en grupo, puede apagar/encender fácilmente la alimentación de cada grupo (conjunto de puertos). De manera similar, si tiene un concentrador que admite la conmutación de alimentación por puerto, puede apagar/encender cada puerto del concentrador individualmente.
Puede descargar software para macOS para controlar el concentrador desde aquí:
https://github.com/mvp/uhubctl
Tenga en cuenta que esta utilidad solo admite concentradores de control que permiten la conmutación de alimentación por puerto. El sitio web tiene una lista de concentradores USB compatibles.
Una vez que opté por la solución del concentrador, la parte más difícil fue encontrar un concentrador USB que admitiera la conmutación de alimentación en grupo o por puerto. La parte del software real es muy fácil.
Alano
diidu
diidu
Alano
diidu
diidu
Alano
diidu