IdeaPad 5 15are05 - сенсорная панель elan не работает ни на 20.04, ни на 18.04

Вчера я купил Lenovo IdeaPad 5 15are05 и установил на него Ubuntu 20.04. Проблема в том, что тачпад не работает.

Я также пробовал 18.04 и даже Debian 10, но единственная ОС, на которой он работает, это Windows.

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

cat / proc / bus / input / devices :

I: Bus=0018 Vendor=0000 Product=0000 Version=0000
N: Name="Elan Touchscreen"
P: Phys=
S: Sysfs=/devices/platform/AMDI0010:01/i2c-1/i2c-ELAN0001:00/input/input4
U: Uniq=
H: Handlers=mouse0 event4 
B: PROP=2
B: EV=b
B: KEY=400 0 0 0 0 0
B: ABS=661800001000003

Даже если он говорит «Сенсорный экран», я точно знаю, что это мой тачпад Откуда я это знаю? Хорошо, когда я иду в терминал, используя ctrl + alt + f3 , и пытаюсь использовать сенсорную панель, он выводит следующее:

elants_i2c i2c-ELAN0001: 00: неизвестный пакет 0e 00 04 03 03 означает, что я касаюсь этого. Это значение изменялось при различных действиях, например, оно становилось равным 01 при «отпускании» сенсорной панели.

Это означает, что тачпад указан в ELAN0001, под которым также указан «сенсорный экран». Я не думаю, что это странно, что он говорит, что это сенсорный экран, потому что они очень похожи.

xinput выводит это:

⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ NEWMEN1500 Mouse Consumer Control         id=13   [slave  pointer  (2)]
⎜   ↳ NEWMEN1500 Mouse                          id=15   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=8    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=11   [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ NEWMEN1500 Mouse Consumer Control         id=14   [slave  keyboard (3)]
    ↳ NEWMEN1500 Mouse                          id=12   [slave  keyboard (3)]
    ↳ Integrated Camera: Integrated C           id=9    [slave  keyboard (3)]
    ↳ Ideapad extra buttons                     id=10   [slave  keyboard (3)]

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

Мне бы очень хотелось узнать, как это исправить, поскольку мне нужна тачпад, и я не хочу покупать новый ноутбук, поэтому, пожалуйста, помогите мне!

3
задан 8 June 2020 в 15:00

5 ответов

Я нашел решение, большое спасибо dl3it на Ideapad 5-15ARE05: Сенсорный экран не работает | Форумы Lenovo . (Примечание: там написано touchscreen, но я думаю, это просто название сенсорной панели. Работает нормально.)

Проблема в том, что ядро ​​что-то не так с драйверами. Чтобы исправить это, вам придется установить основное ядро ​​и настроить его самостоятельно.

Во-первых, установите зависимости, выполнив это в командной строке:

sudo apt-get install libncurses-dev flex bison openssl libssl-dev dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf

Затем загрузите ядро ​​5.6.x или 5.7.x (x может быть любым целым числом, я использовал 5.7.1, и он был протестирован на 5.6. 14 и 5.7.0-rc7) из исходных кодов (через kernel.org). Находясь на kernel.org , щелкните [tarball] для нужного ядра.

Распакуйте все так же, как и любой другой файл .tar.gz .

Затем перейдите в каталог linux-5.6.x или linux-5.7.x в командной строке.

Выполните sudo make menuconfig и перейдите к Драйверы устройств → Поддержка устройств ввода → Сенсорные экраны → Сенсорный экран Elan eKTH I2C .

Там измените звездочку на m , нажав клавишу ВВОД, а затем набрав m .

После этого используйте стрелки влево и вправо, чтобы изменить выбранную опцию внизу на «сохранить», и нажмите Enter . Затем вы захотите сохранить его как .config (который должен быть установлен по умолчанию).

Теперь, находясь в том же каталоге, выполните следующую команду:

sudo make -jx && sudo make modules_install -jx && sudo make install -jx

(Измените x на количество потоки вашего процессора.Если вы не укажете этот параметр, это займет много времени.)

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

sudo update-initramfs -c -k

(Измените на версию ядра, которую вы только что установили, например 5.7.1 .)

Затем исправьте конфигурацию grub, выполнив:

sudo update-grub

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

ПРИМЕЧАНИЕ: веб-сайты, которые я использовал и не упоминал раньше:

5
ответ дан 19 June 2020 в 21:29

Более простое решение: добавить «blacklist elants_i2c» в / etc / modprobe. d / undeeded-modules.conf (вам нужно будет его создать), сохраните и перезагрузитесь. Работает идентично тачпаду и Manjaro. Vendor = 04f3 Product = 3140 Version = 0100

0
ответ дан 19 June 2020 в 21:29

It seems not to be possible to blacklist elants_i2c driver, as it is a built-in kernel module for Ubuntu:

stefano@stefano-IdeaPad-5-15ARE05:~$ modinfo elants-i2c
name:           elants_i2c
filename:       (builtin)
license:        GPL
description:    Elan I2c Touchscreen driver
author:         Scott Liu <scott.liu@emc.com.tw>

so there is a faster way than compiling the kernel. Just create a SystemD unit like the below:

stefano@stefano-IdeaPad-5-15ARE05:~$ cat /etc/systemd/system/touchpadfix.service 
[Unit]
Description=Fix touchpad issue by binding correct driver

[Service]
ExecStart=/usr/local/bin/touchpadfix
Type=oneshot
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

and create /usr/local/bin/touchpadfix file as follows

stefano@stefano-IdeaPad-5-15ARE05:~$ cat  /usr/local/bin/touchpadfix
#!/bin/bash
modprobe i2c_hid
echo "i2c-ELAN0001:00" > /sys/bus/i2c/drivers/elants_i2c/unbind
echo "i2c-ELAN0001:00" > /sys/bus/i2c/drivers/i2c_hid/bind

and then make it executable, enable and start the unit with the following commands:

chmod +x /usr/local/bin/touchpadfix
sudo systemctl daemon-reload
sudo systemctl enable --now touchpadfix.service

and touchpad should start to work immediately!

SOURCE: https://wiki.archlinux.org/index.php/Lenovo_IdeaPad_5_15are0 which is giving us unbind-bind fix and another guy in a forum which suggested SystemD unit, which I cannot retrieve right now

0
ответ дан 19 June 2020 в 21:29

Мне удалось решить эту проблему, воспользовавшись советом из этого комментария об ошибке панели запуска (из этого ответа на форуме Lenovo):

Джаспер ван дер Нойт - Стулен (neutstulen) написал 18.06.2020: #31

В качестве обходного пути вы можете добавить "initcall_blacklist=elants_i2c_driver_init" в GRUB_CMDLINE_LINUX, запустить update-grub, выключите ноутбук и включите его снова.

Это также работает при загрузке с установочного носителя путем добавления initcall_blacklist=elants_i2c_driver_init к параметрам загрузки. На экране загрузки grub я добавил его после тихой заставки при редактировании параметра Запустить Ubuntu.

3
ответ дан 9 July 2020 в 03:16

Почти 100% правильно, вот обходной путь.

Откройте терминал

sudo mousepad /etc/default/grub

Редактируйте следующим образом: GRUB_CMDLINE_LINUX="initcall_blacklist=elants_i2c_driver_init"

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

sudo update-grub

Добавить до или после «тихого всплеска» НЕ ЗНАЧИТ.

Имейте в виду, что это «обходной путь», который заставит сенсорную панель работать, значок индикатора сенсорной панели НЕ будет работать должным образом.

4
ответ дан 12 July 2020 в 06:09

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

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