Ich hatte das gleiche Problem mit Ubuntu 16.04 (Xenial Xerus) und suchte so viel nach einer Lösung ...
Die Lösung ist am Ende dieser Antwort, wenn Sie sich nicht für die Kontextgeschichte interessieren. Der Kontext könnte wie ein ungewöhnliches Blabla aussehen (vielleicht ist es das), aber ich denke, es könnte den Lesern helfen, zu überprüfen, ob das Problem, das ich auf meinem PC gelöst habe, mit dem auf ihrem PC identisch ist.
KONTEXT
Ich habe verzweifelt alle Tipps, die ich im Internet gefunden habe, erfolglos getestet und nach jedem Versuch neu gestartet:
- Kernel-Boot-
usbcore.autosuspend=-1
Parameter '/ etc / default / grub'
- Laptop-Modus 'Laufzeit-pm.conf'
CONTROL_RUNTIME_AUTOSUSPEND=0
- Deaktivieren Sie die Laptop-Modus-Tools in der Datei '/etc/laptop-mode/laptop-mode.conf' vollständig, um sicherzustellen, dass das Problem nicht mit dieser Kernelfunktion zusammenhängt. Ich habe verschiedene Methoden überprüft , um sicherzugehen, dass laptop_mode nicht mehr ausgeführt wird. (Ref .:
man laptop-mode.conf
& man laptop_mode
)
- Ich habe einige Tricks über '/etc/laptop-mode/conf.d/usb-autosuspend.conf' gelesen, aber diese Datei existiert in meiner Version von Ubuntu 16.04 mit Laptop-Mode-Tools v1.68 nicht
- Deinstallation der Powertop- Anwendung. In Foren wird oft vermutet, dass Autosuspend-Probleme auftreten, und heute weiß ich, dass dies in meinem Fall nicht der Fall war, da durch die Deinstallation nichts behoben wurde.
options usbcore autosuspend=1
in '/etc/modprobe.d/usb.conf' war ebenfalls ineffizient
- Das Skript '/etc/udev/rules.d/60-power.rules' wird vom offiziellen Gentoo-Wiki bereitgestellt
- Gerätespezifische
rules
Datei für udev
'/etc/udev/rules.d/usb-power.rules', empfohlen von Serge Y. Stroobandt
Nachdem ich all diese technischen Informationen gelesen hatte, verstand ich nur, dass die Ursache mit meinem Wert '/ sys / module / usbcore / parameters / autosuspend' zusammenhängt, der nach zwei Sekunden feststeckt, unabhängig davon, welche Änderung ich an meiner Konfiguration vornehme. Sie können es mit dem cat
Befehl überprüfen :
$ cat /sys/module/usbcore/parameters/autosuspend
2
Und ja, meine Maus war genau nach zwei Sekunden deaktiviert, also wusste ich, dass ich auf dem richtigen Weg war. Natürlich hatte ich den echo -1
Befehl, den ich hier und da gesehen habe, getestet -1
, um Autosuspend zu deaktivieren ... aber:
sudo echo -1 > sys/module/usbcore/parameters/autosuspend
bash: /sys/module/usbcore/parameters/autosuspend: Permission denied
Ich habe nicht verstanden, warum die Erlaubnis auch im Sudo-Modus verweigert wurde. Ich habe es nicht als root versucht, weil ich einfach nicht dachte, dass es ein Problem sein könnte. Hier war der Fehler :(
Dank der Kommentare von Alex Dekker & Bryce habe ich gelernt, Autosuspend nur für meine Maus zu deaktivieren . Aber natürlich sind meine ersten Versuche damit gescheitert bash: Permission denied error
, so dass ich auf das Verständnis meiner Verwirrung zwischen root und sudo warten musste, bevor der echo -1
von Alex vorgeschlagene Befehl endlich funktioniert.
Ich habe auch eine bessere Möglichkeit gefunden, einen Befehl als Root- Benutzer ohne Anmeldung als Root auszuführen . Der Unterschied zwischen der Verwendung von Root-Shell- und Root-Befehlen wird auf der offiziellen Ubuntu- RootSudo-Wiki-Seite gut erklärt . Ich liebe es, solche Dinge zu lernen, aber hey! Warum muss man es immer auf schmerzhafte Weise lernen? LOL
Oh mein Gott, es war ein echtes Kopfweh und es hat viel Zeit gekostet, bis ein Noob wie ich verstanden hat, wie ich normalerweise sage "no brain no gain". Meins braucht sichtlich mehr Training.
Also lass uns aufhören, über mich selbst zu reden und es reparieren! Bitte weiter unten ...
Ich empfehle dringend die zweite Lösung für Ihre externe Festplatte im Leerlauf, um den Akku Ihres Laptops nicht umsonst zu entladen. Aber ich gebe euch beide Lösungen, denn wer seine / ihre eigene Freiheit liebt, sollte auch die Freiheit der anderen lieben :)
LÖSUNG 1
Deaktiviert die automatische Suspendierung für alle USB-Geräte / -Ports
Öffnen Sie das Terminal und führen Sie Folgendes aus:
sudo sh -c "echo -1 > /sys/module/usbcore/parameters/autosuspend"
Dies ist in der Tat eine vorübergehende Lösung, mit der Sie sofort testen können, ob dieser Befehl das Problem mit der automatischen Suspendierung von Maus oder Tastatur behebt.
Wenn Ihre USB-Geräte jetzt einwandfrei funktionieren, bearbeiten Sie einfach Ihr Skript '/etc/rc.local', damit dieser Befehl beim Systemstart ausgeführt wird. Auf diese Weise machen Sie das Update dauerhaft . Bearbeiten Sie die Datei zum Beispiel mit nano:
sudo nano /etc/rc.local
und setze den echo -1
Befehl in deine '/etc/rc.local' Datei vor die exit 0
Zeile
#!/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
Starte deinen Computer neu
(Bitte überprüfen Sie den Wichtigen Hinweis am Ende.)
.
LÖSUNG 2
So deaktivieren Sie die automatische Suspendierung für ein bestimmtes USB-Gerät / einen bestimmten USB-Anschluss
Die Energieoptionen für ein USB-Gerät sind in /sys/bus/usb/devices/n-n/power
. Was n-n
für ein bestimmtes Gerät gilt, muss mit ein paar Handgriffen herausgefunden werden, ist aber nicht kompliziert. Das folgende Beispiel zeigt, wie ich die USB-Anschlussnummer meines drahtlosen Mausempfängers ermittelt habe. Passen 3-1
Sie diese also bitte an Ihre Situation an:
Trennen Sie Ihr USB-Gerät, öffnen Sie das Terminal und führen Sie den sudo dmesg
Befehl aus
Schließen Sie Ihr USB-Gerät wieder an und führen Sie sudo dmesg
es im Terminal erneut aus, um nach Änderungen zu suchen
So dmesg
sieht das Ende meiner Befehlsausgabe aus, nachdem ich meine Maus wieder in einen Steckplatz gesteckt habe:
[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
Jetzt können wir sehen, dass der Port, an dem mein USB-Gerät angeschlossen wurde, als gekennzeichnet ist 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 ;)
Führen Sie den folgenden Befehl in Ihrem Terminal aus und ändern Sie meine Portnummer 3-1
mit der, die Sie in Ihrem eigenen dmesg
Ergebnis gefunden haben:
sudo sh -c "echo -1 > /sys/bus/usb/devices/3-1/power/autosuspend_delay_ms"
Beachten Sie, dass gemäß der offiziellen Linux-Dokumentationautosuspend_delay_ms
die autosuspend
seit Kernel-Version 2.6.38 veraltete ersetzt wurde .
Dies ist in der Tat eine vorübergehende Lösung, aber Sie können jetzt einfach testen, ob dieser Befehl das Problem mit der automatischen Suspendierung von Maus oder Tastatur behoben hat.
Wenn Ihr USB-Gerät jetzt einwandfrei funktioniert, bearbeiten Sie einfach Ihr Skript '/etc/rc.local', damit dieser Befehl beim Systemstart ausgeführt wird. Auf diese Weise machen Sie das Update dauerhaft . Bearbeiten Sie die Datei zum Beispiel mit nano:
sudo nano /etc/rc.local
Und setzen Sie den echo -1
Befehl in Ihre Datei '/etc/rc.local' vor die exit 0
Zeile. Vergessen Sie nicht, die Portnummer n-n
im Befehl zu ändern :
#!/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
Starte deinen Computer neu
.
Wichtig: Vergessen Sie nicht, dass Sie den sudo sh -c
Befehl "Temporär" erneut manuell ausführen müssen, wenn Sie Ihr USB-Gerät trennen / wieder anschließen, während Ihre Desktop-Umgebung bereits gestartet ist, auch wenn Sie es wieder an denselben USB-Stecker anschließen. Normal, nur weil die Datei '/etc/rc.local' beim Systemstart nur einmal aufgerufen wird.
Trotzdem sind Workarounds möglich. Besser ausgebildete Leute haben vielleicht cleverere Methoden, aber ich habe portspezifische Aliase in Ubuntu konfiguriert. Es ermöglicht mir, die Befehle simple usb1
oder usb2
selektiv zu verwenden, wenn ich mein USB-Gerät hier oder dort trennen / erneut anschließen muss. Gleichfalls! Sie können auch Aliase für Befehle erstellen , um mit kurzen Wörtern zu spielen, anstatt den vollständigen Befehl einzugeben. Es ist einfach in weniger als zwei Minuten einzustellen und funktioniert auch mit Alt+ F2:)
Weitere Ideen zur Erleichterung wären ebenfalls sehr willkommen.