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

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

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

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

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

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

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

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

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

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

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

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

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

5 ответов

У меня была та же проблема с Xenial 16.04, и я так долго искал какое-либо решение... Было очень неприятно постоянно перемещать курсор мыши только для того, чтобы разбудить устройство. Я был на пути отказаться и сделать свежий дистрибутив или сменить дистрибутив, рядом с нервным кризисом, смеется. Но я наконец-то нашел единственное решение своей проблемы, и оно, похоже, точно такое же, как и у вас, klequis.

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

,

КОНТЕКСТ

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

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

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

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

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

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

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

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

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

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

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


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

РЕШЕНИЕ 1

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

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

    sudo sh -c "echo -1 > /sys/module/usbcore/parameters/autosuspend"
    
  2. Это действительно временное решение, которое позволяет вам мгновенно проверить, исправляет ли эта команда проблему с автоподключением мыши или клавиатуры.
  3. Если ваше USB-устройство (устройства) теперь работает нормально, просто отредактируйте ваш скрипт /etc/rc.local, чтобы он запускал эту команду при каждой загрузке системы. Таким образом, вы сделаете исправление постоянным. Отредактируйте файл, например, с помощью nano:

    sudo nano /etc/rc.local
    
  4. и положить echo -1 Команда в вашем файле /etc/rc.local перед exit 0 линия

    #!/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. Перезагрузите компьютер

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

,

РЕШЕНИЕ 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: 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
      

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

      Примечание. Этот прием касается идентификатора порта USB, а не идентификатора устройства. Например, если я подключаю мышь к следующему USB-порту, он идентифицируется как usb 3-2 в dmesg результат. Но это решение № 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 перед exit 0 линия, еще раз не забудьте поменять номер порта 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. Перезагрузите компьютер

,

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

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

Другие идеи, чтобы сделать это проще, также будет приветствоваться.

Ура:)

У меня была точно такая же проблема (клавиатура Kinesis, перестала работать после перезагрузки).

В конце концов я понял, что это связано с обновлением ядра

  • до перезагрузки у меня была версия 4.4.0-31-generic
  • после перезагрузки было 4.4.0-38-generic

Загрузка с использованием более старого ядра 4.4.0-31 устранила проблему для меня.

Этот пост содержит инструкции по загрузке с использованием более старого ядра (что позволяет узнать, подходит ли вам более старое ядро).

Если у вас есть laptop-mode-tools может быть возможно полностью отключить автоматическую приостановку 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

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

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

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

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

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

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

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

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

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

Из этого поста я многое узнал о USB.

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