Klavye Ubuntu 16.04 (Xenial Xerus) üzerinde çalışmayı durduruyor


17

Klavyem hiçbir belirgin sebep olmadan çalışmayı durduruyor.

Ubuntu'yu bir Windows ana bilgisayarında ( VirtualBox ) sanal bir makine olarak 2.5 yıl kullandıktan sonra nihayet dalmayı aldım, sabit diskimi yeniden biçimlendirdim ve sistemi Ubuntu ile dün kurdum. Bu sabah klavyem çalışmayı bıraktı.

Ubuntu ve rastgele çalışan bir USB klavye veya fare hakkında birçok yazı görüyorum. Güç tasarrufu için USB cihazlarına giden gücü otomatik olarak kapatmanın ve USB cihazının bazılarında uyumlu olmadığında, USB'nin olması gerektiği gibi 'uyanmadığını' belirtirler.

USB Otomatik Askıya Alma Sabitleme bölümünde yayınlanan öneriyi denedim .

Ama şans yok. Ayrıca klavye olmadan önyükleme yapmak ve sonra Ubuntu başladıktan sonra takmak için başka bir öneri denedim.

İşte bazı ayrıntılar:

  • Ubuntu ile aynı Kinesis klavyesini son iki yıldır sanal bir makine olarak kullandım, sorun değil.
  • Kinesis'in makroları vardır ve bir makroyu tetiklemek sorunu% 100 oranında tetikler. Ancak, ben de yazarken (makro yok) olur.
  • Kinesis'i şimdi bir dizüstü bilgisayarda denedim. Bu, Ubuntu 16.04'ü iki hafta önce koyduğum bir yaşında bir makine. Bir Kinesis klavye makro kullanma vermedi değil sorunu yeniden.

Sorun Makinesi

  • Dell XPS, 6 yaşında, masaüstü
  • Dün Ubuntu 16.04 yüklendi
  • Kinesis Advantage USB klavyeyi kullanma
  • Klavyenin çıkarılması / yeniden takılması 10 üzerinden 9 kez çalıştı
  • Yeniden başlatma çalışmaları da
  • Klavyedeki bir LED yanık kaldığı ve diğer USB aygıtları çalışmaya devam ettiği için bunun bir USB güç sorunu olduğunu düşünmüyorum.
  • Makineye hem USB hem de Bluetooth fare takılı. Her ikisi de Kinesis durduğunda bile çalışmaya devam eder.
  • Normalde bilgisayarımı kullanması gereken Kinesis olmayan kişiler için ikinci bir normal Dell markalı klavyem var. Bugün daha önce bu klavye, Kinesis her çalışmayı bıraktığında durdu. Ancak şimdi, sorunu bir makro ile tetikleyen Dell klavye çalışmaya devam ediyor.

8 yıldır sahip olduğum Kinesis klavyeyi sürdürmemi mümkün kıldı. Bunu çözemezsem, gerçek bir bummer olacak olan Windows'a geri dönmem gerekecek.

Denemek için şeyler hakkında herhangi bir öneri veya bu hata ayıklama hakkında gitmek için büyük takdir edilecektir.

Linux'ta hiçbir şey bilmediğim USB sürücülerini araştırıyorum. Ancak, dizüstü bilgisayarın hem USB 2.0 hem de 3.0 bağlantı noktalarına sahip olduğunu buldum. Masaüstü (sorunlu) yalnızca USB 2.0. Hala kazılıyor ...


Ubuntu ile aynı Kinesis klavyesini son 2 yıldır sanal bir makine olarak kullandım, sorun değil. Klavyeyi sanal makineye teslim ettiniz mi? Aksi takdirde ana işletim sistemi ve VirtualBox sürücülerinden geçiyordu.
Melebius

3 yıl boyunca Ubuntu'yu bir Windows ana makinesine sahip bir VM olarak kullandım ve klavyede hiç sorun yaşamadım. Şimdi ev sahibi Ubuntu GNOME ve konuk da Ubuntu GNOME, bu sorunu yaşıyorum.
klequis

O zaman konuk işletim sisteminde fiziksel klavyenizi kullanmıyordunuz. Virtualbox, varsayılan olarak konuk işletim sistemine sanal bir klavye sunar. (bu yüzden aynı fiziksel klavyeyi kullanmanız önemli değil, aynı değildi)
karatedog

Bu benzer soruya bakın: askubuntu.com/questions/688445/laptop-keyboard-stopped-working Yükselttiğimde yükleme paketi xserver-xorg-input-allbenim için çalıştıUbuntu 17.04
Lilás

Yanıtlar:


7

Ubuntu 16.04 (Xenial Xerus) ile aynı sorunu yaşadım ve herhangi bir çözüm aradım ...

Bağlam hikayesini önemsemiyorsanız çözüm bu cevabın sonunda . Bağlam gereksiz blabla (belki de) gibi görünebilir, ancak okuyucumun PC'imde çözdüğüm sorunun onlarınkiyle aynı olup olmadığını kontrol etmesine yardımcı olabileceğini düşünüyorum.

BAĞLAM

Umutsuzca var başarısız her denemeden sonra yeniden, Web üzerinde buldum her ipuçları yakın test:

  • '/ etc / default / grub' çekirdek önyükleme usbcore.autosuspend=-1parametresi
  • dizüstü bilgisayar modunun 'runtime-pm.conf' CONTROL_RUNTIME_AUTOSUSPEND=0
  • Dizüstü Bilgisayar Modu Araçlarını '/etc/laptop-mode/laptop-mode.conf' dosyasından tamamen devre dışı bırakarak sorunun bu çekirdek özelliğiyle ilgili olmadığını doğrular. Emin olmak için laptop_mode'un artık çalışmadığı farklı yolları kontrol ettim . (Ref: man laptop-mode.conf& man laptop_mode)
  • '/Etc/laptop-mode/conf.d/usb-autosuspend.conf' hakkında bazı hileler okudum, ancak bu dosya benim dizüstü bilgisayar modu araçları v1.68 ile Ubuntu 16.04 sürümünde mevcut değil
  • powertop uygulama kaldırma. Genellikle forumlarda otomatik askıya alma sorunlarına neden olduğundan şüpheleniliyor ve bugün kaldırmanın hiçbir şey düzeltmediği için benim durumumda doğru olmadığını biliyorum.
  • options usbcore autosuspend=1 '/etc/modprobe.d/usb.conf' da da verimsiz oldu
  • '/etc/udev/rules.d/60-power.rules' komut dosyası Gentoo resmi Wiki tarafından sağlanmıştır
  • Serge Y. Stroobandt tarafından önerilen '/etc/udev/rules.d/usb-power.rules' rulesiçin cihaza özel dosyaudev

Tüm bu teknik şeyleri okuduktan sonra, sadece konfigürasyonumda ne değişiklik yaparsam yapayım, neden '/ sys / module / usbcore / parametreler / otomatik askıya alma' değerimle ilgili olduğunu anladım. Komutla kontrol edebilirsiniz cat:

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

Ve evet, farem tam iki saniye sonra devre dışı bırakıldı, bu yüzden doğru yolda olduğumu biliyordum. Tabii ki echo -1burada ve orada gördüğüm komutu -1otomatik olarak askıya almayı devre dışı bırakmayı amaçlamıştım ... ama:

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

Sudo modunda bile izinlerin neden reddedildiğini anlamadım. Kök olarak denemedim, çünkü bunun bir sorun olabileceğini düşünmedim. İşte hata :(

Sayesinde Alex Dekker & Bryce yorumlarla , nasıl devre dışı öğrendim otomatik askıya almayı sadece benim fare için. Ama tabii ki ilk denemelerim bu konuda başarısız oldu, bu bash: Permission denied erroryüzden echo -1Alex'in önerdiği komut nihayet işe yaramadan önce kök / sudo karışıklığımı anlamak için beklemek zorunda kaldım .

Ayrıca root olarak giriş yapmadan root kullanıcısı olarak bir komutu yürütmenin daha iyi bir yolunu buldum . Kök kabuk ve kök komutlarının kullanımı arasındaki fark, resmi Ubuntu'nun RootSudo wiki sayfasında iyi açıklanmıştır . Bu tür şeyleri öğrenmeyi seviyorum, ama hey! Neden her zaman acı verici şekilde öğrenilmeli? LOL

OMG, bu gerçek bir baş ağrısıydı ve benim gibi bir noob'un anlaması çok zaman aldı, çünkü genellikle “beyin yok kazanç yok” diyorum. Benimki daha fazla eğitime ihtiyaç duyuyor.

Öyleyse kendim hakkında konuşmayı bırakıp gidelim! Lütfen aşağıya devam edin ...


Boştaki harici HDD'niz için dizüstü bilgisayarınızın pilini boşuna tüketmemeniz için ikinci çözümü şiddetle tavsiye ederim . Ama size her iki çözümü de veriyorum, çünkü kendi özgürlüğünü sevenlerin birbirlerinin özgürlüğünü de sevmesi gerekir :)

ÇÖZÜM 1

Her USB aygıtında / bağlantı noktasında otomatik askıya almayı devre dışı bırakmak için

  1. Terminal'i açın ve çalıştırın:

    sudo sh -c "echo -1 > /sys/module/usbcore/parameters/autosuspend"
    
  2. Bu gerçekten de bu komutun farenizin veya klavyenin otomatik askıya alma sorununu çözüp çözmediğini anında test etmenizi sağlayan geçici bir çözümdür.

  3. USB aygıtlarınız şimdi iyi çalışıyorsa, '/etc/rc.local' komut dosyanızı düzenleyin, böylece sistem her önyüklendiğinde bu komutu çalıştıracaktır. Bu şekilde düzeltmeyi kalıcı hale getireceksiniz . Dosyayı düzenleyin, örneğin nano ile:

    sudo nano /etc/rc.local
    
  4. ve echo -1komutu '/etc/rc.local' dosyanıza exit 0satırdan önce koyun

    #!/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. Bilgisayarı yeniden başlatın

(Lütfen sonunda Önemli notu kontrol edin.)

.

ÇÖZÜM 2

Belirli bir USB cihazı / bağlantı noktası için otomatik askıya almayı devre dışı bırakmak için

  1. Bir USB cihazının güç seçenekleri mevcuttur /sys/bus/usb/devices/n-n/power. n-nBelirli bir cihaz için ne olduğunu öğrenmek için birkaç manipülasyon gerektirir, ancak bu karmaşık değildir. Aşağıdaki örnek, kablosuz fare alıcımın USB bağlantı noktası numarasının nasıl olduğunu belirlediğimi gösterir 3-1, bu yüzden lütfen bunu kendi durumunuza uyarlayın:

    • USB cihazınızı fişten çekin, Terminal'i açın ve sudo dmesgkomutu yürütün

    • USB cihazınızı tekrar bağlayın ve ardından sudo dmesgdeğişiklikleri kontrol etmek için Terminal'de tekrar çalıştırın

    • dmesgKomut çıktımın sonu, faremi bir yuvaya taktıktan sonra şöyle görünüyor:

      [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
      

    Şimdi USB cihazımın takılı olduğu portun olarak tanımlandığını görebiliriz 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. Bağlantı noktası numaramı 3-1kendi dmesgsonucunuzda bulduğunuzla değiştirerek Terminalinizde aşağıdaki komutu yürütün :

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

    Linux resmi belgelerine göre, çekirdek sürüm 2.6.38'den bu yana autosuspend_delay_mskullanımdan kaldırılmış olduğunu unutmayın .autosuspend

  3. Bu gerçekten geçici bir çözümdür, ancak artık bu komutun fare veya klavye otomatik askıya alma sorununuzu çözüp çözmediğini kolayca test edebilirsiniz.

  4. USB aygıtınız şimdi iyi çalışıyorsa, '/etc/rc.local' komut dosyanızı düzenleyin, böylece sistem her başlatıldığında bu komutu çalıştıracaktır. Bu şekilde düzeltmeyi kalıcı hale getireceksiniz . Dosyayı düzenleyin, örneğin nano ile:

    sudo nano /etc/rc.local
    
  5. ve echo -1komutu '/etc/rc.local' dosyanıza exit 0satırdan önce koyun , bir kez daha komuttaki bağlantı noktası numarasını değiştirmeyi unutmayın n-n:

        #!/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. Bilgisayarı yeniden başlatın

.

Önemli:sudo sh -c Aynı USB fişine taksanız bile, masaüstü ortamınız zaten başlatılırken USB aygıtınızın bağlantısını keser / yeniden bağlarsanız "geçici" komutu yeniden yürütmeniz gerektiğini unutmayın . Normal, '/etc/rc.local' dosyasının sistem başlangıcında yalnızca bir kez çağrılması nedeniyle.

Her neyse, geçici çözümler mümkündür. Daha yetenekli insanların daha akıllı yöntemleri olabilir, ancak Ubuntu'da bağlantı noktasına özgü diğer adları yapılandırdım. USB aygıtımı burada veya orada çıkarmam / çıkarmam gerekirse , basit usb1veya usb2komutları seçmeli olarak kullanmamı sağlar . Sen de! Tam komutu yazmak yerine kısa kelimelerle oynamak için komut takma adları da oluşturabilirsiniz . İki dakikadan daha kısa sürede ayarlamak kolaydır ve Alt+ F2:) ile de çalışır

Daha kolay hale getirmek için daha fazla fikir de çok hoş olurdu.


bu cevap için teşekkür ederim. Ne yazık ki, bunun cevap olduğunu doğrulamak için test yapamıyorum. Bu nedenle, cevap olarak işaretlemem gerekip gerekmediğinden emin değilim.
klequis

Denedim ve Ubuntu 16.0.4.2 VirtualBox 5.1.26
Pavlo

1

Ben de aynı sorunu vardı (Kinesis klavye, bir yeniden başlatmadan sonra çalışmayı durdurdu).

Sonunda bir çekirdek yükseltmesi ile ilgili olduğunu anladım

  • yeniden başlatmadan önce 4.4.0-31-jenerik versiyonundaydım
  • yeniden başlattıktan sonra 4.4.0-38-jenerik

Eski 4.4.0-31 çekirdeğini kullanarak önyükleme yapmak sorunu düzeltti.

Bu yazı , daha eski bir çekirdek kullanarak önyükleme yapma talimatlarını içerir (eski çekirdeğin sizin için hile yapıp yapmadığını görmenizi sağlar).


yeni yapılmış makinemin, kullandığım sanal makineden daha yeni bir çekirdeğe sahip olması muhtemeldi. Ancak, benim sorunum klavyenin yeniden başlattıktan sonra çalışmayı durdurması değildi, ben bir makro çalışana kadar iyi çalıştı, o noktada kapatıldı. Makrolarımın çoğu benim ortak programlama tuşları içindi. Şimdi Atom editörünü kullanıyorum ve kısayolları / otomatik tip (her ne diyorlarsa), ihtiyacım olan şeylerin çoğunu yapıyor, bu yüzden mutlu topraklardayım.
klequis

0

Varsa laptop-mode-tools, değiştirerek usb otomatik askıya almayı tamamen devre dışı bırakmak mümkün olabilir:

AUTOSUSPEND_TIMEOUT=2

içinde

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

için

AUTOSUSPEND_TIMEOUT=-1

Bu dosyada yorumlanmış bir seçenek olduğunu unutmayın

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

Güç yönetimi ayarlarınıza ince ayar yapmak istiyorsanız bu seçenekle oynamayı deneyebilirsiniz.

NOTLAR:

  • usbcore çekirdeğe derlenir.
  • systemd kullanma
  • Ubuntu 16.10
  • Linux çekirdeği 4.8.0-41-genel # 44-Ubuntu

Ayrıca şunu da not ettim:
Antonio Medina

Bir dizüstü bilgisayar değil ve ben olmadan yaşamayı öğrendik, ama öneriniz için teşekkür ederim.
klequis

Dizüstü bilgisayar modu araçlarının çalışıp çalışmadığı, sistemin bir dizüstü bilgisayar olup olmadığı ile ilgisi yoktur. Her zaman duvar A / C sunucusuna takılıydım ve çalıştıktan sonra /etc/laptop-mode/conf.d/runtime-pm.conf dosyasında AUTOSUSPEND_TIMEOUT = -1 ayarını yaptım. 14.04'ten 16.04'e güncellediğimden beri.
Rezty Felty

0

Aynı sorunu yaşadım. Benim için çözüm basitti, asıl sebep bilinmiyordu.

Dün bilgisayarıma ikinci bir fare taktım. Herşey yolunda gitti. Bugün, önyükleme yaptığımda, klavye giriş ekranında veya masaüstünde çalışmadı. Önyükleme sırasında işe yaradı, örneğin bios'a girdim.

Yeni fareyi çıkardıktan ve tüm usb kablolarını çıkardıktan sonra klavye çalışmaya başladı.


Toplam USB cihazı sayısı olabilir (en fazla iki adet). Böyle bir sistemim var. USB bağlantı noktası, USB 2 ve USB 3'ün türüyle ilgili olabilir veya olmayabilir.
Peter Mortensen


0

Bunu ve diğer raporları geçen yıl tekrar tekrar okudum ve sonunda sorunlara neden olan ve kablosuz klavyeye geçiş yapan klavyeyi kullanarak vazgeçtim.

Sorunun yeni bir bilgisayar kurduğum sırada başladığı ve beni bir güç sorunu haline getirene kadar. Bu yüzden klavyeyi bağlamak için güçlü bir USB hub aldım . Sorunu çözdü! Ne de olsa bir yazılım sorunu değildi, ama görünüşe göre yeni bilgisayarımın gücü düşük USB çıkışları var (ya da klavyem düşünüyor).

Yukarıda açıklandığı gibi kesintili klavye kesintileri yaşıyorsanız ve yazılım tarafında hiçbir şey işe yaramadıysa, bu denemeye değer olabilir. Elektrikli bir USB hub'ının pahalı olması gerekmez.


Veya USB bağlantı noktasında bir akım sınırı geçerli miydi? Örneğin 100 mA .
Peter Mortensen

0

Aradığım cevap bu değildi ama ... bu sorunu çözmeye çalışmak için iki gün ve birkaç saat geçirdim. İşe yarayıp yaramayacağını görmek için bir PCIe USB 3.0 hub satın aldım - olmadı.

Sonuç olarak, bu problem çözülmeye değmez ve aynı amaçla daha iyi yollar vardır.

Çözümüm / geçici çözümüm, metin düzenleyicimin parçacıklar işlevine güvenmektir. Bu, belirli bir düzenleyiciye yatırım yapacağım ve daha fazla güveneceğim anlamına geliyor (büyük olasılıkla Atom olacak ), ancak snippet'lerin bakımı klavye makrolarından daha kolay olduğu için klavye makrolarıyla yaşadığımdan daha iyi olacak.

USB Alt Sistemini Sıfırlama ile USB hakkında çok şey öğrendim .


Yaklaşık 3 ay önce bir Kinesis Advantage2 satın aldım. Sadece 10 y / o birini giydim. İyi çalışıyor. Sorunun bu konuda tartışılmaması.
klequis

Parçacıklar (metin şablonları) son derece yararlıdır, ancak tuş kombinasyonlarını kontrol edemezler, sadece saf metin (?). Shift + Ctrl + Sekme (Firefox'ta bir sonraki sekmeye gitmek için) bir
Peter Mortensen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.