LINUX.ORG.RU

Неправильно определяется джойстик

 


1

1

Проблема такова:

  • Подключаю USB-джойстик - 3 оси
  • Далее вместо /dev/input/js* создается /dev/input/event*
  • Результат: ни одна программа не видит его в роли джойстика

Дополнительно:

  • OS: Ubuntu 14.04.3 LTS Trusty Tahr
  • Kernel: стандартное generic
  • Джойстик полностью рабочий
  • Нa sudo cat /dev/input/event* реагирует
  • Модуль joydev загружен
  • Техподдержка говорит что это обычное HID-устройство, и должно легко определяться в Linux. К слову в Windows оно не требует сторонних драйверов.

kern.log:

Jan 26 02:01:24 Shark kernel: [ 6261.682027] usb 5-2: new low-speed USB device number 17 using uhci_hcd
Jan 26 02:01:24 Shark kernel: [ 6261.890059] usb 5-2: New USB device found, idVendor=03eb, idProduct=4f8d
Jan 26 02:01:24 Shark kernel: [ 6261.890065] usb 5-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Jan 26 02:01:24 Shark kernel: [ 6261.890069] usb 5-2: Product: VKB Mk15-3 #545
Jan 26 02:01:24 Shark kernel: [ 6261.890073] usb 5-2: Manufacturer: http://vkb-flightsimcontrols.com
Jan 26 02:01:24 Shark kernel: [ 6261.961138] input: http://vkb-flightsimcontrols.com VKB Mk15-3 #545 as /devices/pci0000:00/0000:00:1a.2/usb5/5-2/5-2:1.0/input/input37
Jan 26 02:01:24 Shark kernel: [ 6261.961461] hid-generic 0003:03EB:4F8D.0023: input,hidraw1: USB HID v1.01 Joystick [http://vkb-flightsimcontrols.com VKB Mk15-3 #545] on usb-0000:00:1a.2-2/input0

Xorg.0.log:

[  6261.993] (II) config/udev: Adding input device http://vkb-flightsimcontrols.com VKB Mk15-3 #545 (/dev/input/event4)
[  6261.993] (II) No input driver specified, ignoring this device.
[  6261.993] (II) This device may have been added with another device file.

Другие джойстики получают такой же вывод Xorg.0.log(только уже с dev/input/js*). При этом они отлично работают.

  • Как сообщить ОС что это джойстик?
  • И вообще интересно, как ОС решает что за устройство к ней подключили и что ей с ним делать?

$ sudo evtest

жмешь номер нужного ивента, кнопаешь кнопари и смотришь есть ли выхлоп
вот те «программа видит его в роли джойстика»

в /etc/udev/rules.d/99-joystick.rules впиши

SUBSYSTEMS=="input", ATTRS{name}=="http://vkb-flightsimcontrols.com VKB Mk15-3 #545", MODE="0666"
чтоб дать доступ к нему из под обычного юзера
перевтыкай и пробуй

anTaRes ★★★★ ()

Техподдержка говорит что это обычное HID-устройство, и должно легко определяться в Linux.

Оно и определилось, только не воспринимается как джойстик.

Не сталкивался с такой проблемой и не знаю нормального способа её решения, но через задницу есть один вариант. С помощью «xboxdrv» можно из /dev/input/event* сэмулировать геймпад от xboxа, с js файлами.

altwazar ()

Но заморачиваться с xboxdrv стоит только в том случае, если совет от anTaRes не помог. «/dev/input/js*» устаревший api, чаще всего в нем нет необходимости.

altwazar ()
Ответ на: комментарий от anTaRes

Да, sudo evtest выводит выхлоп, но опять же event, а не js. Мне нужно чтобы видели симуляторы, а именно X-plane.

Правило создал, оно срабатывает, но симуляторы не видят джойстик.

Lazy_Hamster ()
Ответ на: комментарий от Lazy_Hamster

На всякий случай сначала попробую перезагрузить машину после создания /etc/udev/rules.d/99-joystick.rules и после этого проверь, доступен ли event для пользователя «ls -l /dev/input/event*». У связанного с джойстиком event должны быть права на чтение/запись для всех пользователей (crw-rw-rw-) если правило нормально сработало.

Если правило не сработало и права остались прежними (crw-------), то для теста можно изменить у нужного event-а права вручную (chmod a+rw /dev/input/eventНОМЕР).

Если и после этого джойстик не видно, то только тогда стоит тратить время на эмуляцию с xboxdrv. Как это делается можно посмотреть тут:

1. https://wiki.archlinux.org/index.php/Gamepad#Mimic_Xbox_360_controller_with_o... (и вообще по джойстикам и падам полезная инфа).

2. https://steamcommunity.com/app/221410/discussions/0/558748653738497361/?l=rus... (пример эмуляции на англ)

3. http://forum.ubuntu.ru/index.php?topic=236415.msg1862490#msg1862490 (я описывал процесс эмуляции, но подробности больше для дуалшока).

Если коротко, то посмотреть через «evtest /dev/input/eventНОМЕР» или «xboxdrv --evdev --debug /dev/input/eventНОМЕР» название своих кнопок и осей (смотреть на вывод в терминале, когда дергаешь за джойстик и нажимаешь на кнопки), создать конфиг файл для xboxdrv с этими названиями и запустить эмуляцию:

«xboxdrv --detach-kernel-driver --mimic-xpad --evdev /dev/input/event_НОМЕР --silent --config ПУТЬ_К_ФАЙЛУ_КОНФИГУРАЦИИ»

Так как с этим методом придется потратить кучу времени на ненужную эмуляцию xbox-пада ради js файла, то лучше прибегнуть к нему в последнюю очередь.

altwazar ()
Ответ на: комментарий от Dimez

Гораздо лучше usermod -aG input user

Не в каждом дистрибутиве сработает, в той же Ubuntu 14.04 у тса не прокатит. Да и с точки зрения безопасности решение сомнительное.

altwazar ()
Ответ на: комментарий от altwazar

Хм, как интересно. В 14.04 LTS все /dev/input/event* принадлежат руту, что странно. В 15.10 всё ок, root:input.

Dimez ★★★★★ ()
Ответ на: комментарий от altwazar

Огромное спасибо!

Если вдруг у кого то еще не работают педали от ВКБ в Linux, то решилось все созданием в /etc/udev/rules.d/ файла 99-joystick.rules с таким содержанием:

ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="4f8d", RUN:="/bin/sh /home/hamster/.joy.sh"

И созданием скрипта в папке home:

.joy.sh:

#!/bin/sh
sudo xboxdrv --detach-kernel-driver --mimic-xpad --evdev /dev/input/by-id/usb-http:__vkb-flightsimcontrols.com_VKB_Mk15-3_#545-event-if00 --silent --evdev-absmap ABS_RUDDER=x1 --axismap -X1=X1

  • Не забываем изменить на свои idVendor, idProduct и название устройства в /dev/input/by-id
  • А так же, если у вас педали с тормозами, то соответственно нужно дописать еще две оси ABS_RX и ABS_RY
Lazy_Hamster ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.