LINUX.ORG.RU

Как узнать какой драйвер используется для геймпада?


0

1

Есть геймпад, под виндой работает, под линуксом на две кнопки не реагирует. Хочу пофиксить драйвер, но проблема в том что я не смог нагуглить как узнать какой драйвер используется для данного геймпада.

Перемещено mono из talks

★★

Во первых не вижу модели геймпада в твоём сообщении.

Есть геймпад, под виндой работает, под линуксом на две кнопки не реагирует

Во вторых он на них не реагирует где? В тестилке, в какой то игре нативной или под вайном?

winddos ★★★
()

lsusb -v, ищешь bus и device. Потом идёшь в /sys/bus/usb/devices/. Там есть ссылка на драйвер. Скорее всего это usbhid.

i-rinat ★★★★★
()
Последнее исправление: i-rinat (всего исправлений: 1)
Ответ на: комментарий от winddos

Во первых не вижу модели геймпада в твоём сообщении.

INNEX GENESIS Controller USB

Во вторых он на них не реагирует где? В тестилке, в какой то игре нативной или под вайном?

Под Wine не пробовал. Запускал под виндой на железе и в виртуалке в обоих случаях работает нормально.
В линуксе в тестилке(gui и консольная) и в играх не работают две кнопки. Что самое интересное эти две кнопки это влево и вверх D-pad-а(вправо и вниз работает).

V1KT0P ★★
() автор топика
Ответ на: комментарий от winddos

Эм, а на самом паде не написана его модель или типа того?

Геймпад это оригинальный sega контроллер + USB adapter(http://www.amazon.com/Genesis-PC-USB-Cable-RETROLINK-Sega/dp/B0080RAT42/ref=s...
Вывод lsusb -v(как-бы теперь понять в какую директорию в /sys/bus/usb/devices надо заходить):

Bus 001 Device 004: ID 1292:4745 Innomedia 
Couldn't open device, some information will be missing
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         8
  idVendor           0x1292 Innomedia
  idProduct          0x4745 
  bcdDevice            1.00
  iManufacturer           1 
  iProduct                2 
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           34
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          4 
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              300mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 No Subclass
      bInterfaceProtocol      0 None
      iInterface              5 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.10
          bCountryCode           33 US
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength     112
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval              10
V1KT0P ★★
() автор топика

Вообще вот тебе ссылка с гугла:
http://ubuntuforums.org/showthread.php?t=2149973

Там говорится, что оно работало на 12.04 и поломалось впоследствии (вероятно новые ядра). Думаю тебе стоит начать с теста со старым ядром, а потом тестить новые ядра и смотреть где конкретно сломалось и какие изменения были.

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

Там говорится, что оно работало на 12.04 и поломалось впоследствии (вероятно новые ядра). Думаю тебе стоит начать с теста со старым ядром, а потом тестить новые ядра и смотреть где конкретно сломалось и какие изменения были.

А что именно смотреть? Брать ядро из транка и искать коммит после которого сломалось? Думаю есть пути попроще.

V1KT0P ★★
() автор топика
Ответ на: комментарий от i-rinat

lsusb -v, ищешь bus и device. Потом идёшь в /sys/bus/usb/devices/. Там есть ссылка на драйвер. Скорее всего это usbhid.

Нашел устройство, как мне теперь ссылку на драйвер получить?

v1kt0p@kubuntu:/sys/bus/usb/devices/1-1.2$ ls
1-1.2:1.0            bDeviceClass     bMaxPower           descriptors  ep_00         maxchild  removable  urbnum
authorized           bDeviceProtocol  bNumConfigurations  dev          idProduct     port      remove     version
avoid_reset_quirk    bDeviceSubClass  bNumInterfaces      devnum       idVendor      power     speed
bcdDevice            bmAttributes     busnum              devpath      ltm_capable   product   subsystem
bConfigurationValue  bMaxPacketSize0  configuration       driver       manufacturer  quirks    uevent
v1kt0p@kubuntu:/sys/bus/usb/devices/1-1.2:1.0$ ls
0003:1292:4745.0003  bInterfaceClass   bInterfaceProtocol  bNumEndpoints  ep_81  modalias  subsystem             uevent
bAlternateSetting    bInterfaceNumber  bInterfaceSubClass  driver         input  power     supports_autosuspend

V1KT0P ★★
() автор топика
Ответ на: комментарий от i-rinat

ls -ld driver

Спасибо, действительно usbhid.
Есть мысли в какую сторону дальше копать? Я так понимаю что можно для usbhid написать драйвер джойстика, в котором кнопки будут правильно работать. Или я неправильно все понимаю?
Буду плагодарен за ссылки на нужный материал.

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

Я так понимаю что можно для usbhid написать драйвер джойстика, в котором кнопки будут правильно работать

Вернёмся к началу и узнаем, как именно ты проверял кнопки джойстика.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Вернёмся к началу и узнаем, как именно ты проверял кнопки джойстика.

С помощью jtest и игр. Вообще-то хочется драйвер написать, ибо щас два джойстика система видит как один с удвоенным количеством кнопок, ибо подключен через один usb кабель.

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

А что именно смотреть? Брать ядро из транка и искать коммит после которого сломалось? Думаю есть пути попроще.

Я не знаю какой дистрибутив ты используешь, то в той же убунте 12.04 можно вполне легко ставить ядра начиная с 3.2 и заканчивая 3.8. Сломалось скорее всего между этими версиями.

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

winddos ★★★
()
Последнее исправление: winddos (всего исправлений: 1)
Ответ на: комментарий от winddos

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

То что я не знаю устройство внутренностей линукса, не значит что я не могу написать драйвер при наличии вменяемой документации. Пытаюсь нагуглить информацию по этому поводу, но что-то плохо получается.

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

usbhid это и есть драйвер. Если не работает, значит твоё устройство нарушает спецификацию. Починить вполне реально, но скорее всего, это поломает остальные устройства. Если же тебе надо просто заставить его работать для себя, проще купить нормальный геймпад.

i-rinat ★★★★★
()
Ответ на: комментарий от V1KT0P

То что я не знаю устройство внутренностей линукса, не значит что я не могу написать драйвер при наличии вменяемой документации.

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

winddos ★★★
()
Ответ на: комментарий от i-rinat

usbhid это и есть драйвер. Если не работает, значит твоё устройство нарушает спецификацию.

Ну я там выше ссылку на форум кидал, человек пишет что раньше работало а теперь сломалось. Плюс такая же тема есть на форуме по арчу, тоже без ответа.

winddos ★★★
()
Ответ на: комментарий от i-rinat

usbhid это и есть драйвер. Если не работает, значит твоё устройство нарушает спецификацию. Починить вполне реально, но скорее всего, это поломает остальные устройства. Если же тебе надо просто заставить его работать для себя, проще купить нормальный геймпад.

Согласен, скорее всего в usbhid не сломали а починили баг. Нормальных геймпадов у меня много, я просто хочу чтоб эти тоже работали.
Как по мне так должна быть возможность создать драйвер который будет использоваться вместо реализации в usbhid. Проблема в том, что я пока не знаю в какую сторону копать. В крайнем случае можно глянуть как реализован альтернативный xbox драйвер(https://github.com/Grumbel/xboxdrv/), но это будет гораздо дольше чем чтение документации.

V1KT0P ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.