Перестает работать клавиатура Ubuntu 16.04

Моя клавиатура перестает работать без видимой причины.

После использования Ubuntu в течение 2,5 лет в качестве виртуальной машины на хосте Windows (virtualbox) я наконец сделал решающий шаг, переформатировал свой жесткий диск и вчера собрал систему с Ubuntu. Сегодня утром у меня перестала работать клавиатура.

Я вижу много сообщений об Ubuntu и USB-клавиатуре или мыши, которые перестают работать случайно. Они указывают на то, что Autosuspend отключает питание USB-устройств для экономии энергии, и когда USB-устройство несовместимо с некоторыми устройствами, поэтому USB не «просыпается», как следует.

Я попробовал предложение, размещенное в этой ссылке

, но не повезло. Я также попробовал другое предложение, которое состояло в том, чтобы загрузить без клавиатуры, а затем подключить его после запуска Ubuntu.

Вот некоторые подробности

  • Я использовал ту же клавиатуру Kinesis с Ubuntu в качестве виртуальной машины в течение последних 2 лет, без проблем.
  • У Kinesis есть макросы, и запуск макроса вызывает проблему в 100% случаев. Однако, это происходит, когда я просто печатаю (без макросов).
  • Только что попробовал Kinesis на ноутбуке. Это 1-летняя машина, на которой я установил Ubuntu 16.04 2 недели назад. Использование макроса клавиатуры Kinesis НЕ воспроизводило проблему.

Проблемная машина

  • Dell XPS, 6 лет, рабочий стол
  • Установлена ​​Ubuntu 16.04 вчера
  • Использование клавиатуры Kinesis Advantage USB
  • Отключение / повторное подключение клавиатуры сработало 9 из 10 раз
  • Перезагрузка также работает
  • Я не думаю, что это проблема с питанием USB, так как светодиод на клавиатуре горит и другие USB-устройства продолжают работать.
  • К машине подключены мышь USB и Bluetooth. Оба продолжают работать, даже когда кинезис останавливается.
  • У меня обычно есть вторая обычная клавиатура Dell под брендом для тех, кто не является Kinesis, которым нужно использовать мой компьютер. Ранее сегодня эта клавиатура перестала работать каждый раз, когда перестал работать Kinesis. Однако теперь, вызывая проблему с макросом, клавиатура Dell продолжает работать.

Кинезис, который у меня уже 8 лет, позволил мне продолжать играть на клавиатуре. Если я не смогу решить эту проблему, мне придется вернуться к Виндозу, который был бы настоящим обломом.

Любые предложения о том, что можно попробовать, или способы отладки, очень приветствуются.

Редактировать: Я копался в драйверах USB, о которых в Linux я ничего не знаю. Однако я обнаружил, что ноутбук имеет порты USB 2.0 и 3.0. Рабочий стол (с проблемой) только USB 2.0. Все еще копаем ...

18
задан 17 August 2016 в 14:01

6 ответов

У меня была такая же проблема с Ubuntu 16.04 (Xenial Xerus) и я так много искал любого решения.....

Решение находится в конце этого ответа , если вас не волнует контекстная история. Контекст может выглядеть как неиспользуемая блабла (может быть и так), но я думаю, что это могло бы помочь читателям проверить, является ли проблема, которую я решил на своем ПК, той же самой, что и их.

CONTEXT

Я отчаянно безуспешно тестировал почти все советы, которые я нашел в интернете, перезагружаясь после каждой попытки:

  • '/etc/default/grub' usbcore boot usbcore. autosuspend=-1 параметр
  • logtop-mode 'runtime-pm.conf' CONTROL_RUNTIME_AUTOSUSPEND=0
  • полностью отключает утилиты режима ноутбука из файла '/etc/laptop-mode/laptop-mode.conf', подтверждая, что проблема не связана с этой функцией ядра. Я проверил разные способы, которыми режим_ноутбука больше не работал, чтобы быть уверенным. (Ref: man laptop-mode.conf & man laptop_mode)
  • Я прочитал некоторые хитрости о '/etc/laptop-mode/conf.d/usb-autosuspend.conf', но этого файла нет в моей версии Ubuntu 16.04 с ноутбук-моделью v1.68
  • powertop application uninstallation. В форумах часто подозревают, что это приводит к проблемам с автоматическим приостановлением работы, и сегодня я знаю, что в моем случае это не так, так как удаление ничего не исправляет.
  • опции usbcore autosuspend=1 в '/etc/modprobe.d/usb.conf' тоже были неэффективны
  • '/etc/udev/rules.d/60-power. скрипт 'rules', предоставленный официальным Wiki Gentoo
  • файлом rules для udev '/etc/udev/rules.d/usb-power.rules', рекомендуемый Serge Y. Stroobandt

После прочтения всего этого технического материала я понял только, что причина в том, что мое значение '/sys/module/usbcore/parameters/autosuspend' застряло на две секунды, независимо от того, что я делаю со своей конфигурацией. Вы можете проверить это командой cat:

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

И да, моя мышь была отключена ровно через две секунды, так что я знал, что иду по правильному пути. Конечно, я тестировал команду echo -1, которую я видел здесь и там, -1, предназначенную для отключения автоподстановки... но:

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

я не понимал, почему мне отказывали в разрешении даже в режиме sudo. Я не пытался как корень, потому что не думал, что это может быть проблемой. Вот ошибка :(

Благодаря комментариям Алекса Деккера и Брайса я научился отключать autosuspend только для своей мыши. Но, конечно, мои первые попытки не увенчались успехом с этой башкой: Permission denied error, так что мне пришлось ждать понимания моей путаницы root/sudo, прежде чем команда echo -1, предложенная Алексом, наконец, сработала.

Я также нашел лучший способ выполнить команду в качестве пользователя root без входа в систему в качестве пользователя root. Разница между использованием корневой оболочки и командами root хорошо объяснена на официальной странице вики-страницы RootSudo в Ubuntu. Я люблю учиться таким вещам, но эй! Почему всегда нужно учиться болезненным способом? LOL

OMG, это была настоящая головная боль, и потребовалось много времени для того, чтобы такой ноб, как я, понял, как я обычно говорю "ни мозга, ни прибыли". Мой явно нуждается в большем количестве тренировок.

Так что давайте перестанем говорить о себе и пойдем исправлять это! Пожалуйста, продолжайте ниже...


Я настоятельно рекомендую второе решение для вашего незадействованного внешнего жесткого диска, чтобы не разряжать батарею ноутбука зря. Но я даю вам оба решения, потому что кто любит свою свободу, должен любить друг друга и свободу :)

РЕШЕНИЕ 1

Отключить автоподвеску на всех USB устройствах/портах

  1. Открыть терминал и выполнить:

    sudo sh -c "echo -1 > /sys/module/usbcore/параметры/автоподвеску"...[129717]Второе решение для того, чтобы ваш ноутбук не разряжался зря...
    
  2. Это действительно временное решение, которое позволяет вам мгновенно проверить, исправит ли эта команда проблему с автоподвеской мыши или клавиатуры.

  3. Если ваше USB устройство (устройства) теперь работает нормально, просто отредактируйте ваш '/etc/rc.local' скрипт, чтобы он запускал эту команду всякий раз, когда система загружается. Таким образом, вы сделаете исправление вида постоянным. Отредактируйте файл, например, с помощью nano:

    sudo nano /etc/rc.local
    
  4. и поместите команду echo -1 в ваш файл '/etc/rc.local' перед выходом из строки 0

    #!/bin/sh -e.
    #
    # rc.local
    #
    # Этот скрипт выполняется в конце каждого многопользовательского уровня выполнения.
    (...)
    # По умолчанию этот скрипт ничего не делает.
    echo -1 > /sys/module/usbcore/parameters/autosuspend
    выход 0
    
  5. Перезагрузите компьютер

(Пожалуйста, ознакомьтесь с важной запиской в конце)

.

РЕШЕНИЕ 2

Чтобы отключить автоматическое отключение для конкретного USB-устройства/порта

  1. Варианты питания для USB-устройства находятся в разделе /sys/bus/usb/devices/n-n/ power. Что такое n-n для конкретного устройства требует нескольких манипуляций, чтобы выяснить это, но это не сложно. В примере ниже показано, как я определил, что номер USB-порта моего беспроводного приемника мыши 3-1, поэтому, пожалуйста, адаптируйте его к своей ситуации:

    • Отсоедините USB-устройство, откройте терминал и выполните команду sudo dmesg

    • Подключите USB-устройство обратно, а затем снова выполните sudo dmesg в терминале, чтобы проверить изменения

    • Вот как выглядит конец вывода моей команды dmesg после того, как я подключил мышь обратно в слот:

      .
      [40208.575249] usb 3-1: новое полноскоростное USB-устройство номер 8 с использованием xhci_hcd.
      [40208.705233] usb 3-1: найдено новое USB-устройство, idVendor=062a, idProduct=4102
      [40208.705240] usb 3-1: новые строки устройств USB: Mfr=1, Продукт=2, Серийный номер=0
      [40208.705245] usb 3-1: Продукт: 2.4G Беспроводная мышь.
      [40208.705248] usb 3-1: Производитель: MOSART Semi.
      [40208.707679] вход: MOSART полу. 2.4G Беспроводная мышь в виде /устройств/pci0000:00/0000:00:14.0/usb3/3-1/3-1:1.0/0003:062A:4102.0007/вход/вход24
      [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
      

    Теперь мы видим, что порт, к которому подключено мое USB-устройство, обозначен как usb 3-1.

    **Заметка:** этот трюк касается идентификатора порта USB, а не идентификатора устройства. Например, если я подключаю мышь к следующему USB-порту, в результате `dmesg` она будет идентифицирована как `usb 3-2`. Но это решение #2 остается очень полезным, если взять привычку всегда подключать мышь или клавиатуру к одному и тому же порту, и это, как правило, люди делают это бессознательно ;).
    
  2. Выполните следующую команду в терминале, изменив номер моего порта 3-1 на тот, который вы нашли в вашем собственном dmesg результате:

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

    Обратите внимание, что autosuspend_delay_ms заменило устаревшее autosuspend, начиная с версии ядра 2.6.38, согласно официальной документации Linux.

  3. Это действительно временное решение , но теперь вы можете легко проверить, исправила ли эта команда проблему с автоприостановлением мыши или клавиатуры.

  4. Если ваше USB устройство теперь работает нормально, просто отредактируйте ваш скрипт '/etc/rc.local', чтобы он запускал эту команду при каждой загрузке системы. Таким образом, вы сделаете исправление вида постоянным. Отредактируйте файл, например, с помощью nano:

    sudo nano /etc/rc.local
    
  5. и поместите команду echo -1 в ваш файл '/etc/rc.local' перед выходом из строки 0, еще раз не забудьте поменять номер порта n-n в команде:

     #!/bin/sh -e
     #
     # rc.local
     #
     # Этот скрипт выполняется в конце каждого многопользовательского уровня выполнения.
     (...)
     # По умолчанию этот скрипт ничего не делает.
     echo -1 > /sys/bus/usb/devices/3-1/power/autosuspend_delay_ms
     выход 0
    
  6. Перезагрузите компьютер

.

Важно: не забывайте, что Вам придется снова выполнить "временную" команду sudo sh -c вручную, если Вы отсоедините/отсоедините Ваше USB устройство, пока окружение рабочего стола уже запущено, даже если Вы подключите его обратно к тому же самому USB-разъему. Обычно, только потому, что файл '/etc/rc.local' вызывается только один раз при загрузке системы.

В любом случае, обходные пути возможны. У более опытных людей могут быть более умные методы, но я настроил псевдонимы для порта в Ubuntu. Это позволяет мне использовать простые команды usb1 или usb2 выборочно, если мне придется отключить/подключить мое USB устройство здесь или там. Вы тоже! Вы также можете создать псевдонимы команд для воспроизведения коротких слов вместо того, чтобы набирать полную команду. Это легко установить менее чем за две минуты, а также работает с Alt + F2 :)

Больше идей, чтобы сделать это проще, также было бы очень приятно.

8
ответ дан 18 August 2016 в 00:01

Это не тот ответ, который я искал, но ... Я потратил два дня и много часов, пытаясь решить эту проблему. Я купил концентратор PCIe USB 3.0, чтобы проверить, сработает ли он, но он не работает.

Я пришел к выводу, что эту проблему не стоит решать, и есть более эффективные способы решения этой проблемы.

Мое решение / обходной путь - полагаться на функцию фрагментов текстового редактора. Это означает, что я буду вкладывать средства и больше полагаться на конкретный редактор (скорее всего, это будет Atom ), но он будет даже лучше, чем то, что у меня было с макросами клавиатуры, поскольку фрагменты легче поддерживать, чем макросы клавиатуры. .

Я многое узнал о USB из Сброс подсистемы USB .

0
ответ дан 18 August 2016 в 00:01
  • 1
    к вашему сведению: # превращает строку в комментарий; при разрешении легкого восстановления, если Вы позже решаете, Вы хотите его, но проигнорирован системой... – guiverc 26 October 2017 в 16:01

ഞാൻ അതേ പ്രശ്‌നമുണ്ടായിരുന്നു (കൈനിസ് കീബോർഡ്, ഒരു റീബൂട്ടിന് ശേഷം പ്രവർത്തിക്കുന്നത് നിർത്തി).

ഞാൻ റീബൂട്ടിന് മുമ്പ് 4.4.0-31-ജനറിക്

  • പതിപ്പിലായിരുന്നു ഇത്.

    • ഇത് കേർണൽ അപ്‌ഗ്രേഡുമായി ബന്ധപ്പെട്ടതാണെന്ന് ഞാൻ മനസ്സിലാക്കി. റീബൂട്ടിന് ശേഷം ഇത് 4.4.0-38-ജനറിക്

    പഴയ 4.4.0-31 കേർണൽ ഉപയോഗിച്ച് ബൂട്ട് ചെയ്യുന്നത് എനിക്ക് പ്രശ്‌നം പരിഹരിച്ചു.

    ഈ പോസ്റ്റിൽ ഒരു പഴയ കേർണൽ ഉപയോഗിച്ച് എങ്ങനെ ബൂട്ട് ചെയ്യാമെന്നതിനുള്ള നിർദ്ദേശങ്ങൾ ഉൾപ്പെടുന്നു (1198215] പഴയ കേർണൽ നിങ്ങൾക്കായി തന്ത്രം ചെയ്യുന്നുണ്ടോ എന്ന് കാണാൻ നിങ്ങളെ അനുവദിക്കുന്നു).

  • 1
    ответ дан 18 August 2016 в 00:01
    • 1
      Часть учебного руководства, на которое Вы смотрели ранее проинструктированный Вы в том, как добавить своп-файл к Вашему fstab, так, чтобы это было смонтировано во время начальной загрузки. Я не уверен, что произошло бы, если бы необходимо было запустить компьютер, и он пытался смонтировать non-existant файл. Я предполагаю, что это просто генерировало бы ошибку, но I' d скорее не тестируют его. – Charles Green 26 October 2017 в 15:40

    Если у вас есть ноутбук-инструменты , возможно, вы сможете полностью отключить функцию автоматического отключения USB, изменив:

    AUTOSUSPEND_TIMEOUT=2
    

    в

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

    на

    AUTOSUSPEND_TIMEOUT=-1
    

    Обратите внимание, что в этом файле

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

    Вы можете попробовать поиграть с этой опцией, если хотите точно настроить параметры управления питанием.

    ПРИМЕЧАНИЯ:

    • usbcore компилируется в ядро.
    • используя systemd
    • Ubuntu 16.10
    • Ядро Linux 4.8.0-41-generic #44-Ubuntu
    0
    ответ дан 18 August 2016 в 00:01
    • 1
      Почему отключают все своп-файлы только для удаления того? Можно просто сделать sudo swapoff /path/to/swapfile/to/be/deleted, не удаляя никакого другого. – Ruslan 26 October 2017 в 18:42

    У меня была такая же проблема. Для меня решение было простым, а истинная причина осталась неизвестной.

    Вчера я подключил к компьютеру вторую мышь. Все нормально работало. Сегодня, когда я загрузился, клавиатура не работала на экране входа в систему или на рабочем столе. Во время загрузки заработало, например зашел в биос.

    Клавиатура начала работать после того, как я отключил новую мышь и повторно подключил все провода USB.

    0
    ответ дан 29 September 2019 в 16:06

    Я читал этот и другие отчеты снова и снова в течение последнего года, и в конце концов просто отказался от использования клавиатуры, которая вызывала проблемы, и переключился на беспроводную клавиатуру.

    Пока мне не пришло в голову, что проблема началась примерно в то время, когда я построил новый компьютер, и это могла быть проблема с питанием. Поэтому я купил USB-концентратор с питанием от и для подключения клавиатуры. Это решило проблему! В конце концов, это была не проблема программного обеспечения, но, видимо, у моего нового компьютера USB-выходы с недостаточным питанием (по крайней мере, так думает моя клавиатура).

    Возможно, стоит попробовать, если вы страдаете от периодических отключений клавиатуры, как описано выше, и ничего со стороны программного обеспечения сработало. USB-концентратор с питанием не должен быть дорогим.

    0
    ответ дан 29 September 2019 в 16:06

    Другие вопросы по тегам:

    Похожие вопросы: