Я получил Raspberry Pi 3 и 15-дюймовый сенсорный экран, используя VGA для видео (я использую конвертер для подключения к HDMI Pi) и USB для сенсорных возможностей.
Из коробки при загрузке с подключенным устройством модуль usbtouchscreen обрабатывает устройство и создает два ввода: /dev/input/event3
и /dev/input/mouse1
. Xorg регистрирует ввод event3
и я могу общаться через систему с помощью прикосновения, но не так, как я ожидал. Я не могу ничего нажимать, только перемещаю мышь. Он также не регистрирует вход mouse1
из-за того, no driver found
(подробности в выходных данных журнала приведены ниже). Прикосновения регистрируются в основном повсюду на экране, за исключением крайних углов, но мышь перемещается обратно в нижний левый угол после каждого прикосновения. Когда я говорю около левого нижнего угла, я имею в виду примерно 1/8 экрана от фактического угла по обеим осям. После добавления конфигурации Xorg для замены и инвертирования осей в 10-evdev.conf
:
Option "SwapAxes" "1" Option "InvertY" "1"
Мышь находится в правом нижнем квадранте. Мышь также ограничена от 1/2 до 2/3 экрана независимо от ориентации оси, что-то вроде эффекта масштабирования. Когда я щелкаю в верхнем левом углу экрана, мышь перемещается в середину экрана. То же самое касается всех остальных частей экрана.
Я попытался установить Option "Mode" "Relative"
в конфигурации, которая позволяет мыши перемещаться по моему пальцу в любом месте экрана (таким образом, масштабирование 0,5х исчезло), но она возвращается в разные места, прогрессирует и в конечном итоге достигает нижний правый угол как "исходное положение" после нажатия.
Я попытался пересобрать ядро Raspberry Pi 3 со всеми модулями eGalax/EETI или включенными в него:
CONFIG_TOUCHSCREEN_EGALAX=m CONFIG_TOUCHSCREEN_EETI=m CONFIG_TOUCHSCREEN_USB_COMPOSITE=m CONFIG_TOUCHSCREEN_USB_EGALAX=y
То же самое происходит, как описано выше.
Я попытался следовать руководству EETI, чтобы установить их собственный драйвер, расположенный по адресу http://www.eeti.com.tw/drivers_Linux.html. Я скачал eGTouch_v2.5.5814.L-ma
, подправил 4 рекомендуемые ими настройки ядра, применил исправления исходного кода для kernel versions 2.6+
и собрал . Когда я поместил ядро на свою Pi SD и загрузился, event3
и mouse1
не были созданы, потому что они заставили меня удалить usbtouchscreen
из ядра. В руководстве говорилось, что я должен был видеть мой сенсорный экран eGalax без каких-либо обработчиков (в отличие от mouse1
и event3
я видел раньше), когда я запускал cat /proc/bus/input/devices
но он вообще не появлялся . Кроме того, я не могу взаимодействовать вообще через прикосновение в этой настройке.
Я пытался прошить Raspbian, Ubuntu MATE и Arch Linux ARM .img
, и все они вели себя одинаково, за исключением одного заметного исключения. Где-то в процессе моей установки Ubuntu MATE и выполнения apt update && apt upgrade
а также rpi-update
, я впервые протестировал экран после прошивки Ubuntu на SD, и он работал отлично! Это убивает меня, так как после того, как я закончил обновление и перезагрузил компьютер, я так и не смог воспроизвести. Я попытался перепрошить Ubuntu безрезультатно. Я был уверен, что так и останется, поэтому я не получил ни одного из выводов журнала или параметров конфигурации, из-за которых все получилось.
Моя теория состоит в том, что ввод mouse1
- это то, что создает щелчки, а это не регистрируется. Согласно журналу Xorg ниже:
Adding input device eGalax Inc. USB TouchController (/dev/input/mouse1)
No input driver specified, ignoring this device.
Я попытался добавить /dev/input/mouse1
в 10-evdev.conf
с Driver "evdev"
но он выдает следующее сообщение об ошибке: evdev: eGalax Inc. USB TouchController: Unable to query fd: Inappropriate ioctl for device
. Похоже, evdev не распознает ввод, предоставляемый mouse1
. Любые другие драйверы, которые я могу попробовать?
Различный вывод журнала:
cat /proc /bus /input / соответствующие устройства вывода:
I: Bus=0003 Vendor=0eef Product=0001 Version=0100
N: Name="eGalax Inc. USB TouchController"
P: Phys=usb-3f980000.usb-1.5/input0
S: Sysfs=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.5/1-1.5:1.0/input/input4
U: Uniq=
H: Handlers=mouse1 event3
B: PROP=0
B: EV=b
B: KEY=400 0 0 0 0 0 0 0 0 0 0
B: ABS=3
ls -l /dev /input /by-id /:
lrwxrwxrwx 1 root root 9 Nov 25 18:09 usb-DELL_DELL_USB_Keyboard-event-kbd -> ../event2
lrwxrwxrwx 1 root root 9 Nov 25 18:53 usb-eGalax_Inc._USB_TouchController-event-if00 -> ../event3
lrwxrwxrwx 1 root root 9 Nov 25 18:09 usb-Logitech_USB_Receiver-event-if01 -> ../event1
lrwxrwxrwx 1 root root 9 Nov 25 18:09 usb-Logitech_USB_Receiver-event-mouse -> ../event0
lrwxrwxrwx 1 root root 9 Nov 25 18:09 usb-Logitech_USB_Receiver-mouse -> ../mouse0
вывод lsusb:
Bus 001 Device 006: ID 0eef:0001 D-WAV Scientific Co., Ltd eGalax TouchScreen
Bus 001 Device 005: ID 413c:2005 Dell Computer Corp. RT7D50 Keyboard
Bus 001 Device 004: ID 046d:c52f Logitech, Inc. Unifying Receiver
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Выходные данные для usb-устройств:
T: Bus=01 Lev=02 Prnt=02 Port=04 Cnt=04 Dev#= 6 Spd=1.5 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0eef ProdID=0001 Rev=01.00
S: Manufacturer=eGalax Inc.
S: Product=USB TouchController
C: #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=100mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=ff Driver=usbtouchscreen
ls /dev /input:
by-id
by-path
event0
event1
event2
event3
mice
mouse0
mouse1
Xorg.0.log релевантный вывод:
[ 51.878] (II) config/udev: Adding input device eGalax Inc. USB TouchController (/dev/input/event3) [ 51.879] (**) eGalax Inc. USB TouchController: Applying InputClass "evdev touchscreen catchall" [ 51.879] (II) Using input driver 'evdev' for 'eGalax Inc. USB TouchController' [ 51.879] (**) eGalax Inc. USB TouchController: always reports core events [ 51.879] (**) evdev: eGalax Inc. USB TouchController: Device: "/dev/input/event3" [ 51.879] (--) evdev: eGalax Inc. USB TouchController: Vendor 0xeef Product 0x1 [ 51.879] (--) evdev: eGalax Inc. USB TouchController: Found absolute axes [ 51.879] (--) evdev: eGalax Inc. USB TouchController: Found x and y absolute axes [ 51.879] (--) evdev: eGalax Inc. USB TouchController: Found absolute touchscreen [ 51.879] (II) evdev: eGalax Inc. USB TouchController: Configuring as touchscreen [ 51.879] (**) evdev: eGalax Inc. USB TouchController: YAxisMapping: buttons 4 and 5 [ 51.879] (**) evdev: eGalax Inc. USB TouchController: EmulateWheelButton: 4, EmulateWheelInertia: 10, EmulateWheelTimeout: 200 [ 51.879] (**) Option "config_info" "udev:/sys/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.5/1-1.5:1.0/input/input3/event3" [ 51.879] (II) XINPUT: Adding extended input device "eGalax Inc. USB TouchController" (type: TOUCHSCREEN, id 9) [ 51.879] (II) evdev: eGalax Inc. USB TouchController: initialized for absolute axes. [ 51.880] (**) eGalax Inc. USB TouchController: (accel) keeping acceleration scheme 1 [ 51.880] (**) eGalax Inc. USB TouchController: (accel) acceleration profile 0 [ 51.880] (**) eGalax Inc. USB TouchController: (accel) acceleration factor: 2.000 [ 51.880] (**) eGalax Inc. USB TouchController: (accel) acceleration threshold: 4 [ 51.881] (II) config/udev: Adding input device eGalax Inc. USB TouchController (/dev/input/mouse1) [ 51.881] (II) No input driver specified, ignoring this device. [ 51.881] (II) This device may have been added with another device file. [ 2310.541] (II) config/udev: removing device eGalax Inc. USB TouchController [ 2310.573] (II) evdev: eGalax Inc. USB TouchController: Close [ 2310.574] (II) UnloadModule: "evdev"
соответствующий вывод dmesg:
[ 4.845962] input: eGalax Inc. USB TouchController as /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.5/1-1.5:1.0/input/input3 [ 4.846690] usbcore: registered new interface driver usbtouchscreen
10-evdev.conf соответствующие строки:
Section "InputClass" Identifier "evdev touchscreen catchall" MatchIsTouchscreen "on" MatchDevicePath "/dev/input/event*" Option "SwapAxes" "1" Option "InvertY" "1" Driver "evdev" EndSection
Если вы прочитали это далеко, спасибо! Я понял, что больше информации лучше, чем меньше. Цените любые указатели.