Я получил 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

Если вы прочитали это далеко, спасибо! Я понял, что больше информации лучше, чем меньше. Цените любые указатели.

1 ответ1

1

Сначала я подумал, что проблема заключается в том, что обратный провод USB заставил монитор работать, но оказалось, что дисплей перемещается внутри корпуса дисплея. Он сдвинулся достаточно, чтобы начать работать, когда я щелкнул концы USB-провода. Очень привередливый монитор.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .