Klawiatura przestaje działać w systemie Ubuntu 16.04 (Xenial Xerus)

17

Moja klawiatura przestaje działać bez wyraźnego powodu.

Po 2,5 roku używania Ubuntu jako maszyny wirtualnej na hoście Windows ( VirtualBox ) w końcu zdecydowałem się na zmianę, sformatowałem swój dysk twardy i wczoraj zbudowałem system z Ubuntu. Dziś rano moja klawiatura przestała działać.

Widzę wiele postów na temat Ubuntu i klawiatury lub myszy USB przestających działać losowo. Wskazują, że automatyczne zawieszanie wyłącza zasilanie urządzeń USB w celu oszczędzania energii, a gdy urządzenie USB nie jest kompatybilne w niektórych, USB nie „budzi się” tak, jak powinien.

Wypróbowałem sugestię opublikowaną w Naprawianie automatycznego zawieszania USB .

Ale bez powodzenia. Spróbowałem też innej sugestii, którą było uruchomienie bez klawiatury, a następnie podłączenie go po uruchomieniu Ubuntu.

Oto kilka szczegółów:

  • Używam tej samej klawiatury Kinesis z Ubuntu jako maszynę wirtualną przez ostatnie dwa lata, nie ma problemu.
  • Kinesis ma makra, a wywołanie makra powoduje problem w 100% przypadków. Zdarza się to jednak, gdy piszę (bez makr).
  • Właśnie wypróbowałem Kinesis na laptopie. To roczna maszyna, którą zainstalowałem Ubuntu 16.04 dwa tygodnie temu. Użycie makra klawiatury Kinesis nie odtworzyło problemu.

Problem z maszyną

  • Dell XPS, 6 lat, komputer stacjonarny
  • Zainstalowałem wczoraj Ubuntu 16.04
  • Korzystanie z klawiatury USB Kinesis Advantage
  • Odłączanie / ponowne podłączanie klawiatury działało 9 na 10 razy
  • Ponowne uruchomienie działa również
  • Nie sądzę, że jest to problem z zasilaniem USB, ponieważ dioda LED na klawiaturze świeci się, a inne urządzenia USB nadal działają.
  • Do urządzenia podłączono zarówno mysz USB, jak i Bluetooth. Oba działają dalej nawet po zatrzymaniu Kinezy.
  • Zwykle mam drugą zwykłą klawiaturę marki Dell podłączoną do osób spoza Kinesis, które muszą korzystać z mojego komputera. Wcześniej dzisiaj ta klawiatura przestała działać za każdym razem, gdy Kinesis przestał działać. Jednak teraz, powodując problem z makrem, klawiatura Dell nadal działa.

Kinesis, który mam od 8 lat, umożliwił mi kontynuowanie gry na klawiaturze. Jeśli nie będę w stanie rozwiązać tego problemu, będę musiał wrócić do systemu Windows, który byłby prawdziwym hitem.

Wszelkie sugestie dotyczące rzeczy do wypróbowania lub sposobów debugowania tego będą bardzo mile widziane.

Zagłębiam się w sterowniki USB, o których w systemie Linux nic nie wiem. Odkryłem jednak, że laptop ma porty USB 2.0 i 3.0. Pulpit (z problemem) to tylko USB 2.0. Nadal kopie ...

klequis
źródło
Używam tej samej klawiatury Kinesis z Ubuntu jako maszynę wirtualną przez ostatnie 2 lata, nie ma problemu. Czy faktycznie przekazałeś klawiaturę maszynie wirtualnej? W przeciwnym razie przechodził przez sterowniki systemu operacyjnego hosta i VirtualBox.
Melebius
Przez 3 lata używałem Ubuntu jako maszyny wirtualnej z hostem Windows i nie miałem problemu z klawiaturą. Teraz, gdy hostem jest Ubuntu GNOME, a gościem jest także Ubuntu GNOME, mam ten problem.
klequis
Wtedy nie korzystałeś z fizycznej klawiatury w systemie-gościu. Virtualbox domyślnie wyświetla wirtualną klawiaturę w systemie-gościu. (więc nie ma znaczenia, czy
używałeś
Zobacz to podobne pytanie: askubuntu.com/questions/688445/laptop-keyboard-stopped-working Instalowanie pakietu xserver-xorg-input-alldziałało dla mnie po aktualizacji doUbuntu 17.04
Lilás

Odpowiedzi:

7

Miałem ten sam problem z Ubuntu 16.04 (Xenial Xerus) i szukałem wielu rozwiązań ...

Rozwiązanie znajduje się na końcu tej odpowiedzi, jeśli nie interesuje Cię historia kontekstu. Kontekst może wyglądać jak niepotrzebna blabla (może tak jest), ale myślę, że może pomóc czytelnikom sprawdzić, czy problem rozwiązany na moim komputerze jest taki sam.

KONTEKST

Desperacko testowałem bezskutecznie w pobliżu wszystkich wskazówek, które znalazłem w sieci, po każdym ponownym uruchomieniu ponownie:

  • usbcore.autosuspend=-1Parametr rozruchowy jądra „/ etc / default / grub”
  • runtime-pm.conf w trybie laptopa CONTROL_RUNTIME_AUTOSUSPEND=0
  • całkowite wyłączenie narzędzi trybu laptopa z pliku „/etc/laptop-mode/laptop-mode.conf”, potwierdzając, że problem nie jest związany z tą funkcją jądra. Dla pewności sprawdziłem różne sposoby, że tryb laptop_mode już nie działa. (Patrz: man laptop-mode.confi man laptop_mode)
  • Przeczytałem kilka sztuczek na temat „/etc/laptop-mode/conf.d/usb-autosuspend.conf”, ale ten plik nie istnieje w mojej wersji Ubuntu 16.04 z laptop-mode-tools v1.68
  • Deinstalacja aplikacji powertop . Na forach często podejrzewa się, że powodują problemy z automatycznym zawieszaniem, a dziś wiem, że w moim przypadku nie było to prawdą, ponieważ odinstalowanie niczego nie naprawiło.
  • options usbcore autosuspend=1 w '/etc/modprobe.d/usb.conf' również był nieefektywny
  • Skrypt „/etc/udev/rules.d/60-power.rules” udostępniony przez oficjalną Wiki Gentoo
  • rulesplik specyficzny dla urządzenia dla udev„/etc/udev/rules.d/usb-power.rules” zalecany przez Serge Y. Stroobandt

Po przeczytaniu wszystkich tych technicznych informacji zrozumiałem tylko, że przyczyna była związana z moją wartością „/ sys / module / usbcore / parameters / autosuspend” zatrzymaną na dwie sekundy, bez względu na to, jaką zmianę zrobię w mojej konfiguracji. Możesz to sprawdzić za pomocą catpolecenia:

$ cat /sys/module/usbcore/parameters/autosuspend
2

I tak, moja mysz została wyłączona dokładnie po dwóch sekundach, więc wiedziałam, że jestem na dobrej drodze. Oczywiście przetestowałem echo -1polecenie, które widziałem tu i tam, -1mające na celu wyłączenie automatycznego zawieszania ... ale:

sudo echo -1 > sys/module/usbcore/parameters/autosuspend
bash: /sys/module/usbcore/parameters/autosuspend: Permission denied

Nie rozumiałem, dlaczego odmówiono zgody nawet w trybie sudo. Nie próbowałem jako root, ponieważ po prostu nie sądziłem, że może to stanowić problem. Oto błąd :(

Dzięki komentarzom Alexa Dekkera i Bryce'a nauczyłem się wyłączać automatyczne zawieszanie tylko dla mojej myszy. Ale oczywiście moje pierwsze próby się nie powiodły bash: Permission denied error, więc musiałem poczekać na zrozumienie mojego pomieszania root / sudo przedecho -1 polecenie sugerowane przez Alexa w końcu zadziała.

Znalazłem też lepszy sposób na wykonanie polecenia jako użytkownik root bez logowania jako root. Różnica między używaniem powłoki root a używaniem poleceń root jest dobrze wyjaśniona na oficjalnej stronie wiki Ubuntu RootSudo . Uwielbiam uczyć się do takich rzeczy, ale hej! Dlaczego zawsze trzeba się tego uczyć w sposób bolesny? lol

OMG, to był prawdziwy ból głowy i zajęło dużo czasu, aby Noob jak ja zrozumiał, jak zwykle mówię: „brak mózgu, brak korzyści”. Mój wyraźnie potrzebuje więcej szkoleń.

Przestańmy więc mówić o sobie i naprawmy to! Kontynuuj poniżej ...


Bardzo polecam drugie rozwiązanie dla twojego bezczynnego zewnętrznego dysku twardego, aby nie rozładowywać baterii laptopa bez powodu. Ale daję wam oba rozwiązania, ponieważ kto kocha swoją wolność, powinien też kochać siebie nawzajem :)

ROZWIĄZANIE 1

Aby wyłączyć automatyczne zawieszanie na wszystkich urządzeniach / portach USB

  1. Otwórz terminal i wykonaj:

    sudo sh -c "echo -1 > /sys/module/usbcore/parameters/autosuspend"
    
  2. Jest to rzeczywiście tymczasowe rozwiązanie, które pozwala natychmiast przetestować, czy to polecenie rozwiązuje problem automatycznego zawieszania myszy lub klawiatury.

  3. Jeśli twoje urządzenia USB działają teraz dobrze, po prostu edytuj skrypt „/etc/rc.local”, aby uruchamiał to polecenie przy każdym uruchomieniu systemu. W ten sposób naprawisz coś na stałe . Edytuj plik, na przykład za pomocą nano:

    sudo nano /etc/rc.local
    
  4. i umieść echo -1polecenie w pliku „/etc/rc.local” przed exit 0wierszem

    #!/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
    
  5. Zrestartuj swój komputer

(Proszę sprawdzić Ważną uwagę na końcu.)

.

ROZWIĄZANIE 2

Aby wyłączyć automatyczne zawieszanie dla określonego urządzenia / portu USB

  1. Dostępne są opcje zasilania dla urządzenia USB /sys/bus/usb/devices/n-n/power. To, co n-njest dla danego urządzenia, wymaga kilku manipulacji, aby się dowiedzieć, ale nie jest to skomplikowane. Poniższy przykład pokazuje, jak ustaliłem, że numer portu USB mojego odbiornika myszy bezprzewodowej jest 3-1, więc dostosuj to do własnej sytuacji:

    • Odłącz urządzenie USB, otwórz Terminal i wykonaj sudo dmesgpolecenie

    • Podłącz urządzenie USB z powrotem, a następnie uruchom sudo dmesgponownie w Terminalu, aby sprawdzić zmiany

    • Oto dmesgjak wygląda koniec moich wyników po ponownym podłączeniu myszy do gniazda:

      [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
      

    Teraz widzimy, że port, do którego podłączono moje urządzenie USB, jest zidentyfikowany jako 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 ;)
    
  2. Wykonaj następujące polecenie w swoim terminalu, zmieniając mój numer portu 3-1na ten, który znalazłeś we własnym dmesgwyniku:

    sudo sh -c "echo -1 > /sys/bus/usb/devices/3-1/power/autosuspend_delay_ms"
    

    Zauważ, że autosuspend_delay_mszastąpił przestarzałe autosuspendod jądra w wersji 2.6.38, zgodnie z oficjalną dokumentacją Linuksa .

  3. Jest to rzeczywiście rozwiązanie tymczasowe , ale można teraz łatwo przetestować, czy to polecenie naprawiło problem automatycznego zawieszenia myszy lub klawiatury.

  4. Jeśli urządzenie USB działa teraz dobrze, po prostu edytuj skrypt „/etc/rc.local”, aby uruchamiał to polecenie przy każdym uruchomieniu systemu. W ten sposób naprawisz coś na stałe . Edytuj plik, na przykład za pomocą nano:

    sudo nano /etc/rc.local
    
  5. i umieść echo -1polecenie w pliku „/etc/rc.local” przed exit 0wierszem, jeszcze raz nie zapomnij zmienić numeru portu n-nw poleceniu:

        #!/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
    
  6. Zrestartuj swój komputer

.

Ważne: nie zapominaj, że będziesz musiał ponownie wykonać polecenie sudo sh -c„tymczasowe” ręcznie, jeśli odłączysz / ponownie podłączysz urządzenie USB, gdy środowisko pulpitu jest już uruchomione, nawet jeśli podłączysz je z powrotem do tej samej wtyczki USB. Normalnie, tylko dlatego, że plik „/etc/rc.local” jest wywoływany tylko raz podczas uruchamiania systemu.

W każdym razie możliwe są obejścia. Ludzie lepiej wykwalifikowani mogą mieć bardziej sprytne metody, ale w Ubuntu skonfigurowałem aliasy specyficzne dla portów. Pozwala mi to korzystać z prostych poleceń usb1lub usb2wybiórczo, jeśli muszę odłączyć / ponownie podłączyć urządzenie USB tu lub tam. Ty też! Możesz także tworzyć aliasy poleceń, aby grać krótkimi słowami zamiast wpisywać pełne polecenie. Łatwo jest ustawić w mniej niż dwie minuty, a także działa z Alt+ F2:)

Mile widziane byłyby także inne pomysły, aby to ułatwić.

Fenyx
źródło
dziękuję za tę odpowiedź. Niestety nie mogę przetestować, aby potwierdzić, że to odpowiedź. Dlatego nie jestem pewien, czy powinienem zaznaczyć jako odpowiedź.
klequis
Próbowałem i to nie pomaga na Ubuntu 16.0.4.2 VirtualBox 5.1.26
Pavlo
1

Miałem dokładnie ten sam problem (klawiatura Kinesis, przestała działać po ponownym uruchomieniu).

W końcu doszedłem do wniosku, że jest to związane z aktualizacją jądra

  • przed ponownym uruchomieniem byłem w wersji 4.4.0-31-generic
  • po ponownym uruchomieniu był to 4.4.0-38-ogólny

Rozruch przy użyciu starszego jądra 4.4.0-31 naprawił dla mnie ten problem.

Ten post zawiera instrukcje dotyczące uruchamiania przy użyciu starszego jądra (pozwalając ci sprawdzić, czy starsze jądro zrobi dla ciebie odpowiednią sztuczkę).

Jerroend
źródło
bardzo prawdopodobne, że moja świeżo zbudowana maszyna miała nowsze jądro niż maszyna wirtualna, z której korzystałem. Jednak moim problemem nie było to, że klawiatura przestała działać po ponownym uruchomieniu, działała dobrze, dopóki nie uruchomiłem makra, w którym to momencie się wyłączyła. Większość moich makr wykorzystywałem do popularnych kluczy programowania. Teraz używam edytora Atom i jego skróty / auto-type (jakkolwiek to nazywają) robi większość tego, czego potrzebuję, więc jestem z tego zadowolony.
klequis
0

Jeśli tak laptop-mode-tools, możesz całkowicie wyłączyć automatyczne zawieszanie USB, zmieniając:

AUTOSUSPEND_TIMEOUT=2

w

/etc/laptop-mode/conf.d/runtime-pm.conf

do

AUTOSUSPEND_TIMEOUT=-1

Pamiętaj, że w tym pliku znajduje się opcja skomentowana

untime-pm.conf:# Example: AUTOSUSPEND_DEVID_BLACKLIST="usbhid usb-storage"

Możesz spróbować bawić się z tą opcją, jeśli chcesz dostroić ustawienia zarządzania energią.

UWAGI:

  • usbcore jest wkompilowany w jądro.
  • using systemd
  • Ubuntu 16.10
  • Jądro Linux 4.8.0-41-generic # 44-Ubuntu
Antonio Medina
źródło
Zauważyłem również, że w:
Antonio Medina
Nie jestem laptopem i nauczyłem się bez niego żyć, ale dziękuję za sugestie.
klequis
To, czy uruchomione są narzędzia trybu laptopa, ma niewiele wspólnego z tym, czy system jest laptopem. Mój zawsze podłączony do ściany działał serwer A / C, a ustawienie AUTOSUSPEND_TIMEOUT = -1 w pliku /etc/laptop-mode/conf.d/runtime-pm.conf było tym, co ostatecznie mnie naprawiło po zmaganiu się z tym odkąd zaktualizowałem do 16.04 z 14.04.
Rezty Felty,
0

Miałem ten sam problem. Dla mnie rozwiązanie było proste, a faktyczny powód pozostawiono nieznany.

Wczoraj podłączyłem drugą mysz do komputera. Wszystko działało dobrze. Dzisiaj, kiedy uruchamiałem, klawiatura nie działała na ekranie logowania ani na pulpicie. Działa podczas rozruchu, na przykład mam bios.

Klawiatura zaczęła działać po odłączeniu nowej myszy i ponownym podłączeniu wszystkich przewodów USB.

Ohto Nordberg
źródło
Może to być całkowita liczba urządzeń USB (maksymalnie dwa). Mam taki system. Może to, ale nie musi być związane z typem portu USB, USB 2 vs. USB 3. Niestety, nie mam tak wielu opcji w BIOSie, aby spróbować go obejść.
Peter Mortensen,
0

Czytałem ten i inne raporty w kółko przez ostatni rok, a ostatecznie zrezygnowałem z używania klawiatury, która powodowała problemy i przełączyłem się na klawiaturę bezprzewodową.

Dopóki nie przyszło mi do głowy, że problem zaczął się mniej więcej w czasie, gdy budowałem nowy komputer, i może to być problem z zasilaniem. Kupiłem więc zasilany koncentrator USB do podłączenia klawiatury. To rozwiązało problem! W końcu nie był to problem z oprogramowaniem, ale najwyraźniej mój nowy komputer ma słabo zasilane wyjścia USB (przynajmniej tak myśli moja klawiatura).

Warto spróbować, jeśli cierpisz na sporadyczne awarie klawiatury, jak opisano powyżej i nic nie działa po stronie oprogramowania. Zasilany koncentrator USB nie musi być drogi.

FvD
źródło
1
Czy na port USB obowiązywał limit prądu? Np. 100 mA .
Peter Mortensen,
0

Nie takiej odpowiedzi szukałem, ale ... spędziłem dwa dni i wiele godzin próbując rozwiązać ten problem. Kupiłem koncentrator PCIe USB 3.0, aby sprawdzić, czy to zadziała - nie zadziałało.

Doszedłem do wniosku, że ten problem nie jest wart rozwiązania i istnieją lepsze sposoby na osiągnięcie tego samego celu.

Moim rozwiązaniem / obejściem jest poleganie na funkcji urywków edytora tekstu. Oznacza to, że zainwestuję bardziej w konkretny edytor (najprawdopodobniej będzie to Atom ), ale będzie to nawet lepsze niż w przypadku makr klawiatury, ponieważ fragmenty są łatwiejsze w utrzymaniu niż makra klawiatury.

Wiele się nauczyłem o USB od Resetowania podsystemu USB .

klequis
źródło
Kupiłem Kinesis Advantage2 około 3 miesiące temu. Po prostu założyłem 10 lat. To działa dobrze. Brak omówienia problemu w tym numerze.
klequis
Fragmenty (szablony tekstowe) są niezwykle przydatne, ale nie mogą kontrolować kombinacji klawiszy, tylko czysty tekst (?). Np. Shift + Ctrl + Tab (w celu przejścia do następnej karty po lewej w przeglądarce Firefox) nie można umieścić we fragmencie
Peter Mortensen