Ubuntu 22.04 редкое случайное залипания клавиш на Dell G15 5521, которое сразу же очищается при нажатии другой клавиши.

Вопрос или проблема

Настройка:

  • Ubuntu 22.04, чистая установка.
  • Ноутбук Dell G15 5521
  • Последний прошивка
  • 6.0.8-060008-generic
  • Nvidia 525.60.11
  • X11 версия Ubuntu с Gnome

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

Это происходит как с ядром по умолчанию, так и с 6.0.8.

Проблема не возникает в Windows 11. Проблемы не наблюдаются при запуске предварительных клавиатурных тестов (клавиша fn зажата при включении).

Проблема возникает на нескольких ноутбуках G15. У меня один для работы, один для личного использования, а на работе еще три. У всех есть одна и та же случайная редкая проблема, но достаточно частая, чтобы на нее жаловались…

Проблема возникает не всегда при нагрузке на систему. Скорость набора текста, похоже, не влияет на проблему.

dmesg не показывает ничего, связанного с клавиатурой или USB, когда проблема возникает.

Я не хочу отключать автоповтор клавиш (xset -r).

Немного информации о входных устройствах:

$ xinput list
⎡ Виртуальный основной указатель                      id=2    [главный указатель  (3)]
⎜   ↳ Виртуальный основной XTEST указатель                id=4    [дочерний  указатель  (2)]
⎜   ↳ Мышь DELL0B56:00 06CB:CE81               id=10   [дочерний  указатель  (2)]
⎜   ↳ Сенсорная панель DELL0B56:00 06CB:CE81            id=11   [дочерний  указатель  (2)]
⎜   ↳ PS/2 Обычная мышь                        id=17   [дочерний  указатель  (2)]
⎜   ↳ Логитек MX Ergo Многопортовая трекбол   id=18   [дочерний  указатель  (2)]
⎣ Виртуальная основная клавиатура                     id=3    [главная клавиатура (2)]
    ↳ Виртуальная основная XTEST клавиатура               id=5    [дочерняя  клавиатура (3)]
    ↳ Видеошина                                 id=6    [дочерняя  клавиатура (3)]
    ↳ Видеошина                                 id=7    [дочерняя  клавиатура (3)]
    ↳ Кнопка питания                              id=8    [дочерняя  клавиатура (3)]
    ↳ Интегрированная_Webcam_HD: Integrate           id=9    [дочерняя  клавиатура (3)]
    ↳ Массив из 5 кнопок Intel HID                  id=12   [дочерняя  клавиатура (3)]
    ↳ События Intel HID                          id=13   [дочерняя  клавиатура (3)]
    ↳ Драйвер конфиденциальности Dell                       id=14   [дочерняя  клавиатура (3)]
    ↳ Горячие клавиши Dell WMI                          id=15   [дочерняя  клавиатура (3)]
    ↳ Клавиатура AT Translated Set 2              id=16   [дочерняя  клавиатура (3)]

$ uname -a
Linux Dell-G15-Special-Edition-5521 6.0.8-060008-generic #202211101901 SMP PREEMPT_DYNAMIC Thu Nov 10 20:44:03 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

Могу ли я попробовать что-то, чтобы уточнить, где происходит эта проблема?

Я посмотрел на множество различных сообщений и вопросов, но советы ограничены.

Редактировать 20 сентября 2023

Теперь у нас 8 ноутбуков Dell G15, все обновлены. У всех одна и та же проблема.

Проблема не возникает при запуске Windows.

Редактировать 02/09/2024: пока я жду прибытия своего Thinkpad, я ограничил C-состояния до C2 с помощью параметра ядра intel_idle.max_cstate=2 (установлено в конфигурации grub).
Пока не было проблем с клавиатурой…

Редактировать 18/01/2024: С тех пор как я узнал, что аппаратные прерывания для освобождения клавиш задерживаются, я попробовал несколько вещей:

  • удалить сервис irqbalance из своей среды
  • выделить одно ядро только для обработки прерываний клавиатуры
  • бонус: получил обновление bios (1.11.0), которое увеличило ревизию прошивки встроенного контроллера

К сожалению, ни одно из этих изменений не помогло.

Редактировать 09/01/2024: Я подтвердил, что аппаратное прерывание отсутствует для освобождения клавиши

Jan  9 13:31:50 atoppi kernel: [ 9452.070032] i8042: [2362855] 1c <- i8042 (interrupt, 0, 1)
Jan  9 13:31:50 atoppi kernel: [ 9452.205121] i8042: [2362889] 9c <- i8042 (interrupt, 0, 1)
Jan  9 13:31:52 atoppi kernel: [ 9453.842970] i8042: [2363298] 1c <- i8042 (interrupt, 0, 1)
Jan  9 13:31:52 atoppi kernel: [ 9453.935991] i8042: [2363322] 9c <- i8042 (interrupt, 0, 1)
Jan  9 13:31:53 atoppi kernel: [ 9454.655751] i8042: [2363502] 1c <- i8042 (interrupt, 0, 1)

здесь отсутствует "9c" (то есть освобождение клавиши ENTER)
с этого момента клавиша ENTER застревает

Jan  9 13:32:06 atoppi kernel: [ 9468.085395] i8042: [2366859] e0 <- i8042 (interrupt, 0, 1)
Jan  9 13:32:06 atoppi kernel: [ 9468.085590] i8042: [2366859] 2a <- i8042 (interrupt, 0, 1)
Jan  9 13:32:06 atoppi kernel: [ 9468.085760] i8042: [2366859] e0 <- i8042 (interrupt, 0, 1)
Jan  9 13:32:06 atoppi kernel: [ 9468.085946] i8042: [2366859] 48 <- i8042 (interrupt, 0, 1)

"9c" приходит после нажатия других клавиш

Jan  9 13:32:06 atoppi kernel: [ 9468.098398] i8042: [2366862] 9c <- i8042 (interrupt, 0, 1)

Редактировать 26/12/2023: Я протестировал почти все параметры драйвера i8042 (того, который обрабатывает интерфейс ps/2 для клавиатуры), но проблема все еще persists.
На данный момент либо драйвер Linux содержит ошибку, либо аппаратный контроллер, по моему мнению, второе более вероятно. Возможно, обновление прошивки решит проблему, но удачи в попытках объяснить проблему безграмотной поддержке Dell.

Я выкидываю этот никчёмный ноутбук, перехожу на Thinkpad и больше не буду обращаться к Dell.

Редактировать 20/12/2023: Я писал слово “комната”, отслеживая события с помощью evtest. Внезапно вторая “o” застряла на клавиатуре, так что я остановил цикл повторения с помощью “a”.

Я обнаружил, что проблема вызвана задержкой события “KeyRelease” от ядра

Событие: время 1703089559.564161, тип 4 (EV_MSC), код 4 (MSC_SCAN), значение 13
Событие: время 1703089559.564161, тип 1 (EV_KEY), код 19 (KEY_R), значение 1
Событие: время 1703089559.564161, -------------- SYN_REPORT ------------
Событие: время 1703089559.692291, тип 4 (EV_MSC), код 4 (MSC_SCAN), значение 13
Событие: время 1703089559.692291, тип 1 (EV_KEY), код 19 (KEY_R), значение 0
Событие: время 1703089559.692291, -------------- SYN_REPORT ------------
Событие: время 1703089560.008009, тип 4 (EV_MSC), код 4 (MSC_SCAN), значение 18
Событие: время 1703089560.008009, тип 1 (EV_KEY), код 24 (KEY_O), значение 1
Событие: время 1703089560.008009, -------------- SYN_REPORT ------------
Событие: время 1703089560.126559, тип 4 (EV_MSC), код 4 (MSC_SCAN), значение 18
Событие: время 1703089560.126559, тип 1 (EV_KEY), код 24 (KEY_O), значение 0
Событие: время 1703089560.126559, -------------- SYN_REPORT ------------
Событие: время 1703089560.618210, тип 4 (EV_MSC), код 4 (MSC_SCAN), значение 1e
Событие: время 1703089560.618210, тип 1 (EV_KEY), код 30 (KEY_A), значение 1
Событие: время 1703089560.618210, -------------- SYN_REPORT ------------
Событие: время 1703089564.805921, тип 4 (EV_MSC), код 4 (MSC_SCAN), значение 1e
Событие: время 1703089564.805921, тип 1 (EV_KEY), код 30 (KEY_A), значение 0
Событие: время 1703089564.805921, -------------- SYN_REPORT ------------

Обратите внимание, как вторая “o” отпускается (значение 0) только когда нажимается буква “a” (значение 1) через 4 секунды.

Редактировать: К сожалению, проблема вернулась через много времени, даже с обходным решением, которое я предлагаю ниже 🙁

Я переключился на xfce и добавил в черный список следующие модули ядра.
Проблема все еще проявляется с тех пор (отредактировал blacklist.conf в /etc/modprobe.d):

черный список dell_laptop
черный список dell_wmi
черный список dell_wmi_sysman
черный список dell_wmi_ddv
черный список dell_smbios
черный список dell_wmi_descriptor

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

То же самое здесь, с DELL Vostro 15 3510.

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

Похоже, это проблема Wayland, которая исчезла для меня, когда я переключился на Xorg. Просто выберите “Ubuntu на Xorg” на экране входа (маленькая шестеренка в правом нижнем углу).

У меня такая же проблема с Dell Vostro 15 3510, и я создал скрипт-обход. Я заметил, что всякий раз, когда я нажимаю alt+f4, для одной и той же клавиши выстреливает много событий press и release в очень короткий промежуток времени.

Некоторая информация о ОС:

$ uname -a
Linux pc 6.5.0-14-generic #14-Ubuntu SMP PREEMPT_DYNAMIC Tue Nov 14 14:59:49 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
$ lsb_release -a
Нет доступных модулей LSB.
Идентификатор дистрибьютора: Ubuntu
Описание:    Ubuntu 23.10
Версия:        23.10
Кодовое имя:       mantic

Я использую KDE и X11.

Сначала давайте посмотрим идентификатор устройства клавиатуры:

$ xinput list
⎡ Виртуальный основной указатель                          id=2    [главный указатель  (3)]
⎜   ↳ Виртуальный основной XTEST указатель                id=4    [дочерний  указатель  (2)]
⎜   ↳ Мышь DELL0AB2:00 27C6:0D43               id=8    [дочерний  указатель  (2)]
⎜   ↳ Сенсорная панель DELL0AB2:00 27C6:0D43            id=9    [дочерний  указатель  (2)]
⎜   ↳ PS/2 Обычная мышь                        id=15   [дочерний  указатель  (2)]
⎣ Виртуальная основная клавиатура                         id=3    [главная клавиатура (2)]
    ↳ Виртуальная основная XTEST клавиатура               id=5    [дочерняя  клавиатура (3)]
    ↳ Видеошина                                 id=6    [дочерняя  клавиатура (3)]
    ↳ Кнопка питания                              id=7    [дочерняя  клавиатура (3)]
    ↳ Массив из 5 кнопок Intel HID                  id=10   [дочерняя  клавиатура (3)]
    ↳ События Intel HID                          id=11   [дочерняя  клавиатура (3)]
    ↳ Клавиатура AT Translated Set 2              id=14   [дочерняя  клавиатура (3)]

В данном случае это 14:

↳ Клавиатура AT Translated Set 2 id=14 [дочерняя клавиатура (3)]

Затем давайте посмотрим на нажатые клавиши:

нажатие клавиши   64 
нажатие клавиши   70 
освобождение клавиши 64 
освобождение клавиши 70 
нажатие клавиши   70 
^[освобождение клавиши 70 
нажатие клавиши   70 
^[освобождение клавиши 70 
нажатие клавиши   70 
^[освобождение клавиши 70 
нажатие клавиши   70 
^[освобождение клавиши 70 
нажатие клавиши   70 
^[освобождение клавиши 70 
нажатие клавиши   70 
^[освобождение клавиши 70 
нажатие клавиши   70 
^[освобождение клавиши 70 
нажатие клавиши   70 
^[освобождение клавиши 70 
нажатие клавиши   70 
^[освобождение клавиши 70 
нажатие клавиши   70 
^[освобождение клавиши 70 
нажатие клавиши   70 
^[освобождение клавиши 70 
нажатие клавиши   70 
^[освобождение клавиши 70 
нажатие клавиши   70 
^[освобождение клавиши 70 
нажатие клавиши   70 
^[освобождение клавиши 70 
нажатие клавиши   70 
^[освобождение клавиши 70 
нажатие клавиши   70 
^[освобождение клавиши 70 
нажатие клавиши   70 
^[освобождение клавиши 70 
нажатие клавиши   70 
^[освобождение клавиши 70 
нажатие клавиши   70 
^[освобождение клавиши 70 
нажатие клавиши   70 
^[освобождение клавиши 70 
нажатие клавиши   70 
^[освобождение клавиши 70 
нажатие клавиши   70 
^[освобождение клавиши 70 
нажатие клавиши   70 
^[освобождение клавиши 70 
нажатие клавиши   70 
^[освобождение клавиши 70 
нажатие клавиши   70 
^[освобождение клавиши 70 
нажатие клавиши   70 
^[освобождение клавиши 70 
нажатие клавиши   70 
^[освобождение клавиши 70 
нажатие клавиши   70 
^[освобождение клавиши 70 
нажатие клавиши   70 
^[освобождение клавиши 70 
нажатие клавиши   70 
^C

Сначала я нажал несколько случайных клавиш, затем открыл несколько окон и закрыл их с помощью alt+f4 (70), затем он начал повторять события нажатия и отпускания alt+f4.

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

Сначала установите xdotool:

sudo apt install -y xdotool

Затем сохраните это в .sh файл, например script.sh:

#!/bin/bash

export DISPLAY=":0"
keycode="70"
xinput="/usr/bin/xinput"
xdotool="/usr/bin/xdotool"
keyboard_name="Клавиатура AT Translated Set 2"

xinput_keyboard_id=$($xinput list | grep "$keyboard_name" | grep -o 'id=[0-9]\+' | cut -d= -f2 | tr -d "\n")

if [ -z $xinput_keyboard_id ]; then
    >&2 echo "Ошибка получения идентификатора устройства xinput."
    exit 1
fi

освобождение_alt_f4_клавиши() {
    $xinput disable $xinput_keyboard_id
    $xinput enable $xinput_keyboard_id
    sleep 0.1
    $xdotool keyup $keycode
}

$xinput test $xinput_keyboard_id | while read line; do
    line=$(echo $line | tr -d '\r')
    if [[ $line =~ "нажатие клавиши $keycode" ]]; then
        now=$(date +%s.%N)
        if [[ -n "$last_ts" && $(bc <<< "$now - $last_ts < 1") -eq 1 ]] ; then
            освобождение_alt_f4_клавиши
        fi
        last_ts=$now
    fi
done

exit 0

Обратите внимание, что вам нужно изменить keyboard_name на имя устройства клавиатуры, которое мы получили ранее с помощью xinput list.

Затем сделайте его исполняемым:
chmod u+x script.sh

Затем запустите его:
./script.sh

Или вы можете запустить его в фоне:
nohup ./script.sh >/dev/null 2>&1 &

Или вы можете запланировать его запуск при каждом запуске ОС с помощью crontab -e:

# м ч  дом месяц день   команда
@reboot sleep 10 && /home/user/script.sh

Если у вас есть более лучшее решение, пожалуйста, дайте мне знать!

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

Есть еще несколько вещей, которые уменьшают частоту проблемы. Меньшая нагрузка на систему помогает, отключение звукового демона ‘pipewire’, например, кажется, делает это менее частым. Выгрузка драйвера в Linux также немного помогает, если у вас есть внешняя мышь:

rmmod i2c_hid_acpi i2c_hid

Предложение ограничить C-состояния до C2 также помогает, но ни одно из этих решений полностью не устраняет проблему. Если вы фактически используете компьютер, это происходит часто.

Я не смог попробовать другую ОС на этом компьютере.

Ответ или решение

Решение проблемы с залипанием клавиш на ноутбуках Dell G15 с Ubuntu 22.04

Введение

Проблема залипания клавиш на ноутбуках Dell G15 5521, работающих под управлением Ubuntu 22.04, является довольно распространенной. Несмотря на ее редкость и случайный характер (обычно возникает один раз в день), она причиняет значительный дискомфорт пользователям. Ниже приведены описания основных причин, возможные решения проблемы и рекомендации по их внедрению.

Описание проблемы

На ноутбуках Dell G15 5521 под управлением Ubuntu 22.04 наблюдается следующее поведение:

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

Возможные причины

  1. Конфликт программного обеспечения: Проблема может быть вызвана конфликтом между драйверами, особенно если на системе установлены разные версии программных компонентов.

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

  3. Дополнительные модули: Некоторые модули ядра Linux, связанные с управлением аппаратным обеспечением Dell, могут вызывать нестабильную работу клавиатуры.

Методы устранения проблемы

Вот несколько рекомендаций по устранению проблемы, основанных на предложениях и тестах, специфичных для Dell G15 и Ubuntu:

  1. Отключение лишних модулей:

    • Временно отключите модули, которые не являются критически важными для работы системы:
      echo "blacklist dell_laptop" | sudo tee -a /etc/modprobe.d/blacklist.conf
      echo "blacklist dell_wmi" | sudo tee -a /etc/modprobe.d/blacklist.conf
    • Перезагрузите систему и проверьте, уменьшилась ли частота проблемы.
  2. Изменение параметров ядерной конфигурации:

    • Добавьте параметр intel_idle.max_cstate=2 в конфигурацию GRUB:
      sudo nano /etc/default/grub
    • Измените строку GRUB_CMDLINE_LINUX_DEFAULT следующим образом:
      GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_idle.max_cstate=2"
    • Обновите настройки GRUB:
      sudo update-grub
    • Перезагрузите компьютер.
  3. Использование различных окружений рабочего стола:

    • Если вы используете Wayland, попробуйте переключиться на сессию Xorg. Это можно сделать на экране входа в систему, выбрав соответствующую опцию.
    • Попробуйте использовать альтернативные среды рабочего стола, такие как XFCE, которые могут иметь другие механизмы работы с вводом.
  4. Проверка и отключение службы irqbalance:

    • Попробуйте отключить службу irqbalance, которая отвечает за распределение прерываний между процессорами:
      sudo systemctl stop irqbalance
      sudo systemctl disable irqbalance
    • Проверьте, улучшилось ли поведение клавиатуры.
  5. Скрипты для обработки залипания клавиш:

    • Можно создать скрипт, который будет отслеживать нажатие клавиш и сбрасывать состояние клавиатуры, если будет обнаружено неожиданное поведение. Например:
      #!/bin/bash
      xinput test <укажите_идентификатор_клавиатуры> | while read line; do
      if [[ "$line" == *"key press"* ]]; then
         # Логика обработки
      fi
      done

Заключение

Несмотря на то, что проблема залипания клавиш на Dell G15 на Ubuntu 22.04 может быть вызвана различными факторами, применение приведенных выше рекомендаций может помочь минимизировать или полностью устранить проблему. При наличии дополнительных вопросов или для детальной диагностики настоятельно рекомендую обратиться на официальные форумы Ubuntu или поддержку Dell.

Оцените материал
Добавить комментарий

Капча загружается...