Заметки DevOps инженера

ИТ-аутсорсинг в Туле. Автоматизация процессов. 58-95-99

Thinstation 2.5 и Keetouch (USB)

Тачскрин keetouchТЗ Подключить сенсорный монитор со стеклом keetouch(USB интерфейс) к тонкому клиенту Thinstation.
Предыстория Подключенный сенсор заработал сразу же. Но как оказалось у него проблема с калибровкой. Мышь ходит по небольшой области экрана порядка 300х400 пикселей, с перевёрнутой осью X и к тому же с рандомным смещением. Запросы в google выдали аналогичные проблемы и на других Linux системах с такими же или подобными стеклами-сенсорами. По советам с форумов вносились соответствующие правки в xorg. Попытки подгрузки драйверов в том числе официальных от keetouch. Дрова конфликтовали с evdev, но и его удаление не помогло. К тому же сенсор работал, просто не был калиброван. Чтение мануалов по xorg и evdev внесло ясность, да и xinput_calibrator(утилита калибровки сенсора) помог.
Хронология
1. Необходимо собрать пакет который будет создавать правило в xorg.conf.d с необходимыми параметрами калибровки.
2. В пакет включить утилиту калибровки xinput_calibrator.
3. Параметры калибровки вынести в конфигурационный файл thinstation.
По пунктам…
1.Требуемое правило будет выглядеть так

Section "InputClass"
	Identifier	"calibration"
	MatchProduct	"HID ID"
	Option	"Calibration"	"minX maxX minY maxY"
EndSection

Где
MatchProduct «HID ID» — ID — калибруемое устройство,
Options — точки калибровки.
Это же правило было опробовано с данным монитором на Ubuntu.
2. Нашли необходимые библиотеки и xinput_calibrator (скопированы с Ubuntu).
Несколько слов по его работе. Необходимо запустить сесcию xterm.
Указав в конфиге thinstation следующее:

SESSION_0_TYPE=xterm

(Соответственно изначально должен быть добавлен пакет xterm в thinstation).
После чего загрузится экран с командной строкой, в которой необходимо выполнить команду xinput_calibrator. Откроется экран калибровки, нажимаем поочерёдно крестики. Экран пропадает, ищем необходимые значения.
Ищем строку с «HID далее наш ID.
И строку начинающуюся с Setting new calibration data: далее следуют 4 значения minX maxX minY maxY.
Эту и будут данные для правильной калибровки.
3. В конфигурационном файле необходимо добавить строки для загрузки пакета и передачи ему параметров:

PKG_PACKAGES="touch"
PKG_PREFIX=pkg
TOUCH_DEVICE="ID"
TOUCH_MIN_X=minX
TOUCH_MAX_X=maxX
TOUCH_MIN_Y=minY
TOUCH_MAX_Y=maxY

Соответственно ID, minX, maxX, minY, maxY значения из п.2.
Архив с пакетом. Скорее всего он подойдет к большинству touchscreen мониторов подключаемых по USB.

touch.zip (1,505.30 kb )

, , ,

55 thoughts on “Thinstation 2.5 и Keetouch (USB)

  • paladim777:

    Спасибо, очень познавательная статья!
    У меня похожая ситуация, только elotouch 2700-USB аппарат.
    Подскажите пожалуйста, как можно приладить Ваше решение, под мой сенсор?
    Мне нужна только калибровка, с сохранением параметров.

    • SS_:

      Вероятнее всего вам подойдет данное решение, авто сохранения калибровки, к сожалению, не делал. Откалибровать можете аналогично через консоль, затем параметры переписать в блокнотик. А далее внести их в конфигурационный файл thinstation.

      • paladim777:

        Я тестировал на Thinstation 2.5, 5.0, 5.1 и везде результат одинаковый.
        Все проделал, как Вы описали, но у меня возникла проблема:
        Первая проблема которая была, перевернута ось X и Y – я решил, физически перевернул сенсорную панель на 180 градусов, относительно самого монитора.
        Проблем с областью 300х400, или похожее, не возникло.
        А вот проблема со смещением, чуть-чуть есть…
        Перехожу к делу:
        После запуска «xinput_calibrator», запускается утилита калибровки, все нормально. Выдает следующие параметры http://s019.radikal.ru/i638/1205/99/e79d8d172b30.jpg В текущем сеансе курсор теперь откалиброван нормально!
        После внесения в thinstation.conf.network

        PKG_PACKAGES="touch"
        PKG_PREFIX=pkg
        TOUCH_DEVICE="04e7:0020"
        TOUCH_MIN_X=56
        TOUCH_MAX_X=4033
        TOUCH_MIN_Y=73
        TOUCH_MAX_Y=4073

        TOUCH_DEVICE – определил через команду lsusb http://s005.radikal.ru/i209/1205/09/c00f9b0a3d8a.jpg
        После запуска thinstation – все по прежнему, параметры калибровки не применяются.
        Подскажите пожалуйста, как побороть данную проблему?
        Очень нужно настроить на 6-ти девайсах.

        • SS_:

          Правильно ли написан device, после калибровки программа xinput_calibrator создает файл в xorg.conf.d.
          Пакет который во вложении при загрузке создает файл в выше указанном месте, считывая параметры из конфига.
          Из вашего скриншота на месте hid — id=8, соответственно скорее всего

          TOUCH_DEVICE="8"

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

          • paladim777:

            На счет device — неуверен в правильности, но id=8 пробовал, не помогает. Пакет создает файл при загрузке в /etc/X11/xorg.conf.d/99-calibration.conf ? Если так, то параметры с thinstation.conf.network в 99-calibration.conf попадают. http://s019.radikal.ru/i626/1205/5e/9a6856337fef.jpg
            А сразу после калибровки программа xinput_calibrator создает в xorg.conf.d, какой файл с параметрами? тот же 99-calibration.conf ?

          • SS_:

            Да, xinput_calibrator создает 99-calibration.conf или тусует настройки в xinput (тут его нет, потому так быть не может). ID твой точно 04e7:0020. Проверь не появляется файл 69-evtouch.conf. Могут быть внесеные изменения и в соседние файлы xorg. Потому запусти утилиту xinput_calibrator, а далее поиск:

            find ~ -type f -mtime -1
          • paladim777:

            Файл 69-evtouch.conf — не появляется.
            до запуска xinput_calibrator есть только файлы в /etc/X11/xorg.conf.d:
            00-keyboard.conf 10-evdev.conf 50-synaptics.conf 50-vmmouse.conf 90-input.conf 99-calibration.conf
            После запуска xinput_calibrator и поиска find ~ -type f -mtime -1 результат: http://s019.radikal.ru/i614/1205/5b/a5f095a6326e.png

          • SS_:

            К сожалению у меня нет лишних панелей Elo на которых можно было бы опробовать. В хелпах ubuntu есть такая статья EloTouchScreen в ней подключение панели к Ubuntu. Я не уточнял панель же USB? Подключается ли данная панель к Ubuntu версии 11 или старше без установки дополнительных пакетов, кроме evtouch? Настраивается ли она исходя из параметров указанных в абзаце:

            Section "InputClass"
                    Identifier "Elo class"
                    MatchProduct "Elo TouchSystems"
                    MatchDevicePath "/dev/input/event*"
                    Driver          "evtouch"
                    Option          "minX"          "530"
                    Option          "minY"          "570"
                    Option          "maxX"          "3500"
                    Option          "maxY"          "3500"
                    Option          "swapY"         "1"
            EndSection

            Файл можно создать с прежним названием 99-cal…
            В конфиге выше и в моем различно используются MatchProduct, Identifier и Driver. Что может вызывать проблему, но это поправить не сложно.

            Если же у тебя девайсы E271-2210,E271-2200,E281-2310, то тебе требуется другой драйвер elographics, которого в пакете собранном мной нет.

          • paladim777:

            Да панель-контроллер USB (http://www.elotouch.com/Products/Touchscreens/IntelliTouch/c2701rsu.asp), и работает сразу без драйверов. Пробовал на Ubuntu 11.10. Калибровку выполнял с помощью xinput_calibrator, все нормально, но до первой перезагрузки. Настройку по инструкции для Ubuntu, не делал, т.к. не было цели работать на Ubuntu. В понедельник более детально проверю на Ubuntu, и попробую с 99-calibration.conf

          • paladim777:

            Сделал все по хелпу на Ubuntu 10.10
            1. Установил пакет evdev
            sudo apt-get install xserver-xorg-input-evtouch
            2. Создал файл 69-evtouch.conf в /usr/share/X11/xorg.conf.d/
            Section «InputClass»
            Identifier «Elo class»
            MatchProduct «Elo TouchSystems»
            MatchDevicePath «/dev/input/event*»
            Driver «evtouch»
            Option «minX» «56»
            Option «minY» «73»
            Option «maxX» «4033»
            Option «maxY» «4073»
            EndSection
            После перезагрузки все заработало.

          • SS_:

            Хорошо, не сложно, сегодня-завтра пересоберу пакет.

          • paladim777:

            Спасибо, жду!

          • SS_:

            Файл с жестко забитыми параметрами для Elo touch
            Для добавления в конфиг

            PKG_PACKAGES="elostouch"
            PKG_PREFIX=pkg
          • paladim777:

            Не пошло…
            После подключения пакета, курсор перестает реагировать через сенсорный экран, а через мышь работает. Походу нужен драйвер для «evtouch», т.к. в Ubuntu 10.10 требовалось его доустановить. А в Thinstation 2.5, 5.0 и 5.1 я не нахожу его присутствия.

          • SS_:

            Скинь логи. Если при сборке указывал www, то на терминал можно зайти через браузер. С указанием порта например так http://192.168.1.15:6800/. И посмотреть ошибки при старте панели.

          • SS_:

            Да точно evtouch не входит я его зашивал в один из пакетов на thinstation 2.2, перепутал с evdev.

          • SS_:

            Да все верно не находит evtouch, думаю сегодня пересоберу с драйвером. Посмотрим что получится.

  • paladim777:

    Я пробовал перед сборкой подсунуть «evtouch_drv.so» туда же, где лежит “evdev_drv.co” в …5.1/packages/xorg7/lib/xorg/moduleles/input/
    Номер не прошел (((

    • SS_:

      В одном из предыдущих постов ты писал что после калибровки по thinstation у тебя монитор работает нормально. Скопируй 99-calib* после правки xinput_calibrator. Тебе не нужен evtouch на скрине он говорит что использует evdev.

    • SS_:

      А вот и момент видимо твоя панель не по HID ID определяяется
      это то что у тебя

      May 25 15:00:28 TestTouchHost user.info kernel: input: Elo TouchSystems, Inc. Elo TouchSystems 2700 IntelliTouch(r) USB Touchmonitor Interface as /devices/pci0000:00/0000:00:1d.1/usb3/3-1/3-1:1.0/input/input5

      это как у меня

      May 23 00:59:21 ts_f46d04e5712e user.info kernel: input: HID 1aad:0001 as /devices/pci0000:00/0000:00:1d.2/usb4/4-2/4-2:1.0/input/input3

      Т.е видимо «HID 1aad:0001» = «Elo TouchSystems, Inc. Elo TouchSystems 2700 IntelliTouch(r) USB Touchmonitor Interface»

      Но желательно подтвердить что в 99-calibrator.conf твой HID ID не сокращен до чего то вроде Elo TouchSystems

    • paladim777:

      В первом-изначальном пакете пробовал менять (именно в пакете, везде где нашел) «HID 1aad:0001» на полную «Elo TouchSystems, Inc. Elo TouchSystems 2700 IntelliTouch(r) USB Touchmonitor Interface» и в файле конфигурации тоже разные варианты пробовал.
      Во втором пакете пробовал менять также на полную строку, но тут подробнее:
      Похоже, что сокращенный вариант панель подхватывает!
      Section «InputClass»
      Identifier «Elo class»
      MatchProduct «Elo TouchSystems»
      MatchDevicePath «/dev/input/event*»
      Driver «evtouch»

      Просто в таком варианте, перестает вообще работать панель, а значит распознает конкретное устройство. А как только изменяю на «Elo To22uchSystems1234», все работает по прежнему. Аналогично и с несокращенной строкой.
      Третий пакет и другие варианты не успел сегодня опробовать. Продолжу испытания в понедельник.
      Еще не могу понять, куда же xinput_calibrator засовывает параметры калибровки? После его проделок нет измененных файлов.

    • paladim777:

      Пакет с поправленным hid – заработал!
      Проблема я так понял была в:
      1. «MatchProduct»
      2. Основная «Option» в координатах, т.к. при использовании «evdev» нужно прописывать координаты одной строкой, а не по отдельности как с «evtouch».

      А как теперь облагородить пакет, чтобы координаты задавать через файл конфигурации, как в первоначальном пакете?

    • paladim777:

      Содержимое 99-calibration.conf http://s05.radikal.ru/i178/1205/fd/cf634507a9bf.jpg
      Использовался первоначальный пакет.
      В файле конфигурации: thinstation.conf.network
      TOUCH_DEVICE=»Elo TouchSystems»

      Мешает «HID»

  • paladim777:

    Подскажите, пожалуйста (отдельная тема)
    Есть моноблок Asus EeeTop ET2010PNT, с сенсорным экраном NextWindows 1950 (USB).
    Ситуация куда более хуже, чем с EloTouch. Хорошая новость, что сенсорную панель вообще калибровать не надо. Но плохая новость как оказалось в плане прикрутки к Ubuntu и Thinstation, обойтись evdev – не удается. В данной ситуации требуется сторонний драйвер. Драйвер в природе существует, и даже работает (тестировал на Ubuntu 12.04). По умолчанию после установки Ubuntu – никаких признаков жизни экран не подает, хотя «lsusb» говорит что есть устройство «Bus 001 Device 006: 1926:0083 NextWindow 1950 HID Touchscreen». После поисков по просторам сети, под Ubuntu нашлось решение, а именно нужно установить два пакета:
    xf86-input-nextwindow_0.3.4~precise1_i386.deb (http://ppa.launchpad.net/djpnewton/xf86-input-nextwindow/ubuntu/pool/main/x/xf86-input-nextwindow) и nwfermi-0.6.5.0_i386.deb (https://launchpad.net/nwfermi). А также в догонку потребовалось еще несколько пакетов: patch, akeroot и dkms. После установки и перезагрузки, панель работает. Стоит ли вообще связываться с прикруткой к Thinstation, или гиблое дело? Есть еще решение (http://www.nextwindow.com/nextwindow_support/app_working_under_linux_2.html), но оно не работает на Ubuntu, и скорее всего предназначено под другие панели.

    • SS_:

      Открой консоль на thinstation сделай cat /dev/nwfermi* возможно называется по другому и потыкай пальцами в экран. Evdev может не поддерживать потому что это multitouch.

    • SS_:

      Так же подключи экран и попробуй запустить xinput_calibrator если после того заработает, соответственно evdev пойдет.

  • SS_:

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

  • paladim777:

    xinput_calibrator – говорит «Error: No calibratable devices found.», т.к. видимо мышка-подобного сенсора не находит.
    Лог с Thinstation: «Jun 2 22:43:12 ts_705ab6e55cb7 user.info kernel: generic-usb 0003:1926:0083.0003: hiddev0,hidraw2: USB HID v1.11 Device [NextWindow Touchscreen] on usb-0000:00:1d.7-7.4/input1»
    «сat /dev/nwfermi*» (должно «nwfermi0») – все без результатов.
    Lsusb: «Bus 001 Device 006: 1926:0083 NextWindow 1950 HID Touchscreen».
    ls -lh /dev/input/* — в списке нет похожего на экран.
    ls -lh /dev/* — nextwindow или подобных устройств нет.

    Далее эксперименты в Ubuntu 12.04
    Без пакетов тоже самое, что в Thinstation.
    После установки xf86-input-nextwindow_0.3.4~precise1_i386.deb и nwfermi-0.6.5.0_i386.deb, все задвигалось.
    «сat /dev/nwfermi*» — тараканы бегают, аналогично с «nwfermi0»
    ls -lh /dev/* говорит /dev/nwfermi0 – присутствует
    cat /proc/bus/input /devices – теперь:
    N: Name= «NextWindow Fermi Touchscreen»
    S: Sysfs=/devices/virtual/input/input8
    Часть методов взято отсюда: http://www.linux.org.ru/forum/linux-hardware/7491174
    Похоже, что эти два пакета жизненно необходимы.

    • SS_:

      Соберу на днях, посмотрим что получится.

    • SS_:

      Собрал пробуй. Пакет nextwindow.pkg. Если не запустится попробуй обновить список правил udev, как то так

      udevadm control --reload-rules

      .
      Или так тригеры из правил для kernel

      udevadm trigger

      Естественно логи приветствуются.)

    • paladim777:

      Попробовал, пакет не запустился. Логи http://zalil.ru/33420424
      Проблема походу с запуском демона. Обновить список правил udev, пробовал… результат в логах.

      • SS_:

        Да модуль не загрузился видимо небольшие ошибки в udev поправлю,а также он не подгрузился из X11 конфига. Драйвер должен присутствовать в логе xorg.

          • paladim777:

            Не пошел… результат в логах.
            http://zalil.ru/33424675

          • SS_:

            Первый момент появились ли устройства nwfermi* или nw-fermi* в /dev и второй драйвер so в xorg так и не подгрузился. Но ругаться на udev перестал — соответственно устройства наверно создал. Еще появляется ли драйвер в usr/lib/xorg/modules/input/nextwindow.so

          • paladim777:

            Устройства nwfermi, или подобные не наблюдаются. Только есть на аппаратном уровне, как и были. Драйвер nextwindow_drv.so в usr/lib/xorg/modules/input/ есть.
            А может быть, что не хватает дополнительных пакетов, которые пришлось доставлять под Ubuntu?

          • SS_:

            пакеты уже добавил но видимо они не подгружаются хотя в логах чисто

          • SS_:

            Хм что то в логах скрипта не видно, проглядел. Видимо он не стартанул по каманде ps виден nwfermi_daemon?

          • SS_:

            попробуй

            nwfermi_daemon &
            <Enter>
            udevadm trigger --action=change

            после чего проверь появление устройств

          • SS_:

            udev правило возможно неправильно отрабатывает или вообще не отрабатывает, необходима доп. информация по устройству

            udevadm info --query=all  --name=/dev/audio

            вместо /dev/audio путь до устройства nextwindow, до event* или до /dev/input/…

            Либо инфу можно взять из ubuntu по устройству nwfermi*

    • paladim777:

      На счет дополнительных пакетов я имел введу: patch, akeroot и dkms, т.к. без них xf86-input-nextwindow_0.3.4~precise1_i386.deb и nwfermi-0.6.5.0_i386.deb не ставились на Ubuntu.
      По команде ps нет nwfermi_daemon http://s019.radikal.ru/i606/1206/a3/9c09a469032a.jpg
      После команды nwfermi_daemon http://s019.radikal.ru/i623/1206/18/3d690981a7ae.jpg
      и дальше не идет
      В логах :
      Jun 12 22:03:37 ts_705ab6e55cb7 uucp.debug nwfermi_daemon[1618]: Starting process…
      Jun 12 22:07:03 ts_705ab6e55cb7 daemon.notice acpid: client 1555[0:0] has disconnected

    • paladim777:

      Далее сбор информации по устройству:
      lsusb: Bus 001 Device 005: ID 1926:0083 NextWindow 1950 HID Touchscreen

      Далее под Ubuntu (пакеты установлены и работают)

      ls -lh /dev/* | grep nwfermi
      lrwxrwxrwx  1 root root           8 июня  12 22:31 /dev/nw-fermi -&gt; nwfermi0
      crw-------  1 root root    180, 192 июня  12 22:31 /dev/nwfermi0
      lrwxrwxrwx 1 root root 11 июня  12 22:31 180:192 -&gt; ../nwfermi0
       
      cat /proc/bus/input /devices
      I: Bus=0000 Vendor=0000 Product=0000 Version=0000
      N: Name="Nextwindow Fermi Touchscreen"
      P: Phys=
      S: Sysfs=/devices/virtual/input/input8
      U: Uniq=
      H: Handlers=mouse0 event8 js0
      B: PROP=0
      B: EV=b
      B: KEY=30020 0 0 0 0 0 0 0 0
      B: ABS=2630000 3
       
      dmesg | grep nwfermi
      [    7.068096] nwfermi 1-7.4:1.0: NextWindow Fermi device now attached to nwfermi-192
      [    7.068221] usbcore: registered new interface driver nwfermi

      udevadm info —query=all —name=/dev/nw-fermi http://i073.radikal.ru/1206/34/d35be4d331e3.jpg

      • SS_:

        определение девайса под разными системами видимо разное потому как следую из строки этой

        kernel: generic-usb 0003:1926:0083.0003: hiddev0,hidraw2: USB HID v1.11 Device [NextWindow Touchscreen] on usb-0000:00:1d.7-7.4/input1

        и этой в udev->rules

        KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTR{idVendor}=="1926", MODE="0666", SYMLINK+="nw-fermi-device"

        subsistem= hidraw, на Ubuntu же явно видно USB
        Под 5.1 thinstation у меня демон запустился

        ts_001485******:/# nwfermi_daemon &
        ts_001485******:/# StartThreads
        Starting tl thread
        Starting bulk thread
         
        ts_001485******:/#

        Попробуй так под thinstation:

        udevadm info --query=all --name"=Nextwindow Fermi Touchscreen"

        У меня просто нет ни одного устройства generiс usb уже все мышки и клавы перебрал.
        А для построение монтирования устройства udev нужны хоть какие то переменные чтоб зацепиться.

        • paladim777:

          Команда: udevadm info —query=all —name=»Nextwindow Fermi Touchscreen»
          Говорит: device node not found
          А вот у меня демон не стартует, не могу помять почему ((
          Задачу понял, что Ubuntu в данной ситуации не подходит для определения девайса.
          Попробую выдрать максимально информации под Thinstation, по данному девайсу.

          • SS_:

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

          • paladim777:

            Что-то у меня появилось желание, отказаться от идеи, прикрутки данного экрана к Thinstation ((
            Как вариант рассматриваю, сделать облегченный тонкий клиент на Ubuntu, т.к. с дровами для сенсорной панели все норм.. HDD – по умолчанию есть. Обвески FreeRDP, VNC, SSH и т.п. доставить несложно.
            Пробовал ради эксперимента, поставить пакеты на Debian 6.0.4 от Ubuntu которые, не пошло ((
            Или есть все-таки шансы на Thinstation?
            Тоже интересное решение http://habrahabr.ru/post/144822/

          • SS_:

            Устройство на thinstation определяется, необходимо лишь собрать линк и подтянуть драйвер верхнего уровня для xorg. Просто отладка затрудняется тем что у меня нет устройства.

          • paladim777:

            Понятно, спасибо за помощь.
            К сожалению, у меня нет больших познаний в никсах и просеивания Thinstation, поэтому сроки поджимают. А пока попробую все-таки клиент на Ubuntu собрать. А потом продолжу с Thinstation, т.к. пока больше не знаю, как предоставить больше информации по устройству для сборки пакета.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *