Tuve el mismo problema con Ubuntu 16.04 (Xenial Xerus) y busqué mucho cualquier solución ...
La solución está al final de esta respuesta si no te importa la historia contextual. El contexto podría parecer una blabla inútil (tal vez lo sea), pero creo que podría ayudar a los lectores a verificar si el problema que he resuelto en mi PC es el mismo que el suyo.
CONTEXTO
Desesperadamente he probado sin éxito casi todos los consejos que he encontrado en la web, reiniciando después de cada intento:
usbcore.autosuspend=-1
Parámetro de arranque del núcleo '/ etc / default / grub'
- laptop-mode's 'runtime-pm.conf'
CONTROL_RUNTIME_AUTOSUSPEND=0
- deshabilitar completamente las herramientas de modo portátil del archivo '/etc/laptop-mode/laptop-mode.conf', confirmando que el problema no está relacionado con esta función del núcleo. He comprobado diferentes formas en que laptop_mode ya no se estaba ejecutando para estar seguro. (Ref:
man laptop-mode.conf
& man laptop_mode
)
- He leído algunos trucos sobre '/etc/laptop-mode/conf.d/usb-autosuspend.conf', pero este archivo no existe en mi versión de Ubuntu 16.04 con laptop-mode-tools v1.68
- Desinstalación de la aplicación Powertop . A menudo se sospecha que en los foros causa problemas de autosuspend, y hoy sé que no fue cierto en mi caso, ya que desinstalarlo no solucionó nada.
options usbcore autosuspend=1
en '/etc/modprobe.d/usb.conf' también ha sido ineficiente
- Script '/etc/udev/rules.d/60-power.rules' proporcionado por el Wiki oficial de Gentoo
rules
archivo específico del dispositivo para udev
'/etc/udev/rules.d/usb-power.rules' recomendado por Serge Y. Stroobandt
Después de leer todo este material técnico, solo entendí que la causa estaba relacionada con mi valor '/ sys / module / usbcore / parameters / autosuspend' bloqueado en dos segundos, sin importar el cambio que haga a mi configuración. Puedes verificarlo con el cat
comando:
$ cat /sys/module/usbcore/parameters/autosuspend
2
Y sí, mi mouse se deshabilitó exactamente después de dos segundos, por lo que sabía que estaba en el camino correcto. Por supuesto, probé el echo -1
comando que he visto aquí y allá, -1
destinado a deshabilitar la suspensión automática ... pero:
sudo echo -1 > sys/module/usbcore/parameters/autosuspend
bash: /sys/module/usbcore/parameters/autosuspend: Permission denied
No entendí por qué se denegó el permiso incluso en modo sudo. No intenté como root, porque simplemente no pensé que podría ser un problema. Aquí estaba el error :(
Gracias a los comentarios de Alex Dekker y Bryce , aprendí cómo deshabilitar la suspensión automática solo para mi mouse. Pero, por supuesto, mis primeros intentos han fallado con esto bash: Permission denied error
, así que tuve que esperar para comprender mi confusión raíz / sudo antes de que el echo -1
comando sugerido por Alex finalmente funcione.
También he encontrado una mejor manera de ejecutar un comando como usuario root sin iniciar sesión como root. La diferencia entre el uso de shell root y el uso de comandos de root está bien explicada en la página wiki oficial RootSudo de Ubuntu . Me encanta aprender a este tipo de cosas, pero ¡oye! ¿Por qué tiene que aprenderse siempre de la manera dolorosa? Jajaja
Dios mío, fue un verdadero dolor de cabeza, y a un novato como yo le tomó mucho tiempo entenderlo, ya que generalmente digo "sin cerebro no hay ganancia". El mío necesita visiblemente más entrenamiento.
¡Así que dejemos de hablar de mí y reparémoslo! Por favor continúe abajo ...
Recomiendo encarecidamente la segunda solución para que su disco duro externo inactivo no agote la batería de su computadora portátil por nada. Pero les doy ambas soluciones, porque quien ama su propia libertad también debería amar la libertad de los demás :)
SOLUCION 1
Para desactivar la suspensión automática en todos los dispositivos / puertos USB
Abra la Terminal y ejecute:
sudo sh -c "echo -1 > /sys/module/usbcore/parameters/autosuspend"
De hecho, esta es una solución temporal que le permite probar al instante si este comando soluciona el problema de la suspensión automática del mouse o del teclado.
Si sus dispositivos USB funcionan bien ahora, simplemente edite su script '/etc/rc.local' para que ejecute ese comando cada vez que se inicie el sistema. De esta forma, la solución será permanente . Edite el archivo, por ejemplo con nano:
sudo nano /etc/rc.local
y ponga el echo -1
comando en su archivo '/etc/rc.local' antes de la exit 0
línea
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
(...)
# By default this script does nothing.
echo -1 > /sys/module/usbcore/parameters/autosuspend
exit 0
Reinicia tu computadora
(Consulte la nota importante al final).
.
SOLUCIÓN 2
Para desactivar la suspensión automática para un dispositivo / puerto USB específico
Las opciones de energía para un dispositivo USB están en /sys/bus/usb/devices/n-n/power
. Lo que n-n
es para un dispositivo dado requiere algunas manipulaciones para descubrirlo, pero no es complicado. El siguiente ejemplo muestra cómo he determinado que el número de puerto USB de mi receptor de mouse inalámbrico es 3-1
, así que adapte esto a su propia situación:
Desenchufe su dispositivo USB, abra la Terminal y ejecute el sudo dmesg
comando
Vuelva a conectar su dispositivo USB y luego sudo dmesg
vuelva a ejecutarlo en la Terminal para verificar los cambios
Así dmesg
es como se ve el final de la salida de mi comando después de volver a enchufar el mouse en una ranura
[40208.575249] usb 3-1: new full-speed USB device number 8 using xhci_hcd
[40208.705233] usb 3-1: New USB device found, idVendor=062a, idProduct=4102
[40208.705240] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[40208.705245] usb 3-1: Product: 2.4G Wireless Mouse
[40208.705248] usb 3-1: Manufacturer: MOSART Semi.
[40208.707679] input: MOSART Semi. 2.4G Wireless Mouse as /devices/pci0000:00/0000:00:14.0/usb3/3-1/3-1:1.0/0003:062A:4102.0007/input/input24
[40208.763946] hid-generic 0003:062A:4102.0007: input,hiddev0,hidraw0: USB HID v1.10 Mouse [MOSART Semi. 2.4G Wireless Mouse] on usb-0000:00:14.0-1/input0
Ahora podemos ver que el puerto donde se conectó mi dispositivo USB se identifica como usb 3-1
.
**Note:** this trick concerns the USB port ID, not a device ID. For example, if I plug my mouse to the next USB port, it becomes identified as `usb 3-2` in the `dmesg` result. But this solution #2 remains very useful if you take the habit to always plug your mice or keyboard to the same port, and it's generally what people use to do unconsciously ;)
Ejecute el siguiente comando en su Terminal, cambiando mi número de puerto 3-1
con el que encontró en su propio dmesg
resultado:
sudo sh -c "echo -1 > /sys/bus/usb/devices/3-1/power/autosuspend_delay_ms"
Tenga en cuenta que autosuspend_delay_ms
ha reemplazado el obsoleto autosuspend
desde la versión del kernel 2.6.38, de acuerdo con la documentación oficial de Linux .
De hecho, esta es una solución temporal , pero ahora puede probar fácilmente si este comando solucionó el problema de suspensión automática del mouse o del teclado.
Si su dispositivo USB funciona bien ahora, simplemente edite su script '/etc/rc.local' para que ejecute ese comando cada vez que se inicie el sistema. De esta forma, la solución será permanente . Edite el archivo, por ejemplo con nano:
sudo nano /etc/rc.local
y ponga el echo -1
comando en su archivo '/etc/rc.local' antes de la exit 0
línea, una vez más, no olvide cambiar el número de puerto n-n
en el comando:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
(...)
# By default this script does nothing.
echo -1 > /sys/bus/usb/devices/3-1/power/autosuspend_delay_ms
exit 0
Reinicia tu computadora
.
Importante: no olvide que tendrá que ejecutar el sudo sh -c
comando "temporal" de nuevo manualmente si desconecta / vuelve a conectar su dispositivo USB mientras su entorno de escritorio ya está iniciado, incluso si lo vuelve a enchufar en el mismo enchufe USB. Normal, solo porque el archivo '/etc/rc.local' se llama solo una vez al inicio del sistema.
De todos modos, las soluciones son posibles. Las personas mejor capacitadas pueden tener métodos más inteligentes, pero he configurado alias específicos de puerto en Ubuntu. Me permite usar los comandos simples usb1
o usb2
selectivamente si tengo que desconectar / volver a conectar mi dispositivo USB aquí o allá. ¡Igualmente! También puede crear alias de comandos para jugar con palabras cortas en lugar de escribir el comando completo. Es fácil de configurar en menos de dos minutos y también funciona con Alt+ F2:)
Más ideas para hacerlo más fácil también serían bienvenidas.