Клавиатура перестает работать Ubuntu 16.04

11

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

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

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

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

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

Вот несколько деталей

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

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

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

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

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

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

    
задан klequis 13.05.2016 в 22:44
источник

4 ответа

5

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

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

.

КОНТЕКСТ

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

  • '/ etc / default / grub' загрузка ядра usbcore.autosuspend=-1 параметр
  • Режим "runtime-pm.conf" для ноутбука CONTROL_RUNTIME_AUTOSUSPEND=0
  • полностью отключить инструменты режима ноутбука из файла '/etc/laptop-mode/laptop-mode.conf', подтвердив, что проблема не связана с этой функцией ядра, я проверил различные способы, которыми laptop_mode больше не работал. (ref: man laptop-mode.conf & amp; man laptop_mode )
  • Я прочитал несколько трюков о '/etc/laptop-mode/conf.d/usb-autosuspend.conf', но этот файл не существует в моей версии Ubuntu 16.04 с помощью средств для работы с портами v1.68
  • powertop удаление приложений, часто подозреваемых в форумах вызывать проблемы с autosuspend, сегодня я знаю, что это было неверно в моем случае, поскольку удаление было не исправлено.
  • options 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' рекомендуется Серж Ю. Строобандт

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

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

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

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

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

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

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

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

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

Я настоятельно рекомендую 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. Это действительно временное решение , но теперь вы можете легко проверить, исправлена ​​ли эта ошибка при выпуске autosuspend мыши или клавиатуры

  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:)

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

Приветствия:)

    
ответ дан Fenyx 17.08.2016 в 09:58
1

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

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

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

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

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

    
ответ дан jeroend 23.09.2016 в 17:47
0

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

Мое заключение состоит в том, что эту проблему не стоит решать, и есть более эффективные пути к одному и тому же концу.

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

Я много узнал о USB из этого сообщения .     

ответ дан klequis 15.05.2016 в 17:00
0

Если у вас есть laptop-mode-tools , можно полностью отключить автоматическое приостановку usb, изменив:

AUTOSUSPEND_TIMEOUT=2

в

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

to

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
ответ дан Antonio Medina 14.03.2017 в 05:27