Ho avuto lo stesso problema con Ubuntu 16.04 (Xenial Xerus) e ho cercato così tanto qualsiasi soluzione ...
La soluzione è alla fine di questa risposta se non ti interessa la storia del contesto. Il contesto potrebbe sembrare inutile blabla (forse lo è), ma penso che potrebbe aiutare i lettori a verificare se il problema che ho risolto sul mio PC è uguale al loro.
CONTESTO
Ho un disperato ho inutilmente provato vicino a ogni suggerimenti che ho trovato sul web, il riavvio dopo ogni prova:
usbcore.autosuspend=-1
Parametro di avvio del kernel '/ etc / default / grub'
- 'runtime-pm.conf' della modalità laptop
CONTROL_RUNTIME_AUTOSUSPEND=0
- disabilitare completamente gli Strumenti della modalità laptop dal file '/etc/laptop-mode/laptop-mode.conf', confermando che il problema non è correlato a questa funzionalità del kernel. Ho verificato diversi modi in cui laptop_mode non era più in esecuzione per sicurezza. (Rif .:
man laptop-mode.conf
& man laptop_mode
)
- Ho letto alcuni trucchi su '/etc/laptop-mode/conf.d/usb-autosuspend.conf', ma questo file non esiste nella mia versione di Ubuntu 16.04 con laptop-mode-tools v1.68
- disinstallazione dell'applicazione powertop . Si sospetta spesso nei forum di causare problemi di sospensione automatica, e oggi so che non era vero nel mio caso in quanto la disinstallazione non risolveva nulla.
options usbcore autosuspend=1
anche in '/etc/modprobe.d/usb.conf' è stato inefficiente
- Script "/etc/udev/rules.d/60-power.rules" fornito dal Wiki ufficiale di Gentoo
rules
file specifico del dispositivo per udev
'/etc/udev/rules.d/usb-power.rules' raccomandato da Serge Y. Stroobandt
Dopo aver letto tutto questo materiale tecnico ho capito solo che la causa era correlata al mio valore "/ sys / module / usbcore / parametri / autosuspend" bloccato a due secondi, indipendentemente dal cambiamento che faccio alla mia configurazione. Puoi controllarlo con il cat
comando:
$ cat /sys/module/usbcore/parameters/autosuspend
2
E sì, il mio mouse è stato disabilitato esattamente dopo due secondi, quindi sapevo di essere sulla strada giusta. Ovviamente avevo testato il echo -1
comando che ho visto qua e là, -1
destinato a disabilitare la sospensione automatica ... ma:
sudo echo -1 > sys/module/usbcore/parameters/autosuspend
bash: /sys/module/usbcore/parameters/autosuspend: Permission denied
Non capivo perché il permesso fosse negato anche in modalità sudo. Non ho provato come root, perché non pensavo che potesse essere un problema. Ecco l'errore :(
Grazie ai commenti di Alex Dekker e Bryce , ho imparato a disabilitare la sospensione automatica solo per il mio mouse. Ma ovviamente i miei primi tentativi non sono riusciti bash: Permission denied error
, quindi ho dovuto aspettare la comprensione della mia confusione root / sudo prima che il echo -1
comando suggerito da Alex finalmente funzionasse.
Ho anche trovato un modo migliore per eseguire un comando come utente root senza accedere come root. La differenza tra l'utilizzo della shell root e dei comandi root è ben spiegata nella pagina wiki ufficiale di Ubuntu RootSudo . Adoro imparare questo tipo di cose, ma ehi! Perché deve essere sempre appreso in modo doloroso? LOL
OMG, è stato un vero mal di testa, e ci è voluto molto tempo per capire un noob come me, come di solito dico "nessun cervello senza guadagno". Il mio ha visibilmente bisogno di più allenamento.
Quindi smettiamo di parlare di me e andiamo a sistemarlo! Continua di seguito ...
Consiglio vivamente la seconda soluzione per l'HDD esterno inattivo per non scaricare la batteria del laptop per nulla. Ma ti do entrambe le soluzioni, perché chi ama la propria libertà dovrebbe amare anche la libertà degli altri :)
SOLUZIONE 1
Per disabilitare la sospensione automatica su tutti i dispositivi / porte USB
Apri Terminale ed esegui:
sudo sh -c "echo -1 > /sys/module/usbcore/parameters/autosuspend"
Questa è davvero una soluzione temporanea che ti consente di verificare immediatamente se questo comando risolve il problema di sospensione automatica del mouse o della tastiera.
Se i tuoi dispositivi USB funzionano bene ora, modifica lo script '/etc/rc.local' in modo che eseguirà quel comando ogni volta che il sistema viene avviato. In questo modo renderai il tipo di correzione permanente . Modifica il file, ad esempio con nano:
sudo nano /etc/rc.local
e metti il echo -1
comando nel tuo file '/etc/rc.local' prima della exit 0
riga
#!/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
Riavvia il tuo computer
(Si prega di controllare la nota importante alla fine.)
.
SOLUZIONE 2
Per disabilitare la sospensione automatica per un dispositivo / porta USB specifici
Sono presenti le opzioni di alimentazione per un dispositivo USB /sys/bus/usb/devices/n-n/power
. Ciò che n-n
serve a un determinato dispositivo richiede alcune manipolazioni per scoprirlo, ma non è complicato. L'esempio seguente mostra come ho determinato che il numero di porta USB del mio ricevitore mouse wireless è 3-1
, quindi si prega di adattare questo alla propria situazione:
Scollegare il dispositivo USB, aprire Terminale ed eseguire il sudo dmesg
comando
Ricollegare il dispositivo USB, quindi eseguirlo sudo dmesg
nuovamente in Terminale per verificare la presenza di modifiche
Ecco dmesg
come appare la fine del mio comando dopo aver ricollegato il mio mouse in uno slot:
[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
Ora possiamo vedere che la porta in cui è stato collegato il mio dispositivo USB è identificata come 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 ;)
Esegui il seguente comando nel tuo Terminale, modificando il mio numero di porta 3-1
con quello che hai trovato nel tuo dmesg
risultato:
sudo sh -c "echo -1 > /sys/bus/usb/devices/3-1/power/autosuspend_delay_ms"
Si noti che autosuspend_delay_ms
ha sostituito il obsoleto autosuspend
dalla versione 2.6.38 del kernel, secondo la documentazione ufficiale di Linux .
Questa è davvero una soluzione temporanea , ma ora puoi facilmente verificare se questo comando ha risolto il problema di sospensione automatica del mouse o della tastiera.
Se il tuo dispositivo USB funziona bene ora, modifica lo script '/etc/rc.local' in modo che eseguirà quel comando ogni volta che il sistema viene avviato. In questo modo renderai il tipo di correzione permanente . Modifica il file, ad esempio con nano:
sudo nano /etc/rc.local
e metti il echo -1
comando nel tuo file '/etc/rc.local' prima della exit 0
riga, ancora una volta non dimenticare di cambiare il numero di porta n-n
nel 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
Riavvia il tuo computer
.
Importante: non dimenticare che dovrai eseguire di sudo sh -c
nuovo manualmente il comando "temporaneo" se scolleghi / riconnetti il dispositivo USB mentre l'ambiente desktop è già avviato, anche se lo ricolleghi sulla stessa presa USB. Normale, solo perché il file '/etc/rc.local' viene chiamato solo una volta all'avvio del sistema.
Ad ogni modo, sono possibili soluzioni alternative. Le persone più qualificate potrebbero avere metodi più intelligenti, ma ho configurato alias specifici per porta in Ubuntu. Mi consente di utilizzare i semplici usb1
o i usb2
comandi in modo selettivo se devo scollegare / ricollegare il mio dispositivo USB qui o là. Anche tu! Puoi anche creare alias di comandi per giocare con parole brevi invece di digitare il comando completo. È facile da impostare in meno di due minuti e funziona anche con Alt+ F2:)
Altre idee per renderlo più semplice sarebbero anche benvenute.