La tastiera smette di funzionare su Ubuntu 16.04 (Xenial Xerus)


17

La mia tastiera smette di funzionare senza una ragione apparente.

Dopo aver usato Ubuntu per 2,5 anni come macchina virtuale su un host Windows ( VirtualBox ), alla fine ho fatto il grande passo, ho riformattato il mio disco rigido e ho costruito il sistema con Ubuntu ieri. Questa mattina ho smesso di funzionare la tastiera.

Vedo molti post su Ubuntu e una tastiera o mouse USB che smette di funzionare in modo casuale. Indicano che è in corso la sospensione automatica dello spegnimento dei dispositivi USB per risparmiare energia e quando il dispositivo USB non è compatibile in alcuni, l'USB non si "sveglia" come dovrebbe.

Ho provato il suggerimento pubblicato in Fixing Autosuspend USB .

Ma niente fortuna. Ho anche provato un altro suggerimento che era quello di avviare senza la tastiera e quindi collegarlo una volta avviato Ubuntu.

Ecco alcuni dettagli:

  • Ho usato la stessa tastiera Kinesis con Ubuntu come macchina virtuale negli ultimi due anni, nessun problema.
  • Kinesis ha macro e l'attivazione di una macro innesca il problema il 100% delle volte. Tuttavia, succede anche quando sto solo digitando (senza macro).
  • Ho provato Kinesis su un laptop proprio ora. Questa è una macchina di un anno su cui ho messo Ubuntu 16.04 due settimane fa. L'uso di una macro di tastiera Kinesis non ha riprodotto il problema.

Macchina del problema

  • Dell XPS, 6 anni, desktop
  • Ubuntu 16.04 installato ieri
  • Utilizzo della tastiera USB Kinesis Advantage
  • Scollegare / ricollegare la tastiera ha funzionato 9 volte su 10
  • Anche il riavvio funziona
  • Non penso che sia un problema di alimentazione USB poiché un LED sulla tastiera rimane acceso e altri dispositivi USB continuano a funzionare.
  • Ho sia un mouse USB che un mouse Bluetooth collegati alla macchina. Entrambi continuano a funzionare anche quando Kinesis si ferma.
  • Normalmente ho una seconda normale tastiera con marchio Dell collegata per persone che non hanno bisogno di Kinesis e che devono usare il mio computer. Prima di oggi questa tastiera ha smesso di funzionare ogni volta che Kinesis ha smesso di funzionare. Tuttavia ora, innescando il problema con una macro, la tastiera Dell continua a funzionare.

Il Kinesis, che ho avuto per 8 anni, mi ha permesso di continuare a suonare la tastiera. Se non riesco a risolverlo dovrò tornare a Windows, il che sarebbe un vero peccato.

Eventuali suggerimenti su cose da provare o modi per eseguire il debug di questo sarebbe molto apprezzato.

Sto scavando in driver USB, di cui su Linux non so nulla. Tuttavia, ho scoperto che il laptop ha entrambe le porte USB 2.0 e 3.0. Il desktop (con il problema) è solo USB 2.0. Sto ancora scavando ...


Ho usato la stessa tastiera Kinesis con Ubuntu come macchina virtuale negli ultimi 2 anni, nessun problema. Hai effettivamente consegnato la tastiera alla macchina virtuale? Altrimenti stava attraversando i driver del sistema operativo host e VirtualBox.
Melebio

Per 3 anni ho usato Ubuntu come VM con un host Windows e non ho avuto problemi con la tastiera. Ora che l'host è Ubuntu GNOME e l'ospite è Ubuntu GNOME, sto riscontrando questo problema.
Klequis,

Quindi non stavi usando la tastiera fisica nel sistema operativo guest. Virtualbox presenta una tastiera virtuale al sistema operativo guest per impostazione predefinita. (quindi non importa se hai usato la stessa tastiera fisica, in quanto non era la stessa)
karatedog

Vedi questa domanda simile: askubuntu.com/questions/688445/laptop-keyboard-stopped-working L' installazione del pacchetto ha xserver-xorg-input-allfunzionato per me quando sono Ubuntu 17.04
passato

Risposte:


7

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=-1Parametro 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
  • rulesfile 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 catcomando:

$ 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 -1comando che ho visto qua e là, -1destinato 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 -1comando 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

  1. Apri Terminale ed esegui:

    sudo sh -c "echo -1 > /sys/module/usbcore/parameters/autosuspend"
    
  2. 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.

  3. 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
    
  4. e metti il echo -1comando nel tuo file '/etc/rc.local' prima della exit 0riga

    #!/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. 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

  1. Sono presenti le opzioni di alimentazione per un dispositivo USB /sys/bus/usb/devices/n-n/power. Ciò che n-nserve 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 dmesgcomando

    • Ricollegare il dispositivo USB, quindi eseguirlo sudo dmesgnuovamente in Terminale per verificare la presenza di modifiche

    • Ecco dmesgcome 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 ;)
    
  2. Esegui il seguente comando nel tuo Terminale, modificando il mio numero di porta 3-1con quello che hai trovato nel tuo dmesgrisultato:

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

    Si noti che autosuspend_delay_msha sostituito il obsoleto autosuspenddalla versione 2.6.38 del kernel, secondo la documentazione ufficiale di Linux .

  3. 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.

  4. 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
    
  5. e metti il echo -1comando nel tuo file '/etc/rc.local' prima della exit 0riga, ancora una volta non dimenticare di cambiare il numero di porta n-nnel 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
    
  6. Riavvia il tuo computer

.

Importante: non dimenticare che dovrai eseguire di sudo sh -cnuovo 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 usb1o i usb2comandi 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.


grazie per questa risposta. Sfortunatamente, non posso testare per confermare che questa è la risposta. Pertanto, non sono sicuro se dovrei contrassegnare come risposta.
Klequis,

Ho provato e non aiuta su Ubuntu 16.0.4.2 VirtualBox 5.1.26
Pavlo

1

Ho avuto lo stesso identico problema (tastiera Kinesis, ha smesso di funzionare dopo un riavvio).

Alla fine ho capito che era correlato a un aggiornamento del kernel

  • prima del riavvio ero sulla versione 4.4.0-31-generica
  • dopo il riavvio era 4.4.0-38-generico

L'avvio con il vecchio kernel 4.4.0-31 ha risolto il problema per me.

Questo post include istruzioni su come avviare usando un kernel più vecchio (permettendoti di vedere se il kernel più vecchio fa il trucco per te).


è molto probabile che la mia macchina appena costruita avesse un kernel più recente rispetto alla macchina virtuale che stavo usando. Tuttavia, il mio problema non era che la tastiera ha smesso di funzionare dopo il riavvio, ha funzionato bene fino a quando non ho eseguito una macro, a quel punto si è spenta. Gran parte del mio uso di macro era per chiavi di programmazione comuni. Ora uso l'editor di Atom e le sue scorciatoie / il tipo automatico (come lo chiamano) fa la maggior parte di ciò di cui ho bisogno, quindi sono felice.
Klequis,

0

In laptop-mode-toolstal caso, potrebbe essere possibile disabilitare completamente la sospensione automatica USB modificando:

AUTOSUSPEND_TIMEOUT=2

nel

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

per

AUTOSUSPEND_TIMEOUT=-1

Prendi nota che in questo file è presente un'opzione commentata

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

Potresti provare a giocare con questa opzione se desideri ottimizzare le impostazioni di risparmio energia.

APPUNTI:

  • usbcore è compilato nel kernel.
  • usando systemd
  • Ubuntu 16.10
  • Kernel Linux 4.8.0-41-generico # 44-Ubuntu

Ho anche notato che in:
Antonio Medina,

Non sono un laptop e ho imparato a vivere senza, ma grazie per il tuo suggerimento.
Klequis

Il fatto che gli strumenti in modalità laptop sia o meno in esecuzione ha poco a che fare con il fatto che il sistema sia o meno un laptop. Il mio sempre collegato al server A / C a muro lo stava eseguendo, e l'impostazione di AUTOSUSPEND_TIMEOUT = -1 nel file /etc/laptop-mode/conf.d/runtime-pm.conf è stato quello che alla fine l'ho risolto per me, dopo aver lottato con questo da quando ho aggiornato il 16.04 dal 14.04.
Rezty Felty,

0

Ho avuto lo stesso problema. Per me, la soluzione era semplice, mentre il motivo effettivo è stato lasciato sconosciuto.

Ieri ho collegato un secondo mouse al mio pc. Tutto ha funzionato bene. Oggi, quando ho avviato, la tastiera non funzionava nella schermata di accesso o sul desktop. Ha funzionato durante l'avvio, ad esempio sono entrato nel bios.

La tastiera ha iniziato a funzionare dopo aver scollegato il nuovo mouse e ricollegato tutti i cavi USB.


Potrebbe essere il numero totale di dispositivi USB (un massimo di due). Ho un tale sistema. Potrebbe essere o meno correlato al tipo di porta USB, da USB 2 a USB 3. Sfortunatamente, non ho molte opzioni nel BIOS per provare a aggirare.
Peter Mortensen,


0

Ho letto questo e altri rapporti più e più volte l'anno scorso e alla fine ho rinunciato a usare la tastiera che causava problemi e sono passato a una tastiera wireless.

Fino a quando non mi è venuto in mente che il problema è iniziato nel periodo in cui ho creato un nuovo PC, e potrebbe essere un problema di alimentazione. Così ho acquistato un hub USB alimentato per collegare la tastiera. Ha risolto il problema! Dopotutto non era un problema di software, ma a quanto pare il mio nuovo computer ha uscite USB sottoalimentate (o almeno così pensa la mia tastiera).

Questo potrebbe valere la pena provare se si soffre di interruzioni intermittenti della tastiera come descritto sopra e nulla sul lato software ha funzionato. Un hub USB alimentato non deve essere costoso.


O era in vigore un limite corrente sulla porta USB? Ad esempio 100 mA .
Peter Mortensen,

0

Questa non è la risposta che stavo cercando ma ... ho passato due giorni e molte ore a cercare di risolvere questo problema. Ho acquistato un hub PCIe USB 3.0 per vedere se avrebbe funzionato, ma non ha funzionato.

La mia conclusione è che questo problema non merita di essere risolto e ci sono modi migliori per raggiungere lo stesso scopo.

La mia soluzione / soluzione alternativa è fare affidamento sulla funzione dei frammenti del mio editor di testo. Significa che investirò e farò più affidamento su un editor specifico (molto probabilmente sarà Atom ), ma sarà ancora meglio di quello che avevo con le macro della tastiera poiché gli snippet sono più facili da mantenere rispetto alle macro della tastiera.

Ho imparato molto sull'USB dal ripristino del sottosistema USB .


Ho acquistato un Kinesis Advantage2 circa 3 mesi fa. Ho appena indossato il 10 y / o uno fuori. Funziona bene Non avendo il problema discusso in questo numero.
Klequis,

Gli snippet (modelli di testo) sono estremamente utili, ma non possono controllare combinazioni di tasti, solo testo puro (?). Ad esempio Maiusc + Ctrl + Tab (per passare alla scheda successiva a sinistra in Firefox) non può essere inserito in uno snippet
Peter Mortensen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.